C_RequirementTrackingPurOrd

DDL: C_REQUIREMENTTRACKINGPURORD SQL: CREQTRACKPO Type: view CONSUMPTION

Purchase Orders by Requirement Tracking

C_RequirementTrackingPurOrd is a Consumption CDS View that provides data about "Purchase Orders by Requirement Tracking" in SAP S/4HANA. It reads from 1 data source (I_PurchaseOrderItem) and exposes 44 fields with key fields PurchaseOrder, PurchaseOrderItem. It has 10 associations to related views.

Data Sources (1)

SourceAliasJoin Type
I_PurchaseOrderItem I_PurchaseOrderItem from

Associations (10)

CardinalityTargetAliasCondition
[1..1] P_PurReqTrkAggrGRInv _PurReqTrkAggrGRInv _PurReqTrkAggrGRInv.PurchaseOrder = $projection.PurchaseOrder and _PurReqTrkAggrGRInv.PurchaseOrderItem = $projection.PurchaseOrderItem
[1..1] I_PurchasingCategoryMatlGroup _PurchasingCategoryMatlGrp $projection.MaterialGroup = _PurchasingCategoryMatlGrp.MaterialGroup
[1..1] R_POItemNextDeliveryCalc _POItemNextDeliveryCalc $projection.PurchaseOrder = _POItemNextDeliveryCalc.PurchaseOrder and $projection.PurchaseOrderItem = _POItemNextDeliveryCalc.PurchaseOrderItem
[1..1] R_POItemEnhcdNextDeliveryCalc _POItemEnhcdNextDeliveryCalc $projection.PurchaseOrder = _POItemEnhcdNextDeliveryCalc.PurchaseOrder and $projection.PurchaseOrderItem = _POItemEnhcdNextDeliveryCalc.PurchaseOrderItem
[1..1] I_PurgAnalyticsConfiguration _AnalyticalConfiguration _AnalyticalConfiguration.IsIntrastatReportingRelevant = 'X'
[0..1] C_MM_AccountAssignCatValueHelp _AccAssignValHelp _AccAssignValHelp.AccountAssignmentCategory = $projection.AccountAssignmentCategory
[1..1] I_ProcmtBlockedSupplier _ProcmtBlockedSupplier _ProcmtBlockedSupplier.PurchasingIsBlockedForSupplier = 'X'
[1..1] I_Supplier _Supplier $projection.supplier = _Supplier.Supplier
[1..1] I_PurchasingOrganization _PurchasingOrganization $projection.purchasingorganization = _PurchasingOrganization.PurchasingOrganization
[1..1] I_PurchasingGroup _PurchasingGroup $projection.purchasinggroup = _PurchasingGroup.PurchasingGroup

Annotations (12)

NameValueLevelField
AbapCatalog.sqlViewName CREQTRACKPO view
AbapCatalog.compiler.compareFilter true view
VDM.viewType #CONSUMPTION view
AccessControl.authorizationCheck #MANDATORY view
EndUserText.label Purchase Orders by Requirement Tracking view
Metadata.ignorePropagatedAnnotations true view
ObjectModel.usageType.dataClass #TRANSACTIONAL view
ObjectModel.usageType.serviceQuality #C view
ObjectModel.usageType.sizeCategory #L view
Search.searchable true view
AccessControl.personalData.blocking #BLOCKED_DATA_EXCLUDED view
VDM.lifecycle.contract.type #NONE view

Fields (44)

