вторник, 16 августа 2011 г.

Перенос Трансформации с самоуничтожением

Было три или четыре случая, когда при переносе "зачищалась" трансформация... причем с одна из переносимых, с остальными всё было ok.

Зачищалась - удалялась start\end рутина и все подпрограммы.

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

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

Итак:
1. Меняем трансформацию. Создается запрос в него попадает трансформация и все подпрограммы.
2. Удаляем трансформацию из запроса... но подпрограммы оставляем.
3. Опять меняем туже трансформацию, но сохраняем в новый запрос
4. Обнаруживаем что:
- в новом запросе только трансформация без подпрограмм
- система увидела что подчиненные объекты в другом запросе и не включила в этот >> логично
- но при этом система об этом никак не сигнализировала, что не удалось включить подпрограммы >> спорно
5. Переносим 2й запрос - получаем "зачистку" - логично



За что я не люблю компаунды

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

Собственно это сборник проблем:

>>При использовании признака как атрибута, есть проблема - невозможно повторно включить признак как ref-атрибут, т.к. compaund не понимает что такое ref, и не добавляет 2й compaund в признак.

A - признак
B - признак в котором A идет как compaund
B1 - ref B
B2 - ref B

C - признак, включаем атрибут B1 - автоматически включается А
С - признак, включает атрибут B2... система видит что А уже есть...
и в атрибутах у С имеет следующее:
- B1
- B2
- A (один для обоих B1 и B2)

>>В отчетности, при использовании навигационного атрибута B признака С, есть "проблема"... в ограничениях признака сохраняется "чистое" значение B. В принципе можно добавить ограничение по compaund - но пользователей такое поведение немного нервирует. см.картинку.

четверг, 4 августа 2011 г.

Строка с пробелами

Оригинальный способ соединять элементы в строку, если надо сохранить пробелы.

TYPES:
BEGIN OF aa,
client type EQECLIENT,
cube TYPE RSINFOPROV,
guid type GUID_32,
END OF aa.

DATA: aa1 type aa.
aa1-client = sy-mandt.
aa1-cube = 'Yxxxxxxx'.
aa1-guid = -GUID.

l_ARG = aa1.