@Metadata.allowExtensions: true
@AccessControl.authorizationCheck: #MANDATORY
@AccessControl.personalData.blocking: #BLOCKED_DATA_EXCLUDED
@ObjectModel.usageType: {serviceQuality: #D, sizeCategory: #XL, dataClass: #MIXED}
@VDM.viewType: #CONSUMPTION
@UI.headerInfo.typeName: 'Returned Traceable Material'
@UI.headerInfo.typeNamePlural: 'Returned Traceable Materials'
@UI.headerInfo.title.label: 'Returned Traceable Material'
@UI.presentationVariant:[
{
sortOrder:[{by: 'MaterialName', direction: #ASC}],
requestAtLeast: ['EffectivityParameterVariant','Assembly']
}]
@UI.textArrangement: #TEXT_LAST
@UI.lineItem:[{criticality: 'ComponentAssemblyCriticality'}]
@EndUserText.label: 'Shop floor item returned traceable material'
define view entity C_SFORetdTraceableMaterial
as select from P_SFOTraceableAssldComp as ass
left outer to one join I_OpActyNtwkElement as OpActyNtwkElement on OpActyNtwkElement.OperationActivityNetwork = ass.OperationActivityNetwork
and OpActyNtwkElement.OpActyNtwkVersionCounter = ass.OpActyNtwkVersionCounter
and OpActyNtwkElement.OpActyNtwkElement = ass.OpActyNtwkElement
association [0..1] to I_Plant as _Plant on $projection.Plant = _Plant.Plant
association [1..1] to I_OpActyNtwkInstance as _OpActyNtwkInstance on $projection.OpActyNtwkInstance = _OpActyNtwkInstance.OpActyNtwkInstance
association [1..1] to I_OperationActivityInstance as _OperationActivityInstance on $projection.OpActyNtwkInstance = _OperationActivityInstance.OpActyNtwkInstance
and $projection.OpActyNtwkElement = _OperationActivityInstance.OpActyNtwkElement
----Extension Association
association [0..1] to E_BillOfMaterialItemTP as _BillOfMaterialItemExtension on $projection.BillOfMaterialCategory = _BillOfMaterialItemExtension.BillOfMaterialCategory
and $projection.BillOfMaterialInternalID = _BillOfMaterialItemExtension.BillOfMaterial
and $projection.BOMItem = _BillOfMaterialItemExtension.BillOfMaterialItemNodeNumber
and $projection.BOMItemInternalChangeCount = _BillOfMaterialItemExtension.BOMItemInternalChangeCount
{
@UI.hidden:true
key ass.Reservation,
@UI.hidden:true
key ass.ReservationItem,
@UI.hidden:true
key ass.RecordType,
@UI.hidden:true
@ObjectModel.foreignKey.association: '_OpActyNtwkInstance'
@Consumption.valueHelpDefinition: [ { entity: { name: 'I_OpActyNtwkInstanceStdVH', element: 'OpActyNtwkInstance' } } ]
key ass.OpActyNtwkInstance,
@UI.hidden:true
@ObjectModel.foreignKey.association: '_OperationActivityInstance'
@Consumption.valueHelpDefinition: [ { entity: { name: 'I_OpActyInstceStdVH', element: 'OpActyNtwkElement' } } ]
key ass.OpActyNtwkElement,
@UI.hidden:true
key ass.ShopFloorItem,
@UI:{
lineItem:[{position:40}]} -- defines default columns of the table on ObjectList
key ass.Batch,
@UI:{
lineItem:[{position:10}]} -- defines default columns of the table on ObjectList
@ObjectModel.foreignKey.association: '_Material'
@Consumption.valueHelpDefinition: [ { entity: { name: 'I_MaterialStdVH', element: 'Material' } } ]
@ObjectModel.text.element:['MaterialName']
key ass.Material,
@UI.hidden: true
@ObjectModel.foreignKey.association: '_Plant'
key ass.Plant,
@UI.hidden: true
key ass.DgtlMockUpCharcsUUID,
ass.BillOfMaterialItemNumber as BillOfMaterialItemNumber,
@UI.hidden: true
ass.BillOfMaterialCategory as BillOfMaterialCategory,
@UI.hidden: true
ass.BillOfMaterialInternalID as BillOfMaterialInternalID,
@UI.hidden: true
ass.BOMItem as BOMItem,
@UI.hidden: true
ass.BOMItemInternalChangeCount as BOMItemInternalChangeCount,
@UI.hidden: true
ass.BillOfMaterialVariant as BillOfMaterialVariant,
@UI.hidden: true
ass.BillOfMaterialVersion as BillOfMaterialVersion,
@UI.hidden: true
ass.InheritedNodeNumberForBOMItem as InheritedNodeNumberForBOMItem,
@UI.hidden: true
ass.InheritedNodeNumberVersionBOM as InheritedNodeNumberVersionBOM,
@UI.hidden: true
ass.Assembly as Assembly,
cast(coalesce(ass._MfgBOMItemWithPhantomHier.MfgBOMItemIsPhantomChild, '')
as mpe_bom_phantom_child preserving type) as MfgBOMItemIsPhantomChild,
@UI.hidden: true
ass._Material._Text[1: Language=$session.system_language].MaterialName as MaterialName,
@Semantics.quantity.unitOfMeasure: 'EntryUnit'
@UI:{
lineItem:[{position:60}]} -- defines default columns of the table on ObjectList
ass.RequiredQuantity,
@Semantics.quantity.unitOfMeasure: 'MaterialBaseUnit'
ass.RequiredQuantityInBaseUnit,
@Semantics.quantity.unitOfMeasure: 'EntryUnit'
@UI:{
lineItem:[{position:50}]} -- defines default columns of the table on ObjectList
cast(ass.MaterialComponentQuantity as returned_quantity preserving type ) as MaterialComponentQuantity,
@Semantics.quantity.unitOfMeasure: 'MaterialBaseUnit'
cast(ass.ResvnItmWithdrawnQtyInBaseUnit as mpe_returned_qty_in_base_unit preserving type ) as ResvnItmWithdrawnQtyInBaseUnit,
@UI.hidden:true
@Semantics.quantity.unitOfMeasure: 'MaterialBaseUnit'
ass.ResvnItmTotalWithdrawnQty,
@UI.hidden:true
ass.MaterialBaseUnit,
@UI.hidden:true
ass.EntryUnit,
@UI.hidden:true
ass.OrderInternalID,
@UI.hidden:true
ass.OrderOperationInternalID,
-- SFI Fields
@UI:{
lineItem:[{position:30}]} -- defines default columns of the table on ObjectList
ass.SerialNumber,
ass.ManufacturerSerialNumber,
@ObjectModel: {
virtualElement: true,
virtualElementCalculatedBy: 'ABAP:CL_MPE_BATCHBYSUPPLIER_VE'
}
cast(' ' as lichn preserving type ) as BatchBySupplier,
@UI.hidden: true
ass.ReferenceDesignatorValue,
cast( case when ass.ReferenceDesignatorValue is not null or ass.ReferenceDesignatorValue <> ''
then ass.ReferenceDesignatorValue
when ass.ReferenceDesignatorValue is null or ass.ReferenceDesignatorValue = ''
then case ass.MfgRefStrucItmDetIsContextual
when 'X' then ass._MfgRefHierItemWithDetails.HierMfgReferenceDesignatorName
when '' then ass._MfgRefStrucItemWithDetails.MfgRefStrucItmRefDsgntrName
end
end as vmp_ref_des preserving type ) as ReferenceDesignatorName,
-- Variable-Size Item Fields
@UI.hidden: true
ass.MaterialCompIsVariableSized,
@UI.hidden: true
ass.FormulaKey,
@UI.hidden: true
@Semantics.quantity.unitOfMeasure: 'VariableSizeDimensionUnit'
ass.VariableSizeDimension1,
@UI.hidden: true
@Semantics.quantity.unitOfMeasure: 'VariableSizeDimensionUnit'
ass.VariableSizeDimension2,
@UI.hidden: true
@Semantics.quantity.unitOfMeasure: 'VariableSizeDimensionUnit'
ass.VariableSizeDimension3,
@UI.hidden: true
ass.VariableSizeDimensionUnit,
@ObjectModel: {
virtualElement: true,
virtualElementCalculatedBy: 'ABAP:CL_MPE_VSI_FRMTD_FORMULA_VE'
}
cast('' as mpe_vsi_formatted_formula) as VarblSizeCompFrmtdFormulaVal,
@Semantics.quantity.unitOfMeasure: 'VariableSizeComponentUnit'
ass.VariableSizeComponentQuantity,
@UI.hidden: true
ass.VariableSizeComponentUnit,
@UI.hidden: true
ass.MfgRefStrucItmDetIsContextual,
ass.ManufacturingOrder,
--Operation Fields
@ObjectModel.text.element:['MfgOrderOperationText']
cast(ass.Operation as mpe_vornr_char preserving type) as ManufacturingOrderOperation,
@UI.hidden: true
@Semantics.text: true
ass.OperationText as MfgOrderOperationText,
-- OA Details Fields
@ObjectModel.text.element:['OperationActivityName']
cast(coalesce(OpActyNtwkElement.OpActyNtwkElementExternalID, '') as mpe_oa_number_ext preserving type) as OpActyNtwkElementExternalID,
@UI.hidden: true
@Semantics.text: true
OpActyNtwkElement._OperationActivityText[1: Language=$session.system_language].OperationActivityName as OperationActivityName,
@UI.hidden: true
case
when ass.Reservation = '0000000000' then 1
else 0
end as ComponentAssemblyCriticality,
@UI.hidden: true
ass.MatlCompAssembleControl,
@UI:{
lineItem:[{position:20}]} -- defines default columns of the table on ObjectList
cast(ass._MatlCompAssembleControl._Text[1: Language=$session.system_language].MatlCompAssembleControlName
as mpe_assembly_type_name preserving type ) as MatlCompAssembleControlName,
--Calcuated fields
@ObjectModel.text.element:['StorageLocationName']
@ObjectModel.virtualElementCalculatedBy: 'ABAP:CL_MPE_MATL_RET_LGORT_INSMK_O'
cast('' as lgort_d) as StorageLocation,
@UI.hidden: true
@Semantics.text: true
@ObjectModel.virtualElementCalculatedBy: 'ABAP:CL_MPE_MATL_RET_LGORT_INSMK_O'
cast('' as lgort_name) as StorageLocationName,
-- @Semantics.text: true
@ObjectModel.virtualElementCalculatedBy: 'ABAP:CL_MPE_MATL_RET_LGORT_INSMK_O'
cast('' as mpe_insmk_name) as InventoryUsabilityCodeName,
@ObjectModel.text.element:['BillOfMaterialItemCategoryDesc']
ass.BOMItemCategory,
@UI.hidden: true
ass._BOMItemCategory._ItemCategoryT[1: Language=$session.system_language].BillOfMaterialItemCategoryDesc,
@UI.hidden: true
ass.EffectivityParameterVariant as EffectivityParameterVariant,
-- MRS fields
@UI.hidden: true
ass.MfgRefStrucBOMLeafAssgmtUUID,
@UI.hidden: true
ass.MfgRefStructureItemDetailUUID,
cast( case ass.MfgRefStrucItmDetIsContextual
when 'X' then ass._MfgRefHierItemWithDetails.HierMfgReferenceDesignatorName
when '' then ass._MfgRefStrucItemWithDetails.MfgRefStrucItmRefDsgntrName
end as mpe_mrs_designator_name preserving type ) as MfgRefStrucItmRefDsgntrName,
-----Associations
ass._Material,
_Plant,
_OpActyNtwkInstance,
_OperationActivityInstance
}
where
ass.ResvnItmWithdrawnQtyInBaseUnit > 0
and ass.DebitCreditCode = 'S'
/*+[internal] {
"BASEINFO":
{
"FROM":
[
"I_BILLOFMATERIALITEMCATEGORY",
"I_BOMITEMCATEGORYTEXT",
"I_MATERIAL",
"I_MATERIALTEXT",
"I_MATLCOMPASSEMBLECONTROL",
"I_MATLCOMPASSEMBLECONTROLTEXT",
"I_MFGBOMITEMWITHPHANTOMHIER",
"I_MFGREFHIERITEMWITHDETAILS",
"I_MFGREFSTRUCITEMWITHDETAILS",
"I_OPACTYNTWKELEMENT",
"I_OPERATIONACTIVITYTEXT",
"P_SFOTRACEABLEASSLDCOMP"
],
"ASSOCIATED":
[
"I_MATERIAL",
"I_OPACTYNTWKINSTANCE",
"I_OPERATIONACTIVITYINSTANCE",
"I_PLANT"
],
"BASE":
[
"P_SFOTRACEABLEASSLDCOMP"
],
"ANNO_REF":
[],
"SCALAR_FUNCTION":
[],
"VERSION":0,
"ANNOREF_EVALUATION_ERROR":""
}
}*/