После того как мы создали Search Help в статье http://fibed.net/27/ его необходимо связать с нашей программой (т.е сделаем его доступным для наших полей на экране выбора Selection Screen). Для этого есть несколько способов.
1-й привяжем непосредственно к элементу экрана, это делается прямо в коде программы. Перед привязкой изменим код программы INCLUDE zkre_hw5_dataf01.
*----------------------------------------------------------------------*
***INCLUDE ZKRE_HW5_DATAF01 .
*----------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& Form DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM data .
REFRESH it_ran_quant.
wa_ran_quant-sign = 'I'.
wa_ran_quant-option = 'EQ'.
wa_ran_quant-low = '555'.
wa_ran_quant-high = ''.
APPEND wa_ran_quant TO it_ran_quant.
IF p_s2 EQ 'X'.
CALL FUNCTION 'ZKRE_FM4'
EXPORTING
ir_quant = it_ran_quant
IMPORTING
er_products = gt_products.
ELSEIF p_s1 EQ 'X'.
SELECT zkre_products~id supply_id name purchase_cost sale_cost quantity description supply_date
INTO CORRESPONDING FIELDS OF TABLE gt_products
FROM ( ( zkre_products INNER JOIN zkre_productst ON zkre_productst~prod_id = zkre_products~id )
INNER JOIN zkre_supply ON zkre_supply~id = zkre_products~supply_id )
WHERE zkre_products~name EQ p_name or zkre_products~id eq p_id .
ENDIF.
LOOP AT gt_products INTO gs_products.
amount = amount + 1.
ENDLOOP.
ENDFORM. " DATA
Выборка теперь будет происходить используя фильтрацию либо по NAME либо по ID.
Добавим в код MATCHCODE OBJECT zkre_sh_hw5 тем самым привязав к экрану выбора наше средство поиска.
SELECTION-SCREEN BEGIN OF BLOCK bl1 WITH FRAME TITLE text-001.
PARAMETERS: p_id TYPE zkre_products-id MATCHCODE OBJECT zkre_sh_hw5.
PARAMETERS: p_name TYPE zkre_products-name MODIF ID m1.
SELECT-OPTIONS: p_quant FOR gs_products-quantity.
SELECT-OPTIONS: p_desc FOR gs_products-description NO INTERVALS.
PARAMETERS: p_s1 RADIOBUTTON GROUP uc1,
p_s2 RADIOBUTTON GROUP uc1.
SELECTION-SCREEN END OF BLOCK bl1.
Сохраним активируем программу и запустим на выполнение.
В поле ID появилось СП - Search Help.
Нажав F4 появился список значений.
Нажимаем выполнить и получаем такой результат.
Теперь приявяжем наше СП к таблице и структуре.
Удалим строку MATCHCODE OBJECT zkre_sh_hw5.
SELECTION-SCREEN BEGIN OF BLOCK bl1 WITH FRAME TITLE text-001.
PARAMETERS: p_id TYPE zkre_products-id. "MATCHCODE OBJECT zkre_sh_hw5.
PARAMETERS: p_name TYPE zkre_products-name MODIF ID m1.
SELECT-OPTIONS: p_quant FOR gs_products-quantity.
SELECT-OPTIONS: p_desc FOR gs_products-description NO INTERVALS.
PARAMETERS: p_s1 RADIOBUTTON GROUP uc1,
p_s2 RADIOBUTTON GROUP uc1.
SELECTION-SCREEN END OF BLOCK bl1.
Зайдем в режим редактирования таблицы продуктов.
Отмечаем поле NAME и нажимаем кнопку Search Help.
Выскочило окошко где необходимо ввести имя Search Help.
Выскочило второе информационное окошко.
Сохраняем активируем, могут появиться предупреждения мы их игнорируем.
Перейдем на вкладку Entry help/check.
Запустив программу на выполнение видим что у двух полей появился поиск. При выборе одного поля второе заполняется автоматически.
У поля описание пока поиска нету так как экран выбора ссылается на структуру а не на таблицу. Зайдем в режим редактирования структуры ZKRE_S_PRODUCTS. Перейдем на вкладку Entry help/check.
И по аналогии с таблицей добавим наше средство поиска.
Сохраняем активируем. Запустим на выполнение программу.
Продолжим выполнение программы. Результата не получим так как в выборе данных описание не учавствует. Вот таким образом в SAP можно реализовать средство поиска и связать его с программой. В следующей статье - http://fibed.net/T/ я покажу как в САП можно реализовать проверку полномочий.
Комментарии