03-10-2008 11:44 AM
Hi all!
We need to get a list of all custom objects of a SAP systems.
First time we think accessing TADIR to get all repository objects of the system and after this access, get all atributes for any of the retrieved objects.
Example:
To a report, access TADIR and TRDIR dictionary tables. in TADIR use class of development custom or in TRDIR any of the user that don't belongs to SAP.
But this solution to the problem is very effort and we should access so too many tables for the objects to get their attributes.
Second time, we think filtering the objects using their namespace with FM TR_CHECK_NAME_CLASS, but this option jumps some objects, like VOFM generated objects or customer exits form VA01 transaction.
Do any of you know the way of extracting a list of all Custom/developed objects for a System?
03-10-2008 11:48 AM
Hi,
U can access transcation SE80, which is a repository of all objects which can serached based on function group, transport group and so on...
Reward appropriate points.
Regards,
Mansi.
03-10-2008 11:53 AM
Hi,
Check this link.Customer Name Ranges:
http://help.sap.com/saphelp_nw04/helpdata/en/2a/6b0b1f547a11d189600000e829fbbd/content.htm
You can also browse through Workbench Requests in Tranasactions SE01/SE09/SE10.
OR
Create a program using the following tables
PROGDIR, "View of REPOSRC (INF Part, with R3STATE)
TRDIR, "System Table TRDIR
TFDIR, "Function Module
TADIR, "Directory of Repository Objects
with a select on TADIR like
SELECT *
FROM TADIR
WHERE OBJ_NAME LIKE 'Z%'.
Regards,
Omkaram.
03-10-2008 12:00 PM
Hi,
If i am not wrong, all custom developement will be saved into custom development classes ( All with a 'Z' or 'Y' ). If it is the case, then your query would be nailed down to finding all custom developement classes. for this SE80 can be used to search them.
Hope this helps..
Harikrishna.
03-10-2008 12:03 PM
Hi,
Go to SE80.
Here you start with Z or Y as these are the only letters thru which custom things names can start with .
So give,
Z* and find out, by pressing F4
and again Y* and find out, by pressing F4.
Reward if helpful.
Regards.
03-11-2008 8:46 AM
Hi all!
Thanks for all the answers!
We cannot enter with standard naming convention to TADIR, because some objects don't follow this convention (for example Includes generated from VOFM transaction like RV61A901), this include is needed to be took into account because we enter non-standard code in it.
Entering with Development class also isn't possible, this include has VKON (standard) DEVCL.
We need a list (maybe in excel file) of all developments in the system, this include BW objects, Web objects and so many others.
In the first approximation we've entered TADIR table to get all objects, dividing the object list using only DEVCL could be not correct, f.e. the include mentioned before. We thought the possibility of using the User that has created the object, but we've not got all the attributes table for all the objects.
Could exist another possibility to get all custom objects of the system?
Thanks in advance!
03-11-2008 9:05 AM
03-11-2008 9:07 AM
Hi,
Just check if this suffices.
REPORT zobjects no standard page heading
TABLES:TADIR,TSTC,V_USERNAME,VRSD.
TYPE-POOLS:slis,VRM.
TYPES: BEGIN OF ittemp,
object LIKE tadir-object,
obj_name LIKE tadir-obj_name,
text LIKE trdirt-text,
author LIKE tadir-author,
devclass like tadir-devclass,
name_text LIKE v_username-name_text,
tcode like tstc-tcode,
korrnum like vrsd-korrnum,
END OF ittemp.
DATA: itfinal TYPE STANDARD TABLE OF ittemp WITH HEADER LINE,
wafinal TYPE ittemp.
DATA : name TYPE vrm_id,
list TYPE vrm_values,
value LIKE LINE OF list.
DATA:itfieldcat TYPE slis_t_fieldcat_alv WITH HEADER LINE.
DATA:itrepid TYPE sy-repid.
itrepid = sy-repid.
DATA:itevent TYPE slis_t_event.
DATA:itlistheader TYPE slis_t_listheader.
DATA:walistheader LIKE LINE OF itlistheader.
DATA:itlayout TYPE slis_layout_alv.
DATA:top TYPE slis_formname.
DATA:itsort TYPE slis_t_sortinfo_alv WITH HEADER LINE.
SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001.
PARAMETER: PACKAGE LIKE TADIR-DEVCLASS.
SELECTION-SCREEN END OF BLOCK B1.
START-OF-SELECTION.
PERFORM getdata.
PERFORM alv.
&----
*& Form GETDATA
&----
text
----
FORM getdata.
read the repository object table and link with username if found
SELECT tadir~object
tadir~obj_name
trdirt~text
tadir~author
tadir~devclass
v_username~name_text
INTO TABLE itfinal
FROM tadir
LEFT JOIN v_username
ON tadirauthor = v_usernamebname
LEFT JOIN trdirt
ON tadirobj_name = trdirtname
WHERE tadir~devclass = PACKAGE
"'$TMP'
AND ( tadirobj_name LIKE 'Z%' OR tadirobj_name LIKE 'Y%' ).
CHECK sy-subrc EQ 0.
loop at itfinal.
*TCODE FROM TSTC
select single tcode from tstc into (itfinal-tcode) where pgmna =
itfinal-obj_name.
*LATEST TRANSPORT REQUEST NUMBER FROM VRSD
select single korrnum from vrsd into (itfinal-korrnum) where objname =
itfinal-obj_name.
modify itfinal.
endloop.
delete itfinal where korrnum is INITIAL.
SORT itfinal BY author object.
ENDFORM. "GETDATA
&----
*& Form ALV
&----
text
----
FORM alv.
IF itfinal[] IS INITIAL.
MESSAGE 'No Values exist for the Selection.' TYPE 'S'.
STOP.
ENDIF.
DEFINE m_fieldcat.
itfieldcat-fieldname = &1.
itfieldcat-col_pos = &2.
itfieldcat-seltext_l = &3.
itfieldcat-do_sum = &4.
itfieldcat-outputlen = &5.
append itfieldcat to itfieldcat.
clear itfieldcat.
END-OF-DEFINITION.
m_fieldcat 'OBJECT' '' 'OBJECT' '' 04 .
m_fieldcat 'OBJ_NAME' '' 'PROGRAM NAME' '' 40 .
m_fieldcat 'TCODE' '' 'TCODE' '' 20 .
m_fieldcat 'TEXT' '' 'DESCRIPTION' '' 70 .
m_fieldcat 'AUTHOR' '' 'AUTHOR' '' 80 .
m_fieldcat 'DEVCLASS' '' 'PACKAGE' '' 30 .
m_fieldcat 'KORRNUM' '' 'LATEST TRANSPORT REQUEST' '' 20 .
itlayout-zebra = 'X'.
itlayout-colwidth_optimize = 'X'.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = sy-repid
is_layout = itlayout
i_callback_user_command = 'LIST1'
i_callback_top_of_page = 'TOP'
it_fieldcat = itfieldcat[]
i_save = 'A'
is_variant = ITVARIANT
it_events = itevent[]
is_print = ITPRINTPARAMS
it_sort = itsort[]
TABLES
t_outtab = itfinal
EXCEPTIONS
program_error = 1
OTHERS = 2.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
ENDFORM. "ALV
&----
*& Form TOP
&----
Top of page for ALV Report
----
FORM top.
DATA:STRING1(70),
STRING2(70),
title1(100),
title2(100),
count(10).
describe table itfinal lines count.
CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
EXPORTING
i_list_type = 0
IMPORTING
et_events = itevent
EXCEPTIONS
LIST_TYPE_WRONG = 1
OTHERS = 2
.
IF sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
string1 = 'List of Objects in Development Class'.
concatenate string1 ':' itfinal-devclass into title1.
walistheader-typ = 'H'.
walistheader-info = title1.
APPEND walistheader TO itlistheader.
string2 = 'Total No.of Objects'.
concatenate string2 ':' count into title2.
walistheader-typ = 'H'.
walistheader-info = title2.
APPEND walistheader TO itlistheader.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
it_list_commentary = itlistheader
I_LOGO = ''.
I_END_OF_LIST_GRID =
.
ENDIF.
CLEAR itlistheader.
ENDIF.
ENDFORM. "TOP
&----
*& Form list1
&----
ALV Interactive-
----
-->R_UCOMM text
-->RS_SELFIELDtext
----
FORM list1 USING r_ucomm LIKE sy-ucomm rs_selfield TYPE slis_selfield.
CASE r_ucomm.
WHEN '&IC1'.
IF rs_selfield-fieldname = 'OBJ_NAME'.
READ TABLE itfinal INDEX rs_selfield-tabindex.
SET PARAMETER ID 'RID' FIELD itfinal-OBJ_NAME.
CALL TRANSACTION 'SE38' AND SKIP FIRST SCREEN.
ELSEIF rs_selfield-fieldname = 'TCODE'.
READ TABLE itfinal INDEX rs_selfield-tabindex.
SET PARAMETER ID 'TCD' FIELD itfinal-TCODE.
CALL TRANSACTION 'SESSION_MANAGER' AND SKIP FIRST SCREEN.
ENDIF.
ENDCASE.
ENDFORM.
K.Kiran.
03-11-2008 9:10 AM
Check out the FM - RFC_READ_TABLE
In the Qery table give TADIR, In Delimiter give Z* & Y*.
You will get all the custom objects in your system.
Regards
Vinayak
03-11-2008 9:15 AM
SE80 is the way to go if you know the Package for all the Custom Developments.
Regards,
Raghav