Средство поиска ABAP в ALV таблице
При необходимости принудительного вызова средства поиска ABAP в ALV таблице, например, при нажатии кнопки или по какому-либо событию используется Функциональный модуль F4IF_FIELD_VALUE_REQUEST. Вызов этого ФМ позволяет создать диалог с пользователем SAP. В нужный момент вызывается средство поиска ABAP и обработать ответ пользователя. Анализируя, была ли выбрана пользователем запись и если выбрана, то какая именно.
F4IF_FIELD_VALUE_REQUEST
Подробнее рассмотрим вызов этого функционального модуля и его возможности. Для примера я выбрал принудительный вызов средства поиска для поля KUNNR — дебитора. С помощью данного ФМ мы будем вызывать пользовательское средство поиска «ZSD_KUNNR». ФМ получает на вход следующие параметры:
- tabname — имя таблицы либо ракурс справки, как в нашем случае. Из этого ракурса или таблицы будут извлекаться доступные значения для выбора.
- fieldname — имя поля таблицы tabname, в котором хранится поле.
- searchhelp — средство поиска для принудительного вызова.
- multiple_choice — поле отвечает за возможность множественного выбора значений.
Так же другие параметры влияющие на вызов данного средство поиска можно посмотреть перейдя в параметры.
Итоговый код программы ABAP выглядит следующим образом:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
DATA: ls_kunnr TYPE ts_kunnr, lt_kunnr_ret TYPE STANDARD TABLE OF ddshretval, lr_kunnr TYPE REF TO ddshretval. CASE e_ucomm. WHEN 'CREATE'. CALL FUNCTION 'F4IF_FIELD_VALUE_REQUEST' EXPORTING tabname = 'ZSD_KUNNR_RS' fieldname = 'KUNNR' searchhelp = 'ZSD_KUNNR' multiple_choice = abap_true TABLES return_tab = lt_kunnr_ret EXCEPTIONS OTHERS = 5. LOOP AT lt_kunnr_ret REFERENCE INTO lr_kunnr_ret. READ TABLE mt_kunnr TRANSPORTING NO FIELDS WITH KEY kunnr = lr_kunnr_ret->fieldval. IF sy-subrc = 0. CONTINUE. ENDIF. ls_kunnr-kunnr = lr_kunnr->fieldval. ls_kunnr-updkz = 'I'. APPEND ls_kunnr TO mt_kunnr. ENDLOOP. WHEN OTHERS. RETURN. ENDCASE. mcl_alv->refresh( ). |
По итогу получаем таблицу результатов выбора пользователем, в которой в столбце fieldval хранятся значения выбранные пользователем. Теперь, если используется данную функцию при добавлении полей в таблицу ALV, то можно пройти по таблице, переместить нужные записи, например, проверив на наличие их в целевой таблице. После чего заполнить, в случае необходимости дополнительные поля. После чего обновить ALV.
Как используется ФМ F4IF_FIELD_VALUE_REQUEST в реальных задачах?
- По нажатию кнопки в панели ALV таблицы мы принудительно вызываем средство поиска ABAP и в нём выбираем, например, нужный код завода. После выбора этого кода мы, например, определённым образом производим начальное заполнение строки или другой вариант.