P_ThirdPartyAvaily

DDL: P_THIRDPARTYAVAILY SQL: PTPAVAILY Type: view CONSUMPTION

Third Party Availability

P_ThirdPartyAvaily is a Consumption CDS View that provides data about "Third Party Availability" in SAP S/4HANA. It reads from 4 data sources (I_PurchaseOrderItem, I_Schedgline, I_Purchaserequisitionitem, I_PurchaseOrderScheduleLine) and exposes 12 fields with key fields Material, Plant, Subcontractor, Plant, Subcontractor.

Data Sources (4)

SourceAliasJoin Type
I_PurchaseOrderItem a from
I_Schedgline b union_all
I_Purchaserequisitionitem c union_all
I_PurchaseOrderScheduleLine PurchaseOrderScheduleLine inner

Annotations (11)

NameValueLevelField
AbapCatalog.sqlViewName PTPAVAILY view
VDM.private true view
VDM.viewType #CONSUMPTION view
AbapCatalog.compiler.compareFilter true view
AccessControl.authorizationCheck #NOT_ALLOWED view
EndUserText.label Third Party Availability view
ClientHandling.algorithm #SESSION_VARIABLE view
ObjectModel.usageType.serviceQuality #C view
ObjectModel.usageType.sizeCategory #XL view
ObjectModel.usageType.dataClass #TRANSACTIONAL view
Metadata.ignorePropagatedAnnotations true view

Fields (12)

KeyFieldSource TableSource FieldDescription
KEY Material I_PurchaseOrderItem Material
KEY Plant I_PurchaseOrderItem Plant
KEY Subcontractor I_PurchaseOrderItem Subcontractor
OrderQuantity I_PurchaseOrderScheduleLine OpenPurchaseOrderQuantity
Material
KEY Plant _SchedgAgrmtItm Plant
KEY Subcontractor _SchedgAgrmtItm Subcontractor
OrderQuantity ScheduleLineOpenQuantity
KEY Plant Plant
KEY Subcontractor Subcontractor
OrderQuantity
OrderQuantityUnit BaseUnit
@AbapCatalog.sqlViewName: 'PTPAVAILY'
@VDM.private: true
@VDM.viewType: #CONSUMPTION

@AbapCatalog.compiler.compareFilter: true
@AccessControl.authorizationCheck: #PRIVILEGED_ONLY
--@AccessControl.authorizationCheck: #NOT_ALLOWED
@EndUserText.label: 'Third Party Availability'
@ClientHandling.algorithm: #SESSION_VARIABLE

@ObjectModel.usageType.serviceQuality: #C
@ObjectModel.usageType.sizeCategory: #XL
@ObjectModel.usageType.dataClass: #TRANSACTIONAL

@Metadata.ignorePropagatedAnnotations: true

define view P_ThirdPartyAvaily

  as select from I_PurchaseOrderItem as a
 
    inner join I_PurchaseOrderScheduleLine as PurchaseOrderScheduleLine on a.PurchaseOrder     = PurchaseOrderScheduleLine.PurchaseOrder     // 3066400

                                                                       and a.PurchaseOrderItem = PurchaseOrderScheduleLine.PurchaseOrderItem // 3066400                                                                         and a.PurchaseOrderItem = _GoodsReceipt.PurchaseOrderItem

  
{
      //a

  key a.Material,
  key a.Plant,
  key a.Subcontractor,

      PurchaseOrderScheduleLine.OpenPurchaseOrderQuantity as OrderQuantity, // 3066400


      a.PurchaseOrderQuantityUnit as OrderQuantityUnit
}

where
  SupplierIsSubcontractor = 'X'
  and Subcontractor <> ''
  and IsCompletelyDelivered = ''
  and PurchasingDocumentDeletionCode = ''

union all select from I_Schedgline as b
{
      //b

  key _SchedgAgrmtItm.Material,
  key _SchedgAgrmtItm.Plant,
  key _SchedgAgrmtItm.Subcontractor as Subcontractor,

      //@Semantics.quantity.unitOfMeasure: 'BaseUnit'

      @Semantics.quantity.unitOfMeasure: 'OrderQuantityUnit'
      //ScheduleLineOrderQuantity     as OrderQuantity,

      ScheduleLineOpenQuantity        as OrderQuantity,
      
      @Semantics.unitOfMeasure: true
      _SchedgAgrmtItm.OrderQuantityUnit
}

where

  _SchedgAgrmtItm.SupplierIsSubcontractor = 'X'
  and _Schedgagrmthdr.SchedulingAgreement is not null
  and _SchedgAgrmtItm.SchedulingAgreement is not null

union all select from I_Purchaserequisitionitem as c
{
      //c

  key Material,
  key Plant,
  key Subcontractor,

      //RequestedQuantity as OrderQuantity,

      RequestedQuantity - OrderedQuantity as OrderQuantity,

