Welcome To My BLOG

This site is to give a brief idea for the abap learners who are looking for some real time programs .It consists of collection of programs from my side . I hope these programs are very much used for all of the learners. Please check the links for any information in ABAP.
Please vote for my Blog. And please input me on this mail addrssess.Email me

Share this link with your friends

http://www.rebtel.com/u/15163104576

For every friend who signs up using this link and makes a payment, we'll give you 8 €!


Wednesday, September 22, 2010

Program to get the archiving object size

Description
/The report program computes the size of one or more archive objects by finding the size of individual tables that comprise the archive object. The output will be displayed on the screen and can also be downloaded to the presentation server./

REPORT Z_Compute_Archive_Object_Size.

TABLES : ARCH_OBJ.

TYPE-POOLS : ADK .

*---> data declaration
DATA : BEGIN OF I_TAB_AOBJ OCCURS 0,
OBJECT LIKE ARCH_OBJ-OBJECT.
DATA : END OF I_TAB_AOBJ.

DATA : BEGIN OF I_TAB_YES_DEL OCCURS 0,
OBJECT LIKE ARCH_OBJ-OBJECT,
TABNAME LIKE DD02V-TABNAME,
TEXT LIKE DD02V-DDTEXT.
DATA : END OF I_TAB_YES_DEL.

DATA: BEGIN OF I_DBSTAT OCCURS 0.
INCLUDE STRUCTURE DBSTATAM.
DATA: END OF I_DBSTAT.

DATA: BEGIN OF I_OUTPUT OCCURS 0,
OBJECT LIKE ARCH_OBJ-OBJECT,
TNAME LIKE I_DBSTAT-TNAME,
NROWS LIKE I_DBSTAT-NROWS,
OCCTB LIKE I_DBSTAT-OCCTB,
OCCIX LIKE I_DBSTAT-OCCIX.
DATA: END OF I_OUTPUT.

DATA: I_OBJECT_TABLES TYPE ADK_CCMS_TABLE OCCURS 0.

DATA: WA_OBJECT_TABLES TYPE ADK_CCMS_TABLE.

DATA: V_ARCOBJ LIKE ARCH_OBJ-OBJECT.

*---> selection criteria - archive object
SELECT-OPTIONS A_OBJECT FOR ARCH_OBJ-OBJECT.

*---> Output filename
PARAMETERS: FILENAME TYPE STRING.

*---> check the input
SELECT OBJECT INTO I_TAB_AOBJ FROM ARCH_OBJ WHERE OBJECT IN A_OBJECT.
APPEND I_TAB_AOBJ.
ENDSELECT.

*---> get the list of tables that comprise the arhive object
IF NOT I_TAB_AOBJ[] IS INITIAL.
REFRESH I_OBJECT_TABLES.

LOOP AT I_TAB_AOBJ.
CALL FUNCTION 'ADK_CCMS_GET_TABLES'
EXPORTING
OBJECT = I_TAB_AOBJ-OBJECT
DELETE_TABLES_ONLY = ''
TABLES
OBJECT_TABLES = I_OBJECT_TABLES
* EXCEPTIONS
* OBJECT_NOT_FOUND = 1
* OTHERS = 2
.
LOOP AT I_OBJECT_TABLES INTO WA_OBJECT_TABLES.
I_TAB_YES_DEL-OBJECT = I_TAB_AOBJ-OBJECT .
I_TAB_YES_DEL-TABNAME = WA_OBJECT_TABLES-TABNAME.
I_TAB_YES_DEL-TEXT = WA_OBJECT_TABLES-TEXT.
APPEND I_TAB_YES_DEL.
ENDLOOP.

IF SY-SUBRC <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDLOOP.
ENDIF.

*--> find size of each table that comprise the archive object
LOOP AT I_TAB_YES_DEL.
REFRESH I_DBSTAT.

MOVE I_TAB_YES_DEL-OBJECT TO V_ARCOBJ.
MOVE I_TAB_YES_DEL-TABNAME TO I_DBSTAT-TNAME.
APPEND I_DBSTAT.

CALL FUNCTION 'DB_TABLE_DATA_READ' " online lesen
TABLES
DBSTAT = I_DBSTAT
EXCEPTIONS
NO_DATA_FOUND = 2 " online nicht gefunden
OTHERS = 3.

I_OUTPUT-OBJECT = V_ARCOBJ.
LOOP AT I_DBSTAT.
I_OUTPUT-TNAME = I_DBSTAT-TNAME.
I_OUTPUT-NROWS = I_DBSTAT-NROWS.
I_OUTPUT-OCCTB = I_DBSTAT-OCCTB.
I_OUTPUT-OCCIX = I_DBSTAT-OCCIX.
APPEND I_OUTPUT.
ENDLOOP.
ENDLOOP.

*---> write output to screen
WRITE : 'OBJECT ', '|', 'TABLE NAME ', '|',
'Number of records ' , '|' , 'Table Size(KB)' , '|' , 'Indexes size (KB)'.

LOOP AT I_OUTPUT.
WRITE : / I_OUTPUT-OBJECT, '|', I_OUTPUT-TNAME, '|',
I_OUTPUT-NROWS , '|' , I_OUTPUT-OCCTB , '|' , I_OUTPUT-OCCIX.
ENDLOOP.

*---> write output to file
CALL METHOD CL_GUI_FRONTEND_SERVICES=>GUI_DOWNLOAD
EXPORTING
FILENAME = FILENAME
FILETYPE = 'DAT'
CHANGING
DATA_TAB = I_OUTPUT[]
EXCEPTIONS
FILE_WRITE_ERROR = 1
NO_BATCH = 2.

2 comments:

veesatya said...

great post quickly deep dive into custom archiving, would be great if some functional specs and technical specs can be added for the programs

veesatya said...

great post pls add functional and technical specs on these programs