C_ProjectProfitabilityOverview

DDL: C_PROJECTPROFITABILITYOVERVIEW SQL: CPROJPRFTBLTY Type: view_entity CONSUMPTION Package: FINS_COPA_REPORTING

Project Profitability Overview

C_ProjectProfitabilityOverview is a Consumption CDS View that provides data about "Project Profitability Overview" in SAP S/4HANA. It reads from 1 data source (I_GLAccountLineItemSemTag) and exposes 73 fields with key fields GLAccountHierarchy, Ledger, CompanyCode, AccountingDocument, LedgerGLLineItem. It has 1 association to related views. Part of development package FINS_COPA_REPORTING.

Data Sources (1)

SourceAliasJoin Type
I_GLAccountLineItemSemTag I_GLAccountLineItemSemTag from

Parameters (2)

NameTypeDefault
P_Language sylangu
P_KeyDate sydate

Associations (1)

CardinalityTargetAliasCondition
[1..1] C_BusinessPartner _BusinessPartner $projection.Customer = _BusinessPartner.BusinessPartner

Annotations (11)

NameValueLevelField
VDM.viewType #CONSUMPTION view
EndUserText.label Project Profitability Overview view
AccessControl.authorizationCheck #CHECK view
AccessControl.personalData.blocking #REQUIRED view
AccessControl.auditFilter #ENABLED view
Metadata.allowExtensions true view
Analytics.settings.maxProcessingEffort #HIGH view
Metadata.ignorePropagatedAnnotations true view
ObjectModel.usageType.serviceQuality #D view
ObjectModel.usageType.sizeCategory #XXL view
ObjectModel.usageType.dataClass #MIXED view

Fields (73)

KeyFieldSource TableSource FieldDescription
KEY GLAccountHierarchy GLAccountHierarchy Financial Statement Version
KEY Ledger Ledger
KEY CompanyCode CompanyCode
KEY AccountingDocument AccountingDocument
KEY LedgerGLLineItem LedgerGLLineItem
KEY SourceLedger SourceLedger
KEY SemanticTag SemanticTag
KEY FiscalYear FiscalYear
KEY Project ProjectExternalID
KEY WBSElementExternalID WBSElementExternalID
KEY FiscalPeriod FiscalPeriod
KEY SoldProduct SoldProduct
GLAccountHierarchyName
CompanyCodeName _CompanyCode CompanyCodeName
LedgerName
ProjectName _ProjectExternalID ProjectDescription
ProfitCenter ProfitCenter
ProfitCenterName Profit Center Name
Customer Customer
BPCustMultiAddrIsActive _BusinessPartner BPCustMultiAddrIsActive
CustomerName _Customer CustomerName
CustomerGroup CustomerGroup
CustomerGroupName Customer Group Name
FiscalYearVariant FiscalYearVariant
LedgerFiscalYear LedgerFiscalYear
SalesOrganization SalesOrganization
SalesOrganizationName
GLAccount GLAccount
GLAccountName
OriginProfitCenter OriginProfitCenter
CostAnalysisResource CostAnalysisResource
ControllingArea ControllingArea
MaterialGroup MaterialGroup
SoldProductGroupName Sold Product Group Name
FiscalYearPeriod FiscalYearPeriod
BilledRevenueAmtInCoCodeCrcy
RecognizableCostAmtInCCCrcy RecognizableCostAmtInCCCrcy
RecognizedRevnAmtInCCCrcy RecognizedRevnAmtInCCCrcy
RecognizedCOGSAmtInCCCrcy RecognizedCOGSAmtInCCCrcy
RecognizedMarginAmtInCCCrcy RecognizedMarginAmtInCCCrcy
AssetLiabilityAmtInCCCrcy AssetLiabilityAmtInCCCrcy
RevenueAdjustmentAmtInCCCrcy RevenueAdjustmentAmtInCCCrcy
COGSAdjustmentAmtInCCCrcy COGSAdjustmentAmtInCCCrcy
DeferredCOGSAmtInCCCrcy DeferredCOGSAmtInCCCrcy
DeferredRevenueAmtInCCCrcy DeferredRevenueAmtInCCCrcy
AccruedRevenueAmtInCCCrcy AccruedRevenueAmtInCCCrcy
AccruedCOGSAmtInCCCrcy AccruedCOGSAmtInCCCrcy
CompanyCodeCurrency CompanyCodeCurrency
_BusinessPartner _BusinessPartner
FinancialAccountType FinancialAccountType
ValuationArea ValuationArea
SalesDocument SalesDocument
Segment Segment
Supplier Supplier
DistributionChannel DistributionChannel
OrganizationDivision OrganizationDivision
CostCenter CostCenter
OrderID OrderID
AssetClass AssetClass
PostingDate PostingDate
FunctionalArea FunctionalArea
AccountingDocumentType AccountingDocumentType
ServiceDocumentType ServiceDocumentType
ServiceDocument ServiceDocument
_CurrentProfitCenter _CurrentProfitCenter
_AccountingDocumentType _AccountingDocumentType
_ServiceDocument _ServiceDocument
_CurrentCostCenter _CurrentCostCenter
_Order _Order
_Customer _Customer
_Supplier _Supplier
_SalesDocument _SalesDocument
_FinancialAccountType _FinancialAccountType
//@AbapCatalog.sqlViewName: 'CPROJPRFTBLTY'

