Текущее время: Пн, июл 21 2025, 00:37

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 9 ] 
Автор Сообщение
 Заголовок сообщения: Формула в ячейке ALV_GRID
СообщениеДобавлено: Ср, дек 09 2009, 10:40 
Старший специалист
Старший специалист

Зарегистрирован:
Пт, авг 24 2007, 11:29
Сообщения: 350
Здравствуйте коллеги.

Возникла срочная необходимость возможности в ALV GRID(класс CL_GUI_ALV_GRID) вводить формулу в ячейку как в EXCEL.
Соответственно в ячейку ввести формулу, а в БД сохранять значение возвращаемое по формуле.

Подскажите, пожалуйста, можно ли это сделать стандартными возможностями вышеописанного класса?
Если кто-нибудь это уже делал, поделитесь опытом плиз.

Заранее спасибо.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Формула в ячейке ALV_GRID
СообщениеДобавлено: Ср, дек 09 2009, 13:22 
Старший специалист
Старший специалист

Зарегистрирован:
Пн, авг 28 2006, 11:24
Сообщения: 292
Пол: Мужской
Можно отловить событие DATA_CHANGED и заменить введенный текст на рассчитанный.
Можно обойтись и программой преобразования, привязанной к полю.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Формула в ячейке ALV_GRID
СообщениеДобавлено: Ср, дек 09 2009, 13:42 
Гуру-эксперт
Гуру-эксперт
Аватара пользователя

Зарегистрирован:
Чт, ноя 11 2004, 16:25
Сообщения: 3109
Пол: Мужской
Добавлю.
например вводите в поле Z - ( X * Y ) + X.
z, x, y - это наши колонки.
потом как писал Rokhay отлавливаете событие(например по нажатию энтер можно сделать),
затем высчитываете этим кодом...
Думаю что программой преобразования не обойтись. Если только скидывать значения ячеек в мемори.
Минус в этом, то что полученная цифра будет формата чар.
Code:
WHILE sy-subrc = 0.
          REPLACE 'Z' WITH НАШЕ ЗНАЧЕНИЕ INTO formula.
ENDWHILE.
WHILE sy-subrc = 0.
          REPLACE 'X' WITH НАШЕ ЗНАЧЕНИЕ INTO formula.
ENDWHILE.

WHILE sy-subrc = 0.
          REPLACE 'Y' WITH НАШЕ ЗНАЧЕНИЕ INTO formula.
ENDWHILE.

  CALL FUNCTION 'EVAL_FORMULA'
  EXPORTING
    formula                 = formula
  IMPORTING
    value                   = gv_value
  EXCEPTIONS
    division_by_zero        = 1
    exp_error               = 2
    formula_table_not_valid = 3
    invalid_expression      = 4
    invalid_value           = 5
    log_error               = 6
    parameter_error         = 7
    sqrt_error              = 8
    units_not_valid         = 9
    missing_parameter       = 10
    OTHERS                  = 11.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Формула в ячейке ALV_GRID
СообщениеДобавлено: Ср, дек 09 2009, 14:32 
Старший специалист
Старший специалист

Зарегистрирован:
Пт, авг 24 2007, 11:29
Сообщения: 350
Besa написал:
например вводите в поле Z - ( X * Y ) + X.
z, x, y - это наши колонки.
потом как писал Rokhay отлавливаете событие(например по нажатию энтер можно сделать),

Большое спасибо за ответы...

Есть еще 2 вопроса:
1. Подскажите пожалуйста как можно отловить нажатие кнопки ENTER?
2. Как НЕ через событие DATA_CHANGED повешать обработчик на ячейку?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Формула в ячейке ALV_GRID
СообщениеДобавлено: Ср, дек 09 2009, 14:33 
Старший специалист
Старший специалист

Зарегистрирован:
Пн, авг 28 2006, 11:24
Сообщения: 292
Пол: Мужской
Besa написал:
Думаю что программой преобразования не обойтись. Если только скидывать значения ячеек в мемори.

Ну да, конечно, программу преобразования имеет смысл применять, только если формула самодостаточна, и в ней нет ссылок на другие ячейки.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Формула в ячейке ALV_GRID
СообщениеДобавлено: Ср, дек 09 2009, 14:49 
Старший специалист
Старший специалист

Зарегистрирован:
Пт, авг 24 2007, 11:29
Сообщения: 350
Rokhay написал:
Besa написал:
Думаю что программой преобразования не обойтись. Если только скидывать значения ячеек в мемори.

Ну да, конечно, программу преобразования имеет смысл применять, только если формула самодостаточна, и в ней нет ссылок на другие ячейки.


Ссылка на другие ячейки однозначно будет...

Вопросы остаются открытыми:
Цитата:
Есть еще 2 вопроса:
1. Подскажите пожалуйста как можно отловить нажатие кнопки ENTER?
2. Как НЕ через событие DATA_CHANGED повешать обработчик на ячейку?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Формула в ячейке ALV_GRID
СообщениеДобавлено: Ср, дек 09 2009, 15:02 
Гуру-эксперт
Гуру-эксперт
Аватара пользователя

Зарегистрирован:
Чт, ноя 11 2004, 16:25
Сообщения: 3109
Пол: Мужской
1. BCALV_EDIT_03
2. Думаю что нет.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Формула в ячейке ALV_GRID
СообщениеДобавлено: Чт, дек 10 2009, 00:25 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Вт, июн 02 2009, 22:28
Сообщения: 228
Откуда: MOW
Пол: Мужской
Цитата:
Есть еще 2 вопроса:
1. Подскажите пожалуйста как можно отловить нажатие кнопки ENTER?


При инициализации грида выполнить код:
Code:
mo_alv->register_edit_event( EXPORTING
                                     i_event_id = cl_gui_alv_grid=>mc_evt_enter ).


После этого нажатие Enter ловится по DataChanged


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Формула в ячейке ALV_GRID
СообщениеДобавлено: Чт, дек 10 2009, 06:27 
Гуру-эксперт
Гуру-эксперт
Аватара пользователя

Зарегистрирован:
Чт, ноя 11 2004, 16:25
Сообщения: 3109
Пол: Мужской
Добавлю к raaleksandr.
Если напишите вместо mc_evt_enter mc_evt_modified, то будете попадать в DataChanged после ухода с ячейки.


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

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


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

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


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

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