P_ContrWithRelevantValidity

DDL: P_CONTRWITHRELEVANTVALIDITY SQL: PCRELVAL Type: view COMPOSITE Package: ODATA_MM_CTR_MAINTAIN

P-view to Fetch Purchase Contracts with Relevant Validity

P_ContrWithRelevantValidity is a Composite CDS View that provides data about "P-view to Fetch Purchase Contracts with Relevant Validity" in SAP S/4HANA. It reads from 2 data sources (I_PurchaseContractItem, I_PurContractClassification) and exposes 25 fields with key fields PurchaseContract, PurchaseContractItem, ReleaseOrder, ReleaseOrderItem. It has 1 association to related views. Part of development package ODATA_MM_CTR_MAINTAIN.

Data Sources (2)

SourceAliasJoin Type
I_PurchaseContractItem _PurchaseContractItem from
I_PurContractClassification _PurContractClassification inner

Associations (1)

CardinalityTargetAliasCondition
[1..*] I_PurchaseContractHistory _PurchaseContractHistory _PurchaseContractItem.PurchaseContract = _PurchaseContractHistory.PurchaseContract and _PurchaseContractItem.PurchaseContractItem = _PurchaseContractHistory.PurchaseContractItem

Annotations (8)

NameValueLevelField
AbapCatalog.sqlViewName PCRELVAL view
AbapCatalog.compiler.compareFilter true view
AccessControl.authorizationCheck #CHECK view
VDM.private true view
VDM.viewType #COMPOSITE view
ObjectModel.usageType.serviceQuality #B view
ObjectModel.usageType.sizeCategory #L view
ObjectModel.usageType.dataClass #MIXED view

Fields (25)

KeyFieldSource TableSource FieldDescription
KEY PurchaseContract I_PurchaseContractItem PurchaseContract
KEY PurchaseContractItem I_PurchaseContractItem PurchaseContractItem
KEY ReleaseOrder _PurchaseContractHistory ReleaseOrder
KEY ReleaseOrderItem _PurchaseContractHistory ReleaseOrderItem
Purchasingdocumentcategory I_PurchaseContractItem PurchasingObjectCategory
PurchaseContractType I_PurchaseContractItem PurchaseContractType
DocumentCurrency I_PurchaseContractItem DocumentCurrency
PurchaseContractTargetAmount I_PurchaseContractItem OutlineAgreementTargetAmount
ReleaseOrderItemOrderQuantity _PurchaseContractHistory ReleaseOrderItemOrderQuantity
PurchaseContractClassification I_PurContractClassification PurchaseContractClassification
TargetQuantity I_PurchaseContractItem TargetQuantity
TargetAmount I_PurchaseContractItem TargetAmount
ReleaseOrderCurrency I_PurchaseContractItem DocumentCurrency
curr283asReleaseOrderItemNetAmount
ReleaseOrderItemIsDeleted _PurchaseContractHistory ReleaseOrderItemIsDeleted
ReleaseOrderItemLastChgDate _PurchaseContractHistory ReleaseOrderItemLastChgDate
ReleaseOrderItemQuantityUnit _PurchaseContractHistory ReleaseOrderItemQuantityUnit
CreatedByUser I_PurchaseContractItem PurchaseContractCreatedByUser
ValidityStartDate I_PurchaseContractItem PurContrValidityStartDate
PurContrValidityDateDifference
Max_notexpired 3650
Min_expired 0
PurchasingGroup I_PurchaseContractItem PurchasingGroup
ActivePurchasingDocument I_PurchaseContractItem ActivePurchasingDocument
_PurchaseContractHistory _PurchaseContractHistory
@AbapCatalog.sqlViewName: 'PCRELVAL'
@AbapCatalog.compiler.compareFilter: true
@AccessControl.authorizationCheck: #CHECK
@VDM.private: true
@VDM.viewType: #COMPOSITE

