I_CustProjSlsOrd

DDL: I_CUSTPROJSLSORD SQL: ICUSTPROJSO Type: view COMPOSITE Package: SD_SLS_PBS

Sales Order for Customer Project

I_CustProjSlsOrd is a Composite CDS View that provides data about "Sales Order for Customer Project" in SAP S/4HANA. It reads from 2 data sources (I_CustomerProjectItem, I_SalesOrder) and exposes 31 fields with key field CustomerProject. It has 5 associations to related views. Part of development package SD_SLS_PBS.

Data Sources (2)

SourceAliasJoin Type
I_CustomerProjectItem Project from
I_SalesOrder SalesOrder inner

Associations (5)

CardinalityTargetAliasCondition
[0..*] I_CustProjSlsOrdItem _CustProjSlsOrdItem $projection.SalesOrder = _CustProjSlsOrdItem.SalesOrder
[0..*] I_CustProjSlsOrdPartner _CustProjSlsOrdPartner $projection.SalesOrder = _CustProjSlsOrdPartner.SalesOrder
[1..1] I_SalesOrder _SalesOrder $projection.SalesOrder = _SalesOrder.SalesOrder
[0..1] I_CustomerProject _CustomerProject $projection.CustomerProject = _CustomerProject.CustomerProject
[0..1] E_SalesDocumentBasic _Extension $projection.SalesOrder = _Extension.SalesDocument

Annotations (13)

NameValueLevelField
AbapCatalog.sqlViewName ICUSTPROJSO view
ClientHandling.algorithm #SESSION_VARIABLE view
VDM.viewType #COMPOSITE view
VDM.lifecycle.contract.type #PUBLIC_LOCAL_API view
AccessControl.authorizationCheck #CHECK view
AbapCatalog.compiler.compareFilter true view
AbapCatalog.preserveKey true view
ObjectModel.representativeKey CustomerProject view
ObjectModel.usageType.dataClass #TRANSACTIONAL view
ObjectModel.usageType.serviceQuality #B view
ObjectModel.usageType.sizeCategory #L view
Metadata.ignorePropagatedAnnotations true view
EndUserText.label Sales Order for Customer Project view

Fields (31)

KeyFieldSource TableSource FieldDescription
KEY CustomerProject I_CustomerProjectItem CustomerProject
SalesOrder I_SalesOrder SalesOrder
SalesOrderType I_SalesOrder SalesOrderType
SoldToParty I_SalesOrder SoldToParty
TotalNetAmount I_SalesOrder TotalNetAmount
TransactionCurrency I_SalesOrder TransactionCurrency
PurchaseOrderByCustomer I_SalesOrder PurchaseOrderByCustomer
CustomerPurchaseOrderDate I_SalesOrder CustomerPurchaseOrderDate
SalesOrganization I_SalesOrder SalesOrganization
DistributionChannel I_SalesOrder DistributionChannel
OrganizationDivision I_SalesOrder OrganizationDivision
SalesOffice I_SalesOrder SalesOffice
SalesGroup I_SalesOrder SalesGroup
CustomerPaymentTerms I_SalesOrder CustomerPaymentTerms
PaymentMethod I_SalesOrder PaymentMethod
CustomerAccountAssignmentGroup I_SalesOrder CustomerAccountAssignmentGroup
HeaderBillingBlockReason I_SalesOrder HeaderBillingBlockReason
_CustomerProject _CustomerProject
_SalesOrder _SalesOrder
_CustProjSlsOrdItem _CustProjSlsOrdItem
_CustProjSlsOrdPartner _CustProjSlsOrdPartner
_SoldToParty _SoldToParty
_TransactionCurrency _TransactionCurrency
_SalesOrganization _SalesOrganization
_DistributionChannel _DistributionChannel
_OrganizationDivision _OrganizationDivision
_SalesOffice _SalesOffice
_SalesGroup _SalesGroup
_CustomerPaymentTerms _CustomerPaymentTerms
_CustomerAccountAssgmtGroup _CustomerAccountAssgmtGroup
_HeaderBillingBlockReason _HeaderBillingBlockReason
@AbapCatalog.sqlViewName: 'ICUSTPROJSO'
@ClientHandling.algorithm: #SESSION_VARIABLE
@VDM: {
  viewType: #COMPOSITE,
  lifecycle.contract.type: #PUBLIC_LOCAL_API
}
@AccessControl: {
  authorizationCheck: #CHECK,
  personalData.blocking: #('TRANSACTIONAL_DATA')
}
@AbapCatalog.compiler.compareFilter: true
@AbapCatalog.preserveKey: true