@VDM.viewType: #CONSUMPTION
@EndUserText.label: 'Project Profitability Overview'
@AccessControl.authorizationCheck: #CHECK
@AccessControl.personalData.blocking: #REQUIRED
@AccessControl.auditFilter: #ENABLED
@Metadata.allowExtensions: true
//@AbapCatalog.preserveKey:true


@Analytics.settings.maxProcessingEffort: #HIGH
//@ClientHandling.algorithm: #SESSION_VARIABLE


@Metadata.ignorePropagatedAnnotations: true
//@AbapCatalog.compiler.compareFilter:true

@ObjectModel.usageType.serviceQuality: #D
@ObjectModel.usageType.sizeCategory: #XXL
@ObjectModel.usageType.dataClass: #MIXED


@UI.chart: [{
    title: 'Recognized Margin',
    description: 'Recognized Margin',
    chartType: #COLUMN,
    dimensions:  [ 'CompanyCode' ],
    dimensionAttributes: [{
      dimension: 'CompanyCode',
      role: #CATEGORY
    }],
    measures:  [ 'RecognizedCOGSAmtInCCCrcy','RecognizedRevnAmtInCCCrcy'],
    measureAttributes: [{
        measure: 'RecognizedCOGSAmtInCCCrcy',
        role: #AXIS_1
      },{

        measure: 'RecognizedRevnAmtInCCCrcy',
        role: #AXIS_1
      }]
  },{
    qualifier: 'RecognizedMarginWaterfall',
    title: 'Recognized Margin',
    description: 'Recognized Margin',
    chartType: #COLUMN,
    dimensions:  [ 'CompanyCode' ],
    dimensionAttributes: [{
      dimension: 'CompanyCode',
      role: #CATEGORY
    }],
    measures:  [ 'RecognizedCOGSAmtInCCCrcy','RecognizedRevnAmtInCCCrcy'],
    measureAttributes: [{

        measure: 'RecognizedCOGSAmtInCCCrcy',
        role: #AXIS_1
      },{

        measure: 'RecognizedRevnAmtInCCCrcy',
        role: #AXIS_1
      }]
  },{
    qualifier: 'RecognizedRevenueDonut',
    title: 'Recognized Revenue By G/L Account',
    description: 'Recognized Revenue By G/L Account',
    chartType: #COLUMN,
    dimensions:  [ 'GLAccount' ],
    dimensionAttributes: [{
      dimension: 'GLAccount',
      role: #CATEGORY
    }],
    measures:  [ 'RecognizedRevnAmtInCCCrcy'],
    measureAttributes: [{
        measure: 'RecognizedRevnAmtInCCCrcy',
        role: #AXIS_1
      }]
  },{
    qualifier: 'RecognizedMarginByPC',
    title: 'Recognized Margin By Profit Center',
    description: 'Recognized Margin',
    chartType: #COLUMN,
    dimensions:  [ 'ProfitCenter' ],
    dimensionAttributes: [{
      dimension: 'ProfitCenter',
      role: #CATEGORY
    }],
    measures:  [ 'RecognizedMarginAmtInCCCrcy'],
    measureAttributes: [{
        measure: 'RecognizedMarginAmtInCCCrcy',
        role: #AXIS_1
      }]
  },{
    qualifier: 'RecognizedMarginByOPC',
    title: 'Recognized Margin By Origin ProfitCenter',
    description: 'Recognized Margin',
    chartType: #COLUMN,
    dimensions:  [ 'OriginProfitCenter' ],
    dimensionAttributes: [{
      dimension: 'OriginProfitCenter',
      role: #CATEGORY
    }],
    measures:  [ 'RecognizedMarginAmtInCCCrcy'],
    measureAttributes: [{
        measure: 'RecognizedMarginAmtInCCCrcy',
        role: #AXIS_1
      }]
  },{
    qualifier: 'RecognizedMarginScatterBySalesOrganzation',
    title: 'Recognized Margin By Sales Organzation',
    description: 'Recognized Margin By Sales Organzation',
    chartType: #SCATTER,
    dimensions:  [ 'SalesOrganization' ],
    dimensionAttributes: [{
      dimension: 'SalesOrganization',
      role: #CATEGORY
    }],
    measures:  [ 'RecognizedCOGSAmtInCCCrcy','RecognizedRevnAmtInCCCrcy'],
    measureAttributes: [{
        measure: 'RecognizedCOGSAmtInCCCrcy',
        role: #AXIS_2
      },{
        measure: 'RecognizedRevnAmtInCCCrcy',
        role: #AXIS_2
      }]
  },{
    qualifier: 'RecognizedMarginScatterByMaterialGroup',
    title: 'Recognized Margin By Product Sold Group',
    description: 'Recognized Margin By Product Sold Group',
    chartType: #SCATTER,
    dimensions:  [ 'MaterialGroup' ],
    dimensionAttributes: [{
      dimension: 'MaterialGroup',
      role: #CATEGORY
    }],
    measures:  [ 'RecognizedCOGSAmtInCCCrcy','RecognizedRevnAmtInCCCrcy'],
    measureAttributes: [{
        measure: 'RecognizedCOGSAmtInCCCrcy',
        role: #AXIS_2
      },{
        measure: 'RecognizedRevnAmtInCCCrcy',
        role: #AXIS_2
      }]
  },{
    qualifier: 'RecognizedMarginScatterByCustomerGroup',
    title: 'Recognized Margin By Customer Group',
    description: 'Recognized Margin By Customer Group',
    chartType: #SCATTER,
    dimensions:  [ 'CustomerGroup' ],
    dimensionAttributes: [{
      dimension: 'CustomerGroup',
      role: #CATEGORY
    }],
    measures:  [ 'RecognizedCOGSAmtInCCCrcy','RecognizedRevnAmtInCCCrcy'],
    measureAttributes: [{
        measure: 'RecognizedCOGSAmtInCCCrcy',
        role: #AXIS_2
      },{
        measure: 'RecognizedRevnAmtInCCCrcy',
        role: #AXIS_2
      }]
  },{
    qualifier: 'RecognizedMarginByResources',
    title: 'Recognized Margin By Resource',
    description: 'Recognized Margin By Resource',
    chartType: #COLUMN,
    dimensions:  [ 'CostAnalysisResource' ],
    dimensionAttributes: [{
      dimension: 'CostAnalysisResource',
      role: #CATEGORY
    }],
    measures:  [ 'RecognizedMarginAmtInCCCrcy'],
    measureAttributes: [{
        measure: 'RecognizedMarginAmtInCCCrcy',
        role: #AXIS_2
      }]
  },{
    qualifier: 'WIPRevCOS',
    title: 'WIP By Company',
    description: 'WIP By Company',
    chartType: #COLUMN,
    dimensions:  [ 'CompanyCode' ],
    dimensionAttributes: [{
      dimension: 'CompanyCode',
      role: #SERIES
    }],
    measures:  [ 'AccruedCOGSAmtInCCCrcy', 'AccruedRevenueAmtInCCCrcy', 'DeferredCOGSAmtInCCCrcy', 'DeferredRevenueAmtInCCCrcy'],
    measureAttributes: [{
        measure: 'DeferredCOGSAmtInCCCrcy', role: #AXIS_1
       }, {
        measure: 'AccruedCOGSAmtInCCCrcy',    role: #AXIS_1
       }, {
        measure: 'DeferredRevenueAmtInCCCrcy', role: #AXIS_1
       }, {
        measure: 'AccruedRevenueAmtInCCCrcy', role: #AXIS_1
      }]
  },{
    qualifier: 'WIPRevCOSByProdSoldGroup',
    title: 'WIP By Product Sold Group',
    description: 'WIP By Product Sold Group',
    chartType: #COLUMN,
    dimensions:  [ 'MaterialGroup' ],
    dimensionAttributes: [{
      dimension: 'MaterialGroup',
      role: #CATEGORY
    }],
    measures:  [ 'AccruedCOGSAmtInCCCrcy', 'AccruedRevenueAmtInCCCrcy', 'DeferredCOGSAmtInCCCrcy', 'DeferredRevenueAmtInCCCrcy'],
    measureAttributes: [{
        measure: 'DeferredCOGSAmtInCCCrcy', role: #AXIS_1
       }, {
        measure: 'AccruedCOGSAmtInCCCrcy',    role: #AXIS_1
       }, {
        measure: 'DeferredRevenueAmtInCCCrcy', role: #AXIS_1
       }, {
        measure: 'AccruedRevenueAmtInCCCrcy', role: #AXIS_1
      }]
  },{
    qualifier: 'WIPRevCOSByCustomerGroup',
    title: 'WIP By Customer Group',
    description: 'WIP By Customer Group',
    chartType: #COLUMN,
    dimensions:  [ 'CustomerGroup' ],
    dimensionAttributes: [{
      dimension: 'CustomerGroup',
      role: #CATEGORY
    }],
    measures:  [ 'AccruedCOGSAmtInCCCrcy', 'AccruedRevenueAmtInCCCrcy', 'DeferredCOGSAmtInCCCrcy', 'DeferredRevenueAmtInCCCrcy'],
    measureAttributes: [{
        measure: 'DeferredCOGSAmtInCCCrcy', role: #AXIS_1
       }, {
        measure: 'AccruedCOGSAmtInCCCrcy',    role: #AXIS_1
       }, {
        measure: 'DeferredRevenueAmtInCCCrcy', role: #AXIS_1
       }, {
        measure: 'AccruedRevenueAmtInCCCrcy', role: #AXIS_1
      }]
  }]

