Sei sulla pagina 1di 4

TABLES : ARCH_OBJ. TYPE-POOLS : ADK .

*---> data declaration DATA : BEGIN OF I_TAB_AOBJ OCCURS 0, OBJECT LIKE ARCH_OBJ-OBJECT, END OF I_TAB_AOBJ. DATA: TABNAM TYPE MSSTABLE. DATA : BEGIN OF I_TAB_YES_DEL OCCURS 0, OBJECT LIKE ARCH_OBJ-OBJECT, TABNAME LIKE DD02V-TABNAME, TEXT LIKE DD02V-DDTEXT, 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_TABSZ OCCURS 0. INCLUDE STRUCTURE MSSTABSIZEINFO. DATA: END OF I_TABSZ. DATA: BEGIN OF I_OUTPUT OCCURS 0, OBJECT LIKE ARCH_OBJ-OBJECT, TNAME LIKE I_DBSTAT-TNAME, TDESC LIKE DD02T-DDTEXT, RESERVED TYPE MSSRESSIZE, ROWS TYPE MSSNUMROWS, DATA TYPE MSSDATASIZE, INDEX TYPE MSSINDEXSIZE, UNUSED TYPE MSSUNUSEDSIZE, END OF I_OUTPUT. DATA: BEGIN OF TABDSC OCCURS 1, TABNAME LIKE DD02T-TABNAME, DDTEXT LIKE DD02T-DDTEXT, END OF TABDSC.

DATA: WA_TABDSC LIKE LINE OF TABDSC. 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. DATA: FNAME TYPE STRING. PARAMETERS FILENAME TYPE IBIPPARMS-PATH. *---> selection criteria - archive object SELECT-OPTIONS A_OBJECT FOR ARCH_OBJ-OBJECT. *---> Output filename

AT SELECTION-SCREEN ON VALUE-REQUEST FOR FILENAME. PERFORM BROWSE_FILE. START-OF-SELECTION. *---> check the input SELECT OBJECT INTO I_TAB_AOBJ FROM ARCH_OBJ WHERE OBJECT IN A_OBJECT. APPEND I_TAB_AOBJ. ENDSELECT.

SORT TABDSC ASCENDING BY TABNAME. *---> 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. SELECT TABNAME DDTEXT INTO CORRESPONDING FIELDS OF TABLE TABDSC FROM DD02T FOR A LL ENTRIES IN I_TAB_YES_DEL WHERE TABNAME = I_TAB_YES_DEL-TABNAME AND DDLANGUAGE = 'E'. *--> 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. READ TABLE TABDSC INTO WA_TABDSC WITH KEY TABNAME = I_DBSTAT-TNAME BINARY SEARCH . IF SY-SUBRC = 0. I_OUTPUT-TDESC = WA_TABDSC-DDTEXT. ENDIF. TABNAM = I_DBSTAT-TNAME. CALL FUNCTION 'MSS_GET_TABLE_SIZE_INFO' EXPORTING table_name = TABNAM IMPORTING TABLE_SIZEINFO = I_TABSZ EXCEPTIONS NOT_RUNNING_ON_MSSQL = 1 DB_ERROR = 2 INTERNAL_ERROR = 3 DB_NOT_FOUND = 4 NO_DB_ACCESS = 5 SCHEMA_NOT_FOUND = 6 INVALID_INPUT = 7 TABLE_NOT_FOUND = 8 OTHERS = 9 . IF sy-subrc <> 0. MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. ELSE. I_OUTPUT-RESERVED = I_TABSZ-RESERVED. I_OUTPUT-ROWS = I_TABSZ-ROWS. I_OUTPUT-DATA = I_TABSZ-DATA. I_OUTPUT-INDEX = I_TABSZ-INDEX. I_OUTPUT-UNUSED = I_TABSZ-UNUSED. CLEAR I_TABSZ. ENDIF.

APPEND I_OUTPUT. ENDLOOP. ENDLOOP. *---> write output to screen ULINE: /(198). WRITE : /1 SY-VLINE,3 'OBJECT' COLOR 5, 15 SY-VLINE,17 'TABLE NAME' COLOR 1, 30 SY-VLINE,32 'TABLE DESCRIPTION' COLOR 3, 88 SY-VLINE,90 'Reserved Size(KB)' COLOR 4, 110 SY-VLINE,112 'No.Of.Records' COLOR 2,

132 SY-VLINE,134 'Data Size(KB)' COLOR 6, 154 SY-VLINE,156 'Indexes size(KB)' COLOR 7, 176 SY-VLINE,178 'Unused Size(KB)' COLOR 1, 198 SY-VLINE. ULINE: /(198). LOOP AT I_OUTPUT. WRITE : /1 SY-VLINE,3 I_OUTPUT-OBJECT, 15 SY-VLINE,17 I_OUTPUT-TNAME, 30 SY-VLINE,32 I_OUTPUT-TDESC, 88 SY-VLINE,90 I_OUTPUT-RESERVED, 110 SY-VLINE,112 I_OUTPUT-ROWS, 132 SY-VLINE,134 I_OUTPUT-DATA, 154 SY-VLINE,156 I_OUTPUT-INDEX, 176 SY-VLINE,178 I_OUTPUT-UNUSED, 198 SY-VLINE. ULINE: /(198). ENDLOOP. FNAME = FILENAME. *---> write output to file CALL METHOD CL_GUI_FRONTEND_SERVICES=>GUI_DOWNLOAD EXPORTING FILENAME = FNAME FILETYPE = 'DAT' WRITE_FIELD_SEPARATOR = 'X' CHANGING DATA_TAB = I_OUTPUT[] EXCEPTIONS FILE_WRITE_ERROR = 1 NO_BATCH = 2.

*&---------------------------------------------------------------------* *& Form BROWSE_FILE *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * --> p1 text * <-- p2 text *----------------------------------------------------------------------* form BROWSE_FILE . CALL FUNCTION 'F4_FILENAME' EXPORTING PROGRAM_NAME = SYST-CPROG DYNPRO_NUMBER = SYST-DYNNR FIELD_NAME = 'FILENAME' IMPORTING FILE_NAME = FILENAME . endform. " BROWSE_FILE

Potrebbero piacerti anche