@AbapCatalog.preserveKey: true
@AbapCatalog.sqlViewName: 'CRCPCURROPG'
@AbapCatalog.compiler.compareFilter: true
@AccessControl.authorizationCheck: #CHECK
@ClientHandling.algorithm: #SESSION_VARIABLE
@ObjectModel.semanticKey: ['Recipe']
@ObjectModel.usageType.sizeCategory: #L
@ObjectModel.usageType.serviceQuality: #C
@ObjectModel.usageType.dataClass: #MASTER
@VDM.viewType: #CONSUMPTION
@Search.searchable: true
@UI.headerInfo: {
typeName: 'Recipe',
typeNamePlural: 'Recipes',
title: { value: 'Recipe' },
description: { value: 'RecipeDescription' }
}
@UI.presentationVariant.requestAtLeast: [ 'RecipePrimaryOutput', 'RecipeAlternativeNumber', 'RecipeVersionNumber' ]
@UI.presentationVariant.sortOrder.by: 'CreationDate'
@UI.presentationVariant.sortOrder.direction: #DESC
@AccessControl.privilegedAssociations: ['_RecipeTypeText', '_RecipeStatusText', '_RecipeAuthorizationGroupText', '_RecipePurposeText' ]
@Consumption.filter.businessDate.at: true
@EndUserText.label: 'Manage Recipes'
define view C_RecipeCurrentObjPg
with parameters
@Semantics.businessDate.at: true
@Consumption.hidden: true
P_KeyDate : sydate
as select from I_RecipeForKeyDate( P_KeyDate: $parameters.P_KeyDate )
association [0..1] to I_Plant as _PlantVH on $projection.Plant = _PlantVH.Plant
association [0..1] to I_PlantStdVH as _PlantStdVH on $projection.Plant = _PlantStdVH.Plant
association [0..*] to I_RecipeTypeText as _RecipeTypeText on $projection.RecipeType = _RecipeTypeText.RecipeType
association [0..*] to I_RecipeStatusText as _RecipeStatusText on $projection.RecipeStatus = _RecipeStatusText.RecipeStatus
association [0..*] to I_RecipeAuthorizationGroupText as _RecipeAuthorizationGroupText on $projection.RecipeAuthorizationGroup = _RecipeAuthorizationGroupText.RecipeAuthorizationGroup
association [0..*] to I_RecipePurposeText as _RecipePurposeText on $projection.RecipePurpose = _RecipePurposeText.RecipePurpose
association [1..1] to E_Recipe as _Extension on $projection.RecipeUUID = _Extension.RecipeUUID
{
@UI.hidden: true
@Consumption.filter.hidden: true
@ObjectModel.text.association: null
key RecipeUUID,
@UI.hidden: true
@Consumption.filter.hidden: true
RecipeUniqueID,
@UI.hidden: true
@Consumption.filter.hidden: true
RecipePrimaryOutputInternalID,
@Consumption.filter.hidden: true
@Consumption.semanticObject: 'Specification'
@UI.lineItem: {position: 130, importance: #MEDIUM, exclude: true}
@Search: { defaultSearchElement: true, ranking: #HIGH, fuzzinessThreshold: 0.8 }
@ObjectModel.filter.enabled: false
cast(_PrimaryOutputSpecification(P_KeyDate:$session.system_date).Specification as /plmb/rcp_prim_output_id) as RecipePrimaryOutput,
@Consumption.filter.hidden: true
@UI.lineItem: {position: 140, importance: #MEDIUM, exclude: true}
@ObjectModel.filter.enabled: false
RecipeAlternativeNumber,
@Consumption.filter.hidden: true
@UI.lineItem: {position: 150, importance: #MEDIUM, exclude: true}
@ObjectModel.filter.enabled: false
RecipeVersionNumber,
@UI: {
lineItem: [ {
position: 20,
importance: #HIGH
} ],
selectionField: {position: 20}
}
@Search: { defaultSearchElement: true, ranking: #HIGH }
@Consumption.semanticObject: 'Recipe'
Recipe,
@UI: {
lineItem: {position: 10},
selectionField: {position: 10}
}
@Search: { defaultSearchElement: true, ranking: #HIGH, fuzzinessThreshold: 0.8 }
_RecipeDescription[1:Language = $session.system_language].RecipeDescription as RecipeDescription,
@UI: {
lineItem: {position: 50, importance: #HIGH},
selectionField: {position: 50},
textArrangement: #TEXT_FIRST
}
@ObjectModel.text.association: '_PlantStdVH'
@Consumption.valueHelpDefinition: [
{ entity: { name: 'I_PlantStdVH',
element: 'Plant' }
}]
@ObjectModel.text.control: #('ASSOCIATED_TEXT_UI_HIDDEN')
cast( coalesce( _Plant.Plant, '' ) as /plmb/werks_d ) as Plant,
@UI: {
lineItem: {position: 30, importance: #HIGH},
selectionField: {position: 30},
textArrangement: #TEXT_FIRST
}
@Consumption.valueHelpDefinition: [
{ entity: { name: 'I_RecipeTypeValueHelp',
element: 'RecipeType' }
}]
@ObjectModel.text.association: '_RecipeTypeText'
@ObjectModel.text.control: #('ASSOCIATED_TEXT_UI_HIDDEN')
@Search: { defaultSearchElement: true, ranking: #HIGH, fuzzinessThreshold: 0.8 }
RecipeType,
@UI: {
fieldGroup: [{qualifier:'AdditionalFilters', position:10, groupLabel: 'Additional Filters'}],
lineItem: {position: 60, importance: #MEDIUM, exclude: true},
textArrangement: #TEXT_FIRST
}
@ObjectModel.text.association: '_RecipePurposeText'
@ObjectModel.text.control: #('ASSOCIATED_TEXT_UI_HIDDEN')
@Consumption.valueHelpDefinition: [
{ entity: { name: 'I_RecipePurposeStdVH',
element: 'RecipePurpose' }
}]
RecipePurpose,
@UI: {
lineItem: {position: 40, importance: #HIGH},
selectionField: {position: 40},
textArrangement: #TEXT_FIRST
}
@Search: { defaultSearchElement: true, ranking: #MEDIUM, fuzzinessThreshold: 0.8 }
@ObjectModel.text.association: '_RecipeStatusText'
@ObjectModel.text.control: #('ASSOCIATED_TEXT_UI_HIDDEN')
@Consumption.valueHelpDefinition: [
{ entity: { name: 'I_RecipeStatusStdVH',
element: 'RecipeStatus' }
}]
RecipeStatus,
@UI.hidden: true
@Consumption.filter.hidden: true
RecipeStatusSchema,
@UI.hidden: true
@Consumption.filter.hidden: true
RcpFmlaUUID,
@UI.hidden: true
@Consumption.filter.hidden: true
RecipeProcessUUID,
@UI.hidden: true
@Consumption.filter.hidden: true
RecipeIsDeleted,
@UI.hidden: true
@Consumption.filter.hidden: true
RecipeIsArchived,
@UI: {
fieldGroup: [{qualifier:'AdditionalFilters', position:70}],
lineItem: {position: 170, importance: #MEDIUM}
}
@Semantics.businessDate.from: false
@Consumption.filter.selectionType: #INTERVAL
RecipeValidityStartDate,
@UI: {
fieldGroup: [{qualifier:'AdditionalFilters', position:80}],
lineItem: {position: 180, importance: #MEDIUM}
}
@Semantics.businessDate.to: false
@Consumption.filter.selectionType: #INTERVAL
RecipeValidityEndDate,
@UI.hidden: true
cast (
case
when RecipeValidityEndDate='00000000' then ' '
else 'X'
end as xfeld preserving type ) as RecipeHasValidityEndDate,
@UI: {
fieldGroup: [{qualifier:'AdditionalFilters', position:20}],
lineItem: {position: 70, importance: #MEDIUM, exclude: true},
textArrangement: #TEXT_FIRST
}
@Search: {defaultSearchElement: true, ranking: #HIGH, fuzzinessThreshold: 0.8 }
@Consumption.valueHelpDefinition: [
{ entity: { name: 'I_RecipeAuthznGrpStdVH',
element: 'RecipeAuthorizationGroup' }
}]
@ObjectModel.text.association: '_RecipeAuthorizationGroupText'
@ObjectModel.text.control: #('ASSOCIATED_TEXT_UI_HIDDEN')
RecipeAuthorizationGroup,
@UI: {
lineItem: {position: 100, importance: #MEDIUM, exclude: true},
selectionField: {position: 60}
}
@Search: { defaultSearchElement: true, ranking: #HIGH, fuzzinessThreshold: 0.8 }
@ObjectModel.text.element: 'CreatedByUserName'
@EndUserText.label: 'Created By'
@Consumption.valueHelpDefinition: [
{ entity: { name: 'I_RecipeCreatedByVH',
element: 'RecipeCreatedByUser' }
}]
RecipeCreatedByUser,
@UI.hidden: true
@Consumption.filter.hidden: true
@Search: {defaultSearchElement: true, ranking: #HIGH, fuzzinessThreshold: 0.8 }
_CreatedByUser.UserDescription as CreatedByUserName,
@UI: {
fieldGroup: [{qualifier:'AdditionalFilters', position:40}],
lineItem: {position: 110, importance: #MEDIUM, exclude: true}
}
@Consumption.filter.selectionType: #INTERVAL
cast( tstmp_to_dats( RecipeCreationDateTime,
abap_system_timezone( $session.client,'NULL' ),
$session.client,
'NULL' ) as /plmb/rcp_created_on ) as CreationDate,
@UI: {
fieldGroup: [{qualifier:'AdditionalFilters', position:60}]
}
@Search: { defaultSearchElement: true, ranking: #HIGH, fuzzinessThreshold: 0.8 }
@ObjectModel.text.element: [ 'LastChangedByUserName' ]
@EndUserText.label: 'Changed By'
@Consumption.valueHelpDefinition: [
{ entity: { name: 'I_RecipeChangedByVH',
element: 'RecipeLastChangedByUser' }
}]
RecipeLastChangedByUser,
@UI.hidden: true
@Consumption.filter.hidden: true
@Search: {defaultSearchElement: true, ranking: #HIGH, fuzzinessThreshold: 0.8 }
_LastChangedByUser.UserDescription as LastChangedByUserName,
@UI: {
fieldGroup: [{qualifier:'AdditionalFilters', position:50}],
lineItem: {position: 120, importance: #MEDIUM, exclude: true}
}
@Consumption.filter.selectionType: #INTERVAL
@EndUserText.label: 'Changed On'
cast( tstmp_to_dats( RecipeLastChangeDateTime,
abap_system_timezone( $session.client,'NULL' ),
$session.client,
'NULL' ) as /plmb/rcp_changed_on ) as LastChangeDate,
/* Associations */
@UI.hidden: true
@Consumption.hidden: true
@Consumption.filter.hidden: true
_PlantVH,
@Consumption.hidden: true
_RecipeTypeText,
@Consumption.hidden: true
_RecipeStatusText,
@Consumption.hidden: true
_RecipeAuthorizationGroupText,
@Consumption.hidden: true
_RecipePurposeText,
@Consumption.hidden: true
_PlantStdVH,
_PrimaryOutputSpecification,
_LogAccMObjectTypeActive,
_LogAccMObjectUserAuthzn,
_LogAccMObjSecureIDAssgmt
}
where
RecipeIsDeleted <> 'X'
/*+[internal] {
"BASEINFO":
{
"FROM":
[
"I_RECIPEASSGDPLANT",
"I_RECIPEFORKEYDATE",
"I_RECIPETEXT",
"I_SPECIFICATIONFORKEYDATE",
"I_USER"
],
"ASSOCIATED":
[
"E_RECIPE",
"I_LOGACCMOBJECTTYPEACTIVE",
"I_LOGACCMOBJECTUSERAUTHZN",
"I_LOGACCMOBJSECUREIDASSGMT",
"I_PLANT",
"I_PLANTSTDVH",
"I_RECIPEAUTHORIZATIONGROUPTEXT",
"I_RECIPEPURPOSETEXT",
"I_RECIPESTATUSTEXT",
"I_RECIPETYPETEXT",
"I_SPECIFICATIONFORKEYDATE"
],
"BASE":
[
"I_RECIPEFORKEYDATE"
],
"ANNO_REF":
[],
"SCALAR_FUNCTION":
[],
"VERSION":0,
"ANNOREF_EVALUATION_ERROR":""
}
}*/