Текущее время: Пт, апр 19 2024, 15:46

Часовой пояс: 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 часа


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

Сейчас этот форум просматривают: Google [Bot]


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

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