FPM - WD - LPD: POWL как Listpopup, чтобы выбрать запись и затем вернуть ее - PullRequest
0 голосов
/ 13 марта 2019

Ситуация такая:

У нас есть POWL, куда я добавил кнопку toobar.

Нажатие на эту кнопку открывает FPM-POWL, который я создал с помощьюСправка по этой ссылке

https://sapcodes.com/2016/03/25/powl-in-fpm/....

(ИНФОРМАЦИЯ: Этот POWL берет свои данные из стандартного представления ФБР).

Новый FPM-POWL работает правильно (??«Я надеюсь на это, потому что он показывается), поддерживаемый внутри LPD_CUST, чтобы запустить это всплывающее окно внутри FPM-фреймворка (флаг, который он должен ждать, также устанавливается для вызывающего и вызываемого абонентов).

Хорошо, давайтепродолжить .--

Класс вызова (класс фидера "A", реализующий IF_POWL_FEEDER) вызывает POPUP следующим образом:

  DATA(lt_lpd_content) = lr_lpd_handle->mt_content.
        READ TABLE lt_lpd_content
          REFERENCE INTO DATA(lr_lpd_content)
          WITH KEY application_alias = 'ZSRM_GP/BP_POPUP'.

  lr_lpd_handle->launch_application( iv_application_id = lr_lpd_content->application_id ).

Пользователь должен просто иметь возможность выбрать одного делового партнера...

После того, как пользователь выберет запись и нажмет специальную кнопку на панели инструментов «всплывающего окна», его класс фидера «B» (также реализующий IF_POWL_FEEDER) делает то, что ему нужно делать внутри handle_action и досейчас ... пытаюсь выяснить, КАК передать запись обратно на звонокer class "A" ...

Поскольку, в отличие от ожидаемого (поскольку обе записи LPD_CUST имеют установленный флаг "Синхронизация / ожидание"), класс "A" продолжает обработку любого кода, который я помещаю после

      lr_lpd_handle->launch_application( iv_application_id = lr_lpd_content->application_id ).

Итак, я полагаю, что это «работает как задумано» и является асинхронным.

Итак, мои текущие эксперименты предположили синхронность, и я экспортировал любой выбранный номер делового партнера в идентификатор памяти и закрыл"popup".

Но я никогда не возвращался к вызывающей стороне, где я хотел начать кодировать остальную часть требования.

Итак, моя вторая попытка состоит в том, что я создал событие в фидерекласс "B" (называемый popup) и обработчик для этого внутри feedderclass "A" (вызывающая сторона).

Внутри ctor класса "A" я регистрируюсь через "SET HANDLER FOR ALL INSTANCES" ....и тесты вот-вот начнутся.

Но я действительно ненавижу этот подход ... Есть ли лучшая практика в этом отношении?

Я не могу себе представить, что я единственныйс таким требованием, которое, в простомrms, означает:

"Listpopup" ... и мы все знаем, как это просто в sapgui ... но внутри среды FPM-POWL-LPD ... Я не могу получить это ...

РЕДАКТИРОВАТЬ : Может быть, я должен сделать что-то здесь, чтобы заставить блокировать всплывающий вызов?

enter image description here

Или можетЯ как-то заполняю параметры экспорта действия дескриптора вызываемого, чтобы вернуться к вызывающему элементу handle_action?Ala POWL_FORWARD_anything?

...