cancel
Showing results for 
Search instead for 
Did you mean: 

Index missing in ABAP DD

Former Member
0 Kudos

Hi Guys,

I have created an index only on the database level. Now, I want to have it in ABAP dictionar also. Do I follow the same procedure to create it:

se11->indexes->create?

How will the system recognize it? DO i have to do anything else to nform the system that this index already exists on database?

Thanks in advance

Cyrus

Accepted Solutions (1)

Accepted Solutions (1)

jayesh_vorani1
Explorer
0 Kudos

Hello,

May be I am too late in replying, but if you are still stuck... here is the reply.

To answer your question Cyrus...

If you are creating a new index at a database level, there is nothing to worry. You can first create if at db level and then create it using SE11 in SAP. When you activate this index, SAP is smart enough to recognize that an index exists at db level and activates the index in SAP without taking any time.

MIND YOU THE NAME OF THE INDEX AT DB LEVEL AND THE NAME YOU GIVE IN SAP NEEDS TO BE CAREFULLY CONSIDERED. FOR e.g. if the name of index in SAP is on table ZTFKK_PAYMNTINFO and the index name in SAP is Z01, the index should be named as ZTFKK_PAYMNTINFOZ0 in Oracle. Note how it is named in oracle without a space or ~ character and missing last letter of index name i.e. '1' .

Problem is when you want to modify an existing index and not create a new one. When an existing index is modified in db level first and then changed in SAP, while activating it in SAP, SAP first drops the index at db level and then tries to re-create it. This activation in SAP could take long if the table size is huge.

To answer Rich's question...

There are reasons for people wanting to create big indexes directly at db level as these database systems allow parallel process to build the index. This saves a lot of time specially when the table is size is in millions of records).

Even if your index is not in SAP Dictionary but exists at DB level, the index is used when appropriate query is fired from SAP.

Hope this clears things.

Cheers,

Jay

Answers (3)

Answers (3)

Former Member
0 Kudos

After SE11, use SE14 to adjust database. Now, your index will be available.

Thanks,

Bala

Former Member
0 Kudos

Hi Rich,

You are right. It should be done from SAP system, but we thought this might make it quicker, as there were jobs running in SAP system at thta time, so we created the index on the database which would help the selects, but now we have to create on the ABAP.

I would prefer not to drop and recreate if there is another way.

Thanks

Cyrus

RichHeilman
Developer Advocate
Developer Advocate
0 Kudos

I am curious to know if that index is even being used by your applications. Creating it directly on the db, does not neccessarily mean that the "optimizer" knows of it. I am thinking that it must be created in the data dictionary in order for the index to be used. I could be wrong though. I would strongly suggest that you drop the index on the DB and recreate it in the ABAP dictionary, even if it is to be done in "off" hours. This is the saftest way to go.

I realize that you or your colleagues may know what they are doing in regard to "messing around" at the db layer, but with this system(R/3) this is not the way to go. This is the reason that SAP has built this level of abstraction over the database. Please be careful.

I am very comfortable with DB2(we run on an iSeries), but I would never mess with the DB in this fashion.

Regards,

Rich Heilman

RichHeilman
Developer Advocate
Developer Advocate
0 Kudos

I would suggest to delete the index from the database level. Then create the index using SE11. When you activate it, it will automatically create it on the database layer. I would strongly suggest, never make changes at the database level, always make the change from the ABAP Dictionary.

Regards,

Rich Heilman