HA400 - 4

Beemajor·2024년 9월 10일

@AbapCatalog.sqlViewName: 'ZVSQL5A1215'
@AbapCatalog.compiler.compareFilter: true
@AbapCatalog.preserveKey: true
@AccessControl.authorizationCheck: #NOT_REQUIRED
@EndUserText.label: '[S5A-12] Converted Prices'
define view ZVDDL5A1215 as select from sbook
association [1] to spfli as _spfli on sbook.carrid = _spfli.carrid and sbook.connid = _spfli.connid
{
    key sbook.carrid,
    key sbook.connid,
    key sbook.order_date,
    sbook.loccuram,
    sbook.loccurkey,
    
    currency_conversion(
        amount => loccuram,
        source_currency => loccurkey,
        target_currency => cast('EUR' as abap.cuky),
        exchange_rate_date => order_date,
        exchange_rate_type => 'M',
        error_handling => 'SET_TO_NULL'
    ) as price_eur 
    @<Semantics.amount.currencyCode: 'waers',
    @Semantics.currencyCode: true cast('EUR' as abap.cuky) as waers,
    
    case _spfli.countryfr
        when _spfli.countryto then 'D'  -- 국내선
        else 'I'                         -- 국제선
    end as flight_type                   -- 항공편 유형 (D: 국내선, I: 국제선)
     
}

@AbapCatalog.sqlViewName: 'ZVSQL5A1216'
@AbapCatalog.compiler.compareFilter: true
@AbapCatalog.preserveKey: true
@AccessControl.authorizationCheck: #NOT_REQUIRED
@EndUserText.label: '[S5A-12] Aggregated Prices'
define view ZVDDL5A1216 as select from ZVDDL5A1215
{
    key carrid,
    key flight_type,
    waers,
    sum(price_eur) as total_price_eur
}
group by carrid, flight_type, waers

*&---------------------------------------------------------------------*
*& Report ZR5A1215
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT zr5a1215.

" ALV 관련 클래스 선언
DATA: lo_alv    TYPE REF TO cl_salv_table,
      lt_result TYPE TABLE OF zvddl5a1216,   " ZVDDL5A1217의 구조를 사용
      wa_result TYPE zvddl5a1216.            " 개별 레코드

" 데이터 가져오기
SELECT *
  INTO CORRESPONDING FIELDS OF TABLE @lt_result
  FROM zvddl5a1216.   " 집계된 데이터가 들어있는 CDS View

" 데이터가 있는지 확인
IF lt_result IS NOT INITIAL.

  " ALV 출력
  TRY.
      cl_salv_table=>factory(
        IMPORTING
          r_salv_table = lo_alv
        CHANGING
          t_table      = lt_result ).

      lo_alv->display( ).  " ALV를 화면에 출력

    CATCH cx_salv_msg INTO DATA(lx_salv_msg).
      MESSAGE lx_salv_msg TYPE 'E'.
  ENDTRY.

ELSE.
  WRITE: 'No data found for the selection criteria.'.
ENDIF.


@AbapCatalog.sqlViewName: 'ZVSQL5A1217'
@AbapCatalog.compiler.compareFilter: true
@AbapCatalog.preserveKey: true
@AccessControl.authorizationCheck: #NOT_REQUIRED
@EndUserText.label: '[S5A-12] CDS11'
define view ZVDDL5A1217 
with parameters p_carrid : s_carr_id ,
                p_rate : abap.dec( 5,2 )

as select from sflight
{
    key carrid, key connid, key fldate,
    price,
    cast (price * :p_rate as abap.curr(15,2)) as new_price
    @<Semantics.amount.currencyCode: 'CURRENCY',
    currency @<Semantics.currencyCode: true
} where carrid = $parameters.p_carrid

*&---------------------------------------------------------------------*
*& Report ZR5A1215
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT zr5a1216.

" ALV 관련 클래스 선언
DATA: lo_alv    TYPE REF TO cl_salv_table,
      lt_result TYPE TABLE OF zvddl5a1217,   " ZVDDL5A1217의 구조를 사용
      wa_result TYPE zvddl5a1217.            " 개별 레코드

PARAMETERS pa_car TYPE sflight-carrid.
PARAMETERS pa_rate TYPE p LENGTH 5 DECIMALS 2.

START-OF-SELECTION.


*  TRY.
  SELECT *
    FROM zvddl5a1217( p_carrid = @pa_car, p_rate = @pa_rate )
    INTO CORRESPONDING FIELDS OF TABLE @lt_result.


" 데이터가 있는지 확인
IF lt_result IS NOT INITIAL.

  " ALV 출력
  TRY.
      cl_salv_table=>factory(
        IMPORTING
          r_salv_table = lo_alv
        CHANGING
          t_table      = lt_result ).

      lo_alv->display( ).  " ALV를 화면에 출력

    CATCH cx_salv_msg INTO DATA(lx_salv_msg).
      MESSAGE lx_salv_msg TYPE 'E'.
  ENDTRY.

ELSE.
  WRITE: 'No data found for the selection criteria.'.
ENDIF.

CDS VIEW 언젠간 리뷰해줄게요

profile
i'm Graphic Designer

0개의 댓글