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를 키로 붙여서 표시해주었다.
반응형