C_ChmlCmplncReqProcMkt

DDL: C_CHMLCMPLNCREQPROCMKT Type: view CONSUMPTION Package: EHPMA_CNS_CRQ

Process Chemical Compliance Request for Markets

C_ChmlCmplncReqProcMkt is a Consumption CDS View that provides data about "Process Chemical Compliance Request for Markets" in SAP S/4HANA. It reads from 1 data source (I_ChmlCmplncReqTP) and exposes 34 fields. It has 19 associations to related views. Part of development package EHPMA_CNS_CRQ.

Data Sources (1)

SourceAliasJoin Type
I_ChmlCmplncReqTP ComplianceRequest from

Associations (19)

CardinalityTargetAliasCondition
[0..1] I_ChmlCmplncInfo _ChmlCmplncInfo $projection.ChmlCmplncInfoUUID = _ChmlCmplncInfo.ChmlCmplncInfoUUID
[0..1] I_ChmlCmplncInfo _ChmlCmplncInfoProd $projection.ChmlCmplncProdUUID = _ChmlCmplncInfoProd.ChmlCmplncInfoUUID -- Requester Contact Card
[0..1] C_ChmlCmplncReqRequesterCntct _RequesterContact $projection.ChmlCmplncReqBPRequester = _RequesterContact.BusinessPartner -- Sales specific Customer Contact Card (Ship to party)
[0..1] C_ChmlCmplncReqCustomerCntct _CustomerContact $projection.SalesDocument = _CustomerContact.SalesDocument -- Delivery specific Customer Contact Card (Ship to party)
[0..1] C_ChmlCmplncReqDelivCustCntct _CustomerContactDelivery $projection.SalesDocument = _CustomerContactDelivery.DeliveryDocument ----------------------------------------------------------------------------------------------------------------------------- -- Nodes ----------------------------------------------------------------------------------------------------------------------------- -- New CCI data - expected cardinality: don't change!
[0..1] C_ChmlCmplncReqNewCmplncInfoTP _NewComplInfo $projection.ChmlCmplncRequestUUID = _NewComplInfo.ChmlCmplncRequestUUID -- All Market Countries (for Facet)
[0..*] C_ChmlCmplncReqMktCntry _MarketCountries $projection.ChmlCmplncRequestUUID = _MarketCountries.ChmlCmplncRequestUUID and $projection.ChmlCmplncBusinessProcess = _MarketCountries.ChmlCmplncBusinessProcess -- All Purposes (for Facet)
[0..*] C_ChmlCmplncReqPrps _Purposes $projection.ChmlCmplncRequestUUID = _Purposes.ChmlCmplncRequestUUID -- Requested Markets (Persisted)
[0..*] C_ChmlCmplncReqMktTP _RequestedMarket $projection.ChmlCmplncRequestUUID = _RequestedMarket.ChmlCmplncRequestUUID -- Purposes (Persisted)
[0..*] C_ChmlCmplncReqPrpsAssgmtTP _RequestedPurpose $projection.ChmlCmplncRequestUUID = _RequestedPurpose.ChmlCmplncRequestUUID ----------------------------------------------------------------------------------------------------------------------------- --Additional Information
[1..1] I_ChmlCmplncReqCmplncProcVH _CmplncProcVH $projection.ChmlCmplncReqCmplncProc = _CmplncProcVH.ChmlCmplncReqCmplncProc ----------------------------------------------------------------------------------------------------------------------------- -- Combined name of CCI/PP
[0..1] C_ChmlCmplncPrimMatl _PrimeMatPackaged $projection.ChmlCmplncInfoUUID = _PrimeMatPackaged.ChmlCmplncInfoUUID
[0..1] C_ChmlCmplncPrimMatl _PrimeMatUnpackaged $projection.ChmlCmplncProdUUID = _PrimeMatUnpackaged.ChmlCmplncInfoUUID -- Supplier Contact Data
[0..1] C_ChmlSuplrMatlSupplierContact _SupplierContact $projection.BusinessPartnerSupplier = _SupplierContact.BusinessPartnerSupplier -- Request Status Name
[0..1] I_ChmlCmplncReqStatusTxt _RequestStatus $projection.ChmlCmplncRequestPrgrsStatus = _RequestStatus.ChmlCmplncReqStatus
[0..1] I_ChmlCmplncBusProcVH _BusinessProcessVH $projection.ChmlCmplncBusinessProcess = _BusinessProcessVH.ChmlCmplncBusinessProcess
[0..1] I_ChmlCmplncReqOrigTypeVH _OriginTypeVH $projection.ChmlCmplncRequestOriginType = _OriginTypeVH.ChmlCmplncRequestOriginType -- Request Details
[0..*] I_OTRText _ChmlCmplncReqDetailsText $projection.ChmlCmplncReqDetails = _ChmlCmplncReqDetailsText.OnlnTxtRpstryConceptID ----------------------------------------------------------------------------------------------------------------------------- --Product Information -----------------------------------------------------------------------------------------------------------------------------
[0..1] I_ProductGroup_2 _ProductGroupVH $projection.MaterialGroup = _ProductGroupVH.ProductGroup

