I_ExciseTaxMatlDocItem

DDL: I_EXCISETAXMATLDOCITEM SQL: IET_MATLDOCITM Type: view COMPOSITE

MatlDocItem for Industry Excise Tax

I_ExciseTaxMatlDocItem is a Composite CDS View that provides data about "MatlDocItem for Industry Excise Tax" in SAP S/4HANA. It reads from 1 data source (I_MaterialDocumentRecord) and exposes 59 fields with key fields MaterialDocument, MaterialDocumentYear, MaterialDocumentItem. It has 9 associations to related views.

Data Sources (1)

SourceAliasJoin Type
I_MaterialDocumentRecord _MaterialDocumentItem from

Associations (9)

CardinalityTargetAliasCondition
[1..1] I_MaterialDocumentYear _MaterialDocumentYear $projection.MaterialDocumentYear = _MaterialDocumentYear.MaterialDocumentYear
[1..1] I_MaterialDocumentHeader _MaterialDocumentHeader $projection.MaterialDocumentYear = _MaterialDocumentHeader.MaterialDocumentYear and $projection.MaterialDocument = _MaterialDocumentHeader.MaterialDocument
[0..1] I_SalesDocumentItem _SalesOrderItem _MaterialDocumentItem.SalesOrder = _SalesOrderItem.SalesDocument and _MaterialDocumentItem.SalesOrderItem = _SalesOrderItem.SalesDocumentItem and ( _SalesOrderItem.SDDocumentCategory = 'C' or _SalesOrderItem.SDDocumentCategory = 'H' or _SalesOrderItem.SDDocumentCategory = '' )
[0..1] I_DeliveryDocumentItem _SalesOrderItemFromDelivItem $projection.DeliveryDocument = _SalesOrderItemFromDelivItem.DeliveryDocument and $projection.DeliveryDocumentItem = _SalesOrderItemFromDelivItem.DeliveryDocumentItem and ( _SalesOrderItemFromDelivItem.ReferenceSDDocumentCategory = 'C' or _SalesOrderItemFromDelivItem.ReferenceSDDocumentCategory = 'H' )
[0..1] I_SalesDocumentItemCategory _SalesItemCategory $projection.SalesDocumentItemCategory = _SalesItemCategory.SalesDocumentItemCategory
[0..1] I_UnitOfMeasure _UnitOfMeasure $projection.MaterialBaseUnit = _UnitOfMeasure.UnitOfMeasure
[0..1] I_DeliveryDocumentItem _PurgOrderItemFromDelivItem $projection.DeliveryDocument = _PurgOrderItemFromDelivItem.DeliveryDocument and $projection.DeliveryDocumentItem = _PurgOrderItemFromDelivItem.DeliveryDocumentItem and _PurgOrderItemFromDelivItem.ReferenceSDDocumentCategory = 'V'
[0..1] I_ExsTxPurOrderHistory _MaterialDocumentItemPO _MaterialDocumentItem.PurchaseOrder = _MaterialDocumentItemPO.PurchaseOrder and _MaterialDocumentItem.PurchaseOrderItem = _MaterialDocumentItemPO.PurchaseOrderItem and _MaterialDocumentItemPO.PurchasingHistoryDocumentType = '6' and ( ( _MaterialDocumentItem.DebitCreditCode = 'S' and _MaterialDocumentItem.IsReversalMovementType = '' and _MaterialDocumentItemPO.DebitCreditCode = 'H' ) or( _MaterialDocumentItem.DebitCreditCode = 'H' and _MaterialDocumentItem.IsReversalMovementType = 'X' and _MaterialDocumentItemPO.DebitCreditCode = 'H' ) ) and ( ( _MaterialDocumentItemPO.DebitCreditCode = 'H' and _MaterialDocumentItemPO.IsReversalMovementType = '' ) or( _MaterialDocumentItemPO.DebitCreditCode = 'S' and _MaterialDocumentItemPO.IsReversalMovementType = 'X' ) ) and _MaterialDocumentItem.PurchaseOrder is not null and _MaterialDocumentItem.PurchaseOrder != '' and ( _MaterialDocumentItemPO.StorageLocation != '' and _MaterialDocumentItemPO.StorageLocation is not null ) and ( _MaterialDocumentItem.IsAutomaticallyCreated is null or _MaterialDocumentItem.IsAutomaticallyCreated = '' ) and ( _MaterialDocumentItem.DeliveryDocument is null or _MaterialDocumentItem.DeliveryDocument = '' or( _MaterialDocumentItem.DeliveryDocument = _MaterialDocumentItemPO.DeliveryDocument and _MaterialDocumentItem.DeliveryDocumentItem = _MaterialDocumentItemPO.DeliveryDocumentItem ) or( _MaterialDocumentItem.DeliveryDocument != _MaterialDocumentItemPO.DeliveryDocument ) )
[1..1] I_SDDocumentProcessFlow _docflow _docflow.SubsequentDocument = _MaterialDocumentItem.DeliveryDocument and _docflow.SubsequentDocumentItem = _MaterialDocumentItem.DeliveryDocumentItem and _docflow.SubsequentDocumentCategory = 'J' and _docflow.PrecedingDocumentCategory = 'C'

