【ABAP】Code push down 실천편(메모)
취지
실무중에서 「이것은 Code push down 할 수 있을 것 같다」라고 생각한 재료를 구현합니다. (소재는 에센스만으로 실제 요구 사항과 다릅니다)
생각해 낸 베이스로 이 기사에 추가해 갑니다.
Code push down에 대한 이전 기사
【ABAP】Code push down을 실현하는 방법
【ABAP】Code push down 실장편
요구사항 1: EKKO와 EKPO를 결합, EKPO는 삭제되지 않은 1건만
주문 헤더(EKKO)와 품목(EKPO)을 결합한 데이터를 가져옵니다.
그러나 EKPO에서 원하는 것은 플랜트, 보관 장소 정보뿐입니다.
1 주문 내에서 플랜트, 보관 장소는 공통이라는 제약이 있으므로, EKPO의 삭제되지 않은 품목 중에서 최소의 품목을 취득하고 싶습니다.
생각한 것
① INNER JOIN의 조건에 최소의 품목 번호를 지정할 수 없는가?
SELECT EBELN, EKORG, EKGRP, EBELP, WERKS, LGORT
FROM EKKO
INNER JOIN EKPO
ON EKKO~ebeln = EKPO~EBELN
AND EKPO~ebelp = select min( ebelp ) from ekpo where ebeln = '4500000001' and loekz is initial.
신택스로서 ON의 조건에 SELECT를 쓸 수 없기 때문에 안 되었습니다.
그리고, 발주 번호가 파라미터등으로 지정되지 않으면 이 쓰는 방법에서는 무리.
오류 화면
② CDS 뷰를 2개 만들어 최소 품목 번호를 조건으로 취득할 수 없는가?
조금 번거롭지만 두 개의 CDS보기를 만들기로 결정했습니다.
1. EKPO에서 주문 번호와 삭제되지 않은 최소 품목 번호의 조합을 얻는 뷰
2. EKKO와 1.의 뷰를 결합하고 EKPO를 더한 뷰
보기 1
※어노테이션은 생략하고 있습니다
define view ZMOB58_I_MIN_PO as select from ekpo {
key ebeln,
key min( ebelp ) as ebelp
}where loekz is initial
group by ebeln
보기 2
define view ZMOB58_C_PO
as select from ekko as h
inner join ZMOB58_I_MIN_PO as min_i on h.ebeln = min_i.ebeln
association [1] to ekpo as _ekpo on min_i.ebeln = _ekpo.ebeln
and min_i.ebelp = _ekpo.ebelp
{
key h.ebeln,
key ebelp,
bukrs,
bsart,
lifnr,
ekorg,
ekgrp,
waers,
_ekpo.werks,
_ekpo.lgort
}
뷰 2 실행 결과
보기 2를 ABAP에서 호출할 수도 있습니다.
SELECT * from zmob58_c_po
INTO TABLE @DATA(lt_ebelp).
결론
유감스럽게도 SQL 한발로는 무리로, CDS2개로 할 수 있었습니다.
뷰를 정의하는 것이 조금 번거롭지만, 뷰마다 올바른 결과가 되어 있는지 확인하면서 진행되기 때문에 알기 쉽다고 생각했습니다.
Reference
이 문제에 관하여(【ABAP】Code push down 실천편(메모)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/tami/items/295c9f5619066f3b7e77텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)