@UI.presentationVariant: [{
    qualifier: 'TopProjectByMargin',
    sortOrder: [{
      by: 'RecognizedMarginAmtInCCCrcy',
      direction: #DESC
    }]
},
{
    qualifier: 'RecognizedMarginByCenter',
    sortOrder: [{
      by: 'RecognizedMarginAmtInCCCrcy',
      direction: #DESC
    }]
}]

@UI.selectionVariant:[{
    qualifier: 'CostByCostTags',
    id: 'CostByCostTags',
    text: 'Cost By Cost Tags',
    filter: 'SemanticTag in (COGS_PERT,TRAVELCST,SERVICECST,HRD_COST,LIC_COST,MATCST,COGS_OMAT,OVH_ADMIN,OTHERSMISC)'
},{
    qualifier: 'RecognizedMarginByResources',
    id: 'RecognizedMarginByResources',
    text: 'Recognized Margin By Resource',
    filter: 'CostAnalysisResource in (SAPACTCC,SAPACTI,SAPACTE,SAPACTECC,SAPEXPCC,SAPEXPI,SAPEXPE)'

},{
    qualifier: 'RecognizedRevenueDonut',
    id: 'RecognizedRevenueDonut',
    text: 'RecognizedRevenueDonut',
    filter: 'SemanticTag eq RECO_REV'
}]

