Какие переменные мне доступны в разделе «КОД» и «Дополнительно»?
Из того, что я вижу, в блоках кодирования доступны только строки заголовков таблиц выбора, которые вы определяете в условии соединения. I.E. если вы выбираете из ITOB присоединиться к ANLA, доступны обе строки заголовка ITOB и ANLA. (Это актуально только в блоке ОБРАБОТКА ЗАПИСИ). Однако вы можете определить свои собственные переменные в блоке DATA.
Как получить доступ к набору данных и ограничить количество записей после выбора:
Отказ от ответственности: Это очень похоже на взлом, он работает не для всех типов вывода, но показывает, как вы можете получить доступ к набору данных.
В блоке кода ИНИЦИАЛИЗАЦИЯ добавьте следующий оператор:
* Dummy comment to force generation
* of END-OF-SELECTION Block
Подойдет любой комментарий - все это заставляет генератор программы сгенерировать блок END-OF-SELECTION, который нам нужен для доступа к набору данных.
В блоке кода END-OF-SELECTION добавьте следующее:
data: lv_table type char100 value '%G00[]'.
field-symbols: <table> type any table.
assign (lv_table) to <table>.
if <table> is assigned.
sort <table>.
delete adjacent duplicates from <table>.
endif.
% G00 - это имя переменной набора результатов в сгенерированной программе (используйте [] для доступа к таблице, а не только к строке заголовка). Поскольку сгенерированные программные переменные недоступны в информационном наборе, вы должны использовать символы полей для доступа к любым переменным. Если переменная не существует, проверка присвоения позволит избежать ошибок времени выполнения.
Ограничение: при выполнении запроса в "режиме списка ABAP" этот код не действует, потому что в этом случае список записывается по мере выбора данных, поэтому любые манипуляции постфактум слишком поздно.
Чем я закончил:
Я вручную объединил соответствующие отдельные таблицы в ITOB (EQUI-> EQUZ-> ILOA) и исключил IFLOT и IFLOTX, для этого мне потребовалось только наложить дополнительное ограничение на дату окончания. Я предполагаю, что в большинстве случаев можно деконструировать данные до уровня, на котором вы можете избежать дублирования, используя правильное предложение WHERE. Вопрос о том, как сделать SELECT DISTINCT, когда вам действительно нужно, остается открытым ...
person
Esti
schedule
23.09.2010