16.10.11

SAP Note 28490 - Operating concern environment cannot be generated

Symptom:

The generation of the environment of an operating concern terminates with error message KE231.
Saving/generating derivation structures fails when activating table K9XXX (XXX represents a number in the range 051 to 999).

Cause and prerequisites

When generating the K9XXX tables that belong to the derivation structure, the technical settings were not maintained in 3.0FCS. As a result, the table is not active and the maintenance screens are incorrect because they refer to fields in this table.

Solution
The error is corrected in 3.0A. The following correction applies to 3.0FCS only, and must not be maintained in later put levels.
An advance correction can be made by changing program LKEA1F20 (FORM TABELLE_GENER) and program LKWA1TOP. (Changes are indicated by <--):

Program LKEA1TOP:
...
...
*.................. DDIC-Tabellen .................................... *
tables: dd01v, "Domäne
...
dd09l, "techn. Einstellungen <--
dderr. "Returncode
...
data: begin of const,
maxleng(1) type i value 5,
* bis Release 2.2 Pooltabellen
* tabclass like dd02v-tabclass value 'POOL',
* sqltab like dd02v-sqltab value 'KEPOOL',
* ab 3.0A Umstellung auf transparente Tabellen
tabclass like dd02v-tabclass value 'TRANSP',
sqltab like dd02v-sqltab,
applclass like dd02v-applclass value 'KE',
tabkat like dd09v-tabkat value '0', <--
tabart like dd09v-tabart value 'APPL0', <--
end of const.
...
...

Program LKEA1F20:
...
...
form tabelle_gener using subrc.

data: begin of ddfields occurs 20.
include structure ddfield.
data: end of ddfields.

*.....Felder der Prueftabelle sichern........
export dd03v_tab to memory.
perform putdd03v(rdd03dat) using dd_state-new
changing dderr.
if dderr-severity ne severity-normal.
message e005 with dd03v_tab-tabname. "Fehler beim Sichern
else.
*.....Prueftabelle generieren................
subrc = 0.

* leave to list-processing. "AND RETURN TO SCREEN 0120. <--
* dderr-errlist = 'FFFF'. "Fehler selbst behandeln <--
* dderr-protname = '$LISTE'. "Ausgabe des Protokolls <--

* perform actdd02o(rdd02kon) using dd03v_tab-tabname <--
* ' ' <--
* changing dderr. <--
* if dderr-severity = severity-failure or <--
* dderr-severity = severity-error or <--
* dderr-severity = severity-abend. <--
* subrc = 4. <--
* endif. <--

*.... technische Einstellungen der Prueftabelle pflegen ... <--
call function 'DD_TABT_GET' <--
exporting <--
tabl_name = dd03v_tab-tabname <--
importing <--
dd09l_wa_a = dd09l <--
exceptions <--
illegal_value = 01. <--
*
dd09l-tabname = dd03v_tab-tabname. <--
dd09l-tabart = const-tabart. <--
dd09l-tabkat = const-tabkat. <--
*
call function 'DD_TABT_PUT' <--
exporting <--
dd09l_wa = dd09l <--
put_state = 'A' <--
tabl_name = dd03v_tab-tabname <--
exceptions <--
illegal_value = 01 <--
object_inconsistent = 02. <--

data: prid like sy-tabix. <--
call function 'DD_OBJ_PROT_OPEN' <--
exporting <--
objectname = dd03v_tab-tabname <--
objecttype = 'TABL' <--
* indexname = ' ' <--
* level = 1 <--
* device = 'T' <--
* ddfunc = 'ACT' <--
* protmodus = 'N' <--
importing < --
prid = prid. <--
* exceptions <--
* illegal_value = 01 <--
* cannot_open = 02. <--
call function 'DD_TABL_ACTIVATE' <--
exporting <--
tabname = dd03v_tab-tabname <--
prid = prid < --
importing <--
result = subrc <--
exceptions <--
act_refused = 01 <--
act_failure = 02 <--
act_unlock_failure = 03 <--
illegal_value = 04. <--

if sy-subrc ne 0. <--
subrc = 4. < --
exit. <--
endif. <--

*..... Felder, Datenelemente, Domänen der Prueftabelle holen.....
* call function 'DD_GET_DD03P' <--
* exporting <--
* defstatus = 'A' <--
* langu = syst-langu <--
* noincl = 'X' <--
* refresh = 'X' <--
* status = 'M' <--
* tabname = dd03v_tab-tabname <--
* tables <--
* dd03p_tab = dd03p_tab < --
* exceptions <--
* illegal_value = 01. <--

* if sy-subrc ne 0. <--
* subrc = 4. <--
* exit. <--
* endif. <--

*.....Prueftabelle anlegen (TRANSP-Tabelle)......
* loop at dd03p_tab. <--
* move dd03p_tab-fieldname to ddfields-fieldname. <--
* move dd03p_tab-position to ddfields-position. <--
* move dd03p_tab-keyflag to ddfields-keyflag. <--
* move dd03p_tab-datatype to ddfields-datatype. <--
* move dd03p_tab-leng to ddfields-leng. <--
* move dd03p_tab-decimals to ddfields-decimals. <--
* ddfields-nullable = 'X'. <--
* append ddfields. <--
* endloop. <--

* call function 'DB_CREATE_TABLE' < --
* exporting <--
* tabname = dd03v_tab-tabname <--
* tables <--
* ddfields = ddfields <--
* exceptions <--
* program_not_generated = 01 <--
* program_not_written = 02 <--
* table_exists = 03 <--
* table_not_created = 04. <--
*
* if sy-subrc ne 0. <--
* subrc = 4. <--
* endif. <--

endif.

endform.
...
...

No comments:

Post a Comment