Текущее время: Пт, июл 18 2025, 20:32

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


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

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


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

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