2017-12-08 7 views
0

SAP HANA 쿼리에서 OINVODLN을 합류하려고하는데 공통점이있는 필드를 찾지 못하는 것 같습니다.납품과 송장 간 링크 - SAP HANA 쿼리

별도의 테이블을 통해 링크되어 있습니까? 또는 나는 명백한 것을 놓치고 있는가?

최종 결과는 납품 문서 번호와 관련 송장 번호 및 비즈니스 파트너 목록이있는 단순한 테이블입니다. 그것은 나를 도왔다에있는 링크가 포함 된대로

답변

0

첫째, 신용 것도 사실이다 https://archive.sap.com/discussions/thread/1440163 가 다음과 같은 관계가 주어진다 확인하시기 바랍니다 찾고 있던 해결책을 찾는다. 그러나 솔루션에는 설명이 포함되어 있지 않으며 찾고있는 결과를 제공하지 않습니다.


SAP의 판매 주문에 대한 주요 정보는 두 개의 테이블, ORDRRDR1에 저장됩니다. ORDR에는 판매 주문마다 한 줄씩 표시되며 RDR1에는 판매 주문의 각 제품 행마다 한 줄씩 표시됩니다.

배달 노트 및 청구서 (기본적으로 SAP의 모든 문서)는이 패턴을 따릅니다.

왜이 질문에 중요합니까? 판매 주문, 납품서 및 송장을 연결하는 데이터가 포함 된 열은 RDR1 (또는 이와 유사한 변형)에 있습니다. 이름은 TrgetEntry입니다.

판매 주문에 각 제품에 대한 행이 있기 때문에 둘 이상의 제품이있는 판매 주문이 결과에 여러 번 표시되므로 조인을 할 수 없습니다. 다음 쿼리는 그룹화를 사용하여 각 판매 주문에 대한 줄이있는 테이블을 표시하고 배달 정보에 연결하는 데 필요한 정보를 제공합니다.

SELECT T0."DocEntry" AS "SO DE", T0."DocNum" AS "Sales Order Number", T1."TrgetEntry" AS "SO TE", COUNT(T0."DocNum") AS "Rows" 
FROM ORDR T0 
LEFT JOIN RDR1 T1 ON T0."DocEntry" = T1."DocEntry" 
GROUP BY T0."DocEntry", T0."DocNum", T1."TrgetEntry" 

테이블 이름 만 변경하면 배달 노트 및 송장에 대해 유사한 쿼리를 만들 수 있습니다.

그런 다음 TrgetEntryDocEntry을 사용하여 다양한 결과를 연결할 수 있습니다.

SELECT S0."SalesOrderNumber", S1."DeliveryNumber", S2."DocNum" AS "InvoiceNumber", S0."Rows", S2."DocTotal" 
FROM (SELECT T0."DocEntry" AS "SO_DE", T0."DocNum" AS "SalesOrderNumber", T1."TrgetEntry" AS "SO_TE", COUNT(T0."DocNum") AS "Rows" 
FROM ORDR T0 
LEFT JOIN RDR1 T1 ON T0."DocEntry" = T1."DocEntry" 
GROUP BY T0."DocEntry", T0."DocNum", T1."TrgetEntry") S0 
LEFT JOIN (SELECT T0."DocEntry" AS "DN_DE", T0."DocNum" AS "DeliveryNumber", T1."TrgetEntry" AS "DN_TE" 
FROM ODLN T0 
LEFT JOIN DLN1 T1 ON T0."DocEntry" = T1."DocEntry" 
GROUP BY T0."DocEntry", T0."DocNum", T1."TrgetEntry") S1 ON S0."SO_TE" = S1."DN_DE" 
LEFT JOIN OINV S2 ON S1."DN_TE" = S2."DocEntry" 
:

내가 판매 주문, 그들의 관련 납품 및 송장을 표시하기 위해 사용하는 최종 코드는 다음과 같다

0

SELECT Distinct(T0.DocNum),T0.DocDate, T0.CardCode, T0.CardName, T1.ItemCode, T1.Quantity, T1.Price,T1.TotalSumSy, T0.DocTotal 
    FROM ORDR T0 
    INNER JOIN RDR1 T1 ON T0.DocEntry = T1.DocEntry 
    INNER JOIN ODLN T2 ON T2.DocEntry = T1.TrgetEntry 
    INNER JOIN DLN1 T3 on T3.DocEntry = T2.Docentry 
    INNER JOIN OINV T4 ON T4.DocEntry = T3.TrgetEntry 
    INNER JOIN INV1 T5 ON T5.DocEntry = T4.DocEntry 
    LEFT JOIN ORDN T6 ON T6.DocEntry = T5.TrgetEntry 
    LEFT JOIN RDN1 T7 ON T7.DocEntry = T6.DocEntry 

그래서 다음과 같은 관계가, 자신의 답변 Eralper

SELECT * 
FROM ODLN T2 
INNER JOIN DLN1 T3 on T3.DocEntry = T2.Docentry 
INNER JOIN OINV T4 ON T4.DocEntry = T3.TrgetEntry