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

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 9 ] 
Автор Сообщение
 Заголовок сообщения: Packed Numbers
СообщениеДобавлено: Чт, мар 02 2006, 15:23 
Директор
Директор

Зарегистрирован:
Пт, окт 07 2005, 09:10
Сообщения: 752
Откуда: 4.6C
Пол: Мужской
Создаю User-Exit для исходящей с/ф. Главная программа SAPMV60A, в ней есть инклуд RV61AFZB, где и находится exit. По логике надо делить и умножать поля с суммами. В результате получаются не понятные суммы, то меньше в 100 раз, то округленные до целого. Посмотрел в главной программе не стоит флажок Ариф. с фикс. запятой, в хелпе вроде говорят, что должен стоять, чтобы правильно интерпретировалось число. Чуть выше exit'а есть пример как правильно делить и умножать в этом случае, но что-то не как не пойму принцип. Может кто сталкивался и разъяснит? Если надо по-конкретней внутри exit'а работаю с полями сумм во внутренней таблице xkomv, form - USEREXIT_XKOMV_BEWERTEN_END. Версия 46С.


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

Зарегистрирован:
Сб, сен 25 2004, 16:30
Сообщения: 1368
Откуда: Москва
Пол: Мужской
Вычисления надо перенести в свой внешний функ модуль, в котором флажок должен быть установлен, и его вызывать из юзер-экзита. Вроде должно помочь.

_________________
С уважением, Сергей Королев


Последний раз редактировалось Сергей Королев Чт, мар 02 2006, 16:07, всего редактировалось 1 раз.

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

Зарегистрирован:
Чт, окт 06 2005, 16:44
Сообщения: 3080
Откуда: Москва
Я для обработки чисел создавал свою группу функций, в которой флаг "Арифметика с фиксированной запятой" был установлен :)

_________________
С уважением,
Удав.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, мар 06 2006, 07:02 
Директор
Директор

Зарегистрирован:
Пт, окт 07 2005, 09:10
Сообщения: 752
Откуда: 4.6C
Пол: Мужской
Спасибо обоим ответившим господам!
Все заработало. Правда я реализовал, через пул подпрограмм, мне показалось, что так меньше возни: сначала группу создавай, потом функцию :). Кстати, может еще кто подскажет, где почитать, как все таки понимать поведение packed numbers, если не установлен флажок Арифметика с плав. точкой?


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

Зарегистрирован:
Ср, ноя 23 2005, 13:37
Сообщения: 1805
Откуда: ECC 6.0
Пол: Мужской
Наверное, можно и без флажка правильно вычисления делать. Если чётко знать, сколько у каждой входящей величины знаков после запятой, можно сохранять всё в локальные переменные типа float, а потом умножать/делить на соответствующий коэффициент.


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

Зарегистрирован:
Сб, сен 25 2004, 16:30
Сообщения: 1368
Откуда: Москва
Пол: Мужской
Aval написал:
Кстати, может еще кто подскажет, где почитать, как все таки понимать поведение packed numbers, если не установлен флажок Арифметика с плав. точкой?

Боюсь, это сакральное знание уже утеряно :)
Старые программы (например, pricing) как-то обходятся без float.

_________________
С уважением, Сергей Королев


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

Зарегистрирован:
Ср, ноя 23 2005, 13:37
Сообщения: 1805
Откуда: ECC 6.0
Пол: Мужской
Есть предположение, что если переменная определена как
Code:
data p1 type p decimals 3.

и имеет значение 12,345, то в расчётах без галки "Арифметика с плавающей запятой", она трактуется как целое со значением 12345.

Если нужно к нему прибавить
Code:
data p2 type p decimals 2.

со значением 67,89, то нужно писать:
Code:
p3 = p1 + 10 * p2.

и держать в уме 3.


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

Зарегистрирован:
Сб, сен 25 2004, 16:30
Сообщения: 1368
Откуда: Москва
Пол: Мужской
ну вроде так в документации и прописано, но уж больно возьни много. С флажком как-то удобнее.

_________________
С уважением, Сергей Королев


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, мар 06 2006, 14:08 
Директор
Директор

Зарегистрирован:
Пт, окт 07 2005, 09:10
Сообщения: 752
Откуда: 4.6C
Пол: Мужской
Ясно.
Еще раз всем спасибо


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

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


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

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


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

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