s4/MaterialsValuation.sql (54 lines of code) (raw):
---In S/4 Hana , SAP has acitvated Material Ledge ML hence they have suggested to use CKMLHD and CKMLCR
---which has the same data compared to older tables and restricted the use of MBEW and MBEWH
SELECT
mbew.MANDT AS Client_MANDT,
mbew.MATNR AS MaterialNumber_MATNR,
mbew.BWTAR AS ValuationType_BWTAR,
mbew.BWKEY AS ValuationArea_BWKEY,
mbew.LVORM AS DeletionFlagForAllMaterialDataOfValuationType_LVORM,
mbew.BWTTY AS ValuationCategory_BWTTY,
mbew.LBKUM AS TotalValuatedStock_LBKUM,
mbew.SALK3 AS ValueOfTotalValuatedStock_SALK3,
mbew.VPRSV AS PriceControlIndicator_VPRSV,
mbew.PEINH AS PriceUnit_PEINH,
mbew.LAEPR AS DateOfTheLastPriceChange_LAEPR,
mbew.ZKDAT AS DateAsOfWhichThePriceIsValid_ZKDAT,
mbewh.LFGJA AS FiscalYearOfCurrentPeriod_LFGJA,
mbewh.LFMON AS CurrentPeriod_LFMON,
mbewh.BKLAS AS ValuationClass_BKLAS,
-- mbew.SALKV AS ValueBasedOnMovingAveragePrice_SALKV,
-- mbew.VMKUM AS TotalValuatedStockInPreviousPeriod_VMKUM,
-- mbew.VMSAL AS ValueOfTotalValuatedStockInPreviousPeriod_VMSAL,
-- mbew.VMVPR AS PriceControlIndicatorInPreviousPeriod_VMVPR,
-- mbew.VMVER AS PeriodicUnitPriceInPreviousPeriod_VMVER,
-- mbew.VMSTP AS StandardPriceInThePreviousPeriod_VMSTP,
-- mbew.VMPEI AS PriceUnitOfPreviousPeriod_VMPEI,
-- mbew.VMBKL AS ValuationClassInPreviousPeriod_VMBKL,
-- mbew.VMSAV AS ValueBasedOnMovingAveragePricePreviousPeriod_VMSAV,
-- mbew.VJKUM AS TotalValuatedStockInPreviousYear_VJKUM,
-- mbew.VJSAL AS ValueOfTotalValuatedStockInPreviousYear_VJSAL,
-- mbew. VJVPR AS PriceControlIndicatorInPreviousYear_VJVPR,
-- mbew.VJVER AS PeriodicUnitPriceInPreviousYear_VJVER,
-- mbew.VJSTP AS StandardPriceInPreviousYear_VJSTP,
-- mbew.VJPEI AS PriceUnitOfPreviousYear_VJPEI,
-- mbew.VJBKL AS ValuationClassInPreviousYear_VJBKL,
-- mbew.VJSAV AS ValueBasedOnMovingAveragePricePreviousYear_VJSAV,
-- mbew.BWPRS AS ValuationPriceBasedOnTaxLawLevel1_BWPRS,
-- mbew.BWPRH AS ValuationPriceBasedOnCommercialLawLevel1_BWPRH,
-- mbew.VJBWS AS ValuationPriceBasedOnTaxLawLevel3_VJBWS,
-- mbew.VJBWH AS ValuationPriceBasedOnCommercialLawLevel3_VJBWH,
-- mbew.VVJSL AS ValueOfTotalValuatedStockInYearBeforeLast_VVJSL,
-- mbew.VVJLB AS TotalValuatedStockInYearBeforeLast_VVJLB,
-- mbew.VVMLB AS TotalValuatedStockInPeriodBeforeLast_VVMLB,
-- mbew.VVSAL AS ValueOfTotalValuatedStockInPeriodBeforeLast_VVSAL,
-- mbew.zplpr AS FuturePlannedPrice_ZPLPR,
-- mbew.ZPLP1 AS FuturePlannedPrice1_ZPLP1,
-- mbew.ZPLP2 AS FuturePlannedPrice2,
-- mbew.ZPLP3 AS FuturePlannedPrice3,
-- mbew.ZPLD1 AS DateFromWhichFuturePlannedPrice1IsValid_ZPLD1,
-- mbew.ZPLD2 AS DateFromWhichFuturePlannedPrice2IsValid_ZPLD2,
-- mbew.ZPLD3 AS DateFromWhichFuturePlannedPrice3IsValid_ZPLD3,
-- mbew.PPERZ AS PeriodForFutureStandardCostEstimateDeactivated_PPERZ,
-- mbew.PPERL AS PeriodForCurrentStandardCostEstimateDeactivated_PPERL,
-- mbew.PPERV AS PeriodForPreviousStandardCostEstimateDeactivated_PPERV,
-- mbew.KALKZ AS IndicatorStandardCostEstimateForFuturePeriod_KALKZ,
-- mbew.KALKL AS StandardCostEstimateForCurrentPeriod_KALKL,
-- mbew.KALKV AS IndicatorStandardCostEstimateForPreviousPeriod_KALKV,
-- mbew.KALSC AS OverheadKeyDeactivated_KALSC,
-- mbew.XLIFO AS LIFOFIFORelevant_XLIFO,
-- mbew.MYPOL AS PoolNumberForLIFOValuation_MYPOL,
-- mbew.BWPH1 AS ValuationPriceBasedOnCommercialLawLevel2_BWPH1,
-- mbew.BWPS1 AS ValuationPriceBasedOnTaxLawLevel2_BWPS1,
-- mbew.ABWKZ AS LowestValueDevaluationIndicator_ABWKZ,
-- mbew.PSTAT AS MaintenanceStatus_PSTAT,
-- mbew.KALN1 AS CostEstimateNumberProductCosting_KALN1,
-- mbew.KALNR AS CostEstimateNumberForCostEst_QtyStructure_KALNR,
-- mbew.BWVA1 AS ValuationVariantForFutureStandardCostEstimate_BWVA1,
-- mbew.BWVA2 AS ValuationVariantForCurrentStandardCostEstimate_BWVA2,
-- mbew.BWVA3 AS ValuationVariantForPreviousStandardCostEstimate_BWVA3,
-- mbew.VERS1 AS CostingVersionOfFutureStandardCostEstimate_VERS1,
-- mbew.VERS2 AS CostingVersionOfCurrentStandardCostEstimate_VERS2,
-- mbew.VERS3 AS CostingVersionOfPreviousStandardCostEstimate_VERS3,
-- mbew.HRKFT AS OriginGroupAsSubdivisionOfCostElement_HRKFT,
-- mbew.KOSGR AS CostingOverheadGroup_KOSGR,
-- mbew.PPRDZ AS PeriodofFutureStandardCostEstimate_PPRDZ,
-- mbew.PPRDL AS PeriodOfCurrentStandardCostEstimate_PPRDL,
-- mbew.PPRDV AS PeriodOfPreviousStandardCostEstimate_PPRDV,
-- mbew.PDATZ AS FiscalYearOfFutureStandardCostEstimate_PDATZ,
-- mbew.PDATL AS FiscalYearOfCurrentStandardCostEstimate_PDATL,
-- mbew.PDATV AS FiscalYearOfPreviousStandardCostEstimate_PDATV,
-- mbew.EKALR AS MaterialIsCostedWithQuantityStructure_EKLAR,
-- mbew.VPLPR AS PreviousPlannedPrice_VPLPR,
-- mbew.MLMAA AS MaterialLedgerActivatedAtMaterialLevel_MLMAA,
-- mbew.MLAST AS MaterialPriceDetermination_Control_MLAST,
-- mbew.LPLPR AS CurrentPlannedPrice_LPLPR,
-- mbew.VKSAL AS ValueOfTotalValuatedStockAtSalesPrice_VKSAL,
-- mbew.HKMAT AS Material_RelatedOrigin_HKMAT,
-- mbew.SPERW AS PhysicalInventoryBlockingIndicator_SPERW,
-- mbew.KZIWL AS Phys_InventoryIndicatorForValue_OnlyMaterial_KZIWL,
-- mbew.WLINL AS DateOfLastPostedCount_WLINL,
-- mbew.ABCIW AS PhysicalInventoryIndicatorForCycleCounting_ABCIW,
-- mbew.BWSPA AS ValuationMargin_BWSPA,
-- mbew.LPLPX AS FixedPortionOfCurrentPlannedPrice_LPLPX,
-- mbew.VPLPX AS FixedPortionOfPreviousPlannedPrice_VPLPX,
-- mbew.FPLPX AS FixedPortionOfFuturePlannedPrice_FPLPX,
-- mbew.LBWST AS Val_StratForCurrentPlanPriceSalesOrderProj_Stock_LBWST,
-- mbew.VBWST AS ValuationStrategyForPreviousPlannedPriceSpecialStock_VBWST,
-- mbew.FBWST AS ValuationStrategyForFuturePlannedPriceSpecialStock_FBWST,
-- mbew.EKLAS AS ValuationClassForSalesOrderStock_EKLAS,
-- mbew.QKLAS AS ValuationClassForProjectStock_QKLAS,
-- mbew.MTUSE AS UsageOfTheMaterial_MTUSE,
-- mbew.MTORG AS OriginOfTheMaterial_MTORG,
-- mbew.OWNPR AS ProducedInHouse_OWNPR,
-- mbew.XBEWM AS ValuationBasedOnTheBatchSpecificUnitOfMeasure_XBEWM,
-- mbew.BWPEI AS PriceUnitForValuationPricesBasedOnTaxCommercialLaw_BWPEI,
-- mbew.MBRUE AS MBEWH_Rec_AlreadyExistsForPerBeforeLastOfMBEWPer_MBRUE,
-- mbew.OKLAS AS ValuationClassForSpecialStockAtTheVendor_OKLAS,
-- mbew.OIPPINV AS PrepaidInventoryFlagForMaterialValuationTypeSegment_OIPPINV,
t001.waers AS CurrencyKey_WAERS,
--##CORTEX-CUSTOMER Consider adding other dimensions from the calendar_date_dim table as per your requirement
CalendarDateDimension_LAEPR.CalYear AS YearOfDateOfTheLastPriceChange_LAEPR,
CalendarDateDimension_LAEPR.CalMonth AS MonthOfDateOfTheLastPriceChange_LAEPR,
CalendarDateDimension_LAEPR.CalWeek AS WeekOfDateOfTheLastPriceChange_LAEPR,
CalendarDateDimension_LAEPR.CalQuarter AS QuarterOfDateOfTheLastPriceChange_LAEPR,
CalendarDateDimension_ZKDAT.CalYear AS YearOfDateAsOfWhichThePriceIsValid_ZKDAT,
CalendarDateDimension_ZKDAT.CalMonth AS MonthOfDateAsOfWhichThePriceIsValid_ZKDAT,
CalendarDateDimension_ZKDAT.CalWeek AS WeekOfDateAsOfWhichThePriceIsValid_ZKDAT,
CalendarDateDimension_ZKDAT.CalQuarter AS QuarterOfDateAsOfWhichThePriceIsValid_ZKDAT,
--##CORTEX-CUSTOMER If you prefer to use currency conversion, uncomment below
-- currency_conversion.UKURS AS ExchangeRate_UKURS,
-- currency_conversion.TCURR AS TargetCurrency_TCURR,
-- currency_conversion.conv_date AS Conversion_date,
-- COALESCE(mbewh.STPRS * currency_decimal.CURRFIX, mbewh.STPRS) * currency_conversion.UKURS AS StandardPriceInTargetCurrency_STPRS,
-- COALESCE(mbewh.VERPR * currency_decimal.CURRFIX, mbewh.VERPR) * currency_conversion.UKURS AS PeriodicUnitPriceInTargetCurrency_VERPR,
-- COALESCE(mbew.STPRS * currency_decimal.CURRFIX, mbew.STPRS) * currency_conversion.UKURS AS StandardCostInTargetCurrency_STPRS,
-- COALESCE(mbew.VERPR * currency_decimal.CURRFIX, mbew.VERPR) * currency_conversion.UKURS AS MovingAveragePriceInTargetCurrency_VERPR,
-- COALESCE(mbew.STPRV * currency_decimal.CURRFIX, mbew.STPRV) * currency_conversion.UKURS AS PreviousPriceInTargetCurrency_STPRV,
-- COALESCE(mbew.ZKPRS * currency_decimal.CURRFIX, mbew.ZKPRS) * currency_conversion.UKURS AS FuturePriceInTargetCurrency_ZKPRS,
COALESCE(mbew.STPRS * currency_decimal.CURRFIX, mbew.STPRS) AS StandardCost_STPRS,
COALESCE(mbew.VERPR * currency_decimal.CURRFIX, mbew.VERPR) AS MovingAveragePrice_VERPR,
COALESCE(mbew.STPRV * currency_decimal.CURRFIX, mbew.STPRV) AS PreviousPrice_STPRV,
COALESCE(mbew.ZKPRS * currency_decimal.CURRFIX, mbew.ZKPRS) AS FuturePrice_ZKPRS,
COALESCE(mbewh.STPRS * currency_decimal.CURRFIX, mbewh.STPRS) AS StandardPrice_STPRS,
COALESCE(mbewh.VERPR * currency_decimal.CURRFIX, mbewh.VERPR) AS PeriodicUnitPrice_VERPR
FROM
`{{ project_id_src }}.{{ dataset_cdc_processed_s4 }}.mbew` AS mbew
LEFT JOIN
`{{ project_id_src }}.{{ dataset_cdc_processed_s4 }}.mbewh` AS mbewh
ON
mbew.MANDT = mbewh.MANDT
AND mbew.MATNR = mbewh.MATNR
AND mbew.BWKEY = mbewh.BWKEY
AND mbew.BWTAR = mbewh.BWTAR
LEFT JOIN
`{{ project_id_src }}.{{ dataset_cdc_processed_s4 }}.t001k` AS t001k
ON mbew.MANDT = t001k.MANDT
AND mbew.BWKEY = t001k.BWKEY
LEFT JOIN
`{{ project_id_src }}.{{ dataset_cdc_processed_s4 }}.t001` AS t001
ON t001.MANDT = t001k.MANDT
AND t001.BUKRS = t001k.BUKRS
LEFT JOIN `{{ project_id_tgt }}.{{ dataset_reporting_tgt }}.currency_decimal` AS currency_decimal
ON t001.WAERS = currency_decimal.CURRKEY
--##CORTEX-CUSTOMER If you prefer to use currency conversion, uncomment below
-- LEFT JOIN `{{ project_id_tgt }}.{{ dataset_reporting_tgt }}.currency_conversion` AS currency_conversion
-- ON mbew.MANDT = currency_conversion.MANDT
-- AND t001.WAERS = currency_conversion.FCURR
-- AND mbew.LAEPR = currency_conversion.conv_date
-- AND currency_conversion.TCURR IN UNNEST({{ sap_currencies }})
-- --##CORTEX-CUSTOMER Modify the exchange rate type based on your requirement
-- AND currency_conversion.KURST = 'M'
LEFT JOIN `{{ project_id_src }}.{{ k9_datasets_processing }}.calendar_date_dim` AS CalendarDateDimension_LAEPR
ON CalendarDateDimension_LAEPR.Date = mbew.LAEPR
LEFT JOIN `{{ project_id_src }}.{{ k9_datasets_processing }}.calendar_date_dim` AS CalendarDateDimension_ZKDAT
ON CalendarDateDimension_ZKDAT.Date = mbew.ZKDAT