ecc/PurchaseDocuments_Flow.sql (757 lines of code) (raw):

( WITH TCURX AS ( SELECT DISTINCT CURRKEY, CAST(POWER(10, 2 - COALESCE(CURRDEC, 0)) AS NUMERIC) AS CURRENCY_FIX FROM `{{ project_id_src }}.{{ dataset_cdc_processed_ecc }}.tcurx` ), CONV AS ( -- This table is used to convert rates from the transaction currency to USD. SELECT DISTINCT mandt, fcurr, tcurr, ukurs, PARSE_DATE('%Y%m%d', CAST(99999999 - CAST(gdatu AS INT64) AS STRING)) AS gdatu FROM `{{ project_id_src }}.{{ dataset_cdc_processed_ecc }}.tcurr` WHERE mandt = '{{ mandt_ecc }}' AND kurst = 'M' -- Daily Corporate Rate AND tcurr IN UNNEST({{ sap_currencies }}) -- Convert to USD UNION ALL ## CORTEX-CUSTOMER replace USD below or add currencies as UNION clauses -- USD to USD rates do not exist in TCURR (or any other rates that are same-to- -- same such as EUR to EUR / JPY to JPY etc. SELECT '{{ mandt_ecc }}' AS mandt, 'USD' AS fcurr, 'USD' AS tcurr, 1 AS ukurs, date_array AS gdatu FROM UNNEST(GENERATE_DATE_ARRAY('1990-01-01', '2060-12-31')) AS date_array ), EKKN AS ( SELECT EKKN.* EXCEPT (netwr), COALESCE(SAFE_DIVIDE(EKKN.menge, EKPO.menge) * EKPO.brtwr, EKPO.brtwr) AS brtwr, CASE WHEN EKKN.netwr IS NOT NULL THEN EKKN.netwr WHEN EKKN.netwr IS NULL AND EKKN.menge IS NOT NULL THEN SAFE_DIVIDE(EKKN.menge, EKPO.menge) * EKPO.netwr WHEN EKKN.netwr IS NULL AND EKKN.menge IS NULL THEN EKPO.netwr END AS netwr, COALESCE(SAFE_DIVIDE(EKKN.menge, EKPO.menge) * EKPO.effwr, EKPO.effwr) AS effwr FROM `{{ project_id_src }}.{{ dataset_cdc_processed_ecc }}.ekkn` AS EKKN INNER JOIN `{{ project_id_src }}.{{ dataset_cdc_processed_ecc }}.ekpo` AS EKPO USING (mandt, ebelp, ebeln) --L032 ), GoodsReceiptStaging AS ( SELECT MANDT, EBELN, EBELP, ZEKKN, MAX(BUDAT) AS MAX_BUDAT, SUM( CASE WHEN SHKZG = 'S' THEN MENGE WHEN SHKZG = 'H' THEN MENGE * -1 ELSE MENGE END ) AS MENGE, SUM( CASE WHEN SHKZG = 'S' THEN WRBTR WHEN SHKZG = 'H' THEN WRBTR * -1 ELSE WRBTR END ) AS WRBTR FROM `{{ project_id_src }}.{{ dataset_cdc_processed_ecc }}.ekbe` WHERE VGABE = '1' -- Goods Receipt GROUP BY 1, 2, 3, 4 ), GoodsReceiptStagingBELNR AS ( SELECT EBELN, EBELP, ZEKKN, BELNR, BUDAT FROM `{{ project_id_src }}.{{ dataset_cdc_processed_ecc }}.ekbe` WHERE VGABE = '1' -- Goods Receipt GROUP BY 1, 2, 3, 4, 5 ), GoodsReceipt AS ( SELECT GoodsReceiptStaging.MANDT, GoodsReceiptStaging.EBELN, GoodsReceiptStaging.EBELP, GoodsReceiptStaging.ZEKKN, GoodsReceiptStaging.MAX_BUDAT, GoodsReceiptStaging.MENGE, GoodsReceiptStaging.WRBTR, ANY_VALUE(GoodsReceiptStagingBELNR.BELNR) AS MAX_BELNR FROM GoodsReceiptStaging INNER JOIN GoodsReceiptStagingBELNR ON GoodsReceiptStaging.EBELN = GoodsReceiptStagingBELNR.EBELN AND GoodsReceiptStaging.EBELP = GoodsReceiptStagingBELNR.EBELP AND GoodsReceiptStaging.ZEKKN = GoodsReceiptStagingBELNR.ZEKKN AND GoodsReceiptStaging.MAX_BUDAT = GoodsReceiptStagingBELNR.BUDAT GROUP BY 1, 2, 3, 4, 5, 6, 7 ), InvoiceReceiptStaging AS ( SELECT MANDT, EBELN, EBELP, ZEKKN, MAX(BUDAT) AS MAX_BUDAT, SUM( CASE WHEN SHKZG = 'S' THEN MENGE WHEN SHKZG = 'H' THEN MENGE * -1 ELSE MENGE END ) AS MENGE, SUM( CASE WHEN SHKZG = 'S' THEN refwr WHEN SHKZG = 'H' THEN refwr * -1 ELSE refwr END ) AS refwr FROM `{{ project_id_src }}.{{ dataset_cdc_processed_ecc }}.ekbe` WHERE VGABE = '2' -- Invoice Receipt GROUP BY 1, 2, 3, 4 ), InvoiceReceiptStagingBELNR AS ( SELECT EBELN, EBELP, ZEKKN, BELNR, BUDAT FROM `{{ project_id_src }}.{{ dataset_cdc_processed_ecc }}.ekbe` WHERE VGABE = '2' -- Goods Receipt GROUP BY 1, 2, 3, 4, 5 ), InvoiceReceipt AS ( SELECT InvoiceReceiptStaging.MANDT, InvoiceReceiptStaging.EBELN, InvoiceReceiptStaging.EBELP, InvoiceReceiptStaging.ZEKKN, InvoiceReceiptStaging.MAX_BUDAT, InvoiceReceiptStaging.MENGE, InvoiceReceiptStaging.refwr, ANY_VALUE(InvoiceReceiptStagingBELNR.BELNR) AS MAX_BELNR FROM InvoiceReceiptStaging INNER JOIN InvoiceReceiptStagingBELNR ON InvoiceReceiptStaging.EBELN = InvoiceReceiptStagingBELNR.EBELN AND InvoiceReceiptStaging.EBELP = InvoiceReceiptStagingBELNR.EBELP AND InvoiceReceiptStaging.MAX_BUDAT = InvoiceReceiptStagingBELNR.BUDAT GROUP BY 1, 2, 3, 4, 5, 6, 7 ) SELECT -- PRIMARY KEY EKPO.MANDT AS Client_MANDT, EKPO.EBELN AS DocumentNumber_EBELN, EKPO.EBELP AS Item_EBELP, -- Material PO (Goods Receipt PO) will exist in EKKO, EKPO, but not in EKKN. -- SAP will default these transactions to ZEKKN = '00' in tables such as BSEG. -- We are simulating that rule here with the IFNULL statement. EKPO.LOEKZ AS DeletionFlag_LOEKZ, EKKO.BUKRS AS Company_BUKRS, EKKO.BSTYP AS DocumentCategory_BSTYP, EKKO.BSART AS DocumentType_BSART, EKKO.BSAKZ AS ControlFlag_BSAKZ, EKKO.LOEKZ AS DeletionFlagHdr_LOEKZ, EKKO.STATU AS Status_STATU, EKKO.AEDAT AS CreatedOn_AEDAT, EKKO.ERNAM AS CreatedBy_ERNAM, EKKO.PINCR AS ItemNumberInterval_PINCR, EKKO.LPONR AS LastItemNumber_LPONR, EKKO.LIFNR AS VendorAccountNumber_LIFNR, EKKO.SPRAS AS Language_SPRAS, EKKO.ZTERM AS TermsPaymentKey_ZTERM, -- CONCAT(LFA1.NAME1, ' ', LFA1.NAME2, ' ', LFA1.NAME3, ' ', LFA1.NAME4) AS VendorName_LIFNR, EKKO.ZBD1T AS DiscountDays1_ZBD1T, EKKO.ZBD2T AS DiscountDays2_ZBD2T, EKKO.ZBD3T AS DiscountDays3_ZBD3T, EKKO.ZBD1P AS CashDiscountPercentage1_ZBD1P, EKKO.ZBD2P AS CashDiscountPercentage2_ZBD2P, EKKO.EKORG AS PurchasingOrganization_EKORG, EKKO.EKGRP AS PurchasingGroup_EKGRP, EKKO.WAERS AS CurrencyKey_WAERS, EKKO.WKURS AS ExchangeRate_WKURS, EKKO.KUFIX AS FlagFixingExchangeRate_KUFIX, EKKO.BEDAT AS PurchasingDocumentDate_BEDAT, EKKO.KDATB AS StartValidityPeriod_KDATB, EKKO.KDATE AS EndValidityPeriod_KDATE, EKKO.BWBDT AS ClosingDateforApplications_BWBDT, EKKO.ANGDT AS Deadline_ANGDT, EKKO.BNDDT AS BindingPeriodforQuotation_BNDDT, EKKO.GWLDT AS WarrantyDate_GWLDT, EKKO.AUSNR AS Bidinvitationnumber_AUSNR, EKKO.ANGNR AS QuotationNumber_ANGNR, EKKO.IHRAN AS QuotationSubmissionDate_IHRAN, EKKO.IHREZ AS YourReference_IHREZ, EKKO.VERKF AS VendorSalesperson_VERKF, EKKO.TELF1 AS VendorTelephone_TELF1, EKKO.LLIEF AS SupplyingVendor_LLIEF, EKKO.KUNNR AS Customer_KUNNR, EKKO.KONNR AS PrincipalPurchaseAgreement_KONNR, EKKO.AUTLF AS CompleteDeliveryStipulated_AUTLF, EKKO.WEAKT AS GoodsReceiptMsgFlag_WEAKT, EKKO.RESWK AS SupplyTransportOrders_RESWK, EKKO.KTWRT AS AreaPerDistributionValue_KTWRT, EKKO.SUBMI AS CollectiveNumber_SUBMI, EKKO.KNUMV AS Numberthedocumentcondition_KNUMV, EKKO.KALSM AS Procedure_KALSM, EKKO.STAFO AS UpdateGroupStatistics_STAFO, EKKO.LIFRE AS DifferentInvoicingParty_LIFRE, EKKO.EXNUM AS ForeignTradeDocument_EXNUM, EKKO.UNSEZ AS OurReference_UNSEZ, EKKO.LOGSY AS LogicalSystem_LOGSY, EKKO.UPINC AS ItemNumberInterval_UPINC, EKKO.STAKO AS TimeDependentConditions_STAKO, EKKO.FRGGR AS Releasegroup_FRGGR, EKKO.FRGSX AS ReleaseStrategy_FRGSX, EKKO.FRGKE AS PurchasingDocumentRelease_FRGKE, EKKO.FRGZU AS ReleaseStatus_FRGZU, EKKO.FRGRL AS ReleaseIncomplete_FRGRL, EKKO.LANDS AS CountryforTaxReturn_LANDS, EKKO.LPHIS AS SchedulingAgreement_LPHIS, EKKO.ADRNR AS Address_ADRNR, EKKO.STCEG_L AS CountrySalesTaxIDNumber_STCEG_L, EKKO.STCEG AS VATRegistrationNumber_STCEG, EKKO.ABSGR AS ReasonforCancellation_ABSGR, EKKO.ADDNR AS AdditionalDocument_ADDNR, EKKO.KORNR AS CorrectionMiscProvisions_KORNR, EKKO.MEMORY AS IncompleteFlag_MEMORY, EKKO.PROCSTAT AS ProcessingState_PROCSTAT, EKKO.RLWRT AS ValueAtRelease_RLWRT, EKKO.REVNO AS VersionnumberinPurchasing_REVNO, EKKO.SCMPROC AS SCMProcess_SCMPROC, EKKO.REASON_CODE AS GoodsReceiptReason_REASON_CODE, EKKO.MEMORYTYPE AS CategoryIncompleteness_MEMORYTYPE, EKKO.RETTP AS RetentionFlag_RETTP, EKKO.MSR_ID AS ProcessIdentificationNumber_MSR_ID, EKKO.HIERARCHY_EXISTS AS PartaContractHierarchy_HIERARCHY_EXISTS, EKKO.THRESHOLD_EXISTS AS ExchangeThresholdValue_THRESHOLD_EXISTS, EKKO.LEGAL_CONTRACT AS LegalContractNumber_LEGAL_CONTRACT, EKKO.DESCRIPTION AS ContractName_DESCRIPTION, EKKO.RELEASE_DATE AS ReleaseDateContract_RELEASE_DATE, EKKO.HANDOVERLOC AS Physicalhandover_HANDOVERLOC, EKKO.FORCE_ID AS InternalKeyforForceElement_FORCE_ID, EKKO.FORCE_CNT AS InternalCounter_FORCE_CNT, EKKO.RELOC_ID AS RelocationID_RELOC_ID, EKKO.RELOC_SEQ_ID AS RelocationStepID_RELOC_SEQ_ID, EKKO.SOURCE_LOGSYS AS Logicalsystem_SOURCE_LOGSYS, EKKO.VZSKZ AS InterestcalculationFlag_VZSKZ, EKKO.POHF_TYPE AS SeasonalProcesingDocument_POHF_TYPE, EKKO.EQ_EINDT AS SameDeliveryDate_EQ_EINDT, EKKO.EQ_WERKS AS SameReceivingPlant_EQ_WERKS, EKKO.FIXPO AS FirmDealFlag_FIXPO, EKKO.EKGRP_ALLOW AS TakeAccountPurchGroup_EKGRP_ALLOW, EKKO.WERKS_ALLOW AS TakeAccountPlants_WERKS_ALLOW, EKKO.CONTRACT_ALLOW AS TakeAccountContracts_CONTRACT_ALLOW, EKKO.PSTYP_ALLOW AS TakeAccountItemCategories_PSTYP_ALLOW, EKKO.FIXPO_ALLOW AS TakeAccountFixedDate_FIXPO_ALLOW, EKKO.KEY_ID_ALLOW AS ConsiderBudget_KEY_ID_ALLOW, EKKO.AUREL_ALLOW AS TakeAccountAllocTableRelevance_AUREL_ALLOW, EKKO.DELPER_ALLOW AS TakeAccountDlvyPeriod_DELPER_ALLOW, EKKO.EINDT_ALLOW AS TakeAccountDeliveryDate_EINDT_ALLOW, EKKO.LTSNR_ALLOW AS IncludeVendorSubrange_LTSNR_ALLOW, EKKO.OTB_LEVEL AS OTBCheckLevel_OTB_LEVEL, EKKO.OTB_COND_TYPE AS OTBConditionType_OTB_COND_TYPE, EKKO.KEY_ID AS UniqueNumberBudget_KEY_ID, EKKO.OTB_VALUE AS RequiredBudget_OTB_VALUE, EKKO.OTB_CURR AS OTBCurrency_OTB_CURR, EKKO.OTB_RES_VALUE AS ReservedBudgetforOTB_OTB_RES_VALUE, EKKO.OTB_SPEC_VALUE AS SpecialReleaseBudget_OTB_SPEC_VALUE, EKKO.BUDG_TYPE AS BudgetType_BUDG_TYPE, EKKO.OTB_STATUS AS OTBCheckStatus_OTB_STATUS, EKKO.OTB_REASON AS ReasonFlagforOTBCheckStatus_OTB_REASON, EKKO.CHECK_TYPE AS TypeOTBCheck_CHECK_TYPE, EKKO.CON_OTB_REQ AS OTBRelevantContract_CON_OTB_REQ, EKKO.CON_PREBOOK_LEV AS OTBFlagLevelforContracts_CON_PREBOOK_LEV, EKKO.CON_DISTR_LEV AS DistributionUsingTargetValueorItemData_CON_DISTR_LEV, EKPO.STATU AS RFQtatus_STATU, EKPO.AEDAT AS ChangeDate_AEDAT, EKPO.TXZ01 AS ShortText_TXZ01, EKPO.MATNR AS MaterialNumber_MATNR, EKPO.EMATN AS MaterialNumber_EMATN, EKPO.BUKRS AS CompanyCode_BUKRS, EKPO.WERKS AS Plant_WERKS, EKPO.LGORT AS StorageLocation_LGORT, EKPO.BEDNR AS RequirementTrackingNumber_BEDNR, EKPO.MATKL AS MaterialGroup_MATKL, EKPO.INFNR AS NumberofPurchasingInfoRecord_INFNR, EKPO.IDNLF AS MaterialNumberVendor_IDNLF, EKPO.KTMNG AS TargetQuantity_KTMNG, EKPO.MENGE AS POQuantity_MENGE, EKPO.MEINS AS UoM_MEINS, EKPO.BPRME AS OrderPriceUnit_BPRME, EKPO.BPUMZ AS OrderUnitNumerator_BPUMZ, EKPO.BPUMN AS OrderUnitDenominator_BPUMN, EKPO.UMREZ AS NumeratorforConversionofOrderUnittoBaseUnit_UMREZ, EKPO.UMREN AS DenominatorforConversionofOrderUnittoBaseUnit_UMREN, EKPO.PEINH AS PriceUnit_PEINH, EKPO.AGDAT AS DeadlineforSubmissionofBid_AGDAT, EKPO.WEBAZ AS GoodsReceiptProcessingTimeinDays_WEBAZ, -- EKPO.NETPR AS NetPrice_NETPR, EKPO.MWSKZ AS Taxcode_MWSKZ, EKPO.BONUS AS SettlementGroup1_BONUS, EKPO.INSMK AS StockType_INSMK, -- EKPO.NETWR AS NetOrderValueinPOCurrency_NETWR, EKPO.SPINF AS UpdateInfoRecordFlag_SPINF, EKPO.PRSDR AS PricePrintout_PRSDR, -- EKPO.BRTWR AS GrossordervalueinPOcurrency_BRTWR, EKPO.SCHPR AS EstimatedPriceFlag_SCHPR, EKPO.MAHNZ AS NumberofReminders_MAHNZ, EKPO.MAHN1 AS NumberofDaysforFirstReminder_MAHN1, EKPO.MAHN2 AS NumberofDaysforSecondReminder_MAHN2, EKPO.MAHN3 AS NumberofDaysforThirdReminder_MAHN3, EKPO.UEBTO AS OverdeliveryToleranceLimit_UEBTO, EKPO.UEBTK AS UnlimitedOverdeliveryAllowed_UEBTK, EKPO.UNTTO AS UnderdeliveryToleranceLimit_UNTTO, EKPO.BWTAR AS ValuationType_BWTAR, EKPO.BWTTY AS ValuationCategory_BWTTY, EKPO.ABSKZ AS RejectionFlag_ABSKZ, EKPO.AGMEM AS InternalCommentonQuotation_AGMEM, EKPO.ELIKZ AS DeliveryCompletedFlag_ELIKZ, EKPO.EREKZ AS FinalInvoiceFlag_EREKZ, EKPO.PSTYP AS ItemCategoryinPurchasingDocument_PSTYP, EKPO.KNTTP AS AccountAssignmentCategory_KNTTP, EKPO.KZVBR AS ConsumptionPosting_KZVBR, EKPO.VRTKZ AS DistributionFlagformultipleaccountassignment_VRTKZ, EKPO.TWRKZ AS PartialInvoiceFlag_TWRKZ, EKPO.WEPOS AS GoodsReceiptFlag_WEPOS, EKPO.WEUNB AS GoodsReceiptNonValuated_WEUNB, EKPO.REPOS AS InvoiceReceiptFlag_REPOS, EKPO.WEBRE AS FlagGRBasedInvoiceVerification_WEBRE, EKPO.KZABS AS OrderAcknowledgmentRequirement_KZABS, EKPO.LABNR AS OrderAcknowledgmentNumber_LABNR, EKPO.KONNR AS NumberofPrincipalPurchaseAgreement_KONNR, EKPO.KTPNR AS ItemNumberofPrincipalPurchaseAgreement_KTPNR, EKPO.ABDAT AS ReconciliationDateforAgreedCumulativeQuantity_ABDAT, EKPO.ABFTZ AS AgreedCumulativeQuantity_ABFTZ, EKPO.ETFZ1 AS FirmZone_ETFZ1, EKPO.ETFZ2 AS TradeOffZone_ETFZ2, EKPO.KZSTU AS FirmTradeOffZones_KZSTU, EKPO.NOTKZ AS ExclusioninOutlineAgreementItemwithMaterialClass_NOTKZ, EKPO.LMEIN AS BaseUnitofMeasure_LMEIN, EKPO.EVERS AS ShippingInstructions_EVERS, EKPO.ZWERT AS TargetValueforOutlineAgreementinDocumentCurrency_ZWERT, EKPO.NAVNW AS Nondeductibleinputtax_NAVNW, EKPO.ABMNG AS Standardreleaseorderquantity_ABMNG, EKPO.PRDAT AS DateofPriceDetermination_PRDAT, EKPO.BSTYP AS PurchasingDocumentCategory_BSTYP, EKPO.XOBLR AS Itemaffectscommitments_XOBLR, EKPO.ADRNR AS Manualaddressnumberinpurchasingdocumentitem_ADRNR, EKPO.EKKOL AS ConditionGroupwithVendor_EKKOL, EKPO.SKTOF AS ItemDoesNotQualifyforCashDiscount_SKTOF, EKPO.STAFO AS Updategroupforstatisticsupdate_STAFO, EKPO.PLIFZ AS PlannedDeliveryTimeinDays_PLIFZ, EKPO.NTGEW AS NetWeight_NTGEW, EKPO.GEWEI AS UnitofWeight_GEWEI, EKPO.TXJCD AS TaxJurisdiction_TXJCD, EKPO.ETDRK AS FlagPrintrelevantSchedulelinesexist_ETDRK, EKPO.SOBKZ AS SpecialStockFlag_SOBKZ, -- EKPO.EFFWR AS Effectivevalueofitem_EFFWR, EKPO.ARSNR AS Settlementreservationnumber_ARSNR, EKPO.ARSPS AS Itemnumberofthesettlementreservation_ARSPS, EKPO.INSNC AS QualityinspectionFlagcannotbechanged_INSNC, EKPO.SSQSS AS ControlKeyforQualityManagementinProcurement_SSQSS, EKPO.ZGTYP AS CertificateType_ZGTYP, EKPO.EAN11 AS InternationalArticleNumber_EAN11, EKPO.BSTAE AS ConfirmationControlKey_BSTAE, EKPO.REVLV AS RevisionLevel_REVLV, EKPO.GEBER AS Fund_GEBER, EKPO.FISTL AS FundsCenter_FISTL, EKPO.FIPOS AS CommitmentItem_FIPOS, EKPO.KO_GSBER AS Businessareareportedtothepartner_KO_GSBER, EKPO.KO_PARGB AS assumedbusinessareaofthebusinesspartner_KO_PARGB, EKPO.KO_PRCTR AS ProfitCenter_KO_PRCTR, EKPO.KO_PPRCTR AS PartnerProfitCenter_KO_PPRCTR, EKPO.MEPRF AS PricingDateControl_MEPRF, EKPO.BRGEW AS GrossWeight_BRGEW, EKPO.VOLUM AS Volume_VOLUM, EKPO.VOLEH AS Volumeunit_VOLEH, EKPO.INCO1 AS Incoterms1_INCO1, EKPO.INCO2 AS Incoterms2_INCO2, EKPO.VORAB AS Advanceprocurement_VORAB, EKPO.KOLIF AS PriorVendor_KOLIF, EKPO.LTSNR AS VendorSubrange_LTSNR, EKPO.PACKNO AS Packagenumber_PACKNO, EKPO.FPLNR AS Invoicingplannumber_FPLNR, EKPO.GNETWR AS Currentlynotused_GNETWR, EKPO.STAPO AS Itemisstatistical_STAPO, EKPO.UEBPO AS HigherLevelIteminPurchasingDocuments_UEBPO, EKPO.LEWED AS LatestPossibleGoodsReceipt_LEWED, EKPO.EMLIF AS Vendortobesupplied_EMLIF, EKPO.LBLKZ AS Subcontractingvendor_LBLKZ, EKPO.SATNR AS CrossPlantConfigurableMaterial_SATNR, EKPO.ATTYP AS MaterialCategory_ATTYP, EKPO.VSART AS Shippingtype_VSART, EKPO.HANDOVERLOC AS Locationforaphysicalhandoverofgoods_HANDOVERLOC, EKPO.KANBA AS KanbanFlag_KANBA, EKPO.ADRN2 AS Numberofdeliveryaddress_ADRN2, EKPO.CUOBJ AS internalObjectNumber_CUOBJ, EKPO.XERSY AS EvaluatedReceiptSettlement_XERSY, EKPO.EILDT AS StartDateforGRBasedSettlement_EILDT, EKPO.DRDAT AS LastTransmission_DRDAT, EKPO.DRUHR AS Time_DRUHR, EKPO.DRUNR AS SequentialNumber_DRUNR, EKPO.AKTNR AS Promotion_AKTNR, EKPO.ABELN AS AllocationTableNumber_ABELN, EKPO.ABELP AS Itemnumberofallocationtable_ABELP, EKPO.ANZPU AS NumberofPoints_ANZPU, EKPO.PUNEI AS Pointsunit_PUNEI, EKPO.SAISO AS SeasonCategory_SAISO, EKPO.SAISJ AS SeasonYear_SAISJ, EKPO.EBON2 AS SettlementGroup2_EBON2, EKPO.EBON3 AS SettlementGroup3_EBON3, EKPO.EBONF AS ItemRelevanttoSubsequentSettlement_EBONF, EKPO.MLMAA AS Materialledgeractivatedatmateriallevel_MLMAA, EKPO.MHDRZ AS MinimumRemainingShelfLife_MHDRZ, EKPO.ANFNR AS RFQNumber_ANFNR, EKPO.ANFPS AS ItemNumberofRFQ_ANFPS, EKPO.KZKFG AS OriginofConfiguration_KZKFG, EKPO.USEQU AS Quotaarrangementusage_USEQU, EKPO.UMSOK AS SpecialStockFlagforPhysicalStockTransfer_UMSOK, EKPO.BANFN AS PurchaseRequisitionNumber_BANFN, EKPO.BNFPO AS ItemNumberofPurchaseRequisition_BNFPO, EKPO.MTART AS MaterialType_MTART, EKPO.UPTYP AS SubitemCategory_UPTYP, EKPO.UPVOR AS SubitemsExist_UPVOR, EKPO.KZWI1 AS Subtotal1frompricingprocedureforcondition_KZWI1, EKPO.KZWI2 AS Subtotal2frompricingprocedureforcondition_KZWI2, EKPO.KZWI3 AS Subtotal3frompricingprocedureforcondition_KZWI3, EKPO.KZWI4 AS Subtotal4frompricingprocedureforcondition_KZWI4, EKPO.KZWI5 AS Subtotal5frompricingprocedureforcondition_KZWI5, EKPO.KZWI6 AS Subtotal6frompricingprocedureforcondition_KZWI6, EKPO.SIKGR AS Processingkeyforsubitems_SIKGR, EKPO.MFZHI AS MaximumCumulativeMaterialGoAheadQuantity_MFZHI, EKPO.FFZHI AS MaximumCumulativeProductionGoAheadQuantity_FFZHI, EKPO.RETPO AS ReturnsItem_RETPO, EKPO.AUREL AS RelevanttoAllocationTable_AUREL, EKPO.BSGRU AS ReasonforOrdering_BSGRU, EKPO.LFRET AS DeliveryTypeforReturnstoVendors_LFRET, EKPO.MFRGR AS Materialfreightgroup_MFRGR, EKPO.NRFHG AS Materialqualifiesfordiscountinkind_NRFHG, EKPO.ABUEB AS ReleaseCreationProfile_ABUEB, EKPO.NLABD AS NextForecastDeliveryScheduleTransmission_NLABD, EKPO.NFABD AS NextJITDeliveryScheduleTransmission_NFABD, EKPO.KZBWS AS ValuationofSpecialStock_KZBWS, EKPO.FABKZ AS FlagItemRelevanttoJITDeliverySchedules_FABKZ, EKPO.J_1AINDXP AS InflationIndex_J_1AINDXP, EKPO.J_1AIDATEP AS InflationIndexDate_J_1AIDATEP, EKPO.MPROF AS ManufacturerPartProfile_MPROF, EKPO.EGLKZ AS OutwardDeliveryCompletedFlag_EGLKZ, EKPO.KZTLF AS StockTransfer_KZTLF, EKPO.KZFME AS Unitsofmeasureusage_KZFME, EKPO.RDPRF AS RoundingProfile_RDPRF, EKPO.TECHS AS StandardVariant_TECHS, EKPO.CHG_SRV AS Configurationchanged_CHG_SRV, EKPO.CHG_FPLNR AS Noinvoiceforthisitemalthoughnotfreeofcharge_CHG_FPLNR, EKPO.MFRPN AS ManufacturerPartNumber_MFRPN, EKPO.MFRNR AS NumberofaManufacturer_MFRNR, -- EKPO.BONBA AS Rebatebasis1_BONBA, EKPO.EMNFR AS Externalmanufacturercodenameornumber_EMNFR, EKPO.NOVET AS ItemblockedforSDdelivery_NOVET, EKPO.AFNAM AS NameofRequester_AFNAM, EKPO.TZONRC AS Timezoneofrecipientlocation_TZONRC, EKPO.IPRKZ AS PeriodFlagforShelfLifeExpirationDate_IPRKZ, EKPO.LEBRE AS FlagforServiceBasedInvoiceVerification_LEBRE, EKPO.BERID AS MRPArea_BERID, EKPO.XCONDITIONS AS Conditionsforitemalthoughnoinvoice_XCONDITIONS, EKPO.APOMS AS APOasPlanningSystem_APOMS, EKPO.CCOMP AS PostingLogicintheCaseofStockTransfers_CCOMP, EKPO.GRANT_NBR AS Grant_GRANT_NBR, EKPO.FKBER AS FunctionalArea_FKBER, EKPO.STATUS AS StatusofPurchasingDocumentItem_STATUS, EKPO.RESLO AS IssuingStorageLocationforStockTransportOrder_RESLO, EKPO.KBLNR AS DocumentNumberforEarmarkedFunds_KBLNR, EKPO.KBLPOS AS EarmarkedFundsDocumentItem_KBLPOS, EKPO.WEORA AS AcceptanceAtOrigin_WEORA, EKPO.SRV_BAS_COM AS ServiceBasedCommitment_SRV_BAS_COM, EKPO.PRIO_URG AS RequirementUrgency_PRIO_URG, EKPO.PRIO_REQ AS RequirementPriority_PRIO_REQ, EKPO.EMPST AS Receivingpoint_EMPST, EKPO.DIFF_INVOICE AS DifferentialInvoicing_DIFF_INVOICE, EKPO.TRMRISK_RELEVANT AS RiskRelevancyinPurchasing_TRMRISK_RELEVANT, EKPO.SPE_ABGRU AS Reasonforrejectionofquotationsandsalesorders_SPE_ABGRU, EKPO.SPE_CRM_SO AS CRMSalesOrderNumberforTPOP_SPE_CRM_SO, EKPO.SPE_CRM_SO_ITEM AS CRMSalesOrderItemNumberinTPOP_SPE_CRM_SO_ITEM, EKPO.SPE_CRM_REF_SO AS CRMReferenceOrderNumberforTPOP_SPE_CRM_REF_SO, EKPO.SPE_CRM_REF_ITEM AS CRMReferenceSalesOrderItemNumberinTPOP_SPE_CRM_REF_ITEM, EKPO.SPE_CRM_FKREL AS BillingRelevanceCRM_SPE_CRM_FKREL, EKPO.SPE_CHNG_SYS AS LastChangerSystemType_SPE_CHNG_SYS, EKPO.SPE_INSMK_SRC AS StockTypeofSourceStorageLocationinSTO_SPE_INSMK_SRC, EKPO.SPE_CQ_CTRLTYPE AS CQControlType_SPE_CQ_CTRLTYPE, EKPO.SPE_CQ_NOCQ AS NoTransmissionofCumulativeQuantitiesinSARelease_SPE_CQ_NOCQ, EKPO.REASON_CODE AS GoodsReceiptReasonCode_REASON_CODE, EKPO.CQU_SAR AS CumulativeGoodsReceipts_CQU_SAR, EKPO.ANZSN AS Numberofserialnumbers_ANZSN, EKPO.SPE_EWM_DTC AS EWMDeliveryBasedToleranceCheck_SPE_EWM_DTC, EKPO.EXLIN AS ItemNumberLength_EXLIN, EKPO.EXSNR AS ExternalSorting_EXSNR, EKPO.EHTYP AS ExternalHierarchyCategory_EHTYP, EKPO.RETPC AS RetentioninPercent_RETPC, EKPO.DPTYP AS DownPaymentFlag_DPTYP, EKPO.DPPCT AS DownPaymentPercentage_DPPCT, EKPO.DPAMT AS DownPaymentinDocumentCurrency_DPAMT, EKPO.DPDAT AS DueDateforDownPayment_DPDAT, EKPO.FLS_RSTO AS StoreReturnwithInboundandOutboundDelivery_FLS_RSTO, EKPO.EXT_RFX_NUMBER AS DocumentNumberofExternalDocument_EXT_RFX_NUMBER, EKPO.EXT_RFX_ITEM AS ItemNumberofExternalDocument_EXT_RFX_ITEM, EKPO.EXT_RFX_SYSTEM AS LogicalSystem_EXT_RFX_SYSTEM, EKPO.SRM_CONTRACT_ID AS CentralContract_SRM_CONTRACT_ID, EKPO.SRM_CONTRACT_ITM AS CentralContractItemNumber_SRM_CONTRACT_ITM, EKPO.BLK_REASON_ID AS BlockingReasonID_BLK_REASON_ID, EKPO.BLK_REASON_TXT AS BlockingReasonText_BLK_REASON_TXT, EKPO.ITCONS AS RealTimeConsumptionPostingofSubcontractingComponents_ITCONS, EKPO.FIXMG AS DeliveryDateandQuantityFixed_FIXMG, EKPO.WABWE AS FlagforGIbasedgoodsreceipt_WABWE, EKPO.TC_AUT_DET AS TaxCodeAutomaticallyDetermined_TC_AUT_DET, EKPO.MANUAL_TC_REASON AS ManualTaxCodeReason_MANUAL_TC_REASON, EKPO.FISCAL_INCENTIVE AS TaxIncentiveType_FISCAL_INCENTIVE, EKPO.TAX_SUBJECT_ST AS TaxSubject_TAX_SUBJECT_ST, EKPO.FISCAL_INCENTIVE_ID AS IncentiveID_FISCAL_INCENTIVE_ID, EKPO.ADVCODE AS AdviceCode_ADVCODE, EKPO.BUDGET_PD AS FMBudgetPeriod_BUDGET_PD, EKPO.EXCPE AS AcceptancePeriod_EXCPE, EKPO.IUID_RELEVANT AS IUIDRelevant_IUID_RELEVANT, EKPO.MRPIND AS RetailPriceRelevant_MRPIND, EKPO.REFSITE AS ReferenceSiteForPurchasing_REFSITE, EKPO.SERRU AS Typeofsubcontracting_SERRU, EKPO.SERNP AS SerialNumberProfile_SERNP, EKPO.DISUB_SOBKZ AS SpecialstockFlagSubcontracting_DISUB_SOBKZ, EKPO.DISUB_PSPNR AS WBSElement_DISUB_PSPNR, EKPO.DISUB_KUNNR AS CustomerNumber_DISUB_KUNNR, EKPO.DISUB_VBELN AS SalesandDistributionDocumentNumber_DISUB_VBELN, EKPO.DISUB_POSNR AS ItemnumberoftheSDdocument_DISUB_POSNR, EKPO.DISUB_OWNER AS Ownerofstock_DISUB_OWNER, EKPO.REF_ITEM AS ReferenceItemforRemainingQtyCancellation_REF_ITEM, EKPO.SOURCE_ID AS OriginProfile_SOURCE_ID, EKPO.SOURCE_KEY AS KeyinSourceSystem_SOURCE_KEY, EKPO.PUT_BACK AS FlagforPuttingBackfromGroupedPODocument_PUT_BACK, EKPO.POL_ID AS OrderListItemNumber_POL_ID, EKPO.CONS_ORDER AS PurchaseOrderforConsignment_CONS_ORDER, EKKN.SAKTO AS GlAccount_SAKTO, EKKN.GSBER AS BusinessArea_GSBER, EKKN.KOSTL AS CostCenter_KOSTL, EKKN.VBELN AS SalesDocumentNumber_VBELN_VBELN, EKKN.VBELP AS SalesDocumentItem_VBELP_VBELP, EKKN.ANLN1 AS MainAssetNumber_ANLN1, EKKN.ANLN2 AS AssetSubnumber_ANLN2, EKKN.AUFNR AS OrderNumber_AUFNR, EKKN.WEMPF AS Goodsrecipient_WEMPF, EKKN.ABLAD AS UnloadingPoint_ABLAD, EKKN.KOKRS AS ControllingArea_KOKRS, EKKN.KSTRG AS CostObject_KSTRG, EKKN.PAOBJNR AS ProfitabilitySegmentNumber_PAOBJNR, EKKN.PRCTR AS ProfitCenter_PRCTR, EKKN.PS_PSP_PNR AS WBS_PS_PSP_PNR, -- SKAT.txt50 AS GlAccountDesc_TXT50, EKKN.NPLNR AS NetworkNumber_NPLNR, EKKN.AUFPL AS Routingnumber_AUFPL, EKKN.IMKEY AS InternalKey_IMKEY, EKKN.APLZL AS Internalcounter_APLZL, EKKN.VPTNR AS Partneraccount_VPTNR, GoodsReceipt.MAX_BELNR AS LatestGrDocument_BELNR, GoodsReceipt.MAX_BUDAT AS LatestGrDocumentDate_BUDAT, GoodsReceipt.MENGE AS GrQuantity_MENGE, InvoiceReceipt.MAX_BELNR AS LatestIrDocument_BELNR, InvoiceReceipt.MAX_BUDAT AS LatestIrDocumentDate_BUDAT, InvoiceReceipt.MENGE AS IrQuantity_MENGE, COALESCE(EKKN.ZEKKN, '00') AS AccountAssignment_ZEKKN, CASE WHEN EKKO.STATU = '' THEN 'No Quotation Exists/Not Created via Sales' WHEN EKKO.STATU = 'A' THEN 'Quotation Exists in Case of RFQ Item' WHEN EKKO.STATU = 'F' THEN 'Created via Production Order' WHEN EKKO.STATU = 'V' THEN 'Created via Sales document' WHEN EKKO.STATU = 'W' THEN 'Created via Allocation Table' ELSE CAST(NULL AS STRING) END AS StatusDesc_STATU, CASE WHEN EKKO.FRGZU = '01' THEN 'Version in process' WHEN EKKO.FRGZU = '02' THEN 'Active' WHEN EKKO.FRGZU = '03' THEN 'In release' WHEN EKKO.FRGZU = '04' THEN 'Partially released' WHEN EKKO.FRGZU = '05' THEN 'Release completed' WHEN EKKO.FRGZU = '08' THEN 'Rejected' WHEN EKKO.FRGZU = '11' THEN 'In Distribution' WHEN EKKO.FRGZU = '12' THEN 'Error in Distribution' WHEN EKKO.FRGZU = '13' THEN 'Distributed' WHEN EKKO.FRGZU = '26' THEN 'In external approval' WHEN EKKO.FRGZU = '14' THEN 'In Preparation' ELSE CAST(NULL AS STRING) END AS ReleaseStatusDesc_FRGZU, COALESCE( EKPO.NETPR * TCURX.currency_fix, EKPO.NETPR ) AS NetPrice_NETPR, COALESCE( EKPO.NETPR * TCURX.currency_fix, EKPO.NETPR ) * CONV.UKURS AS NetPriceUSD_NETPR, COALESCE( EKKN.NETWR * TCURX.currency_fix, EKKN.NETWR, EKPO.NETWR * TCURX.currency_fix, EKPO.NETWR ) AS NetOrderValueinPOCurrency_NETWR, COALESCE( EKKN.NETWR * TCURX.currency_fix, EKKN.NETWR, EKPO.NETWR * TCURX.currency_fix, EKPO.NETWR ) * CONV.UKURS AS NetOrderValueinPOCurrencyUSD_NETWR, COALESCE( EKKN.BRTWR * TCURX.currency_fix, EKKN.BRTWR, EKPO.BRTWR * TCURX.currency_fix, EKPO.BRTWR ) AS GrossordervalueinPOcurrency_BRTWR, COALESCE( EKKN.BRTWR * TCURX.currency_fix, EKKN.BRTWR, EKPO.BRTWR * TCURX.currency_fix, EKPO.BRTWR ) * CONV.UKURS AS GrossordervalueinPOcurrencyUSD_BRTWR, CASE WHEN EKPO.PSTYP = '0' THEN 'Standard' WHEN EKPO.PSTYP = '1' THEN 'Limit' WHEN EKPO.PSTYP = '2' THEN 'Consignment' WHEN EKPO.PSTYP = '3' THEN 'Subcontracting' WHEN EKPO.PSTYP = '4' THEN 'Material unknown' WHEN EKPO.PSTYP = '5' THEN 'Third-party' WHEN EKPO.PSTYP = '6' THEN 'Text' WHEN EKPO.PSTYP = '7' THEN 'Stock transfer' WHEN EKPO.PSTYP = '8' THEN 'Material group' WHEN EKPO.PSTYP = '9' THEN 'Service' WHEN EKPO.PSTYP = 'A' THEN 'Enhanced Limit' WHEN EKPO.PSTYP = 'C' THEN 'Stock prov.by cust.' WHEN EKPO.PSTYP = 'P' THEN 'Return.trans.pack.' ELSE CAST(NULL AS STRING) END AS ItemCategoryinPurchasingDocumentDesc_PSTYP, CASE WHEN EKPO.BSTYP = 'A' THEN 'Request for quotation' WHEN EKPO.BSTYP = 'B' THEN 'Purchase requisition' WHEN EKPO.BSTYP = 'F' THEN 'Purchase order' WHEN EKPO.BSTYP = 'I' THEN 'Info record' WHEN EKPO.BSTYP = 'K' THEN 'Contract' WHEN EKPO.BSTYP = 'L' THEN 'Scheduling agreement' WHEN EKPO.BSTYP = 'Q' THEN 'Service entry sheet' WHEN EKPO.BSTYP = 'W' THEN 'Source list' WHEN EKPO.BSTYP = 'S' THEN 'Simplified service entry sheet' WHEN EKPO.BSTYP = 'R' THEN 'Request for Quotation' WHEN EKPO.BSTYP = 'O' THEN 'Quotation' WHEN EKPO.BSTYP = 'N' THEN 'Central Request for Quotation' WHEN EKPO.BSTYP = 'T' THEN 'Central Quotation' WHEN EKPO.BSTYP = 'C' THEN 'Central Contract' ELSE CAST(NULL AS STRING) END AS PurchasingDocumentCategoryDesc_BSTYP, COALESCE( EKKN.EFFWR * TCURX.currency_fix, EKKN.EFFWR, EKPO.EFFWR * TCURX.currency_fix, EKPO.EFFWR ) AS Effectivevalueofitem_EFFWR, -- GoodsReceipt.WRBTR AS GrAmount_WRBTR, COALESCE( EKKN.EFFWR * TCURX.currency_fix, EKKN.EFFWR, EKPO.EFFWR * TCURX.currency_fix, EKPO.EFFWR ) * CONV.UKURS AS EffectivevalueofitemUSD_EFFWR, COALESCE(EKPO.BONBA * TCURX.currency_fix, EKPO.BONBA) AS Rebatebasis1_BONBA, COALESCE(EKPO.MENGE, 0) - COALESCE(GoodsReceipt.MENGE, 0) AS GrBalanceQuantity_MENGE, COALESCE(GoodsReceipt.WRBTR * TCURX.currency_fix, GoodsReceipt.WRBTR) AS GrAmount_WRBTR, COALESCE(GoodsReceipt.WRBTR * TCURX.currency_fix, GoodsReceipt.WRBTR) * CONV.UKURS AS GrAmountUSD_WRBTR, COALESCE( COALESCE( EKKN.NETWR * TCURX.currency_fix, EKKN.NETWR, EKPO.NETWR * TCURX.currency_fix, EKPO.NETWR ), 0 ) - COALESCE( COALESCE( GoodsReceipt.WRBTR * TCURX.currency_fix, GoodsReceipt.WRBTR ), 0 ) AS GrBalanceAmount_NETWR_WRBTR, (COALESCE( COALESCE( EKKN.NETWR * TCURX.currency_fix, EKKN.NETWR, EKPO.NETWR * TCURX.currency_fix, EKPO.NETWR ), 0 ) - COALESCE( COALESCE( GoodsReceipt.WRBTR * TCURX.currency_fix, GoodsReceipt.WRBTR ), 0 )) * CONV.UKURS AS GrBalanceAmountUSD_NETWR_WRBTR, COALESCE(EKPO.MENGE, 0) - COALESCE(InvoiceReceipt.MENGE, 0) AS IrBalanceQuantity_MENGE, -- InvoiceReceipt.REFWR AS IrAmount_REFWR, COALESCE(InvoiceReceipt.REFWR * TCURX.currency_fix, InvoiceReceipt.REFWR) AS IrAmount_REFWR, COALESCE(InvoiceReceipt.REFWR * TCURX.currency_fix, InvoiceReceipt.REFWR) * CONV.UKURS AS IrAmountUSD_REFWR, COALESCE( COALESCE( EKKN.NETWR * TCURX.currency_fix, EKKN.NETWR, EKPO.NETWR * TCURX.currency_fix, EKPO.NETWR ), 0 ) - COALESCE( COALESCE( InvoiceReceipt.REFWR * TCURX.currency_fix, InvoiceReceipt.REFWR ), 0 ) AS IrBalanceAmount_NETWR_REFWR, (COALESCE( COALESCE( EKKN.NETWR * TCURX.currency_fix, EKKN.NETWR, EKPO.NETWR * TCURX.currency_fix, EKPO.NETWR ), 0 ) - COALESCE( COALESCE( InvoiceReceipt.REFWR * TCURX.currency_fix, InvoiceReceipt.REFWR ), 0 )) * CONV.UKURS AS IrBalanceAmountUSD_NETWR_REFWR FROM `{{ project_id_src }}.{{ dataset_cdc_processed_ecc }}.ekko` AS EKKO LEFT JOIN `{{ project_id_src }}.{{ dataset_cdc_processed_ecc }}.ekpo` AS EKPO ON EKKO.MANDT = EKPO.MANDT AND EKKO.EBELN = EKPO.EBELN LEFT JOIN EKKN ON EKPO.MANDT = EKKN.MANDT AND EKPO.EBELN = EKKN.EBELN AND EKPO.EBELP = EKKN.EBELP -- BI Enhancement to GR & IR Domains LEFT JOIN GoodsReceipt ON EKKO.MANDT = GoodsReceipt.MANDT AND EKKO.EBELN = GoodsReceipt.EBELN AND EKPO.EBELP = GoodsReceipt.EBELP AND COALESCE(EKKN.ZEKKN, '00') = GoodsReceipt.ZEKKN LEFT JOIN InvoiceReceipt ON EKKO.MANDT = InvoiceReceipt.MANDT AND EKKO.EBELN = InvoiceReceipt.EBELN AND EKPO.EBELP = InvoiceReceipt.EBELP AND COALESCE(EKKN.ZEKKN, '00') = InvoiceReceipt.ZEKKN -- Correction on decimal misplacement LEFT JOIN TCURX ON EKKO.WAERS = TCURX.CURRKEY LEFT JOIN CONV ON EKKO.MANDT = CONV.MANDT AND EKKO.WAERS = CONV.FCURR AND CAST(EKKO.aedat AS DATE) = CONV.GDATU )