ABAP

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

공사중 2021. 4. 22. 13:45

안녕하세요.

공사중 입니다. 

 

이번에는 CDS View 를 만들면서 제가 했던 실수들에 대해서 공유해 보겠습니다. 

혹시 CDS View 에 대한 경험이 많치 않은 분들에게 도움이 되셨으면 좋겠습니다. 

 

이번 시리즈의 범위는 ABAP CDS View ~ ABAP Dictionary 입니다.

연계된 부분을 잘 처리해서 SAP GUI 에서 잘 사용하기 위함입니다.

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

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

 

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

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

 

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

( 1 ) Key 설정....

 

이부분을 1번으로 다룬 이유는 명확합니다. 

Key 설정을 안하면 SE16 에서 조회 프로그램이 생성되지 않습니다.~!!

 

아래 예시를 보시면, 

 

 

@AbapCatalog.sqlViewName: 'YCDS_DEV01_001'
@AbapCatalog.compiler.compareFilter: true
@AbapCatalog.preserveKey: true
@AccessControl.authorizationCheck: #CHECK
@EndUserText.label: '고객 기본 정보'
define view YCDS_DEV01_001_DDL
  as select from kna1 as _Customer
    inner join   adrc as _Address on _Customer.adrnr = _Address.addrnumber

{
  _Customer.kunnr,
  _Customer.name1,
  _Customer.name2,
  _Customer.name3,
  _Customer.name4,
  _Address.city1,
  _Address.street,
  _Address.str_suppl1,
  _Address.str_suppl2,
  _Address.location,
  _Address.city2,
  _Address.post_code1
}

 

 

활성화시에 아래의 Annotation 에 의해서 ABAP Dictionary 에 DDL SQL View 가 자동으로 만들어지고 활성화 됩니다.

 

@AbapCatalog.sqlViewName: 'YCDS_DEV01_001'

< 만들어진 DDL SQL View >

하지만~~!!

테이블의 데이터를 살펴보려하면.. ( 혹은 SE16으로 해당 View 의 Contents 를 조회하려하면.. Dump 가 발생합니다. 

< Key Field 설정을 하지 않았을때 발생하는 Dump >

이는 SE16 의 해당 Vew 조회 화면을 만들어주는 STD 프로그램에서 발생하는것입니다. 

( 물론, SE16N 은 정상 작동되니 그쪽으로 사용하셔도 무방합니다만, ㅎㅎ;; )

 

프로그램을 분석해보니 Key Field 정보가 반드시 필요하게 되어있었습니다.

간단하게 Key 를 설정해서 해결합니다.

define view YCDS_DEV01_001_DDL
  as select from kna1 as _Customer
    inner join   adrc as _Address on _Customer.adrnr = _Address.addrnumber

{
  key _Customer.kunnr,
      _Customer.name1,
      _Customer.name2,
      _Customer.name3,
      _Customer.name4,
      _Address.city1,
      _Address.street,
      _Address.str_suppl1,
      _Address.str_suppl2,
      _Address.location,
      _Address.city2,
      _Address.post_code1
}

<Key Field 가 설정된 DDL SQL View >

정상적으로 아래와 같이 Contents 조회 화면이 생성된부분을 확인하실수 있습니다. 

< SE16 에 검색화면이 활성화된 결과 >

 

이제 SE16 에서도 CDS View 의 Contents 를 확인하실 수 있게 되었습니다.~~

 

끝.

 

관련 글.

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

 

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

안녕하세요. 공사중 입니다. SAP CDS View 만드실때 종종 격는 두번째 실수편. - 수량, 금액 필드의 참조 단위(Unit), 통화키(Currency) 필드의 지정 부분 입니다. CDS View 에 @AbapCatalog.sqlViewName 의 Annot..

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