среда, 30 января 2013 г.

Global query variant

Оказалось, что не все знают, что можно создавать глобальные варианты для запуска отчета.
Делается это достаточно просто, при создании варианта надо убрать галку 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’








понедельник, 28 января 2013 г.

Float

Столкнулся с след. ситуацией, когда при преобразовании данных из типа в тип, можно получить разные данные. В частности проблема с 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]

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
Получается, что при float округление, делается с учетом размерности приемника + 1.
Т.е. 1,755 которая во представляется внутри как 0.7549999999999999E+00 при преобразовании к 0.00 преобразуют по факту 1.754, а не 1.755

Срочно выкидываем float отовсюду во избежании...

пятница, 23 ноября 2012 г.

Данные из домена

Возникла тут задача вытянуть данные из домена, пригодилась эта how to - http://wiki.sdn.sap.com/wiki/display/Snippets/GET+DOMAIN+FIXED+VALUE

p.s. Понятно что руками или даже файлом дешевле. Но если есть требование, теперь можно ответить реализацией.

вторник, 13 ноября 2012 г.

вторник, 6 ноября 2012 г.

Транспорт

На неделе удивил траспорт, задача внутри транспорта деблокировалась успешно, а вот сам траспорт завис с сообщением об ошибке.

  [     dev trc,00000]     OCIAttrSet(con=0, rc ln: 0 27, -1 25, 0 1, 0 25) failed with SQL error 24960:
                                                                                               30176  0.526609
  [     dev trc,00000]     ORA-24960: the attribute  OCI_ATTR_MODULE is greater than the maximum allowable length of 48
                                                                                                  52  0.526661
   3 entries from SEOTYPEPLS exported (ZBICCL_VARIABLES              *).
  [     dev trc,00000]     OCIAttrSet(con=0, rc ln: 0 27, -1 25, 0 1, 0 25) failed with SQL error 24960:
                                                                                                1772  0.528433
  [     dev trc,00000]     ORA-24960: the attribute  OCI_ATTR_MODULE is greater than the maximum allowable length of 48
                                                                                                  51  0.528484
   0 entries from RODIR exported (CLASZBICCL_VARIABLES              ).
 End of export LIMUCPRIZBICCL_VARIABLES
 ===> HALT: LIMU METH ZBICCL_VARIABLES : The name ist to short for a method, only the classname is given Please contact the SAP supp
 End of Transport (0016).
 date&time: 02.11.2012 - 13:11:52
 1 error occured.
 returned: 8, calculated: 8, compared: 8
 R3trans return code not sent correctly. See SAP Note 43552.
 Incorrect export. Request not imported.

Ну нота древняя, как дерьмо мамонта и не о чем в данном контексте. Много народу смотрела, танцы с бубнами... оказалось все тривиальней... в запрос, но не в задачу каким то образом попала запись с пустым методом.

LIMU METH ZBICCL_VARIABLES 

Удалили, запрос после этого деблокировался нормально.

Да, пока не забыл SCC1 - транзакция для переноса недеблокированных запросов между мандантами. Вызывать из принимающей стороны.

Тут ещё товарищи подсказали, есть отчет RDDIT076. И если хватает прав то в нем можно поменять статус запроса. Беспредел конечно, но как грится - шашки или ехать?

среда, 17 октября 2012 г.

Scaling Factor & 2 Structure Report

Обнаружилась специфика использования коэффициентов массштабирования в отчетах с двумя структурами.

Note 528960 - Scaling factors are not displayed
Note 337742 - Scaling factors not displayed
Note 568630 - FAQ: Information about structures in queries   + даже если не рассматривать описанные ситуации кофликта приоритетов... иногда BEx глючит с отображением строки с массштабами - workaround - включать опции массштабирования не на ячейках данных, а на заголовке показателя. Причем если до этого пытались включить массштаб на блоке ячеек, и после этого  строка исчезла, то пока не прокликаешь заголовки всех показателей - строка не появится.