Текущее время: Вс, июл 27 2025, 17:36

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 8 ] 
Автор Сообщение
 Заголовок сообщения: Обратная связь объекта и программы
СообщениеДобавлено: Чт, окт 16 2008, 15:03 
Младший специалист
Младший специалист

Зарегистрирован:
Чт, сен 25 2008, 16:04
Сообщения: 70
Необходимо, чтобы при возникновении какого-либо события в классе, программа, создавшая объект класса могла на это событие реагировать.

Так же как
Code:
SET HANDLER handler->h2 FOR handler->h3.


Но чтобы вместо handler->h2 я передавал процедуру.
Или это не возможно?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Обратная связь объекта и программы
СообщениеДобавлено: Чт, окт 16 2008, 16:06 
Гуру-модератор
Гуру-модератор
Аватара пользователя

Зарегистрирован:
Пн, окт 11 2004, 13:16
Сообщения: 1790
saynt2day написал(а):
Но чтобы вместо handler->h2 я передавал процедуру.
Или это не возможно?

Передается название процедуры.
Смотрите как реализован вызов callback-form в функциональном ALV.

_________________
/nex


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, окт 16 2008, 16:43 
Младший специалист
Младший специалист

Зарегистрирован:
Чт, сен 25 2008, 16:04
Сообщения: 70
сори за непонятливость, я только учусь.

Что значит функциональном ALV?

ALV строю с помощью
Code:
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'


либо
Code:
call method cl_salv_table=>factory


как добраться до callback-form?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, окт 17 2008, 11:34 
Младший специалист
Младший специалист

Зарегистрирован:
Чт, сен 25 2008, 16:04
Сообщения: 70
сделал класс cl_editor_events для обработки событий объекта.

Code:
class cl_editor_events definition.

  public section.
    methods:

    handle_save
        for event event_save of zcl_standard_text_editor
            IMPORTING text.

endclass.

class cl_editor_events IMPLEMENTATION.

  METHOD handle_save.
    g_long_text = text.
  ENDMETHOD.

ENDCLASS.


потом в программе
Code:
DATA: go_editor TYPE REF TO zcl_standard_text_editor,
      go_editor_events TYPE REF TO cl_editor_events
      g_long_text TYPE string.
SET HANDLER go_editor_events->handle_save FOR go_editor.


Всё отлично. При срабатывании события event_save класса zcl_standard_text_editor вызывается метод handle_save обработчика.
Но глобальная переменная g_long_text при этом не изменяется.

Это происходило из-за того, что g_long_text по совместительству являетяс элементом типа I/O на скрине. Если в методе handle_save писать текст в другую глобальную переменную, то всё сохраняется.
А у меня задача именно обновить содержимое поля типа I/O на скрине.
Как быть?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, окт 17 2008, 12:46 
Гуру-эксперт
Гуру-эксперт

Зарегистрирован:
Вт, сен 07 2004, 17:47
Сообщения: 2988
saynt2day написал(а):
сделал класс cl_editor_events для обработки событий объекта.

Code:
class cl_editor_events definition.

  public section.
    methods:

    handle_save
        for event event_save of zcl_standard_text_editor
            IMPORTING text.

endclass.

class cl_editor_events IMPLEMENTATION.

  METHOD handle_save.
    g_long_text = text.
  ENDMETHOD.

ENDCLASS.


потом в программе
Code:
DATA: go_editor TYPE REF TO zcl_standard_text_editor,
      go_editor_events TYPE REF TO cl_editor_events
      g_long_text TYPE string.
SET HANDLER go_editor_events->handle_save FOR go_editor.


Всё отлично. При срабатывании события event_save класса zcl_standard_text_editor вызывается метод handle_save обработчика.
Но глобальная переменная g_long_text при этом не изменяется.

Это происходило из-за того, что g_long_text по совместительству являетяс элементом типа I/O на скрине. Если в методе handle_save писать текст в другую глобальную переменную, то всё сохраняется.
А у меня задача именно обновить содержимое поля типа I/O на скрине.
Как быть?

CF DYNP_VALUES_UPDATE ?

_________________
"После" - не значит "вследствие"


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, окт 17 2008, 14:24 
Младший специалист
Младший специалист

Зарегистрирован:
Чт, сен 25 2008, 16:04
Сообщения: 70
к сожалению на собственноручно созданном экране ничего не обновляется (
видимо это только для 1000


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, окт 17 2008, 15:24 
Младший специалист
Младший специалист

Зарегистрирован:
Чт, сен 25 2008, 16:04
Сообщения: 70
вот решение: https://www.sdn.sap.com/irj/sdn/thread? ... ID=1948268


Цитата:
OK, I found the solution myself and I tell it here.

My problem was that: "When an object raises an event from a screen the values cannot be updated from that event because no PAI was called.'

Solution:
1.When you register the events, make appl_event 'X'.

* Register the events

event_tab_line-eventid = cl_gui_picture=>eventid_picture_click.
event_tab_line-appl_event = 'X'.
APPEND event_tab_line TO event_tab.

2.Call the dsipatch method of control framework object from the related screen's PAI. The dispatch method will raise the event from PAI and the screen will be updated.

CASE save_code.
WHEN 'BACK' OR '%EX' OR 'CANC'.
....
WHEN OTHERS.
CALL METHOD cl_gui_cfw=>dispatch.


Но не погу сообразить, что значит создать appl_event 'X'.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, окт 17 2008, 16:46 
Младший специалист
Младший специалист

Зарегистрирован:
Чт, сен 25 2008, 16:04
Сообщения: 70
с FM DYNP_VALUES_UPDATE ничего не получилось.

FM DYNP_UPDATE_FIELDS работает!


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

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


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

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


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

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