在ABAP裡取得一個資料庫表記錄數的兩種方法
方法1:使用函式EM_GET_NUMBER_OF_ENTRIES
這個函式使用起來很簡單,只需要將想查詢的資料庫表名稱維護進輸入引數IT_TABLES:
上圖說明這個函式支援批量操作,我查詢的兩張表名為TADIR和PROGDIR.
執行函式,得到表的條目數:
方法2:使用ADBC
方法1的實現其實沒有什麼神奇之處,就是用Open SQL SELECT COUNT(*)來取得一張表的資料個數。
如果我們使用的ABAP Netweaver底層資料庫用的是SAP HANA,那麼有一張後設資料表M_TABLES,存放了所有表的後設資料。
看個例子:
下面一條SQL語句,可以輕鬆獲得表COMM_PRODUCT和TADIR的條目數:
SELECT * FROM M_TABLES WHERE TABLE_NAME IN ('COMM_PRODUCT', 'TADIR')
M_TABLES這張表的詳細資訊可以檢視SAP幫助: https://help.sap.com/doc/4fe29514fd584807ac9f2a04f6754767/2.0.01/en-US/20c7689a75191014ad52c1beb40ce2d2.html
我寫了個簡單的ABAP工具,把對錶M_TABLES的操作封裝了起來:
class CL_CRM_HOME_TABLE_SIZE_TOOL definitionpublic 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_SIZEimporting !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 #( xWHEN 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.
上述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 ).
執行上述report,顯示的結果如下:
本文提到的工具的原始碼請在 我的SAP社群部落格 下載.
要獲取更多Jerry的原創文章,請關注公眾號"汪子熙":
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/24475491/viewspace-2217157/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- SQL Server在分頁獲取資料的同時獲取到總記錄數的兩種方法SQLServer
- SAP ABAP裡資料庫表的Storage Parameters從哪裡來的資料庫
- MySQL建立資料庫的兩種方法MySql資料庫
- 如何把 SAP ABAP 系統裡一張資料庫表的內容,顯示在 Adobe PDF Form 裡資料庫ORM
- efcore 跨表查詢,實現一個介面內查詢兩個不同資料庫裡各自的表資料資料庫
- 兩種簡單分析和優化MySQL資料庫表的方法優化MySql資料庫
- 計算資料庫中所有表的記錄條數資料庫
- ABAP資料庫表的後設資料資料庫
- 一種獲取SAP HANA資料庫表條目數的另類方法資料庫
- 交換兩個資料的三種方法
- 在ABAP Webdynpro裡顯示PDF的一種辦法Web
- SAP ABAP 系統進行資料庫表查詢的幾種常用方法的試讀版資料庫
- Dedecms資料庫恢復與備份的兩種方法資料庫
- 教你兩種資料庫覆蓋式資料匯入方法資料庫
- 利用ABAP除錯模式修改SE16裡資料庫表的內容除錯模式資料庫
- [ChatGPT 勘誤]:SAP ABAP 系統裡資料庫表 dlv_systc 的用途ChatGPT資料庫
- ABAP和XML資料格式互相轉換的兩種方式XML
- mysql資料庫連表查詢的幾種方法MySql資料庫
- SAP ABAP 的兩種記憶體物件型別記憶體物件型別
- 在SAP HANA Express Edition裡建立資料庫表Express資料庫
- 使用SQL語句將資料庫中的兩個表合併成一張表SQL資料庫
- 如何比較兩個資料庫表結構的不同資料庫
- 使用SQL語句去掉重複記錄的兩種方法SQL
- SAP ABAP 字串內數字去前導零的兩種方法(正則/拼接)字串
- 大概在昨天下午資料庫執行記錄裡面發現一條奇怪的 sql資料庫SQL
- SQL Server 資料庫基本記錄(一)SQLServer資料庫
- 解決MySQL的主從資料庫沒有同步的兩種方法MySql資料庫
- SAP ABAP資料表的操作
- 如何建立最簡單的 ABAP 資料庫表,以及編碼從資料庫表中讀取資料 (上)資料庫
- MYSQL資料庫表記錄刪除解決方案MySql資料庫
- SAP Hybris Commerce裡的資料庫表資料庫
- 如何找到某個 ABAP structure 某欄位的源頭來自哪個資料庫表Struct資料庫
- 修改資料檔案的位置的兩種方法
- 一百個人心中有100個哈姆雷特,一百個國產資料庫廠家眼裡只有兩個優秀的資料庫資料庫
- 記錄一個利用資料庫引擎格式化異常sql的思路資料庫SQL
- C++ 一種交換兩個數的思路C++
- 在MySQL中,如何獲取資料庫下所有表的資料行數?MySql資料庫
- SAPABAP裡資料庫表的StorageParameters從哪裡來的資料庫