P_SrvcOrdFUPPurOrdProcessFlow

DDL: P_SRVCORDFUPPURORDPROCESSFLOW Type: view CONSUMPTION

Solution Order Purchase Requisition Flow

P_SrvcOrdFUPPurOrdProcessFlow is a Consumption CDS View that provides data about "Solution Order Purchase Requisition Flow" in SAP S/4HANA. It reads from 4 data sources (I_Purchaserequisitionitem, I_PurchaseOrderHistoryBasic, I_PurchaseOrderHistoryBasic, I_PurchaseOrderHistoryBasic) and exposes 62 fields with key fields PrecedingDocument, PrecedingDocumentItem, SubsequentDocument, SubsequentDocumentItem, PrecedingDocumentItem. It has 2 associations to related views.

Data Sources (4)

SourceAliasJoin Type
I_Purchaserequisitionitem PR inner
I_PurchaseOrderHistoryBasic PurDocHistory inner
I_PurchaseOrderHistoryBasic PurDocHistory inner
I_PurchaseOrderHistoryBasic PurDocHistory inner

Associations (2)

CardinalityTargetAliasCondition
[1..*] I_PurchaseOrderHistoryBasic PurDocHistory PurDocHistory.PurchaseOrder = $projection.PurchaseOrder and PurDocHistory.PurchaseOrderItem = $projection.PurchaseOrderItem
[1..1] I_PurchaseOrder _PurchaseOrder POItem.PurchaseOrder = _PurchaseOrder.PurchaseOrder

Annotations (11)

NameValueLevelField
AbapCatalog.sqlViewName PSRVORDPRPF view
AbapCatalog.compiler.compareFilter true view
AbapCatalog.preserveKey true view
AccessControl.authorizationCheck #NOT_REQUIRED view
ClientHandling.algorithm #SESSION_VARIABLE view
ObjectModel.usageType.dataClass #MIXED view
ObjectModel.usageType.serviceQuality #D view
ObjectModel.usageType.sizeCategory #XL view
VDM.viewType #CONSUMPTION view
VDM.private true view
EndUserText.label Solution Order Purchase Requisition Flow view

Fields (62)

KeyFieldSource TableSource FieldDescription
KEY PrecedingDocument PurchaseOrder
KEY PrecedingDocumentItem
KEY SubsequentDocument
KEY SubsequentDocumentItem
PrecedingDocumentCategory
SubsequentDocumentCategory
PurchaseOrder PurchaseOrder
PurchaseOrderItem PurchaseOrderItem
PurchaseOrderType _PurchaseOrder PurchaseOrderType
MaterialDocumentYear I_PurchaseOrderHistoryBasic PurchasingHistoryDocumentYear
FiscalYear I_PurchaseOrderHistoryBasic PurchasingHistoryDocumentYear
CompanyCode CompanyCode
PurchasingGroup _PurchaseOrder PurchasingGroup
PurchaseRequisitionasPrecedingDocument
KEY PrecedingDocumentItem
KEY SubsequentDocument POItem PurchaseOrder
KEY SubsequentDocumentItem
PrecedingDocumentCategory
SubsequentDocumentCategory POItem PurchaseOrderCategory
PurchaseOrder POItem PurchaseOrder
PurchaseOrderItem POItem PurchaseOrderItem
PurchaseOrderType
MaterialDocumentYear I_PurchaseOrderHistoryBasic PurchasingHistoryDocumentYear
FiscalYear I_PurchaseOrderHistoryBasic PurchasingHistoryDocumentYear
CompanyCode
PurchasingGroup
PurchaseOrderasPrecedingDocument
KEY PrecedingDocumentItem
KEY SubsequentDocument I_PurchaseOrderHistoryBasic PurchasingHistoryDocument
KEY SubsequentDocumentItem
PrecedingDocumentCategory
SubsequentDocumentCategory
PurchaseOrder POItem PurchaseOrder
PurchaseOrderItem POItem PurchaseOrderItem
PurchaseOrderType _PurchaseOrder PurchaseOrderType
MaterialDocumentYear I_PurchaseOrderHistoryBasic PurchasingHistoryDocumentYear
FiscalYear I_PurchaseOrderHistoryBasic PurchasingHistoryDocumentYear
CompanyCode
PurchasingGroup _PurchaseOrder PurchasingGroup
PurchaseOrderendasPrecedingDocument
KEY SubsequentDocument I_PurchaseOrderHistoryBasic PurchasingHistoryDocument
KEY SubsequentDocumentItem
SubsequentDocumentCategory
PurchaseOrder POItem PurchaseOrder
PurchaseOrderItem POItem PurchaseOrderItem
PurchaseOrderType _PurchaseOrder PurchaseOrderType
MaterialDocumentYear I_PurchaseOrderHistoryBasic PurchasingHistoryDocumentYear
FiscalYear I_PurchaseOrderHistoryBasic PurchasingHistoryDocumentYear
CompanyCode
PurchasingGroup _PurchaseOrder PurchasingGroup
PurchaseOrderendasPrecedingDocument
KEY SubsequentDocument I_PurchaseOrderHistoryBasic PurchasingHistoryDocument
KEY SubsequentDocumentItem
SubsequentDocumentCategory
PurchaseOrder POItem PurchaseOrder
PurchaseOrderItem POItem PurchaseOrderItem
PurchaseOrderType _PurchaseOrder PurchaseOrderType
MaterialDocumentYear I_PurchaseOrderHistoryBasic PurchasingHistoryDocumentYear
FiscalYear I_PurchaseOrderHistoryBasic PurchasingHistoryDocumentYear
CompanyCode
PurchasingGroup _PurchaseOrder PurchasingGroup
PurchasingOrganization _PurchaseOrder PurchasingOrganization
@AbapCatalog: {
    sqlViewName:            'PSRVORDPRPF',
    compiler.compareFilter: true,
    preserveKey:            true
}

