Method 1: Use the function EM_GET_NUMBER_OF_ENTRIES

This function is as simple as maintaining the name of the database table you want to query into the input parameter IT_TABLES:

The figure above shows that this function supports batch operations. The two tables I queried were called TADIR and PROGDIR.

Get the number of entries in the table by executing the function:

Method 2: Use ADBC

There is nothing magical about the implementation of method 1, which uses Open SQL SELECT COUNT(*) to get the number of data in a table.

If the underlying ABAP Netweaver database is SAP HANA, there is a single metadata table M_TABLES that holds the metadata for all the tables.

Here’s an example:

SQL > select COMM_PRODUCT, TADIR, COMM_PRODUCT, TADIR, COMM_PRODUCT, TADIR, COMM_PRODUCT, TADIR

SELECT * FROM M_TABLES WHERE TABLE_NAME IN (‘ COMM_PRODUCT ‘, ‘TADIR’)

Details on M_TABLES can be found in the SAP help: help.sap.com/doc/4fe2951…

I wrote a simple ABAP tool that encapsulates the operations on M_TABLES:

class CL_CRM_HOME_TABLE_SIZE_TOOL definition public final create public . public section. TYPES: BEGIN OF ty_size, table_name TYPE char256, record_count TYPE int4, table_size TYPE int4, END OF ty_size. TYPES: tt_size TYPE TABLE OF ty_size with key table_name. class-methods GET_SIZE importing ! IT_INPUT type STRING_TABLE returning value(RT_RESULT) type tt_size . protected section. private section. ENDCLASS. CLASS  CL_CRM_HOME_TABLE_SIZE_TOOL IMPLEMENTATION. METHOD get_size. DATA(lv_in) = REDUCE string( INIT x TYPE string FOR <data>  IN it_input NEXT x = SWITCH #( x WHEN space THEN |'{ <data> }'| ELSE x && ',' && |'{ <data> }'| ) ). TRY. DATA(lo_sql_con) = cl_sql_connection=>get_connection( ). DATA(lo_stmt) = lo_sql_con->create_statement( ). DATA: lv_stmt TYPE string. lv_stmt = |select table_name, record_count, table_size from m_tables where table_name in ({ lv_in })|. DATA(lo_res) = lo_stmt->execute_query( lv_stmt ). GET REFERENCE OF rt_result INTO DATA(lr_data). lo_res->set_param_table( lr_data ). lo_res->next_package( ). lo_res->close( ). CATCH cx_sql_exception INTO DATA(cx_root). WRITE:/ 'Error:', cx_root->get_text( ). RETURN. ENDTRY. ENDMETHOD. ENDCLASS.Copy the code

Consumption mode of the above class:

REPORT zsize. DATA: lt_input TYPE String_table. lt_input = VALUE #( ( CONV string( 'TADIR' ) ) ( CONV string( 'TFDIR' ) ) ). DATA(lt_size) =  cl_crm_home_table_size_tool=>get_size( lt_input ). cl_demo_output=>display_data( lt_size ).Copy the code

After executing the report, the following information is displayed:

The source code for the tools mentioned in this article can be downloaded from my SAP community blog.

For more of Jerry’s original articles, please follow the public account “Wang Zixi “: