Kuranov.Dmitry написал(а):
1)Read table заменить на LOOP.
2) В нем аккумулировать данные для отчета
3) Запустить отчет
Добрый день.
В общем итоге сделал submit-ом, получилось что то вроде вот этого
Code:
form user_command using v_ucomm like sy-ucomm
wa_selrow type slis_selfield.
case v_ucomm.
when 'ZAPAS'.
refresh sklad.
refresh sklad2.
read table itab1 index wa_selrow-tabindex.
loop at tt001w.
refresh listtab2.
* refresh listtabusd.
refresh ascilistkzt2.
* refresh ascilistusd.
* refresh itkzt2.
p_werks = tt001w-bwkey.
export listobject = listtab2 to memory id '%_LIST'.
submit rm07mlbs with matnr in r_matnr with werks = p_werks with kzlso = 'X'
with seneg ne 'X' with mb52_xmchb = 'X' with kznul = 'X' with mb52_noval ne 'X'
with mb52_alv_flt = 'X' exporting list to memory and return.
call function 'LIST_FROM_MEMORY'
tables
listobject = listtab2
exceptions
empty_list = 1
list_index_invalid = 2
others = 3.
if sy-subrc = 0.
read table listtab2 index 1.
if sy-subrc = 0.
refresh ascilistkzt2.
call function 'LIST_TO_ASCI'
tables
listasci = ascilistkzt2
listobject = listtab2
exceptions
empty_list = 1
list_index_invalid = 2
others = 3.
if sy-subrc <> 0.
message id sy-msgid type sy-msgty number sy-msgno
with sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
endif.
clear: x11.
loop at ascilistkzt2.
if sy-tabix => 4.
refresh itkzt2.
split ascilistkzt2-line at '|' into table itkzt2.
x11 = 'X'.
loop at itkzt2.
if sy-tabix = 2.
x12 = itkzt2-x.
shift x12 left by 1 places.
sklad-matnr = x12.
elseif sy-tabix = 3.
sklad-werks = itkzt2-x.
elseif sy-tabix = 4.
sklad-lgort = itkzt2-x.
elseif sy-tabix = 7.
sklad-posid = itkzt2-x.
elseif sy-tabix = 10.
sklad-meins = itkzt2-x.
elseif sy-tabix = 11.
sklad-lbkum = itkzt2-x.
* shift x13 left by 5 places.
* sklad-labst = x13.
elseif sy-tabix = 13.
sklad-waers = itkzt2-x.
elseif sy-tabix = 14.
sklad-salk3 = itkzt2-x.
endif.
endloop.
append sklad.
delete sklad WHERE matnr = ''.
delete adjacent duplicates from sklad.
endif.
endloop.
endif.
endif.
endloop.
И вроде бы всё нормально, но я submit вызываю транзакцию mb52 и этот стандартный отчёт можно настраивать, каждый юзер запускает его как хочет в плане того что на селекционном экране ставит те галочки которые ему нужны, я пытаюсь в submit передать какое какие параметры, чтобы галочки на select button при запуске select-option проставились вот так к примеру mb52_alv_flt = 'X, но программа игнорирует передачу галочек в моём отчёте и берёт те настройки который были проставлены юзером при последнем пользовании транзакцией MB52. Может кто работал с submit и знает как передать на select button нужные мне значения?