Текущее время: Сб, июл 19 2025, 14:19

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 60 ]  На страницу 1, 2, 3, 4  След.
Автор Сообщение
 Заголовок сообщения: Проваливание в объектном ALV
СообщениеДобавлено: Вт, май 15 2007, 08:08 
Менеджер
Менеджер
Аватара пользователя

Зарегистрирован:
Пн, окт 16 2006, 07:31
Сообщения: 628
Откуда: СССР
Пол: Мужской
Коллеги,
я тут обыскался уже, поэтому прошу помочь:

Как получить значения поле при даблклике на строке таблицы?

Screen 1113:
Code:
PROCESS BEFORE OUTPUT.
  MODULE STATUS_1113.

PROCESS AFTER INPUT.
  MODULE USER_COMMAND_1113.


Status для 1113:
Code:
MODULE STATUS_1113 OUTPUT.

DATA: BEGIN OF sANLZ.
INCLUDE STRUCTURE ANLZ.
DATA: END OF sANLZ.

DATA: G_CUSTOM_CONTAINER TYPE REF TO CL_GUI_CUSTOM_CONTAINER,
      SAP_GRID TYPE REF TO CL_GUI_ALV_GRID,
      GT_CAT TYPE LVC_T_FCAT,
      iANLZ LIKE sANLZ OCCURS 0,
      isANLZ LIKE LINE OF iANLZ,
      fCAT LIKE LINE OF GT_CAT.

SELECT * FROM ANLZ INTO CORRESPONDING FIELDS OF TABLE iANLZ.

CLEAR fCAT.
fCAT-FIELDNAME = 'ANLN1'.   fCAT-COLTEXT = 'Asset Number'.   fCAT-DD_OUTLEN = 15.
APPEND fCAT TO GT_CAT.

CREATE OBJECT G_CUSTOM_CONTAINER EXPORTING CONTAINER_NAME = 'MAINTAINANCE'.
CREATE OBJECT SAP_GRID EXPORTING I_PARENT = G_CUSTOM_CONTAINER.

CALL METHOD SAP_GRID->SET_TABLE_FOR_FIRST_DISPLAY
   EXPORTING
      I_STRUCTURE_NAME = 'isANLZ'
   CHANGING
      IT_OUTTAB        = iANLZ
      IT_FIELDCATALOG  = GT_CAT.

ENDMODULE.


В отладчике поле sy-usomm пустое.
Что сделать?

Спасибо.

_________________

Мы делаем простые вещи - сложными!


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, май 15 2007, 08:49 
Директор
Директор
Аватара пользователя

Зарегистрирован:
Пн, дек 20 2004, 16:05
Сообщения: 1080
Откуда: 4.0B
Пол: Мужской
Для начала зарегистрировать класс и ссылку на него:

CLASS lcl_event_reciever DEFINITION DEFERRED.
DATA: event_reciever TYPE REF TO lcl_event_reciever.

Затем в классе объявить метод при даблклике

CLASS lcl_event_reciever DEFINITION.

METHODS: handle_double_click
FOR EVENT double_click OF cl_gui_alv_grid
IMPORTING
e_row e_column sender.
endclass.

Затем описать чего он будет делать:

CLASS lcl_event_reciever IMPLEMENTATION.
METHOD handle_double_click.
" по значению e_row прочитаете табличку
ENDMETHOD.
ENDCLASS.

После создания грида создаете объект:

CREATE OBJECT event_reciever.

И регестрируете событие:
SET HANDLER event_reciever->handle_double_click FOR grid.

Вроде, все.

Вот, кстати, нашел: BCALV_TEST_GRID_EVENTS


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, май 15 2007, 09:18 
Менеджер
Менеджер
Аватара пользователя

Зарегистрирован:
Пн, окт 16 2006, 07:31
Сообщения: 628
Откуда: СССР
Пол: Мужской
Thanks! Супер! Все работает - проваливается в обработку метода!
И в e-row показывает индекс строки,
а как данные получить, т.е. содержимое полей?

_________________

Мы делаем простые вещи - сложными!


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, май 15 2007, 09:28 
Модератор
Модератор
Аватара пользователя

Зарегистрирован:
Пт, июн 16 2006, 00:43
Сообщения: 1686
Откуда: Москва <-> Красноярск
Пол: Мужской
Rednaxela написал:
И в e-row показывает индекс строки.
А как данные получить, т.е. содержимое полей?

Сам себе ответил :)


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, май 15 2007, 09:33 
Директор
Директор
Аватара пользователя

Зарегистрирован:
Пн, дек 20 2004, 16:05
Сообщения: 1080
Откуда: 4.0B
Пол: Мужской
Rednaxela написал:
Thanks! Супер! Все работает - проваливается в обработку метода!
И в e-row показывает индекс строки,
а как данные получить, т.е. содержимое полей?


Ну, типа
READ TABLE ianlz ... INDEX e_row-index.

Только стоит проверить на e_row-rowtype is initial, чтобы не попасть на суммовые строки.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, май 15 2007, 11:16 
Менеджер
Менеджер
Аватара пользователя

Зарегистрирован:
Пн, окт 16 2006, 07:31
Сообщения: 628
Откуда: СССР
Пол: Мужской
Lars написал:
Ну, типа
READ TABLE ianlz ... INDEX e_row-index.


И правда! :D
А если пересортировка в ALV будет произведена, индекс от этого не меняется что-ли?

_________________

Мы делаем простые вещи - сложными!


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, май 15 2007, 11:42 
Директор
Директор
Аватара пользователя

