РМщик написал(а):
нет, но можно вот так:
Code:
TABLES: BKPF.
DATA: I TYPE I.
SELECT-OPTIONS: BUDAT FOR BKPF-BUDAT.
PARAMETERS: BLDAT LIKE BKPF-BUDAT.
RANGES: BD FOR BKPF-BUDAT.
LOOP AT BUDAT.
I = SY-TABIX.
CLEAR: BD, BD[].
MOVE-CORRESPONDING BUDAT TO BD.
APPEND BD.
IF BLDAT IN BD.
WRITE:/ I.
ENDIF.
ENDLOOP.
Хорошо, но есть пару неточностей:
1. Если budat[] is initial, то bldat in budat[] будет верно, хотя (а) нет ни одной строки, и (б) предложенный пример не выдаст ни одного варианта.
2. Обратный пример, если budat[] состоит из двух строк 'IEQ******' и 'EEQ********' (даты должны быть одинаковыми), то bldat in budat[] для даты ******** будет ложь, а приведенный цикл выдаст первую строку.
Поэтому, Long, лучше решать конкретную задачу, а не пытаться оптимизировать среду. Вспоминается I=I-(I/2*2)+1; ("Я могла бы придумать и более запутанный способ, как это сделать, - с гордостью сказала белая королева".)
Исходный вопрос тоже не вполне корректен, так как действие IN более комплексно, чем просто найти подходящую строчку.