Оказалось, что не все знают, что можно создавать глобальные варианты для запуска отчета.
Делается это достаточно просто, при создании варианта надо убрать галку Save as User Variant, задать тех.имя и сохранить.
Объект авторизации - S_RS_PARAM (необходим в случае глобальных вариантов)
Таблицы - RSRPARAMETRIZA (вариант и параметры) и RSRPARAMETRIZAT (тексты)
Интересные поля:
PARENTCOMPONENT - тип объекта
1 Query
2 Workbook
3 Web Application
4 Planning Sequence
5 Planning Function
6 Enterprise Report
ELTUID - тех.имя запроса
PERSONAL - локальный (X) и глобальный (SPACE) вариант
OWNER - user id создателя
CONTENT - содержание варианта в XML формате
Перенос - стандартного (по одной кнопке) способа переноса не существует. Но есть варианты.
Руками в транспорт
PgmID Obj Object name
R3TR TABU RSRPARAMETRIZA
R3TR TABU RSRPARAMETRIZAT
С помощью ведения таблицы *
- SE16
- ‘RSRPARAMETRIZA’
- Нажать кнопку ‘table Contents’ (or F7)
- Провалится в контент (‘F8′)
- Выделить записи для траспортировки
- В меню выбрать ‘table Entry’ -> ‘Transport Entries’
- Выбрать запрос на перенос
* но много на формах сообщений, что способ не работает, закрыт пункт ‘Transport Entries’
среда, 30 января 2013 г.
понедельник, 28 января 2013 г.
Float
Столкнулся с след. ситуацией, когда при преобразовании данных из типа в тип, можно получить разные данные. В частности проблема с float.
Почитал ещё курс BC402, порадовала фраза...
Внимание: Для вычислений в арифметике с плавающей запятой используются операции с плавающей запятой соответствующих процессоров. Поскольку алгоритмы выполняются над двоичными числами, могут возникать погрешности. Степень и эффект таких погрешностей не поддаются оценке.
Теперь, на примере...
Результат:
Т.е. 1,755 которая во представляется внутри как 0.7549999999999999E+00 при преобразовании к 0.00 преобразуют по факту 1.754, а не 1.755
Срочно выкидываем float отовсюду во избежании...
Почитал ещё курс BC402, порадовала фраза...
Внимание: Для вычислений в арифметике с плавающей запятой используются операции с плавающей запятой соответствующих процессоров. Поскольку алгоритмы выполняются над двоичными числами, могут возникать погрешности. Степень и эффект таких погрешностей не поддаются оценке.
Теперь, на примере...
DATA:
l_value1 TYPE p DECIMALS 5 value '1.755',
l_value2 TYPE f value '1.755',
l_result1 TYPE p DECIMALS 1,
l_result2 TYPE p DECIMALS 2,
l_result3 TYPE p DECIMALS 3,
l_result4 TYPE p DECIMALS 4.
l_result1 = l_value1. write / l_result1.
l_result2 = l_value1. write / l_result2.
l_result3 = l_value1. write / l_result3.
l_result4 = l_value1. write / l_result4.
l_result1 = l_value2. write / l_result1.
l_result2 = l_value2. write / l_result2.
l_result3 = l_value2. write / l_result3.
l_result4 = l_value2. write / l_result4.
Результат:
[b]l_value1 TYPE p DECIMALS 5 value '1.755'[/b]Получается, что при float округление, делается с учетом размерности приемника + 1.
0.0 1.8
0.00 1.76
0.000 1.755
0.0000 1.7550
[b]l_value2 TYPE f value '1.755'[/b]
0.0 1.8
0.00 1.75
0.000 1.755
0.0000 1.7550
Т.е. 1,755 которая во представляется внутри как 0.7549999999999999E+00 при преобразовании к 0.00 преобразуют по факту 1.754, а не 1.755
Срочно выкидываем float отовсюду во избежании...
Подписаться на:
Сообщения (Atom)