Annotations (12)

NameValueLevelField
AbapCatalog.sqlViewName IET_MATLDOCITM view
AbapCatalog.compiler.compareFilter true view
AbapCatalog.preserveKey true view
ObjectModel.supportedCapabilities #TRANSACTIONAL_PROVIDER view
AccessControl.authorizationCheck #CHECK view
EndUserText.label MatlDocItem for Industry Excise Tax view
ClientHandling.algorithm #SESSION_VARIABLE view
ObjectModel.usageType.sizeCategory #XXL view
ObjectModel.usageType.serviceQuality #C view
ObjectModel.usageType.dataClass #MIXED view
VDM.viewType #COMPOSITE view
Metadata.ignorePropagatedAnnotations true view

Fields (59)

KeyFieldSource TableSource FieldDescription
KEY MaterialDocument I_MaterialDocumentRecord MaterialDocument
KEY MaterialDocumentYear I_MaterialDocumentRecord MaterialDocumentYear
KEY MaterialDocumentItem I_MaterialDocumentRecord MaterialDocumentItem
CompanyCode I_MaterialDocumentRecord CompanyCode
Plant I_MaterialDocumentRecord Plant
StorageLocation I_MaterialDocumentRecord StorageLocation
CostCenter I_MaterialDocumentRecord CostCenter
PostingDate I_MaterialDocumentRecord PostingDate
DocumentDate I_MaterialDocumentRecord DocumentDate
CreationDate I_MaterialDocumentRecord CreationDate
CreationTime I_MaterialDocumentRecord CreationTime
Material I_MaterialDocumentRecord Material
Batch I_MaterialDocumentRecord Batch
QuantityInEntryUnit I_MaterialDocumentRecord QuantityInEntryUnit
EntryUnit I_MaterialDocumentRecord EntryUnit
QuantityInBaseUnit I_MaterialDocumentRecord QuantityInBaseUnit
MaterialBaseUnit I_MaterialDocumentRecord MaterialBaseUnit
GoodsMovementType I_MaterialDocumentRecord GoodsMovementType
IsReversalMovementType
GoodsMovementRefDocType I_MaterialDocumentRecord GoodsMovementRefDocType
DebitCreditCode I_MaterialDocumentRecord DebitCreditCode
IsAutomaticallyCreated I_MaterialDocumentRecord IsAutomaticallyCreated
GoodsMovementReasonCode I_MaterialDocumentRecord GoodsMovementReasonCode
Supplier I_MaterialDocumentRecord Supplier
SupplyingSupplier _PurgDocPartnerSupplSupplier Supplier
Customer I_MaterialDocumentRecord Customer
GoodsRecipientName
IssgOrRcvgMaterial I_MaterialDocumentRecord IssgOrRcvgMaterial
IssgOrRcvgBatch I_MaterialDocumentRecord IssgOrRcvgBatch
SupplyingPlant
OriginalMaterialDocumentItem I_MaterialDocumentRecord OriginalMaterialDocumentItem
ReferenceDocument _MaterialDocumentHeader ReferenceDocument
ReversedMaterialDocument I_MaterialDocumentRecord ReversedMaterialDocument
ReversedMaterialDocumentItem I_MaterialDocumentRecord ReversedMaterialDocumentItem
ReversedMaterialDocumentYear I_MaterialDocumentRecord ReversedMaterialDocumentYear
DeliveryDocument I_MaterialDocumentRecord DeliveryDocument
DeliveryDocumentItem I_MaterialDocumentRecord DeliveryDocumentItem
PurchaseOrderendasPurchaseOrder
PurchaseOrderItemendasPurchaseOrderItem
SalesOrderendasSalesOrder
OrderID I_MaterialDocumentRecord OrderID
OrderItem I_MaterialDocumentRecord OrderItem
OrderCategory
OrderType
PurchaseOrderType
PurchaseOrderSubtype
PurchaseOrderCategory _PurchaseOrderItem PurchaseOrderCategory
PurchaseOrderItemCategory _PurchaseOrderItem PurchaseOrderItemCategory
char4endasSalesOrderType
SupplierAuthznGrp
CustomerAuthznGrp
IsStorLocAuthznCheckActive
IsIssgOrRcvgStorLocAuthChkActv
_MaterialDocumentYear _MaterialDocumentYear
_MaterialDocumentHeader _MaterialDocumentHeader
_SalesOrderItemFromDelivItem _SalesOrderItemFromDelivItem
_SalesItemCategory _SalesItemCategory
_UnitOfMeasure _UnitOfMeasure
_PurgOrderItemFromDelivItem _PurgOrderItemFromDelivItem
@AbapCatalog.sqlViewName: 'IET_MATLDOCITM'
@AbapCatalog.compiler.compareFilter: true
@AbapCatalog.preserveKey: true
@ObjectModel.supportedCapabilities:#TRANSACTIONAL_PROVIDER
@AccessControl.authorizationCheck: #CHECK
@EndUserText.label: 'MatlDocItem for Industry Excise Tax'