@ObjectModel.usageType.serviceQuality: #B
@ObjectModel.usageType.sizeCategory: #L
@ObjectModel.usageType.dataClass: #MIXED
define view P_ContrWithRelevantValidity
  as select from I_PurchaseContractItem as _PurchaseContractItem
  // association        to R_PurchaseContract   as _PurContract on $projection.PurchaseContract = _PurContract.PurchaseContract

  inner join I_PurContractClassification as _PurContractClassification on  _PurchaseContractItem.PurchaseContractType = _PurContractClassification.PurchasingDocumentType
  //1905 - Consumption & Relevance

  association [1..*] to I_PurchaseContractHistory   as _PurchaseContractHistory  on  _PurchaseContractItem.PurchaseContract                        = _PurchaseContractHistory.PurchaseContract
                                                                                  and _PurchaseContractItem.PurchaseContractItem                    = _PurchaseContractHistory.PurchaseContractItem
{
  key _PurchaseContractItem.PurchaseContract,

  key _PurchaseContractItem.PurchaseContractItem,

  key _PurchaseContractHistory.ReleaseOrder,

  key _PurchaseContractHistory.ReleaseOrderItem,

      _PurchaseContractItem.PurchasingObjectCategory                                                                                                                   as Purchasingdocumentcategory,

      _PurchaseContractItem.PurchaseContractType,

      @Semantics.currencyCode:true
      _PurchaseContractItem.DocumentCurrency,

      _PurchaseContractItem.OutlineAgreementTargetAmount                                                                                                               as PurchaseContractTargetAmount,

      @Semantics.quantity.unitOfMeasure: 'ReleaseOrderItemQuantityUnit'
      //      _PurchaseContractItem._PurchaseContractHistory.ReleaseOrderItemOrderQuantity,


      _PurchaseContractHistory.ReleaseOrderItemOrderQuantity                                                                                                           as ReleaseOrderItemOrderQuantity,

      _PurContractClassification.PurchaseContractClassification,

      case
         when _PurContractClassification.PurchaseContractClassification = '1'
          then
             _PurchaseContractHistory.ReleaseOrderItemNetAmount
         else 0
       end                                                                                                                                                             as ConsumedValueForQuantity,

      _PurchaseContractItem.TargetQuantity,

      _PurchaseContractItem.TargetAmount,

      @Semantics.currencyCode:true
      _PurchaseContractItem.DocumentCurrency                                                                                                                           as ReleaseOrderCurrency,


      @Semantics.amount.currencyCode: '_PurContract.DocumentCurrency'
      @DefaultAggregation:#SUM
      cast( currency_conversion
        ( amount             => _PurchaseContractHistory.ReleaseOrderItemNetAmount,
          source_currency    => _PurchaseContractHistory.ReleaseOrderCurrency,
          target_currency    => _PurchaseContractItem.DocumentCurrency,
          exchange_rate_date => _PurchaseContractHistory.ReleaseOrderItemLastChgDate,
          exchange_rate_type => 'M',
          error_handling     => 'FAIL_ON_ERROR' ) as abap.curr( 28, 3 ) )                                                                                             as ReleaseOrderItemNetAmount,

      _PurchaseContractHistory.ReleaseOrderItemIsDeleted,

      _PurchaseContractHistory.ReleaseOrderItemLastChgDate,

      _PurchaseContractHistory.ReleaseOrderItemQuantityUnit,

      //_PurContractClassification,


      _PurchaseContractItem.PurchaseContractCreatedByUser                                                                                                              as CreatedByUser,

      case
      when _PurchaseContractItem.PurContrValidityEndDate is initial   then '99991231'
      else _PurchaseContractItem.PurContrValidityEndDate
      end                                                                                                                                                              as ValidityEndDate,

      _PurchaseContractItem.PurContrValidityStartDate                                                                                                                  as ValidityStartDate,

      case
      when _PurchaseContractItem.PurContrValidityEndDate is initial
      then dats_days_between(cast( substring( cast( tstmp_current_utctimestamp() as abap.char(17) ), 1, 8 ) as abap.dats), cast ('99991231' as abap.dats))
      else dats_days_between(cast( substring( cast( tstmp_current_utctimestamp() as abap.char(17) ), 1, 8 ) as abap.dats), _PurchaseContractItem.PurContrValidityEndDate)
      end                                                                                                                                                              as TimeVarianceInDays,

      dats_days_between(cast( substring( cast( tstmp_current_utctimestamp() as abap.char(17) ), 1, 8 ) as abap.dats), _PurchaseContractItem.PurContrValidityStartDate) as PurContrValidityDateDifference,

      case
      when _PurchaseContractItem.PurContrValidityEndDate is initial
      then dats_days_between(cast ('99991231' as abap.dats),_PurchaseContractItem.PurContrValidityStartDate)
      else dats_days_between(_PurchaseContractItem.PurContrValidityEndDate, _PurchaseContractItem.PurContrValidityStartDate)
      end                                                                                                                                                              as PurContrValidityTotalDays,

      3650                                                                                                                                                             as Max_notexpired,
      0                                                                                                                                                                as Min_expired,
      _PurchaseContractItem.PurchasingGroup,

      _PurchaseContractItem.ActivePurchasingDocument,

      //Assosiations

      _PurchaseContractHistory
}
where
  _PurchaseContractItem._PurchaseContract.PurchasingDocumentDeletionCode = ''