@AbapCatalog.sqlViewName: 'PCCTRDISCURRCONV'
@AbapCatalog.compiler.compareFilter: true
@AccessControl.authorizationCheck: #NOT_REQUIRED
@AccessControl.personalData.blocking: #BLOCKED_DATA_EXCLUDED
@VDM.private: true
@VDM.viewType: #COMPOSITE
define view P_Cctr_Curr_Conv_Distr as select from
I_CntrlPurContrDistribution as _CntrlPurContrDistribution
//on _CentralPurchaseContract.CentralPurchaseContract = _CntrlPurContrDistribution.CentralPurchaseContract
left outer join I_CntrlPurContrReleaseHistory as _CntrlPurContrReleaseHistory
on _CntrlPurContrDistribution.CentralPurchaseContract = _CntrlPurContrReleaseHistory.CentralPurchaseContract
and _CntrlPurContrReleaseHistory.CentralPurchaseContractItem = _CntrlPurContrDistribution.CentralPurchaseContractItem
and _CntrlPurContrReleaseHistory.DistributionKey = _CntrlPurContrDistribution.DistributionKey
{
key _CntrlPurContrDistribution.CentralPurchaseContract,
key _CntrlPurContrDistribution.CentralPurchaseContractItem,
key _CntrlPurContrDistribution.DistributionKey,
key _CntrlPurContrReleaseHistory.ReleaseOrder,
key _CntrlPurContrReleaseHistory.ReleaseOrderItem,
_CntrlPurchaseContractItem.PurchaseContractType,
_CntrlPurContrReleaseHistory.ExtContractForPurg,
_CntrlPurContrReleaseHistory.ExtContractItemForPurg,
_CntrlPurContrDistribution.TargetAmount as DistributionTargetAmount,
_CntrlPurchaseContractItem.ContractNetPriceAmount as DistributionNetPriceAmount,
_CntrlPurContrDistribution.TargetQuantity as DistributionTargetQty,
_CntrlPurContrDistribution.OrderQuantityUnit as ReleaseOrderItemQuantityUnit,
_CntrlPurContrDistribution.DocumentCurrency as ReleaseOrderCurrency,
// case
// when _CntrlPurContrClassification.PurchaseContractClassification = '1'
// then
// _CntrlPurContrReleaseHistory.ReleaseOrderItemNetAmount
// else 0
// end as ConsumedValueForQuantity,
//for UoM conversion for qty contracts
cast( unit_conversion
( quantity => _CntrlPurContrReleaseHistory.ReleaseOrderItemOrderQuantity,
source_unit => _CntrlPurContrReleaseHistory.ReleaseOrderItemQuantityUnit,
target_unit => _CntrlPurContrDistribution.OrderQuantityUnit,
error_handling => 'KEEP_UNCONVERTED' //'FAIL_ON_ERROR'
) as abap.quan( 18, 3 ) ) as ReleaseOrderItemOrderQuantity,
@Semantics.amount.currencyCode: '_CentralPurchaseContract.DocumentCurrency'
@DefaultAggregation:#SUM
cast( _CntrlPurContrReleaseHistory.ReleaseOrderItemNetAmount as abap.curr( 23, 3 ) )
as ReleaseOrderItemNetAmount,
cast ( unit_conversion
( quantity => _CntrlPurContrReleaseHistory.GoodsReceiptQty,
source_unit => _CntrlPurContrReleaseHistory.ReleaseOrderItemQuantityUnit,
target_unit => _CntrlPurContrDistribution.OrderQuantityUnit,
error_handling => 'KEEP_UNCONVERTED' //'FAIL_ON_ERROR'
) as abap.quan( 18, 3 )) as GoodsReceiptQty,
@Semantics.amount.currencyCode: '_CentralPurchaseContract.DocumentCurrency'
@DefaultAggregation:#SUM
cast( _CntrlPurContrReleaseHistory.GoodsReceiptAmountInDspCrcy as abap.curr( 28, 3 ) )
as GoodsReceiptAmountInDspCrcy,
//IR Consumed Quantity
cast ( unit_conversion
( quantity => _CntrlPurContrReleaseHistory.CntrlPurContrInvcRcptQuantity,
source_unit => _CntrlPurContrReleaseHistory.ReleaseOrderItemQuantityUnit,
target_unit => _CntrlPurContrDistribution.OrderQuantityUnit,
error_handling => 'KEEP_UNCONVERTED' //'FAIL_ON_ERROR'
) as abap.quan( 18, 3 )) as CntrlPurContrInvcRcptQuantity,
//IR Consumed Amount
@Semantics.amount.currencyCode: '_CentralPurchaseContract.DocumentCurrency'
@DefaultAggregation:#SUM
cast( _CntrlPurContrReleaseHistory.CntrlPurContrInvcRcptAmount as abap.curr( 28, 3 ) )
as CntrlPurContrInvcRcptAmount
}