@AbapCatalog.viewEnhancementCategory: [#NONE]
@AccessControl.authorizationCheck: #PRIVILEGED_ONLY
@EndUserText.label: 'Change Documents'
@Metadata.ignorePropagatedAnnotations: true
@Metadata.allowExtensions: true
@ObjectModel.usageType:{
serviceQuality: #X,
sizeCategory: #XXL,
dataClass: #MIXED
}
@VDM.viewType:#CONSUMPTION
define root view entity C_ChangeDocument_2
provider contract transactional_query
as projection on I_ChangeDocument_2 as _item
{
// ----------------- KEY FIELDS ---------------------------------
// Objectclass
key _item.ChangeDocObjectClass as ChangeDocObjectClassForEdit,
// Objectid
key _item.ChangeDocObject as ChangeDocObjectForEdit,
// Changenumber
key _item.ChangeDocument as ChangeDocument,
// table name technical value from CDPOS
key _item.ChangeDocDatabaseTable as ChangeDocDatabaseTableForEdit,
// short table key from CDPOS
key _item.ChangeDocShortTableKey as ChangeDocShortTableKeyForEdit,
// field name technical value from CDPOS
key _item.ChangeDocDatabaseTableField as ChangeDocTableFieldForEdit,
// ChangeDocItemChangeType technical value
key cast ( _item.ChangeDocItemChangeType as cdchngind preserving type )
as ChangeDocChangeIndForEdit,
// -------------------- virtual fields for key fields -----------------------------------
// virtual field for objectclass
@ObjectModel: {
virtualElementCalculatedBy: 'ABAP:CL_CD_RAP_CALC',
sort.enabled: true,
sort.transformedBy: 'ABAP:CL_CD_RAP_TRANSFORM',
filter.enabled: true,
filter.transformedBy: 'ABAP:CL_CD_RAP_TRANSFORM' }
virtual ChangeDocObjectClass: cdobjectcl,
// virtual field for object
@ObjectModel: {
virtualElementCalculatedBy: 'ABAP:CL_CD_RAP_CALC',
sort.enabled: true,
sort.transformedBy: 'ABAP:CL_CD_RAP_TRANSFORM',
filter.enabled: true,
filter.transformedBy: 'ABAP:CL_CD_RAP_TRANSFORM' }
virtual ChangeDocObject: cdobjectv,
// ------------------- data fields with corresponding virtual fields -----------------------------------------------------
// Table name as text
@Consumption.hidden: true
_item._TableText.Text as ChangeDocDatabaseTableTxt_H : localized,
// virtual field for table name
@ObjectModel: {
virtualElementCalculatedBy: 'ABAP:CL_CD_RAP_CALC',
sort.enabled: true,
sort.transformedBy: 'ABAP:CL_CD_RAP_TRANSFORM',
filter.enabled: true,
filter.transformedBy: 'ABAP:CL_CD_RAP_TRANSFORM' }
virtual ChangeDocDatabaseTableTxt : cdtabnametxt,
// Field name as text
@Consumption.hidden: true
_item._FieldText.Text as ChangeDocTableFieldTxt_H : localized,
// virtual field for field name
@ObjectModel: {
virtualElementCalculatedBy: 'ABAP:CL_CD_RAP_CALC',
sort.enabled: true,
sort.transformedBy: 'ABAP:CL_CD_RAP_TRANSFORM',
filter.enabled: true,
filter.transformedBy: 'ABAP:CL_CD_RAP_TRANSFORM' }
virtual ChangeDocTableFieldTxt: cdfieldnametxt,
// ChangeDocItemChangeType as text
// _item._ChangeTypeText.Text as ChangeDocChangeText,
_item._ChangeTypeText.Text as ChangeDocChangeText : localized,
// virtual field for object description
@ObjectModel: {
virtualElementCalculatedBy: 'ABAP:CL_CD_RAP_CALC' }
virtual ChangeDocObjectDescription: cdobjecttxt,
// created by user - technical name
@Consumption.hidden: true
_item.CreatedByUser as CreatedByUserDB_H,
// created by user - technical name
@Consumption.hidden: true
_item.ChangeDocCreatedByUser as ChangeDocCreatedByUser_H,
// virtual field for CreatedByUser
@ObjectModel: {
virtualElementCalculatedBy: 'ABAP:CL_CD_RAP_CALC',
sort.enabled: true,
sort.transformedBy: 'ABAP:CL_CD_RAP_TRANSFORM',
filter.enabled: true,
filter.transformedBy: 'ABAP:CL_CD_RAP_TRANSFORM' }
virtual ChangeDocCreatedByUser: abap.char(255),
// Creation Date/ Time - technical data
@Consumption.hidden: true
_item.CreationDate as CreationDate_H,
@Consumption.hidden: true
_item.CreationTime as CreationTime_H,
// Created on
@Consumption.hidden: true
_item.CreationDateTime as CreationDateTime_H,
// virtual field for Created on
@ObjectModel: {
virtualElementCalculatedBy: 'ABAP:CL_CD_RAP_CALC',
sort.enabled: true,
sort.transformedBy: 'ABAP:CL_CD_RAP_TRANSFORM',
filter.enabled: true,
filter.transformedBy: 'ABAP:CL_CD_RAP_TRANSFORM' }
@Consumption.filter.selectionType: #INTERVAL
virtual CreationDateTime: cdcreated,
// language in CDHDR
@Consumption.hidden: true
_item.ChangeDocLanguage as ChangeDocLanguageKey_H,
@Consumption.hidden: true
_item._ChangeDocLanguageText.LanguageName as ChangeDocLanguage_H,
// transaction
_item.ChangeTransactionCode as ChangeTransactionCode_H,
// tabkey composed from short or long tabkey
@Consumption.hidden: true
_item.ChangeDocTableKey as ChangeDocTableKey_H,
// virtual field for composed tabkey
@ObjectModel: {
virtualElementCalculatedBy: 'ABAP:CL_CD_RAP_CALC',
sort.enabled: true,
sort.transformedBy: 'ABAP:CL_CD_RAP_TRANSFORM',
filter.enabled: true,
filter.transformedBy: 'ABAP:CL_CD_RAP_TRANSFORM' }
virtual ChangeDocTableKey: cdtabkeylo,
// new value
// new value direct from database without any conversions with unit/currency
@Consumption.hidden: true
_item.ChangeDocNewFieldValue as ChangeDocNewFieldValue_H,
// virtual field for new value - with conversions
@ObjectModel: {
// virtualElement: true,
virtualElementCalculatedBy: 'ABAP:CL_CD_RAP_CALC',
sort.enabled: false,
filter.enabled: false }
virtual ChangeDocNewFieldValue: cdfldvaln,
// old value
// old value direct from database with unit/currency
@Consumption.hidden: true
_item.ChangeDocPreviousFieldValue as ChangeDocPreviousFieldValue_H,
// virtual field for old value - with conversions
@ObjectModel: {
virtualElementCalculatedBy: 'ABAP:CL_CD_RAP_CALC',
sort.enabled: false,
filter.enabled: false }
virtual ChangeDocPreviousFieldValue: cdfldvalo,
// string new
@Consumption.hidden: true
_item.ChangeDocNewString as ChangeDocNewString_H,
// virtual field for string new
@ObjectModel: {
virtualElementCalculatedBy: 'ABAP:CL_CD_RAP_CALC',
sort.enabled: false,
sort.transformedBy: 'ABAP:CL_CD_RAP_TRANSFORM',
filter.enabled: true,
filter.transformedBy: 'ABAP:CL_CD_RAP_TRANSFORM' }
virtual ChangeDocNewString: cdstringvaln,
// string old
@Consumption.hidden: true
_item.ChangeDocPreviousString as ChangeDocPreviousString_H,
// virtual field for string old
@ObjectModel: {
virtualElementCalculatedBy: 'ABAP:CL_CD_RAP_CALC',
sort.enabled: false,
sort.transformedBy: 'ABAP:CL_CD_RAP_TRANSFORM',
filter.enabled: true,
filter.transformedBy: 'ABAP:CL_CD_RAP_TRANSFORM' }
virtual ChangeDocPreviousString: cdstringvalo,
// short string new
@Consumption.hidden: true
_item.ChangeDocNewShortString as ChangeDocNewShortString_H,
// virtual field for short string new
@ObjectModel: {
virtualElementCalculatedBy: 'ABAP:CL_CD_RAP_CALC',
sort.enabled: true,
sort.transformedBy: 'ABAP:CL_CD_RAP_TRANSFORM',
filter.enabled: true,
filter.transformedBy: 'ABAP:CL_CD_RAP_TRANSFORM' }
virtual ChangeDocNewShortString: cdshortstringn,
// short string old
@Consumption.hidden: true
_item.ChangeDocPreviousShortString as ChangeDocPreviousShortString_H,
// virtual field for short string old
@ObjectModel: {
virtualElementCalculatedBy: 'ABAP:CL_CD_RAP_CALC',
sort.enabled: true,
sort.transformedBy: 'ABAP:CL_CD_RAP_TRANSFORM',
filter.enabled: true,
filter.transformedBy: 'ABAP:CL_CD_RAP_TRANSFORM' }
virtual ChangeDocPreviousShortString: cdshortstringo,
// raw string new
@Consumption.hidden: true
_item.ChangeDocNewRawString as ChangeDocNewRawString_H,
// virtual field for raw string new
@ObjectModel: {
virtualElementCalculatedBy: 'ABAP:CL_CD_RAP_CALC',
sort.enabled: false,
sort.transformedBy: 'ABAP:CL_CD_RAP_TRANSFORM',
filter.enabled: true,
filter.transformedBy: 'ABAP:CL_CD_RAP_TRANSFORM' }
virtual ChangeDocNewRawString: cdrawstringn,
// raw string old
@Consumption.hidden: true
_item.ChangeDocPreviousRawString as ChangeDocPreviousRawString_H,
// virtual field for raw string old
@ObjectModel: {
virtualElementCalculatedBy: 'ABAP:CL_CD_RAP_CALC',
sort.enabled: false,
sort.transformedBy: 'ABAP:CL_CD_RAP_TRANSFORM',
filter.enabled: true,
filter.transformedBy: 'ABAP:CL_CD_RAP_TRANSFORM' }
virtual ChangeDocPreviousRawString: cdrawstringo
}