@ClientHandling.algorithm: #SESSION_VARIABLE

@ObjectModel: {
    usageType: {
        sizeCategory: #XXL,
        serviceQuality: #C,
        dataClass: #MIXED
    }
}

@VDM.viewType: #COMPOSITE
@Metadata.ignorePropagatedAnnotations: true
@AccessControl.personalData.blocking: #('TRANSACTIONAL_DATA')


define view I_ExciseTaxMatlDocItem
  as select from           I_MaterialDocumentRecord    as _MaterialDocumentItem
    left outer to one join I_PurchaseOrderItemAPI01    as _PurchaseOrderItem           on  _MaterialDocumentItem.PurchaseOrder     = _PurchaseOrderItem.PurchaseOrder
                                                                                       and _MaterialDocumentItem.PurchaseOrderItem = _PurchaseOrderItem.PurchaseOrderItem
    left outer to one join I_PurchasingDocumentPartner as _PurgDocPartnerSupplSupplier on  _MaterialDocumentItem.PurchaseOrder          = _PurgDocPartnerSupplSupplier.PurchasingDocument
                                                                                       and _MaterialDocumentItem.PurchaseOrderItem      = _PurgDocPartnerSupplSupplier.PurchasingDocumentItem
                                                                                       and _PurgDocPartnerSupplSupplier.PartnerFunction = 'WL'

  association [1..1] to I_MaterialDocumentYear      as _MaterialDocumentYear        on  $projection.MaterialDocumentYear = _MaterialDocumentYear.MaterialDocumentYear
  association [1..1] to I_MaterialDocumentHeader    as _MaterialDocumentHeader      on  $projection.MaterialDocumentYear = _MaterialDocumentHeader.MaterialDocumentYear
                                                                                    and $projection.MaterialDocument     = _MaterialDocumentHeader.MaterialDocument
  //association [0..1] to I_SalesDocument              as _SalesOrder                  on  $projection.SalesOrder                       = _SalesOrder.SalesDocument

  //                                                                                   and ( _SalesOrder.SDDocumentCategory = 'C' or

  //                                                                                         _SalesOrder.SDDocumentCategory = 'H' )

  association [0..1] to I_SalesDocumentItem         as _SalesOrderItem              on  _MaterialDocumentItem.SalesOrder     = _SalesOrderItem.SalesDocument
                                                                                    and _MaterialDocumentItem.SalesOrderItem = _SalesOrderItem.SalesDocumentItem
                                                                                    and (
                                                                                       _SalesOrderItem.SDDocumentCategory    = 'C'
                                                                                       or _SalesOrderItem.SDDocumentCategory = 'H'
                                                                                       or _SalesOrderItem.SDDocumentCategory = ''
                                                                                     )
  association [0..1] to I_DeliveryDocumentItem      as _SalesOrderItemFromDelivItem on  $projection.DeliveryDocument                               = _SalesOrderItemFromDelivItem.DeliveryDocument
                                                                                    and $projection.DeliveryDocumentItem                           = _SalesOrderItemFromDelivItem.DeliveryDocumentItem
                                                                                    and (
                                                                                       _SalesOrderItemFromDelivItem.ReferenceSDDocumentCategory    = 'C'
                                                                                       or _SalesOrderItemFromDelivItem.ReferenceSDDocumentCategory = 'H'
                                                                                     )
  //association [0..1] to I_CustomerReturnItemEnhanced as _SOItemFromReturnDelivItem   on  $projection.DeliveryDocument                 = _SOItemFromReturnDelivItem.

  //                                                                                   and $projection.DeliveryDocumentItem             = _SOItemFromReturnDelivItem.CustomerReturnDeliveryItem

  //                                                                                   and ( _SOItemFromReturnDelivItem.ReferenceSDDocumentCategory = 'C' or

  //                                                                                         _SOItemFromReturnDelivItem.ReferenceSDDocumentCategory = 'H' )

  association [0..1] to I_SalesDocumentItemCategory as _SalesItemCategory           on  $projection.SalesDocumentItemCategory = _SalesItemCategory.SalesDocumentItemCategory
  association [0..1] to I_UnitOfMeasure             as _UnitOfMeasure               on  $projection.MaterialBaseUnit = _UnitOfMeasure.UnitOfMeasure
  association [0..1] to I_DeliveryDocumentItem      as _PurgOrderItemFromDelivItem  on  $projection.DeliveryDocument                            = _PurgOrderItemFromDelivItem.DeliveryDocument
                                                                                    and $projection.DeliveryDocumentItem                        = _PurgOrderItemFromDelivItem.DeliveryDocumentItem
                                                                                    and _PurgOrderItemFromDelivItem.ReferenceSDDocumentCategory = 'V'
  association [0..1] to I_ExsTxPurOrderHistory      as _MaterialDocumentItemPO      on  _MaterialDocumentItem.PurchaseOrder                   = _MaterialDocumentItemPO.PurchaseOrder
                                                                                    and _MaterialDocumentItem.PurchaseOrderItem               = _MaterialDocumentItemPO.PurchaseOrderItem
                                                                                    and _MaterialDocumentItemPO.PurchasingHistoryDocumentType = '6'
                                                                                    and (
                                                                                       (
                                                                                         _MaterialDocumentItem.DebitCreditCode                = 'S'
                                                                                         and _MaterialDocumentItem.IsReversalMovementType     = ''
                                                                                         and _MaterialDocumentItemPO.DebitCreditCode          = 'H'
                                                                                       )
                                                                                       or(
                                                                                         _MaterialDocumentItem.DebitCreditCode                = 'H'
                                                                                         and _MaterialDocumentItem.IsReversalMovementType     = 'X'
                                                                                         and _MaterialDocumentItemPO.DebitCreditCode          = 'H'
                                                                                       )
                                                                                     )
                                                                                    and (
                                                                                       (
                                                                                         _MaterialDocumentItemPO.DebitCreditCode              = 'H'
                                                                                         and _MaterialDocumentItemPO.IsReversalMovementType   = ''
                                                                                       )
                                                                                       or(
                                                                                         _MaterialDocumentItemPO.DebitCreditCode              = 'S'
                                                                                         and _MaterialDocumentItemPO.IsReversalMovementType   = 'X'
                                                                                       )
                                                                                     )
                                                                                    and _MaterialDocumentItem.PurchaseOrder                   is not null
                                                                                    and _MaterialDocumentItem.PurchaseOrder != ''
                                                                                    and (
                                                                                       _MaterialDocumentItemPO.StorageLocation != ''
                                                                                       and _MaterialDocumentItemPO.StorageLocation            is not null
                                                                                     )
                                                                                    and (
                                                                                       _MaterialDocumentItem.IsAutomaticallyCreated           is null
                                                                                       or _MaterialDocumentItem.IsAutomaticallyCreated        = ''
                                                                                     )
                                                                                    and (
                                                                                       _MaterialDocumentItem.DeliveryDocument                 is null
                                                                                       or _MaterialDocumentItem.DeliveryDocument              = ''
                                                                                       or(
                                                                                         _MaterialDocumentItem.DeliveryDocument               = _MaterialDocumentItemPO.DeliveryDocument
                                                                                         and _MaterialDocumentItem.DeliveryDocumentItem       = _MaterialDocumentItemPO.DeliveryDocumentItem
                                                                                       )
                                                                                       or(
                                                                                         _MaterialDocumentItem.DeliveryDocument != _MaterialDocumentItemPO.DeliveryDocument
                                                                                       )
                                                                                     )
  association [1..1] to I_SDDocumentProcessFlow     as _docflow                     on  _docflow.SubsequentDocument         = _MaterialDocumentItem.DeliveryDocument
                                                                                    and _docflow.SubsequentDocumentItem     = _MaterialDocumentItem.DeliveryDocumentItem
                                                                                    and _docflow.SubsequentDocumentCategory = 'J'
                                                                                    and _docflow.PrecedingDocumentCategory  = 'C'
{
      @ObjectModel.foreignKey.association: '_MaterialDocumentHeader'
  key _MaterialDocumentItem.MaterialDocument                                         as MaterialDocument,
      @ObjectModel.foreignKey.association: '_MaterialDocumentYear'
  key _MaterialDocumentItem.MaterialDocumentYear                                     as MaterialDocumentYear,
  key _MaterialDocumentItem.MaterialDocumentItem                                     as MaterialDocumentItem,

      /*goodsmovement document fields*/

      // organizational data

      _MaterialDocumentItem.CompanyCode                                              as CompanyCode,
      _MaterialDocumentItem.Plant                                                    as Plant,
      _MaterialDocumentItem.StorageLocation                                          as StorageLocation,
      _MaterialDocumentItem.CostCenter                                               as CostCenter,

      // dates

      @Semantics.businessDate.at: true
      _MaterialDocumentItem.PostingDate                                              as PostingDate,
      @Semantics.businessDate.at: true
      _MaterialDocumentItem.DocumentDate                                             as DocumentDate,
      // timestamp

      _MaterialDocumentItem.CreationDate                                             as CreationDate,
      _MaterialDocumentItem.CreationTime                                             as CreationTime,

      // material

      _MaterialDocumentItem.Material                                                 as Material,
      _MaterialDocumentItem.Batch                                                    as Batch,

      // units of measure

      @Semantics.quantity.unitOfMeasure: 'EntryUnit'
      _MaterialDocumentItem.QuantityInEntryUnit                                      as QuantityInEntryUnit,
      @Semantics.unitOfMeasure: true
      _MaterialDocumentItem.EntryUnit                                                as EntryUnit,
      @Semantics.quantity.unitOfMeasure: 'MaterialBaseUnit'
      _MaterialDocumentItem.QuantityInBaseUnit                                       as QuantityInBaseUnit,
      @ObjectModel.foreignKey.association: '_UnitOfMeasure'
      @Semantics.unitOfMeasure: true
      _MaterialDocumentItem.MaterialBaseUnit                                         as MaterialBaseUnit,

      // movement type

      _MaterialDocumentItem.GoodsMovementType                                        as GoodsMovementType,
      _MaterialDocumentItem._GoodsMovementType.IsReversalMovementType                as IsReversalMovementType,
      _MaterialDocumentItem.GoodsMovementRefDocType                                  as GoodsMovementRefDocType,
      _MaterialDocumentItem.DebitCreditCode                                          as DebitCreditCode,
      _MaterialDocumentItem.IsAutomaticallyCreated                                   as IsAutomaticallyCreated,
      _MaterialDocumentItem.GoodsMovementReasonCode                                  as GoodsMovementReasonCode,

      // partners (including master data)

      _MaterialDocumentItem.Supplier                                                 as Supplier,
      _PurgDocPartnerSupplSupplier.Supplier                                          as SupplyingSupplier,
      _MaterialDocumentItem.Customer                                                 as Customer,
      ltrim(_MaterialDocumentItem.GoodsRecipientName, '0')                           as GoodsRecipientName,

      // transfers

      case
      when  ( _MaterialDocumentItem._PurchaseOrderItem._PurchaseOrder.SupplyingPlant is not null and  _MaterialDocumentItem._PurchaseOrderItem._PurchaseOrder.SupplyingPlant != '' )
          and ( ( _MaterialDocumentItem.DebitCreditCode = 'S' and _MaterialDocumentItem.IsReversalMovementType = '' )  )
          and ( _MaterialDocumentItem.StorageLocation !=  '' and _MaterialDocumentItem.StorageLocation is not null )
          and ( _MaterialDocumentItem.IsAutomaticallyCreated is null or _MaterialDocumentItem.IsAutomaticallyCreated = '' )

          then _MaterialDocumentItemPO.Plant
       when ( _MaterialDocumentItem._PurchaseOrderItem._PurchaseOrder.SupplyingPlant is not null and  _MaterialDocumentItem._PurchaseOrderItem._PurchaseOrder.SupplyingPlant != '' )
          and (  (  _MaterialDocumentItem.DebitCreditCode = 'H' and  _MaterialDocumentItem.IsReversalMovementType = 'X' ) )
          and ( _MaterialDocumentItem.StorageLocation !=  '' and _MaterialDocumentItem.StorageLocation is not null )
         and ( _MaterialDocumentItem.IsAutomaticallyCreated is null or _MaterialDocumentItem.IsAutomaticallyCreated = '' )

          then  _MaterialDocumentItemPO.Plant

      when _MaterialDocumentItem.IssuingOrReceivingPlant      is null or _MaterialDocumentItem.IssuingOrReceivingPlant = ''
      then _PurchaseOrderItem.Plant
      else _MaterialDocumentItem.IssuingOrReceivingPlant
      end                                                                            as IssuingOrReceivingPlant,

      case
      when  ( _MaterialDocumentItem._PurchaseOrderItem._PurchaseOrder.SupplyingPlant is not null and  _MaterialDocumentItem._PurchaseOrderItem._PurchaseOrder.SupplyingPlant != '' )
              and ( ( _MaterialDocumentItem.DebitCreditCode = 'S' and _MaterialDocumentItem.IsReversalMovementType = '' )  )
              and ( _MaterialDocumentItem.StorageLocation !=  '' and _MaterialDocumentItem.StorageLocation is not null )
              and ( _MaterialDocumentItem.IsAutomaticallyCreated is null or _MaterialDocumentItem.IsAutomaticallyCreated = '' )
              then  _MaterialDocumentItemPO.StorageLocation
          when ( _MaterialDocumentItem._PurchaseOrderItem._PurchaseOrder.SupplyingPlant is not null and  _MaterialDocumentItem._PurchaseOrderItem._PurchaseOrder.SupplyingPlant != '' )
              and (  (  _MaterialDocumentItem.DebitCreditCode = 'H' and  _MaterialDocumentItem.IsReversalMovementType = 'X' ) )
              and ( _MaterialDocumentItem.StorageLocation !=  '' and _MaterialDocumentItem.StorageLocation is not null )
              and ( _MaterialDocumentItem.IsAutomaticallyCreated is null or _MaterialDocumentItem.IsAutomaticallyCreated = '' )
              then _MaterialDocumentItemPO.StorageLocation
          when _MaterialDocumentItem.IssuingOrReceivingStorageLoc is null or _MaterialDocumentItem.IssuingOrReceivingStorageLoc = ''
          then _PurchaseOrderItem.StorageLocation
          else _MaterialDocumentItem.IssuingOrReceivingStorageLoc
        end                                                                          as IssuingOrReceivingStorageLoc,
      _MaterialDocumentItem.IssgOrRcvgMaterial                                       as IssgOrRcvgMaterial,
      _MaterialDocumentItem.IssgOrRcvgBatch                                          as IssgOrRcvgBatch,
      _PurchaseOrderItem._PurchaseOrder.SupplyingPlant                               as SupplyingPlant,

      // reference documents

      _MaterialDocumentItem.OriginalMaterialDocumentItem                             as OriginalMaterialDocumentItem,
      _MaterialDocumentHeader.ReferenceDocument                                      as ReferenceDocument,

      // cancellation

      _MaterialDocumentItem.ReversedMaterialDocument                                 as ReversedMaterialDocument,
      _MaterialDocumentItem.ReversedMaterialDocumentItem                             as ReversedMaterialDocumentItem,
      _MaterialDocumentItem.ReversedMaterialDocumentYear                             as ReversedMaterialDocumentYear,

      /*references*/

      _MaterialDocumentItem.DeliveryDocument                                         as DeliveryDocument,
      _MaterialDocumentItem.DeliveryDocumentItem                                     as DeliveryDocumentItem,
      case when _MaterialDocumentItem.PurchaseOrder     is null or _MaterialDocumentItem.PurchaseOrder = ''
        then _PurgOrderItemFromDelivItem.ReferenceSDDocument
        else _MaterialDocumentItem.PurchaseOrder
      end                                                                            as PurchaseOrder,
      case when _MaterialDocumentItem.PurchaseOrderItem is null or _MaterialDocumentItem.PurchaseOrderItem = '' or _MaterialDocumentItem.PurchaseOrderItem = '00000'
        then cast(lpad(_PurgOrderItemFromDelivItem.ReferenceSDDocumentItem, 5, '0') as abap.numc(5))
        else _MaterialDocumentItem.PurchaseOrderItem
      end                                                                            as PurchaseOrderItem,

      case when  _MaterialDocumentItem.SalesOrder = _MaterialDocumentItem.DeliveryDocument
        then _docflow.PrecedingDocument
        when _MaterialDocumentItem.SalesOrder        is null or _MaterialDocumentItem.SalesOrder = ''
        then _SalesOrderItemFromDelivItem.ReferenceSDDocument
        else _MaterialDocumentItem.SalesOrder
      end                                                                            as SalesOrder,



      case when   _MaterialDocumentItem.SalesOrder = _MaterialDocumentItem.DeliveryDocument
           then _docflow.PrecedingDocumentItem
         when _MaterialDocumentItem.SalesOrderItem    is null or _MaterialDocumentItem.SalesOrderItem = '' or _MaterialDocumentItem.SalesOrderItem = '000000'
         then _SalesOrderItemFromDelivItem.ReferenceSDDocumentItem
        else  cast(_MaterialDocumentItem.SalesOrderItem as nsdm_sales_order_item preserving type)
      end                                                                            as SalesOrderItem,


      _MaterialDocumentItem.OrderID                                                  as OrderID,
      _MaterialDocumentItem.OrderItem                                                as OrderItem,
      _MaterialDocumentItem._MfgOrder.ManufacturingOrderCategory                     as OrderCategory,
      _MaterialDocumentItem._MfgOrder.ManufacturingOrderType                         as OrderType,

      /*related documents*/
      _PurchaseOrderItem._PurchaseOrder.PurchaseOrderType                            as PurchaseOrderType,
      _PurchaseOrderItem._PurchaseOrder.PurchaseOrderSubtype                         as PurchaseOrderSubtype,
      _PurchaseOrderItem.PurchaseOrderCategory                                       as PurchaseOrderCategory,
      _PurchaseOrderItem.PurchaseOrderItemCategory                                   as PurchaseOrderItemCategory,

      case when _MaterialDocumentItem.SalesOrder is null or _MaterialDocumentItem.SalesOrder = ''
        then cast(_SalesOrderItemFromDelivItem._ReferenceSDDocument.SalesDocumentType as abap.char(4))
        else cast(_MaterialDocumentItem._SalesOrder.SalesOrderType as abap.char(4))
      end                                                                            as SalesOrderType,
      @ObjectModel.foreignKey.association: '_SalesItemCategory'
      case when ( _MaterialDocumentItem.SalesOrderItem is null or _MaterialDocumentItem.SalesOrderItem = '' or _MaterialDocumentItem.SalesOrderItem = '000000' )
        then _SalesOrderItemFromDelivItem._ReferenceSalesDocumentItem.SalesDocumentItemCategory
      //        else case when ( _MaterialDocumentItem.SalesOrderItem is null or _MaterialDocumentItem.SalesOrderItem = '' or _MaterialDocumentItem.SalesOrderItem = '000000' ) and _SalesOrderItemFromDelivItem.ReferenceSDDocumentCategory = 'H'

      //          then _SOItemFromReturnDelivItem._ReferenceSalesDocumentItem.SalesDocumentItemCategory

          else _SalesOrderItem.SalesDocumentItemCategory
      //        end

      end                                                                            as SalesDocumentItemCategory,

      /*Authorizations*/
      _MaterialDocumentItem._Supplier.AuthorizationGroup                             as SupplierAuthznGrp,
      _MaterialDocumentItem._Customer.AuthorizationGroup                             as CustomerAuthznGrp,
      _MaterialDocumentItem._StorageLocation.IsStorLocAuthznCheckActive              as IsStorLocAuthznCheckActive,
      _MaterialDocumentItem._IssuingOrReceivingStorageLoc.IsStorLocAuthznCheckActive as IsIssgOrRcvgStorLocAuthChkActv,

      /*Associations*/
      _MaterialDocumentYear,
      _MaterialDocumentHeader,
      _SalesOrderItemFromDelivItem,
      //      _SOItemFromReturnDelivItem,

      _SalesItemCategory,
      _UnitOfMeasure,
      _PurgOrderItemFromDelivItem
}
where
  MaterialDocumentRecordType = 'MDOC'
