@AbapCatalog.sqlViewName: 'CPRODUCTOBJPG'
@EndUserText.label: 'Product Object Page'
@AbapCatalog.compiler.compareFilter: true
@AccessControl: {
authorizationCheck: #CHECK,
personalData.blocking: #NOT_REQUIRED,
privilegedAssociations: ['_CreatedByUserContactCard', '_LastChangedByUserContactCard']
}
@ClientHandling.algorithm: #SESSION_VARIABLE
@VDM.viewType: #CONSUMPTION
@ObjectModel: {
compositionRoot: true,
semanticKey: ['Product'],
representativeKey: 'Product',
usageType: {
serviceQuality: #C,
sizeCategory : #L,
dataClass: #MIXED
},
text.control: #ASSOCIATED_TEXT_UI_HIDDEN
}
@Search.searchable: true
@Consumption.semanticObject: 'Material'
@UI.headerInfo: {
typeName: 'Product',
typeNamePlural: 'Products',
imageUrl: 'ProductImageURL',
title: {
value: 'ProductName'
},
description: {
value: 'Product'
}
}
define view C_ProductObjPg
as select from I_Product
association [0..*] to C_ProductObjPgSupplierContact as _ProductObjPgSupplierContact on $projection.Product = _ProductObjPgSupplierContact.Product
association [0..*] to C_ProductObjPgPurgInfoRecd as _ProductObjPgPurgInfoRecd on $projection.Product = _ProductObjPgPurgInfoRecd.Product
association [0..*] to C_ProductObjPgSite as _ProductObjPgSite on $projection.Product = _ProductObjPgSite.Product
association [0..*] to C_ProductObjPgPlant as _ProductObjPgPlant on $projection.Product = _ProductObjPgPlant.Product
association [0..*] to C_ProductObjPgPurchaseOrder as _ProductObjPgPurchaseOrder on $projection.Product = _ProductObjPgPurchaseOrder.Product
association [0..*] to C_ProductObjPgDistrChain as _ProductObjPgDistrChain on $projection.Product = _ProductObjPgDistrChain.Product
association [0..*] to C_ProductObjPgSalesOrder as _ProductObjPgSalesOrder on $projection.Product = _ProductObjPgSalesOrder.Product
association [0..*] to C_ProductObjPgAllocationTable as _ProductObjPgAllocationTable on $projection.Product = _ProductObjPgAllocationTable.Product
association [0..*] to C_ProductObjPgRetailPromotion as _ProductObjPgRetailPromotion on $projection.Product = _ProductObjPgRetailPromotion.Product
// association [0..*] to C_ProductObjPgVariant as _ProductObjPgVariant on $projection.Product = _ProductObjPgVariant.CrossPlantConfigurableProduct
association [0..*] to C_ProductObjPgSeason as _ProductObjPgSeason on $projection.Product = _ProductObjPgSeason.Product
association [1..1] to I_ProductSeasonType as _ProductSeasonType1 on _ProductSeasonType1.ProductSeasonType = 'ST1'
association [1..1] to I_ProductSeasonType as _ProductSeasonType2 on _ProductSeasonType2.ProductSeasonType = 'ST2'
association [1..1] to I_ProductSeasonType as _ProductSeasonType3 on _ProductSeasonType3.ProductSeasonType = 'ST3'
association [0..*] to I_RegionText as _RegionText on $projection.regionoforigin = _RegionText.Region
and $projection.countryoforigin = _RegionText.Country
{
@EndUserText.quickInfo: 'Product'
@UI.selectionField: [{position: 10}]
@UI.lineItem: [{position: 10, importance: #HIGH}]
@Consumption: { valueHelpDefinition: [{ entity: { name: 'I_ProductVH', element: 'Product'} }] }
@ObjectModel.text: {
element: ['ProductName'],
control: #NONE
}
@Search.fuzzinessThreshold: 0.9
key Product,
@Search.defaultSearchElement: true
@Search.fuzzinessThreshold: 0.8
@Search.ranking: #MEDIUM
@UI.selectionField: [{position: 20}]
_Text[1: Language=$session.system_language].ProductName,
@UI.fieldGroup: [{qualifier: 'header_1', position: 10, importance: #HIGH, groupLabel: 'Product Data 1'}]
ProductType,
@UI.fieldGroup: [{qualifier: 'header_1', position: 20, importance: #HIGH}]
@UI.selectionField: [{position: 40}]
ProductGroup,
@UI.fieldGroup: [{qualifier: 'header_1', position: 30, importance: #HIGH}]
@UI.selectionField: [{position: 50}]
ProductCategory,
@Consumption.semanticObject: 'Material'
@ObjectModel.text: {
element: 'CrsPlntConfigurableProductName',
control: #NONE
}
@EndUserText: {
label: 'Configurable Product',
quickInfo: 'Configurable Product'
}
@UI.fieldGroup: [{qualifier: 'header_1', position: 40, importance: #HIGH}]
@Search.defaultSearchElement: false
@Consumption: { valueHelpDefinition: [{ entity: { name: 'I_ProductVH', element: 'Product'} }] }
CrossPlantConfigurableProduct,
@Consumption.filter.hidden: true
@Search.defaultSearchElement: false
@EndUserText.label: 'Configurable Product Description'
_CrossPlantConfigurableProduct._Text [1: Language=$session.system_language].ProductName as CrsPlntConfigurableProductName,
@UI.fieldGroup: [{qualifier: 'header_2', position: 10, importance: #HIGH, groupLabel: 'Product Data 2'}]
@Consumption.filter.hidden: true
BaseUnit,
@EndUserText.quickInfo: 'Global Trade Item Number'
@UI.fieldGroup: [{qualifier: 'header_2', position: 20, importance: #HIGH}]
@Search.defaultSearchElement: true
@Search.fuzzinessThreshold: 0.95
@Search.ranking: #HIGH
@UI.selectionField: [{position: 30}]
ProductStandardID,
@EndUserText: {
label: 'GTIN Category',
quickInfo: 'Global Trade Item Number Category'
}
@UI.fieldGroup: [{qualifier: 'header_2', position: 30, importance: #HIGH}]
@Consumption.filter.hidden: true
InternationalArticleNumberCat,
@UI.fieldGroup: [{qualifier: 'origin', position: 10, importance: #HIGH, groupLabel: 'Origin'}]
Brand,
@EndUserText: {
label: 'Country/Region of Origin',
quickInfo: 'Country/Region of Origin'
}
@UI.fieldGroup: [{qualifier: 'origin', position: 20, importance: #HIGH}]
@Consumption.valueHelpDefinition: [{ entity: { name: 'I_CountryVH', element: 'Country'} }]
_ProductRetail.CountryOfOrigin,
@EndUserText: {
label: 'Region of Origin',
quickInfo: 'Region of Origin'
}
@UI.fieldGroup: [{qualifier: 'origin', position: 30, importance: #HIGH}]
@ObjectModel.text.association: '_RegionText'
_ProductRetail.RegionOfOrigin,
@EndUserText.label: 'Manufacturer Part Number'
@UI.fieldGroup: [{qualifier: 'origin', position: 40, importance: #HIGH}]
ProductManufacturerNumber,
@UI.fieldGroup: [{qualifier: 'measurements', position: 10, importance: #HIGH, groupLabel: 'Measurements'}]
@Consumption.filter.hidden: true
GrossWeight,
@Consumption.filter.hidden: true
WeightUnit,
@EndUserText: {
label: 'Dimension (LxWxH)',
quickInfo: 'Dimension (LxWxH)'
}
@UI.fieldGroup: [{qualifier: 'measurements', position: 20, importance: #HIGH}]
@Consumption.filter.hidden: true
cast(rpad('', 80, ' ') as char80 preserving type) as ProductMeasurement,
@Consumption.filter.hidden: true
BaseUnitSpecificProductLength,
@Consumption.filter.hidden: true
BaseUnitSpecificProductWidth,
@Consumption.filter.hidden: true
BaseUnitSpecificProductHeight,
@Consumption.filter.hidden: true
ProductMeasurementUnit,
@UI.fieldGroup: [{qualifier: 'measurements', position: 30, importance: #HIGH}]
@Consumption.filter.hidden: true
MaterialVolume,
@Consumption.filter.hidden: true
VolumeUnit,
@EndUserText: {
label: 'Created By',
quickInfo: 'Created By'
}
@UI.fieldGroup: [{qualifier: 'administration', position: 10, importance: #HIGH, label: 'Created By', groupLabel: 'Administration', type:#AS_CONTACT, value:'_CreatedByUserContactCard'}]
CreatedByUser,
@EndUserText: {
label: 'Created On',
quickInfo: 'Created On'
}
@UI.fieldGroup: [{qualifier: 'administration', position: 20, importance: #HIGH}]
CreationDateTime,
@EndUserText: {
label: 'Last Changed By',
quickInfo: 'Last Changed By'
}
@UI.fieldGroup: [{qualifier: 'administration', position: 30, importance: #HIGH, label: 'Last Changed By', type:#AS_CONTACT, value: '_LastChangedByUserContactCard'}]
LastChangedByUser,
@EndUserText: {
label: 'Last Changed On',
quickInfo: 'Last Changed On'
}
@UI.fieldGroup: [{qualifier: 'administration', position: 40, importance: #HIGH}]
LastChangeDateTime,
@Semantics.imageUrl: true
@Consumption.filter.hidden: true
cast('' as productimageurl) as ProductImageURL,
@UI.hidden: true
_ProductSeasonType1._Text[1: Language=$session.system_language].ProductSeasonTypeName as ProductSeasonType1Name,
@UI.hidden: true
_ProductSeasonType2._Text[1: Language=$session.system_language].ProductSeasonTypeName as ProductSeasonType2Name,
@UI.hidden: true
_ProductSeasonType3._Text[1: Language=$session.system_language].ProductSeasonTypeName as ProductSeasonType3Name,
@UI.hidden: true
ProductIsConfigurable,
@Consumption.hidden: true
AuthorizationGroup,
@Consumption.valueHelpDefinition: [{ entity: { name: 'I_ItemCategoryGroup', element: 'ItemCategoryGroup'} }]
@UI.fieldGroup: [{qualifier: 'generalData', position: 10, importance: #HIGH, groupLabel: 'General Data', label: 'General Item Category Group'}]
ItemCategoryGroup,
@Consumption.filter.hidden: true
_Text,
@Consumption.filter.hidden: true
_ProductType,
@Consumption.filter.hidden: true
_ProductTypeName,
@Consumption.filter.hidden: true
_ProductCategory,
@Consumption.filter.hidden: true
_ProductCategoryText,
@Consumption.filter.hidden: true
_ProductGroup_2,
@Consumption.filter.hidden: true
_ProductGroupText_2,
@Consumption.filter.hidden: true
_CrossPlantConfigurableProduct,
@Consumption.filter.hidden: true
_BaseUnitOfMeasure,
@Consumption.filter.hidden: true
_BaseUnitOfMeasureText,
@Consumption.filter.hidden: true
_InternationalArticleNumberCat,
@Consumption.filter.hidden: true
_IntArticleNumberText,
@Consumption.filter.hidden: true
_Brand,
@Consumption.filter.hidden: true
_BrandText,
@Consumption.filter.hidden: true
_ProductRetail._CountryOfOrigin,
@Consumption.filter.hidden: true
_ProductRetail._CountryText,
@Consumption.filter.hidden: true
_ProductRetail._RegionOfOrigin,
@Consumption.filter.hidden: true
_RegionText,
@ObjectModel.association.type: [#TO_COMPOSITION_CHILD]
_ProductObjPgSupplierContact,
@ObjectModel.association.type: [#TO_COMPOSITION_CHILD]
_ProductObjPgPurgInfoRecd,
@ObjectModel.association.type: [#TO_COMPOSITION_CHILD]
_ProductObjPgSite,
@ObjectModel.association.type: [#TO_COMPOSITION_CHILD]
_ProductObjPgPlant,
@ObjectModel.association.type: [#TO_COMPOSITION_CHILD]
_ProductObjPgPurchaseOrder,
@ObjectModel.association.type: [#TO_COMPOSITION_CHILD]
_ProductObjPgDistrChain,
@ObjectModel.association.type: [#TO_COMPOSITION_CHILD]
_ProductObjPgSalesOrder,
@ObjectModel.association.type: [#TO_COMPOSITION_CHILD]
_ProductObjPgAllocationTable,
@ObjectModel.association.type: [#TO_COMPOSITION_CHILD]
_ProductObjPgRetailPromotion,
// @ObjectModel.association.type: [#TO_COMPOSITION_CHILD]
// _ProductObjPgVariant,
@ObjectModel.association.type: [#TO_COMPOSITION_CHILD]
_ProductObjPgSeason,
@Consumption.filter.hidden: true
_CreatedByUserContactCard,
@Consumption.filter.hidden: true
_LastChangedByUserContactCard,
@Consumption.filter.hidden: true
_ItemCategoryGroup,
@Consumption.filter.hidden: true
_ItemCategoryGroupText
}
/*+[internal] {
"BASEINFO":
{
"FROM":
[
"I_PRODUCT",
"I_PRODUCTRETAIL",
"I_PRODUCTSEASONTYPE",
"I_PRODUCTSEASONTYPET",
"I_PRODUCTTEXT"
],
"ASSOCIATED":
[
"C_PRODUCTOBJPGALLOCATIONTABLE",
"C_PRODUCTOBJPGDISTRCHAIN",
"C_PRODUCTOBJPGPLANT",
"C_PRODUCTOBJPGPURCHASEORDER",
"C_PRODUCTOBJPGPURGINFORECD",
"C_PRODUCTOBJPGRETAILPROMOTION",
"C_PRODUCTOBJPGSALESORDER",
"C_PRODUCTOBJPGSEASON",
"C_PRODUCTOBJPGSITE",
"C_PRODUCTOBJPGSUPPLIERCONTACT",
"I_BRAND",
"I_BRANDTEXT",
"I_COUNTRY",
"I_COUNTRYTEXT",
"I_INTNTNLARTNMBCAT",
"I_INTNTNLARTNMBCATTEXT",
"I_ITEMCATEGORYGROUP",
"I_ITEMCATEGORYGROUPTEXT",
"I_PRODUCT",
"I_PRODUCTCATEGORY",
"I_PRODUCTCATEGORYTEXT",
"I_PRODUCTGROUPTEXT_2",
"I_PRODUCTGROUP_2",
"I_PRODUCTSEASONTYPE",
"I_PRODUCTTEXT",
"I_PRODUCTTYPE",
"I_PRODUCTTYPETEXT",
"I_REGION",
"I_REGIONTEXT",
"I_UNITOFMEASURE",
"I_UNITOFMEASURETEXT",
"I_USERCONTACTCARD"
],
"BASE":
[
"I_PRODUCT",
"I_PRODUCTRETAIL"
],
"ANNO_REF":
[],
"SCALAR_FUNCTION":
[],
"VERSION":0,
"ANNOREF_EVALUATION_ERROR":""
}
}*/