You are in transaction BDLS and you want to execute the conversion of logical system names in a test run or a productive run. When you do this, very long runtimes occur for certain tables.
Reason and Prerequisites
In a test run, transaction BDLS checks whether the new logical system name already exists in the table. In addition to this, the number of entries to be converted is determined for statistical purposes. Since the checked fields are normally not included in an index, these checks are usually performed as a "full table scan", which results in very long runtimes for large tables that contain a very large number of entries. In principle, you can exclude tables from the conversion that use the checked domains, but in which the relevant fields are not filled.
The solution describes how the exception table BDLSEXZ can be used to perform an own conversion routine for these tables. You can use transaction SM30 to maintain the table. The table COEP (which as a special case contains two fields to be converted) serves as an example here. For tables in which the relevant fields (typed with the domains 'LOGSYS' or 'EDI_PARNUM') are not filled, it is sufficient to exclude them from the conversion.
The solution consists of several steps.
Excluding the table from the standard conversion
To exclude a table, make the following entries in the table 'BDLSEXZ':
Class (OBJCLS): T (Excluded Table)
Object name (OBJKEY): COEP
Activating a special conversion
To activate a special conversion, make the following table entry:
Class (OBJCLS): X (Objects for Specific Treatment)
Object name (OBJKEY): COEP_XXX (any)
Program (PROGRAM): Z_BDLS_COEP (own program)
Routine (SUBROUTINE): TABLE_CHANGE (subroutine (FORM))
In this case, you can choose an object name of your choice. The 'Routine' parameter describes a subroutine (FORM) in the program, which is called with certain parameters using transaction BDLS.
Define the subroutine (FORM) as follows:
FORM table_change TABLES i_protocols
USING s_extparam TYPE bdi_lsext.
The following data declarations are required for this in the program:
DATA: i_protocols TYPE TABLE OF edimessage WITH HEADER LINE,
s_extparam TYPE bdi_lsext,
wa_prot LIKE edimessage.
Due to entries in the table i_protocols , log information can be transferred to the calling program:
wa_prot-msgid = 'B1'.
wa_prot-msgty = 'I'.
wa_prot-msgno = '999'.
wa_prot-msgv1 = 'Test run table COEP'.
wa_prot-msgv2 = 'with/without Existence check'.
wa_prot-msgv3 = 'is unsupported'.
wa_prot-msgv4 = '!'.
INSERT wa_prot INTO TABLE i_protocols.
The routine is also called in the test run; therefore, the actual conversion must be encapsulated by a query of the s_extparam-test indicator.
The programs of the objects to be handled separately are generally executed. Therefore, you must check in the program whether the current table is to be converted. To do this, see the program lines after the comment
* check whether used table is part of selection
in the sample source code.
The correction instructions contain the source code for the conversion of the table COEP using the "OPEN CURSOR" technique.
Use the Note Assistant to implement the corrections after you have created the (empty) report Z_BDLS_COEP.
tags: Note 932032 - BDLS: Special conversion for large tables