C_ChangeDocuments
CDS View für Änderungsbelege
C_ChangeDocuments is a Consumption CDS View that provides data about "CDS View für Änderungsbelege" in SAP S/4HANA. It reads from 1 data source (I_ChangeDocument) and exposes 34 fields with key fields ChangeDocObjectClass, ChangeDocObjectClassDisplay, ChangeDocObjectClassTr, ChangeDocObject, ChangeDocObjectDisplay. It has 5 associations to related views. It is exposed through 2 OData services (UI_SHIPMENTCONTAINERPACKG, UI_SUPPLIERITEM). It is used in 2 Fiori applications: Manage Logistics - Supplier Items, Pack Container. Part of development package SZD.
Data Sources (1)
| Source | Alias | Join Type |
|---|---|---|
| I_ChangeDocument | _header | from |
Associations (5)
| Cardinality | Target | Alias | Condition |
|---|---|---|---|
| [0..1] | I_LanguageText | _langu | _langu.Language = $session.system_language and _langu.LanguageCode = ChangeDocLanguage |
| [0..1] | I_ChangeDocUser | _user | $projection.CreatedByUser = _user.UserName |
| [0..1] | I_ChangeDocChangeIndT | _changetype_text | $projection.ChangeDocChangeType = _changetype_text.Value and _changetype_text.Language = $session.system_language |
| [0..1] | I_ChangeDocFieldNamesT | _fieldname_text | _fieldname_text.DatabaseTable = $projection.DatabaseTable and _fieldname_text.Value = $projection.ChangeDocDatabaseTableField and _fieldname_text.Language = $session.system_language |
| [0..1] | I_ChangeDocTableNames | _tablename_text | $projection.DatabaseTable = _tablename_text.Value and _tablename_text.Language = $session.system_language |
Annotations (7)
| Name | Value | Level | Field |
|---|---|---|---|
| AbapCatalog.sqlViewName | CBCCHANGEDOC | view | |
| AbapCatalog.compiler.compareFilter | true | view | |
| EndUserText.label | CDS View für Änderungsbelege | view | |
| ClientHandling.algorithm | #SESSION_VARIABLE | view | |
| AccessControl.authorizationCheck | #NOT_REQUIRED | view | |
| VDM.viewType | #CONSUMPTION | view | |
| Metadata.allowExtensions | true | view |
OData Services (2)
| Service | Binding | Version | Contract | Release |
|---|---|---|---|---|
| UI_SHIPMENTCONTAINERPACKG | UI_SHIPMENTCONTAINERPACKG | V2 | C1 | NOT_TO_BE_RELEASED_STABLE |
| UI_SUPPLIERITEM | UI_SUPPLIERITEM | V2 | C1 | NOT_TO_BE_RELEASED_STABLE |
Fiori Apps (2)
| App ID | App Name | Type | Description |
|---|---|---|---|
| F5082 | Manage Logistics - Supplier Items | Transactional | An application to manage logistics of supplier owned , rental and non-stock items from base plant to remote plant.The non-stock items can be moved to stock after specific number of days which is configurable once received in base plant without sending to remote plant. The move to stock is also supported at the remote as well as when recieved back at base. Ad-hoc items are free flowing items which is created without the purchase order or maintenance order. |
| F5786 | Pack Container | Transactional | An application in Field Logistics to pack the outbound delivery items, handling unit into a container, seal the container and issue the items. Kit is a logical grouping of components required to perform a maintenance operation at a demand plant. A kit could include stock, non-stock, or rental items. Once the delivery for outbound process is fully picked, they can be assigned to a suitable container. The delivery items, handling unit and kit items should be able to assign single or multiple voyage.. |
Manage Logistics - Supplier Items
Business Role: Receiving Specialist (Oil & Gas)
This feature enables you to perform the Move to Stock process for multiple movement types, such as 501, 501K, 561,552, and so on.
Pack Container
Business Role: Warehouse Clerk (Oil & Gas)
With this feature you can view the outbound deliveries that are picked and ready for loading or packing into a container. The status can be set to allow the packing to assign the deliveries to an existing Field Logistics container . You can also include a step for sealing to record upto to 5 seals for the packed container. Trigger the goods issue for all deliveries in the container.
Fields (34)
| Key | Field | Source Table | Source Field | Description |
|---|---|---|---|---|
| KEY | ChangeDocObjectClass | I_ChangeDocument | ChangeDocObjectClass | Objekt |
| KEY | ChangeDocObjectClassDisplay | I_ChangeDocument | ChangeDocObjectClass | Objekt |
| KEY | ChangeDocObjectClassTr | I_ChangeDocument | ChangeDocObjectClass | |
| KEY | ChangeDocObject | I_ChangeDocument | ChangeDocObject | Objektwert |
| KEY | ChangeDocObjectDisplay | Objektwert | ||
| KEY | ChangeDocObjectTr | I_ChangeDocument | ChangeDocObject | |
| KEY | ChangeDocument | I_ChangeDocument | ChangeDocument | Änderungsbelegnummer |
| KEY | DatabaseTable | _ChangeDocumentItem | DatabaseTable | |
| KEY | DatabaseTableTr | _ChangeDocumentItem | DatabaseTable | |
| KEY | ChangeDocTableKeyendasChangeDocTableKey | Tabellenschlüssel | ||
| KEY | ChangeDocTableKeyendasChangeDocTableKeyT | |||
| KEY | ChangeDocDatabaseTableField | _ChangeDocumentItem | ChangeDocDatabaseTableField | |
| KEY | ChangeDocDatabaseTableFieldTr | _ChangeDocumentItem | ChangeDocDatabaseTableField | |
| KEY | ChangeDocChangeType | Änderungsart | ||
| ChangeDocDatabaseTableFieldT | _ChangeDocumentItem | ChangeDocDatabaseTableField | ||
| DatabaseTableT | _ChangeDocumentItem | DatabaseTable | ||
| CreatedByUser | I_ChangeDocument | CreatedByUser | ||
| CreatedByUserendasNAME_TEXTC | Geändert von | |||
| CreationDate | I_ChangeDocument | CreationDate | ||
| CreationTime | I_ChangeDocument | CreationTime | ||
| clientNULLascdcreatedasCreatedOn | ||||
| ChangeDocLanguageKey | ||||
| ChangeDocLanguage | _langu | LanguageName | Sprache | |
| ChangeTransactionCode | I_ChangeDocument | ChangeTransactionCode | Transaktion | |
| ChangeDocObjectDescription | Objektbeschreibung | |||
| ChangeDocumentStringNew | Neuer erweiterter Wert (lang) | |||
| ChangeDocumentStringOld | Alter erweiterter Wert (lang) | |||
| ChangeDocNewShortString | Neuer erweiterter Wert (kurz) | |||
| ChangeDocOldShortString | Alter erweiterter Wert (kurz) | |||
| ChangeDocNewRawString | Neuer Rohdatenwert | |||
| ChangeDocOldRawString | Alter Rohdatenwert | |||
| _ChangeDocumentItem | _ChangeDocumentItem | |||
| _user | _user | |||
| Language |
@AbapCatalog.sqlViewName: 'CBCCHANGEDOC'
@AbapCatalog.compiler.compareFilter: true
@EndUserText.label: 'CDS View für Änderungsbelege'
@ClientHandling.algorithm: #SESSION_VARIABLE
@AccessControl.authorizationCheck: #NOT_REQUIRED
//@Analytics.dataCategory: #DIMENSION
//@Analytics.dataExtraction.enabled: true
@VDM.viewType: #CONSUMPTION
@Metadata.allowExtensions: true
define view C_ChangeDocuments as select from I_ChangeDocument as _header
association [0..1] to I_LanguageText as _langu
on _langu.Language = $session.system_language
and _langu.LanguageCode = ChangeDocLanguage
association [0..1] to I_ChangeDocUser as _user
on $projection.CreatedByUser = _user.UserName
association [0..1] to I_ChangeDocChangeIndT as _changetype_text
on $projection.ChangeDocChangeType = _changetype_text.Value
and _changetype_text.Language = $session.system_language
association [0..1] to I_ChangeDocFieldNamesT as _fieldname_text
on _fieldname_text.DatabaseTable = $projection.DatabaseTable
and _fieldname_text.Value = $projection.ChangeDocDatabaseTableField
and _fieldname_text.Language = $session.system_language
association [0..1] to I_ChangeDocTableNames as _tablename_text
on $projection.DatabaseTable = _tablename_text.Value
and _tablename_text.Language = $session.system_language
{
@EndUserText.label: 'Objekt'
// @UI.selectionField: [{ position: 1 }]
@ObjectModel.filter.transformedBy: 'ABAP:CL_RSSCD_TRANSFORM'
@UI.hidden: true
key _header.ChangeDocObjectClass as ChangeDocObjectClass,
// additional field for filter on ObjectClass
@EndUserText.label: 'Objekt'
@UI.selectionField: [{ position: 1 }]
key _header.ChangeDocObjectClass as ChangeDocObjectClassDisplay,
// ObjectClass additional field for internal filtering with replaced texts
@UI.hidden: true
key _header.ChangeDocObjectClass as ChangeDocObjectClassTr,
@EndUserText.label: 'Objektwert'
@UI.hidden: true
// @UI.selectionField: [{ position: 2 }]
@ObjectModel.filter.transformedBy: 'ABAP:CL_RSSCD_TRANSFORM'
key _header.ChangeDocObject as ChangeDocObject,
// ChangeDocObject additional field for filter
@EndUserText.label: 'Objektwert'
@UI.selectionField: [{ position: 2 }]
key cast( _header.ChangeDocObject as cdobjectidtxt preserving type ) as ChangeDocObjectDisplay,
// ChangeDocObject additional field for internal filtering with replaced texts
@UI.hidden: true
key _header.ChangeDocObject as ChangeDocObjectTr,
// ChangeDocument
@EndUserText.label: 'Änderungsbelegnummer'
@UI.identification.position: 30
key _header.ChangeDocument as ChangeDocument,
// table name internal field
@UI.textArrangement: #TEXT_ONLY
// text association is necessary to keep field _tablename_text in CDS View
// even though it is not used to display the table texts anymore
@ObjectModel.text.association: '_tablename_text'
// @EndUserText.label: 'Tabelle'
// @ObjectModel.filter.transformedBy: 'ABAP:CL_RSSCD_TRANSFORM'
@UI.hidden: true
key _ChangeDocumentItem.DatabaseTable as DatabaseTable,
// table name get texts directly from _ChangeDocumentItem
// @EndUserText.label: 'Tabelle'
// Transformation only necessary if texts get replaced in Badi and method modify_filter is used
@ObjectModel.filter.transformedBy: 'ABAP:CL_RSSCD_TRANSFORM'
key case
when _ChangeDocumentItem._TableTextDDIC.Text is not initial
then
cast( _ChangeDocumentItem._TableTextDDIC.Text as cdtabnametxt )
else
cast( _ChangeDocumentItem._TableTextView.Text as cdtabnametxt )
end as ChangeDocDatabaseTableTxt,
// table name additional field for internal filtering with replaced texts
@UI.hidden: true
key _ChangeDocumentItem.DatabaseTable as DatabaseTableTr,
// tabkey
@EndUserText.label: 'Tabellenschlüssel'
key
case
when _ChangeDocumentItem._ChangeDocLongTableKey.ChangeDocLongTableKey is not initial
then
_ChangeDocumentItem.ChangeDocTableKey
when _ChangeDocumentItem._ChangeDocumentItemExtension.ChangeDocTabkeyLength < 71
then
// for string fields take short key from CDPOS_STR
coalesce( _ChangeDocumentItem._ChangeDocumentItemExtension.ChangeDocTableKey,
_ChangeDocumentItem.ChangeDocTableKey )
else
_ChangeDocumentItem.ChangeDocTableKey
end as ChangeDocTableKey,
// tabkey additional field for internal filtering
@UI.hidden: true
key
case
when _ChangeDocumentItem._ChangeDocLongTableKey.ChangeDocLongTableKey is not initial
then
_ChangeDocumentItem.ChangeDocTableKey
when _ChangeDocumentItem._ChangeDocumentItemExtension.ChangeDocTabkeyLength < 71
then
// for string fields take short key from CDPOS_STR
coalesce( _ChangeDocumentItem._ChangeDocumentItemExtension.ChangeDocTableKey,
_ChangeDocumentItem.ChangeDocTableKey )
else
_ChangeDocumentItem.ChangeDocTableKey
end as ChangeDocTableKeyT,
// tabkey additional field for internal filtering with replaced texts
@UI.hidden: true
key
case
when _ChangeDocumentItem._ChangeDocLongTableKey.ChangeDocLongTableKey is not initial
then
_ChangeDocumentItem.ChangeDocTableKey
when _ChangeDocumentItem._ChangeDocumentItemExtension.ChangeDocTabkeyLength < 71
then
// for string fields take short key from CDPOS_STR
coalesce( _ChangeDocumentItem._ChangeDocumentItemExtension.ChangeDocTableKey,
_ChangeDocumentItem.ChangeDocTableKey )
else
_ChangeDocumentItem.ChangeDocTableKey
end as ChangeDocTableKeyTr,
// field name internal field
// @UI.lineItem.position: 10
// text association is necessary to keep field _fieldname_text in CDS View
// even though it is not used to display the field texts anymore
@UI.textArrangement: #TEXT_ONLY
@ObjectModel.text.association: '_fieldname_text'
// @ObjectModel.sort.enabled: false
// @EndUserText.label: 'Feldname'
// @ObjectModel.filter.transformedBy: 'ABAP:CL_RSSCD_TRANSFORM'
// @ObjectModel.sort.transformedBy: 'ABAP:CL_RSSCD_TRANSFORM'
@UI.hidden: true
key _ChangeDocumentItem.ChangeDocDatabaseTableField
as ChangeDocDatabaseTableField,
// field name as text
@UI.lineItem.position: 10
// Transformation only necessary if texts get replaced in Badi and method modify_filter is used
@ObjectModel.filter.transformedBy: 'ABAP:CL_RSSCD_TRANSFORM'
// Get texts directly from _ChangeDocumentItem
key case
when _ChangeDocumentItem._FieldTextReplace.Text is not initial
then
cast( _ChangeDocumentItem._FieldTextReplace.Text as cdfieldnametxt)
when _ChangeDocumentItem._FieldTextLabel.Text is not initial
then
cast( _ChangeDocumentItem._FieldTextLabel.Text as cdfieldnametxt )
when _ChangeDocumentItem._FieldTextView.Text is not initial
then
cast( _ChangeDocumentItem._FieldTextView.Text as cdfieldnametxt )
when _ChangeDocumentItem._FieldTextDDIC.Text is not initial
then
cast( _ChangeDocumentItem._FieldTextDDIC.Text as cdfieldnametxt )
when _ChangeDocumentItem.ChangeDocDatabaseTableField <> 'KEY'
then
cast( _ChangeDocumentItem.ChangeDocDatabaseTableField as cdfieldnametxt )
else
cast( ' ' as cdfieldnametxt )
end as ChangeDocDatabaseTableFieldTxt,
// field name additional field for internal filtering with replaced texts
@UI.hidden: true
key _ChangeDocumentItem.ChangeDocDatabaseTableField
as ChangeDocDatabaseTableFieldTr,
// change indicator
@EndUserText.label: 'Änderungsart'
@UI.lineItem.position: 70
@UI.textArrangement: #TEXT_ONLY
@ObjectModel.text.association: '_changetype_text'
@Consumption.valueHelpDefinition: [{entity:{name: 'I_ChangeDocChangeInd',
element: 'Value' }}]
@Consumption.filter.multipleSelections: true
key cast( _ChangeDocumentItem.ChangeDocItemChangeType as cdchngind )
as ChangeDocChangeType,
// field name additional field for internal filtering
// do not delete: needed for compatibility reasons (no longer defined as key field)
@UI.hidden: true
_ChangeDocumentItem.ChangeDocDatabaseTableField
as ChangeDocDatabaseTableFieldT,
// table name additional field for internal filtering
// do not delete: needed for compatibility reasons (no longer defined as key field)
@UI.hidden: true
_ChangeDocumentItem.DatabaseTable as DatabaseTableT,
// create by user - technical name
@UI.hidden: true
_header.CreatedByUser as CreatedByUser,
// created by user - full name
@Semantics.user.id: true
@UI.textArrangement: #TEXT_ONLY
@EndUserText.label: 'Geändert von'
@EndUserText.quickInfo: 'Geändert von'
@UI.lineItem.position: 45
// use technical user name if no text exists to enable filtering and sorting
// it will be replaced by pseudonomization in reuse service before display
case
when _user.NAME_TEXTC is not initial
then _user.NAME_TEXTC
else _header.CreatedByUser
end as NAME_TEXTC,
// Creation Date/ Time - technical name
@UI.hidden: true
_header.CreationDate as CreationDate,
@UI.hidden: true
_header.CreationTime as CreationTime,
// created on
@UI.lineItem.position: 50
cast(dats_tims_to_tstmp ( _header.CreationDate,
_header.CreationTime,
abap_system_timezone( $session.client, 'NULL' ),
$session.client,
'NULL' ) as cdcreated ) as CreatedOn,
// language in CDHDR
@UI.hidden: true
_header._ChangeDocLanguage.Language as ChangeDocLanguageKey,
@EndUserText.label: 'Sprache'
_langu.LanguageName as ChangeDocLanguage,
// transaction
@EndUserText.label: 'Transaktion'
@UI.hidden: true
_header.ChangeTransactionCode as ChangeTransactionCode,
// long tabkey
@EndUserText.label: 'Langer Tabellenschlüssel'
// @UI.hidden: true
case
when _ChangeDocumentItem._ChangeDocumentItemExtension.ChangeDocTabkeyLength > 70
then
// for string fields take long key from CDPOS_STR
_ChangeDocumentItem._ChangeDocumentItemExtension.ChangeDocTableKey
else
_ChangeDocumentItem._ChangeDocLongTableKey.ChangeDocLongTableKey
end as ChangeDocTableKeyLong,
// long tabkey additional field for internal filtering with replaced texts
@UI.hidden: true
case
when _ChangeDocumentItem._ChangeDocumentItemExtension.ChangeDocTabkeyLength > 70
then
// for string fields take long key from CDPOS_STR
_ChangeDocumentItem._ChangeDocumentItemExtension.ChangeDocTableKey
else
_ChangeDocumentItem._ChangeDocLongTableKey.ChangeDocLongTableKey
end as ChangeDocTableKeyLongTr,
// new value
@UI.lineItem.position: 20
// @Consumption.filter.hidden: true
@EndUserText.label: 'Neuer Wert'
@ObjectModel.sort.enabled: false
case
when _ChangeDocumentItem._ChangeDocumentItemExtension.ChangeDocShortStringNew is not initial
then
_ChangeDocumentItem._ChangeDocumentItemExtension.ChangeDocShortStringNew
when _ChangeDocumentItem.ChangeDocNewFieldValue is not initial or
_ChangeDocumentItem.ChangeDocNewCurrency is not initial or
_ChangeDocumentItem.ChangeDocNewUnit is not initial
then
cast( concat_with_space(_ChangeDocumentItem.ChangeDocNewFieldValue,
concat(_ChangeDocumentItem.ChangeDocNewCurrency,
_ChangeDocumentItem.ChangeDocNewUnit ), 1 )
as cdfldvaln )
else
' '
end as ChangeDocNewFieldValue,
// old value
@UI.lineItem.position: 30
// @Consumption.filter.hidden: true
@EndUserText.label: 'Alter Wert'
@ObjectModel.sort.enabled: false
case
when _ChangeDocumentItem._ChangeDocumentItemExtension.ChangeDocShortStringOld is not initial
then
_ChangeDocumentItem._ChangeDocumentItemExtension.ChangeDocShortStringOld
when _ChangeDocumentItem.ChangeDocPreviousFieldValue is not initial or
_ChangeDocumentItem.ChangeDocPreviousCurrency is not initial or
_ChangeDocumentItem.ChangeDocPreviousUnit is not initial
then
cast( concat_with_space(_ChangeDocumentItem.ChangeDocPreviousFieldValue,
concat(_ChangeDocumentItem.ChangeDocPreviousCurrency,
_ChangeDocumentItem.ChangeDocPreviousUnit ), 1 )
as cdfldvaln )
else
' '
end as ChangeDocPreviousFieldValue,
// object description
@UI.textArrangement: #TEXT_ONLY
@EndUserText.label: 'Objektbeschreibung'
cast('' as cdobjecttxt) as ChangeDocObjectDescription,
// string new
// @Consumption.filter.hidden: true
@EndUserText.label: 'Neuer erweiterter Wert (lang)'
_ChangeDocumentItem._ChangeDocumentItemExtension.ChangeDocStringNew as ChangeDocumentStringNew,
// string old
// @Consumption.filter.hidden: true
@EndUserText.label: 'Alter erweiterter Wert (lang)'
_ChangeDocumentItem._ChangeDocumentItemExtension.ChangeDocStringOld as ChangeDocumentStringOld,
// short string new
// @Consumption.filter.hidden: true
@EndUserText.label: 'Neuer erweiterter Wert (kurz)'
@UI.hidden: true
_ChangeDocumentItem._ChangeDocumentItemExtension.ChangeDocShortStringNew
as ChangeDocNewShortString,
// short string old
// @Consumption.filter.hidden: true
@EndUserText.label: 'Alter erweiterter Wert (kurz)'
@UI.hidden: true
_ChangeDocumentItem._ChangeDocumentItemExtension.ChangeDocShortStringOld
as ChangeDocOldShortString,
// raw string new
// @Consumption.filter.hidden: true
@EndUserText.label: 'Neuer Rohdatenwert'
@EndUserText.quickInfo: 'Neuer Rohdatenwert'
@ObjectModel.sort.enabled: false
// @UI.hidden: true
_ChangeDocumentItem._ChangeDocumentItemExtension.ChangeDocRawStringNew
as ChangeDocNewRawString,
// raw string old
// @Consumption.filter.hidden: true
@EndUserText.label: 'Alter Rohdatenwert'
@EndUserText.quickInfo: 'Alter Rohdatenwert'
@ObjectModel.sort.enabled: false
// @UI.hidden: true
_ChangeDocumentItem._ChangeDocumentItemExtension.ChangeDocRawStringOld
as ChangeDocOldRawString,
_ChangeDocumentItem,
_user,
_changetype_text,
_fieldname_text,
_tablename_text,
_header._ChangeDocLanguage.Language
}
Learn More
- What Is a CDS View in SAP S/4HANA?
- Types of CDS Views: Basic, Composite, Consumption, and Transactional
- SAP Tables vs CDS Views — Key Differences
- Understanding Data Lineage in SAP S/4HANA
- VDM (Virtual Data Model) in SAP S/4HANA Explained
- CDS View Annotations — A Complete Guide
- CDS View Field Mapping and Associations
- Understanding the SAP S/4HANA Data Model
- CDS View Extensions and Custom Fields in SAP S/4HANA
- Released APIs and Stability Contracts in SAP S/4HANA