Dynamic 从任何表中动态搜索

Dynamic 从任何表中动态搜索,dynamic,abap,opensql,Dynamic,Abap,Opensql,我想制作一个进行相同查询的功能模块,例如: 从表\u name中选择列\u id,其中列\u name=名称\u值 我想传递表名、列名和名称值,这样,无论是什么表,我都可以获得所提供名称的id。 您能告诉我如何使用功能模块在abap中实现这一点吗?假设您将以下参数作为输入 DATA: table_name TYPE string VALUE 'MARA', column_id TYPE string VALUE 'MATNR', column_name TYPE s

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

从表\u name中选择列\u id,其中列\u name=名称\u值

我想传递表名、列名和名称值,这样,无论是什么表,我都可以获得所提供名称的id。
您能告诉我如何使用功能模块在abap中实现这一点吗?

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

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>.

将泛型引用传回调用程序。

为什么要这样做?是否有任何理由不使用
RFC\u READ\u表
DATA: condition TYPE string.
condition = column_name && ` = name_value`.

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