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

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 12 ] 
Автор Сообщение
 Заголовок сообщения: Выключить округление
СообщениеДобавлено: Пн, авг 25 2008, 16:14 
Директор
Директор
Аватара пользователя

Зарегистрирован:
Чт, авг 19 2004, 07:47
Сообщения: 783
Пол: Мужской
То что в исходнике выглядит
Code:
W_xkwert = xkwert.
xkwert = W_xkwert.
endform.



в отладчике превращается в

Code:
W_xkwert = xkwert.                 
  CALL FUNCTION 'ROUND'             
       EXPORTING                     
            DECIMALS = 2             
            INPUT    = xkwert       
            SIGN     = ' '           
       IMPORTING                     
            OUTPUT   = w_xkwert     
       EXCEPTIONS                   
            OTHERS   = 4.           
  IF SY-SUBRC <> 0.                 
    exit.                           
  ENDIF.                             
  xkwert = w_xkwert.                 
endform.                             


А нужно все го то обрезать все после второй цифры после запятой без округления.


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

Зарегистрирован:
Пн, фев 11 2008, 11:54
Сообщения: 359
Откуда: Воронеж
Пол: Мужской
Озвучте, пожалуйста типы полей xkwert и W_xkwert.

_________________
Hормальные люди делают вещи намного более безумные чем всё, что делают сумасшедшие (c) С.Лем


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Выключить округление
СообщениеДобавлено: Пн, авг 25 2008, 16:34 
Гуру-эксперт
Гуру-эксперт

Зарегистрирован:
Вт, сен 07 2004, 17:47
Сообщения: 2988
oibd написал:
То что в исходнике выглядит
Code:
W_xkwert = xkwert.
xkwert = W_xkwert.
endform.



в отладчике превращается в

Code:
W_xkwert = xkwert.                 
  CALL FUNCTION 'ROUND'             
       EXPORTING                     
            DECIMALS = 2             
            INPUT    = xkwert       
            SIGN     = ' '           
       IMPORTING                     
            OUTPUT   = w_xkwert     
       EXCEPTIONS                   
            OTHERS   = 4.           
  IF SY-SUBRC <> 0.                 
    exit.                           
  ENDIF.                             
  xkwert = w_xkwert.                 
endform.                             


А нужно все го то обрезать все после второй цифры после запятой без округления.
В отладчикея происходит изменение исходного кода? Какое то новое ядро системы ? WebAS 8.8?
А вообще тут же разбирались различные встроенные функции округления - воспользуйтесь поиском

_________________
"После" - не значит "вследствие"


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, авг 25 2008, 16:44 
Директор
Директор
Аватара пользователя

Зарегистрирован:
Чт, авг 19 2004, 07:47
Сообщения: 783
Пол: Мужской
XXX_:) написал:
Озвучте, пожалуйста типы полей xkwert и W_xkwert.


xkwert like KOMV-KWERT (а KWERT он CURR)

W_xkwert декларировал так
data: W_xkwert(10) type p decimals 2.

Видиммо нужно придумывать что то еще, тк это не работает.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, авг 25 2008, 17:25 
Президент
Президент

Зарегистрирован:
Пт, апр 28 2006, 22:39
Сообщения: 2514
Откуда: North Taxolina, USA
Пол: Женский
Некоторые опции округления устанавливаются в конфигурации. Ловите своего SDшника.

_________________
"One of the symptoms of an approaching nervous breakdown is the belief that one's work is terribly important." Bertrand Russell


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, авг 25 2008, 17:44 
Директор
Директор
Аватара пользователя

Зарегистрирован:
Чт, авг 19 2004, 07:47
Сообщения: 783
Пол: Мужской
Jelena написала:
Некоторые опции округления устанавливаются в конфигурации. Ловите своего SDшника.


А какие например? У меня СДшник удаленный, буржуйский - спросит что именно я от него хочу.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Выключить округление
СообщениеДобавлено: Пн, авг 25 2008, 19:06 
Менеджер
Менеджер
Аватара пользователя

Зарегистрирован:
Пн, янв 24 2005, 16:22
Сообщения: 749
Пол: Мужской
oibd написал:
То что в исходнике выглядит
Code:
W_xkwert = xkwert.
xkwert = W_xkwert.
endform.



в отладчике превращается в

Code:
W_xkwert = xkwert.                 
  CALL FUNCTION 'ROUND'             
       EXPORTING                     
            DECIMALS = 2             
            INPUT    = xkwert       
            SIGN     = ' '           
       IMPORTING                     
            OUTPUT   = w_xkwert     
       EXCEPTIONS                   
            OTHERS   = 4.           
  IF SY-SUBRC <> 0.                 
    exit.                           
  ENDIF.                             
  xkwert = w_xkwert.                 
endform.                             


А нужно все го то обрезать все после второй цифры после запятой без округления.


Можно вопрос, а как увидели этот код с вызовом 'ROUND'? Вы какую версию системы используете?


