P_SalesOrderInDelivItmDueDate

DDL: P_SALESORDERINDELIVITMDUEDATE SQL: PSODUEDATEREUSE8 Type: view COMPOSITE

P_SalesOrderInDelivItmDueDate is a Composite CDS View in SAP S/4HANA. It reads from 3 data sources (I_DeliveryDocument, I_DeliveryDocumentItem, I_SalesDocumentBasic) and exposes 31 fields with key fields SalesOrder, DeliveryDocument, DeliveryDocumentItem.

Data Sources (3)

SourceAliasJoin Type
I_DeliveryDocument DDH from
I_DeliveryDocumentItem DDI inner
I_SalesDocumentBasic SOH inner

Annotations (8)

NameValueLevelField
ClientHandling.algorithm #SESSION_VARIABLE view
ObjectModel.usageType.dataClass #MIXED view
ObjectModel.usageType.serviceQuality #D view
ObjectModel.usageType.sizeCategory #S view
VDM.private true view
VDM.viewType #COMPOSITE view
AccessControl.authorizationCheck #NOT_REQUIRED view
AbapCatalog.sqlViewName PSODUEDATEREUSE8 view

Fields (31)

KeyFieldSource TableSource FieldDescription
KEY SalesOrder I_SalesDocumentBasic SalesDocument
KEY DeliveryDocument I_DeliveryDocumentItem DeliveryDocument
KEY DeliveryDocumentItem I_DeliveryDocumentItem DeliveryDocumentItem
SalesOrganization I_SalesDocumentBasic SalesOrganization
DistributionChannel I_SalesDocumentBasic DistributionChannel
OrganizationDivision I_SalesDocumentBasic OrganizationDivision
SalesDocumentType I_SalesDocumentBasic SalesDocumentType
RequestedDeliveryDate I_SalesDocumentBasic RequestedDeliveryDate
OverallSDProcessStatus I_SalesDocumentBasic OverallSDProcessStatus
SalesDocumentDate I_SalesDocumentBasic SalesDocumentDate
SalesGroup I_SalesDocumentBasic SalesGroup
SalesOffice I_SalesDocumentBasic SalesOffice
SoldToParty I_SalesDocumentBasic SoldToParty
PurchaseOrderByCustomer VBKD PurchaseOrderByCustomer
DeliveryBlockReason I_DeliveryDocument DeliveryBlockReason
OverallGoodsMovementStatus I_DeliveryDocument OverallGoodsMovementStatus
GoodsMovementStatus I_DeliveryDocumentItem GoodsMovementStatus
OverallDelivReltdBillgStatus I_DeliveryDocument OverallDelivReltdBillgStatus
ItemGeneralIncompletionStatus I_DeliveryDocumentItem ItemGeneralIncompletionStatus
ItemBillingIncompletionStatus I_DeliveryDocumentItem ItemBillingIncompletionStatus
ItemPackingIncompletionStatus I_DeliveryDocumentItem ItemPackingIncompletionStatus
ItemPickingIncompletionStatus I_DeliveryDocumentItem ItemPickingIncompletionStatus
ItemDeliveryIncompletionStatus I_DeliveryDocumentItem ItemDeliveryIncompletionStatus
ItemGdsMvtIncompletionSts I_DeliveryDocumentItem ItemGdsMvtIncompletionSts
TrdCmplncEmbargoSts I_DeliveryDocumentItem TrdCmplncEmbargoSts
TrdCmplncSnctndListChkSts
TrdCmplncLegalControlSts I_DeliveryDocumentItem TrdCmplncLegalControlSts
PlannedGoodsIssueDate I_DeliveryDocument PlannedGoodsIssueDate
BillingDocumentDate I_DeliveryDocument BillingDocumentDate
OverallPickingStatus I_DeliveryDocument OverallPickingStatus
casewhenCASE1TPStatusisopen
@ClientHandling.algorithm: #SESSION_VARIABLE 
@ObjectModel.usageType.dataClass: #MIXED
@ObjectModel.usageType.serviceQuality: #D
@ObjectModel.usageType.sizeCategory: #S
@VDM.private: true
@VDM.viewType: #COMPOSITE
@AccessControl.authorizationCheck:#NOT_REQUIRED
@AbapCatalog.sqlViewName: 'PSODUEDATEREUSE8'

/*
DOCUMENTATION ( 4.3.2015 by AT):
---------------------------------
  P_SalesOrderInDelivItmDueDate encapsulates the due date logic (and the basic fields like 
  SalesOrder, SalesOrganization, ...) for issue type DE03 on ITEM level.
      
  The consuming cds views (that are the issue models DE03) typically cover a issue specific filtering (based 
  on the status fields below). Furthermore they'll add some formal attributes like issue or issue category.
  
  DueDate logic:
  - considered fields are
        TransportationPlanningStatus, TransportationPlanningDate,
        OverallPickingStatus, PickingDate,
        PlannedGoodsIssueDate
  - in case one of TransportationPlanning or Picking is open, the Date corresponding to the open status is chosen
  - in case of both of TransportationPlanning or Picking is open, the smallest date of both is chosen
  - in case of both of TransportationPlanning or Picking are completed/irrelevant, the PlannedGoodsIssueDate is chosen

  Note (added 27.9.2019 by AT):
  - all item status (that were missing in P_SalesOrderInDelivDueDate) now also in P_SalesOrderInDelivDueDate
  - compare note of same date in P_SalesOrderInDelivDueDate for more details
  - THIS model is now no longer used (=obsolete)

*/

