P_Vlogp_PositionRep

DDL: P_VLOGP_POSITIONREP Type: view COMPOSITE

P_Vlogp_PositionRep is a Composite CDS View in SAP S/4HANA. It reads from 2 data sources (I_TimeToMaturity, I_VersionedLogisticDocument) and exposes 142 fields with key fields PricingKey, Version, PricingDocumentItem, ConditionType, SubConditionType.

Data Sources (2)

SourceAliasJoin Type
I_TimeToMaturity _TimeToMaturity left_outer
I_VersionedLogisticDocument vlogp from

Parameters (4)

NameTypeDefault
P_MTMDataSelectionType cmm_vlogp_consumptiontype
P_DisplayView cds_view_uom
P_EndOfDaySnapshotFromDate cmm_dend_cutdate
P_EndOfDaySnapshotToDate cmm_dend_cutdate

Annotations (10)

NameValueLevelField
ClientHandling.algorithm #SESSION_VARIABLE view
AccessControl.authorizationCheck #NOT_REQUIRED view
AbapCatalog.sqlViewName PVLOGPPOSR view
AbapCatalog.compiler.compareFilter true view
VDM.viewType #COMPOSITE view
VDM.private true view
ObjectModel.usageType.sizeCategory #XL view
ObjectModel.usageType.serviceQuality #D view
ObjectModel.usageType.dataClass #TRANSACTIONAL view
AbapCatalog.preserveKey true view

Fields (142)

