В области CODE unter extra, какие переменные мне доступны?
Из чего я вижу только строки заголовка таблиц выбора, которые вы определяете в условии соединениядоступно в блоках кодирования.То есть, если вы выбираете из ITOB присоединиться к ANLA, доступны как строки заголовка ITOB, так и ANLA.(Это относится только к блоку ОБРАБОТКА ЗАПИСИ).Однако вы можете определить свои собственные переменные в блоке DATA.
Как получить доступ к набору данных и ограничить записи после выбора:
Отказ от ответственности: Это очень похоже на хак, оно не работает для всех типов вывода, но показывает, как вы можете получить доступ к набору данных.
В блоке кода INITIALIZATION добавьте следующую инструкцию:
* 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 - имя переменной набора результатов в сгенерированной программе (используйте [] для доступа к таблице, а не только к строке заголовка).Поскольку сгенерированные программные переменные недоступны в Infoset, вы должны использовать символы поля для доступа к любым переменным.Если переменная не существует, проверка присвоения позволит избежать ошибок во время выполнения.
Ограничение: При выполнении запроса в «Режим списка ABAP» этот код не действует, этотЭто потому, что в этом случае список записывается как данные, которые выбираются, поэтому любые манипуляции после того, как факт слишком поздно.
То, что я в итоге сделал:
Я выполнил ручное объединение соответствующих отдельных таблиц в ITOB (EQUI-> EQUZ-> ILOA) и исключил IFLOT и IFLOTX из смеси, для этого потребовалось только установить дополнительное ограничение на дату окончания.Я предполагаю, что в большинстве случаев возможно деконструировать данные до уровня, на котором вы можете избежать дубликатов, используя правильное предложение WHERE.Вопрос о том, как сделать SELECT DISTINCT, когда вам действительно нужно, остается открытым ...