У меня есть RW отчёт(1SVG-001, library 1VK). Нужно его выполнить в другом отчёте и выходной экран записать в память с тем, чтобы потом можно было преобразовать в html.
Нашла обычный ABAP-отчёт, который вызывается при запуске RW-отчёта.
Выполняю его с помощью SUBMIT:
Code:
SUBMIT GP58AMUXFQ3ZHQL3YHD50PM8IYN300 WITH SELECTION-TABLE SELTAB
EXPORTING LIST TO MEMORY " Save list in memory
AND RETURN. " Return control to this program
При выполнении зависает. Подозреваю, что это из-за сообщения, которое выскакивет при выходе.
Если убрать EXPORTING LIST TO MEMORY, то зависания не происходит.
Вопрос в следующем: как записать выходной экран этого отчёта в память?
Может можно использовать SUBMIT с дополнением via job jobname или TO SAP-SPOOL? Но как потом достать данные?
Age: 36 Joined: 12 Mar 2010 Posts: 13 Location: Санкт-Петербург
Posted: Mon Mar 15, 2010 4:14 pm Post subject:
К сожалению, не помогло.
Функция 'LIST_FROM_MEMORY' возвращает пустой лист. Хотя всё выполняется без зависания.
Может ещё какие-нибудь предложения? _________________ …пока человек жив, ничего не пропало. Из любой ситуации всегда есть выход, причём не один, а несколько – и кто ты такой, чтобы оказаться первым человеческим существом во Вселенной, попавшим в действительно безвыходную ситуацию.
Age: 170 Joined: 04 Oct 2007 Posts: 1218 Location: Санкт-Петербург
Posted: Mon Mar 15, 2010 5:11 pm Post subject:
Можете привести пример вашего кода, интересует чем заполнены входные параметры WITH SELECTION-TABLE SELTAB? _________________ Молитва - это запрос разработчику на изменение кода программы.
Спасибо. _________________ …пока человек жив, ничего не пропало. Из любой ситуации всегда есть выход, причём не один, а несколько – и кто ты такой, чтобы оказаться первым человеческим существом во Вселенной, попавшим в действительно безвыходную ситуацию.
Age: 46 Joined: 05 Nov 2007 Posts: 725 Location: КраснАдар
Posted: Mon Mar 15, 2010 7:06 pm Post subject:
Я думаю, что проблема в том, что на выходе возникает диалоговое окно с гуи-статусом в котором зарегистрирован Enter. А тогда включается автоматически добавочка:
Quote:
Addition 3
... EXPORTING LIST TO MEMORY
Effect
This addition stores the basic list for the program accessed in the ABAP Memory. It can only be used together with the addition AND RETURN.
The list is stored in the ABAP Memory as an internal table of the row type ABAPLIST, ABAPLIST being a structured data type in the ABAP Dictionary.
The calling program can access the list stored once program access is completed, using function modules belonging to the function group SLST.
The function module LIST_FROM_MEMORY loads the list from the ABAP Memory to an internal table of the row type ABAPLIST.
The function module WRITE_LIST inserts the content of an internal table of the row type ABAPLIST in the current list.
The function module DISPLAY_LIST displays the content of an internal table of the row type ABAPLIST in a separate list screen.
Note
The addition can only work provided the function key Enter is not linked to a function code in the GUI status last defined for the program accessed.
Age: 36 Joined: 12 Mar 2010 Posts: 13 Location: Санкт-Петербург
Posted: Tue Mar 16, 2010 1:25 am Post subject:
А можно скопировать этот отчёт в другой и убрать данное сообщение? _________________ …пока человек жив, ничего не пропало. Из любой ситуации всегда есть выход, причём не один, а несколько – и кто ты такой, чтобы оказаться первым человеческим существом во Вселенной, попавшим в действительно безвыходную ситуацию.
Age: 170 Joined: 04 Oct 2007 Posts: 1218 Location: Санкт-Петербург
Posted: Tue Mar 16, 2010 12:31 pm Post subject:
Думаю, дело не в этом сообщении. При submit
в FM G_LEAVE_REPORT, где это сообщение формируется, программа вообще не заходит.
Это сообщение можно вообще убрать через меню в запущенном отчете
Settings - Options - Send Confirmation Prompt.
Как Background Job отчет выполняется, думаю нужно подумать в этом направлении и забирать результат из спула.
См. FM RSPO_RETURN_ABAP_SPOOLJOB, RSPO_DISPLAY_ABAP_SPOOLJOB, RSPO_DOWNLOAD_SPOOLJOB _________________ Молитва - это запрос разработчику на изменение кода программы.
Age: 36 Joined: 12 Mar 2010 Posts: 13 Location: Санкт-Петербург
Posted: Tue Mar 16, 2010 3:57 pm Post subject:
Да, спасибо, я уже пробовала вот так:
Code:
CALL FUNCTION 'JOB_OPEN'
submit ...
TO SAP-SPOOL
SPOOL PARAMETERS print_parameters
WITHOUT SPOOL DYNPRO
VIA JOB name NUMBER number
AND RETURN.
CALL FUNCTION 'JOB_CLOSE'
DO. " Пока job не выполнится
select single * from TBTCO where jobname = name and jobcount = number and status = 'F'.
ENDDO.
CALL FUNCTION 'BP_JOB_READ'
CALL FUNCTION 'RSPO_RETURN_ABAP_SPOOLJOB'
Но статус в таблице TBTCO 'P' и соответственно прога зависает в цикле.
Что я не так делаю? _________________ …пока человек жив, ничего не пропало. Из любой ситуации всегда есть выход, причём не один, а несколько – и кто ты такой, чтобы оказаться первым человеческим существом во Вселенной, попавшим в действительно безвыходную ситуацию.
Age: 170 Joined: 04 Oct 2007 Posts: 1218 Location: Санкт-Петербург
Posted: Tue Mar 16, 2010 4:42 pm Post subject:
Code:
DATA: l_valid,
ls_params LIKE pri_params,
l_jobcount LIKE tbtcjob-jobcount,
l_jobname LIKE tbtcjob-jobname,
ls_jobhead LIKE tbtcjob,
lt_job_read_steplist TYPE TABLE OF tbtcstep
WITH HEADER LINE,
l_spool_id LIKE tsp01-rqident,
lt_spool_list TYPE bapixmspow OCCURS 0
WITH HEADER LINE.
START-OF-SELECTION.
* Get Print Parameters
CALL FUNCTION 'GET_PRINT_PARAMETERS'
EXPORTING
no_dialog = 'X'
IMPORTING
valid = l_valid
out_parameters = ls_params.
* Open Job
l_jobname = 'RW_1SVG'.
CALL FUNCTION 'JOB_OPEN'
EXPORTING
jobname = l_jobname
IMPORTING
jobcount = l_jobcount.
* Submit report to job
SUBMIT gp58amuxfq3zhql3yhd50pm8iyn300
WITH $1kokre = '1000'
WITH $1gjahr = '2004'
WITH $1periv = '01'
WITH $1perib = '12'
WITH $1verp = '0'
VIA JOB l_jobname
NUMBER l_jobcount
TO SAP-SPOOL WITHOUT SPOOL DYNPRO
SPOOL PARAMETERS ls_params
AND RETURN.
* Schedule and close job.
CALL FUNCTION 'JOB_CLOSE'
EXPORTING
jobcount = l_jobcount
jobname = l_jobname
strtimmed = 'X'.
* Wait for a while so jobs can run
WHILE ( NOT ls_jobhead-status = 'F' ) AND
( NOT ls_jobhead-status = 'A' ).
CALL FUNCTION 'BP_JOB_READ'
EXPORTING
job_read_jobcount = l_jobcount
job_read_jobname = l_jobname
job_read_opcode = '20'
IMPORTING
job_read_jobhead = ls_jobhead
TABLES
job_read_steplist = lt_job_read_steplist
EXCEPTIONS
invalid_opcode = 1
job_doesnt_exist = 2
job_doesnt_have_steps = 3
OTHERS = 4.
IF ls_jobhead-status = 'F'. " F = Finished
EXIT.
ELSEIF ls_jobhead-status = 'A'. " A = Aborted
MESSAGE e000(su) WITH 'BP_JOB_READ function Aborted.'
'Status is "' ls_jobhead-status '"'.
ELSE.
WAIT UP TO 2 SECONDS.
ENDIF.
ENDWHILE.
READ TABLE lt_job_read_steplist INDEX 1.
l_spool_id = lt_job_read_steplist-listident.
Age: 36 Joined: 12 Mar 2010 Posts: 13 Location: Санкт-Петербург
Posted: Wed Mar 17, 2010 2:01 pm Post subject:
Спасибо большое!!!
В JOB_CLOSE strtimmed = 'X'. забыла, теперь всё работает. _________________ …пока человек жив, ничего не пропало. Из любой ситуации всегда есть выход, причём не один, а несколько – и кто ты такой, чтобы оказаться первым человеческим существом во Вселенной, попавшим в действительно безвыходную ситуацию.
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum You cannot attach files in this forum You can download files in this forum
All product names are trademarks of their respective companies. SAPNET.RU websites are in no way affiliated with SAP AG. SAP, SAP R/3, R/3 software, mySAP, ABAP, BAPI, xApps, SAP NetWeaver and any other are registered trademarks of SAP AG. Every effort is made to ensure content integrity. Use information on this site at your own risk.