Пытаюсь разобраться с пользовательскими средствами поиска...
Создал копию F4IF_SHLP_EXIT_EXAMPLE.
Все равно не могу понять.
Нужно на входе ср-во поиска чтобы было AUFK-BUKRS AUFK-AUFNR AUFK-AUART AUFK-KTEXT ANLA-ANLN1
На выходе AUFK-AUFNR, AUFK-KTEXT, ANLA-TYPBZ.
Связь таблиц AUFK-BUKRS = ANLA-BUKRS и AUFK-AUFEX(12) = ANLA-ANLN1
В польз. ср-ве поиска я допустим выбрал в итоге все anln1, которые могут быть нужны
Code:
TABLES : aufk, anla.
data lt_aufk type TABLE OF aufk WITH HEADER LINE.
data lt_anla type TABLE OF anla WITH HEADER LINE.
data : BEGIN OF lt_anln1 OCCURS 0,
anln1 type anln1,
end of lt_anln1.
FIELD-SYMBOLS : <ls_aufk> like LINE OF lt_aufk,
<ls_anla> like LINE OF lt_anla.
IF CALLCONTROL-STEP = 'PRESEL1'.
SELECT DISTINCT * FROM aufk into TABLE lt_aufk.
DELETE lt_aufk WHERE aufex = ''.
LOOP AT lt_aufk ASSIGNING <ls_aufk>.
lt_anln1 = <ls_aufk>-aufex(12).
APPEND lt_anln1.
ENDLOOP.
SELECT DISTINCT * FROM anla INTO TABLE lt_anla
FOR ALL ENTRIES IN lt_anln1
WHERE
anla~anln1 = lt_anln1-anln1.
Loop at lt_anla ASSIGNING <ls_anla>.
SELOPT-SHLPNAME = 'ZORDER'.
SELOPT-SHLPFIELD = 'ANLN1'.
SELOPT-SIGN = 'I'.
SELOPT-OPTION = 'EQ'.
SELOPT-HIGH = ''.
SELOPT-LOW = <ls_anla>-anln1.
APPEND SELOPT TO SHLP-SELOPT.
ENDLOOP.
ENDIF.
В итоге при запуске ср-ва поиска у меня выскакивают в поле ANLN1 необходимые для анализа значения.
Но дальше как? Надо же писать из каких таблиц искать данные?
Пишу метод выбора ракурс там две эти таблицы и там свзять можно только такую написать AUFK-BUKRS = ANLA-BUKRS
В итоге (если больше ничего на вход ср-ва поиска не подавать), выдает список ANLA-TYPBZ ANLA-ANLN1 (ограничивающихся моим польз.ср-ом) и к нему произвольные
AUFK-AUFNR, AUFK-KTEXT, так как условие в ракурсе только AUFK-BUKRS = ANLA-BUKRS .
Что то я не так точно делаю?
