Текущее время: Вс, июл 20 2025, 08:04

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


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

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


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

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