KeyFieldSource TableSource FieldDescription
KEY PricingKey PricingKey
KEY Version Version
KEY PricingDocumentItem PricingDocumentItem
KEY ConditionType ConditionType
KEY SubConditionType SubConditionType
ValidityStartDate ValidityStartDate
ValidityStartDateTime ValidityStartDateTime
ValidityEndDate ValidityEndDate
ValidityEndDateTime ValidityEndDateTime
SourceTransactionEventDateTime SourceTransactionEventDateTime
SourceTransacEventEndDateTime SourceTransacEventEndDateTime
EndOfDayBusinessEntityKey EndOfDayBusinessEntityKey
MarketNormBusinessEntityKey MarketNormBusinessEntityKey
DeliveryPeriodStartDate DeliveryPeriodStartDate
DeliveryPeriodEndDate DeliveryPeriodEndDate
SpreadBusinessEntityKey SpreadBusinessEntityKey
MaximumVersion MaximumVersion
PreviousVersion PreviousVersion
EndOfDaySnapshotFromDate
EndOfDaySnapshotToDate
DisplayView
BusinessDocumentCompanyCode
SalesOrganization SalesOrganization
DistributionChannel DistributionChannel
Division Division
Creditor Creditor
SoldToParty SoldToParty
Material Material
PhysicalCommodity PhysicalCommodity
Plant Plant
StorageLocation StorageLocation
Batch Batch
IncotermsClassification IncotermsClassification
IncotermsTransferLocation IncotermsTransferLocation
ConditionApplication ConditionApplication
SourceDocument SourceDocument
SourceDocumentBusObjType
OriginReferenceDocument OriginReferenceDocument
OriginReferenceDocumentItem OriginReferenceDocumentItem
OriginReferenceDocBusObjType
ReferenceDocument ReferenceDocument
ReferenceDocumentItem ReferenceDocumentItem
ReferenceDocBusObjType
DeliveryDate DeliveryDate
ExpectedPaymentDate ExpectedPaymentDate
StatisticsCurrency StatisticsCurrency
DocumentCurrency DocumentCurrency
ProfitCenter ProfitCenter
BusinessArea BusinessArea
PurchasingOrganization PurchasingOrganization
MaterialGroup MaterialGroup
IsIntercompanyTransfer IsIntercompanyTransfer
PricingConditionCalculationType
ConditionRate ConditionRate
ConditionCurrency ConditionCurrency
ConditionQuantity ConditionQuantity
ConditionQuantityUnit ConditionQuantityUnit
CommodityPricingEngineQuotationPriceType
ConditionTermRate ConditionTermRate
ConditionTermRateCurrency ConditionTermRateCurrency
ConditionTermRateQuantity ConditionTermRateQuantity
ConditionTermRateQuantityUnit ConditionTermRateQuantityUnit
ConditionTermValue ConditionTermValue
ConditionTermValueCurrency ConditionTermValueCurrency
ConditionTermRateMktCurrency ConditionTermRateMktCurrency
ConditionTermName ConditionTermName
ConditionTermStatus ConditionTermStatus
RoundingDecimalPlaces RoundingDecimalPlaces
ConditionTermRateIsRounded ConditionTermRateIsRounded
ConditionTermRateNmrtr ConditionTermRateNmrtr
ConditionTermRateDnmntr ConditionTermRateDnmntr
ConditionTermExtensionUsage ConditionTermExtensionUsage
CmmdtyForwardIndexTiming CmmdtyForwardIndexTiming
QuotationPeriodReferenceDate QuotationPeriodReferenceDate
CommodityCurve CommodityCurve
QuotationsCommodityCurveQuotationKeyType
QuotationDateList QuotationDateList
FutureRefQuotationDateList FutureRefQuotationDateList
QuotationPeriodStartDate QuotationPeriodStartDate
QuotationPeriodEndDate QuotationPeriodEndDate
FixedtermsmaystillrefertoDCS
DerivativeContrSpecification
MarketIdentifierCode MarketIdentifierCode
FutureRefMarketIdentifierCode FutureRefMarketIdentifierCode
MaturityKeyDate MaturityKeyDate
BasisID BasisID
BasisType BasisType
QuotationGroup QuotationGroup
QuotationGroupCalculationRule QuotationGroupCalculationRule
PriceIsRealized PriceIsRealized
ConditionTermRateFixation ConditionTermRateFixation
PricingStatus PricingStatus
CndnTermRateFixationDate CndnTermRateFixationDate
CndnTermRateFixationTime CndnTermRateFixationTime
CndnTermExchRateFixationDate CndnTermExchRateFixationDate
CndnTermExchRateFixationTime CndnTermExchRateFixationTime
FixedExchRateDate FixedExchRateDate
ExchRateMaturityDate ExchRateMaturityDate
MaturitySelectionRoutine I_VersionedLogisticDocument MaturitySelectionRoutine
DCSPeriodType DCSPeriodType
MiscellanousfieldsCommodityQuantity
CommodityUnit CommodityUnit
CmmdtyPriceExpsrQtyInMassUnit CmmdtyPriceExpsrQtyInMassUnit
CmmdtyPriceExpsrMassUnit CmmdtyPriceExpsrMassUnit
CmmdtyPriceExpsrQtyInVolUnit CmmdtyPriceExpsrQtyInVolUnit
CmmdtyPriceExpsrVolumeUnit CmmdtyPriceExpsrVolumeUnit
DCSReportingDate DCSReportingDate
QuantitySign QuantitySign
MTMConditionGroup MTMConditionGroup
MTMCalculationGroup MTMCalculationGroup
MTMAdjustmentType MTMAdjustmentType
MTMCalcGrpMarketPriceCondition MTMCalcGrpMarketPriceCondition
ConditionTermRateIsFixed ConditionTermRateIsFixed
ConditionTermExchRateIsFixed ConditionTermExchRateIsFixed
CommodityQuantityInTermUnit CommodityQuantityInTermUnit
OldMarketNormMaturityKeyDate OldMarketNormMaturityKeyDate
NewMarketNormMaturityKeyDate NewMarketNormMaturityKeyDate
FixedSpreadIsInverted FixedSpreadIsInverted
PositionReportsMTMConditionGroupCategory
MTMDataSourceType MTMDataSourceType
ConditionTermFactorNumerator ConditionTermFactorNumerator
ConditionTermFactorDenominator ConditionTermFactorDenominator
ContrPriceExposureIsExecuted ContrPriceExposureIsExecuted
CommodityPriceFixationStatus CommodityPriceFixationStatus
ImplicitFixationIsRelevant ImplicitFixationIsRelevant
TimeToMaturity I_VersionedLogisticDocument TimeToMaturity
NumberOfYearsOfTimeToMaturity
NumberOfMonthsOfTimeToMaturity
NumberOfDaysOfTimeToMaturity
MinimumConditionTermLimitRate MinimumConditionTermLimitRate
MaximumConditionTermLimitRate MaximumConditionTermLimitRate
ConditionTermLimitRateCurrency ConditionTermLimitRateCurrency
ConditionTermLimitRateQuantity ConditionTermLimitRateQuantity
CndnTermLimitRateQuantityUnit CndnTermLimitRateQuantityUnit
PriceSettingMethod PriceSettingMethod
PriceSettingMethodStatus PriceSettingMethodStatus
ValidToDateTime ValidToDateTime
PricingProcedure PricingProcedure
PricingConditionTerm PricingConditionTerm
CmmdtyRootDocExternalNumber CmmdtyRootDocExternalNumber
CmmdtyDocumentExternalNumber CmmdtyDocumentExternalNumber
ExcludeBasedate ExcludeBasedate
//@EndUserText.label: 'Versioned pricing data of logistic docs'

