EHOT написал(а):
есть транзакция kcb0, там на экране (не селекционном) всего одно поле - выбор отчета, выбираем отчет и запускаем его ... так вот, как сделать запуск сразу этого отчета без первого экрана ?
Дык... BDC, однако. Для первого экрана делаешь данные - для входа и для выхода (BACK нажать, когда будешь откатываться из транзакции и попадешь на первый экран).
Когда при откате дойдет дело до первого экрана - данные для него найдутся и подхватятся.
И запускать в режиме 'E'.
Все время так делаю.
Пример.
Заходит в SE38, минуя первый экран, и позиционируется на нужную строку.
При нажатиии BACk выходит в вызывающую прогу, также минуя первый экран транзакции SE38.
Code:
if not pos is initial and not progname is initial.
refresh bdcdata.
clear bdcdata.
perform bdc_dynpro using 'SAPLWBABAP' '0100'.
perform bdc_field using 'BDC_OKCODE'
'=SHOP'.
perform bdc_field using 'RS38M-PROGRAMM'
progname.
perform bdc_field using 'RS38M-FUNC_EDIT'
'X'.
data: cpos(4).
write pos to cpos.
if progname(1) ne 'L' or progname cp 'L*TOP' .
* Если программа - обычная программа либо заголовок группы функций...
perform bdc_dynpro using 'SAPLS38E' '0400'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
perform bdc_field using 'RSTXP-TDFIRST'
cpos.
else.
* Если программа - ФМ
perform bdc_dynpro using 'SAPLSFUNCTION_BUILDER' '3000'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
perform bdc_field using 'RSTXP-TDFIRST'
cpos .
endif.
perform bdc_dynpro using 'SAPLWBABAP' '0100'.
perform bdc_field using 'BDC_OKCODE'
'=BACK'.
DATA opt TYPE ctu_params.
opt-DISMODE = 'E'.
call transaction 'SE38' using bdcdata
OPTIONS FROM opt.
endif.