AMDP에서 저장 프로 시저로 개체 이름, 고객 및 위치의 3 개 필드를 포함하는 테이블을 전달해야하는 운이없는 요구 사항을 해결하려고 노력했습니다. 저장 프로시 저는 동일한 고객, 위치 및 최소 (날짜)를 저장하는 테이블을 반환하는 데 사용해야합니다.
min (date)은 다음과 같이 객체 이름에서 파생 된 테이블에서 찾을 수 '"/BIC/A' || (object name passed from AMDP) || 2"'
있습니다. 따라서 AMDP가 매개 변수 객체를로 전달 YCUSTM01
하면 최소 날짜를 찾을 테이블 이름은 "/BIC/AYCUSTM012"
. 따라서 특정 위치에있는 고객의 최소 날짜를 찾기 위해 execute_immediate 문 (아마도?)을 만들고 추가 계산을 위해 해당 테이블을 AMDP에 다시 반환 할 수 있어야합니다.
입력 테이블 :
| Object_name | Customer | Location |
+-------------+----------+----------+
| YCUSTM01 | Walgreen | Chicago |
샘플 데이터 "/BIC/AYCUSTM012"
:
| Customer | Location | Date |
+----------+----------+------------+
| Walgreen | Chicago | 24.09.2020 |
| Walgreen | Chicago | 07.02.2019 |
| Walgreen | Chicago | 12.12.2012 |
| Walgreen | Chicago | 01.04.2015 |
저장 프로 시저에서 원하는 출력 테이블 :
select
customer,
location,
min(calday)
from "/BIC/AYCUSTM012"
where customer = :customer
and location = :location
group by
customer,
location;
| Customer | Location | Min_date |
+----------+----------+------------+
| Walgreen | Chicago | 12.12.2012 |
어떤 단서라도 대단히 감사하겠습니다.
astentx 는 매우 옳습니다. 코드에서 SAP BW ADSO 테이블에 직접 액세스하는 것은 최선의 방법이 아닙니다. 대신 이러한 ADSO 개체 의 외부보기 를 사용하는 것이 좋습니다.
그러나 이것은 동적 SQL 접근 방식의 주요 문제가 아닙니다. 다시, astentx는 동적 SQL을 사용하는 것이 좋은 생각이 아닌 이유에 대한 포괄적 인 개요를 이미 제공 했으므로 다시 반복하지 않겠습니다.
내가 권장하는 솔루션 접근 방식은 몇 단계를 더 거쳐 데이터 선택 및 데이터 처리 / 쿼리 계산을위한 코드를 분리합니다.
데모를 포함한 전체 접근 방식은 여기에 설명되어 있습니다. Lars Breddemann 블로그 : 비즈니스 로직을 테이블에서 분리하고 동적 SQL을 피 하십시오. 여기에 대략적인 개요가 있습니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다