Какая связь в HANA между заказами на продажу, поставками и счетами

Я пытаюсь присоединиться ORDR, ODLN а также OINV в запросе SAP HANA, но я не могу найти поле, которое они разделяют совместно.

Где-то должна быть запись, которая связывает одну с другой.

Связаны ли они через отдельную таблицу? Или я что-то упускаю очевидное?

2 ответа

Решение

Во-первых, Eralper за их ответ, поскольку содержащаяся в нем ссылка помогла мне найти решение, которое я искал. Тем не менее, решение не включает в себя объяснение и не совсем дает искомый результат.


Основная информация для заказа клиента в SAP хранится в двух таблицах: ORDR а также RDR1, 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"

Просто изменив имена таблиц, можно создать похожие запросы для накладных и накладных.

Тогда вы можете использовать TrgetEntry а также DocEntry связать различные результаты.

Последний код, который я использую для показа заказов на продажу, связанных с ними поставок и счетов, выглядит следующим образом:

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"

Пожалуйста, проверьте https://archive.sap.com/discussions/thread/1440163 Там даны следующие отношения

 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

Таким образом, следующее соотношение также верно

SELECT *
FROM ODLN T2 
INNER JOIN DLN1 T3 on T3.DocEntry = T2.Docentry
INNER JOIN OINV T4 ON T4.DocEntry = T3.TrgetEntry
Другие вопросы по тегам