Зарегистрирован:
Пн, дек 20 2004, 16:05
Сообщения: 1080
Откуда: 4.0B
Пол: Мужской
меняется ... но и даблклик будет по обновленным значениям :)


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, май 15 2007, 14:50 
Менеджер
Менеджер
Аватара пользователя

Зарегистрирован:
Пн, окт 16 2006, 07:31
Сообщения: 628
Откуда: СССР
Пол: Мужской
Все получилось,
но т.к. вся эта лабуда используется в функциональном расширении,
возникают следующие выжные вопросы:

1. Можно ли вручную вызвать USER-COMMAND модуль?

2. Каким образом уследить событие или получить индекс просто помеченой (горящей) строки ALV?

_________________

Мы делаем простые вещи - сложными!


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

Зарегистрирован:
Пн, дек 20 2004, 16:05
Сообщения: 1080
Откуда: 4.0B
Пол: Мужской
Rednaxela написал:
1. Можно ли вручную вызвать USER-COMMAND модуль?


Можно CALL METHOD cl_gui_cfw=>set_new_ok_code
EXPORTING
new_code = <нужная Вам команда>.

Rednaxela написал:
2. Каким образом уследить событие или получить индекс просто помеченой (горящей) строки ALV?


CALL METHOD grid->get_selected_rows
IMPORTING
et_index_rows = ...
et_row_no = ... .


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср, май 16 2007, 07:01 
Менеджер
Менеджер
Аватара пользователя

Зарегистрирован:
Пн, окт 16 2006, 07:31
Сообщения: 628
Откуда: СССР
Пол: Мужской
Еще раз огромное спасибо!

_________________

Мы делаем простые вещи - сложными!


Последний раз редактировалось Rednaxela Ср, май 16 2007, 07:43, всего редактировалось 1 раз.

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

Зарегистрирован:
Пт, авг 04 2006, 20:56
Сообщения: 1006
Откуда: 37 МИКРОРАЙОН
Пол: Мужской
Rednaxela написал:
Еще раз огромное спасибо!

CALL METHOD grid->get_selected_rows
IMPORTING
et_index_rows = ...
et_row_no = ... .

А вот тут проблемка!
Чтобы уловить простой переход со строки на строку в ALV наверное тоже handler нужен как и для даблклика?
А иначе в какое место call method ставить?


Не совсем понятно, че значит со строки на строку? Вот так должно работать для всех строк, которые выделяешь :D
Code:
CLASS lcl_event_receiver DEFINITION.
PUBLIC SECTION.

    METHODS:
         handle_data_changed
         FOR EVENT data_changed OF cl_gui_alv_grid
         IMPORTING er_data_changed
                           e_ucomm.
   
ENDCLASS.                    "lcl_event_receiver DEFINITION

CLASS lcl_event_receiver IMPLEMENTATION.

  METHOD handle_data_changed.

DATA: ls_selected_row    TYPE lvc_s_roid ,
          lt_selected_rows   TYPE lvc_t_roid .

CALL METHOD alv_grid->get_selected_rows
      IMPORTING
        et_row_no = lt_selected_rows.

  LOOP AT lt_selected_rows INTO ls_selected_row.
..................
ENDLOOP.

ENDMETHOD.
ENDCLASS.

А вызывать get_selected_rows можешь в любом методе смотря какое событие ты хочешь возбудить :D


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср, май 16 2007, 07:50 
Менеджер
Менеджер
Аватара пользователя

Зарегистрирован:
Пн, окт 16 2006, 07:31
Сообщения: 628
Откуда: СССР
Пол: Мужской
ROKO написал:
... А вызывать get_selected_rows можешь в любом методе смотря какое событие ты хочешь возбудить :D


Да, до меня уже дошло, что этот метод возвращает параметры выделенной сроки в нужный момент, т.е. при нажатии кнопки ok, например.

_________________

Мы делаем простые вещи - сложными!


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср, май 16 2007, 08:19 
Менеджер
Менеджер
Аватара пользователя

Зарегистрирован:
Пн, окт 16 2006, 07:31
Сообщения: 628
Откуда: СССР
Пол: Мужской
Теперь надо сделать редактирование полей в АЛВ, я так понимаю нужно создать событие по дабл клику и вызвать метод редактирования поля?

И еще у меня не появляются слева кнопочки для выбора строки!

_________________

Мы делаем простые вещи - сложными!


Последний раз редактировалось Rednaxela Ср, май 16 2007, 08:34, всего редактировалось 1 раз.

Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср, май 16 2007, 08:31 
Директор
Директор
Аватара пользователя

Зарегистрирован:
Пн, дек 20 2004, 16:05
Сообщения: 1080
Откуда: 4.0B
Пол: Мужской
я советую посмотреть пакет SLIS.
думаю, найдете массу ответов на ваши вопросы :)

Ячейки можно просто открыть на редактирование без использования даблов, хотя, исходя из задачи, конечно.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср, май 16 2007, 08:58 
Менеджер
Менеджер
Аватара пользователя

Зарегистрирован:
Пн, окт 16 2006, 07:31
Сообщения: 628
Откуда: СССР
Пол: Мужской
Lars написал:
я советую посмотреть пакет SLIS.


А можно для тех кто на тепловозе, как его сомтреть, это же пакет, как увидеть его функциональность, в отличие например от abapdocu, его же нельзя запустить?

Какое свойство нужно, чтобы слева кнопочки для выбора строки появились! Уже все перебрал!

_________________

Мы делаем простые вещи - сложными!


Принять этот ответ
Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 60 ]  На страницу 1, 2, 3, 4  След.

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


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

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


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

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