@ObjectModel: {
   representativeKey: 'CustomerProject',
   usageType: {
     dataClass:      #TRANSACTIONAL,
     serviceQuality: #B,
     sizeCategory:   #L
   },
   supportedCapabilities: [ #CDS_MODELING_ASSOCIATION_TARGET, #SQL_DATA_SOURCE, #CDS_MODELING_DATA_SOURCE ]
}
@Metadata.ignorePropagatedAnnotations: true
@EndUserText.label: 'Sales Order for Customer Project'

define view I_CustProjSlsOrd
  as select from I_CustomerProjectItem as Project
    inner join   I_SalesOrder          as SalesOrder on Project.CustomerProjectItem    = SalesOrder.SalesOrder
                                                     and(
                                                       Project.CustomerProjectItemType = '0SOH'
                                                     )


  association [0..*] to I_CustProjSlsOrdItem    as _CustProjSlsOrdItem    on $projection.SalesOrder = _CustProjSlsOrdItem.SalesOrder
  association [0..*] to I_CustProjSlsOrdPartner as _CustProjSlsOrdPartner on $projection.SalesOrder = _CustProjSlsOrdPartner.SalesOrder
  association [1..1] to I_SalesOrder            as _SalesOrder            on $projection.SalesOrder = _SalesOrder.SalesOrder
  association [0..1] to I_CustomerProject       as _CustomerProject       on $projection.CustomerProject = _CustomerProject.CustomerProject

  //Extensibility

  association [0..1] to E_SalesDocumentBasic    as _Extension             on $projection.SalesOrder = _Extension.SalesDocument
{
      @Consumption.valueHelpDefinition: [
        { entity:  { name:    'I_CustomerProjectVH',
                     element: 'CustomerProject' }
        }]
      @ObjectModel.foreignKey.association: '_CustomerProject'
  key Project.CustomerProject,

      @ObjectModel.foreignKey.association: '_SalesOrder'
      SalesOrder.SalesOrder,

      @Consumption.hidden: true
      SalesOrder.SalesOrderType,

      @Consumption.valueHelpDefinition: [
        { entity:  { name:    'I_Customer_VH',
                     element: 'Customer' }
        }]
      @ObjectModel.foreignKey.association: '_SoldToParty'
      SalesOrder.SoldToParty,

      @DefaultAggregation: #SUM
      @Semantics.amount.currencyCode: 'TransactionCurrency'
      SalesOrder.TotalNetAmount,

      @Semantics.currencyCode: true
      @ObjectModel.foreignKey.association: '_TransactionCurrency'
      SalesOrder.TransactionCurrency,

      SalesOrder.PurchaseOrderByCustomer,

      SalesOrder.CustomerPurchaseOrderDate,

      @ObjectModel.foreignKey.association: '_SalesOrganization'
      SalesOrder.SalesOrganization,

      @ObjectModel.foreignKey.association: '_DistributionChannel'
      SalesOrder.DistributionChannel,

      @ObjectModel.foreignKey.association: '_OrganizationDivision'
      SalesOrder.OrganizationDivision,

      @ObjectModel.foreignKey.association: '_SalesOffice'
      SalesOrder.SalesOffice,

      @ObjectModel.foreignKey.association: '_SalesGroup'
      SalesOrder.SalesGroup,

      @ObjectModel.foreignKey.association: '_CustomerPaymentTerms'
      SalesOrder.CustomerPaymentTerms,
      
      SalesOrder.PaymentMethod,

      @ObjectModel.foreignKey.association: '_CustomerAccountAssgmtGroup'
      SalesOrder.CustomerAccountAssignmentGroup,

      @ObjectModel.foreignKey.association: '_HeaderBillingBlockReason'
      SalesOrder.HeaderBillingBlockReason,

      //Associations

      _CustomerProject,
      _SalesOrder,
      _CustProjSlsOrdItem,
      _CustProjSlsOrdPartner,
      _SoldToParty,
      _TransactionCurrency,
      _SalesOrganization,
      _DistributionChannel,
      _OrganizationDivision,
      _SalesOffice,
      _SalesGroup,
      _CustomerPaymentTerms,
      _CustomerAccountAssgmtGroup,
      _HeaderBillingBlockReason
}