Annotations (23)

NameValueLevelField
EndUserText.label Process Chemical Compliance Request for Markets view
AbapCatalog.sqlViewName CCREQPROCMKT view
AbapCatalog.compiler.compareFilter true view
Metadata.allowExtensions true view
AccessControl.authorizationCheck #MANDATORY view
AccessControl.personalData.blocking #NOT_REQUIRED view
ClientHandling.algorithm #SESSION_VARIABLE view
VDM.viewType #CONSUMPTION view
ObjectModel.compositionRoot true view
ObjectModel.transactionalProcessingDelegated true view
ObjectModel.createEnabled false view
ObjectModel.updateEnabled false view
ObjectModel.deleteEnabled false view
ObjectModel.usageType.dataClass #MIXED view
ObjectModel.usageType.sizeCategory #XL view
ObjectModel.usageType.serviceQuality #C view
Consumption.semanticObject ComplianceRequest view
UI.headerInfo.typeName Compliance Request from Logistics view
UI.headerInfo.typeNamePlural Compliance Requests from Logistics view
UI.headerInfo.title.type #STANDARD view
UI.headerInfo.title.value ProductName view
UI.headerInfo.description.type #STANDARD view
UI.headerInfo.description.value Material view

Fields (34)

KeyFieldSource TableSource FieldDescription
SupplierSupplierasSupplier
BusinessPartnerSupplier
BPSupplierName _Supplier BPSupplierName
Customer Customer
BusinessPartnerCustomer
BPCustomerName _Customer BPCustomerName
ChmlCmplncInfoType
MaterialIsTransported
MaterialIsSold
MaterialIsProduced
MaterialIsSourced
UnpckgdProdIsSold _ChmlCmplncInfoProd MaterialIsSold
UnpckgdProdIsProduced _ChmlCmplncInfoProd MaterialIsProduced
UnpckgdProdIsSourced _ChmlCmplncInfoProd MaterialIsSourced
_NewComplInfo
_RequestedMarket _RequestedMarket
_RequestedPurpose _RequestedPurpose
_MarketCountries _MarketCountries
_Purposes _Purposes
_BusinessProcess _BusinessProcess
_OriginType _OriginType
_ProductGroupVH _ProductGroupVH
_OriginTypeVH _OriginTypeVH
_BusinessProcessVH _BusinessProcessVH
_RequesterContact _RequesterContact
_CustomerContact _CustomerContact
_CustomerContactDelivery _CustomerContactDelivery
_ChmlCmplncInfo _ChmlCmplncInfo
_ChmlCmplncInfoProd _ChmlCmplncInfoProd
_ChemicalCustomerMaterial _ChemicalCustomerMaterial
_CmplncProcVH _CmplncProcVH
_SupplierContact _SupplierContact
_Supplier _Supplier
_Customer _Customer
@EndUserText.label: 'Process Chemical Compliance Request for Markets'

@AbapCatalog:
{
  sqlViewName: 'CCREQPROCMKT',
  compiler.compareFilter: true
}

@Metadata: {
  allowExtensions: true
}

@AccessControl:
{
  authorizationCheck: #MANDATORY,
  // blocking of personal data not required

  personalData.blocking: #NOT_REQUIRED
}

@ClientHandling.algorithm: #SESSION_VARIABLE

@VDM.viewType: #CONSUMPTION

@ObjectModel:
{
  compositionRoot: true,
  transactionalProcessingDelegated: true,
  createEnabled: false,
  updateEnabled: false,
  deleteEnabled: false,
  usageType:
  {
    dataClass: #MIXED,
    sizeCategory: #XL,
    serviceQuality: #C
  },
  semanticKey:  [ 'ProductName' ]
}

// for CoPilot navigation

@Consumption.semanticObject: 'ComplianceRequest'

@UI:
{
  headerInfo:
  {
//    typeName: 'Process Compliance Request',

//    typeNamePlural: 'Process Compliance Requests',

    typeName: 'Compliance Request from Logistics',
    typeNamePlural: 'Compliance Requests from Logistics',

    title:
    {
      type: #STANDARD,
//      value: 'ChmlCmplncBusinessProcessName'

     value: 'ProductName'
    },

    description:
    {
      type: #STANDARD,
//      value: 'ProductName'

      value:'Material'
    }
  }
  ,
  presentationVariant:
  [{
    requestAtLeast:  [ 'CmplRqRsltNavgnLink', 'ChmlCmplncInfoUUID', 'ChmlCmplncProdUUID', 'ChmlCmplncInfoType', 'ChmlCmplncInfoNavgnLink', 'ChmlCmplncRequestOriginType', 'ChmlCmplncReqOriginProc', 'ChmlCmplncBusinessProcess' ]
  }]
}

