Текущее время: Вт, мар 19 2024, 12:03

Часовой пояс: UTC + 3 часа


Правила форума


ВНИМАНИЕ!

Вопросы по SAP Query и Quick View - сюда



Начать новую тему Ответить на тему  [ Сообщений: 10 ] 
Автор Сообщение
 Заголовок сообщения: Модальное окно с возможностью выбора из таблицы значений
СообщениеДобавлено: Вт, май 30 2017, 10:49 
Специалист
Специалист

Зарегистрирован:
Ср, окт 07 2015, 12:36
Сообщения: 124
Коллеги, добрый день.

Возникла необходимость выводить модальное окно в процессе работы программы с возможностью выбора значения из неё (например по двойному клику).
Т.е., по сути, аналог ФМ F4IF_INT_TABLE_VALUE_REQUEST с той лишь разницей, что данный ФМ возвращает значение в привязанное к нему поле экрана, а модальное окно должно будет возвращать это значение непосредственно в виде переменной. Нашёл один из вариантов реализации такого окна с помощью класса:

Code:
CLASS my_cl_salv_pop_up DEFINITION .

  PUBLIC SECTION .

    CLASS-DATA: BEGIN OF st_double_click .
    CLASS-DATA: row     TYPE salv_de_row ,
                column  TYPE salv_de_column .
    CLASS-DATA: END OF st_double_click .

    CLASS-METHODS: popup
             IMPORTING
                start_line   TYPE i DEFAULT 2
                end_line     TYPE i DEFAULT 15
                start_column TYPE i DEFAULT 25
                end_column   TYPE i DEFAULT 150
                popup        TYPE boolean DEFAULT ' '
                value(t_table) TYPE table .

    CLASS-METHODS: double_click FOR EVENT double_click OF cl_salv_events_table
                IMPORTING row column.

ENDCLASS.                    "my_cl_salv_pop_up DEFINITION
*----------------------------------------------------------------------*
*----------------------------------------------------------------------*
CLASS my_cl_salv_pop_up IMPLEMENTATION .

  METHOD popup .

    DATA: ob_salv_table TYPE REF TO cl_salv_table.

    TRY.
        cl_salv_table=>factory(
          IMPORTING
            r_salv_table = ob_salv_table
          CHANGING
            t_table      = t_table ).

      CATCH cx_salv_msg.
    ENDTRY.

    CHECK ob_salv_table IS BOUND.

    ob_salv_table->set_screen_popup(
      start_column = start_column
      end_column   = end_column
      start_line   = start_line
      end_line     = end_line ).

    DATA: ob_salv_events    TYPE REF TO cl_salv_events_table.

    ob_salv_events = ob_salv_table->get_event( ).

    SET HANDLER double_click FOR ob_salv_events .

    ob_salv_table->display( ) .

  ENDMETHOD .                    "popup
*----------------------------------------------------------------------*
  METHOD double_click .

    st_double_click-row    = row .
    st_double_click-column = column .

  ENDMETHOD .                    "raise_double_click
*----------------------------------------------------------------------*

ENDCLASS.                    "my_cl_salv_pop_up IMPLEMENTATION


Собственно, вызов данного окна должен выглядеть как то так: my_cl_salv_pop_up=>popup( EXPORTING t_table = *таблица на вывод* ) .
Но, когда пробую использовать всю эту конструкцию в программе, ловлю эксепшн: Move_cast_error. Я так понимаю, ему что то не нравится с приведением типов, но я уже пробовал разные виды таблиц - одна и та же проблема (и, поидее, такое объявление: value(t_table) TYPE table ведь должно с любой таблицей работать? ).

В моем случае вызов выглядит так:

my_cl_salv_pop_up=>popup( EXPORTING t_table = lt_t012bnk ) .
где lt_t012bnk TYPE TABLE OF t012k-bankn, а bankn - это char18.
На момент вызова таблица содержит значения (на скрине - r_data) и, по сути, является банальным списком из одного столбца.
Что там идёт не так - не могу разобраться(

Буду благодарен, если кто-нибудь подскажет альтернативный способ вывода такой модалки (желательно без рисования доп. экранов) или поможет разобраться с этим.

На всякий случай, вот как выглядит эксепшн:

Изображение


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Модальное окно с возможностью выбора из таблицы значений  Тема решена
СообщениеДобавлено: Вт, май 30 2017, 11:13 
Специалист
Специалист

Зарегистрирован:
Пт, июл 27 2007, 13:06
Сообщения: 137
Надо таблицу объявить по-другому и все заработает:
Code:
types:begin of line_type,
           field type mytype,
         end of line_type.
data lt type table of line_type.


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Модальное окно с возможностью выбора из таблицы значений
СообщениеДобавлено: Вт, май 30 2017, 11:14 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Пн, мар 28 2005, 15:38
Сообщения: 1246
1) что мешает вызвать F4IF_INT_TABLE_VALUE_REQUEST и потом читать его возврат?
2) по эксепшену - покажите стек в момент падения дампа. Такое впечатление, что вы некорректного типа t_table передаете в метод создания алв. Какой тип у этой переменной?

