`
JerryWang_SAP
  • 浏览: 1028505 次
  • 性别: Icon_minigender_1
  • 来自: 成都
文章分类
社区版块
存档分类
最新评论

在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 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的原创文章,请关注公众号"汪子熙":

 
0
0
分享到:
评论

相关推荐

    abap逻辑数据库ABAP数据库操作

    多表结合查询涉及到将两个或多个表中的数据进行联合查询,这通常通过内连接来实现。 此外,还提到了forall entries选项,这通常用于处理内表中的每一条记录。例如,当你有一个内表(itable),并且想要对表中的每一...

    sap abap找表的18种方法

    1. **SELECT语句**:最基础的查找方法,直接在ABAP代码中使用SQL SELECT语句来查询数据库表。例如: ```abap SELECT * FROM mara INTO TABLE @lt_mara. ``` 2. **Open SQL**:ABAP与数据库交互的主要方式,提供了...

    Abap基础学习文档11_读取并处理 数据库表.doc

    在ABAP环境下,有两种主要的方式来使用SQL:开放式SQL和自身的SQL。开放式SQL是由SAP提供的,它允许开发者编写可以在不同数据库平台上运行的代码,从而确保了代码的可移植性和兼容性。自身的SQL则是直接针对特定...

    abap产生流水号的两种方法

    在SAP系统中,流水号是非常重要的一种数据类型,用于标识唯一的记录。然而,SAP系统中并没有提供序列号的功能,但是我们可以使用范围对象或数据库方法来实现流水号的生成。 方法一:使用范围对象 使用范围对象可以...

    ABAP数据库操作之操作语句

    此方法可以删除内部表`itab`中的每一条记录所对应的数据库记录。 示例: ```abap DELETE scustom FROM TABLE itab. ``` 通过以上介绍可以看出,ABAP中的数据库操作语句非常灵活且强大,能够满足不同场景下的...

    ABAP访问外部数据库简明代码[文].pdf

    在 ABAP 中,访问外部数据库的第一步是建立连接。我们可以使用 `EXEC SQL` 语句来连接外部数据库。在这个示例代码中,我们使用 `connect to` 语句来连接名为 `TEST` 的数据库。 ```abap EXEC SQL. connect to :dbs...

    SAP初探之ABAP-数据库对象

    在ABAP中创建数据库表是一项基础但重要的任务。以下是具体步骤: 1. **进入ABAP工作台**:通过开发 -&gt; ABAP字典进入初始化工作台。 2. **选择数据库表**:在菜单中选择“数据库表”并输入所需创建的表名称。 3. **...

    SAP数据表大全ABAP数据表大全

    在SAP系统中,ABAP(Advanced Business Application Programming)是一种编程语言,用于开发和定制企业级应用程序。ABAP数据表是SAP系统的核心组成部分,它们存储了系统的业务数据和配置信息。本资料集“SAP数据表...

    abap 维护表视图

    在这个特定的话题“ABAP维护表视图”中,我们将深入探讨如何在ABAP环境中管理和操作表视图,这是一种在数据库层面与数据交互的重要方式。 表视图在数据库管理中扮演着关键角色,它们提供了对原始数据库表的抽象和...

    ABAP三种内表区别

    Database Table 是 ABAP 中的一种特殊的内表,它是通过将数据存储在数据库中来实现的。Database Table 的优点是可以存储大量数据,并且可以通过 SQL 语言来访问数据。然而,Database Table 的缺点是需要更多的编程...

    BOM按层展开在ABAP中的几个实现方法

    文件名“BOM按层展开在ABAP中的几个实现方法.pdf”很可能包含了上述方法的详细步骤、示例代码以及相关注意事项。阅读这份文档可以帮助读者深入理解如何在ABAP环境下处理和展示物料清单的层级结构,对于从事制造业...

    abap 如何找表

    在ABAP(Advanced Business Application Programming)编程中,找表是一个常见的任务,这涉及到从数据库中检索数据以满足特定的需求。本文将深入探讨18种基于屏幕字段查找潜在数据的技巧,帮助ABAP开发者更高效地...

    ABAP详细语法开发2(数据库表)

    在ABAP语言中,内表(Internal Tables)是存储数据的一种关键结构,它们允许程序员以表格形式组织数据,便于执行各种操作,如排序、搜索、更新等。内表的使用在ABAP语法开发中占据重要位置,特别是在处理大量数据或...

    ABAP动态内表的收集

    在SAP ABAP编程中,动态内表的创建是实现灵活数据处理的重要手段,尤其是在处理大量数据或涉及多个系统表的场景下。本篇将详细解释如何动态地创建和使用内表,以及在进行动态更新时需要注意的关键点。 首先,让我们...

    ABAP4数据库编程练习.doc

    ABAP4数据库编程是SAP开发环境中的一种重要技术,用于与数据库进行交互。在这个文档中,我们将探讨如何在SAP Server的Oracle数据库上创建自定义表,并通过ABAP程序进行数据查询。下面是按照文档步骤详细解释的过程:...

    Abap基础学习文档101_用逻辑数据库访问数据库表.doc

    逻辑数据库实质上是一种特殊类型的ABAP程序,它可以将多个数据库表的数据组合起来,并按照特定的层次结构组织数据。 **特点:** - **处理复杂数据结构**:逻辑数据库特别适合于处理具有外来关键字相关联的多表结构...

    abap内表使用方法

    ABAP 内表是一种非常重要的数据结构,它可以存储和处理大量的数据。在 ABAP 程序中,内表是使用 TABLE 语句或 DATA 语句定义的。ABAP 内表可以用来存储和处理大量的数据,例如从数据库中读取的数据、用户输入的数据...

    SE11 创建数据库表(建表,表维护,翻译,表维护增强) 操作手册.docx

    在SAP ABAP环境中,SE11是用于创建和维护数据库表的重要工具。这个文档将指导我们完成一系列步骤,从创建数据库表到后续的维护、翻译以及增强,以确保数据的有效管理和跟踪。以下是对这些步骤的详细解释: 一、表...

    ABAP内表创建整理

    在ABAP编程中,内表(Internal Table)是一种非常重要的数据结构,用于存储和处理大量数据。内表灵活且高效,可以适应各种复杂的数据处理需求。以下是对ABAP内表创建方法的详细说明: 1. **声明表结构并基于表结构...

Global site tag (gtag.js) - Google Analytics