方法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 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.
上述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的原创文章,请关注公众号"汪子熙":
相关推荐
多表结合查询涉及到将两个或多个表中的数据进行联合查询,这通常通过内连接来实现。 此外,还提到了forall entries选项,这通常用于处理内表中的每一条记录。例如,当你有一个内表(itable),并且想要对表中的每一...
1. **SELECT语句**:最基础的查找方法,直接在ABAP代码中使用SQL SELECT语句来查询数据库表。例如: ```abap SELECT * FROM mara INTO TABLE @lt_mara. ``` 2. **Open SQL**:ABAP与数据库交互的主要方式,提供了...
在ABAP环境下,有两种主要的方式来使用SQL:开放式SQL和自身的SQL。开放式SQL是由SAP提供的,它允许开发者编写可以在不同数据库平台上运行的代码,从而确保了代码的可移植性和兼容性。自身的SQL则是直接针对特定...
在SAP系统中,流水号是非常重要的一种数据类型,用于标识唯一的记录。然而,SAP系统中并没有提供序列号的功能,但是我们可以使用范围对象或数据库方法来实现流水号的生成。 方法一:使用范围对象 使用范围对象可以...
此方法可以删除内部表`itab`中的每一条记录所对应的数据库记录。 示例: ```abap DELETE scustom FROM TABLE itab. ``` 通过以上介绍可以看出,ABAP中的数据库操作语句非常灵活且强大,能够满足不同场景下的...
在 ABAP 中,访问外部数据库的第一步是建立连接。我们可以使用 `EXEC SQL` 语句来连接外部数据库。在这个示例代码中,我们使用 `connect to` 语句来连接名为 `TEST` 的数据库。 ```abap EXEC SQL. connect to :dbs...
在ABAP中创建数据库表是一项基础但重要的任务。以下是具体步骤: 1. **进入ABAP工作台**:通过开发 -> ABAP字典进入初始化工作台。 2. **选择数据库表**:在菜单中选择“数据库表”并输入所需创建的表名称。 3. **...
在SAP系统中,ABAP(Advanced Business Application Programming)是一种编程语言,用于开发和定制企业级应用程序。ABAP数据表是SAP系统的核心组成部分,它们存储了系统的业务数据和配置信息。本资料集“SAP数据表...
在这个特定的话题“ABAP维护表视图”中,我们将深入探讨如何在ABAP环境中管理和操作表视图,这是一种在数据库层面与数据交互的重要方式。 表视图在数据库管理中扮演着关键角色,它们提供了对原始数据库表的抽象和...
Database Table 是 ABAP 中的一种特殊的内表,它是通过将数据存储在数据库中来实现的。Database Table 的优点是可以存储大量数据,并且可以通过 SQL 语言来访问数据。然而,Database Table 的缺点是需要更多的编程...
文件名“BOM按层展开在ABAP中的几个实现方法.pdf”很可能包含了上述方法的详细步骤、示例代码以及相关注意事项。阅读这份文档可以帮助读者深入理解如何在ABAP环境下处理和展示物料清单的层级结构,对于从事制造业...
在ABAP(Advanced Business Application Programming)编程中,找表是一个常见的任务,这涉及到从数据库中检索数据以满足特定的需求。本文将深入探讨18种基于屏幕字段查找潜在数据的技巧,帮助ABAP开发者更高效地...
在ABAP语言中,内表(Internal Tables)是存储数据的一种关键结构,它们允许程序员以表格形式组织数据,便于执行各种操作,如排序、搜索、更新等。内表的使用在ABAP语法开发中占据重要位置,特别是在处理大量数据或...
在SAP ABAP编程中,动态内表的创建是实现灵活数据处理的重要手段,尤其是在处理大量数据或涉及多个系统表的场景下。本篇将详细解释如何动态地创建和使用内表,以及在进行动态更新时需要注意的关键点。 首先,让我们...
ABAP4数据库编程是SAP开发环境中的一种重要技术,用于与数据库进行交互。在这个文档中,我们将探讨如何在SAP Server的Oracle数据库上创建自定义表,并通过ABAP程序进行数据查询。下面是按照文档步骤详细解释的过程:...
逻辑数据库实质上是一种特殊类型的ABAP程序,它可以将多个数据库表的数据组合起来,并按照特定的层次结构组织数据。 **特点:** - **处理复杂数据结构**:逻辑数据库特别适合于处理具有外来关键字相关联的多表结构...
ABAP 内表是一种非常重要的数据结构,它可以存储和处理大量的数据。在 ABAP 程序中,内表是使用 TABLE 语句或 DATA 语句定义的。ABAP 内表可以用来存储和处理大量的数据,例如从数据库中读取的数据、用户输入的数据...
在SAP ABAP环境中,SE11是用于创建和维护数据库表的重要工具。这个文档将指导我们完成一系列步骤,从创建数据库表到后续的维护、翻译以及增强,以确保数据的有效管理和跟踪。以下是对这些步骤的详细解释: 一、表...
在ABAP编程中,内表(Internal Table)是一种非常重要的数据结构,用于存储和处理大量数据。内表灵活且高效,可以适应各种复杂的数据处理需求。以下是对ABAP内表创建方法的详细说明: 1. **声明表结构并基于表结构...