cancel
Showing results for 
Search instead for 
Did you mean: 

Need clarification on PSA table name and the requests

Former Member
0 Kudos

Hi,

I am trying to check if a particular PSA is existing or not using the function module BDT_CHECK_TABLE_NOT_IN_DDIC

The function module is just checking for the table in another table DD02L.

Now my question is

Why can't i find the PSA table when i give the name like /BIC/B0004162 ?

Based on some inputs my freind i came to know that i should check for

/BIC/B0004162000 and /BIC/B0004162001 instead of /BIC/B0004162

what are these tables /BIC/B0004162000 and /BIC/B0004162001 ?

will the system creates a sequence of tables for each PSA or will it create only two tables like this?

What is the funda behind this ?

Please help me in understanding this...

Thanks in advance.

Regards,

Raghu

Accepted Solutions (1)

Accepted Solutions (1)

former_member181964
Active Contributor
0 Kudos

Hi,

Check in RSTSODS table.

In the above table give PSA = your DataSource name and * and execute it.

Eg: 0MATERIAL*

Thanks

Reddy

Edited by: Surendra Reddy on Feb 11, 2009 8:04 AM

Former Member
0 Kudos

Hi Surendra,

In that table , in the field ODSNAME_TECH i gave /BIC/B0000413* and it gave me /BIC/B0000413000

only one record.

But this didn't answered my question

I have a piece of code

comment -> **** code starts********

concatenate PSA_Name '000' into db_syntax.

comment -> * Check for the PSA Table in the Data Dictionary

i_table-TABNM = DB_SYNTAX.

APPEND i_table TO ddic_table.

CALL FUNCTION 'BDT_CHECK_TABLE_NOT_IN_DDIC'

TABLES

IT_TBZ1H = ddic_table

ET_RETURN = ret_table.

.

if not ret_table is initial.

raise PSA_Doesnot_Exist.

endif.

comment -> * Select the contents of the PSA into an itab.

select * from (db_syntax) into corresponding fields of table psa_table

where REQUEST = req_no.

if psa_Table is initial.

comment -> *If the PSA table ending with '000' is not the active table, look for the

comment -> * next incremental numbered PSA table.

concatenate PSA_Name '001' into db_syntax.

comment -> * Check for the PSA Table in the Data Dictionary

i_table-TABNM = DB_SYNTAX.

APPEND i_table TO ddic_table.

CALL FUNCTION 'BDT_CHECK_TABLE_NOT_IN_DDIC'

TABLES

IT_TBZ1H = ddic_table

ET_RETURN = ret_table.

.

if not ret_table is initial.

raise PSA_Doesnot_Exist.

endif.

select * from (db_syntax) into corresponding fields of table psa_table

where REQUEST = req_no.

endif.

comment -> ****** code ends********

can you please tell me why we are checking only for the PSA_name appended by 000 and 001.

Any inputs?

Thanks,

Raghu

Edited by: Raghu tej harish reddy on Feb 11, 2009 8:43 AM

former_member186445
Active Contributor
0 Kudos

the name of the PSA table is a generic one created by the system on the moment that you activate the datasource in BI. the first time you'll get indeed /BIC/B0004162000 (so ending with '000'). Whenever you change something in the datasource, you replicate and activate again, the structure of the PSA table changed and therefor the system will generate a new table with a new name e.g. /BIC/B0004162001. so every time you change and reactivate a new PSA table is created.

as explained before you can check table RSTSODS to see which one is currently valid for your datasource

M.

Former Member
0 Kudos

Hi ,

Thanks for the reply.

If i understand correctly,

The system will keep on incrementing the PSA table name evey time we change the datasource structure and keeps the latest one in the active status and rest all in inactive status i.e. in Modified version. Right?

And i can see the number of tables created in RSTSODS table right?

Regards,

Raghu

former_member186445
Active Contributor
0 Kudos

Yes, but if I recall well the inactive PSA tables are deleted after some time or after a DB action, I'm not sure. I know that there used to be OSS note explaining this, but i don't have it by hand.

M.

Former Member
0 Kudos

Thanks surendra & Mti.

I have checked what you said and it is perfectly matching.

1.I have loaded some data into PSA.

2.changed the structure of data source.

3.Tried loading the request in PSA to a target.

4.Load sucessful with zero records.

5. when i check the details, in messages it is has been explained clearly

Message

Request REQU_4CT6ZC530RW31Y4ULTEMIHS5T not extracted; request is in obsolete version of DataSource

Message no. RSDS198

Diagnosis

The request REQU_4CT6ZC530RW31Y4ULTEMIHS5T was loaded into the PSA table when the DataSource had a different structure to the current one. Incompatible changes have been made to the DataSource since then and the request cannot be extracted with the DTP anymore.

System Response

The request is in PSA /BIC/B0006743, version 001. The current PSA version is 002. An extraction would lead to a short dump because of field incompatibilities.

Procedure

If you no longer require the data, you do not need to take any further action.

If you do still require the data, you can just extract it by creating a generic DataSource in the Myself source system in PSA /BIC/B0006743, version 001. You can find the technical name of the PSA table in the table RSTSODS with the specified PSA name and version. Convert the data using a separate transformation into the new target format.

Former Member
0 Kudos

Hi,

As per the inputs i have changed the program and working fine.

now i have one more question in the code.

coment-> 1.read the psa name based on the data source name.

select single psa from rsdsseg into temp_psa_name where objvers = 'A' and datasource = 'YQOP_FOODS'.

if temp_psa_name is initial.

raise psa_doesnot_exist.

endif.

coment-> 2.finding the latest version of psa.

select single ODSNAME_TECH into db_psa_name from RSTSODS where ODSNAME = temp_psa_name

and version = ( select max( version ) from RSTSODS where ODSNAME = temp_psa_name ).

coment-> 3.checking if the psa table new version is in Data dictionary.

IF ddic_table IS NOT INITIAL.

delete TABLE ddic_table.

ENDIF.

*BREAK-POINT.

append temp_db_psa to ddic_table.

call function 'BDT_CHECK_TABLE_NOT_IN_DDIC'

TABLES

IT_TBZ1H = ddic_table

ET_RETURN = ret_table.

*BREAK-POINT.

if ret_table is initial.

raise psa_doesnot_exist.

endif.

My question is what diffrence will it make by checking a table if it is in Data dictionary or not??

Do i need to use this function module and check?

Please let me know...

I am actually modifying code written by some one for my requirement so want to know if this is written to handle any exception?

Also if i use the statement

raise psa_doesnot_exist.

when it is called an ABAP dump is getting displayed . Have searched in documentation but didn't find an example to define non-class-based EXCEPTIONS.

Thanks,

Raghu

Edited by: Raghu tej harish reddy on Feb 18, 2009 6:37 AM

Answers (0)