@AccessControl.authorizationCheck: #NOT_REQUIRED

@ClientHandling.algorithm: #SESSION_VARIABLE

@ObjectModel.usageType: {
    dataClass:      #MIXED,
    serviceQuality: #D,
    sizeCategory:   #XL
}

@VDM: {
    viewType: #CONSUMPTION,
    private:  true
}

@EndUserText.label: 'Solution Order Purchase Requisition Flow'


define view P_SrvcOrdFUPPurOrdProcessFlow as 
    
    //PO

    select distinct from I_PurchaseOrderItem
    
        association [1..*] to I_PurchaseOrderHistoryBasic                   as PurDocHistory on PurDocHistory.PurchaseOrder = $projection.PurchaseOrder
                                                                           and PurDocHistory.PurchaseOrderItem = $projection.PurchaseOrderItem
    {
        //Keys

        key PurchaseOrder                                                   as PrecedingDocument,
        key cast (PurchaseOrderItem as char10)                              as PrecedingDocumentItem,
      
        key cast (' '  as vdm_purchaseorder)                                as SubsequentDocument,
        key cast (cast (' '  as vdm_purchaseorderitem) as char10)           as SubsequentDocumentItem,
        
        _PurchaseOrder._PurchaseOrderType.PurchasingDocumentCategory        as PrecedingDocumentCategory,
        cast (' '  as bstyp)                                                as SubsequentDocumentCategory,
        
        PurchaseOrder,
        PurchaseOrderItem,
        _PurchaseOrder.PurchaseOrderType,

        PurDocHistory.PurchasingHistoryDocumentYear                         as MaterialDocumentYear,
        PurDocHistory.PurchasingHistoryDocumentYear                         as FiscalYear,
        CompanyCode,
        _PurchaseOrder.PurchasingGroup,
        _PurchaseOrder.PurchasingOrganization
    }
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

    // PR -> PO

    union all select distinct from I_PurchaseOrderItem               as POItem
        inner join                 I_Purchaserequisitionitem         as PR on PR.PurchaseRequisition = POItem.PurchaseRequisition
                                                                          and PR.PurchaseRequisitionItem = POItem.PurchaseRequisitionItem
        
        association [1..*]      to I_PurchaseOrderHistoryBasic       as PurDocHistory on PurDocHistory.PurchaseOrder = POItem.PurchaseOrder
                                                                                     and PurDocHistory.PurchaseOrderItem = POItem.PurchaseOrderItem
    {
        //Keys

        key PR.PurchaseRequisition                                          as PrecedingDocument,
        key cast (PR.PurchaseRequisitionItem as char10)                     as PrecedingDocumentItem,
        
        key POItem.PurchaseOrder                                            as SubsequentDocument,
        key cast (POItem.PurchaseOrderItem as char10)                       as SubsequentDocumentItem,

        cast ('B' as bstyp)                                                 as PrecedingDocumentCategory,
        POItem.PurchaseOrderCategory                                        as SubsequentDocumentCategory,
      
        POItem.PurchaseOrder,
        POItem.PurchaseOrderItem,
        POItem._PurchaseOrder.PurchaseOrderType,
  
        PurDocHistory.PurchasingHistoryDocumentYear                         as MaterialDocumentYear,
        PurDocHistory.PurchasingHistoryDocumentYear                         as FiscalYear,
        cast('' as fis_bukrs)                                               as CompanyCode,
        POItem._PurchaseOrder.PurchasingGroup,
        POItem._PurchaseOrder.PurchasingOrganization
    }
    where PR.PurchaseRequisition != ''
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

    // PO -> SES

    union all select distinct from I_PurchaseOrderItem              as POItem
        inner join                 I_PurchaseOrderHistoryBasic      as PurDocHistory on POItem.PurchaseOrder = PurDocHistory.PurchaseOrder
                                                                                    and POItem.PurchaseOrderItem = PurDocHistory.PurchaseOrderItem
                                                                                    
        association to I_PurchaseOrder                              as _PurchaseOrder on POItem.PurchaseOrder = _PurchaseOrder.PurchaseOrder
    {
    
        //Keys

        key POItem.PurchaseOrder                                            as PrecedingDocument,
        key cast (POItem.PurchaseOrderItem as char10)                       as PrecedingDocumentItem,
        
        key PurDocHistory.PurchasingHistoryDocument                         as SubsequentDocument,
        key cast (PurDocHistory.PurchasingHistoryDocumentItem as char10)    as SubsequentDocumentItem,
        
        cast ('F' as bstyp)                                                 as PrecedingDocumentCategory,
        cast ('S' as bstyp)                                                 as SubsequentDocumentCategory,
        
        POItem.PurchaseOrder,
        POItem.PurchaseOrderItem,
        _PurchaseOrder.PurchaseOrderType,
      
      
        PurDocHistory.PurchasingHistoryDocumentYear                         as MaterialDocumentYear,
        PurDocHistory.PurchasingHistoryDocumentYear                         as FiscalYear,
        cast('' as fis_bukrs)                                               as CompanyCode,  
        _PurchaseOrder.PurchasingGroup,
        _PurchaseOrder.PurchasingOrganization
    }
    where ( PurDocHistory.PurchasingHistoryDocumentType = 'S' or PurDocHistory.PurchasingHistoryDocumentType = '9' ) and
