Создаю элементарный Search help через Search help exit.
Экран ввода параметров: parameter / imp /exp / lpos / spos /data element mtart 1 1 mtart maktg 2 2 maktg spras 3 3 spras matnr + + 4 4 matnr
На экране ввода параметров перед запуском search help не работает F4 для параметров MATNR, MTART,а для SPRAS работает).
если делаю например вот так, то для matnr тоже начинает работать F4: parameter / imp /exp / lpos / spos /data element matnr + + 1 1 matnr mtart 2 2 mtart maktg + 3 3 maktg spras 4 4 spras
Код Search help exit:
FUNCTION ZF4IF_SHLP_EXIT_EXAMPLE. *"---------------------------------------------------------------------- *"*"Local Interface: *" TABLES *" SHLP_TAB TYPE SHLP_DESCT *" RECORD_TAB STRUCTURE SEAHLPRES *" CHANGING *" VALUE(SHLP) TYPE SHLP_DESCR *" VALUE(CALLCONTROL) LIKE DDSHF4CTRL STRUCTURE DDSHF4CTRL *"---------------------------------------------------------------------- TYPES: BEGIN OF t_rec, mtart TYPE mtart, maktg TYPE maktg, spras TYPE spras, matnr TYPE matnr, END OF t_rec.
DATA: lt_rec TYPE STANDARD TABLE OF t_rec, ls_rec TYPE t_rec, ls_sel TYPE ddshselopt, ls_record TYPE seahlpres.
RANGES: r_mtart FOR mara-mtart, r_maktg FOR makt-maktg, r_spras FOR makt-spras, r_matnr FOR mara-matnr.
IF callcontrol-step = 'SELECT'.
LOOP AT shlp-selopt INTO ls_sel. CASE ls_sel-shlpfield. WHEN 'MTART'. CLEAR r_mtart. MOVE: ls_sel-sign TO r_mtart-sign, ls_sel-option TO r_mtart-option, ls_sel-low TO r_mtart-low, ls_sel-high TO r_mtart-high. COLLECT r_mtart. WHEN 'MAKTG'. CLEAR r_maktg. MOVE: ls_sel-sign TO r_maktg-sign, ls_sel-option TO r_maktg-option, ls_sel-low TO r_maktg-low, ls_sel-high TO r_maktg-high. COLLECT r_maktg. WHEN 'SPRAS'. CLEAR r_spras. MOVE: ls_sel-sign TO r_spras-sign, ls_sel-option TO r_spras-option, ls_sel-low TO r_spras-low, ls_sel-high TO r_spras-high. COLLECT r_spras. WHEN 'MATNR'. CLEAR r_matnr. MOVE: ls_sel-sign TO r_matnr-sign, ls_sel-option TO r_matnr-option, ls_sel-low TO r_matnr-low, ls_sel-high TO r_matnr-high. COLLECT r_matnr. ENDCASE. ENDLOOP.
SELECT mtart maktg spras matnr FROM M_MAT1T INTO TABLE lt_rec WHERE mtart IN r_mtart AND maktg IN r_maktg AND spras IN r_spras AND matnr IN r_matnr.
CHECK lt_rec IS NOT INITIAL.
REFRESH: record_tab.
LOOP AT lt_rec INTO ls_rec. ls_record = ls_rec. APPEND ls_record TO record_tab. ENDLOOP.
callcontrol-step = 'DISP'.
ENDIF.
ENDFUNCTION.
Не могу понять отчего зависит, и как сделать так чтоб сработал F4 для MTART, и выбирал значения из домена MTART из пров таблицы T134.
|
|