SAP S/4 HANA - 예제 코드 및 쿼리

kailyn·2024년 8월 13일

SAP

목록 보기
9/12

SAP S/4HANA에서 ABAP CDS 뷰 작성


@AbapCatalog.sqlViewName: 'ZC_SALES_ORDER'               " SQL 뷰의 이름을 정의
@AbapCatalog.compiler.compareFilter: true                " 필터 조건에 대한 비교를 허용
@AccessControl.authorizationCheck: #CHECK                " 접근 권한을 확인
@EndUserText.label: 'Sales Order Details'                " 사용자 인터페이스에 표시될 설명을 설정
define view ZC_SalesOrder as select from vbak            " vbak 테이블을 사용하여 CDS 뷰를 정의
  association [0..*] to vbap as _Items                   " vbak과 vbap 테이블 간의 다중(0..*) 연관 관계를 정의
    on $projection.vbeln = _Items.vbeln                  " 연관 조건을 정의합니다. vbak의 vbeln과 vbap의 vbeln이 동일해야 한다.
{
  key vbeln,                                              " Sales Order Number(주문 번호)을 키로 설정
  erdat,                                                  " 생성 일자
  ernam,                                                  " 생성자 이름
  vkorg,                                                  " 판매 조직
  vtweg,                                                  " 유통 채널
  _Items.posnr,                                           " 연관된 vbap 테이블에서의 품목 번호
  _Items.matnr,                                           " 연관된 vbap 테이블에서의 물품 번호
  _Items.kwmeng                                           " 연관된 vbap 테이블에서의 주문 수량
}

SQL 스크립트 예제 코드

SELECT vbeln, erdat, ernam, vkorg, vtweg               -- 필요한 필드를 선택
FROM vbak                                              -- vbak 테이블에서 데이터를 가져오기
WHERE erdat >= '20230101';                             -- 2023년 1월 1일 이후의 데이터를 필터링

AMDP (ABAP Managed Database Procedures) 예제 코드

CLASS zcl_sales_order_implementation DEFINITION         " 클래스 정의 시작
  PUBLIC                                                " 클래스 접근 권한을 공개로 설정
  FINAL                                                 " 이 클래스는 상속될 수 없음
  CREATE PUBLIC.                                        " 클래스의 인스턴스 생성이 가능함
  PUBLIC SECTION.                                       " 클래스의 공개 섹션 시작
    INTERFACES: if_amdp_marker_hdb.                     " 이 클래스가 HANA 데이터베이스에서 실행될 수 있음을 나타내는 AMDP 인터페이스를 구현
    METHODS: get_sales_orders                           " get_sales_orders 메서드 정의
      IMPORTING iv_date TYPE datum                      " 메서드에 입력 파라미터로 날짜를 받음
      EXPORTING et_sales_orders TYPE TABLE OF vbak.     " 메서드가 vbak 타입의 테이블을 반환
ENDCLASS.                                               " 클래스 정의 종료

CLASS zcl_sales_order_implementation IMPLEMENTATION.    " 클래스 구현 시작
  METHOD get_sales_orders BY DATABASE PROCEDURE         " 데이터베이스 프로시저로 구현된 get_sales_orders 메서드
    FOR HDB                                             " 이 메서드는 HANA 데이터베이스에서 실행
    LANGUAGE SQLSCRIPT                                  " SQLSCRIPT 언어를 사용하여 메서드를 구현
    OPTIONS READ-ONLY.                                  " 이 메서드는 읽기 전용
    et_sales_orders =                                   " 결과를 et_sales_orders에 저장
      SELECT vbeln, erdat, ernam, vkorg, vtweg          " vbak 테이블에서 필요한 필드들을 선택
      FROM vbak                                         " vbak 테이블에서 데이터를 가져옴
      WHERE erdat >= :iv_date;                          " 입력된 날짜 이후의 데이터를 필터링
  ENDMETHOD.                                            " 메서드 종료
ENDCLASS.                                               " 클래스 구현 종료

SAP BW/4HANA에서 BEx 쿼리 예제

SELECT * FROM /BIC/0000123456                           -- 모든 필드를 선택하여 /BIC/0000123456 테이블(InfoProvider)에서 데이터를 가져오기
WHERE 0CALMONTH = '202301';                             -- 2023년 1월에 해당하는 데이터만 필터링하여 선택

SAP Analytics Cloud (SAC) 모델 정의 예제

MODEL my_model                                          -- my_model이라는 모델을 정의
DIMENSION product WITH KEY product_id;                  -- product 차원을 정의하고, 제품 ID를 키로 설정
DIMENSION time WITH KEY year;                           -- time 차원을 정의하고, 연도를 키로 설정
MEASURE sales_amount;                                   -- 매출액을 측정 지표로 정의
DATA {                                                  -- 데이터 블록을 정의
  product_id, year, sales_amount                        -- 데이터 필드들: 제품 ID, 연도, 매출액
  'P001', 2021, 1000                                    -- 데이터: 제품 P001, 2021년, 매출액 1000
  'P002', 2021, 2000                                    -- 데이터: 제품 P002, 2021년, 매출액 2000
};
profile
나는 할 수 있다...!

0개의 댓글