      BaseUnit          as OrderQuantityUnit

}

where Subcontractor <> ''
and PurchasingDocument = ''
and IsDeleted = ''

//  as select distinct from I_SubcontractingComponent

//

//

//  /* Associations to Third Party Stock Balance Availability fields */

////

////

////  association to P_ThirdPartyPurReqnAvaily     as _ThirdPartyPurReqnAvaily     on  $projection.Material = _ThirdPartyPurReqnAvaily.Material

////                                                                               and $projection.Plant    = _ThirdPartyPurReqnAvaily.Plant

////                                                                               and $projection.Supplier = _ThirdPartyPurReqnAvaily.Subcontractor

////

////  association to P_ThirdPartySchedgAgrmtAvaily as _ThirdPartySchedgAgrmtAvaily on  $projection.Material = _ThirdPartySchedgAgrmtAvaily.Material

////                                                                               and $projection.Plant    = _ThirdPartySchedgAgrmtAvaily.Plant

////                                                                               and $projection.Supplier = _ThirdPartySchedgAgrmtAvaily.Subcontractor

////

////  association to P_ThirdPartyPurOrdAvaily      as _ThirdPartyPurOrdAvaily      on  $projection.Material = _ThirdPartyPurOrdAvaily.Material

////                                                                               and $projection.Plant    = _ThirdPartyPurOrdAvaily.Plant

////                                                                               and $projection.Supplier = _ThirdPartyPurOrdAvaily.Subcontractor

//

//

//

//

//{

//

//  key Material,

//

//  key Plant,

//

//  key Supplier,

//

//

//

//

//      //2a. 3rd party Subcontracting POs

////      _ThirdPartyPurOrdAvaily.OrderQuantity,

////

////      //2b. 3rd party Subcontracting SAs

////      _ThirdPartySchedgAgrmtAvaily.OrderQuantity                                                        as             SAQuantity,

////

////      //2c. 3rd party Subcontracting PRs

////      _ThirdPartyPurReqnAvaily.RequestedQuantity,

//

//      //2. Total External deliveries (PO + SA + PR)

//      /*

//      This case statement allows the addition of the above 3 quantities, irrespective of whether one is null or not.

//      */

////      case when _ThirdPartySchedgAgrmtAvaily.OrderQuantity is null and _ThirdPartyPurOrdAvaily.OrderQuantity is null

////                and _ThirdPartyPurReqnAvaily.RequestedQuantity is null

////                   then cast (0 as abap.quan( 13, 3 ))

////           when _ThirdPartySchedgAgrmtAvaily.OrderQuantity is null and _ThirdPartyPurReqnAvaily.RequestedQuantity is null

////                   then _ThirdPartyPurOrdAvaily.OrderQuantity

////           when _ThirdPartyPurOrdAvaily.OrderQuantity is null and _ThirdPartyPurReqnAvaily.RequestedQuantity is null

////                   then _ThirdPartySchedgAgrmtAvaily.OrderQuantity

////           when _ThirdPartySchedgAgrmtAvaily.OrderQuantity is null and _ThirdPartyPurOrdAvaily.OrderQuantity is null

////                   then _ThirdPartyPurReqnAvaily.RequestedQuantity

////

////           when _ThirdPartySchedgAgrmtAvaily.OrderQuantity is null

////                then (_ThirdPartyPurOrdAvaily.OrderQuantity + _ThirdPartyPurReqnAvaily.RequestedQuantity)

////           when _ThirdPartyPurOrdAvaily.OrderQuantity is null

////                then (_ThirdPartySchedgAgrmtAvaily.OrderQuantity + _ThirdPartyPurReqnAvaily.RequestedQuantity)

////           when _ThirdPartyPurReqnAvaily.RequestedQuantity is null

////                then (  _ThirdPartySchedgAgrmtAvaily.OrderQuantity + _ThirdPartyPurOrdAvaily.OrderQuantity)

////

////           else

////                  (_ThirdPartySchedgAgrmtAvaily.OrderQuantity + _ThirdPartyPurOrdAvaily.OrderQuantity + _ThirdPartyPurReqnAvaily.RequestedQuantity )

////

////

////                   end                                                                                  as             DirectDeliveries

//

//

//}

//

//

/*+[internal] {
"BASEINFO":
{
"FROM":
[
"I_PURCHASEORDERITEM",
"I_PURCHASEORDERSCHEDULELINE",
"I_PURCHASEREQUISITIONITEM",
"I_SCHEDGAGRMTHDR",
"I_SCHEDGAGRMTITM",
"I_SCHEDGLINE"
],
"ASSOCIATED":
[],
"BASE":
[],
"ANNO_REF":
[],
"SCALAR_FUNCTION":
[],
"VERSION":0,
"ANNOREF_EVALUATION_ERROR":""
}
}*/