I_PREPAYMENTDOCFIXEDVALDATA

CDS View

PPMT Document Fixed pricing data

I_PREPAYMENTDOCFIXEDVALDATA is a CDS View in S/4HANA. PPMT Document Fixed pricing data. It contains 13 fields. 2 CDS views read from this table.

CDS Views using this table (2)

ViewTypeJoinVDMDescription
I_PrepaymentDocumentMarketData view_entity from COMPOSITE Market Value for the Prepayment Document
P_PrepaymentDocumentFixedVal view inner COMPOSITE Document Fixed Pricing

Fields (13)

KeyField CDS FieldsUsed in Views
KEY DocItemCommodityPricingUUID DocItemCommodityPricingUUID 1
KEY PrepaymentRefDocCondition PrepaymentRefDocCondition 1
KEY PrepaymentRefDocConditionItem PrepaymentRefDocConditionItem 1
CompanyCode CompanyCode 1
ConditionTermRateCurrency ConditionTermRateCurrency 1
Counterparty Counterparty 1
PrcgCndnTermFixationOptnStatus PrcgCndnTermFixationOptnStatus 1
PrepaymentDocCmmdtyMktQtyUnit PrepaymentDocCmmdtyMktQtyUnit 1
PrepaymentRefDocFixedPriceCrcy PrepaymentRefDocFixedPriceCrcy 2
PrepaymentRefDocMarketPrcCrcy PrepaymentRefDocMarketPrcCrcy 1
PrepaymentTotalAmtIsFixedPrice PrepaymentTotalAmtIsFixedPrice 1
PrepaymentWrkCtrDocPricingOptn PrepaymentWrkCtrDocPricingOptn 2
TradingContract TradingContract 1
@AbapCatalog.viewEnhancementCategory: [#NONE]
@AccessControl.authorizationCheck: #NOT_REQUIRED
@EndUserText.label: 'PPMT Document Fixed pricing data'
@Metadata.ignorePropagatedAnnotations: true
@VDM.viewType                         : #COMPOSITE
@ObjectModel.usageType:{
  serviceQuality: #D,
  sizeCategory: #L,
  dataClass: #MIXED
}
-------------------------------------------------------------------------------------------------------
-- This view will Identify Fixed Prices, Market Quantity and Market Unit Prices based on document data
-- Fixed Price      : When Fixed rate is maintained in document for quantity
-- Market Quantity  : The quantity for which no price fixation is maintained
-- Market Unit Price: From Quotation tables, using DCSIS + MIC + Key Date + Basis ID + End Date
--                                    DCSID & MIC will be derrived from Formula Key and Condition Type

-- Market Unit Price will be converted to Document Item currency, if in different currency
--    If Fixed rate is available, that will be used, other standard currency conversion
-------------------------------------------------------------------------------------------------------

define view entity I_PrepaymentDocFixedValData
  as select from I_PpaytDocCmmdtyPrcVal as CPEPricingVal

  association [0..1] to I_PpaytDocFutureMktData   as _FQuotationPrice  on  _FQuotationPrice.DerivativeContrSpecification = CPEPricingVal.DerivativeContrSpecification
                                                                       and _FQuotationPrice.MarketIdentifierCode         = CPEPricingVal.MarketIdentifierCode
                                                                       and _FQuotationPrice.MaturityKeyDate              = CPEPricingVal.MaturityKeyDate
                                                                       and _FQuotationPrice.QuotationPriceType           = CPEPricingVal.QuotationPriceType

  association [0..1] to I_PpaytDocBasisMktData    as _BQuotationPrice  on  _BQuotationPrice.DerivativeContrSpecification = CPEPricingVal.DerivativeContrSpecification
                                                                       and _BQuotationPrice.MarketIdentifierCode         = CPEPricingVal.MarketIdentifierCode
                                                                       and _BQuotationPrice.BasisID                      = CPEPricingVal.BasisID
                                                                       and _BQuotationPrice.BasisType                    = CPEPricingVal.BasisType
                                                                       and _BQuotationPrice.BasisID                      is not initial
                                                                       and _BQuotationPrice.QuotationPriceType           = CPEPricingVal.QuotationPriceType

  association [0..1] to I_PpaytDocSecBasisMktData as _SBQuotationPrice on  _SBQuotationPrice.BasisID            = CPEPricingVal.BasisID
                                                                       and _SBQuotationPrice.BasisID            is not initial
                                                                       and _SBQuotationPrice.BasisType          = CPEPricingVal.BasisType
                                                                       and _SBQuotationPrice.QuotationPriceType = CPEPricingVal.QuotationPriceType

{
  key CPEPricingVal.TradingContract,
  key CPEPricingVal.PrepaymentRefDocCondition,
  key CPEPricingVal.PrepaymentRefDocConditionItem,
  key CPEPricingVal.DocItemCommodityPricingUUID,
  key CPEPricingVal.ConditionType,
      CPEPricingVal.CompanyCode,
      CPEPricingVal.Counterparty,
      CPEPricingVal.CalculationPeriodEndDate,
      CPEPricingVal.MaturityKeyDate,
      CPEPricingVal.DerivativeContrSpecification,
      CPEPricingVal.MarketIdentifierCode,
      CPEPricingVal.BasisType,
      CPEPricingVal.BasisID,
      --      ACMPrcgCndnTermInputPrice: Fixed Price maintained in Document, in Document Currency
      @Semantics.amount.currencyCode: 'PrepaymentRefDocFixedPriceCrcy'
      case when CPEPricingVal.ACMPrcgCndnTermInputPrice is not initial
           then CPEPricingVal.PrepaymentRefDocFixedPrice
           else cast( 0 as abap.curr(15,2) ) end   as PrepaymentRefDocFixedPrice,
      CPEPricingVal.PrepaymentRefDocFixedPriceCrcy,

      CPEPricingVal.PrcgCndnTermFixationOptnStatus,
      --      ConditionTermExtensionUsage: A = Reminder Unpriced Quantity (NPE)
      --                                   B = Fixed Pricing Quantity (FLAT/NFE/NBE)
      CPEPricingVal.ConditionTermExtensionUsage    as ConditionTermExtensionUsage,
      --      PrcgCndnTermFixationOptnStatus: A = No Pricing for this Item
      --                                      B = Partial Pricing for this Item
      --                                      C = Full Pricing for this Item

      @Semantics.quantity.unitOfMeasure: 'PrepaymentDocCmmdtyMktQtyUnit'
      case when ( CPEPricingVal.PrcgCndnTermFixationOptnStatus = 'B'
                and ( ( CPEPricingVal.ACMPrcgCndnTermInputPrice is initial
                        and $projection.ConditionTermExtensionUsage = 'B' )
                      or  ( $projection.ConditionTermExtensionUsage = 'A' ) ) )
               or
                ( CPEPricingVal.PrcgCndnTermFixationOptnStatus = 'C' and
                  $projection.ConditionTermExtensionUsage = 'B'      and
                  CPEPricingVal.ConditionTermStatus <> '01' )
           then CPEPricingVal.CalcdPrcgConditionTermQuantity

         when CPEPricingVal.PrcgCndnTermFixationOptnStatus = 'A'
         then CPEPricingVal.CndnTrmFixationOptnNonFixedQty

         else cast( 0 as abap.quan(15,3) ) end     as PrepaymentDocCmmdtyMarketQty,

      CPEPricingVal.PrcgCndnFmlaCmmdtyQuantityUnit as PrepaymentDocCmmdtyMktQtyUnit,

      --      Market Price/Quotation Price from Quotation tables
      @Semantics.amount.currencyCode: 'PrepaymentRefDocMarketPrcCrcy'
      case when _FQuotationPrice.PrepaymentRefDocFuturePrice is not initial
           then _FQuotationPrice.PrepaymentRefDocFuturePrice

           when _BQuotationPrice.PrepaymentRefDocBasisPrice is not initial
           then _BQuotationPrice.PrepaymentRefDocBasisPrice

           when _SBQuotationPrice.PrepaymentRefDocSecBsPrice is not initial
           then _SBQuotationPrice.PrepaymentRefDocSecBsPrice

           else cast( 0 as abap.curr(15,2) ) end   as PrepaymentRefDocMarketPrice,

      case when _FQuotationPrice.PrepaymentRefDocFuturePrcCrcy is not initial
           then _FQuotationPrice.PrepaymentRefDocFuturePrcCrcy

           when _BQuotationPrice.PrepaymentRefDocBasisPrcCrcy is not initial
           then _BQuotationPrice.PrepaymentRefDocBasisPrcCrcy

           when _SBQuotationPrice.PrepaymentRefDocSecBsPrcCrcy is not initial
           then _SBQuotationPrice.PrepaymentRefDocSecBsPrcCrcy

           else cast('' as abap.cuky(5) ) end      as PrepaymentRefDocMarketPrcCrcy,

      --      Exchange rates between currencies
      CPEPricingVal.PrcgCndnTermCnvrsnFxdExchRate,
      CPEPricingVal.PrcgCndnTermCnvrsnSourceCrcy,
      CPEPricingVal.PrcgCndnTermCnvrsnTargetCrcy,

      --      Market Price/Quotation Price from Quotation tables: Future
      @Semantics.amount.currencyCode: 'PrepaymentRefDocFixedPriceCrcy'
 cast(cast(  case when _FQuotationPrice.PrepaymentRefDocFuturePrice is not initial and
                  _FQuotationPrice.PrepaymentRefDocFuturePrcCrcy = $projection.prepaymentrefdocfixedpricecrcy
             then curr_to_decfloat_amount(_FQuotationPrice.PrepaymentRefDocFuturePrice)

             when _FQuotationPrice.PrepaymentRefDocFuturePrice is not initial and
                  _FQuotationPrice.PrepaymentRefDocFuturePrcCrcy = $projection.prcgcndntermcnvrsnsourcecrcy and
                  $projection.prepaymentrefdocfixedpricecrcy   = $projection.prcgcndntermcnvrsntargetcrcy
             then curr_to_decfloat_amount(_FQuotationPrice.PrepaymentRefDocFuturePrice) * $projection.prcgcndntermcnvrsnfxdexchrate

             when _FQuotationPrice.PrepaymentRefDocFuturePrice is not initial and
                  ( _FQuotationPrice.PrepaymentRefDocFuturePrcCrcy <> $projection.prcgcndntermcnvrsnsourcecrcy or
                    $projection.prepaymentrefdocfixedpricecrcy <> $projection.prcgcndntermcnvrsntargetcrcy )
             then currency_conversion( amount             => curr_to_decfloat_amount(_FQuotationPrice.PrepaymentRefDocFuturePrice),
                                       source_currency    => _FQuotationPrice.PrepaymentRefDocFuturePrcCrcy,
                                       target_currency    => $projection.prepaymentrefdocfixedpricecrcy,
                                       exchange_rate_date => $projection.maturitykeydate,
                                       error_handling     => 'SET_TO_NULL' )

             else  0 end as abap.dec(15,2))  as abap.curr(15,2) )       as PrepaymentRefDocFuturePrice,

      --      Market Price/Quotation Price from Quotation tables: Basis
      @Semantics.amount.currencyCode: 'PrepaymentRefDocFixedPriceCrcy'
 cast(cast( case when _BQuotationPrice.PrepaymentRefDocBasisPrice is not initial and
                 _BQuotationPrice.PrepaymentRefDocBasisPrcCrcy = $projection.prepaymentrefdocfixedpricecrcy
            then curr_to_decfloat_amount(_BQuotationPrice.PrepaymentRefDocBasisPrice)

            when _BQuotationPrice.PrepaymentRefDocBasisPrice is not initial and
                 _BQuotationPrice.PrepaymentRefDocBasisPrcCrcy = $projection.prcgcndntermcnvrsnsourcecrcy and
                 $projection.prepaymentrefdocfixedpricecrcy   = $projection.prcgcndntermcnvrsntargetcrcy
            then curr_to_decfloat_amount(_BQuotationPrice.PrepaymentRefDocBasisPrice) * $projection.prcgcndntermcnvrsnfxdexchrate

            when _BQuotationPrice.PrepaymentRefDocBasisPrice is not initial and
                 ( _BQuotationPrice.PrepaymentRefDocBasisPrcCrcy <> $projection.prcgcndntermcnvrsnsourcecrcy or
                   $projection.prepaymentrefdocfixedpricecrcy <> $projection.prcgcndntermcnvrsntargetcrcy )
            then currency_conversion( amount             => curr_to_decfloat_amount(_BQuotationPrice.PrepaymentRefDocBasisPrice),
                                      source_currency    => _BQuotationPrice.PrepaymentRefDocBasisPrcCrcy,
                                      target_currency    => $projection.prepaymentrefdocfixedpricecrcy,
                                      exchange_rate_date => $projection.calculationperiodenddate,
                                      error_handling     => 'SET_TO_NULL' )

            when _SBQuotationPrice.PrepaymentRefDocSecBsPrice is not initial and
                 _SBQuotationPrice.PrepaymentRefDocSecBsPrcCrcy = $projection.prepaymentrefdocfixedpricecrcy
            then curr_to_decfloat_amount(_SBQuotationPrice.PrepaymentRefDocSecBsPrice)

            when _SBQuotationPrice.PrepaymentRefDocSecBsPrice is not initial and
                 _SBQuotationPrice.PrepaymentRefDocSecBsPrcCrcy = $projection.prcgcndntermcnvrsnsourcecrcy and
                 $projection.prepaymentrefdocfixedpricecrcy   = $projection.prcgcndntermcnvrsntargetcrcy
            then curr_to_decfloat_amount(_SBQuotationPrice.PrepaymentRefDocSecBsPrice) * $projection.prcgcndntermcnvrsnfxdexchrate

            when _SBQuotationPrice.PrepaymentRefDocSecBsPrice is not initial and
                 ( _SBQuotationPrice.PrepaymentRefDocSecBsPrcCrcy <> $projection.prcgcndntermcnvrsnsourcecrcy or
                   $projection.prepaymentrefdocfixedpricecrcy <> $projection.prcgcndntermcnvrsntargetcrcy )
            then currency_conversion( amount             => curr_to_decfloat_amount(_SBQuotationPrice.PrepaymentRefDocSecBsPrice),
                                      source_currency    => _SBQuotationPrice.PrepaymentRefDocSecBsPrcCrcy,
                                      target_currency    => $projection.prepaymentrefdocfixedpricecrcy,
                                      exchange_rate_date => $projection.calculationperiodenddate,
                                      error_handling     => 'SET_TO_NULL' )
            else 0  end as abap.dec(15,2))  as abap.curr(15,2) )         as PrepaymentRefDocBasisPrice,

      --      Market Price/Quotation Price from CPE tables, uncoverted
      @Semantics.amount.currencyCode: 'ConditionTermRateCurrency'
      CPEPricingVal.ConditionTermRate,
      CPEPricingVal.ConditionTermRateCurrency,

      --      Market Price/Quotation Price from CPE tables, in document currency
      @Semantics.amount.currencyCode: 'PrepaymentRefDocFixedPriceCrcy'
     cast( cast( case when CPEPricingVal.ConditionTermRateCurrency is not initial and
                 $projection.prepaymentrefdocfixedpricecrcy = CPEPricingVal.ConditionTermRateCurrency
            then curr_to_decfloat_amount(CPEPricingVal.ConditionTermRate)

           when CPEPricingVal.ConditionTermRateCurrency is not initial and
                $projection.prepaymentrefdocfixedpricecrcy <> CPEPricingVal.ConditionTermRateCurrency
            then  round( (curr_to_decfloat_amount(CPEPricingVal.ConditionTermRate) * $projection.prcgcndntermcnvrsnfxdexchrate), 3)

            else 0 end as abap.dec(15,2))  as abap.curr(15,2) )         as PrcgConditionTermPrice,

      --      MTMCalculationGroup: B = Basis, F = Future
      CPEPricingVal.MTMCalculationGroup            as MTMCalculationGroup,

      cast( case when CPEPricingVal.PrcgCndnTermFixationOptnStatus = 'C'
                 then 'X'
                 else '' end  as boole_d )         as PrepaymentTotalAmtIsFixedPrice,

      CPEPricingVal.PrepaymentWrkCtrDocPricingOptn
}