ecc/POFulfillment.sql (39 lines of code) (raw):

(WITH eket AS ( SELECT Client_MANDT, PurchasingDocumentNumber_EBELN, ItemNumberOfPurchasingDocument_EBELP, StatisticsRelevantDeliveryDate_SLFDT, ItemDeliveryDate_EINDT, sum(ScheduledQuantity_MENGE) AS ScheduledQuantity_MENGE, sum(QuantityOfGoodsReceived_WEMNG) AS QuantityOfGoodsReceived_WEMNG FROM `{{ project_id_tgt }}.{{ dataset_reporting_tgt }}.POSchedule` GROUP BY Client_MANDT, PurchasingDocumentNumber_EBELN, ItemNumberOfPurchasingDocument_EBELP, StatisticsRelevantDeliveryDate_SLFDT, ItemDeliveryDate_EINDT ) SELECT PO.Client_MANDT, PO.DocumentNumber_EBELN, PO.Item_EBELP, PO.DocumentCategory_BSTYP, PO.DocumentType_BSART, PO.VendorAccountNumber_LIFNR, PO.Language_SPRAS, PO.TermsPaymentKey_ZTERM, PO.CashDiscountPercentage1_ZBD1P, PO.PurchasingOrganization_EKORG, PO.PurchasingGroup_EKGRP, PO.CurrencyKey_WAERS, PO.MaterialNumber_MATNR, PO.ShortText_TXZ01, PO.MaterialGroup_MATKL, PO.StorageLocation_LGORT, PO.POQuantity_MENGE, PO.UoM_MEINS, PO.OrderPriceUnit_BPRME, PO.NetPrice_NETPR, PO.NetOrderValueinPOCurrency_NETWR, PO.GrossordervalueinPOcurrency_BRTWR, PO.DeliveryCompletedFlag_ELIKZ, PO.NetWeight_NTGEW, PO.ReturnsItem_RETPO, delivery.ItemDeliveryDate_EINDT, if(PO.ReturnsItem_RETPO IS NULL, delivery.ScheduledQuantity_MENGE, delivery.ScheduledQuantity_MENGE * -1 ) AS TotalScheduledQty, if(PO.ReturnsItem_RETPO IS NULL, delivery.QuantityOfGoodsReceived_WEMNG, delivery.QuantityOfGoodsReceived_WEMNG * -1 ) AS TotalReceivedQty, (if(PO.ReturnsItem_RETPO IS NULL, delivery.ScheduledQuantity_MENGE, delivery.ScheduledQuantity_MENGE * -1 ) - if(PO.ReturnsItem_RETPO IS NULL, delivery.QuantityOfGoodsReceived_WEMNG, delivery.QuantityOfGoodsReceived_WEMNG * -1 ) ) AS PendingQty FROM `{{ project_id_tgt }}.{{ dataset_reporting_tgt }}.PurchaseDocuments` AS PO INNER JOIN eket AS delivery ON PO.Client_MANDT = delivery.Client_MANDT AND PO.DocumentNumber_EBELN = delivery.PurchasingDocumentNumber_EBELN AND PO.Item_EBELP = delivery.ItemNumberOfPurchasingDocument_EBELP )