Posted: Wed Aug 20, 2008 9:53 am Post subject: Show number of records in a table (by Client)
Code:
* Source Name is ZCUSTOM_TABLES
REPORT zcustom_tables LINE-SIZE 255 LINE-COUNT 65.
************************************************************************
* Table Declarations *
************************************************************************
TABLES: dd09l, "DD: Technical settings of tables
dd02t, "R/3 DD: SAP table texts
usr21, "Assign user name address key
adrp, "Persons (central address administration)
dd02l, "SAP tables
t000. "Clients
************************************************************************
* Internal Table Declarations *
************************************************************************
DATA: BEGIN OF zcustom OCCURS 0,
tabname LIKE dd02t-tabname, "Table Name
contflag LIKE dd02l-contflag, "Delivery Class
ddtext LIKE dd02t-ddtext, "Table Text
as4local LIKE dd09l-as4local, "Activation status
tabkat LIKE dd09l-tabkat, "Size category
tabart LIKE dd09l-tabart, "Data class
as4user LIKE dd09l-as4user, "Last changed by
as4date LIKE dd09l-as4date, "Last changed on
as4time LIKE dd09l-as4time, "Last changed at
persnumber LIKE usr21-persnumber, "Person number
name_first LIKE adrp-name_first, "First name
name_last LIKE adrp-name_last, "Last name
tab_count LIKE sy-dbcnt, "DB Count
END OF zcustom.
DATA: zcustom_fin LIKE zcustom OCCURS 0.
DATA: BEGIN OF nametab OCCURS 300.
INCLUDE STRUCTURE dfies.
DATA: END OF nametab.
DATA: BEGIN OF tab OCCURS 500.
INCLUDE STRUCTURE t000.
DATA: END OF tab.
************************************************************************
* Constants *
************************************************************************
CONSTANTS: zappl0(40) VALUE ' Master data, transparent tables',
zappl1(40) VALUE ' Transaction data, transparent tables',
zappl2(40) VALUE ' Organization and customizing',
zuser0(40) VALUE ' Customer data class',
zuser1(40) VALUE ' Customer data class'.
CONSTANTS: zszcat0(40) VALUE ' 0 to 6,300',
zszcat1(40) VALUE ' 6,300 to 25,000',
zszcat2(40) VALUE ' 25,000 to 100,000',
zszcat3(40) VALUE ' 100,000 to 400,000',
zszcat4(40) VALUE ' 400,000 to 32,000,000'.
CONSTANTS:
zdelcls_a(60) VALUE
'Application table (master and transaction data)',
zdelcls_c(60) VALUE
'Customizing table, maintenance only by cust., not SAP import',
zdelcls_e(60) VALUE
'Control table, SAP and customer have separate key areas',
zdelcls_g(60) VALUE
'Application table (master and transaction data)',
zdelcls_l(60) VALUE
'Customizing table, protected against SAP Upd., only INS all',
zdelcls_s(60) VALUE
'System table, maint. only by SAP, change = modification',
zdelcls_w(60) VALUE
'System table, contents transportable via separate TR objects'.
************************************************************************
* Data Declarations *
************************************************************************
DATA: dat TYPE d,
ztable_sel LIKE zcustom-tabname,
zdata_class LIKE zcustom-tabart,
zsize_cat LIKE zcustom-tabkat,
zdel_class LIKE zcustom-contflag,
zformat(1) VALUE 'T',
leer(1) VALUE 'X',
has_mandt(1) VALUE ' ',
client_count LIKE sy-dbcnt,
total_count LIKE client_count,
data_stor(5000).
************************************************************************
* Start of Selection *
************************************************************************
START-OF-SELECTION.
SELECT-OPTIONS: tabname FOR dd02t-tabname.
SELECT tabname contflag
INTO CORRESPONDING FIELDS OF zcustom
FROM dd02l
WHERE tabname IN tabname
AND ( tabclass EQ 'TRANSP' "Determine if
OR tabclass EQ 'CLUSTER' "Table Physically
OR tabclass EQ 'POOL' ). "Stores Data
* OR tabclass EQ 'VIEW' ).
SELECT ddtext
INTO CORRESPONDING FIELDS OF zcustom
FROM dd02t
WHERE tabname = zcustom-tabname
and ddlanguage = sy-langu.
SELECT SINGLE as4local tabkat tabart as4user as4date as4time
INTO CORRESPONDING FIELDS OF zcustom
FROM dd09l
WHERE tabname = zcustom-tabname.
SELECT SINGLE persnumber
INTO CORRESPONDING FIELDS OF zcustom
FROM usr21
WHERE bname = zcustom-as4user.
SELECT SINGLE name_first name_last
INTO CORRESPONDING FIELDS OF zcustom
FROM adrp
WHERE persnumber = zcustom-persnumber.
************************************************************************
* Top of Page *
************************************************************************
TOP-OF-PAGE.
FORMAT COLOR COL_HEADING ON INTENSIFIED ON.
WRITE: (30) 'Table Name',
(6) 'Status',
(10) 'Del Status',
(10) 'Size Cat',
(10) 'Data Class',
(12) 'Created By',
(12) 'Date Created',
(16) 'Time Created'.
FORMAT COLOR COL_HEADING OFF INTENSIFIED OFF.
TOP-OF-PAGE DURING LINE-SELECTION.
FORMAT COLOR COL_HEADING ON.
WRITE: (30) 'Table Name',
(10) 'Short Text',
/.
*&---------------------------------------------------------------------*
*& Form write_and_hide_text
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM write_and_hide_text.
SORT zcustom.
LOOP AT zcustom.
FORMAT HOTSPOT ON INTENSIFIED ON.
WRITE: / zcustom-tabname UNDER 'Table Name'.
FORMAT HOTSPOT OFF INTENSIFIED OFF.
CASE zformat.
WHEN 'T'.
PERFORM column_intensified_on.
WHEN 'F'.
PERFORM column_intensifeid_off.
ENDCASE.
WRITE: zcustom-as4local UNDER 'Status',
zcustom-contflag UNDER 'Del Status',
zcustom-tabkat UNDER 'Size Cat',
zcustom-tabart UNDER 'Data Class',
zcustom-as4user UNDER 'Created By',
zcustom-as4date UNDER 'Date Create',
zcustom-as4time UNDER 'Time Created'.
ENDLOOP.
ENDFORM. " write_and_hide_text
*&---------------------------------------------------------------------*
*& Form write_and_show_text
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM write_and_show_text.
LOOP AT zcustom.
IF ztable_sel = zcustom-tabname.
FORMAT HOTSPOT OFF INTENSIFIED OFF.
FORMAT COLOR COL_HEADING ON INVERSE ON.
WRITE: zcustom-tabname UNDER 'Table Name',
zcustom-ddtext UNDER 'Short Text'.
FORMAT COLOR COL_HEADING OFF INVERSE OFF.
ENDIF.
ENDLOOP.
*Determine Delivery Class
PERFORM determ_delivery_class USING zdel_class.
*Determine Data Class
PERFORM determ_data_class_ USING zdata_class.
*Determine Size Category
PERFORM determ_size_cat_ USING zsize_cat.
*Select Distinct Table Record count and display info
PERFORM table_count USING ztable_sel.
ENDFORM. " write_and_show_text
*&---------------------------------------------------------------------*
*& Form table_count
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_ZTABLE_SEL text
*----------------------------------------------------------------------*
FORM table_count USING p_ztable_sel.
data: mandt-value(8).
data: begin of where-value occurs 10,
filler(35),
end of where-value.
CLEAR: data_stor.
clear mandt-value.
SELECT * FROM dd02l WHERE tabname EQ p_ztable_sel "Determine if
AND ( tabclass EQ 'TRANSP' "Table Physically
OR tabclass EQ 'CLUSTER' "Stores Data
OR tabclass EQ 'POOL'
OR tabclass EQ 'VIEW' ).
CLEAR dd02t.
SELECT SINGLE * FROM dd02t WHERE tabname EQ dd02l-tabname
AND ddlanguage EQ 'E'
AND as4local EQ dd02l-as4local
AND as4vers EQ dd02l-as4vers.
ENDSELECT.
IF sy-subrc NE 0.
MESSAGE e999(zz) WITH 'Table ' p_ztable_sel ' does not Store Data'.
ENDIF.
REFRESH nametab.
CALL FUNCTION 'GET_FIELDTAB' "Find Field Names of Table
EXPORTING
langu = sy-langu
tabname = p_ztable_sel
withtext = leer
TABLES
fieldtab = nametab
EXCEPTIONS
OTHERS = 1.
IF sy-subrc NE 0.
MESSAGE e999(zzzfi001) WITH 'Table ' p_ztable_sel ' is not VALID'.
ENDIF.
MOVE 'N' TO has_mandt.
LOOP AT nametab.
if nametab-domname eq 'MANDT' "See IF Table is Client Dependent
AND sy-tabix EQ 1.
MOVE 'Y' TO has_mandt.
move nametab-fieldname to MANDT-value.
EXIT.
ENDIF.
ENDLOOP.
IF has_mandt EQ 'Y'.
SELECT * FROM t000.
MOVE-CORRESPONDING t000 TO tab.
APPEND tab.
ENDSELECT.
LOOP AT tab.
CLEAR client_count.
refresh where-value.
concatenate mandt-value '= ' tab-mandt into where-value
separated by ' '.
append where-value.
SELECT COUNT(*)
FROM (p_ztable_sel) CLIENT SPECIFIED
INTO data_stor
where (where-value).
MOVE sy-dbcnt TO client_count.
ADD client_count TO total_count.
************************************************************************
* Format Record List *
************************************************************************
FORMAT COLOR COL_KEY ON INTENSIFIED ON.
WRITE: / 'Client:'.
FORMAT COLOR COL_KEY OFF.
FORMAT COLOR COL_NORMAL ON.
WRITE: tab-mandt.
FORMAT COLOR COL_NORMAL OFF.
FORMAT COLOR COL_KEY ON INTENSIFIED ON.
WRITE: 'Records:'.
FORMAT COLOR COL_KEY OFF.
FORMAT COLOR COL_NORMAL ON.
WRITE: client_count.
FORMAT COLOR COL_NORMAL OFF.
COMMIT WORK.
ENDLOOP.
ELSE.
SELECT COUNT(*)
FROM (p_ztable_sel)
INTO data_stor.
MOVE sy-dbcnt TO total_count.
ENDIF.
FORMAT COLOR COL_TOTAL ON INTENSIFIED ON.
WRITE: / 'Total Records in all clients:'.
FORMAT COLOR COL_TOTAL ON INTENSIFIED OFF.
WRITE: total_count,
dd02t-ddtext.
************************************************************************
* Clear Internal Table and Total Record Count *
************************************************************************
CLEAR: tab,
total_count.
REFRESH: tab.
ENDFORM. " table_count
*&---------------------------------------------------------------------*
*& Form determ_data_class_
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_ZDATA_CLASS text
*----------------------------------------------------------------------*
FORM determ_data_class_ USING p_zdata_class.
FORMAT COLOR COL_GROUP ON INTENSIFIED ON.
WRITE: / 'Data Class:'.
FORMAT COLOR COL_GROUP ON INTENSIFIED ON.
CASE p_zdata_class.
WHEN 'APPL0'.
FORMAT INTENSIFIED OFF.
WRITE: p_zdata_class.
FORMAT INVERSE ON INTENSIFIED ON.
WRITE: zappl0.
FORMAT INVERSE OFF INTENSIFIED OFF.
WHEN 'APPL1'.
FORMAT COLOR COL_GROUP ON INTENSIFIED OFF.
WRITE: p_zdata_class.
FORMAT INVERSE ON INTENSIFIED ON.
WRITE: zappl1.
FORMAT INVERSE OFF INTENSIFIED OFF.
WHEN 'APPL2'.
FORMAT COLOR COL_GROUP ON INTENSIFIED OFF.
WRITE: p_zdata_class.
FORMAT INVERSE ON INTENSIFIED ON.
WRITE: zappl2.
FORMAT INVERSE OFF INTENSIFIED OFF.
WHEN 'USER'.
FORMAT COLOR COL_GROUP ON INTENSIFIED OFF.
WRITE: p_zdata_class.
FORMAT INVERSE ON INTENSIFIED ON.
WRITE: zuser0.
FORMAT INVERSE OFF INTENSIFIED OFF.
WHEN 'USER1'.
FORMAT COLOR COL_GROUP ON INTENSIFIED OFF.
WRITE: p_zdata_class.
FORMAT INVERSE ON INTENSIFIED ON.
WRITE: zuser1.
FORMAT INVERSE OFF INTENSIFIED OFF.
ENDCASE.
ENDFORM. " determ_data_class_
*&---------------------------------------------------------------------*
*& Form determ_size_cat_
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_ZSIZE_CAT text
*----------------------------------------------------------------------*
FORM determ_size_cat_ USING p_zsize_cat.
FORMAT COLOR COL_GROUP ON INTENSIFIED ON.
WRITE: / 'Size Category:'.
FORMAT COLOR COL_GROUP OFF INTENSIFIED OFF.
FORMAT COLOR COL_GROUP ON INTENSIFIED ON.
CASE p_zsize_cat.
WHEN '0'.
FORMAT INTENSIFIED OFF.
WRITE: p_zsize_cat.
FORMAT INVERSE ON INTENSIFIED ON.
WRITE: zszcat0.
FORMAT INVERSE OFF INTENSIFIED OFF.
WHEN '1'.
FORMAT INTENSIFIED OFF.
WRITE: p_zsize_cat.
FORMAT INVERSE ON INTENSIFIED ON.
WRITE: zszcat1.
FORMAT INVERSE OFF INTENSIFIED OFF.
WHEN '2'.
FORMAT INTENSIFIED OFF.
WRITE: p_zsize_cat.
FORMAT INVERSE ON INTENSIFIED ON.
WRITE: zszcat2.
FORMAT INVERSE OFF INTENSIFIED OFF.
WHEN '3'.
FORMAT INTENSIFIED OFF.
WRITE: p_zsize_cat.
FORMAT INVERSE ON INTENSIFIED ON.
WRITE: zszcat3.
FORMAT INVERSE OFF INTENSIFIED OFF.
WHEN '4'.
FORMAT INTENSIFIED OFF.
WRITE: p_zsize_cat.
FORMAT INVERSE ON INTENSIFIED ON.
WRITE: zszcat4.
FORMAT INVERSE OFF INTENSIFIED OFF.
ENDCASE.
ENDFORM. " determ_size_cat_
*&---------------------------------------------------------------------*
*& Form determ_delivery_class
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_ZDEL_CLASS text
*----------------------------------------------------------------------*
FORM determ_delivery_class USING p_zdel_class.
FORMAT COLOR COL_HEADING ON INTENSIFIED ON.
WRITE: / 'Deliver Class:'.
FORMAT COLOR COL_HEADING OFF INTENSIFIED OFF.
FORMAT COLOR COL_KEY ON INTENSIFIED OFF.
CASE p_zdel_class.
WHEN 'A'.
FORMAT INTENSIFIED ON.
WRITE: p_zdel_class.
FORMAT INTENSIFIED OFF.
WRITE: zdelcls_a,
/.
WHEN 'C'.
FORMAT INTENSIFIED ON.
WRITE: p_zdel_class.
FORMAT INTENSIFIED OFF.
WRITE: zdelcls_c,
/.
WHEN 'E'.
FORMAT INTENSIFIED ON.
WRITE: p_zdel_class.
FORMAT INTENSIFIED OFF.
WRITE: zdelcls_e,
/.
WHEN 'G'.
FORMAT INTENSIFIED ON.
WRITE: p_zdel_class.
FORMAT INTENSIFIED OFF.
WRITE: zdelcls_g,
/.
WHEN 'L'.
FORMAT INTENSIFIED ON.
WRITE: p_zdel_class.
FORMAT INTENSIFIED OFF.
WRITE: zdelcls_l,
/.
WHEN 'S'.
FORMAT INTENSIFIED ON.
WRITE: p_zdel_class.
FORMAT INTENSIFIED OFF.
WRITE: zdelcls_s,
/.
WHEN 'W'.
FORMAT INTENSIFIED ON.
WRITE: p_zdel_class.
FORMAT INTENSIFIED OFF.
WRITE: zdelcls_w,
/.
ENDCASE.
ENDFORM. " determ_delivery_class
*&---------------------------------------------------------------------*
*& Form column_intensified_on
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM column_intensified_on.
FORMAT COLOR COL_NORMAL ON INTENSIFIED ON.
zformat = 'F'.
FORMAT HOTSPOT ON INTENSIFIED ON.
WRITE: zcustom-tabname UNDER 'Table Name'.
FORMAT HOTSPOT OFF. " INTENSIFIED OFF.
ENDFORM. " column_intensified_on
*&---------------------------------------------------------------------*
*& Form column_intensifeid_off
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM column_intensifeid_off.
FORMAT COLOR COL_NORMAL ON INTENSIFIED OFF.
zformat = 'T'.
FORMAT HOTSPOT ON INTENSIFIED OFF.
WRITE: zcustom-tabname UNDER 'Table Name'.
FORMAT HOTSPOT OFF. " INTENSIFIED OFF.
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum You cannot attach files in this forum You can download files in this forum
All product names are trademarks of their respective companies. SAPNET.RU websites are in no way affiliated with SAP AG. SAP, SAP R/3, R/3 software, mySAP, ABAP, BAPI, xApps, SAP NetWeaver and any other are registered trademarks of SAP AG. Every effort is made to ensure content integrity. Use information on this site at your own risk.