пятница, 22 февраля 2013 г.

Активация DSO

Медитировал на тему активации DSO... точнее какой % активации DSO, и идти мне спать, или маленько посидеть, чтобы пнуть процесс дальше.

Если зайти в лог активации, то можно увидеть что основное время тратиться на записи типа :
BIBCTL_DEPEQUQGFT5PS7P03XM99IHON with ID 23311900

  Вопрос, и сколько этих ID может быть? В общем формула почти простая  

Кол-во записей ID = (Кол-во Записей которые будут вставлены) / (размер пакета активации = 20000 by default) + Random(0|1|2)  

Таким образом зная общее кол-во записей, можно посчитать сколько уже сформировалось в логе, т.е. можно посчитать % активации...  

Формула была проверена на 23 больших активациях, поэтому и появился коэффициент Random.
Удачных активаций!

Для изменения размера пакета активации DSO используется транзакция  RSODSO_SETTINGS.

среда, 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. И если хватает прав то в нем можно поменять статус запроса. Беспредел конечно, но как грится - шашки или ехать?