ROKO, спасибо большое! Сейчас буду смотреть.
Пока этих сведений у меня не было, я по другому пути пошёл - программное изменение критериев фильтра в инфо-пакете. Как делать - мне коллеги подсказали. Сейчас расскажу, может кому-то пригодится.
Модуль BW.
В общем, для задания критериев фильтрации в инфо-пакете надо работать с таблицей: RSLDPSEL. Для изучения записей можно создать пару параметров на уровне инфо-пакета, затем выполнить код:
Code:
REPORT ZIPCRINFO.
DATA:
PSEL_REC TYPE RSLDPSEL
.
"Техническое имя инфо-пакета.
PSEL_REC-LOGDPID = 'ZPAK_OOOOOOOOOOOOOOOOOOOOOOOOO'.
SELECT *
FROM RSLDPSEL
INTO CORRESPONDING FIELDS OF PSEL_REC
WHERE
LOGDPID = PSEL_REC-LOGDPID
.
WRITE:
/ '--------------------------------------------------',
/ 'PSEL_REC:',
"Логическое имя инфо-пакета. Это техническое имя инфо-пакета.
"LOGDPID = 'ZPAK_OOOOOOOOOOOOOOOOOOOOOOOOO'.
/ 'LOGDPID =', PSEL_REC-LOGDPID,
"Номер запроса для переноса данных.
"INFOPAKID = 'INFO_OOOOOOOOOOOOOOOOOOOOOOOOO'.
/ 'INFOPAKID =', PSEL_REC-INFOPAKID,
"Версия объекта - OBJVERS = 'A'. - Активный.
/ 'OBJVERS =', PSEL_REC-OBJVERS,
"Порядковый номер критерия. Счёт идёт от единицы.
/ 'LNR =', PSEL_REC-LNR,
"Имя поля данных, к которому относится критерий. FIELDNAME = 'MY_FIELD1'.
/ 'FIELDNAME =', PSEL_REC-FIELDNAME,
"Информационный объект. IOBJNM = ''.
"/ 'IOBJNM =', PSEL_REC-IOBJNM,
"Критерии выбора: SIGN = 'I'.
/ 'SIGN =', PSEL_REC-SIGN,
"Критерии выбора: ОПЦИЯ. OPT = 'EQ'. Это тот самый вид выбора, который для данного поля
"задаётся в источнике данных: 'EQ' - равенство, 'BT' - диапазон значений и пр.
/ 'OPT =', PSEL_REC-OPT,
"Критерии выбора: значение нижней границы при OPT = 'BT'. Либо отдельное значение при OPT = 'EQ'
/ 'LOW =', PSEL_REC-LOW,
"Критерии выбора: значение верхней границы при OPT = 'BT'. При OPT = 'EQ' пустое: HIGH = ''.
/ 'HIGH =', PSEL_REC-HIGH,
"Тип запрошенных данных - также новые DS-типы. KIND = 'D'.
/ 'KIND =', PSEL_REC-KIND,
"Источик данных для задания планировщика. QUELLE = 'Q'.
/ 'QUELLE =', PSEL_REC-QUELLE,
"Назначение данных из задания планировщика. ZIEL = '1'
/ 'ZIEL =', PSEL_REC-ZIEL,
"Число записей для проверки при обработке ошибочных данных. NUMBER_AT_ERR = '1000'.
/ 'NUMBER_AT_ERR =', PSEL_REC-NUMBER_AT_ERR,
"Время тайм-аута. TIMEOUT = '0'.
/ 'TIMEOUT =', PSEL_REC-TIMEOUT,
"Интерпретация предупреждений. WARNING = ''.
/ 'WARNING =', PSEL_REC-WARNING,
"Указывает, что для поля допускается более 1000 значений. SEL_1000 = 'X'.
/ 'SEL_1000 =', PSEL_REC-SEL_1000,
"Флаг для синхронизации метаданных BI при загрузке. METADATA_SYNC = 'X'.
/ 'METADATA_SYNC =', PSEL_REC-METADATA_SYNC,
"Интерпретация предупреждений. NODATACOLOR = '' или NODATACOLOR = 'G' или ещё как-то.
/ 'NODATACOLOR =', PSEL_REC-NODATACOLOR
.
ENDSELECT.
WRITE:
/ '--------------------------------------------------',
/ 'Завершено'.
Установку критериев фильтрации инфо-пакета и запуск цепочки процессов можно выполнять примерно так:
Code:
REPORT ZLOAD_DATA.
DATA:
MY_FIELD1 TYPE I,
MY_FIELD2 TYPE I,
"Имя цепочки.
CHAIN TYPE RSPC_CHAIN VALUE '<Техническое имя цепочки>',
"ИД журнала работы цепочки.
LOGID TYPE RSPC_LOGID,
"Флаг состояния цепочки.
E_STATUS TYPE RSPC_STATE,
"Таблица RSLDPSEL - критерии выбора для полей планировщика.
PSEL_REC TYPE RSLDPSEL,
PSEL_TBL TYPE STANDARD TABLE OF RSLDPSEL
.
"Значения полей для фильтрации.
MY_FIELD1 = '10'.
MY_FIELD2 = '20'.
"Общие параметры для каждого критерия.
PSEL_REC-LOGDPID = 'ZPAK_OOOOOOOOOOOOOOOOOOOOOOOOO'.
PSEL_REC-OBJVERS = 'A'.
PSEL_REC-SIGN = 'I'.
PSEL_REC-OPT = 'EQ'.
PSEL_REC-KIND = 'D'.
PSEL_REC-QUELLE = 'Q'.
PSEL_REC-ZIEL = '1'.
PSEL_REC-NUMBER_AT_ERR = '1000'.
PSEL_REC-SEL_1000 = 'X'.
PSEL_REC-METADATA_SYNC = 'X'.
"Удаляем имеющиеся критерии.
"ВНИМАНИЕ! следим, чтобы присутствовала часть с WHERE - иначе будут удалены
"критерии по всем инфо-пакетам в системе. :-))
DELETE FROM RSLDPSEL WHERE LOGDPID = PSEL_REC-LOGDPID.
"Добавляем новые критерии.
CLEAR PSEL_TBL.
"Критерий по полю: MY_FIELD1.
PSEL_REC-LNR = 1.
PSEL_REC-FIELDNAME = 'MY_FIELD1'.
PSEL_REC-LOW = MY_FIELD1.
APPEND PSEL_REC TO PSEL_TBL.
"Критерий по полю: MY_FIELD2.
PSEL_REC-LNR = 2.
PSEL_REC-FIELDNAME = 'MY_FIELD2'.
PSEL_REC-LOW = MY_FIELD2.
APPEND PSEL_REC TO PSEL_TBL.
MODIFY RSLDPSEL FROM TABLE PSEL_TBL.
COMMIT WORK.
"Запуск цепочки процессов.
CALL FUNCTION 'RSPC_API_CHAIN_START'
EXPORTING
I_CHAIN = CHAIN
I_SYNCHRONOUS = 'X'
IMPORTING
E_LOGID = LOGID
EXCEPTIONS
FAILED = 1
OTHERS = 2
.
DO 20 TIMES.
CALL FUNCTION 'RSPC_API_CHAIN_GET_STATUS'
EXPORTING
I_CHAIN = CHAIN
I_LOGID = LOGID
IMPORTING
E_STATUS = E_STATUS
.
IF E_STATUS <> 'A' AND E_STATUS <> 'X'.
EXIT.
ENDIF.
WAIT UP TO 5 SECONDS.
ENDDO.
IF E_STATUS = 'R' OR E_STATUS = 'X' OR E_STATUS = 'J'.
WRITE: / 'Ошибка загрузки.'.
ENDIF.
WRITE: /, / 'Завершено.'.
Краткие описания полей таблицы RSLDPSEL можно посмотреть через транзакцию /se80 - Инфо-система репозитария - ABAP словарь - таблицы БД.