Я хочу создать функциональный модуль, который будет выполнять такой же запрос, например:

Выберите column_id из table_name, где column_name = name_value.

Я хочу передать table_name, имя столбца и name_value, поэтому независимо от того, какая таблица, я могу получить идентификатор предоставленного имени. Не могли бы вы рассказать, как это сделать в abap с помощью функциональных модулей?

0
Sterling Diaz 2 Июл 2013 в 23:14
2
Почему ты хочешь сделать это? Есть ли причина не использовать RFC_READ_TABLE?
 – 
vwegert
2 Июл 2013 в 23:42

1 ответ

Лучший ответ

Допустим, вы взяли на вход следующие параметры.

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

Передайте обратно типизированную ссылку вызывающей программе.

2
Eric 3 Июл 2013 в 00:03