@ClientHandling.algorithm: #SESSION_VARIABLE
@AccessControl.authorizationCheck: #NOT_REQUIRED
//@Analytics.dataCategory: #FACT

@AbapCatalog: { sqlViewName: 'PVLOGPPOSR',
                compiler.compareFilter: true }
@VDM: { viewType: #COMPOSITE,
        private: true }
@ObjectModel.usageType:{  sizeCategory: #XL,
                          serviceQuality: #D,
                          dataClass: #TRANSACTIONAL }
@AbapCatalog.preserveKey:true
define view P_Vlogp_PositionRep
  with parameters
    P_MTMDataSelectionType     : cmm_vlogp_consumptiontype, -- Analytic consumption type
    P_DisplayView              : cds_view_uom,              -- Display UoM
    P_EndOfDaySnapshotFromDate : cmm_dend_cutdate,          -- Date of snapshot to be selected
    P_EndOfDaySnapshotToDate   : cmm_dend_cutdate           -- Date of snapshot to be selected
  as select from    I_VersionedLogisticDocument as vlogp
    left outer join I_TimeToMaturity            as _TimeToMaturity on vlogp.TimeToMaturity = _TimeToMaturity.TimeToMaturity
{
  key PricingKey,
  key Version,
  key PricingDocumentItem,
  key ConditionType,
  key SubConditionType,

      ValidityStartDate,
      ValidityStartDateTime,
      ValidityEndDate,
      ValidityEndDateTime,
      SourceTransactionEventDateTime,
      SourceTransacEventEndDateTime,
      EndOfDayBusinessEntityKey,
      MarketNormBusinessEntityKey,
      DeliveryPeriodStartDate,
      DeliveryPeriodEndDate,
      SpreadBusinessEntityKey,
      MaximumVersion,
      PreviousVersion,

      -- Parameter Columns
      cast(:P_MTMDataSelectionType as  cmm_vlogp_consumptiontype)               as MTMDataSelectionType,
      cast(:P_EndOfDaySnapshotFromDate as cmm_snapshot_start)                   as EndOfDaySnapshotFromDate,
      cast(:P_EndOfDaySnapshotToDate as cmm_snapshot_end)                       as EndOfDaySnapshotToDate,
      cast(:P_DisplayView as cds_view_uom)                                      as DisplayView,

      -- Business Document
      CompanyCode,
      SalesOrganization,
      DistributionChannel,
      Division,
      Creditor,
      SoldToParty,
      Material,
      PhysicalCommodity,
      Plant,
      StorageLocation,
      Batch,
      IncotermsClassification,
      IncotermsTransferLocation,
      ConditionApplication,
      SourceDocument,
      cast( SourceDocumentBusObjType as cds_vlogp_doc_type )                     as SourceDocumentBusObjType,
      OriginReferenceDocument,
      OriginReferenceDocumentItem,
      cast( OriginReferenceDocBusObjType as cds_vlogp_root_doctyp )              as OriginReferenceDocBusObjType,
      ReferenceDocument,
      ReferenceDocumentItem,
      cast( ReferenceDocBusObjType as cds_vlogp_predecessor_doctyp )             as ReferenceDocBusObjType,
      DeliveryDate,
      ExpectedPaymentDate,
      StatisticsCurrency,
      DocumentCurrency,
      ProfitCenter,
      BusinessArea,
      PurchasingOrganization,
      MaterialGroup,
      IsIntercompanyTransfer,

      -- Pricing
      ConditionCalculationType,
      ConditionRate,
      ConditionCurrency,
      ConditionQuantity,
      ConditionQuantityUnit,

      -- Commodity Pricing Engine
      QuotationPriceType,
      ConditionTermRate,
      @Semantics.currencyCode: true
      ConditionTermRateCurrency,
      ConditionTermRateQuantity,
      ConditionTermRateQuantityUnit,
      ConditionTermValue,
      @Semantics.currencyCode: true
      ConditionTermValueCurrency,
      ConditionTermRateMktCurrency,
      ConditionTermName,
      ConditionTermStatus,
      RoundingDecimalPlaces,
      ConditionTermRateIsRounded,
      ConditionTermRateNmrtr,
      ConditionTermRateDnmntr,
      ConditionTermExtensionUsage,
      CmmdtyForwardIndexTiming,

      -- Changing MaturitySelectionType(DCS_SELECTION_TYPE) to '2'(Manual) in case Implicit Fixation Flag is set to 'E'
      case when ImplicitFixationIsRelevant = 'E'
        then cast(2 as cpet_keydate_selection_type preserving type)
        else MaturitySelectionType
      end as MaturitySelectionType,

      QuotationPeriodReferenceDate,
      CommodityCurve,

      cast( substring(coalesce(CmmdtyLtstEvalKeyDateTime, '              '), 1, 8)
        as cpet_erp_latest_ekd_dat)                                              as CmmdtyLtstEvaluationKeyDate,

      -- Quotations / Commodity Curve
      QuotationKeyType,
      QuotationDateList,
      FutureRefQuotationDateList,
      QuotationPeriodStartDate,
      QuotationPeriodEndDate,
      -- Fixed terms may still refer to DCS, MIC etc.
      DerivativeContrSpecification,
      MarketIdentifierCode,
      FutureRefMarketIdentifierCode,
      MaturityKeyDate,
      BasisID,
      BasisType,

      QuotationGroup,
      QuotationGroupCalculationRule,
      PriceIsRealized,
      ConditionTermRateFixation,
      PricingStatus,
      CndnTermRateFixationDate,
      CndnTermRateFixationTime,
      CndnTermExchRateFixationDate,
      CndnTermExchRateFixationTime,
      FixedExchRateDate,
      ExchRateMaturityDate,
      vlogp.MaturitySelectionRoutine,
      DCSPeriodType,

      -- Miscellanous fields
      CommodityQuantity,
      CommodityUnit,
      CmmdtyPriceExpsrQtyInMassUnit,
      CmmdtyPriceExpsrMassUnit,
      CmmdtyPriceExpsrQtyInVolUnit,
      CmmdtyPriceExpsrVolumeUnit,

      DCSReportingDate,
      QuantitySign,
      MTMConditionGroup,
      MTMCalculationGroup,
      MTMAdjustmentType,
      MTMCalcGrpMarketPriceCondition,
      ConditionTermRateIsFixed,
      ConditionTermExchRateIsFixed,
      CommodityQuantityInTermUnit,
      OldMarketNormMaturityKeyDate,
      NewMarketNormMaturityKeyDate,
      FixedSpreadIsInverted,

      -- Position Reports
      MTMConditionGroupCategory,
      MTMDataSourceType,
      ConditionTermFactorNumerator,
      ConditionTermFactorDenominator,


-- Case when 'Record Type' = '01' or '03' or '04' and
--          'Maturity Selection Type' = 0 (Quotation Date Based) and
--          'Implicit Fixation relevant' = 'X' or 'Y'
--        then case 'Display Unit of Measure'
--              When 'P' or 'M' or 'V'
--                Then ->  1. Adjust respective quantity for Min/Max
--                         2. Adjust quantity from step 1 for Payable condition
--                            n_2581355: #2 is no longer needed. Factors are already applied during VLOGP update
--      Else case 'Display Unit of Measure'
--        When 'P' or 'M' or 'V'
--          Then -> Adjust quantity for Payable condition
--                  n_2581355: this is no longer needed. Factors are already applied during VLOGP update

      case when ( MTMDataSourceType = '01' or MTMDataSourceType = '03' or MTMDataSourceType = '04' )and
//                   MaturitySelectionType = 0 and

                  (ImplicitFixationIsRelevant = 'Y' or ImplicitFixationIsRelevant = 'X')
       then  case $parameters.P_DisplayView
       when 'P' then  division((CommodityQuantity  * ConditionTermFactorNumerator),ConditionTermFactorDenominator, 3)

       when 'M' then division((CmmdtyPriceExpsrQtyInMassUnit * ConditionTermFactorNumerator), ConditionTermFactorDenominator, 3)

       when 'V' then division((CmmdtyPriceExpsrQtyInVolUnit * ConditionTermFactorNumerator), ConditionTermFactorDenominator, 3)

       else division((CommodityQuantity * ConditionTermFactorNumerator),ConditionTermFactorDenominator,3) end
       else case $parameters.P_DisplayView
      when 'P' then CommodityQuantity
      when 'M' then CmmdtyPriceExpsrQtyInMassUnit
      when 'V' then CmmdtyPriceExpsrQtyInVolUnit
      else CommodityQuantity end
      end                                            as CommodityExposureQuantity,

      -- Fill CommodityExposureUnit as per parameter P_DisplayView
      @Semantics.unitOfMeasure: true
      case $parameters.P_DisplayView
      when 'P' then CommodityUnit
      when 'M' then CmmdtyPriceExpsrMassUnit
      when 'V' then CmmdtyPriceExpsrVolumeUnit
      else CommodityUnit
      end                                                                        as CommodityExposureUnit,

      ContrPriceExposureIsExecuted,
      CommodityPriceFixationStatus,
      ImplicitFixationIsRelevant,
      vlogp.TimeToMaturity,
      cast(_TimeToMaturity.NumberOfYearsOfTimeToMaturity as abap.int4)           as NumberOfYearsOfTimeToMaturity,
      cast(_TimeToMaturity.NumberOfMonthsOfTimeToMaturity as abap.int4)          as NumberOfMonthsOfTimeToMaturity,
      cast(_TimeToMaturity.NumberOfDaysOfTimeToMaturity as abap.int4)            as NumberOfDaysOfTimeToMaturity,

      MinimumConditionTermLimitRate,
      MaximumConditionTermLimitRate,
      ConditionTermLimitRateCurrency,
      ConditionTermLimitRateQuantity,
      CndnTermLimitRateQuantityUnit,
      PriceSettingMethod,
      PriceSettingMethodStatus,
      ValidToDateTime,
      PricingProcedure,
      PricingConditionTerm,
      CmmdtyRootDocExternalNumber,
      CmmdtyDocumentExternalNumber,
      ExcludeBasedate
}
where
  (
        -- Term Factor shoud always be available. Although Term Factor is relevant only for scenarios with condition having multiple terms
        -- But the factors are populated for scenarios with 1 Term as well.
        ConditionTermFactorNumerator   <> 0
    and ConditionTermFactorDenominator <> 0
  )
  -- Adjustment Type is only valid for spreads. Position report is not concerned with Spreads
  -- That's why I am trying to ignore all the records with Adjustment Type
  and   MTMAdjustmentType              =  ' '

  and ConditionTermRateNmrtr <> 0
  and ConditionTermRateDnmntr <> 0
  and vlogp.PriceIsRealized  =  ' ' -- Check to filter out the invoice-related lines, consistent with the MtM query output