ABAP

SAP CDS View 에 대한 초보적인 실수 (2) - 수량/금액 필드

공사중 2021. 4. 26. 15:59

CDS View 에 @AbapCatalog.sqlViewName 의 Annotation 에 의해 ABAP Dictionary 객체를 만들어 주는 부분은 

ABAP 개발자한테 매우 유용합니다. 

 

보통 ALV Report 개발할때, Display Structure 만들어 Fieldcatalog 를 지정하고, 모델링한 쿼리문으로 데이터를 가져와서 화면에 출력을 하게 되는데요.

CDS View 하나 잘 만들면 Display Structure 까지 한번에 만들어서 진행할 수 있습니다. 

 

더불어, HANA ALV ( ALV with IDA ) 방식의 레포트를 만드는경우에는 이런 작업이 필수라고 생각됩니다.

 

안녕하세요.

공사중 입니다.

 

SAP CDS View 만드실때 종종 격는 두번째 실수편.

( 2 ) 수량, 금액 필드의 참조 단위(Unit), 통화키(Currency) 필드의 지정 부분 입니다. 

 

CDS View 만들때,

(1) 가져올 수량, 금액필드 에 지정된 테이블의 필드까지 포함한다면 해당 매핑정보는 유효합니다. 

define view YTEST_CDS_DEV01_002
  as select from vbak as _Header
    inner join   vbap as _Item on _Header.vbeln = _Item.vbeln
{
  key _Header.vbeln,
  key _Item.posnr,
      _Item.zmeng,
      _Item.netwr
}

<지정된 수량/통화필드가 CDS View 내에 없는경우 >

define view YTEST_CDS_DEV01_002
  as select from vbak as _Header
    inner join   vbap as _Item on _Header.vbeln = _Item.vbeln
{
  key _Header.vbeln,
  key _Item.posnr,
      _Item.zmeng,
      _Item.zieme,
      _Item.netwr,
      _Item.waerk
}

<지정된 수량/통화필드가 CDS View 내에 추가한 경우 >

 

(2) 계산된 필드의 경우거나, 수동으로 매핑해줘야하는 경우에는 관련 Annotation 으로 명시적으로 지정해줘야 적용됩니다.

define view YTEST_CDS_DEV01_002
  as select from vbak as _Header
    inner join   vbap as _Item on _Header.vbeln = _Item.vbeln
{
  key _Header.vbeln,
  key _Item.posnr,
      _Item.zmeng,
      cast( _Item.zmeng * 100 as dzmeng )        as Calc_Quan,
      _Item.zieme,
      _Item.netpr,
      cast( _Item.netpr * _Item.zmeng as netwr ) as netwr,
      _Item.waerk
}

< 계산 필드인 경우, 참조 통화키를 지정하지 않은 경우 >

@Semantics.quantity.unitOfMeasure: 'ZIEME' QUAN Field 에 참조 UNIT 필드( Alies ) 명 지정.
@Semantics.unitOfMeasure: true UNIT Field 에 지정
@Semantics.amount.currencyCode: 'WAERK' CURR Field 에 참조 CUKY 필드( Alies ) 명 지정.
@Semantics.currencyCode: true CUKY Field 에 지정
define view YTEST_CDS_DEV01_002
  as select from vbak as _Header
    inner join   vbap as _Item on _Header.vbeln = _Item.vbeln
{
  key _Header.vbeln,
  key _Item.posnr,
      _Item.zmeng,
      @Semantics.quantity.unitOfMeasure: 'ZIEME'
      cast( _Item.zmeng * 100 as dzmeng )        as Calc_Quan,
      @Semantics.unitOfMeasure: true
      _Item.zieme,
      _Item.netpr,
      @Semantics.amount.currencyCode: 'WAERK'
      cast( _Item.netpr * _Item.zmeng as netwr ) as netwr,
      @Semantics.currencyCode: true
      _Item.waerk
}

 

< 계산 필드인 경우, 참조 통화키를 지정한 경우 >

수량/금액 필드에 대한 Annotation 을 빠트리지 않고 지정해줘야 기존에 참조해 쓰던 ABAP Dictionary 정보처럼 활용할수 있게됩니다.


끝.

 

 

관련 글..

SAP CDS View 에 대한 초보적인 실수 (1) - Key Field Setting

 

SAP CDS View 에 대한 초보적인 실수 (1) - Key Field Setting

안녕하세요. 공사중 입니다. 이번에는 CDS View 를 만들면서 제가 했던 실수들에 대해서 공유해 보겠습니다. 혹시 CDS View 에 대한 경험이 많치 않은 분들에게 도움이 되셨으면 좋겠습니다. 이번 시

gongsajung.tistory.com

SAP CDS View 에 대한 초보적인 실수 (3) - Null 고려.

 

SAP CDS View 에 대한 초보적인 실수 (3) - Null 고려.

CDS View 에 @AbapCatalog.sqlViewName 의 Annotation 에 의해 ABAP Dictionary 객체를 만들어 주는 부분은 ABAP 개발자한테 매우 유용합니다. 보통 ALV Report 개발할때, Display Structure 만들어 Fieldcatalog..

gongsajung.tistory.com