/*+[hideWarning] { "IDS" : [ "CARDINALITY_CHECK" ]  } */
define view C_ChmlCmplncReqProcMkt
  --Select data from transaction view of chemical compliance request
  as select from I_ChmlCmplncReqTP as ComplianceRequest

  association [0..1] to I_ChmlCmplncInfo               as _ChmlCmplncInfo           on  $projection.ChmlCmplncInfoUUID = _ChmlCmplncInfo.ChmlCmplncInfoUUID
  association [0..1] to I_ChmlCmplncInfo               as _ChmlCmplncInfoProd       on  $projection.ChmlCmplncProdUUID = _ChmlCmplncInfoProd.ChmlCmplncInfoUUID

  -- Requester Contact Card
  association [0..1] to C_ChmlCmplncReqRequesterCntct  as _RequesterContact         on  $projection.ChmlCmplncReqBPRequester = _RequesterContact.BusinessPartner
  -- Sales specific Customer Contact Card (Ship to party)
  association [0..1] to C_ChmlCmplncReqCustomerCntct   as _CustomerContact          on  $projection.SalesDocument = _CustomerContact.SalesDocument
  //  association [0..1] to I_SalesDocumentItem            as _SalesDocumentItem  on  $projection.SalesDocument = _SalesDocumentItem.SalesDocument

  //                                                                              and $projection.Material      = _SalesDocumentItem.Material

  -- Delivery specific Customer Contact Card (Ship to party)
  association [0..1] to C_ChmlCmplncReqDelivCustCntct  as _CustomerContactDelivery  on  $projection.SalesDocument = _CustomerContactDelivery.DeliveryDocument

  -----------------------------------------------------------------------------------------------------------------------------
  -- Nodes
  -----------------------------------------------------------------------------------------------------------------------------
  -- New CCI data - expected cardinality: don't change!
  association [0..1] to C_ChmlCmplncReqNewCmplncInfoTP as _NewComplInfo             on  $projection.ChmlCmplncRequestUUID = _NewComplInfo.ChmlCmplncRequestUUID
  -- All Market Countries (for Facet)
  association [0..*] to C_ChmlCmplncReqMktCntry        as _MarketCountries          on  $projection.ChmlCmplncRequestUUID     = _MarketCountries.ChmlCmplncRequestUUID
                                                                                    and $projection.ChmlCmplncBusinessProcess = _MarketCountries.ChmlCmplncBusinessProcess
  -- All Purposes (for Facet)
  association [0..*] to C_ChmlCmplncReqPrps            as _Purposes                 on  $projection.ChmlCmplncRequestUUID = _Purposes.ChmlCmplncRequestUUID
  -- Requested Markets (Persisted)
  association [0..*] to C_ChmlCmplncReqMktTP           as _RequestedMarket          on  $projection.ChmlCmplncRequestUUID = _RequestedMarket.ChmlCmplncRequestUUID
  -- Purposes (Persisted)
  association [0..*] to C_ChmlCmplncReqPrpsAssgmtTP    as _RequestedPurpose         on  $projection.ChmlCmplncRequestUUID = _RequestedPurpose.ChmlCmplncRequestUUID

  -----------------------------------------------------------------------------------------------------------------------------
  --Additional Information
  association [1..1] to I_ChmlCmplncReqCmplncProcVH    as _CmplncProcVH             on  $projection.ChmlCmplncReqCmplncProc = _CmplncProcVH.ChmlCmplncReqCmplncProc
  -----------------------------------------------------------------------------------------------------------------------------

  -- Combined name of CCI/PP
  association [0..1] to C_ChmlCmplncPrimMatl           as _PrimeMatPackaged         on  $projection.ChmlCmplncInfoUUID = _PrimeMatPackaged.ChmlCmplncInfoUUID
  association [0..1] to C_ChmlCmplncPrimMatl           as _PrimeMatUnpackaged       on  $projection.ChmlCmplncProdUUID = _PrimeMatUnpackaged.ChmlCmplncInfoUUID

  -- Supplier Contact Data
  association [0..1] to C_ChmlSuplrMatlSupplierContact as _SupplierContact          on  $projection.BusinessPartnerSupplier = _SupplierContact.BusinessPartnerSupplier

  -- Request Status Name
  association [0..1] to I_ChmlCmplncReqStatusTxt       as _RequestStatus            on  $projection.ChmlCmplncRequestPrgrsStatus = _RequestStatus.ChmlCmplncReqStatus

  association [0..1] to I_ChmlCmplncBusProcVH          as _BusinessProcessVH        on  $projection.ChmlCmplncBusinessProcess = _BusinessProcessVH.ChmlCmplncBusinessProcess
  association [0..1] to I_ChmlCmplncReqOrigTypeVH      as _OriginTypeVH             on  $projection.ChmlCmplncRequestOriginType = _OriginTypeVH.ChmlCmplncRequestOriginType

  -- Request Details
  association [0..*] to I_OTRText                      as _ChmlCmplncReqDetailsText on  $projection.ChmlCmplncReqDetails = _ChmlCmplncReqDetailsText.OnlnTxtRpstryConceptID

  -----------------------------------------------------------------------------------------------------------------------------
  --Product Information
  -----------------------------------------------------------------------------------------------------------------------------
  association [0..1] to I_ProductGroup_2               as _ProductGroupVH           on  $projection.MaterialGroup = _ProductGroupVH.ProductGroup
{
      --UUID of active chemical compliance request
  key ChmlCmplncRequestUUID,

      //*************************************************

      //Unpackaged Product

      //*************************************************

      --UUID of indirectly assigned CCI/UP
      @ObjectModel:
       {
         text.element:  [ 'ChmlCmplncProdMaterialCombName' ]
       }
      ComplianceRequest.ChmlCmplncProdUUID,

      -- Navigation Link to CCI
      @ObjectModel.readOnly: true
      ComplianceRequest.ChmlCmplncProdUUID                                                                                   as ChmlCmplncInfoNavgnLink,

      @ObjectModel.readOnly: true
      ComplianceRequest.ChmlCmplncProdUUID                                                                                   as CmplRqRsltNavgnLink,

      //*************************************************

      //Packaged Product

      //*************************************************

      --UUID of assigned CCI/PP
      ComplianceRequest.ChmlCmplncInfoUUID,

      --UUID of assigned chemical customer material (CCM) for requests of type 'Customer Assessment Required'
      @ObjectModel.readOnly: true
      ChemicalCustomerMaterialUUID,

      --Primary Material Id of referenced PP
      @ObjectModel:
       {
         readOnly: true,
         text.element:  [ 'ChmlCmplncInfoCombinedName' ]
       }
      _PrimeMatPackaged.Material                                                                                             as ChmlCmplncInfoCombinedMaterial,

      --Combined Name of referenced PP
      @ObjectModel.readOnly: true
      _PrimeMatPackaged.ChmlCmplncInfoCombinedName,

      --Primary Material Id of referenced UP
      @ObjectModel:
       {
         readOnly: true,
         text.element:  [ 'ChmlCmplncProdMaterialCombName' ]
       }
      _PrimeMatUnpackaged.Material                                                                                           as ChmlCmplncProdMaterial,

      --Combined Name of referenced UP
      @ObjectModel.readOnly: true
      _PrimeMatUnpackaged.ChmlCmplncInfoCombinedName                                                                         as ChmlCmplncProdMaterialCombName,

      -- Applications of CCI/UP
      @ObjectModel.readOnly: true
      @ObjectModel.virtualElement
      @ObjectModel.virtualElementCalculatedBy: 'ABAP:CL_EHPMA_MKT_CALC_EXIT4'
      cast( '' as ehpma_application )                                                                                        as ChmlCmplncApplication,

      --Material/Product number ------------------------------------------------
      @ObjectModel:
      {
         text.element:  [ 'ProductName' ]
      }
      cast( ComplianceRequest.Material as ehfnd_cci_product preserving type  )                                               as Material,

      -- Product Name (Material Name) ------------------------------------------------
      @ObjectModel.readOnly: true
      ComplianceRequest._Product._Text[1: Language = $session.system_language ].ProductName                                  as ProductName,

      -- Material Group ------------------------------------------------
      @ObjectModel:
      {
        readOnly: true,
        text.element:  [ 'MaterialGroupName' ],
        foreignKey.association: '_ProductGroupVH'
      }
      cast(ComplianceRequest._Product._ProductGroup_2.ProductGroup as ehfnd_cci_material_group_l preserving type )           as MaterialGroup,

      --Material Group Name
      @ObjectModel.readOnly: true
      ComplianceRequest._Product._ProductGroup_2._ProductGroupText[1: Language = $session.system_language ].ProductGroupName as MaterialGroupName,
      
      --Material/Product number of related MCP--------------------------------------
      @ObjectModel:
      {
         text.element:  [ 'MultiComponentProductName' ]
      }
      ComplianceRequest.MultiComponentProduct,
      
      @ObjectModel.readOnly: true
      ComplianceRequest._MultiComponentProduct._Text[1: Language = $session.system_language ].ProductName                    as MultiComponentProductName,

      //-- Compliance Process ------------------------------------------------

      @ObjectModel:
      {
        readOnly: true,
        text.element:  [ 'ChmlCmplncReqCmplncProcName' ],
        foreignKey.association: '_CmplncProcVH'
      }
      ComplianceRequest.ChmlCmplncReqCmplncProc                                                                              as ChmlCmplncReqCmplncProc,

      -- Compliance Process (Soltion Area) Name
      @UI.hidden: true
      @ObjectModel.readOnly: true
      _ChmlCmplncReqCmplncProc._Text[1: Language = $session.system_language ].ChmlCmplncReqCmplncProcName                    as ChmlCmplncReqCmplncProcName,

      -- Business Process ------------------------------------------------
      @ObjectModel:
      {
        text.element:  [ 'ChmlCmplncBusinessProcessName' ],
        foreignKey.association: '_BusinessProcessVH'
      }
      ComplianceRequest.ChmlCmplncBusinessProcess                                                                            as ChmlCmplncBusinessProcess,
      --Business Process Name

      @ObjectModel.readOnly: true
      _BusinessProcess._Text[1: Language = $session.system_language ].ChmlCmplncBusinessProcessName,

      -- Area (calculated countries or sales organisation) ------------------------------------------------
      @ObjectModel.readOnly: true
      @ObjectModel.virtualElement
      @ObjectModel.virtualElementCalculatedBy: 'ABAP:CL_EHPMA_CPLREQ_CALC_EXIT'
      cast( '' as ehfnd_crq_subjectmatter )                                                                                  as ChmlCmplncRequestSubjectMatter,

      -- Due Date
      ComplianceRequest.ChmlCmplncRequestDueDate                                                                             as ChmlCmplncRequestDueDate,

      -- Origin Type ------------------------------------------------
      @ObjectModel:
      {
        text.element:  [ 'ChmlCmplncRequestOriginName' ],
        foreignKey.association: '_OriginTypeVH'
      }

      ComplianceRequest.ChmlCmplncRequestOriginType                                                                          as ChmlCmplncRequestOriginType,

      -- Origin Type Name
      @ObjectModel.readOnly: true
      _OriginType._Text[1: Language = $session.system_language ].ChmlCmplncRequestOriginName                                 as ChmlCmplncRequestOriginName,

      -- Origin Process ------------------------------------------------
      @ObjectModel:
      {
        text.element:  [ 'ChmlCmplncReqOriginProcName' ]
      }
      ComplianceRequest.ChmlCmplncReqOriginProc                                                                              as ChmlCmplncReqOriginProc,

      -- Origin Process Name
      @ObjectModel.readOnly: true
      _OriginProcess._Text[1: Language = $session.system_language ].ChmlCmplncReqOriginProcName                              as ChmlCmplncReqOriginProcName,

      -- Origin Criticality
      @ObjectModel.readOnly: true
      @ObjectModel.virtualElement
      @ObjectModel.virtualElementCalculatedBy: 'ABAP:CL_EHPMA_CPLREQ_CALC_EXIT'
      0                                                                                                                      as ChmlCmplncReqOriginProcCritlty,

      -- Requester (Business User based)
      @ObjectModel:
      {
        readOnly: true,
        text.element:  [ 'ChmlCmplncReqBPRequesterName' ]
      }

      ComplianceRequest.ChmlCmplncReqBPRequester,

      -- User Description
      @ObjectModel.readOnly: true
      ComplianceRequest._BusinessUserRequester.PersonFullName                                                                as ChmlCmplncReqBPRequesterName,

      -- Requester (System User based)
      @ObjectModel:
      {
        readOnly: true,
        text.element:  [ 'ChmlCmplncReqRequesterName' ]
      }

      ComplianceRequest.ChmlCmplncReqRequester,

      -- User Description
      @ObjectModel.readOnly: true
      ComplianceRequest._RequesterUser.UserDescription                                                                       as ChmlCmplncReqRequesterName,

      -- Calculated field determine if the requester is able to receive a reply
      @ObjectModel.readOnly: true
      @ObjectModel.virtualElement
      @ObjectModel.virtualElementCalculatedBy: 'ABAP:CL_EHPMA_CPLREQ_CALC_EXIT'
      cast( '' as fin_no_reply_reqired_ind )                                                                                 as ReplyIsNotRequired,

      -- Processor
      @ObjectModel:
      {
        readOnly: true,
        text.element:  [ 'ChmlCmplncReqBPProcessorName' ]
      }
      ComplianceRequest.ChmlCmplncReqBPProcessor,

      -- User Description Processor
      @ObjectModel.readOnly: true
      ComplianceRequest._BusinessUserProcessor.PersonFullName                                                                as ChmlCmplncReqBPProcessorName,

      -- Remark
      @ObjectModel:
      {
        readOnly: true
      }
      ComplianceRequest.ChmlCmplncRequestRemark,

      --Request Details ----------------------------------------------------
      @ObjectModel:
      {
        readOnly: true,
        text.element: [ 'ChmlCmplncReqDetailsText' ]
      }
      ComplianceRequest.ChmlCmplncReqDetails,

      @ObjectModel.readOnly: true
      _ChmlCmplncReqDetailsText[1: Language = $session.system_language ].Text                                                as ChmlCmplncReqDetailsText,

      --Product Hierarchy -------------------------------------------------
      @ObjectModel:
      {
        readOnly: true,
        text.element:  [ 'ProductHierarchyText' ]
        --foreignKey.association: '_ProductHierarchyVH'
      }
      ComplianceRequest._Product.ProductHierarchy,

      --Description of Product Hierarchy
      @ObjectModel.readOnly: true
      ComplianceRequest._Product._ProductHierarchy._Text[1: Language = $session.system_language ].ProductHierarchyText,

      --Product Division -------------------------------------------------
      @ObjectModel:
      {
        readOnly: true,
        text.element:  [ 'DivisionName' ]
        --foreignKey.association: '_DivisionVH'
      }
      ComplianceRequest._Product.Division,

      --Description of Division
      @ObjectModel.readOnly: true
      ComplianceRequest._Product._Division._Text[1: Language = $session.system_language ].DivisionName,

      --External product group -------------------------------------------------
      @ObjectModel:
      {
        readOnly: true,
        text.element:  [ 'ExternalProductGroupName' ]
        --foreignKey.association: '_ExternalProdGrpVH'
      }
      cast( ComplianceRequest._Product.ExternalProductGroup as ehfnd_ext_material_group_l )                                  as ExternalProductGroup,

      --Description of External Product Group
      @ObjectModel.readOnly: true
      ComplianceRequest._Product._ExternalProductGroup._Text[1: Language = $session.system_language ].ExternalProductGroupName,

      -- Origin Logistics ( Sales Documents ID / Production order ID / Material Number ------------------------------------------------
      @ObjectModel.readOnly: true
      ComplianceRequest.ChmlCmplncReqLogisticDocCat,


      @ObjectModel.readOnly: true
      ComplianceRequest.SalesDocument                                                                                        as SalesDocument,
      @ObjectModel.readOnly: true
      ProdCmplncLogsDocument,
      @ObjectModel.readOnly: true
      ProdCmplncLogsDocumentItem,


      @ObjectModel.readOnly: true
      @ObjectModel.virtualElement
      @ObjectModel.virtualElementCalculatedBy: 'ABAP:CL_EHPMA_CPLREQ_CALC_EXIT'
      // SmartLink

      cast( '' as ehfnd_sales_order )                                                                                        as SalesOrder,

      @ObjectModel.readOnly: true
      @ObjectModel.virtualElement
      @ObjectModel.virtualElementCalculatedBy: 'ABAP:CL_EHPMA_CPLREQ_CALC_EXIT'
      // SmartLink

      cast( '' as ehfnd_sales_quotation )                                                                                    as SalesQuotation,

      @ObjectModel.readOnly: true
      @ObjectModel.virtualElement
      @ObjectModel.virtualElementCalculatedBy: 'ABAP:CL_EHPMA_CPLREQ_CALC_EXIT'
      // SmartLink

      cast( '' as ehfnd_sales_contract )                                                                                     as SalesContract,

      @ObjectModel.readOnly: true
      @ObjectModel.virtualElement
      @ObjectModel.virtualElementCalculatedBy: 'ABAP:CL_EHPMA_CPLREQ_CALC_EXIT'
      // SmartLink

      cast( '' as ehfnd_sales_schedul_agreement )                                                                            as SalesSchedulingAgreement,


      @ObjectModel.readOnly: true
      @ObjectModel.virtualElement
      @ObjectModel.virtualElementCalculatedBy: 'ABAP:CL_EHPMA_CPLREQ_CALC_EXIT'
      // SmartLink

      cast( '' as ehfnd_outbound_delivery )                                                                                  as OutboundDelivery,

      @ObjectModel.readOnly: true
      @ObjectModel.virtualElement
      @ObjectModel.virtualElementCalculatedBy: 'ABAP:CL_EHPMA_CPLREQ_CALC_EXIT'
      // SmartLink

      cast( '' as ehfnd_freight_unit )                                                                                       as FreightUnit,

      @ObjectModel.readOnly: true
      @ObjectModel.virtualElement
      @ObjectModel.virtualElementCalculatedBy: 'ABAP:CL_EHPMA_CPLREQ_CALC_EXIT'
      // SmartLink

      cast( '' as ehfnd_freight_order )                                                                                      as FreightOrder,

      @ObjectModel.readOnly: true
      @ObjectModel.virtualElement
      @ObjectModel.virtualElementCalculatedBy: 'ABAP:CL_EHPMA_CPLREQ_CALC_EXIT'
      // SmartLink

      cast( '' as ehfnd_freight_booking )                                                                                    as FreightBooking,

      @ObjectModel.readOnly: true
      @ObjectModel.virtualElement
      @ObjectModel.virtualElementCalculatedBy: 'ABAP:CL_EHPMA_CPLREQ_CALC_EXIT'
      // SmartLink

      cast( '' as ehfnd_purchase_order )                                                                                     as PurchaseOrder,

      @ObjectModel.readOnly: true
      @ObjectModel.virtualElement
      @ObjectModel.virtualElementCalculatedBy: 'ABAP:CL_EHPMA_CPLREQ_CALC_EXIT'
      // SmartLink

      cast( '' as ehfnd_purchase_contract )                                                                                  as PurchaseContract,

      @ObjectModel.readOnly: true
      @ObjectModel.virtualElement
      @ObjectModel.virtualElementCalculatedBy: 'ABAP:CL_EHPMA_CPLREQ_CALC_EXIT'
      // SmartLink

      cast( '' as ehfnd_purchasing_info_record )                                                                             as PurchasingInfoRecord,

      @ObjectModel.readOnly: true
      @ObjectModel.virtualElement
      @ObjectModel.virtualElementCalculatedBy: 'ABAP:CL_EHPMA_CPLREQ_CALC_EXIT'
      // SmartLink

      cast( '' as ehfnd_pur_scheduling_agreement )                                                                           as SchedulingAgreement,
      -- Order Quantity with Unit
      //TODO: rework (virtual element, cardinality)

      //      @ObjectModel.readOnly: true

      //      @UI: {

      //        fieldGroup: [{ qualifier: 'SalesDataFG', position: 30, importance: #HIGH }]

      //        //textArrangement: #TEXT_ONLY

      //      }

      //      concat_with_space( cast(_SalesDocumentItem.OrderQuantity as ehfnd_crq_order_quantity), _SalesDocumentItem.OrderQuantityUnit, 1)                                        as  ChmlCmplncReqOrderQuantity,


      -- Sales Document - Customer with link to contact card
      @ObjectModel.readOnly: true
      _CustomerContact.BusinessPartnerFullName,

      -- Delivery Document - Customer with link to contact card
      @ObjectModel.readOnly: true
      _CustomerContactDelivery.BusinessPartnerFullName                                                                       as DocShipToParty, // D054696: Since we use the label, no need to request a CRQ specific GFN


      -- Requested Applications
      @ObjectModel.readOnly: true
      @ObjectModel.virtualElement
      @ObjectModel.virtualElementCalculatedBy: 'ABAP:CL_EHPMA_CPLREQ_APPL_CALC_EXIT'
      cast( '' as ehpma_application)                                                                                         as ChmlCmplncApplicationReqd,

      -- Requested Sales Organizations  ------------------------------------------------
      @ObjectModel.readOnly: true
      @ObjectModel.virtualElement
      @ObjectModel.virtualElementCalculatedBy: 'ABAP:CL_EHPMA_CPLREQ_CALC_EXIT'
      cast( '' as ehfnd_crq_reqd_vkorg )                                                                                     as ChmlCmplncSalesOrgReqd,

      -- Requested Plants  ------------------------------------------------
      @ObjectModel.readOnly: true
      @ObjectModel.virtualElement
      @ObjectModel.virtualElementCalculatedBy: 'ABAP:CL_EHPMA_CPLREQ_CALC_EXIT'
      cast( '' as ehfnd_crq_reqd_plant )                                                                                     as ChmlCmplncPlntReqd,

      -- Request Status ------------------------------------------------
      @ObjectModel.text.element: ['ChmlCmplncReqStatusName']
      @ObjectModel.readOnly: true
      ComplianceRequest.ChmlCmplncRequestPrgrsStatus                                                                         as ChmlCmplncRequestPrgrsStatus,

      @ObjectModel.readOnly: true
      _RequestStatus[1: Language = $session.system_language ].ChmlCmplncReqStatusName                                        as ChmlCmplncReqStatusName,


      @ObjectModel.readOnly: true
      @ObjectModel.virtualElement
      @ObjectModel.virtualElementCalculatedBy: 'ABAP:CL_EHPMA_CPLREQ_CALC_EXIT'
      0                                                                                                                      as ChmlCmplncReqStatusCritlty,

      -----------------------------------------------------------------------------------------------------------------------------
      /* New Compliance View Data */
      -----------------------------------------------------------------------------------------------------------------------------

      -- New Packaged Product Name
      @ObjectModel.readOnly: true
      @ObjectModel.virtualElement
      @ObjectModel.virtualElementCalculatedBy: 'ABAP:CL_EHPMA_CPLREQ_CALC_EXIT'
      cast('' as ehfnd_cci_pp)                                                                                               as ChmlCmplncReqNewPckgdProdName,

      -- New Unpackaged Product UUID
      @ObjectModel.readOnly: true
      @ObjectModel.virtualElement
      @ObjectModel.virtualElementCalculatedBy: 'ABAP:CL_EHPMA_CPLREQ_CALC_EXIT'
      cast('' as ehfnd_cci_up)                                                                                               as ChmlCmplncReqNewProdName,


      -- Supplier ------------------------------------------------
      @ObjectModel.readOnly: true
      Supplier                                                                                                               as Supplier,
      @ObjectModel.readOnly: true
      _Supplier._SupplierToBusinessPartner._BusinessPartner.BusinessPartner                                                  as BusinessPartnerSupplier,
      @ObjectModel.readOnly: true                                                                                          
      _Supplier.BPSupplierName                                                                                              as BPSupplierName,
      

      @ObjectModel.readOnly: true
      Customer,
      @ObjectModel.readOnly: true
      _Customer._CustomerToBusinessPartner._BusinessPartner.BusinessPartner                                                  as BusinessPartnerCustomer,
      @ObjectModel.readOnly: true
      _Customer.BPCustomerName,
      
      -----------------------------------------------------------------------------------------------------------------------------------------------------------------
      -- CCI/PP Type and Roles
      -----------------------------------------------------------------------------------------------------------------------------------------------------------------
      --Chemical Compliance Information Type
      @ObjectModel.readOnly: true
      _ChmlCmplncInfo.ChmlCmplncInfoType,

      --Indicator: Chemical Compliance Information is transported
      @ObjectModel.readOnly: true
      _ChmlCmplncInfo.MaterialIsTransported,

      --Indicator: Chemical Compliance Information is sold
      @ObjectModel.readOnly: true
      _ChmlCmplncInfo.MaterialIsSold,

      --Indicator: Chemical Compliance Information is produced
      @ObjectModel.readOnly: true
      _ChmlCmplncInfo.MaterialIsProduced,

      --Indicator: Chemical Compliance Information is sourced
      @ObjectModel.readOnly: true
      _ChmlCmplncInfo.MaterialIsSourced,

      -----------------------------------------------------------------------------------------------------------------------------------------------------------------
      -- UP Roles in case the compliance request is assigned to a PP. Otherwise will hold the same values as the roles above.
      -----------------------------------------------------------------------------------------------------------------------------------------------------------------

      @ObjectModel.readOnly: true
      _ChmlCmplncInfoProd.MaterialIsTransported                                                                              as UnpckgdProdIsTransported,

      @ObjectModel.readOnly: true
      _ChmlCmplncInfoProd.MaterialIsSold                                                                                     as UnpckgdProdIsSold,

      @ObjectModel.readOnly: true
      _ChmlCmplncInfoProd.MaterialIsProduced                                                                                 as UnpckgdProdIsProduced,

      @ObjectModel.readOnly: true
      _ChmlCmplncInfoProd.MaterialIsSourced                                                                                  as UnpckgdProdIsSourced,



      -----------------------------------------------------------------------------------------------------------------------------
      /* Associations */
      -----------------------------------------------------------------------------------------------------------------------------
      @ObjectModel.association.type:  [ #TO_COMPOSITION_CHILD ]
      _NewComplInfo,

      @ObjectModel.association.type:  [ #TO_COMPOSITION_CHILD ]
      _RequestedMarket,

      @ObjectModel.association.type:  [ #TO_COMPOSITION_CHILD ]
      _RequestedPurpose,

      _MarketCountries,
      _Purposes,
      _BusinessProcess,
      _OriginType,
      _ProductGroupVH,
      _OriginTypeVH,
      _BusinessProcessVH,
      _RequesterContact,
      _CustomerContact,
      _CustomerContactDelivery,
      _ChmlCmplncInfo,
      _ChmlCmplncInfoProd,
      _ChemicalCustomerMaterial,
      _CmplncProcVH,
      _SupplierContact,
      _Supplier,
      _Customer

}