@EndUserText.label: 'Data Extraction for Service Contract'
@ClientHandling.algorithm: #SESSION_VARIABLE
@AbapCatalog: {
sqlViewName: 'CSRVCCONTRITMDEX',
compiler.compareFilter: true,
preserveKey: true
}
@VDM: {
viewType: #CONSUMPTION,
lifecycle.contract.type: #PUBLIC_LOCAL_API
}
@Analytics: {
dataCategory: #FACT,
dataExtraction: {
enabled: true,
delta.changeDataCapture: {
mapping:[
{
filter: [{operator: #EQ, tableElement: 'objtype_h', value: 'BUS2000112'}],
table: 'crms4d_serv_i', role: #MAIN,
viewElement: ['ServiceObjectType', 'ServiceDocument', 'ServiceDocumentItem'],
tableElement: ['objtype_h', 'object_id', 'number_int']
},
{
filter: [{operator: #EQ, tableElement: 'objtype_h', value: 'BUS2000112'}],
table: 'crms4d_serv_h', role: #LEFT_OUTER_TO_ONE_JOIN,
viewElement: ['ServiceObjectType', 'ServiceDocument'],
tableElement: ['objtype_h', 'object_id']
},
{
filter: [{operator: #EQ, tableElement: 'objtype_h', value: 'BUS2000112'}],
table: 'crms4d_refobj', role: #LEFT_OUTER_TO_ONE_JOIN,
viewElement: ['ServiceObjectType', 'ServiceDocument','ServiceDocumentItem','ServiceRefObjectSequenceNumber'],
tableElement: ['objtype_h', 'object_id','number_int','counter']
},
// {
//// filter: [{operator: #EQ, tableElement: 'objtype_b_sel', value: 'BUS2000112'}],
// table: 'crmd_brelvonae', role: #LEFT_OUTER_TO_ONE_JOIN,
// viewElement: ['ServiceDocumentRelationUUID', 'ServiceDocRltnSequenceNumber'],
// tableElement: ['relationid', 'posno']
// },
{
// filter: [{operator: #EQ, tableElement: 'objtype_b', value: 'BUS2000112'}],
table: 'crmd_brelvonai', role: #LEFT_OUTER_TO_ONE_JOIN,
viewElement: ['ServiceDocumentItmRelationUUID', 'ServiceDocItmRltnSqncNumber'],
tableElement: ['relationid', 'posno']
}
]
}
}
}
@AccessControl: {
authorizationCheck: #CHECK,
personalData.blocking: #('TRANSACTIONAL_DATA')
}
@ObjectModel: {
representativeKey: 'ServiceDocumentItem',
usageType: {
dataClass: #TRANSACTIONAL,
serviceQuality: #D,
sizeCategory: #XL
},
supportedCapabilities: [#EXTRACTION_DATA_SOURCE]
}
@Metadata.ignorePropagatedAnnotations: true
/*
Service Contract Extractor
Note:
1. Service Contract Items along with some Header fields are projected
2. BW extracts all projected fields and performance is not relevant
3. Out of box predecessor UUID fields are projected which indicates Service Quotation only.
For any other predecessor types you may have to join explicitly!
*/
define view C_ServiceContractItemDEX
as select from I_ServiceDocumentItemEnhcd as ServiceContractItem
left outer to one join I_ServiceDocumentEnhcd as ServiceContract on ServiceContract.ServiceObjectType = 'BUS2000112'
and ServiceContractItem.ServiceObjectType = 'BUS2000112'
and ServiceContractItem.ServiceDocument = ServiceContract.ServiceDocument
left outer to one join I_ServiceDocumentRefObject as ServiceContractItemRefObj on ServiceContractItemRefObj.ServiceObjectType = 'BUS2000112'
and ServiceContractItemRefObj.ServiceDocument = ServiceContractItem.ServiceDocument
and ServiceContractItemRefObj.ServiceDocumentItem = ServiceContractItem.ServiceDocumentItem
and ServiceContractItemRefObj.SrvcRefObjIsMainObject = 'X'
left outer to one join P_SrvcQtanItmFUPSrvcContrItm as ServiceDocumentItemPrdcssr on ServiceContractItem.ServiceDocumentItemCharUUID = ServiceDocumentItemPrdcssr.ServiceDocumentItemCharUUID
and ServiceContractItem.ServiceDocumentItemObjectType = ServiceDocumentItemPrdcssr.ServiceDocumentItemObjectType
// left outer to one join I_ServiceDocumentPredecessor as ServiceDocumentPredecessor on ServiceContract.ServiceDocumentUUID = ServiceDocumentPredecessor.ServiceDocumentUUID
// and ServiceContract.ServiceObjectType = ServiceDocumentPredecessor.ServiceObjectType
// and ServiceDocumentPredecessor.ServiceDocPrdcssrBusObjType = 'BUS2000116'
// left outer to one join I_ServiceDocumentItemSuccssr_2 as ServiceDocumentItemSuccssr on ServiceContractItem.ServiceDocumentItemCharUUID = ServiceDocumentItemSuccssr.ServiceDocumentItemCharUUID
// and ServiceContractItem.ServiceDocumentItemObjectType = ServiceDocumentItemSuccssr.ServiceDocumentItemObjectType
//
// left outer to one join I_ServiceDocumentSuccessor as ServiceDocumentSuccessor on ServiceContract.ServiceDocumentUUID = ServiceDocumentSuccessor.ServiceDocumentUUID
// and ServiceContract.ServiceObjectType = ServiceDocumentSuccessor.ServiceObjectType
// and ServiceDocumentSuccessor.ServiceDocSuccessorBusObjType = 'BUS2000116'
association [0..1] to E_ServiceDocumentItem as _ServiceDocItemExt on $projection.ServiceObjectType = _ServiceDocItemExt.ServiceCategory
and $projection.ServiceDocument = _ServiceDocItemExt.ServiceOrderItem
and $projection.ServiceDocumentItem = _ServiceDocItemExt.ServiceLineExternalID
association [0..1] to E_ServiceDocument as _ServiceDocumentExt on $projection.ServiceObjectType = _ServiceDocumentExt.ServiceCategory
and $projection.ServiceDocument = _ServiceDocumentExt.ServiceOrder
{
/* Service Order Item Keys */
@ObjectModel.foreignKey.association: '_ServiceObjType'
key ServiceContractItem.ServiceObjectType,
@ObjectModel.foreignKey.association: '_ServiceDocument'
key ServiceContractItem.ServiceDocument,
key ServiceContractItem.ServiceDocumentItem,
/* Header Details */
ServiceContract.ServiceDocumentUUID,
@Semantics.uuid
ServiceContract.ServiceDocumentCharUUID,
ServiceContract.ServiceDocumentDescription,
@Semantics: { amount : {currencyCode: 'TransactionCurrency'} }
ServiceContract.ServiceDocNetAmount,
ServiceContract.PurchaseOrderByCustomer,
ServiceContract.ServiceDocumentStatus,
@Semantics.booleanIndicator: true
ServiceContract.ServiceDocumentIsReleased,
@Semantics.booleanIndicator: true
ServiceContract.ServiceDocumentIsQuotation,
@Semantics.booleanIndicator: true
ServiceContract.ServiceDocumentHasError,
@Semantics.booleanIndicator: true
ServiceContract.ServiceDocIsReleasedForBilling,
@Semantics.booleanIndicator: true
ServiceContract.ServiceDocumentIsRejected,
// ServiceContractItem.QuotationIsAccepted,
ServiceContract.ServiceDocBillingStatus,
@Semantics.booleanIndicator: true
ServiceContract.ServiceDocumentIsOpen,
ServiceContract.BusinessActivityCategory,
ServiceContract.ServiceDocChangedDateTime,
ServiceContract.ServiceDocCreationDateTime,
//ServiceContract.ServiceDocumentUrgency,
//ServiceContract.ServiceDocumentImpact,
//ServiceContract.ServiceDocumentProblemCategory,
ServiceContract.RecommendedServicePriority,
//ServiceContract.ServiceEscalationLevel,
//ServiceContract.ServiceRisk,
//ServiceContract.RequestedServiceStartDate,
//ServiceContract.RequestedServiceEndDate,
/* Item Details */
ServiceContractItem.ServiceDocumentItemPriority,
ServiceContractItem.ServiceDocumentType,
ServiceContractItem.ServiceDocumentItemUUID,
@Semantics.uuid
ServiceContractItem.ServiceDocumentItemCharUUID,
ServiceContractItem.ServiceDocumentItemObjectType,
ServiceContractItem.ParentServiceDocumentItemUUID,
ServiceContractItem.PostingDate,
@Semantics.dateTime:true
ServiceContractItem.SrvcDocItmPostingDateTime,
ServiceContractItem.SrvcDocItmValdtyStartDateTime,
ServiceContractItem.SrvcDocItmValdtyEndDateTime,
ServiceContractItem.ProfitCenter,
ServiceContractItem.ControllingArea,
ServiceContractItem.ProfitCenterDeterminationDate,
ServiceContractItem.ServiceDocItemCategory,
ServiceContractItem.OriginallyRequestedProduct,
ServiceContractItem.Product,
// ServiceContractItem.PlannedServiceStartDateTime,
// ServiceContractItem.PlannedServiceEndDateTime,
// ServiceContractItem.SrvcOrderConfirmationRelevance,
/* Item - Cumulated Value */
@DefaultAggregation: #SUM
@Semantics: { amount : {currencyCode: 'TransactionCurrency'} }
ServiceContractItem.InvoiceAmountInInvoiceDocCrcy,
@Semantics: { quantity : {unitOfMeasure: 'ServiceDocItemQuantityUnit'} }
ServiceContractItem.SrvcDocItmRequestedQuantity,
@Semantics: { quantity : {unitOfMeasure: 'ServiceDocItemQuantityUnit'} }
ServiceContractItem.InvoiceQuantity,
@Semantics: { quantity : {unitOfMeasure: 'ServiceDocItemQuantityUnit'} }
ServiceContractItem.SrvcDocItmDeliveredQuantity,
@Semantics: { quantity : {unitOfMeasure: 'ServiceDocItemQuantityUnit'} }
ServiceContractItem.SrvcDocItmReleasedQuantity,
@DefaultAggregation: #SUM
@Semantics: { amount : {currencyCode: 'TransactionCurrency'} }
ServiceContractItem.SrvcDocItmReldAmtInTransCrcy,
/* Item - Schedule Line */
@DefaultAggregation: #SUM
@Semantics: { quantity : {unitOfMeasure: 'ServiceDocItemQuantityUnit'} }
ServiceContractItem.ServiceDocumentItemQuantity,
/* Item - Product */
ServiceContractItem.SrvcDocItmOrdToBaseQtyNmrtr,
ServiceContractItem.SrvcDocItmOrdToBaseQtyDnmntr,
ServiceContractItem.OrderToBaseQuantityExponent,
@ObjectModel.foreignKey.association: '_SalesUnit'
@Semantics.unitOfMeasure:true
ServiceContractItem.ServiceDocItemQuantityUnit,
@ObjectModel.foreignKey.association: '_BaseUnit_2'
@Semantics.unitOfMeasure:true
ServiceContractItem.SrvcDocItemBaseQuantityUnit,
/* Partner */
ServiceContractItem.ServiceTeam,
ServiceContractItem.SoldToParty,
ServiceContractItem.SoldToPartyCountry,
ServiceContractItem.SoldToPartyRegion,
ServiceContractItem.ResponsibleEmployee,
ServiceContractItem.ContactPerson,
ServiceContractItem.ServiceEmployee,
ServiceContractItem.ShipToParty,
ServiceContractItem.BillToParty,
ServiceContractItem.PayerParty,
/* Pricing Parameter Set */
@ObjectModel.foreignKey.association: '_TransactionCurrency'
@Semantics.currencyCode:true
ServiceContractItem.TransactionCurrency,
@Semantics.currencyCode:true
ServiceContractItem.StatisticsCurrency,
ServiceContractItem.ExchangeRateType,
ServiceContractItem.ExchangeRateDate,
ServiceContractItem.AccountingExchangeRate,
ServiceContractItem.CustomerGroup,
ServiceContractItem.BillableControl,
ServiceContractItem.PaymentTerms,
/* Billing Set */
ServiceContractItem.BillingBlockReason,
/* Item - Sales Set */
ServiceContractItem.AdditionalCustomerGroup1,
ServiceContractItem.AdditionalCustomerGroup2,
ServiceContractItem.AdditionalCustomerGroup3,
ServiceContractItem.AdditionalCustomerGroup4,
ServiceContractItem.AdditionalCustomerGroup5,
ServiceContractItem.ServiceDocItemRejectionReason,
/* Organization Unit Set */
ServiceContractItem.SalesOrganizationOrgUnitID,
ServiceContractItem.SalesOfficeOrgUnitID,
ServiceContractItem.SalesGroupOrgUnitID,
ServiceContractItem.DistributionChannel,
ServiceContractItem.Division,
ServiceContractItem.ServiceOrganization,
ServiceContractItem.ResponsibleSalesOrganization,
ServiceContractItem.ResponsibleServiceOrganization,
/* Organizational units with the S/4 SD codes */
ServiceContractItem.SalesOrganization,
ServiceContractItem.SalesOffice,
ServiceContractItem.SalesGroup,
/* Date */
@Semantics.dateTime:true
ServiceContrItemStartDateTime,
@Semantics.dateTime:true
ServiceContrItemEndDateTime,
/* Item - Service */
ServiceContractItem.ServiceDurationUnit,
ServiceContractItem.ServiceDuration,
/* Status */
ServiceContractItem.ServiceDocumentItemStatus,
@Semantics.booleanIndicator: true
ServiceContractItem.ServiceDocumentItemIsReleased,
@Semantics.booleanIndicator: true
ServiceContractItem.ServiceDocumentItemHasError,
ServiceContractItem.SrvcDocItmDeliveryStatus,
ServiceContractItem.SrvcDocItmGoodsIssueStatus,
ServiceContractItem.ServiceDocItemBillingStatus,
@Semantics.booleanIndicator: true
ServiceContractItem.SrvcDocItmIsReleasedForBilling,
@Semantics.booleanIndicator: true
ServiceContractItem.ServiceDocumentItemIsRejected,
@Semantics.booleanIndicator: true
ServiceContractItem.ServiceDocumentItemIsOpen,
// ServiceContractItem.QuotationIsAccepted, ...Not in Excel
/* Item - Pricing */
@DefaultAggregation: #SUM
@Semantics: { amount : {currencyCode: 'TransactionCurrency'} }
ServiceContractItem.ServiceDocumentItemNetAmount,
@DefaultAggregation: #SUM
@Semantics: { amount : {currencyCode: 'TransactionCurrency'} }
ServiceContractItem.ServiceDocItemGrossAmount,
/* Item Product */
ServiceContractItem.SrvcMaterialPricingGroup,
ServiceContractItem.ProductGroup1,
ServiceContractItem.ProductGroup2,
ServiceContractItem.ProductGroup3,
ServiceContractItem.ProductGroup4,
ServiceContractItem.ProductGroup5,
ServiceContractItem.ProductHierarchy,
/* Service Subject */
// ServiceContractItem.ServiceSchema1Category1UUID,
// ServiceContractItem.ServiceSchema1Category2UUID,
// ServiceContractItem.ServiceSchema1Category3UUID,
// ServiceContractItem.ServiceSchema1Category4UUID,
// ServiceContractItem.ServiceSchema1Category5UUID,
// ServiceContractItem.ServiceSchema1Category6UUID,
// ServiceContractItem.ServiceSchema1Category7UUID,
// ServiceContractItem.ServiceSchema1Category8UUID,
// ServiceContractItem.ServiceSchema1Category9UUID,
// ServiceContractItem.ServiceSchema1Category10UUID,
// ServiceContractItem.SrvcCatztnSchema1,
// ServiceContractItem.SrvcCatztnSchemaCategory1,
//
// ServiceContractItem.ServiceSchema2Category1UUID,
// ServiceContractItem.ServiceSchema2Category2UUID,
// ServiceContractItem.ServiceSchema2Category3UUID,
// ServiceContractItem.ServiceSchema2Category4UUID,
// ServiceContractItem.ServiceSchema2Category5UUID,
// ServiceContractItem.ServiceSchema2Category6UUID,
// ServiceContractItem.ServiceSchema2Category7UUID,
// ServiceContractItem.ServiceSchema2Category8UUID,
// ServiceContractItem.ServiceSchema2Category9UUID,
// ServiceContractItem.ServiceSchema2Category10UUID,
// ServiceContractItem.SrvcCatztnSchema2,
// ServiceContractItem.SrvcCatztnSchemaCategory2,
/* Reference Object Details */
ServiceContractItemRefObj.ServiceRefObjectSequenceNumber,
ServiceContractItemRefObj.ServiceReferenceObjectType,
ServiceContractItemRefObj.ServiceReferenceObjectUUID,
ServiceContractItemRefObj.ProductID,
ServiceContractItemRefObj.SrvcRefObjIsMainObject,
ServiceContractItemRefObj.ProductUUID,
ServiceContractItemRefObj.SerialNumber,
ServiceContractItemRefObj.Equipment,
ServiceContractItemRefObj.FunctionalLocation,
/* Predecessor fields */
// ServiceDocumentPredecessor.ServiceDocumentRelationUUID,
// ServiceDocumentPredecessor.ServiceDocRltnSequenceNumber,
// ServiceDocumentPredecessor.ServiceDocumentPredecessorUUID as SrvcQtanPredecessorUUID,
// ServiceDocumentPredecessor.ServiceDocPrdcssrBusObjType as SrvcQtanPrdcssrBusObjType,
ServiceDocumentItemPrdcssr._ServiceDocItm.ServiceDocumentUUID as SrvcQtanPredecessorUUID,
ServiceDocumentItemPrdcssr._ServiceDocItm.ServiceObjectType as SrvcQtanPrdcssrBusObjType,
ServiceDocumentItemPrdcssr.ServiceDocumentItmRelationUUID,
ServiceDocumentItemPrdcssr.ServiceDocItmRltnSqncNumber,
ServiceDocumentItemPrdcssr.ServiceDocItmPrdcssrCharUUID as SrvcQtanItmPrdcssrCharUUID,
ServiceDocumentItemPrdcssr.ServiceDocItmPrdcssrBusObjType as SrvcQtanItmPrdcssrBusObjType,
/* Cancellation */
ServiceDocumentItemCanclnParty,
ServiceDocumentItmCanclnReason,
SrvcDocItmCanclnProcedure,
/* Solution Order */
ServiceContractItem.RefBusinessSolutionOrder,
ServiceContractItem.RefBusinessSolutionOrderItem,
/* Associations */
/* Keys */
_ServiceObjType,
_ServiceDocument,
/* Item - Product */
_BaseUnit_2,
_SalesUnit,
/* Pricing Parameter Set */
_TransactionCurrency
}
where
ServiceContractItem.ServiceObjectType = 'BUS2000112'
and ServiceContractItem.ServiceDocumentTemplateType is initial
/*+[internal] {
"BASEINFO":
{
"FROM":
[
"I_SERVICEDOCUMENTENHCD",
"I_SERVICEDOCUMENTITEMENHCD",
"I_SERVICEDOCUMENTREFOBJECT",
"P_SRVCQTANITMFUPSRVCCONTRITM"
],
"ASSOCIATED":
[
"E_SERVICEDOCUMENT",
"E_SERVICEDOCUMENTITEM",
"I_CURRENCY",
"I_CUSTMGMTBUSOBJTYPE",
"I_SERVICEDOCUMENTENHCD",
"I_UNITOFMEASURE"
],
"BASE":
[
"I_SERVICEDOCUMENTITEMENHCD"
],
"ANNO_REF":
[],
"SCALAR_FUNCTION":
[],
"VERSION":0,
"ANNOREF_EVALUATION_ERROR":""
}
}*/