define view entity C_ProjectProfitabilityOverview
  with parameters
    @Consumption.hidden: true
    @Environment.systemField: #SYSTEM_LANGUAGE
    P_Language           : sylangu,

    @Consumption.hidden: true
    @Environment.systemField: #SYSTEM_DATE
    P_KeyDate            : sydate
    //,

    //@Consumption.valueHelpDefinition: [{

    //  entity: {

    //      name:    'I_GLAccountHierarchyStdVH',

    //       element: 'GLAccountHierarchy'

    //  }

     //}]

    // @Consumption.derivation: { lookupEntity: 'I_UserSetGetParamForCtrlgArea',

    //     resultElement: 'CtrlgStdFinStatementVersion' }

    //P_GLAccountHierarchy : fins_sem_tag_hryid

 as select from I_GLAccountLineItemSemTag as I_GLAccountLineItemSemTag
 association [1..1] to C_BusinessPartner            as _BusinessPartner           on  $projection.Customer = _BusinessPartner.BusinessPartner
{
  @Consumption.filter :{ selectionType: #SINGLE, multipleSelections: false, mandatory: true, defaultValue: 'YPS2' }
  @UI.selectionField: [{position: 10 }]
  @UI.textArrangement: #TEXT_LAST
  @ObjectModel.text.element: [ 'GLAccountHierarchyName' ]
  @EndUserText.label: 'Financial Statement Version'
  @Consumption.valueHelpDefinition: [{ entity:{ name: 'I_GLAccountHierarchyStdVH', element: 'GLAccountHierarchy' } }]
  key GLAccountHierarchy,
//  In ODATA Service ,Derivation must be used as mandatory filter: otherwise space will get the derivation value defautly!!!

//  Analytical Query does have this problem

//  @Consumption.derivation: { lookupEntity: 'I_Ledger',

//    resultElement: 'Ledger', binding: [

//    { targetElement : 'IsLeadingLedger' , type : #CONSTANT, value : 'X' } ]

//   }

  @Consumption.filter :{ selectionType: #SINGLE, multipleSelections: true, mandatory: false, defaultValue: '0L' }
  @AnalyticsDetails.query.totals: #HIDE
  @UI.selectionField:[{position: 30, exclude: false }]
  @UI.textArrangement: #TEXT_LAST
  @ObjectModel.text.element: [ 'LedgerName' ]
  @Consumption.valueHelpDefinition: [{ entity:{ name: 'I_Ledger', element: 'Ledger' } }]
  key Ledger,
  @Consumption.filter :{ selectionType: #SINGLE, multipleSelections: true, mandatory: false }
  @UI.selectionField:[{position: 12, exclude: false }]
  @AnalyticsDetails.query.variableSequence : 20
  @UI.textArrangement: #TEXT_LAST
  @ObjectModel.text.element: [ 'CompanyCodeName' ]
  @Consumption.valueHelpDefinition: [{ entity:{ name: 'C_CompanyCodeValueHelp', element: 'CompanyCode' } }]
  key CompanyCode,
  key AccountingDocument,
  key LedgerGLLineItem,
  key SourceLedger,
  @AnalyticsDetails.query.axis: #FREE
  key SemanticTag,
  @Consumption.filter :{ selectionType: #SINGLE, multipleSelections: true, mandatory: false }
  @AnalyticsDetails.query.variableSequence : 60
  @AnalyticsDetails.query.totals: #SHOW
  @UI.selectionField:[{position: 15, exclude: false }]
  @Semantics.fiscal.year: true
  @Consumption.valueHelpDefinition: [{ entity:{ name: 'I_FiscalYearForCompanyCode', element: 'FiscalYear' } }]
//  @Consumption.derivation: {

//      lookupEntity:  'F_FsclYrDteFuncSglVal',

//      resultElement: 'FiscalYear',

//      binding: [

//          { targetParameter: 'P_DateFunction', type : #CONSTANT, value: 'CURRENTFISCALYEAR' },

//          { targetParameter: 'P_FiscalYearVariant', type : #CONSTANT, value: 'K4' }

//      ]

//  }

  
  key FiscalYear,

  @UI.textArrangement: #TEXT_LAST
  @ObjectModel.text.element: [ 'ProjectName' ]
  @AnalyticsDetails.query.axis: #ROWS
  @AnalyticsDetails.query.totals: #SHOW
  @Consumption.filter :{ selectionType: #SINGLE, multipleSelections: true, mandatory: false }
  @AnalyticsDetails.query.variableSequence : 30
  @UI.selectionField:[{position: 25, exclude: false }]
  @UI.lineItem:[ {
     qualifier: 'TopProjectByMargin',
     position: 1,
     importance: #HIGH
  }]
  @Consumption.valueHelpDefinition: [
    { entity:  { name:    'I_ProjectByExternalID',
                 element: 'ProjectExternalID' }
    }]
  //key cast ( Project as ps_pspid_edit preserving type  ) as Project,

  key ProjectExternalID as Project,

  @AnalyticsDetails.query.totals: #SHOW
  //key cast ( WBSElement as fis_wbsext_no_conv preserving type ) as WBSElement,

  key WBSElementExternalID,

  @AnalyticsDetails.query.totals: #SHOW
  @Consumption.filter :{ selectionType: #SINGLE, multipleSelections: true, mandatory: false }
  @AnalyticsDetails.query.variableSequence : 50
  @Semantics.fiscal.period: true
  key FiscalPeriod,

  @AnalyticsDetails.query.axis: #ROWS
  @AnalyticsDetails.query.totals: #SHOW
  @UI.textArrangement: #TEXT_LAST
  key SoldProduct,

  @Semantics.text: true
  @UI.hidden: true
  _GLAccountHierarchy._Text[1:Language  = $session.system_language].GLAccountHierarchyName as GLAccountHierarchyName,

  @Semantics.text: true
  @UI.hidden: true
  _CompanyCode.CompanyCodeName as CompanyCodeName,

  @Semantics.text: true
  @UI.hidden: true
  _Ledger._Text[1:Language  = $session.system_language].LedgerName as LedgerName,

  @Semantics.text: true
  @UI.hidden: true
  _ProjectExternalID.ProjectDescription as ProjectName,

  @UI.textArrangement: #TEXT_LAST
  @ObjectModel.text.element: [ 'ProfitCenterName' ]
  @Consumption.valueHelpDefinition: [{ entity:{ name: 'I_ProfitCenterVH', element: 'ProfitCenter' } }]
  ProfitCenter,

  @Semantics.text: true
  @UI.hidden: true
  @EndUserText.label: 'Profit Center Name'
  @EndUserText.quickInfo: 'Profit Center Name'
  _CurrentProfitCenter._Text[1:Language  = $session.system_language].ProfitCenterName as ProfitCenterName,

  @UI.textArrangement: #TEXT_LAST
  @ObjectModel.text.element: ['CustomerName']
  @Consumption: {
    valueHelpDefinition: [
      { entity: { name : 'I_Customer_VH', element: 'Customer' } ,
        qualifier: 'CustMultiAddr1',
        label: 'Customers with Standard Address'},
      { entity: { name: 'I_BPCustomerMultiAddrVH', element: 'Customer'},
        qualifier: 'CustMultiAddr',
        label: 'Customers with Multiple Addresses' ,
        enabled: 'BPCustMultiAddrIsActive' }
    ]
  }
  Customer,

  @UI.hidden: true
  _BusinessPartner.BPCustMultiAddrIsActive as BPCustMultiAddrIsActive,

  @Semantics.text: true
  @UI.hidden: true
  _Customer.CustomerName as CustomerName,

  @UI.textArrangement: #TEXT_LAST
  @ObjectModel.text.element: [ 'CustomerGroupName' ]
  @Consumption.filter :{ selectionType: #SINGLE, multipleSelections: true, mandatory: false }
  @Consumption.valueHelpDefinition: [{ entity:{ name: 'I_CustomerGroup', element: 'CustomerGroup' } }]
  CustomerGroup,

  @Semantics.text: true
  @UI.hidden: true
  @EndUserText.label: 'Customer Group Name'
  @EndUserText.quickInfo: 'Customer Group Name'
  _CustomerGroup._Text[1:Language  = $session.system_language].CustomerGroupName as CustomerGroupName,
  

  FiscalYearVariant,
  @UI.textArrangement: #TEXT_LAST
  @Consumption.filter :{ selectionType: #INTERVAL, multipleSelections: true, mandatory: false }
  @Consumption.valueHelpDefinition: [{ entity:{ name: 'I_FiscalYearForVariant', element: 'FiscalYear' } }]
  @Semantics.fiscal.year: true
  LedgerFiscalYear,

  @ObjectModel.text.element: ['SalesOrganizationName']
  @UI.textArrangement: #TEXT_LAST
  @Consumption.valueHelpDefinition: [{ entity:{ name: 'C_RevnVarSlsOrgVH', element: 'SalesOrganization' } }]
  SalesOrganization,

  @Semantics.text: true
  @UI.hidden: true
  _SalesOrganization._Text[1:Language = $session.system_language].SalesOrganizationName,

  @ObjectModel.text.element: ['GLAccountName']
  @UI.textArrangement: #TEXT_LAST
  GLAccount,
  @Semantics.text: true
  @UI.hidden: true
  _GLAccountInChartOfAccounts._Text[1: Language = $parameters.P_Language ].GLAccountName,

  OriginProfitCenter,
  CostAnalysisResource,
  ControllingArea,

  @UI.textArrangement: #TEXT_LAST
  @ObjectModel.text.element: [ 'SoldProductGroupName' ]
  MaterialGroup,

  @Semantics.text: true
  @UI.hidden: true
  @EndUserText.label: 'Sold Product Group Name'
  @EndUserText.quickInfo: 'Sold Product Group Name'
  _MaterialGroup._Text[1:Language  = $session.system_language].MaterialGroupName as SoldProductGroupName,

  @Semantics.fiscal.yearPeriod: true
   FiscalYearPeriod,

  @DefaultAggregation: #SUM
  @Semantics.amount.currencyCode: 'CompanyCodeCurrency'
  cast ( BilledRevenueAmtInCoCodeCrcy  as fins_trr_actrevn preserving type )           as BilledRevenueAmtInCoCodeCrcy,

  @DefaultAggregation: #SUM
  @Semantics.amount.currencyCode: 'CompanyCodeCurrency'
  RecognizableCostAmtInCCCrcy,

  @UI.dataPoint:{
      title:'Recognized Revenue',
      description: 'Recognized Revenue',
      longDescription: 'Recognized Revenue Amount',
      criticalityCalculation: {
           improvementDirection: #MAXIMIZE
      },
      valueFormat.numberOfFractionalDigits: 3,
      visualization: #NUMBER
   }

  @DefaultAggregation: #SUM
  @Semantics.amount.currencyCode: 'CompanyCodeCurrency'
  RecognizedRevnAmtInCCCrcy,

  @UI.dataPoint:{
      title:'Recognized COGS',
      description: 'Recognized COGS',
      longDescription: 'Recognized Cost Of Goods Sold',
      criticalityCalculation: {
           improvementDirection: #MINIMIZE
      },
      valueFormat.numberOfFractionalDigits: 3,
      visualization: #NUMBER
  }
  @DefaultAggregation: #SUM
  @Semantics.amount.currencyCode: 'CompanyCodeCurrency'
  RecognizedCOGSAmtInCCCrcy,

  @UI.lineItem:[ {
      qualifier: 'TopProjectByMargin',
      position: 10,
      importance: #HIGH,
      type:#AS_DATAPOINT
    }]
  @UI.dataPoint:{
    title:'Recognized Margin',
    description: 'Recognized Margin',
    longDescription: 'Recognized Margin',
    criticalityCalculation: {
         improvementDirection: #MAXIMIZE
    },
    visualization: #BULLET_CHART,
    valueFormat.numberOfFractionalDigits: 3
  }
  @UI.identification: [
  {
    importance: #HIGH,
    type: #FOR_INTENT_BASED_NAVIGATION,
        //semanticObjectAction: 'displayProjectBooklet'

    semanticObjectAction: 'analyzeProjectProfitability'
  }
  ]
  @Consumption.semanticObject: 'Project'
  @DefaultAggregation: #SUM
  @Semantics.amount.currencyCode: 'CompanyCodeCurrency'
  RecognizedMarginAmtInCCCrcy,

  @UI.dataPoint:{
      title:'Asset/Liability',
      description: 'Asset/Liability',
      longDescription: 'Asset/Liability',
      criticalityCalculation: {
           improvementDirection: #MAXIMIZE
      },
      valueFormat.numberOfFractionalDigits: 3,
      visualization: #NUMBER
  }
  @AnalyticsDetails.query.hidden: true
  @DefaultAggregation: #SUM
  @Semantics.amount.currencyCode: 'CompanyCodeCurrency'
  AssetLiabilityAmtInCCCrcy,

  @DefaultAggregation: #SUM
  @Semantics.amount.currencyCode: 'CompanyCodeCurrency'
  RevenueAdjustmentAmtInCCCrcy,
  @DefaultAggregation: #SUM
  @Semantics.amount.currencyCode: 'CompanyCodeCurrency'
  COGSAdjustmentAmtInCCCrcy,
  @DefaultAggregation: #SUM
  @Semantics.amount.currencyCode: 'CompanyCodeCurrency'
  DeferredCOGSAmtInCCCrcy,
  @DefaultAggregation: #SUM
  @Semantics.amount.currencyCode: 'CompanyCodeCurrency'
  DeferredRevenueAmtInCCCrcy,
  @DefaultAggregation: #SUM
  @Semantics.amount.currencyCode: 'CompanyCodeCurrency'
  AccruedRevenueAmtInCCCrcy,
  @DefaultAggregation: #SUM
  @Semantics.amount.currencyCode: 'CompanyCodeCurrency'
  AccruedCOGSAmtInCCCrcy,


  CompanyCodeCurrency,

  _BusinessPartner,
  
  //Add these fields to enhance the DCL to inherit I_GLAccountLineItem

  FinancialAccountType,
  ValuationArea,
  SalesDocument,
  Segment,
  Supplier,
  DistributionChannel,
  OrganizationDivision,
  CostCenter,
  OrderID,
  AssetClass,
  PostingDate,
  FunctionalArea,
  AccountingDocumentType,
  ServiceDocumentType,
  ServiceDocument,
  
  _CurrentProfitCenter,
  _AccountingDocumentType,
  _ServiceDocument,
  _CurrentCostCenter,
  _Order,
  _Customer,
  _Supplier,
  _SalesDocument,
  _FinancialAccountType
  
  
}
where 
  //I_GLAccountLineItemSemTag.GLAccountHierarchy  = $parameters.P_GLAccountHierarchy 

  //and

  AccountAssignmentType                        =  'PR'
  and SemanticTag                                  <> 'NTINC_ALAC'