从abap中的任何表动态搜索

时间:2013-07-02 19:14:55

标签: function sap abap bapi function-module

我想制作一个能够进行相同查询的功能模块,例如:

从table_name中选择column_id,其中column_name = name_value。

我想传递table_name,列名和name_value,因此,无论表是什么,我都可以获取所提供名称的id。 你能否告诉我如何使用功能模块实现这一目标?

1 个答案:

答案 0 :(得分:2)

假设您将以下参数作为输入。

DATA: table_name  TYPE string VALUE 'MARA',
      column_id   TYPE string VALUE 'MATNR',
      column_name TYPE string VALUE 'MTART',
      name_value  TYPE string VALUE 'HALB'.

首先,动态创建一个您将选择的类型的表。

DATA: results TYPE REF TO data,
      tablety TYPE string.
FIELD-SYMBOLS <results> TYPE STANDARD TABLE.

tablety = table_name && '-' && column_id.
CREATE DATA results TYPE TABLE OF (tablety).
ASSIGN results->* TO <results>.

然后使用动态查询来填充表格。

DATA: condition TYPE string.
condition = column_name && ` = name_value`.

SELECT (column_id) FROM (table_name)
  INTO TABLE results
  WHERE (condition).

将一般类型的引用传回给调用程序。