Вызов функционального модуля справки по поиску для поля на экране - PullRequest
0 голосов
/ 28 декабря 2018

Можно ли вызвать функцию MAT1_F4_HELP_EXIT в модуле PBO экрана, чтобы вызвать справку по поиску для поля материала на пользовательском экране (назначение справки по поиску с помощью se11 и выход справки по поиску не работает).

Я не совсем понимаю, какие параметры передаются в функции.

Редактировать (взято из обсуждения)

У меня есть поле с именем материал, и я хочу вызвать справку по поиску (MAT1).Я назначил ему поле таблицы, и оно не позволяет пользователю делать это автоматически.Итак, я хочу назвать это явно.

screenshot of the field properties in the screen painter

1 Ответ

0 голосов
/ 28 декабря 2018

Я воспроизвел проблему (см. Минимальный код и экран внизу).

Шаги для воспроизведения:

  • запустите программу (-> отображается ALV)
  • дважды щелкните по одной строке ALV (-> отображается экран 0100)
  • нажмите F4 в поле экрана, определенном с помощью поиска (-> всплывающее окно 'ненормальная ситуация' вместо помощи поиска! )

Причина: статус активного графического интерфейса переназначает функциональную клавишу F4 классическим поведением функциональной клавиши вместо вызова справочной системы поиска и , как вы не делали 'Чтобы установить статус графического интерфейса на вашем экране, снова используется тот, что был на предыдущем экране.

Решение: определите свой собственный статус графического интерфейса и установите его в PBO экрана (и неКонечно, не переопределяйте F4!)

Правило большого пальца: всегда определяйте свои собственные кнопки и меню для каждого экрана (зачем отображать кнопки и меню с других экранов, которые не имеют смысла).

Минимальный код:

REPORT.
SELECT * FROM sflight INTO TABLE @DATA(flights).
" does a CALL SCREEN which does SET PF-STATUS 'STANDARD_FULLSCREEN' (in program SAPLKKBL)
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
  EXPORTING
    i_callback_program      = sy-repid
    i_callback_user_command = 'USER_COMMAND'
    i_structure_name        = 'SFLIGHT'
  TABLES
    t_outtab                = flights
  EXCEPTIONS
    OTHERS                  = 2.
FORM user_command
      USING
        r_ucomm     LIKE sy-ucomm
        rs_selfield TYPE slis_selfield.
  IF r_ucomm = '&IC1'.
    CALL SCREEN 100.
  ENDIF.
ENDFORM.
MODULE pbo OUTPUT.
  " missing part !! ==> create GUI status 0100 and do SET PF-STATUS '0100'
ENDMODULE.
MODULE pai INPUT.
  CASE sy-ucomm.
    WHEN '&F03'.
      SET SCREEN 0.
    WHEN '&F4'.
      " corresponds to F4 key inherited from ALV GUI status 'STANDARD_FULLSCREEN'
      MESSAGE 'abnormal situation -> define your own GUI status !' TYPE 'I'.
  ENDCASE.
ENDMODULE.

Экран 0100:

  • Любое поле с помощью поиска (такое же, как и у вас)

Логика потока экрана 0100:

PROCESS BEFORE OUTPUT.
  MODULE pbo.
PROCESS AFTER INPUT.
  MODULE pai.
...