Согласно документации (оператор MOVE - conversion rules), при преобразовании типа p к типу p выполняется следующее:
The value of the packed number is arithmetically rounded to the number of decimal places of the target field. If this number is within the value area for the data type of the target field, it is converted to the internal representation of a packed number. Otherwise, an exception that can be handled will be triggered.

IMHO, система всё делает правильно. Но я не понимаю, как появился CALL FUNCTION, поэтому гарантировать, что здесь нет ещё чего-нибудь не могу...

_________________
Счастье есть!


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Выключить округление
СообщениеДобавлено: Пн, авг 25 2008, 20:14 
Директор
Директор
Аватара пользователя

Зарегистрирован:
Чт, авг 19 2004, 07:47
Сообщения: 783
Пол: Мужской
Tetty написал:
Можно вопрос, а как увидели этот код с вызовом 'ROUND'? Вы какую версию системы используете?


Согласно документации (оператор MOVE - conversion rules), при преобразовании типа p к типу p выполняется следующее:
The value of the packed number is arithmetically rounded to the number of decimal places of the target field. If this number is within the value area for the data type of the target field, it is converted to the internal representation of a packed number. Otherwise, an exception that can be handled will be triggered.

IMHO, система всё делает правильно. Но я не понимаю, как появился CALL FUNCTION, поэтому гарантировать, что здесь нет ещё чего-нибудь не могу...


Ошибочка вышла. Тут с этим SOX... Вобщем это код постобработок значений SD условий. Поскольку орпедилял постобработку по устаревшей выгрузке калькуляции, то попал не на ту. На самом деле там действительно CALL FUNCTION. Проблема в том, что округленное значение изначально сюда попадает.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Выключить округление
СообщениеДобавлено: Пн, авг 25 2008, 20:22 
Менеджер
Менеджер
Аватара пользователя

Зарегистрирован:
Пн, янв 24 2005, 16:22
Сообщения: 749
Пол: Мужской
oibd написал:
Ошибочка вышла. Тут с этим SOX... Вобщем это код постобработок значений SD условий. Поскольку орпедилял постобработку по устаревшей выгрузке калькуляции, то попал не на ту. На самом деле там действительно CALL FUNCTION. Проблема в том, что округленное значение изначально сюда попадает.


:? проблема-то разрешена?

_________________
Счастье есть!


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, авг 25 2008, 23:09 
Президент
Президент

Зарегистрирован:
Пт, апр 28 2006, 22:39
Сообщения: 2514
Откуда: North Taxolina, USA
Пол: Женский
oibd написал:
У меня СДшник удаленный, буржуйский - спросит что именно я от него хочу.


Если речь идет о Pricing Conditions в SD, то смотрите конфигурацию здесь: SPRO -> Sales and Distribution -> Basic Functions -> Pricing -> Pricing Control -> Define Condition Types -> Maintain condition types. Там double-click на условие и смотрите поле Rounding Rules.

Еще с точки зрения ABAP'ера могут быть интересны routines (VOFM), которые навешиваются на условия в конфигурации Pricing Procedure. Pricing Procedure хранится вместе с документом, посмотрите в заголовке (смурное название типа RVAJUS). А конфигурация там же - Define and Assign Pricing Procedures.

_________________
"One of the symptoms of an approaching nervous breakdown is the belief that one's work is terribly important." Bertrand Russell


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Выключить округление
СообщениеДобавлено: Пн, авг 25 2008, 23:17 
Директор
Директор
Аватара пользователя

Зарегистрирован:
Чт, авг 19 2004, 07:47
Сообщения: 783
Пол: Мужской
Tetty написал:

:? проблема-то разрешена?


Завтра продолжим. Мои германоязычные коллеги с целью решить избитую проблемус округлением цены в СД калькуляции как то не так применили ноту 80183. Все вроде ничего, только по D счетам неокругленная сумма идет. Вот занимался програмированием по телефону - нашел как нельзя решить проблему. Осталось поковырятся с решением по ноте. В любом случае они еще забыли округление НДС по позициям сделать, так что прийдется сторнировать кучу документов.

Да всеразрешится. И не такое было. :)


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, авг 25 2008, 23:28 
Директор
Директор
Аватара пользователя

Зарегистрирован:
Чт, авг 19 2004, 07:47
Сообщения: 783
Пол: Мужской
Jelena написала:
Если речь идет о Pricing Conditions в SD, то смотрите конфигурацию здесь: SPRO -> Sales and Distribution -> Basic Functions -> Pricing -> Pricing Control -> Define Condition Types -> Maintain condition types. Там double-click на условие и смотрите поле Rounding Rules.


Спасибо.

Jelena написала:
Еще с точки зрения ABAP'ера могут быть интересны routines (VOFM), которые навешиваются на условия в конфигурации Pricing Procedure. Pricing Procedure хранится вместе с документом, посмотрите в заголовке (смурное название типа RVAJUS). А конфигурация там же - Define and Assign Pricing Procedures.


Это как раз кусочек с моего routines который был не туда навешен.


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

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


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

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


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

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