DBSQL_REDIRECT_INCONSISTENCY –I have come across a lot of “dumps” during the years as an ABAP developer. But this was new. What had happened?
Maic, who is an ABAP cookbook author reports on hurdles and solutions for dealing with S / 4HANA-related changes in the data model of logistics.

In an S/4 system, the table for material documents, MSEG, had to be extended for a project by one field. In principle, that is not a problem: create an append structure, record the field, activate it and you are done. That would have been the case here too but only this time an error occurred during activation.

Errors

logdisplay

OK, so any dependent view now contains an inconsistency. Funny. Must be checked but it is not tragic at first. I am probably not even the culprit (spoiler: yes!). Firstly, test whether you can post material documents. Call MIGO, enter data – * wumms *. Oh no! The activation error doesn’t seem to have been so minor after all. Then we need to do some research.

New S / 4 HANA data model in logistics

I found the solution that is described in the form of various notes in the SAP support portal, after a short search. The data model in logistics was changed during the course of the introduction of S / 4 HANA. Although the known material master tables such as MARC, MARD or MCHB still exist, the semantics have been changed. The tables mentioned contain fields for inventory management. However, these are no longer maintained statically with S / 4 (when posting a material document). The values are rather determined dynamically at the time that the tables are read out by querying the material documents. Advantage: The material master tables do not need to be blocked at the time of booking. Disadvantage: The inventory determination costs performance.

To ensure compatibility with existing programs (which the stocks in the material master tables assume), a CDS view is delivered as a representative object for each table. This can be seen in the SAP GUI in the table display (SE11) via “Extras à Substitute object”, in the table definition in the ABAP Development Tools there is an annotation “@ AbapCatalog.replacementObject”. When the table is accessed from an ABAP program, the database layer of the SAP system forwards the queries to the substitute object. SAP note 2206980 <https://launchpad.support.sap.com/#/notes/2206980> provides an overview of the affected MM tables and the associated representative objects.

In the case of table MSEG, the data model has changed completely. Material documents are saved with S / 4 in the database table MATDOC. In order to ensure a smooth extension of the MSEG table, several steps are necessary:

  1. Extension of the basic table MATDOC
  2. Extension of the table MSEG
  3. Extension of the associated CDS view NSDM_E_MSEG

It is important to ensure the correct naming of the individual objects.
In the following example, the material document is expanded by the “Reference location” field. A standard data element is available for this. As usual with customer fields in SAP tables, the field name must begin with the prefix “ZZ”, “YY” or a namespace.

Step 1: create structure

To ensure that the structure is the same between the two tables, MATDOC and MSEG, a structure is created that contains the necessary fields. This structure is then used as an include in the table appends. In the example, the structure is named ZST_MM_INCL_MSEG_MATDOC.

Struktur anlegen

Step 2: Extend the MATDOC table

Anyone who works in the SAP GUI follows the familiar route via the SE11. An append structure can be created in the ADT using the context menu for the table in the Project Explorer.

Matdoc erweitern

In the example, ZZA_MATDOC has been chosen as the name for the append structure. The definition is quite clear:

matdoc

The append can be activated now.

Step 3: Extend table MSEG

The MSEG is extended in the same way as the MATDOC table by using an append structure. The name of the append should not exceed 14 digits, otherwise there will be problems with the extension of the CDS view: The maximum length of the name of a table in the ABAP Dictionary is 16 characters. The name of the append is extended by “_V” in the Extension View, which means that there are only 14 digits available for the actual name.
In the example, “ZZA_MSEG” has been used as the name:

mseg erweitern

If the append is activated at this time, this would lead to errors. Subsequent accesses to the MSEG table inevitably result in a dump. You should, therefore, wait until the activation.

Step 4: Extend CDS view

An extension of CDS views is possible without modification via the so-called “extension views”. This has now been created for the substitute object in table MSEG. It is important to pay attention to the naming. There are three for each object:
• Name of the DDL source
• Name of the view at database level
• Name of the view in the ABAP Dictionary
For our example, the names can be found in the following table:

Object                 DDL-Source             Database                  Dictionary

CDS View            NSDM_DDL_MSEG NSDM_E_MSEG      NSDM_V_MSEG

Extension View    ZZA_MSEG_DDL    ZZA_MSEG_E         ZZA_MSEG_V

CDS objects can only be created in the ABAP Development Tools (Eclipse).

Step 4.1: Create a new object

Press Ctrl + N and select the entry “Data Definition” under “ABAP à Core Data Services”. The list of object types can be restricted by using a filter condition, so they can be shortened.

abap repository

Step 4.2: Enter name, description and package

new data definition

Step 4.3: Select transport order

transportauftrag

Attention: If you exit the dialog via “Enter”, the wizard will be closed and you will be redirected to the editor. However, there is a template for creating an extension view that can be used here. Make sure you continue with “Next>”!

Step 4.4: Select template

Select the “Extend View” template, complete the wizard with “Finish”.

Templates

Step 4.5: adjust template code

The DDL source already contains the correct keywords for extending a CDS view. You only need to enter the appropriate names (see table above) and the fields.

extend view nsdm e mseg

Finally, the Extension View and the MSEG-append are activated. There should not be any activation errors! In particular, there should be none that are related to the representative object NSDM_E_MSEG.

The table MSEG has now been extended to include a customer field and nothing stands in the way of displaying it in the data browser or in the material bookings.

Further help on the MSEG topic

There are some tips that highlight the problem and provide assistance in the SAP support portal:

Note 2206980

Problems with the customer includeCI_COBL. At least for upgrade projects!

https://launchpad.support.sap.com/#/notes/2240878

I believe that concludes today’s lesson.

Best wishes,
Maic