-
ABAP 타입풀 상수명 추출SAP 2026. 6. 12. 17:46abap_typepool_const_extract.html0.01MB
ABAP 타입풀 상수명 추출 — READ REPORT + 정규식 ABAP 타입풀 상수명 추출
READ REPORT + PCRE 정규식으로zhan_ko_*상수 목록 가져오기1. 핵심 개념
타입풀의 리포지터리 내부 프로그램명은
%_C<타입풀명>형태로 생성된다.
예를 들어 타입풀ZHAN의 소스는READ REPORT '%_CZHAN'로 읽어온다.타입풀명 READ REPORT 에 넘길 프로그램명 ABAP%_CABAPVRM%_CVRMZHAN%_CZHAN2. 상수 정의 패턴
타입풀 소스의 상수 선언은 아래 두 가지 형태를 가진다.
구분 예시 ① TYPE / LIKE CONSTANTS zhan_ko_abc TYPE char10 VALUE 'X'.② 길이 지정 (num) CONSTANTS zhan_ko_def(5) TYPE c VALUE 'HELLO'.두 형태 모두 상수명 뒤에
(숫자)가 있을 수도 없을 수도 있고, 이어서TYPE또는LIKE가 반드시 온다는 공통 구조를 가진다.3. 정규식 설명
(zhan_ko_\w+)\s*(?:\(\d+\))?\s+(?:TYPE|LIKE)\b조각 역할 (zhan_ko_\w+)상수명 캡처 \s*(?:\(\d+\))?(10)같은 길이 지정부가 있으면 통과, 없어도 됨\s+(?:TYPE|LIKE)\b뒤에 TYPE 또는 LIKE가 와야만 정의로 인정 (참조 등장 시 걸러짐) 💡 마지막(?:TYPE|LIKE)\b조건이 핵심이다.
다른 상수의VALUE zhan_ko_a.처럼 참조로만 등장하는 이름은 뒤에 TYPE/LIKE가 없으므로 자동으로 걸러진다.4. 전체 소스
REPORT zr_read_tp_const. DATA: lt_source TYPE TABLE OF string, lt_name TYPE STANDARD TABLE OF string, lv_prog TYPE programm, lv_text TYPE string. " ── 1) 타입풀 소스 읽기 (ZHAN → %_CZHAN) ────────────── lv_prog = '%_CZHAN'. READ REPORT lv_prog INTO lt_source. IF sy-subrc <> 0. WRITE: / |소스를 읽을 수 없습니다: { lv_prog }|. RETURN. ENDIF. " ── 2) 전체 주석(* ) 라인 제거 후 하나의 텍스트로 결합 ── LOOP AT lt_source INTO DATA(lv_line). DATA(lv_tmp) = lv_line. SHIFT lv_tmp LEFT DELETING LEADING space. IF lv_tmp(1) = '*'. CONTINUE. ENDIF. lv_text = |{ lv_text } { lv_line }|. ENDLOOP. " ── 3) 상수명만 추출 ─────────────────────────────────── " ① zhan_ko_xxx TYPE/LIKE ... " ② zhan_ko_xxx(10) TYPE/LIKE ... DATA(lo_m) = cl_abap_matcher=>create_pcre( pattern = `(zhan_ko_\w+)\s*(?:\(\d+\))?\s+(?:TYPE|LIKE)\b` ignore_case = abap_true text = lv_text ). WHILE lo_m->find_next( ) = abap_true. APPEND to_lower( lo_m->get_submatch( 1 ) ) TO lt_name. ENDWHILE. " ── 4) 중복 제거 후 출력 ──────────────────────────────── SORT lt_name. DELETE ADJACENT DUPLICATES FROM lt_name. LOOP AT lt_name INTO DATA(lv_name). WRITE: / lv_name. ENDLOOP.5. 주의사항
💡cl_abap_matcher=>create_pcre는 ABAP Platform 2020 (7.55) 이상에서 지원된다.
구버전이면create( pattern = ... )(POSIX 정규식) 으로 교체한다.⚠️ 인라인 주석(") 안에zhan_ko_x TYPE ...형태의 문구가 있다면
잘못 캡처될 수 있다. 그런 케이스가 있다면 2단계에서 인라인 주석 제거 로직을 추가한다.⚠️%_C프리픽스는 REPOSRC의 내부 생성 프로그램명이다.
SE11에서 편집하는 원본 소스와 같은 내용이지만,READ REPORT에는 반드시 이 이름을 사용해야 한다.'SAP' 카테고리의 다른 글
HANA Sequence & NEXTVAL — Oracle → AMDP 변환 정리 (0) 2026.06.18 AMDP 동적 JSON 파라미터 (0) 2026.06.17 oracle to amdp : generator (HTML version) (0) 2026.06.10 Oracle SUBSTRB → SAP HANA SQLScript 변환 가이드 (0) 2026.06.10 Oracle CONNECT BY LEVEL → AMDP SERIES_GENERATE_INTEGER 변환 (0) 2026.06.09