KeyFieldSource TableSource FieldDescription
KEY PurchaseOrder PurchaseOrder Purchase Order
KEY PurchaseOrderItem PurchaseOrderItem Item
FormattedPurchaseOrderItem Purchase Order Item
RequirementTracking RequirementTracking Requirement Tracking Number
Material Material
OrderQuantity Order Quantity
PurchaseOrderQuantityUnit PurchaseOrderQuantityUnit
OrderPriceUnit OrderPriceUnit
NetAmount Net Order Value
DocumentCurrency DocumentCurrency Document Currency
Supplier _PurchaseOrder Supplier
MaterialGroup MaterialGroup
PurchasingText PurchaseOrderItemText
PurchasingOrganization _PurchaseOrder PurchasingOrganization Purchasing Organization
PurchasingGroup _PurchaseOrder PurchasingGroup
Plant Plant
AccountAssignmentCategory AccountAssignmentCategory Account Assignment Category
CompanyCode CompanyCode
StorageLocation StorageLocation
PurchasingCategory
PurgCatName
PurchasingDocumentType Purchasing Document Type
PurchasingDocumentCategory Purchasing Document Category
PurchasingDocumentTypeName
PurgDocExternalItemCategory Item Category
PurchaseOrderItemCategory PurchaseOrderItemCategory
PurgDocItemCategoryName
PurchaseOrderDate _PurchaseOrder PurchaseOrderDate
CreatedByUser _PurchaseOrder CreatedByUser
UserDescription Created By
NetPriceAmount NetPriceAmount
OpenPurchaseOrderQuantity
NetPriceQuantity Price Unit
CreationDate _PurchaseOrder CreationDate
_PurchasingCategoryMatlGrp _PurchasingCategoryMatlGrp
_AccAssignValHelp _AccAssignValHelp
_Material _Material
_MaterialGroup _MaterialGroup
_Plant _Plant
_CompanyCode _CompanyCode
_StorageLocation _StorageLocation
_Supplier _Supplier
_PurchasingOrganization _PurchasingOrganization
_PurchasingGroup _PurchasingGroup
@AbapCatalog.sqlViewName: 'CREQTRACKPO'
@AbapCatalog.compiler.compareFilter: true
@VDM.viewType: #CONSUMPTION
@AccessControl.authorizationCheck: #MANDATORY
@EndUserText.label: 'Purchase Orders by Requirement Tracking'
@Metadata.ignorePropagatedAnnotations: true
@ObjectModel.usageType.dataClass: #TRANSACTIONAL
@ObjectModel.usageType.serviceQuality: #C
@ObjectModel.usageType.sizeCategory: #L
@ObjectModel.semanticKey: [ 'Material', 'Supplier' ]
@Search.searchable: true
@AccessControl.personalData.blocking: #BLOCKED_DATA_EXCLUDED
@VDM.lifecycle.contract.type:#NONE

define view C_RequirementTrackingPurOrd
  as select from I_PurchaseOrderItem

  association [1..1] to P_PurReqTrkAggrGRInv           as _PurReqTrkAggrGRInv          on  _PurReqTrkAggrGRInv.PurchaseOrder     = $projection.PurchaseOrder
                                                                                       and _PurReqTrkAggrGRInv.PurchaseOrderItem = $projection.PurchaseOrderItem

  association [1..1] to I_PurchasingCategoryMatlGroup  as _PurchasingCategoryMatlGrp   on  $projection.MaterialGroup = _PurchasingCategoryMatlGrp.MaterialGroup

  association [1..1] to R_POItemNextDeliveryCalc       as _POItemNextDeliveryCalc      on  $projection.PurchaseOrder     = _POItemNextDeliveryCalc.PurchaseOrder
                                                                                       and $projection.PurchaseOrderItem = _POItemNextDeliveryCalc.PurchaseOrderItem

  association [1..1] to R_POItemEnhcdNextDeliveryCalc  as _POItemEnhcdNextDeliveryCalc on  $projection.PurchaseOrder     = _POItemEnhcdNextDeliveryCalc.PurchaseOrder
                                                                                       and $projection.PurchaseOrderItem = _POItemEnhcdNextDeliveryCalc.PurchaseOrderItem

  association [1..1] to I_PurgAnalyticsConfiguration   as _AnalyticalConfiguration     on  _AnalyticalConfiguration.IsIntrastatReportingRelevant = 'X'

  association [0..1] to C_MM_AccountAssignCatValueHelp as _AccAssignValHelp            on  _AccAssignValHelp.AccountAssignmentCategory = $projection.AccountAssignmentCategory

  //association [1..1] to I_ProcurementDomainValues                    as _DomainText                on  _DomainText.Name        = 'VDM_BLOCKED_SUPPLIER'

  //                                                                                  and  _DomainText.Language    = $session.system_language

  //                                                                                  and  _DomainText.DomainValue = 'X'


  association [1..1] to I_ProcmtBlockedSupplier        as _ProcmtBlockedSupplier       on  _ProcmtBlockedSupplier.PurchasingIsBlockedForSupplier = 'X' //$projection.PurchasingIsBlocked


  association [1..1] to I_Supplier                     as _Supplier                    on  $projection.supplier = _Supplier.Supplier

  association [1..1] to I_PurchasingOrganization       as _PurchasingOrganization      on  $projection.purchasingorganization = _PurchasingOrganization.PurchasingOrganization

  association [1..1] to I_PurchasingGroup              as _PurchasingGroup             on  $projection.purchasinggroup = _PurchasingGroup.PurchasingGroup