/*+[internal] {
"BASEINFO":
{
"FROM":
[
"I_CUSTOMER",
"I_DELIVERYDOCUMENTITEM",
"I_EXSTXPURORDERHISTORY",
"I_GOODSMOVEMENTTYPE",
"I_MATERIALDOCUMENTHEADER",
"I_MATERIALDOCUMENTRECORD",
"I_MFGORDER",
"I_PURCHASEORDER",
"I_PURCHASEORDERAPI01",
"I_PURCHASEORDERITEM",
"I_PURCHASEORDERITEMAPI01",
"I_PURCHASINGDOCUMENTPARTNER",
"I_SALESDOCUMENT",
"I_SALESDOCUMENTITEM",
"I_SALESORDER",
"I_SDDOCUMENTPROCESSFLOW",
"I_STORAGELOCATION",
"I_SUPPLIER"
],
"ASSOCIATED":
[
"I_DELIVERYDOCUMENTITEM",
"I_EXSTXPURORDERHISTORY",
"I_MATERIALDOCUMENTHEADER",
"I_MATERIALDOCUMENTYEAR",
"I_SALESDOCUMENTITEM",
"I_SALESDOCUMENTITEMCATEGORY",
"I_SDDOCUMENTPROCESSFLOW",
"I_UNITOFMEASURE"
],
"BASE":
[],
"ANNO_REF":
[],
"SCALAR_FUNCTION":
[],
"VERSION":0,
"ANNOREF_EVALUATION_ERROR":""
}
}*/