2013-07-02 2 views
0

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

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

Я хочу передать имя_таблицы, имя столбца и имя_значения, поэтому независимо от того, какая таблица, я могу получить идентификатор предоставленного имени. Можете ли вы привести меня в том, как это сделать в abap, используя функциональные модули?

+2

Зачем вы хотите это сделать? Есть ли причина не использовать 'RFC_READ_TABLE'? – vwegert

ответ

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

Откажитесь от типично типизированной ссылки на вызывающую программу.

 Смежные вопросы

  • Нет связанных вопросов^_^