{
      @EndUserText.label: 'Purchase Order'
      @Consumption.semanticObject: 'PurchaseOrder'
      @Search: { defaultSearchElement: true, ranking: #HIGH, fuzzinessThreshold: 0.8 }
  key PurchaseOrder,

      @EndUserText.label: 'Item'
      @Consumption.semanticObject: 'PurchaseOrderItem'
  key PurchaseOrderItem,

      @EndUserText.label: 'Purchase Order Item'
      @UI.lineItem.position: 10
      concat(PurchaseOrder, concat('/', PurchaseOrderItem))                                   as FormattedPurchaseOrderItem,

      @EndUserText.label: 'Requirement Tracking Number'
      @Search: { defaultSearchElement: true, ranking: #HIGH, fuzzinessThreshold: 1 }
      RequirementTracking, //Req. Tracking Number


      @UI.lineItem.position: 20
      @Consumption.semanticObject: 'Material'
      //@ObjectModel: { text.element:  [ 'MaterialName' ] }

      @ObjectModel.foreignKey.association: '_Material'
      Material,

      //      @UI.hidden: true

      //      @EndUserText: {

      //          label: 'Material Description'

      //      }

      //      _Material._Text[1: Language = $session.system_language].MaterialName,


      @UI.lineItem.position: 50
      @EndUserText.label: 'Order Quantity'
      @Semantics.quantity.unitOfMeasure: 'PurchaseOrderQuantityUnit'
      cast(OrderQuantity as vdm_po_orderquantity)                                             as OrderQuantity,

      @UI.hidden: true
      PurchaseOrderQuantityUnit, //Order Unit


      @UI.hidden: true
      OrderPriceUnit,

      @UI.lineItem.position: 60
      @EndUserText.label: 'Net Order Value'
      @Semantics.amount.currencyCode: 'DocumentCurrency'
      cast(NetAmount as vdm_ponetamount)                                                      as NetAmount,

      @UI.hidden: true
      @EndUserText.label: 'Document Currency'
      @Semantics.currencyCode: true
      DocumentCurrency,

      @Search: { defaultSearchElement: true, ranking: #HIGH, fuzzinessThreshold: 1 }
      @UI.lineItem.position: 30
      @Consumption.semanticObject: 'Supplier'
      // @ObjectModel: { text.element:  [ 'SupplierName' ] }

      @ObjectModel.foreignKey.association: '_Supplier'
      _PurchaseOrder.Supplier,

      //      @UI.hidden: true

      //      @EndUserText: {

      //          label: 'Supplier Name'

      //      }

      //      _PurchaseOrder._Supplier.SupplierName,

      //      @Consumption.semanticObject: 'MaterialGroup'

      @Search: { defaultSearchElement: true, ranking: #HIGH, fuzzinessThreshold: 1 }
      // @ObjectModel: { text.element:  [ 'MaterialGroupName' ] }

      @ObjectModel.foreignKey.association: '_MaterialGroup'
      MaterialGroup,

      //      @UI.hidden: true

      //      @EndUserText: {

      //          label: 'Material Group Description'

      //      }

      //      I_PurchaseOrderItem._MaterialGroup._Text[1: Language = $session.system_language ].MaterialGroupName,


      PurchaseOrderItemText                                                                   as PurchasingText, //short text


      //      @Consumption.semanticObject: 'PurchasingOrganization'

      @Search: { defaultSearchElement: true, ranking: #HIGH, fuzzinessThreshold: 1 }
      //@ObjectModel: { text.element:  [ 'PurchasingOrganizationName' ] }

      @EndUserText.label: 'Purchasing Organization'
      @ObjectModel.foreignKey.association: '_PurchasingOrganization'
      _PurchaseOrder.PurchasingOrganization, //Purch. Organization


      //      @UI.hidden: true

      //      @EndUserText: {

      //         label: 'Purchasing Organization Name'

      //     }

      //      _PurchaseOrder._PurchasingOrganization.PurchasingOrganizationName,

      //      @Consumption.semanticObject: 'PurchasingGroup'

      @Search: { defaultSearchElement: true, ranking: #HIGH, fuzzinessThreshold: 1 }
      //@ObjectModel: { text.element:  [ 'PurchasingGroupName' ] }

      @ObjectModel.foreignKey.association: '_PurchasingGroup'
      _PurchaseOrder.PurchasingGroup,

      //      @UI.hidden: true

      //      @EndUserText: {

      //          label: 'Purchasing Group Name'

      //      }

      //      _PurchaseOrder._PurchasingGroup.PurchasingGroupName,


      //      @Consumption.semanticObject: 'Plant'

      @Search: { defaultSearchElement: true, ranking: #HIGH, fuzzinessThreshold: 1 }
      // @ObjectModel: { text.element:  [ 'PlantName' ] }

      @ObjectModel.foreignKey.association: '_Plant'
      Plant,

      //      @UI.hidden: true

      //      @EndUserText: {

      //          label: 'Plant Name'

      //      }

      //      _Plant.PlantName,


      @EndUserText.label: 'Account Assignment Category'
      //@ObjectModel: { text.element:  [ 'AcctAssignmentCategoryName' ] }

      @ObjectModel.foreignKey.association: '_AccAssignValHelp'
      AccountAssignmentCategory, //Acct Assignment Cat.


      //      @UI.hidden: true

      //      @EndUserText: {

      //          label: 'Account Assignment Category Description'

      //      }

      //      _AccAssignValHelp.AcctAssignmentCategoryName,


      //@ObjectModel: { text.element:  [ 'CompanyCodeName' ] }

      //      @Consumption.semanticObject: 'CompanyCode'

      @ObjectModel.foreignKey.association: '_CompanyCode'
      CompanyCode,

      //      @UI.hidden: true

      //      @EndUserText: {

      //          label: 'Company Name'

      //      }

      //      I_PurchaseOrderItem._CompanyCode.CompanyCodeName,


      //@ObjectModel: { text.element:  [ 'StorageLocationName' ] }

      //      @Consumption.semanticObject: 'StorageLocation'

      @ObjectModel.foreignKey.association: '_StorageLocation'
      StorageLocation,

      //      @UI.hidden: true

      //      @EndUserText: {

      //          label: 'Storage Location Name'

      //      }

      //      _StorageLocation.StorageLocationName,


      @ObjectModel.text.element:  [ 'PurgCatName' ]
      // @ObjectModel.foreignKey.association: '_PurchasingCategory'

      _PurchasingCategoryMatlGrp._PurchasingCategory.PurchasingCategory                       as PurchasingCategory,

      @Semantics.text: true
      @UI.hidden: true
      @EndUserText: {
          label: 'Purchasing Category Name'
      }
      _PurchasingCategoryMatlGrp._PurchasingCategory.PurgCatName,

      @EndUserText.label: 'Purchasing Document Type'
      @ObjectModel: { text.element:  [ 'PurchasingDocumentTypeName' ] }
      // @ObjectModel.foreignKey.association: '_PurchaseOrder'

      _PurchaseOrder._PurchaseOrderType.PurchasingDocumentType,

      @EndUserText.label: 'Purchasing Document Category'
      _PurchaseOrder._PurchaseOrderType.PurchasingDocumentCategory,

      @UI.hidden: true
      @EndUserText: {
          label: 'Document Type Description'
      }
      _PurchaseOrder._PurchaseOrderType._Text[1: Language = $session.system_language ].PurchasingDocumentTypeName,

      @EndUserText.label: 'Item Category'
      @ObjectModel: { text.element:  [ 'PurgDocItemCategoryName' ] }
      //@ObjectModel.foreignKey.association: '_PurgDocumentItemCategory'

      _PurgDocumentItemCategory._Text[1: Language = $session.system_language].PurgDocExternalItemCategory, //as PurchasingDocumentItemCategory,


      @UI.hidden: true
      PurchaseOrderItemCategory, //Item category


      @UI.hidden: true
      @EndUserText: {
          label: 'Item Category Text'
      }
      _PurgDocumentItemCategory._Text[1: Language = $session.system_language ].PurgDocItemCategoryName,

      _PurchaseOrder.PurchaseOrderDate,


      @ObjectModel.text.element:  [ 'UserDescription' ]
      @UI.hidden: true
      //@ObjectModel.foreignKey.association: '_CreatedByUser'

      _PurchaseOrder.CreatedByUser,

      @EndUserText.label: 'Created By'
      @Semantics.text: true
      _PurchaseOrder._CreatedByUser.UserDescription,

      @Semantics.amount.currencyCode: 'DocumentCurrency'
      NetPriceAmount,

      @UI.lineItem.position: 40
      @UI.lineItem.criticality: 'DueDateCriticality'
      @UI.lineItem.criticalityRepresentation: #WITHOUT_ICON
      //      cast(_POItemNextDeliveryCalc.ScheduleLineDeliveryDate as vdm_schedulelinedeliverydate)   as   ScheduleLineDeliveryDate,

      //ScheduleLine Delivery Date calculation

      cast(case when (GoodsReceiptIsExpected <> 'X' or IsCompletelyDelivered = 'X'
                or PurchaseOrderItemCategory = 'A' )   --> A => Enhanced Limit

                then '00000000'

           when  _AnalyticalConfiguration.IsIntrastatReportingRelevant = 'X'
                then _POItemEnhcdNextDeliveryCalc.ScheduleLineDeliveryDate

           else _POItemNextDeliveryCalc.ScheduleLineDeliveryDate

           end as vdm_schedulelinedeliverydate)                                               as ScheduleLineDeliveryDate,

      @UI.hidden: true
      case
           when  _AnalyticalConfiguration.IsIntrastatReportingRelevant = 'X'
                then case when _POItemEnhcdNextDeliveryCalc.ScheduleLineDeliveryDate < $session.system_date
                          then 1
                          else 0
                          end
           else case when _POItemNextDeliveryCalc.ScheduleLineDeliveryDate < $session.system_date
                     then 1
                     else 0
                     end
           end                                                                                as DueDateCriticality,

      //      case

      //        when _POItemNextDeliveryCalc.ScheduleLineDeliveryDate < $session.system_date

      //        then 1

      //        else 0

      //        end                                                                               as   DueDateCriticality,


      @UI.lineItem.position: 90
      @Semantics.quantity.unitOfMeasure: 'PurchaseOrderQuantityUnit'
      cast(_POItemNextDeliveryCalc.ScheduleLineOpenQuantity as vdm_openpurchaseorderquantity) as OpenPurchaseOrderQuantity,

      @EndUserText.label: 'Supplier Block Status'
      cast(case when _PurchaseOrder._Supplier.PurchasingIsBlocked = 'X'
             then _ProcmtBlockedSupplier._Text[1: Language = $session.system_language ].SupplierName
             else ''
             end as vdm_purblockforsupplier)                                                  as PurchasingIsBlockedForSupplier,

      @Semantics.quantity.unitOfMeasure: 'OrderPriceUnit'
      @EndUserText.label: 'Price Unit'
      cast(NetPriceQuantity as vdm_netpricequantity)                                          as NetPriceQuantity,

      _PurchaseOrder.CreationDate,

      @EndUserText.label: 'Delivered Quantity'
      @Semantics.quantity.unitOfMeasure: 'PurchaseOrderQuantityUnit'
      cast(case
      when _PurReqTrkAggrGRInv.GoodsReceiptQty is null
      then cast(0 as abap.quan(13,3))
      else _PurReqTrkAggrGRInv.GoodsReceiptQty
      end as vdm_goodsreceiptqty)                                                             as GoodsReceiptQty,

      @Semantics.quantity.unitOfMeasure: 'PurchaseOrderQuantityUnit'
      @UI.lineItem.position: 70
      cast(case
      when IsCompletelyDelivered <> ' ' or GoodsReceiptIsExpected = ' '
      then cast (0 as abap.quan(13,3))
      else
        case IsReturnsItem
        when 'X' then
            case
            when _PurReqTrkAggrGRInv.GoodsReceiptQty is null
            then -1 * OrderQuantity
            else -1 * cast((OrderQuantity - _PurReqTrkAggrGRInv.GoodsReceiptQty) as abap.quan(13,3))
        end
        else
            case
            when _PurReqTrkAggrGRInv.GoodsReceiptQty is null
            then OrderQuantity
            else cast((OrderQuantity - _PurReqTrkAggrGRInv.GoodsReceiptQty) as abap.quan(13,3))
            end
        end
      end as vdm_stilltobedeliveredquantity)                                                  as StillToBeDeliveredQuantity,

      @EndUserText.label: 'Delivered Value'
      @Semantics.amount.currencyCode: 'DocumentCurrency'
      cast(case
      when _PurReqTrkAggrGRInv.GoodsReceiptAmountInDspCrcy is null
      then cast(0 as abap.curr(18, 2))
      else _PurReqTrkAggrGRInv.GoodsReceiptAmountInDspCrcy
      end  as vdm_goodsreceipt)                                                               as GoodsReceiptAmountInDspCrcy,

      @Semantics.amount.currencyCode: 'DocumentCurrency'
      cast(case when IsCompletelyDelivered <> ' ' or GoodsReceiptIsExpected = ' ' or OrderQuantity = 0 or NetPriceAmount = 0 // 2939255

                  or NetPriceQuantity = 0 //Fix - ATC - Division by 0

      then cast(0 as abap.curr(18, 2))
      else
        case IsReturnsItem
        when 'X' then
            case when _PurReqTrkAggrGRInv.GoodsReceiptQty is null
            then -1 * cast((division(OrderQuantity,NetPriceQuantity,3) * NetPriceAmount) as abap.curr(18, 2)) // 2939255

            else -1 * cast((division((OrderQuantity - _PurReqTrkAggrGRInv.GoodsReceiptQty),NetPriceQuantity,3) * NetPriceAmount) as abap.curr(18, 2)) // 2939255

            end
        else
            case when _PurReqTrkAggrGRInv.GoodsReceiptQty is null
            then cast((division(OrderQuantity,NetPriceQuantity,3) * NetPriceAmount) as abap.curr(18, 2)) // 2939255

            else cast((division((OrderQuantity - _PurReqTrkAggrGRInv.GoodsReceiptQty),NetPriceQuantity,3) * NetPriceAmount) as abap.curr(18, 2)) // 2939255

            end
        end
      end as vdm_stilltobedeliveredvalue)                                                     as StillToBeDeliveredValue,

      @EndUserText.label: 'Invoice Quantity'
      @Semantics.quantity.unitOfMeasure: 'PurchaseOrderQuantityUnit'
      cast(case
      when _PurReqTrkAggrGRInv.InvoiceReceiptQty is null
      then cast(0 as abap.quan(13,3))
      else _PurReqTrkAggrGRInv.InvoiceReceiptQty
      end as vdm_invoicereceiptqty)                                                           as InvoiceReceiptQty,

      @Semantics.quantity.unitOfMeasure: 'PurchaseOrderQuantityUnit'
      cast(case when IsFinallyInvoiced = 'X' or InvoiceIsExpected = ' '
      then cast(0 as abap.quan(13,3))
      else case when GoodsReceiptIsExpected = 'X' and (IsCompletelyDelivered <> ' ' or _PurReqTrkAggrGRInv.GoodsReceiptQty > OrderQuantity)
        then
            case IsReturnsItem
            when 'X' then -1 * cast(abs(_PurReqTrkAggrGRInv.GoodsReceiptQty) - abs(_PurReqTrkAggrGRInv.InvoiceReceiptQty)as abap.quan(13,3))
            else cast(abs(_PurReqTrkAggrGRInv.GoodsReceiptQty) - abs(_PurReqTrkAggrGRInv.InvoiceReceiptQty)as abap.quan(13,3))
            end
        else
            case IsReturnsItem
            when 'X' then
                case when _PurReqTrkAggrGRInv.GoodsReceiptQty is null
                then -1 * OrderQuantity
                else -1 * cast(OrderQuantity - abs(_PurReqTrkAggrGRInv.InvoiceReceiptQty) as abap.quan(13,3))
                end
            else
                case when _PurReqTrkAggrGRInv.GoodsReceiptQty is null
                then OrderQuantity
                else cast(OrderQuantity - abs(_PurReqTrkAggrGRInv.InvoiceReceiptQty) as abap.quan(13,3))
                end
            end
        end
      end as vdm_stilltoinvoicequantity)                                                      as StillToInvoiceQuantity,

      @Semantics.amount.currencyCode: 'DocumentCurrency'
      cast(case
      when _PurReqTrkAggrGRInv.InvoicedAmountInDspCurrency is null
      then cast(0 as abap.curr(18, 2))
      else _PurReqTrkAggrGRInv.InvoicedAmountInDspCurrency
      end as vdm_invoicevalue)                                                                as InvoicedAmountInDspCurrency,

      @Semantics.amount.currencyCode: 'DocumentCurrency'
      @UI.lineItem.position: 80
      cast(case when IsFinallyInvoiced = 'X' or InvoiceIsExpected = ' ' or NetPriceAmount = 0 // 2939255

                     or NetPriceQuantity = 0 //BCP Internal Incident: 2280087629

      then cast(0 as abap.curr(18, 2))
      else case when GoodsReceiptIsExpected = 'X' and (IsCompletelyDelivered <> ' ' or _PurReqTrkAggrGRInv.GoodsReceiptQty > OrderQuantity)
        then cast((division((_PurReqTrkAggrGRInv.GoodsReceiptQty - _PurReqTrkAggrGRInv.InvoiceReceiptQty),NetPriceQuantity,3) * NetPriceAmount) as abap.curr(18, 2)) // 2939255

        else case when _PurReqTrkAggrGRInv.GoodsReceiptQty is null
            then cast((division(OrderQuantity,NetPriceQuantity,3) * NetPriceAmount) as abap.curr(18, 2)) // 2939255

            else cast((division((OrderQuantity - _PurReqTrkAggrGRInv.InvoiceReceiptQty),NetPriceQuantity,3)  * NetPriceAmount) as abap.curr(18, 2)) // 2939255

            end
        end
      end as vdm_stilltoinvoicevalue)                                                         as StillToInvoiceValue,

      //ItemCount


      _PurchasingCategoryMatlGrp,
      _AccAssignValHelp,
      //    _ProcmtBlockedSupplier

      _Material,
      _MaterialGroup,
      _Plant,
      _CompanyCode,
      _StorageLocation,
      _Supplier,
      _PurchasingOrganization,
      _PurchasingGroup

      //    _CreatedByUser

      //     _PurgDocumentItemCategory






}

where
  // PurchaseOrderItem.PurchasingDocumentCategory = 'F'

      _PurchaseOrder.PurchasingDocumentDeletionCode                           =  ''
  and I_PurchaseOrderItem.PurchasingDocumentDeletionCode                      =  ''
  and I_PurchaseOrderItem.IsCompletelyDelivered                               =  ''
  and(
    (
      I_PurchaseOrderItem._PurchaseOrder._Supplier.IsBusinessPurposeCompleted <> 'X'
    )
    or(
      I_PurchaseOrderItem._PurchaseOrder.Supplier                             =  ' '
    )
  )
/*+[internal] {
"BASEINFO":
{
"FROM":
[
"I_PROCMTBLOCKEDSUPPLIER",
"I_PROCMTBLOCKEDSUPPLIERTXT",
"I_PURCHASEORDER",
"I_PURCHASEORDERITEM",
"I_PURCHASINGCATEGORY",
"I_PURCHASINGCATEGORYMATLGROUP",
"I_PURCHASINGDOCUMENTTYPE",
"I_PURCHASINGDOCUMENTTYPETEXT",
"I_PURGANALYTICSCONFIGURATION",
"I_PURGDOCUMENTITEMCATEGORY",
"I_PURGDOCUMENTITEMCATEGORYTEXT",
"I_SUPPLIER",
"I_USER",
"P_PURREQTRKAGGRGRINV",
"R_POITEMENHCDNEXTDELIVERYCALC",
"R_POITEMNEXTDELIVERYCALC"
],
"ASSOCIATED":
[
"C_MM_ACCOUNTASSIGNCATVALUEHELP",
"I_COMPANYCODE",
"I_MATERIAL",
"I_MATERIALGROUP",
"I_PLANT",
"I_PROCMTBLOCKEDSUPPLIER",
"I_PURCHASINGCATEGORYMATLGROUP",
"I_PURCHASINGGROUP",
"I_PURCHASINGORGANIZATION",
"I_PURGANALYTICSCONFIGURATION",
"I_STORAGELOCATION",
"I_SUPPLIER",
"P_PURREQTRKAGGRGRINV",
"R_POITEMENHCDNEXTDELIVERYCALC",
"R_POITEMNEXTDELIVERYCALC"
],
"BASE":
[
"I_PURCHASEORDERITEM"
],
"ANNO_REF":
[],
"SCALAR_FUNCTION":
[],
"VERSION":0,
"ANNOREF_EVALUATION_ERROR":""
}
}*/