-
AMDP SQLScript — Consumption Entity & Table Function 정리SAP 2026. 5. 13. 18:22
AMDP SQLScript - Consumption Entity & Table Function 정리 AMDP SQLScript — Consumption Entity & Table Function 정리
1. SQLScript에서 Consumption Entity 호출 불가
SQLScript에서 Consumption Entity 호출이 안 되나?SQLScript(AMDP)는 HANA DB 엔진 레벨에서 실행되고, Consumption View는 ABAP CDS 런타임 레벨에서 동작하기 때문에 직접 호출이 불가능합니다.
CDS 레이어 SQLScript 호출 가능 여부 DB Table / View ✅ 가능 CDS Basic / Interface View ✅ 가능 CDS Composite View ✅ 가능 CDS Consumption View ❌ 불가 💡 Consumption View에는@UI.*,@Consumption.*, Access Control(DCL) 등 ABAP 런타임이 처리하는 메타데이터가 포함되어 있어 HANA 레이어에서 인식하지 못합니다.대안
① Consumption View 대신 하위 Interface/Composite View 직접 참조
SELECT * FROM I_SalesOrder -- C_SalesOrder 대신 WHERE CompanyCode = '1000';② 기반 투명 테이블 직접 접근
SELECT vbeln, kunnr FROM vbak WHERE bukrs = '1000';③ AMDP를 Consumption View의 Query Provider로 등록하는 설계 패턴 활용
2. Consumption View에 Query Provider 등록 가능 여부
Consumption View에도 Query Provider를 넣을 수 있어?기술적으로는 가능하지만 SAP 비권장 패턴입니다.
⚠️ Consumption View는 UI Annotation, Access Control 담당 레이어입니다. 여기에 로직까지 섞으면 관심사 분리 원칙이 깨져 유지보수가 어려워집니다.권장 레이어 구조
[ Consumption View ] ← UI/OData 노출, Annotation 담당 ↓ [ Composite View ] ← ✅ Query Provider 권장 위치 ↓ [ Interface View ] ← ✅ Query Provider 가능 ↓ [ AMDP ]권장 패턴 코드
" ✅ Interface View에 Query Provider 등록 @VDM.viewType: #BASIC @ObjectModel.query.implementedBy: 'ABAP:ZCL_MY_QUERY_PROVIDER' define view entity I_MyEntity as select from ... " Consumption View는 노출 담당만 @VDM.viewType: #CONSUMPTION @UI.headerInfo: ... define view entity C_MyEntity as select from I_MyEntity3. AMDP Table Function 호출 방법
Table Function 호출 방법은?① ABAP 코드에서 호출
DATA lt_result TYPE STANDARD TABLE OF zst_result. zcl_my_amdp=>get_data( EXPORTING iv_bukrs = '1000' IMPORTING rt_result = lt_result ).② 다른 AMDP 내부에서 호출 (AMDP → AMDP)
METHOD another_amdp BY DATABASE FUNCTION FOR HDB LANGUAGE SQLSCRIPT OPTIONS READ-ONLY USING zcl_my_amdp=>get_data. -- ← USING에 반드시 선언 lt_data = SELECT * FROM "ZCL_MY_AMDP=>GET_DATA"(iv_bukrs => '1000'); RETURN SELECT * FROM :lt_data; ENDMETHOD.③ CDS View에서 호출
@VDM.viewType: #BASIC define view entity I_MyView as select from ZCL_MY_AMDP=>GET_DATA(iv_bukrs: '1000') { vbeln, kunnr, matnr }핵심 주의사항
항목 내용 USING절다른 AMDP 호출 시 반드시 선언 함수명 표기 SQLScript 내에서 "클래스명=>메서드명"대문자OPTIONS READ-ONLYTable Function은 필수 Procedure vs Function Procedure는 SELECT FROM불가, Function만 가능파라미터 전달 함수명(파라미터명 => :변수)형식4. DB02에서 Table Function 미인식 시 체크리스트
DB02에서 실행 중인데 Table Function을 인식하지 못하면 어디를 확인해야 해?체크 순서
1. SE24에서 클래스 Activate 됐는지 확인 (Ctrl+F3) ↓ 2. SYS.FUNCTIONS 테이블에서 Function 존재 확인 ↓ 3. IS_VALID = TRUE 인지 확인 ↓ 4. DB02 Schema가 ABAP Schema 맞는지 확인 ↓ 5. Function명 대문자 여부 확인HANA DB에서 Function 존재 확인 SQL
-- Function 존재 여부 확인 SELECT SCHEMA_NAME, FUNCTION_NAME, FUNCTION_TYPE, IS_VALID FROM SYS.FUNCTIONS WHERE FUNCTION_NAME = 'ZCL_MY_AMDP=>GET_DATA'; -- 반드시 대문자IS_VALID 상태별 조치
IS_VALID 의미 조치 TRUE정상 DB02 Schema 문제 확인 FALSEFunction 손상 ABAP 클래스 재활성화 현재 Schema 확인
SELECT CURRENT_SCHEMA FROM DUMMY; SELECT SCHEMA_NAME FROM SYS.SCHEMAS WHERE SCHEMA_NAME LIKE 'SAP%';⚠️ DB02는 기본 Schema가 ABAP Schema와 다를 수 있습니다. Schema를 ABAP Schema로 변경한 후 검색하세요.💡 ABAP 측 오류 확인:ST22(덤프),SM21(시스템 로그), SE24에서 F9(직접 실행)로 오류 메시지 확인 가능합니다.'SAP' 카테고리의 다른 글
SAP STRING 타입 필드 — CDS / AMDP 처리 가이드 (0) 2026.05.13 AMDP에서 WITH 구문(CTE) 활용하기 (0) 2026.05.13 SAP ABAP 호출 구조 정리 — Entity · Query Provider · AMDP (0) 2026.05.12 CDS Consumption Entity 어노테이션 정리 (0) 2026.05.12 [claude] AMDP Scalar Function 이용 가이드 (0) 2026.05.11