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

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


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

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


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

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