This document aims to list and explain the different types of temporary database objects (such as tables and views) used in SAP Business Warehouse (BW).
In order to increase performance for many different BW activities, unchecked transparent tables are used. These are known as BW temporary tables and there is a wide variety of them. Each temporary table type has its own naming convention, and that’s what it’s used in order to identify which type we are dealing with.
SAP Temporary DB Object types
There are different activities in BW that demand the use of temporary db objects (unchecked tables and views) in order to reach better performance. Each one has its own naming convention, but all of them starts with prefix ‘/BI0/0’ and then are followed by a character (which can be 1, 2, 3, 4, 5, 6, 7, D, P) and a sequence of 8 digits. Each character digit will represent a specific use for the table.
All temporary database objects will be registered in SAP Table RSDD_TMPNM_ADM. Column nametype will hold the first character of the object. Column id contains the number which will be reflected in the sequence on the database object name. The number of rows of this table and the number of existing temporary objects in the database level must be equal. Otherwise we have a probable case of BW upgrade which did not follow best practices (see SAP Note 819170).
Table DBDIFF holds references for these objects as well. There you can see that these are non checked objects (DIFFKIND = 99).
These are the temporary database object types found in BW and their respective meaning:
- /BI0/01: Temporary tables that save interim results; every developer can use this ‘namespace’ and create such 01 tables; therefore the various 01 tables can be very different regarding structure and DB properties
- /BI0/02: Used to process hierarchy restrictions in the query; these tables are reused; in BW3x they do not exist in the DDIC, but nametab entry must exist (as always); in table RSDD_TMPNM_ADM you can find all existing 02tables: the field FREE tells you whether the table can be used; there also a time limit exists (TIMESTMP); see also function group RSDRH;
- /BI0/03: only relevant for BW3x systems: 03 are views that are generated during the processing of a query. The BW System defines one view for every SQL query (in case OPENSQL is not used) and accesses it via a simple SELECT * FROM <Viewname>. These views do not exist in the DDIC, but of course, there should be a nametab entry. In RSDD_TMPNM_ADM you can find just one entry, the number shown there is just a counter. In function RSDRS_READ_DATA the function 'RSDRS_BUILD_VIEW' creates the views on the data base (in addition you get an entry in DBDIFF, e.g. /BI0/0300002015), function 'RSDRS_CLEANUP' deletes the view (but not the DBIFF entry) again afterwards. When there is a query split, so a second data base access via view is necessary, DBDIFF entry is increased by 1 -> /BI0/0300002016 and so on. At the end of the query runtime also the DBDIFF entry is deleted.
- /BI0/04: only relevant for BW3x: 04 are names of stored procedures that are used while the system compresses/condenses the InfoCube (see function RSCDS_BUILD_STORED_PROC). They are removed after use. Stored Procedures are data base objects which cannot exist in the DDIC; there are also temporary tables called /BI0/04 ... I,R,F which are used by the condenser as well. These tables are created only on the database, there is even no nametab entry (created with EXEC SQL….END EXEC.) Also see BW70_Condensor - Temporary Tables.
- /BI0/05: are names of triggers that are used while the system compresses requests; they only come into the game when elimination of zero values is used.
- /BI0/06: are names of tables that are used during the query processing to store SIDs; the tables (not the entries) are reused, they usually exist in the DDIC and DDNTT (nametab) and,of course, on the database
- /BI0/07: only used when the database system is DB2. Basically these views make use of common-table-expressions (CTEs) to avoid to create multiple temporary views via the ABAP DDIC for hierarchy queries. It's a DB2 specific optimization that _seems_ to be only relevant in BW3.X. DB6 infos: Note 577205 , Note 556957 , Note 702209 ,Note 543410
- /BI0/0D: are names of tables that are used in context with the open hub functionality. They contain materialized results from open hub read processes. Even if these tables are temporary, the BW open hub should control the structure and deletion of these tables. Therefore you should not delete these tables.
- /BI0/0P: are tables that occur in the course of an optimized preprocessing that contains many tables. For more information, see Note 514907. These tables can be reused immediately after releasing.