SAP BOX

'26/10/31 UPDATE

FI / FIELD NOTES

In S/4HANA, Why Does Code Reading BSIS Still Work While Code Writing to It Must Change?

With the universal journal, totals and index tables such as BSIS became compatibility views with the same name, and reads on tables such as COEP are redirected to differently named views. Based on the 2023 Simplification List, this note explains why the compatibility views serve SELECTs while INSERT, UPDATE, DELETE and MODIFY have to change in custom code.

Picture two fictional ECC Z programs. One is a report that reads BSIS; the other updates a field in the same BSIS. After the conversion to S/4HANA, the report still returns results without any code change, while the second program ends up on the list of things to fix. Why are two lines that name the same table treated so differently? After reading this note you will know what old finance tables like BSIS became behind the universal journal, why reads and writes part ways, and which lines to look for first in your own code.

The program ZDEMO_BSIS_ACCESS and its variables are invented, and the code was not run. The content follows section 8.2, "S4TWL - Data Model Changes in FIN", of the Simplification List for SAP S/4HANA 2023 (document version 1.35, 2025-02-25), the page "DDIC - Replacement Objects" of the ABAP Keyword Documentation, release 7.58, and the Conversion Guide for SAP S/4HANA 2023 (document version 7.0). SAP Note 1976487, which the list refers to, needs a login; it was not read and its content is not covered here.

The tables that disappeared behind the universal journal

The Simplification List explains that the universal journal changes the way transactional data is stored for financial reporting: internal and external reporting read from one document store, with the account as the unifying element. As a result, the totals records by period in General Ledger, Controlling, Material Ledger, Asset Accounting, Accounts Payable and Accounts Receivable were removed, and so were the index tables designed to speed up certain selections. The benefit the list names is that reporting is no longer limited by the number of fields in the totals records.

The changes came in two groups. The totals tables and application index tables went first, with the installation of SAP Simple Finance; in SAP Simple Finance 2.0 and S/4HANA 1511, more tables were partially replaced by the universal journal (ACDOCA). BSIS belongs to the first group.

BSIS became a compatibility view with the same name

Installing SAP Simple Finance (on-premise) removes the totals and application index tables and puts DDL SQL views with identical names in their place. The list calls them compatibility views. They are generated from DDL sources, the replacement happens during the add-on installation with the Software Update Manager (SUM), and the existing data is secured into backup tables. For BSIS, the view in the DDIC is still called BSIS, its DDL source is BSIS_DDL and the backup table is BSIS_BCK. BSAS, BSID, BSAD, BSIK, BSAK, GLT0, KNC1, LFC1 and others follow the same pattern.

According to the list, the compatibility views ensure that database SELECTs work as before. So SELECT ... FROM bsis in a Z program still finds something with that name and returns results without changes. Which tables the view reads internally, and how, is not stated in the list, so this note does not cover it.

SAP NOTES

The name BSIS stays; the table became a view

Identically named compatibility view (from SAP Simple Finance)

  1. Original table BSIS

    BSIS (table)

    • One of the totals and index tables
    • Removed with the universal journal
    • BSAS, BSID, BSAD, BSIK, BSAK, GLT0 too
  2. Compatibility view, same name

    BSIS <- BSIS_DDL

    • A DDL SQL view generated from a DDL source
    • Sits in the DDIC under the name BSIS
    • Keeps database SELECTs working as before
  3. Backup table

    BSIS_BCK

    • Receives the original table content
    • Filled while SUM installs the add-on

Per section 8.2 of the Simplification List for SAP S/4HANA 2023 (document version 1.35). Which tables the view reads is not covered.

BSIS became a compatibility view with the same name, and the original content moved to BSIS_BCK. A SELECT written FROM bsis still has something to point to without changes.

Other tables have their reads redirected to a differently named view

The tables changed in SAP Simple Finance 2.0 and S/4HANA 1511 are handled differently. Their compatibility views do not share the table's name; instead, the database interface (DBI) redirects all SELECTs on the table to the compatibility view, which retrieves the same data from the new data model, ACDOCA and others. For example, COEP is redirected to V_COEP, FAGLFLEXA to FGLV_FAGLFLEXA and ANEP to FAAV_ANEP. To read the content of the original table without the redirect, a separate view such as V_COEP_ORI is used.

Not every table survived this way. Access to the Material Ledger tables (CKMI1, MLCD, MLCR, MLHD, MLIT, MLPP) was supported only up to S/4HANA 1809; from 1909 these tables and views are obsolete and neither read nor write access is allowed. The list adds that MLHD, MLIT, MLPP and MLCR are still used for Material Ledger documents created by specific processes, but their views have been deleted. Old DDIC database views (BKPF_BSAD, VF_BSID and others) were replaced too, by an identically named DDL view, by a redirect, or by code; custom code that used a view replaced by code has to be adapted.

