Текущее время: Пт, июл 18 2025, 19:24

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 10 ] 
Автор Сообщение
 Заголовок сообщения: ALV: BEFORE_LINE_OUTPUT
СообщениеДобавлено: Чт, июн 02 2005, 12:41 
Специалист
Специалист

Зарегистрирован:
Пн, окт 18 2004, 11:25
Сообщения: 183
Откуда: Moscow
почему в REUSE_ALV_* может не отрабатывать событие BEFORE_LINE_OUTPUT ?

объявлено так:
form before_line_output
changing
rs_lineinfo type slis_lineinfo.

может флажок какой еще нужен ?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, июн 02 2005, 12:59 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Ср, май 04 2005, 16:29
Сообщения: 687
Откуда: Нижневартовск->Москва
Пол: Мужской
Смотри BCALV_TEST_FULLSCREEN_EVENTS

Надо сопоставлять событие подпрограмме
it_events


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, июн 02 2005, 16:17 
Специалист
Специалист

Зарегистрирован:
Пн, окт 18 2004, 11:25
Сообщения: 183
Откуда: Moscow
так оно сопоставлено -


form after_line_output
using
rs_lineinfo type slis_lineinfo.

endform.


clear it_events.
ls_event-name = slis_ev_after_line_output.
ls_event-form = 'AFTER_LINE_OUTPUT'.
append ls_event to it_events.

call function 'REUSE_ALV_GRID_DISPLAY'
exporting
* I_INTERFACE_CHECK = ' '
* I_BYPASSING_BUFFER =
* I_BUFFER_ACTIVE = ' '
i_callback_program = repid
i_callback_pf_status_set = 'ALV_PF_STATUS'
i_callback_user_command = 'ALV_USER_COMMAND'
* I_CALLBACK_TOP_OF_PAGE = ' '
* I_CALLBACK_HTML_TOP_OF_PAGE = ' '
* I_CALLBACK_HTML_END_OF_LIST = ' '
* i_structure_name = c_tab_struct_name
* I_BACKGROUND_ID = ' '
* I_GRID_TITLE =
* I_GRID_SETTINGS =
is_layout = is_layout
it_fieldcat = i_fieldcat[]
* IT_EXCLUDING =
* IT_SPECIAL_GROUPS =
it_sort = t_sortinfo[]
* IT_FILTER =
* IS_SEL_HIDE =
* I_DEFAULT = 'X'
i_save = 'X'
* IS_VARIANT =
it_events = it_events[]


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, июн 02 2005, 16:26 
Специалист
Специалист

Зарегистрирован:
Пн, окт 18 2004, 11:25
Сообщения: 183
Откуда: Moscow
причем, событие data_changed работает, а after_line_output - нет


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, июн 03 2005, 07:46 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Чт, сен 09 2004, 07:32
Сообщения: 777
Откуда: Москва
Пол: Мужской
Я почему-то думал, что данное событие и не будет отрабатывать в ФМ REUSE_ALV_GRID_DISPLAY :roll:
Просто, если посмотреть на внедрение класса LCL_EVENT_RECEIVER в ГрФункций SLVC_FULLSCREEN, то там нет обработки этого события (по крайней мере, у нас в 4.6С).
Да и у класса CL_GUI_ALV_GRID нет похожего события.
Ставлю на то, что событие будет работать в REUSE_ALV_LIST_DISPLAY :wink:

_________________
"Прежде чем сделать что-то, подумай, к чему это может привести..."


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, июн 03 2005, 08:08 
Специалист
Специалист

Зарегистрирован:
Пн, окт 18 2004, 11:25
Сообщения: 183
Откуда: Moscow
thanx !
я что-то подобное и предполагал,
теперь будем знать ;))


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, июн 03 2005, 15:34 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Ср, май 04 2005, 16:29
Сообщения: 687
Откуда: Нижневартовск->Москва
Пол: Мужской
В качестве прикола-разминки:

Code:
FORM f01_alv_event_top_of_page.

  FIELD-SYMBOLS: <CB>.

  DATA: CALLSTACK TYPE SYS_CALLST.

  CALL FUNCTION 'SYSTEM_CALLSTACK'
    IMPORTING
      ET_CALLSTACK       = CALLSTACK
            .

  READ TABLE CALLSTACK WITH KEY EVENTNAME = ' K_KKB_LIST_DISPLAY'
       TRANSPORTING NO FIELDS.

  CHECK SY-SUBRC = 0.

  ASSIGN ('(SAPLKKBL)GT_STACK2-I_CALLBACK_AFTER_LINE_OUTPUT') TO <CB>.
  IF SY-SUBRC = 0.
    <CB> = 'CBLO'.
    ASSIGN ('(SAPLKKBL)I_CALLBACK_AFTER_LINE_OUTPUT') to <CB>.
    if sy-subrc = 0.
      <CB> = 'CBLO'.
    endif.
  ENDIF.

ENDFORM.

FORM cblo using rs_lineinfo type slis_lineinfo.
  ...
ENDFORM.


Если в TOP_OF_PAGE от REUSE_ALV_GRID_DISPLAY поместить это, то получишь отработку AFTER_LINE_OUTPUT :) Разумеется, при выводе в листинг..

Размер имени подпрограммы для AFTER_LINE_OUTPUT по техническим причинам не может превышать 4-х знаков...

Тем же манером можно и BEFORE_LINE_OUTPUT


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

Зарегистрирован:
Пт, окт 07 2005, 13:38
Сообщения: 79
Откуда: ECC 6.0
Пол: Мужской
Подниму тему...

В REUSE_ALV_BLOCK_LIST_HS_APPEND событие AFTER_LINE_OUTPUT не обрабатывается никак :-( :-( :-( :mad:
Хотя BERORE_LINE_OUTPUT обрабатывается на ура... и REUSE_ALV_EVENTS_GET для этого типа списка ясно показывает что AFTER_LINE_OUTPUT он держит...

Никто не сталкивался? И как-нибудь все же можно определить событие? Вышеприведенный код не работает...


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, окт 20 2005, 09:09 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Ср, май 04 2005, 16:29
Сообщения: 687
Откуда: Нижневартовск->Москва
Пол: Мужской
Смотрю на REUSE_ALV_BLOCK_LIST_HS_APPEND и вижу, что относительно событий его задача заключается в заполнении и добавлении строки к GT_STACK. Переданные события обрабатываются REUSE_ALV_EVENTS_TRANSFER. В se37 передаю в REUSE_ALV_EVENTS_TRANSFER строку
Code:
NAME                           FORM                         
AFTER_LINE_OUTPUT              formname                           


на выходе E_FORM_AFTER_LINE_OUTPUT = formname

То есть, если говорить про REUSE_ALV_BLOCK_LIST_HS_APPEND, то он работает нормально..

Тут дело в другом..


Последний раз редактировалось T Чт, окт 20 2005, 09:22, всего редактировалось 1 раз.

Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, окт 20 2005, 09:18 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Ср, май 04 2005, 16:29
Сообщения: 687
Откуда: Нижневартовск->Москва
Пол: Мужской
Возможно поможет тот способ, что был выше, но если ты заменишь
' K_KKB_LIST_DISPLAY' на ' K_KKB_HIER_SEQU_LIST_DISPLAY', либо будешь проверять, что в стеке вызовов есть кто-то любой из них.

В любом случае стоит посмотреть на стек вызовов, когда находишься в событии BEFORE_... и выяснить, какой модуль тебя вызвал.


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

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


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

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


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

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