define view P_SalesOrderInDelivItmDueDate

as select from  I_DeliveryDocument as DDH

inner join I_DeliveryDocumentItem as DDI on  
  DDH.DeliveryDocument = DDI.DeliveryDocument /*and
  ( DDI.ReferenceSDDocumentCategory = 'C' or
    DDI.ReferenceSDDocumentCategory = 'I' or
    DDI.ReferenceSDDocumentCategory = 'L' ) */
    
inner join I_SalesDocumentBasic as SOH on                -- I_SalesDocument
  DDI.ReferenceSDDocument = SOH.SalesDocument /*and
  ( DDI.ReferenceSDDocumentCategory = 'C'  or
    DDI.ReferenceSDDocumentCategory = 'I'  or
    DDI.ReferenceSDDocumentCategory = 'L' )*/
 left outer to one join P_SalesDocumentBusinessData as VBKD on  SOH.SalesDocument  = VBKD.SlsDocBusinessData
                                                  and  VBKD.SlsDocBusinessDataItem = '000000'
{
  //Key

  key SOH.SalesDocument as SalesOrder,
  key DDI.DeliveryDocument,
  key DDI.DeliveryDocumentItem,    
      
  //Organization

  SOH.SalesOrganization,
  SOH.DistributionChannel,
  SOH.OrganizationDivision,
  SOH.SalesDocumentType,
   
   //Misc

   SOH.RequestedDeliveryDate,
   SOH.OverallSDProcessStatus,
   SOH.SalesDocumentDate,
   SOH.SalesGroup,
   SOH.SalesOffice,
   SOH.SoldToParty,
   VBKD.PurchaseOrderByCustomer,   
   
  //Status&Reasons

  DDH.DeliveryBlockReason,
  DDH.OverallGoodsMovementStatus,
  DDI.GoodsMovementStatus ,
  DDH.OverallDelivReltdBillgStatus,
  
  DDI.ItemGeneralIncompletionStatus,
  DDI.ItemBillingIncompletionStatus,
  DDI.ItemPackingIncompletionStatus,
  DDI.ItemPickingIncompletionStatus,
  DDI.ItemDeliveryIncompletionStatus,
  DDI.ItemGdsMvtIncompletionSts,
  
  DDI.TrdCmplncEmbargoSts,   --AT23.9.2019 Trade Compliance Issue DE07 CE2002
  DDI.TrdCmplncSnctndListChkSts,
  DDI.TrdCmplncLegalControlSts,
  
  //Dates

  DDH.PlannedGoodsIssueDate,
  DDH.BillingDocumentDate,    
  DDH.OverallPickingStatus,
  
  case when  --CASE 1: TPStatus is open, OPStatus is open
        ( DDH.TransportationPlanningStatus = 'A' or DDH.TransportationPlanningStatus = 'B' ) and 
        ( DDH.OverallPickingStatus = 'A'         or DDH.OverallPickingStatus = 'B' )
       then
                  case when
                        DDH.PickingDate < DDH.TransportationPlanningDate
                       then  DDH.PickingDate
                       else  DDH.TransportationPlanningDate
                  end
       
       else  case when -- CASE 2: TPStatus is open, OPStatus is completed/irrelevant
                    ( DDH.TransportationPlanningStatus = 'A' or DDH.TransportationPlanningStatus = 'B' ) and 
                    ( DDH.OverallPickingStatus = 'C'         or  DDH.OverallPickingStatus = ' ' )
                  then  DDH.TransportationPlanningDate
                 
                  else  case when -- CASE 3: TPStatus is completed/irrelevant, OPStatus is open                       
                              ( DDH.TransportationPlanningStatus = 'C'  or DDH.TransportationPlanningStatus = ' ' ) and
                              ( DDH.OverallPickingStatus = 'A'          or DDH.OverallPickingStatus = 'B' )
                             then  DDH.PickingDate
                             
                             else case when -- CASE 4: TPStatus is completed/irrelevant, OPStatus is completed/irrelevant                       
                                         ( DDH.TransportationPlanningStatus = 'C' or DDH.TransportationPlanningStatus = ' ' ) and 
                                         ( DDH.OverallPickingStatus = 'C'         or DDH.OverallPickingStatus = ' ' )
                                       then  DDH.PlannedGoodsIssueDate
                                       end -- of CASE4
                             end -- of CASE3
                  end -- of CASE2
       end -- of CASE1
      as DueDate
                  
 }
 
 where DDH.SDDocumentCategory = 'J'
 ;
                                
  
  
  
 /*+[internal] {
"BASEINFO":
{
"FROM":
[
"I_DELIVERYDOCUMENT",
"I_DELIVERYDOCUMENTITEM",
"I_SALESDOCUMENTBASIC",
"P_SALESDOCUMENTBUSINESSDATA"
],
"ASSOCIATED":
[],
"BASE":
[],
"ANNO_REF":
[],
"SCALAR_FUNCTION":
[],
"VERSION":0,
"ANNOREF_EVALUATION_ERROR":""
}
}*/