@EndUserText.label: 'Freight Unit Management'
@ObjectModel: { representativeKey: 'TransportationOrderUUID',
semanticKey: 'FreightUnit',
usageType: { serviceQuality: #C,
sizeCategory: #XL,
dataClass: #TRANSACTIONAL}}
@VDM: { viewType: #CONSUMPTION}
@AbapCatalog: { sqlViewName: 'CTORFUMNGMT',
compiler: {compareFilter: true},
buffering: {status: #NOT_ALLOWED},
preserveKey: true}
@AccessControl: { authorizationCheck: #CHECK,
personalData.blocking:#('TRANSACTIONAL_DATA'),
privilegedAssociations: [ '_TranspOrdSummary',
'_SourceStop',
'_DestinationStop']}
@Metadata.allowExtensions: true
@ClientHandling.algorithm: #SESSION_VARIABLE
define root view C_FrtUnitManagement
as select from I_TransportationOrder
association [0..1] to E_TransportationOrder as _Extension on $projection.TransportationOrderUUID = _Extension.TransportationOrderUUID
association [0..1] to I_BusinessPartner as _SoldToParty on $projection.Consignee = _SoldToParty.BusinessPartner
association [0..1] to I_BusinessPartnerVH as _SoldToPartyVH on $projection.Consignee = _SoldToPartyVH.BusinessPartner
association [0..1] to I_FreightUnitVH as _FreightUnitVH on $projection.FreightUnit = _FreightUnitVH.FreightUnit
association [1..1] to I_TransportationOrderItem as _FURItem on $projection.TransportationOrderUUID = _FURItem.TransportationOrderUUID
and _FURItem.TranspOrdItemCategory = 'FUR'
{
// Root Attributes
key cast(TransportationOrderUUID as /scmtms/vdm_tor_db_key preserving type ) as TransportationOrderUUID,
TransportationOrder as FreightUnit,
@ObjectModel.text.element: ['TransportationOrderTypeDesc']
TransportationOrderType as TransportationOrderType,
@Semantics.text: true
_TransportationOrderType._Text[1:Language = $session.system_language ].TransportationOrderTypeDesc as TransportationOrderTypeDesc,
PurchasingOrgExternalID as PurchasingOrgExternalID,
PurchasingGroupExternalID as PurchasingGroupExternalID,
cast(_PlngAndExecOrganization.OrganizationalUnitExternalID as /scmtms/exec_org_ext_id preserving type ) as PlngAndExecOrgExternalID,
cast(_PlngAndExecGroup.OrganizationalUnitExternalID as /scmtms/exec_grp_ext_id preserving type ) as PlngAndExecGroupExternalID,
// For Authorization
TranspOrdResponsiblePerson as TranspOrdResponsiblePerson,
// For Authorization
@ObjectModel.text.element: ['TransportationModeDesc']
TransportationMode as TransportationMode,
@Semantics.text: true
_TransportationMode._Text[1:Language = $session.system_language].TransportationModeDesc as TransportationModeDesc,
// For Authorization
TransportationOrderCategory as TransportationOrderCategory,
@Semantics.quantity.unitOfMeasure: 'TranspOrdGrossWeightUnit'
cast(TranspOrdGrossWeight as /scmtms/quantity_13_3 ) as TranspOrdGrossWeight,
TranspOrdGrossWeightUnit as TranspOrdGrossWeightUnit,
@Semantics.quantity.unitOfMeasure: 'TranspOrdGrossVolumeUnit'
cast(TranspOrdGrossVolume as /scmtms/quantity_13_3 ) as TranspOrdGrossVolume,
TranspOrdGrossVolumeUnit as TranspOrdGrossVolumeUnit,
@Semantics.quantity.unitOfMeasure: 'TranspOrdQuantityUnit'
cast(TranspOrdQuantity as /scmtms/quantity_13_3 ) as TranspOrdQuantity,
TranspOrdQuantityUnit as TranspOrdQuantityUnit,
@Semantics.quantity.unitOfMeasure: 'TranspOrdPalletSpacesUnit'
cast(TranspOrdPalletSpacesQty as /scmtms/quantity_13_3 ) as TranspOrdPalletSpacesQty,
TranspOrdPalletSpacesUnit as TranspOrdPalletSpacesUnit,
@Semantics.quantity.unitOfMeasure: 'TranspOrdLoadMetersUnit'
cast(TranspOrdLoadMetersQty as /scmtms/quantity_13_3 ) as TranspOrdLoadMetersQty,
TranspOrdLoadMetersUnit as TranspOrdLoadMetersUnit,
Shipper as Shipper,
@ObjectModel.foreignKey.association: '_SoldToParty'
Consignee as Consignee,
// Status
@ObjectModel.text.element: ['TranspOrdLifeCycleStatusDesc']
TranspOrdLifeCycleStatus as TranspOrdLifeCycleStatus,
//Life Cycle status with color coding
cast( case TranspOrdLifeCycleStatus
when '10' then 1
when '01' then 0
when '02' then 0
when '05' then 3
end as /scmtms/vdm_tor_lc_sts_critlty ) as TranspOrdLifeCycStsCritlty,
@Semantics.text: true
_TranspOrdLifeCycleStatus._Text[1:Language = $session.system_language ].TranspOrdLifeCycleStatusDesc as TranspOrdLifeCycleStatusDesc,
@ObjectModel.text.element: ['TranspOrdPlanningStatusDesc']
TranspOrdPlanningStatus as TranspOrdPlanningStatus,
@Semantics.text: true
_TranspOrdPlanningStatus._Text[1:Language = $session.system_language ].TranspOrdPlanningStatusDesc as TranspOrdPlanningStatusDesc,
@ObjectModel.text.element: ['TransportationOrderExecStsDesc']
TransportationOrderExecSts as TransportationOrderExecSts,
@Semantics.text: true
_TransportationOrderExecSts._Text[1:Language = $session.system_language ].TransportationOrderExecStsDesc as TransportationOrderExecStsDesc,
@ObjectModel.text.element: ['TranspOrderDngrsGdsStsDesc']
TranspOrderDngrsGdsSts as TranspOrderDngrsGdsSts,
@Semantics.text: true
_TranspOrdDngrsGdsStatus._Text[1:Language = $session.system_language ].TranspOrderDngrsGdsStsDesc as TranspOrderDngrsGdsStsDesc,
// Predecessor document type
_FURItem.TranspOrdDocReferenceID as TranspOrdDocReferenceID,
@ObjectModel.text.element: ['TranspOrdDocReferenceTypeDesc']
_FURItem.TranspOrdDocReferenceType as TranspOrdDocReferenceType,
@Semantics.text: true
_FURItem._BusTransDocTypeCode._Text[1:Language = $session.system_language ].BusinessTransactionDocTypeName as TranspOrdDocReferenceTypeDesc,
// Plannning Block
@ObjectModel.text.element: ['TranspOrdPlanningBlockDesc']
TranspOrdPlanningBlock as TranspOrdPlanningBlock,
@Semantics.text: true
_TranspOrdPlanningBlock._Text[1:Language = $session.system_language ].TranspOrdPlanningBlockDesc as TranspOrdPlanningBlockDesc,
// Execution Block
@ObjectModel.text.element: ['TranspOrdExecutionBlockDesc']
TranspOrdExecutionIsBlocked as TranspOrdExecutionIsBlocked,
@Semantics.text: true
_TranspOrdExecutionIsBlocked._Text[1:Language = $session.system_language ].TranspOrdExecutionBlockDesc as TranspOrdExecutionBlockDesc,
@ObjectModel.text.element: ['SourceLocationLabel']
_SourceStop.LocationId as SourceLocation,
@Semantics.text: true
_SourceStop._Locationdescr.AddressObjectDescription as SourceLocationLabel,
@ObjectModel.text.element: ['DestinationLocationLabel']
_DestinationStop.LocationId as DestinationLocation,
@Semantics.text: true
_DestinationStop._Locationdescr.AddressObjectDescription as DestinationLocationLabel,
// Dates & Times
//Earliest Start Date/Time at Source / Loading Location
cast( case when _SourceStop.TranspOrdStopReqStartDteTme <> 0 then _SourceStop.TranspOrdStopReqStartDteTme
else case when _SourceStop.TranspOrdStopAccptblStrtDteTme <> 0 then _SourceStop.TranspOrdStopAccptblStrtDteTme
else case when _SourceStop.TranspOrdStopAccptblEndDteTme <> 0 then _SourceStop.TranspOrdStopAccptblEndDteTme
else _SourceStop.TranspOrdStopReqEndDteTme
end
end
end as timestamp preserving type ) as TranspOrdSrceReqdStrtDteTme,
@Consumption.filter.selectionType: #INTERVAL
tstmp_to_dats( cast(
case when _SourceStop.TranspOrdStopReqStartDteTme <> 0 then _SourceStop.TranspOrdStopReqStartDteTme
else case when _SourceStop.TranspOrdStopAccptblStrtDteTme <> 0 then _SourceStop.TranspOrdStopAccptblStrtDteTme
else case when _SourceStop.TranspOrdStopAccptblEndDteTme <> 0 then _SourceStop.TranspOrdStopAccptblEndDteTme
else _SourceStop.TranspOrdStopReqEndDteTme
end
end
end as timestamp preserving type ),
abap_user_timezone( $session.user,$session.client,'NULL' ) , $session.client, 'NULL' ) as TranspOrdSrceReqdStrtDte,
//Latest End Date/Time at Source / Loading Location
cast( case when _SourceStop.TranspOrdStopReqEndDteTme <> 0 then _SourceStop.TranspOrdStopReqEndDteTme
else case when _SourceStop.TranspOrdStopAccptblEndDteTme <> 0 then _SourceStop.TranspOrdStopAccptblEndDteTme
else case when _SourceStop.TranspOrdStopAccptblStrtDteTme <> 0 then _SourceStop.TranspOrdStopAccptblStrtDteTme
else _SourceStop.TranspOrdStopReqStartDteTme
end
end
end as timestamp preserving type ) as TranspOrdSrceReqdEndDteTme,
@Consumption.filter.selectionType: #INTERVAL
tstmp_to_dats( cast(
case when _SourceStop.TranspOrdStopReqEndDteTme <> 0 then _SourceStop.TranspOrdStopReqEndDteTme
else case when _SourceStop.TranspOrdStopAccptblEndDteTme <> 0 then _SourceStop.TranspOrdStopAccptblEndDteTme
else case when _SourceStop.TranspOrdStopAccptblStrtDteTme <> 0 then _SourceStop.TranspOrdStopAccptblStrtDteTme
else _SourceStop.TranspOrdStopReqStartDteTme
end
end
end as timestamp preserving type ),
abap_user_timezone( $session.user,$session.client,'NULL' ) , $session.client, 'NULL' ) as TranspOrdSrceReqdEndDte,
//Earliest Start Date/Time at Destination / Unloading Location
cast( case when _DestinationStop.TranspOrdStopReqStartDteTme <> 0 then _DestinationStop.TranspOrdStopReqStartDteTme
else case when _DestinationStop.TranspOrdStopAccptblStrtDteTme <> 0 then _DestinationStop.TranspOrdStopAccptblStrtDteTme
else case when _DestinationStop.TranspOrdStopAccptblEndDteTme <> 0 then _DestinationStop.TranspOrdStopAccptblEndDteTme
else _DestinationStop.TranspOrdStopReqEndDteTme
end
end
end as timestamp preserving type ) as TranspOrdDestReqdStrtDteTme,
@Consumption.filter.selectionType: #INTERVAL
tstmp_to_dats( cast(
case when _DestinationStop.TranspOrdStopReqStartDteTme <> 0 then _DestinationStop.TranspOrdStopReqStartDteTme
else case when _DestinationStop.TranspOrdStopAccptblStrtDteTme <> 0 then _DestinationStop.TranspOrdStopAccptblStrtDteTme
else case when _DestinationStop.TranspOrdStopAccptblEndDteTme <> 0 then _DestinationStop.TranspOrdStopAccptblEndDteTme
else _DestinationStop.TranspOrdStopReqEndDteTme
end
end
end as timestamp preserving type ),
abap_user_timezone( $session.user,$session.client,'NULL' ) , $session.client, 'NULL' ) as TranspOrdDestReqdStrtDte,
//Latest End Date/Time at Destination / Unloading Location
cast( case when _DestinationStop.TranspOrdStopReqEndDteTme <> 0 then _DestinationStop.TranspOrdStopReqEndDteTme
else case when _DestinationStop.TranspOrdStopAccptblEndDteTme <> 0 then _DestinationStop.TranspOrdStopAccptblEndDteTme
else case when _DestinationStop.TranspOrdStopAccptblStrtDteTme <> 0 then _DestinationStop.TranspOrdStopAccptblStrtDteTme
else _DestinationStop.TranspOrdStopReqStartDteTme
end
end
end as timestamp preserving type ) as TranspOrdDestReqdEndDteTme,
@Consumption.filter.selectionType: #INTERVAL
tstmp_to_dats( cast(
case when _DestinationStop.TranspOrdStopReqEndDteTme <> 0 then _DestinationStop.TranspOrdStopReqEndDteTme
else case when _DestinationStop.TranspOrdStopAccptblEndDteTme <> 0 then _DestinationStop.TranspOrdStopAccptblEndDteTme
else case when _DestinationStop.TranspOrdStopAccptblStrtDteTme <> 0 then _DestinationStop.TranspOrdStopAccptblStrtDteTme
else _DestinationStop.TranspOrdStopReqStartDteTme
end
end
end as timestamp preserving type ),
abap_user_timezone( $session.user,$session.client,'NULL' ) , $session.client, 'NULL' ) as TranspOrdDestReqdEndDte,
// Summary
_TranspOrdSummary.IncotermsPart1 as IncotermsPart1,
_TranspOrdSummary.IncotermsPart2 as IncotermsPart2,
@ObjectModel.text.element: ['TranspOrdShippingConditionDesc']
_FURItem.TranspOrdShippingCondition as TranspOrdShippingCondition,
@Semantics.text: true
_FURItem._ShippingCondition._Text[1:Language = $session.system_language ].ShippingConditionName as TranspOrdShippingConditionDesc,
@Consumption.filter.hidden: true
_SourceStop,
@Consumption.filter.hidden: true
_DestinationStop,
@Consumption.filter.hidden: true
_TranspOrdSummary,
@Consumption.filter.hidden: true
_TranspOrdPlanningStatus,
@Consumption.filter.hidden: true
_TranspOrdLifeCycleStatus,
@Consumption.filter.hidden: true
_TransportationOrderExecSts,
@Consumption.filter.hidden: true
_TranspOrdDngrsGdsStatus,
@Consumption.filter.hidden: true
_TranspOrdPlanningBlock,
@Consumption.filter.hidden: true
_TranspOrdExecutionIsBlocked,
@Consumption.filter.hidden: true
_SoldToParty,
@Consumption.filter.hidden: true
_SoldToPartyVH,
@UI.hidden: true
_SoldToParty.BusinessPartnerName,
@Consumption.filter.hidden: true
_FreightUnitVH,
_TransportationOrderType
}
where
TransportationOrderCategory = 'FU'
and TransportationOrder is not initial
/*+[internal] {
"BASEINFO":
{
"FROM":
[
"I_BUSINESSPARTNER",
"I_BUSTRANSDOCTYPECODE",
"I_BUSTRANSDOCTYPECODETEXT",
"I_SHIPPINGCONDITION",
"I_SHIPPINGCONDITIONTEXT",
"I_TMLOCATIONDESCRIPTION",
"I_TRANSPORDDNGRSGDSSTATUS",
"I_TRANSPORDDNGRSGDSSTATUSTEXT",
"I_TRANSPORDEXECUTIONBLOCKTEXT",
"I_TRANSPORDEXECUTIONISBLOCKED",
"I_TRANSPORDLIFECYCLESTATUS",
"I_TRANSPORDLIFECYCLESTATUSTEXT",
"I_TRANSPORDPLANNINGBLOCK",
"I_TRANSPORDPLANNINGBLOCKTEXT",
"I_TRANSPORDPLANNINGSTATUS",
"I_TRANSPORDPLANNINGSTATUST",
"I_TRANSPORGANIZATIONALUNIT",
"I_TRANSPORTATIONMODE",
"I_TRANSPORTATIONMODETEXT",
"I_TRANSPORTATIONORDER",
"I_TRANSPORTATIONORDEREXECSTS",
"I_TRANSPORTATIONORDEREXECSTST",
"I_TRANSPORTATIONORDERITEM",
"I_TRANSPORTATIONORDERSMMRY",
"I_TRANSPORTATIONORDERSTOP",
"I_TRANSPORTATIONORDERTYPE",
"I_TRANSPORTATIONORDERTYPETEXT"
],
"ASSOCIATED":
[
"E_TRANSPORTATIONORDER",
"I_BUSINESSPARTNER",
"I_BUSINESSPARTNERVH",
"I_FREIGHTUNITVH",
"I_TRANSPORDDNGRSGDSSTATUS",
"I_TRANSPORDEXECUTIONISBLOCKED",
"I_TRANSPORDLIFECYCLESTATUS",
"I_TRANSPORDPLANNINGBLOCK",
"I_TRANSPORDPLANNINGSTATUS",
"I_TRANSPORTATIONORDEREXECSTS",
"I_TRANSPORTATIONORDERITEM",
"I_TRANSPORTATIONORDERSMMRY",
"I_TRANSPORTATIONORDERSTOP",
"I_TRANSPORTATIONORDERTYPE"
],
"BASE":
[
"I_TRANSPORTATIONORDER"
],
"ANNO_REF":
[],
"SCALAR_FUNCTION":
[],
"VERSION":0,
"ANNOREF_EVALUATION_ERROR":""
}
}*/