// !!! filter BEWTP from table t163b

          (PurDocHistory.PurchasingHistoryCategory = '0' or PurDocHistory.PurchasingHistoryCategory = 'V' or PurDocHistory.PurchasingHistoryCategory = 'D' /* ?????????????????? */)
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

    // PO/SES -> GR

    union all select distinct from I_PurchaseOrderItem              as POItem
        inner join                 I_PurchaseOrderHistoryBasic      as PurDocHistory on POItem.PurchaseOrder = PurDocHistory.PurchaseOrder
                                                                                    and POItem.PurchaseOrderItem = PurDocHistory.PurchaseOrderItem
        
        association [1..1]      to I_PurchaseOrder                  as _PurchaseOrder on POItem.PurchaseOrder = _PurchaseOrder.PurchaseOrder
    {
        //Keys

        key case when PurDocHistory.ReferenceDocument != '' 
                  and PurDocHistory.ReferenceDocument != PurDocHistory.PurchasingHistoryDocument
                  and PurDocHistory.ReferenceDocument not like '5%'
                  and PurDocHistory.IsCompletelyDelivered = ''
        //Case SES-> GR

        then PurDocHistory.ReferenceDocument
        //Case PO -> GR

        else POItem.PurchaseOrder                                       end as PrecedingDocument,
             
        key case when PurDocHistory.ReferenceDocument != '' 
                  and PurDocHistory.ReferenceDocument != PurDocHistory.PurchasingHistoryDocument
                  and PurDocHistory.ReferenceDocument not like '5%'
                  and PurDocHistory.IsCompletelyDelivered = ''
        then cast (PurDocHistory.ReferenceDocumentItem as char10) 
        else cast (POItem.PurchaseOrderItem as char10)                  end as PrecedingDocumentItem,     
        
        key PurDocHistory.PurchasingHistoryDocument                         as SubsequentDocument,
        key cast (PurDocHistory.PurchasingHistoryDocumentItem as char10)    as SubsequentDocumentItem,

        case when PurDocHistory.ReferenceDocument != '' 
              and PurDocHistory.ReferenceDocument != PurDocHistory.PurchasingHistoryDocument
              and PurDocHistory.ReferenceDocument not like '5%'
              and PurDocHistory.IsCompletelyDelivered = ''
        then cast ('S' as bstyp)              
        else cast ('F' as bstyp)                                        end as PrecedingDocumentCategory,
        cast ('G' as bstyp)                                                 as SubsequentDocumentCategory,
      
        POItem.PurchaseOrder,
        POItem.PurchaseOrderItem,
        _PurchaseOrder.PurchaseOrderType,
  
        
        PurDocHistory.PurchasingHistoryDocumentYear                         as MaterialDocumentYear,
        PurDocHistory.PurchasingHistoryDocumentYear                         as FiscalYear,
        cast('' as fis_bukrs)                                               as CompanyCode,
        _PurchaseOrder.PurchasingGroup,
        _PurchaseOrder.PurchasingOrganization
    } 
    where PurDocHistory.PurchasingHistoryDocumentType = '1' 
    and  (PurDocHistory.PurchasingHistoryCategory = '9' or PurDocHistory.PurchasingHistoryCategory = 'E')
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

    // PO/(SES-GR) -> IV

    union all select distinct from I_PurchaseOrderItem              as POItem
        inner join                 I_PurchaseOrderHistoryBasic      as PurDocHistory on POItem.PurchaseOrder = PurDocHistory.PurchaseOrder
                                                                                    and POItem.PurchaseOrderItem = PurDocHistory.PurchaseOrderItem
                                                                                    
        association to I_PurchaseOrder                              as _PurchaseOrder on POItem.PurchaseOrder = _PurchaseOrder.PurchaseOrder
    {
        //Keys

        key case when PurDocHistory.ReferenceDocument != '' 
                  and PurDocHistory.ReferenceDocument like '5%'
                  and PurDocHistory.ReferenceDocument != PurDocHistory.PurchasingHistoryDocument
        then PurDocHistory.ReferenceDocument  
                //Case SES-GR -> IV

        //when PurDocHistory.ReferenceDocument != '' and PurDocHistory.ReferenceDocument not like '5%' 

        //then PurDocHistory.ReferenceDocument //? ist dasselbe, braucht man die Unterscheidung?

        else POItem.PurchaseOrder                                       end as PrecedingDocument,
        
        key case when PurDocHistory.ReferenceDocument != '' 
                  and PurDocHistory.ReferenceDocument like '5%' 
                  and PurDocHistory.ReferenceDocument != PurDocHistory.PurchasingHistoryDocument
        then cast (PurDocHistory.ReferenceDocumentItem as char10)  
        else cast (POItem.PurchaseOrderItem as char10)                  end as PrecedingDocumentItem,
        
        key PurDocHistory.PurchasingHistoryDocument                         as SubsequentDocument,
        key cast (PurDocHistory.PurchasingHistoryDocumentItem as char10)    as SubsequentDocumentItem,
        
        case when PurDocHistory.ReferenceDocument != '' 
              and PurDocHistory.ReferenceDocument like '5%'
              and PurDocHistory.ReferenceDocument != PurDocHistory.PurchasingHistoryDocument
        then cast ('G' as bstyp)
        //when PurDocHistory.ReferenceDocument != '' and PurDocHistory.ReferenceDocument not like '5%'

        //then cast ('S' as bstyp) //? ist dasselbe, braucht man die Unterscheidung?               

        else cast ('F' as bstyp)                                        end as PrecedingDocumentCategory,
        cast ('2' as bstyp)                                                 as SubsequentDocumentCategory,
        
        POItem.PurchaseOrder,
        POItem.PurchaseOrderItem,
        _PurchaseOrder.PurchaseOrderType,
      
      
        PurDocHistory.PurchasingHistoryDocumentYear                         as MaterialDocumentYear,
        PurDocHistory.PurchasingHistoryDocumentYear                         as FiscalYear,
        cast('' as fis_bukrs)                                               as CompanyCode,  
        _PurchaseOrder.PurchasingGroup,
        _PurchaseOrder.PurchasingOrganization
    }
    where ( PurDocHistory.PurchasingHistoryDocumentType = '2' or PurDocHistory.PurchasingHistoryDocumentType = 'P' ) and
    //filter BEWTP from table t163b

          (PurDocHistory.PurchasingHistoryCategory = '4' or PurDocHistory.PurchasingHistoryCategory = '5' or PurDocHistory.PurchasingHistoryCategory = '6'
           or PurDocHistory.PurchasingHistoryCategory = 'Q' or PurDocHistory.PurchasingHistoryCategory = 'R' or PurDocHistory.PurchasingHistoryCategory = 'T' )
/*+[internal] {
"BASEINFO":
{
"FROM":
[
"I_PURCHASEORDER",
"I_PURCHASEORDERHISTORYBASIC",
"I_PURCHASEORDERITEM",
"I_PURCHASEREQUISITIONITEM",
"I_PURCHASINGDOCUMENTTYPE"
],
"ASSOCIATED":
[
"I_PURCHASEORDERHISTORYBASIC"
],
"BASE":
[],
"ANNO_REF":
[],
"SCALAR_FUNCTION":
[],
"VERSION":0,
"ANNOREF_EVALUATION_ERROR":""
}
}*/