_________________
Там, где я рос, единственным развлечением было запоминать число «π».(С) Н. Стивенсон


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Модальное окно с возможностью выбора из таблицы значений
СообщениеДобавлено: Вт, май 30 2017, 11:43 
Специалист
Специалист

Зарегистрирован:
Ср, окт 07 2015, 12:36
Сообщения: 124
Sam Stone написал(а):
Надо таблицу объявить по-другому и все заработает:
Code:
types:begin of line_type,
           field type mytype,
         end of line_type.
data lt type table of line_type.


Да, так заработало, спасибо! Правда, честно говоря, всё равно не понял, почему. Тип таблицы ведь в итоге всё равно такой же?


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Модальное окно с возможностью выбора из таблицы значений
СообщениеДобавлено: Вт, май 30 2017, 11:52 
Специалист
Специалист

Зарегистрирован:
Пт, июл 27 2007, 13:06
Сообщения: 137
boreich написал(а):
Sam Stone написал(а):
Надо таблицу объявить по-другому и все заработает:
Code:
types:begin of line_type,
           field type mytype,
         end of line_type.
data lt type table of line_type.


Да, так заработало, спасибо! Правда, честно говоря, всё равно не понял, почему. Тип таблицы ведь в итоге всё равно такой же?


Нет. В первом случае будет таблица со столбцом table_line. Возможно это не нравится cl_abap_typedescr, но это надо в дебаге смотреть.


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Модальное окно с возможностью выбора из таблицы значений
СообщениеДобавлено: Вт, май 30 2017, 12:39 
Специалист
Специалист

Зарегистрирован:
Ср, окт 07 2015, 12:36
Сообщения: 124
Sam Stone написал(а):
Нет. В первом случае будет таблица со столбцом table_line. Возможно это не нравится cl_abap_typedescr, но это надо в дебаге смотреть.


Да, теперь увидел. Мда.. очень неоднозначный этот абап. А вот ещё вопросик появился (это уже чисто косметический) - как надо изменить класс(листинг из 1-го поста), чтобы кнопка со скрина ниже не отображалась или была неактивной? Т.к. строки таблицы сделал хотспотами, эта кнопка только мешает теперь:
Изображение


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Модальное окно с возможностью выбора из таблицы значений
СообщениеДобавлено: Вт, май 30 2017, 13:13 
Менеджер
Менеджер
Аватара пользователя

Зарегистрирован:
Чт, мар 09 2006, 10:12
Сообщения: 565
Откуда: Волгодонск
Пол: Мужской
F4IF_INT_TABLE_VALUE_REQUEST возвращает результат в RETURN_TAB

_________________
Изображение Попытка не пытка


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Модальное окно с возможностью выбора из таблицы значений
СообщениеДобавлено: Вт, май 30 2017, 17:06 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Чт, окт 06 2005, 16:44
Сообщения: 3074
Откуда: Москва
ФМ POPUP_GET_VALUES, в нем указать поле со ссылкой на СП.

_________________
С уважением,
Удав.


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Модальное окно с возможностью выбора из таблицы значений
СообщениеДобавлено: Вт, май 30 2017, 17:12 
Специалист
Специалист

Зарегистрирован:
Ср, окт 07 2015, 12:36
Сообщения: 124
Всем спасибо за помощь.
В итоге остановился на варианте от Sam Stone, с кнопкой внизу, правда, так и не разобрался, но не критично - приравнял ее функционал к нажатию "крестика".
Вот что получилось:

Изображение

Думаю, тема исчерпана.


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Модальное окно с возможностью выбора из таблицы значений
СообщениеДобавлено: Ср, май 31 2017, 10:58 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Чт, дек 20 2007, 18:21
Сообщения: 1613
Где то в демо примерах по динпро такое точно было...

_________________
я твой сап эфай внедрял
BAdI-позитив
Взять немножечко абопу, сунь туда кошачью *опу, RFC лапки, БТ старой бабки, на медленном базиснике переносить, тестовое окружение материть, снимать SAT пенку, биться головой о стенку, охапка тайм-шитов, отчет готов!


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 10 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB