P_RAChangeDocumentItem

DDL: P_RACHANGEDOCUMENTITEM Type: view_entity COMPOSITE Package: ODATA_FARR_CHANGE_HISTORY

RA Contract Change Document Item

P_RAChangeDocumentItem is a Composite CDS View that provides data about "RA Contract Change Document Item" in SAP S/4HANA. It reads from 1 data source (I_ChangeDocumentItem) and exposes 23 fields with key fields ChangeDocObject, ChangeDocObjectClass, ChangeDocument, DatabaseTable, ChangeDocTableKey. It has 6 associations to related views. Part of development package ODATA_FARR_CHANGE_HISTORY.

Data Sources (1)

SourceAliasJoin Type
I_ChangeDocumentItem I_ChangeDocumentItem from

Associations (6)

CardinalityTargetAliasCondition
[1..1] P_RAContractForChangeItem _Contract _Contract.ChangeDocObject = $projection.ChangeDocObject
[0..1] I_RAPerformanceObligation _POB _POB.PerformanceObligation = $projection.PerformanceObligation
[1..1] I_RAChangeDocFieldName _FieldName _FieldName.DatabaseTable = $projection.DatabaseTable and _FieldName.DatabaseTableField = $projection.ChangeDocDatabaseTableField and _FieldName.Language = $session.system_language
[1..1] I_RAChangeDocTableName _TableName _TableName.DatabaseTable = $projection.DatabaseTable and _TableName.Language = $session.system_language
[1..1] I_User _CreatedByUser _CreatedByUser.UserID = $projection.CreatedByUser
[1..1] I_RAChangeTransactionCode _RAChangeTransactionCode _RAChangeTransactionCode.ChangeTransactionCode = $projection.changetransactioncode

Annotations (3)

NameValueLevelField
AccessControl.authorizationCheck #NOT_REQUIRED view
VDM.private true view
VDM.viewType #COMPOSITE view

Fields (23)

KeyFieldSource TableSource FieldDescription
KEY ChangeDocObject ChangeDocObject
KEY ChangeDocObjectClass ChangeDocObjectClass
KEY ChangeDocument ChangeDocument
KEY DatabaseTable DatabaseTable
KEY ChangeDocTableKey ChangeDocTableKey
KEY ChangeDocDatabaseTableField ChangeDocDatabaseTableField
KEY ChangeDocItemChangeType ChangeDocItemChangeType
DatabaseTableText _TableName DatabaseTableText
DatabaseTableFieldText _FieldName DatabaseTableFieldText
ChangeDocPreviousUnit ChangeDocPreviousUnit
ChangeDocNewUnit ChangeDocNewUnit
ChangeDocPreviousCurrency ChangeDocPreviousCurrency
ChangeDocNewCurrency ChangeDocNewCurrency
CreatedByUser
CreationDate
CreationTime
ChangeTransactionCode
_TableName _TableName
_FieldName _FieldName
_CreatedByUser _CreatedByUser
_Contract _Contract
_POB _POB
_RAChangeTransactionCode _RAChangeTransactionCode
@AccessControl.authorizationCheck: #NOT_REQUIRED
@AccessControl.privilegedAssociations: [ '_CreatedByUser' ]

@VDM.private: true
@VDM.viewType: #COMPOSITE

define view entity P_RAChangeDocumentItem
  as select from I_ChangeDocumentItem

  association [1..1] to P_RAContractForChangeItem             as _Contract
    on _Contract.ChangeDocObject = $projection.ChangeDocObject

  association [0..1] to I_RAPerformanceObligation             as _POB
    on _POB.PerformanceObligation = $projection.PerformanceObligation

  association [1..1] to I_RAChangeDocFieldName                as _FieldName
    on  _FieldName.DatabaseTable      = $projection.DatabaseTable
    and _FieldName.DatabaseTableField = $projection.ChangeDocDatabaseTableField
    and _FieldName.Language           = $session.system_language

  association [1..1] to I_RAChangeDocTableName                as _TableName
    on  _TableName.DatabaseTable = $projection.DatabaseTable
    and _TableName.Language      = $session.system_language

  association [1..1] to I_User                                as _CreatedByUser
    on _CreatedByUser.UserID = $projection.CreatedByUser

  association [1..1] to I_RAChangeTransactionCode             as _RAChangeTransactionCode
    on _RAChangeTransactionCode.ChangeTransactionCode = $projection.changetransactioncode

