Report 如何在ABAP报告中显示WebDynpro ABAP?
我刚开始编写ABAP代码几天,我有一项任务要从transactionReport 如何在ABAP报告中显示WebDynpro ABAP?,report,abap,sap-gui,webdynpro,function-module,Report,Abap,Sap Gui,Webdynpro,Function Module,我刚开始编写ABAP代码几天,我有一项任务要从transactionSE38调用报告,并且 报告结果显示在WebDynPro应用程序的屏幕上SE80 报告将用户输入(例如:物料编号、物料类型、工厂、销售组织)作为查询条件,因此WebDynPro应用程序必须允许用户输入此参数 在一些相关文章中,他们讨论了使用SUBMIT rep EXPORTING LIST TO MEMORY和调用函数'LIST_FROM_MEMORY',但到目前为止,我真的不知道如何实现它 如有任何答复,将不胜感激。谢谢 您可
SE38调用报告,并且
报告结果显示在WebDynPro应用程序的屏幕上SE80
报告将用户输入(例如:物料编号、物料类型、工厂、销售组织)作为查询条件,因此WebDynPro应用程序必须允许用户输入此参数
在一些相关文章中,他们讨论了使用SUBMIT rep EXPORTING LIST TO MEMORY
和调用函数'LIST_FROM_MEMORY'
,但到目前为止,我真的不知道如何实现它
如有任何答复,将不胜感激。谢谢 您可以将其导出为PDF。因此,当用户单击链接时,您将运行转换并在浏览器窗口中显示文件
要执行此操作,请首先使用以下代码创建作业:
constants c_name type tbtcjob-jobname value 'YOUR_JOB_NAME'.
data v_number type tbtcjob-jobcount.
data v_print_parameters type pri_params.
call function 'JOB_OPEN'
exporting
jobname = c_name
importing
jobcount = v_number
exceptions
cant_create_job = 1
invalid_job_data = 2
jobname_missing = 3
others = 4.
if sy-subrc = 0.
commit work and wait.
else.
EXIT. "// todo: err handling here
endif.
然后,您需要获取打印机参数以提交报告:
call function 'GET_PRINT_PARAMETERS'
exporting
destination = 'LP01'
immediately = space
new_list_id = 'X'
no_dialog = 'X'
user = sy-uname
importing
out_parameters = v_print_parameters
exceptions
archive_info_not_found = 1
invalid_print_params = 2
invalid_archive_params = 3
others = 4.
v_print_parameters-linct = 55.
v_print_parameters-linsz = 1.
v_print_parameters-paart = 'LETTER'.
现在,您可以使用应用的过滤器提交报告。不要忘记向其添加作业参数,如下代码所示:
submit your_report_name
to sap-spool
spool parameters v_print_parameters
without spool dynpro
with ...(insert all your filters here)
via job c_name number v_number
and return.
if sy-subrc = 0.
commit work and wait.
else.
EXIT. "// todo: err handling here
endif.
然后,关闭作业:
call function 'JOB_CLOSE'
exporting
jobcount = v_number
jobname = c_name
strtimmed = 'X'
exceptions
cant_start_immediate = 1
invalid_startdate = 2
jobname_missing = 3
job_close_failed = 4
job_nosteps = 5
job_notex = 6
lock_failed = 7
others = 8.
if sy-subrc = 0.
commit work and wait.
else.
EXIT. "// todo: err handling here
endif.
现在作业将继续,您需要等待它完成。做一个循环。一旦作业完成,您就可以获得它的spool输出并将其转换为PDF
data v_rqident type tsp01-rqident.
data v_job_head type tbtcjob.
data t_job_steplist type tbtcstep occurs 0 with header line.
data t_pdf like tline occurs 0 with header line.
do 200 times.
wait up to 1 seconds.
call function 'BP_JOB_READ'
exporting
job_read_jobcount = v_number
job_read_jobname = c_name
job_read_opcode = '20'
importing
job_read_jobhead = v_job_head
tables
job_read_steplist = t_job_steplist
exceptions
invalid_opcode = 1
job_doesnt_exist = 2
job_doesnt_have_steps = 3
others = 4.
read table t_job_steplist index 1.
if not t_job_steplist-listident is initial.
v_rqident = t_job_steplist-listident.
exit.
else.
clear v_job_head.
clear t_job_steplist.
clear t_job_steplist[].
endif.
enddo.
check not v_rqident is initial.
call function 'CONVERT_ABAPSPOOLJOB_2_PDF'
exporting
src_spoolid = v_rqident
dst_device = 'LP01'
tables
pdf = t_pdf
exceptions
err_no_abap_spooljob = 1
err_no_spooljob = 2
err_no_permission = 3
err_conv_not_possible = 4
err_bad_destdevice = 5
user_cancelled = 6
err_spoolerror = 7
err_temseerror = 8
err_btcjob_open_failed = 9
err_btcjob_submit_failed = 10
err_btcjob_close_failed = 11
others = 12.
如果要通过HTTP发送,可能还需要将其转换为BASE64
field-symbols <xchar> type x.
data v_offset(10) type n.
data v_char type c.
data v_xchar(2) type x.
data v_xstringdata_aux type xstring.
data v_xstringdata type xstring.
data v_base64data type string.
data v_base64data_aux type string.
loop at t_pdf.
do 134 times.
v_offset = sy-index - 1.
v_char = t_pdf+v_offset(1).
assign v_char to <xchar> casting type x.
concatenate v_xstringdata_aux <xchar> into v_xstringdata_aux in byte mode.
enddo.
concatenate v_xstringdata v_xstringdata_aux into v_xstringdata in byte mode.
clear v_xstringdata_aux.
endloop.
call function 'SCMS_BASE64_ENCODE_STR'
exporting
input = v_xstringdata
importing
output = v_base64data.
v_base64data_aux = v_base64data.
while strlen( v_base64data_aux ) gt 255.
clear t_base64data.
t_base64data-data = v_base64data_aux.
v_base64data_aux = v_base64data_aux+255.
append t_base64data.
endwhile.
if not v_base64data_aux is initial.
t_base64data-data = v_base64data_aux.
append t_base64data.
endif.
字段符号类型x。
数据v_偏移(10)类型n。
数据v_字符类型c。
数据v_xchar(2)类型x。
数据v_xstringdata_辅助类型xstring。
数据v_xstringdata类型xstring。
数据v_base64数据类型字符串。
data v_BASE64 data_aux类型字符串。
在t_pdf循环。
做134次。
v_offset=sy索引-1。
v_char=t_pdf+v_偏移量(1)。
将v_char指定给铸造类型x。
以字节模式将v_xstringdata_aux连接到v_xstringdata_aux。
恩多。
以字节模式将v_xstringdata v_xstringdata_aux连接到v_xstringdata。
清除v_xstringdata_aux。
结束循环。
调用函数“SCMS\u BASE64\u ENCODE\u STR”
出口
输入=vxstringdata
进口
输出=v_base64数据。
v_base64data_aux=v_base64data。
而strlen(v_base64 data_aux)gt 255。
清除t_base64数据。
t_base64data-data=v_base64data\u aux。
v_base64data_aux=v_base64data_aux+255。
追加t_base64数据。
结束时。
如果不是,v_base64数据_aux为初始值。
t_base64data-data=v_base64data\u aux。
追加t_base64数据。
恩迪夫。
你完了
希望能有所帮助。正如前面的发言者所说,在生产环境中实施这些内容之前,您应该进行广泛的培训。
但是,在报告中调用WebdynPro ABAP可以借助于WDY\u EXECUTE\u IN\u PLACE
功能模块完成。您应该传递Webdyn Pro应用程序和必要的参数
CALL FUNCTION 'WDY_EXECUTE_IN_PLACE'
EXPORTING
* PROTOCOL =
INTERNALMODE = ' '
* SMARTCLIENT =
APPLICATION = 'Z_MY_WEBDYNPRO'
* CONTAINER_NAME =
PARAMETERS = lt_parameters
SUPPRESS_OUTPUT =
TRY_TO_USE_SAPGUI_THEME = ' '
IMPORTING
OUT_URL = ex_url
.
IF sy-subrc <> 0.
* Implement suitable error handling here
ENDIF.
调用函数“WDY\u就地执行”
出口
*协议=
内部模式=“”
*智能客户端=
应用程序='Z_MY_WEBDYNPRO'
*容器名称=
参数=lt_参数
抑制输出=
尝试使用SAPGUI主题=“”
进口
OUT\u URL=ex\u URL
.
如果sy subrc为0。
*在这里实现适当的错误处理
恩迪夫。
拿一个大的线索棒,“说服”给你分配任务的人:a)这不是一个规范,而是一个相当奇怪的想法;b)在开始使用关键任务ERP/CRM/任何系统之前,你需要接受适当的培训。我认为,除了“接受适当的培训”之外,这个问题无法得到任何回答——通常需要数周的时间来教授和学习必要的基础知识。我完全同意。但不幸的是,我必须从互联网上找到合适的培训,不管是谁给了我这个任务作为练习,我都必须完成它。英雄联盟