Текущее время: Ср, июн 18 2025, 20:52

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 8 ] 
Автор Сообщение
 Заголовок сообщения: объясните...
СообщениеДобавлено: Чт, сен 30 2004, 14:56 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Вт, авг 17 2004, 12:44
Сообщения: 305
Откуда: Жайрем -> Астана
привет всем.
так вот...
смотрю я в отладчике, а там...чудеса

ставлю точку прерывания...смотрю percent = 0.00 , I_CLOBJDAT-ATFLV = 1.5310000000000000E+01
выполняется строка
Code:
PERCENT = I_CLOBJDAT-ATFLV * 100.

опять смотрю... percent = 15.31 , I_CLOBJDAT-ATFLV = 1.5310000000000000E+01
разве percent не должен ли быть равным 1531 ??
или дело в типах I_CLOBJDAT-ATFLV - FLTP(15), PERCENT - DEC(5) ?
и после выполнения строчки :
Code:
RESULT_PRICE =  ( PERCENT - ZSE012 ) * ZSE009.

где zse012 = 15.00 , zse009 = 38.26 result_price = 1186.06 ?? хотя (15.31-15)х38.26 = 11.8606 ?? какбы ту сотню умножили после вычисления....
не пинайте сильно...новичок я :oops:


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: объясните...
СообщениеДобавлено: Чт, сен 30 2004, 15:29 
Гуру-эксперт
Гуру-эксперт

Зарегистрирован:
Вт, сен 07 2004, 17:47
Сообщения: 2988
flipper написал(а):
привет всем.
так вот...
смотрю я в отладчике, а там...чудеса

ставлю точку прерывания...смотрю percent = 0.00 , I_CLOBJDAT-ATFLV = 1.5310000000000000E+01
выполняется строка
Code:
PERCENT = I_CLOBJDAT-ATFLV * 100.

опять смотрю... percent = 15.31 , I_CLOBJDAT-ATFLV = 1.5310000000000000E+01
разве percent не должен ли быть равным 1531 ??
или дело в типах I_CLOBJDAT-ATFLV - FLTP(15), PERCENT - DEC(5) ?
и после выполнения строчки :
Code:
RESULT_PRICE =  ( PERCENT - ZSE012 ) * ZSE009.

где zse012 = 15.00 , zse009 = 38.26 result_price = 1186.06 ?? хотя (15.31-15)х38.26 = 11.8606 ?? какбы ту сотню умножили после вычисления....
не пинайте сильно...новичок я :oops:


Опиши точно как задекларированны у тебя переменные, потому как ситуацию смоделировать не получается.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, сен 30 2004, 21:18 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Сб, сен 25 2004, 16:30
Сообщения: 1368
Откуда: Москва
Пол: Мужской
Вполне может быть, что у программы, которая в данный момент исполняется, снят флажок 'fixed point arithmetic" . В этом случае все типы с фиксированной точкой трактуются как целые (можно еще хэлп почитать про этот флаг). Вы ведь, видимо, user-exit программируете? Совет - переместите вычисления в вашу собственную программу, например, функциональный модуль, по умолчанию этот флаг будет включен. Надеюсь, поможет.

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


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, окт 01 2004, 07:14 
Гость
это рабочая формула расчета надбавки(скидки) условия в схеме калькуляции SD. Решил разобраться с алгоритмом вычисления надбавки и наткнулся к этой интересной штуке.
текст формулы(убрал не нужное)

Code:
  DATA: BEGIN OF I_CLOBJDAT OCCURS 0.
          INCLUDE STRUCTURE CLOBJDAT.
  DATA: END   OF I_CLOBJDAT.


  DATA: PERCENT_FACT LIKE ZS003-ZSE012, " DEC(5)
            ZSE009 LIKE ZS003-ZSE009,            " DEC(6)
            ZSE012 LIKE ZS003-ZSE012,            " DEC(5)
            RESULT_PRICE TYPE P DECIMALS 2. 
...
CALL FUNCTION 'CLAF_CLASSIFICATION_OF_OBJECTS'
    ...
     TABLES
           T_CLASS           = I_CLASS
           T_OBJECTDATA  = I_CLOBJDAT
    ...
  " здесь  РERCENT_FACT = 0.00 
  READ TABLE I_CLOBJDAT WITH KEY ATNAM = 'Z_MN_RATE'.
  IF SY-SUBRC = 0.
    РERCENT_FACT = I_CLOBJDAT-ATFLV * 100. " I_CLOBJDAT-ATFLV тип FLTP(16)
  ENDIF.
  " здесь  РERCENT_FACT = 15.31  I_CLOBJDAT-ATFLV = 1.5310000000000000E+01
  ...
  " здесь РERCENT_FACT = 15.31 ZSE012 = 15.00 ZSE009 = 38.26
  RESULT_PRICE =  ( PERCENT_FACT - ZSE012 ) * ZSE009.
  " после RESULT_PRICE = 1186.06 здесь KOMP-MGAME = 67.151 тип QUAN(13)
  RESULT_PRICE = RESULT_PRICE * KOMP-MGAME / 100000.
  " а здесь RESULT_PRICE = 796.45   



кто что может сказать? объясните...плиз


Принять этот ответ
Вернуться к началу
  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, окт 01 2004, 07:18 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Вт, авг 17 2004, 12:44
Сообщения: 305
Откуда: Жайрем -> Астана
сообщение было моё...


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, окт 01 2004, 10:13 
Почетный гуру
Почетный гуру
Аватара пользователя

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

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


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, окт 01 2004, 10:16 
Гуру-эксперт
Гуру-эксперт

Зарегистрирован:
Вт, сен 07 2004, 17:47
Сообщения: 2988
flipper написал(а):
сообщение было моё...


Тебе уже ответил Сергей Королев - дело в галке Арифметика с фикс. запятой


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, окт 01 2004, 11:26 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Вт, авг 17 2004, 12:44
Сообщения: 305
Откуда: Жайрем -> Астана
Спасибо ... не увидел пред. ответ


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

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


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

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


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

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