Текущее время: Вс, май 05 2024, 09:02

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


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

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


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

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