SAP NOTES

Three ways old finance tables were handled

Examples picked from the tables in section 8.2 of the 2023 list

  • Same-name compatibility view

    BSIS -> view BSIS

    • A view with the table's own name
    • BSIS, BSAS, BSID, BSIK, GLT0, FAGLFLEXT
    • Original content in a _BCK backup table
  • Redirect to a differently named view

    COEP -> V_COEP

    • The database interface redirects SELECTs
    • The view reads the same data from ACDOCA and others
    • An _ORI view reads the table itself
  • No longer usable

    MLCD -> obsolete

    • Material Ledger tables CKMI1, MLCD and others
    • Supported up to S/4HANA 1809
    • From 1909, no read or write access

Only part of the tables is shown. See the original tables for the full list and exceptions (such as remaining uses of MLHD).

Some tables, like BSIS, became a view with the same name; for others, like COEP, reads are redirected to a differently named view; and Material Ledger tables cannot be used at all from 1909.

Reads stay, writes have to change

Both approaches end in the same rule. Reads are served by the compatibility views, but write access (INSERT, UPDATE, DELETE, MODIFY) was removed or adapted in SAP standard and has to be removed or adapted in custom code as well. The list points to SAP Note 1976487 for this work, and as the required action it says to adapt access to the new simplified finance data model in customer-specific programs. Customer-owned DDIC views that reference the affected tables or views also have to be replaced by equivalent code.

The same line between reads and writes appears in the replacement object rules of the ABAP Keyword Documentation 7.58. When a CDS view is assigned as the replacement object of a DDIC database table, access is redirected to it when the table is the data source of an ABAP SQL SELECT (including subqueries, OPEN CURSOR and FETCH) and when a foreign key relationship is checked in dynpros or Web Dynpros. ABAP SQL writes, including SELECT with SINGLE FOR UPDATE, still run on the original table and produce a syntax check warning. Native SQL (EXEC SQL, ADBC), AMDP, views defined on the database and IMPORT or EXPORT TO DATABASE are not redirected either. The documentation also notes that the content of replaced objects is usually no longer updated. Whether the S/4HANA compatibility views and redirects behave exactly like these rules could not be confirmed from the sources of this note, so code that reads these tables with Native SQL or AMDP is safer to test on its own.

SAP NOTES

Reads stay, writes change

The same rule for both approaches

  • SELECT

    SELECT ... FROM bsis

    • Compatibility views answer as before
    • Works unchanged; still test it
    • For reporting, consider the Fiori apps
  • INSERT, UPDATE, DELETE, MODIFY

    UPDATE bsis ...

    • Removed or adapted in SAP standard
    • Custom code must remove or adapt them
    • The list points to SAP Note 1976487
  • Customer DDIC views

    Z view on BSIS

    • Customer views on these tables or views
    • Must be replaced by equivalent code

Per section 8.2 of the 2023 Simplification List. SAP Note 1976487 needs a login and was not read.

Compatibility views exist for reading. Writes, and customer views built on these tables, are what custom code has to change.

The editor example below puts the three cases on one screen. Marker 1 is the SELECT that reads the same-name compatibility view, marker 2 a write that has to be removed or adapted, and marker 3 a read of COEP that is redirected to V_COEP.

SAP GUI ABAP Editor screen with three numbered markers: 1, the line SELECT bukrs, hkont, belnr FROM bsis, which reads the compatibility view with the same name; 2, the line UPDATE bsis SET zuonr, a write that has to be removed or adapted; 3, the line SELECT kokrs, belnr FROM coep, a read redirected to V_COEP.
An example placing a read of BSIS, a write to BSIS and a read of COEP on one screen. ZDEMO_BSIS_ACCESS and its variables are fictional; the code was not run, and how each line is handled follows from the 2023 Simplification List.

What to look for first in your code

If you need an order, start with what the compatibility views do not cover: INSERT, UPDATE, DELETE and MODIFY on names such as BSIS, BSAS, BSID, BSAD, BSIK, BSAK, GLT0, COEP and FAGLFLEXA, and Z DDIC views that reference these tables. SELECTs that do return results still need testing in S/4HANA, as the conversion guide says. For reporting, the list also suggests considering the Fiori reports built for the many fields of the universal journal instead of classic reports that aggregate on the fly by the fields of the old totals tables.

One thing to do today: search your custom code for lines where one of these table names is the target of a write statement, and keep the result as a list. That list is the starting point to check against when you read SAP Note 1976487.

THE END
RSS feedBack to the library
COMMENTS BOX

Add your perspective.

Share a question, another approach, or something you have tried.

Newest first

Checking sign-in…

Loading comments…