IT WORK/SAP FI and ABAP

[ABAP] join에 sub query 사용해서 데이터 가져오는 CDS View

Bathildis 2025. 5. 2. 11:02
반응형

 

 

테이블 구조와 데이터가 위와 같을 때,

전표번호로 최종 결재자 정보 가져오는 쿼리

select a.belnr, a.gjahr, c.appr_key, c.appr_id, c.appr_name
from zdocu a join zappr b  on a.appr_grp = b.appr_grp
             join ( select a.appr_key, a.appr_id, a.appr_name
                      from zappr_line a join (   select appr_key, max(appr_seq) as appr_seq -- 같은 결재번호 그룹핑, 결재선 종류가 1인것 중 최종 결재순번
                                                   from zappr_line
                                                  where gubun = '1' -- 결재선 종류: 결재 (참조/열람 등 제외)
                                               group by appr_key  -- 같은 결재번호로 그룹핑
                                             ) b 
									      on a.appr_key = b.appr_key 
						                 and a.appr_seq = b.appr_seq 
						                 and a.gubun = '1'
                   ) c on b.appr_key = c.appr_key
 where a.belnr = '1000000001'
  and a.gjahr = '2025'

 

근데 이게 CDS View를 통해서 가져오려면 한번에 되지 않음.... (제가 못한 걸수도 있으니 조언 댓글 환영합니다.)

 

 

순서대로 가장 마지막 결재순번 가져오는 view 1개,

위의 view를 통해서 마지막 결재 정보를 가져오는 view 1개,

또 전표정보 + 위의 view를 join하기 위한 view 1개 총 3개를 만들었다.

 

define view ZI_FI_MAX_APPR as select from zappr_line
{
    key appr_key, 
    max(appr_seq) as appr_seq
}
where gubun = '1'
group by appr_key

순서대로 가장 마지막 결재순번 가져오는 view

 

define view ZI_FI_APPR as select from zappr_line as a join ZI_FI_MAX_APPR as b
                                                         on a.appr_key = b.appr_key 
                                                        and a.appr_seq = b.appr_seq
{
    a.appr_key,
    a.appr_id,
    a.appr_name
}
where a.gubun = '1'

위의 view를 통해서 마지막 결재 정보를 가져오는 view

 

define view ZI_FI_LAST_APPR as select from zdocu a join zappr b 
                                 on a.appr_grp = b.appr_grp
                               join ZI_FI_APPR c
                                 on b.appr_key = c.appr_key
{
    key a.bukrs,
    key a.belnr, 
    key a.gjahr, 
        c.appr_key,
        c.appr_id, 
        c.appr_name
}

전표정보 + 위의 view를 join하기 위한 view

 


이러고 실제 레포트용 최종 view에 마지막에 만든 ZI_FI_LAST_APPR를 bukrs, belnr, gjahr를 키로 붙여서 표시해주었다.

반응형