15.3.11

SAP Note 24824 - Inconsistencies in a Program Load

Symptom:

The following error messages can occur when generating or running a program:

    1. Runtime error DBIF_REPO_PART_ALREADY_EXISTS. The short dump may contain these messages: "Object LOAD for program already exists", "Object LREF for program already exists" or "Object SYMB for program already exists".
    2. A-Messages: "A: Database error: No entry found for specific key" or "A00952: Database error: No entry found for specific key". In the syslog, you only find a message stating that a rollback was executed.
    3. Runtime error LOAD_ZERO_SIZE. The following message is given in the short dump: "Program has length 0, or does not exist".
    4. Runtime error DBIF_REPO_PART_NOT_FOUND. The following messages can be given in the short dump: "Object LOAD not found for program ", "Object LREF not found for program " or "Object SYMB not found for program ".
    5. Runtime error GEN_SAPDEXT_CALLED. The following message is given in the short dump: "Error code 00900". Under "Information about the termination" you can find the name of the affected program. This symptom occurs from 3.0A onwards.
    6. Runtime error GEN_SAPDEXT_CALLED. The short dump message states: "Error code 00951". The text for the message is: "Database error occurred." This symptom occurs from 3.0A onwards.

    Please also see Note 69871.
Other terms

DBIF_REPO_PART_ALREA

Reason and Prerequisites

For symptoms 1-5:
The program load is inconsistent. The ABAP/4 load consists of four tables in the database: D010LINF, D010L, D010Q and D010Y. The Table D010Y is no longer used as of Release 46*. D010L contains the actual ABAP/4 load, D010Q and D010Y contain the line references or the symbol table of the generated program. D010LINF contains general information about the load, such as the last time of change and the size of the data in D010L, D010Q and D010Y. Inconsistencies can occur if there is an entry for a program in one or more of these four tables, but not in all four, however. This usually occurs when there is an entry for the affected program in D010LINF, but not in D010L, D010Q, and D010Y. There are various causes of these inconsistencies that cannot be always determined completely.
The cause of the first symptom may be that two work processes try to generate the same load at the same time.

For symptom 6:

A database error occurred during execution or generation of a program. The problem is often that the area available for saving the program load is no longer large enough.
If this is the case, there are NO inconsistencies in the program load.

Solution
Solution for symptom 1:

First try to generate the program again. If this attempt fails, proceed as described in the solution for symptoms 3 - 5.

Solution for symptom 2:

First you have to determine in which program the inconsistency occcurs. To do this, activate the SQL Trace (Transaction ST05) and reproduce the error. Then deactivate the SQL Trace and list the trace. The SQL command before 'ROLLBACK WORK' should contain the program name as a parameter value. Now proceed as described in the following solution for symptoms 3 - 5.
Solution for symptoms 3 - 5:
You can find the inconsistencies with the following SQL commands. (As the tables named above are not defined in the SAP ABAP/4 Dictionary, or are only partially defined, the SQL commands must be set directly for the database. For Oracle, as an example, you would call up svrmgrl and connect as user "sapr3/sap").
SELECT PROG FROM D010LINF WHERE PROG = '';
SELECT PROG FROM D010L WHERE PROG = '';
SELECT PROG FROM D010Q WHERE PROG = '';
SELECT PROG FROM D010Y WHERE PROG = '';
If one of these SQL commands does not return a record, then there is an inconsistency. As mentioned above, Table D010Y is no longer used as of Release 46*. Consequently, the SELECT from Table D010Y should not be carried out in 46*.
The error can be corrected by deleting the load-specific records of the affected program from the four database tables D010LINF, D010L, D010Q and D010Y. (For Oracle, you again need to call svrmgrl and reconnect as user 'sapr3/sap').
Execute the following SQL instructions (in the case of 46*, omit the DELETE from Table D010Y):
DELETE FROM D010LINF WHERE PROG = '';
DELETE FROM D010L WHERE PROG = '';
DELETE FROM D010Q WHERE PROG = '';
DELETE FROM D010Y WHERE PROG = '';
COMMIT;

Solution for Symptom 6
The error message describes the database error in question. To solve the problem, contact your database system administrator.


The cause of this problem has now been found, and should be eliminated
in Version 3.0E.

No comments:

Post a Comment