{
  key ChangeDocObject,

  key ChangeDocObjectClass,

  key ChangeDocument,

      @ObjectModel.foreignKey.association: '_TableName'
  key DatabaseTable,

  key ChangeDocTableKey,

      @ObjectModel.foreignKey.association: '_FieldName'
  key ChangeDocDatabaseTableField,

  key ChangeDocItemChangeType,

      _TableName.DatabaseTableText,

      _FieldName.DatabaseTableFieldText,

      ChangeDocPreviousUnit,
      ChangeDocNewUnit,
      ChangeDocPreviousCurrency,
      ChangeDocNewCurrency,

      // join new field value with its currency or unit

      case
        when ChangeDocNewCurrency   is not initial
          or ChangeDocNewUnit       is not initial
        then cast(concat_with_space(ChangeDocNewFieldValue,
                                    concat(ChangeDocNewCurrency, ChangeDocNewUnit), 1) as changedocnewfieldvalue)
        else cast(ChangeDocNewFieldValue as changedocnewfieldvalue preserving type)
      end                                                as ChangeDocNewFieldValue,

      // join old field value with its currency or unit

      case
        when ChangeDocPreviousCurrency   is not initial
          or ChangeDocPreviousUnit       is not initial
        then cast(concat_with_space(ChangeDocPreviousFieldValue,
                                    concat(ChangeDocPreviousCurrency, ChangeDocPreviousUnit), 1) as changedocpreviousfieldvalue)
        else cast(ChangeDocPreviousFieldValue as changedocpreviousfieldvalue preserving type)
      end                                                as ChangeDocPreviousFieldValue,

      @ObjectModel.foreignKey.association: '_CreatedByUser'
      @Semantics.user.createdBy: true
      I_ChangeDocumentItem._ChangeDocument.CreatedByUser as CreatedByUser,

      @Semantics.systemDate.createdAt: true
      I_ChangeDocumentItem._ChangeDocument.CreationDate,

      I_ChangeDocumentItem._ChangeDocument.CreationTime,

      @ObjectModel.foreignKey.association: '_RAChangeTransactionCode'
      I_ChangeDocumentItem._ChangeDocument.ChangeTransactionCode,

      // Is Manually Changed

      case
        when I_ChangeDocumentItem._ChangeDocument.ChangeTransactionCode like 'FARR_MANUAL_%'
          // or _ChangeDocument.ChangeTransactionCode = 'FARR_MANUAL_FULFILL'

        then cast('X' as farr_manual_changed_cds preserving type)
        else cast(' ' as farr_manual_changed_cds preserving type)
      end                                                as RAContractIsManuallyChanged,

      // select POB ID from ChangeDocTableKey

      @ObjectModel.foreignKey.association: '_POB'
      case
        when DatabaseTable = 'FARR_D_POB' 
        then cast(substring(ChangeDocTableKey, 4, 16) as farr_cds_pob_id preserving type )
      end                                                as PerformanceObligation,
      

      _TableName,
      _FieldName,
      _CreatedByUser,
      _Contract,
      _POB,
      _RAChangeTransactionCode

}
where ChangeDocObjectClass = 'FARR_CONTRACT'     // only select Revenue Accounting change 

  and (    DatabaseTable = 'FARR_D_CONTRACT'
        or DatabaseTable = 'FARR_D_POB'
        or DatabaseTable = 'FARR_D_FULFILLMT' )
  and ChangeDocItemChangeType = 'U';             // history with updated flag