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

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


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

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


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

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