以pdf格式显示smartform而不是"打印机"视图

2020-09-13 19:23发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)嗨,专家们,我有一个要求,以PD...

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


嗨,专家们,我有一个要求,以PDF格式显示Smartform,并且我写了一个Pice,其中显示了打印机视图,以便可以通过它查看pdf文档,这不是我所需要的。 需要停用此打印机视图并将文档直接显示为PDF。

示例:运行报告后,您将获得打印或预览报告的选项。 当您点击预览时,表单应在Adobe中打开。 我已经在门户网站中看到了此功能,但要求是在SAP GUI中显示它。

为此我已经使用

 wa_control_parameters-no_dialog ='X'。

在wa_job_output_info-otfdata INTO w_otf中循环。
     将w_otf附加到it_itcoo。
   结局。
    通话功能'HR_IT_DISPLAY_WITH_PDF'
     桌子
       otf_table = it_itcoo。
 

但是我只收到了一张黑色照片?

有什么方法可以满足此要求,还是应该继续将表单下载到本地硬盘上?

(17.8 kB)
7条回答

嗨西蒙妮,

我有下面的代码,

数据:lt_pdf tline类型表,

 ls_pdf与lt_pdf类似,

 lv_url TYPE char255,

 pdf_fsize TYPE i,

 lv_content TYPE xstring,

 x255的lt_data类型标准表。

 数据:l_job_output_info类型ssfcrescl。

 数据:ls_control_param TYPE ssfctrlop。

 数据:g_html_control类型参考cl_gui_html_viewer。

 数据:lo_docking_container类型参考cl_gui_docking_container。

  数据lv_delivery_hdr类型/SAPDII/DELIVERY。

 数据:p_vbeln TYPE vbeln_vl。

 FIELD-SYMBOLS 类型x。

 数据lv_NAST TYPE NAST。

 数据LV_REPEAT TYPE CHAR1。

 数据lv_rl_header TYPE/DSD/SV_RLD_PRINT_OUT。

 数据lv_VBDKA类型VBDKA。

 数据I_EKKO类型EKKO。

 数据I_LFA1 TYPE LFA1。

 数据IT_EKPO EKPO类型表。

 初始化。

   ls_control_param-getotf ='X'。

   ls_control_param-no_dialog ='X'。

 选择开始。

   通话功能'/1BCDWB/SF00000045'

     出口

     i_ekko = I_EKKO

     i_lfa1 = i_lfa1
       control_parameters = ls_control_param
     输入

       job_output_info = l_job_output_info
      桌子

       IT_EKPO = IT_EKPO

     例外情况

       formatting_error = 1

       internal_error = 2

       send_error = 3

       user_canceled = 4

       其他= 5。

   如果sy-subrc <> 0。

 *消息ID SY-MSGID类型SY-MSGTY编号SY-MSGNO

 *与SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4。

   万一。

   通话功能'CONVERT_OTF'
     出口
       格式=" PDF"

     输入

       bin_filesize = pdf_fsize

     桌子

       otf = l_job_output_info-otfdata

       行数= lt_pdf
     例外情况

       err_max_linewidth = 1

       err_format = 2

       err_conv_not_possible = 3

       其他= 4。

 *将pdf转换为xstring字符串

   在lt_pdf INTO ls_pdf中循环播放。

     将ls_pdf分配到铸造。

     CONCATENATE lv_content  INTO lv_content在字节模式中。

   结局。

   通话画面100。

 *&模块STATUS_0100输出

 *&------------------------------------------------  --------------------- *

 *文字

 * -------------------------------------------------  --------------------- *

 模块状态_0100输出。

   将PF状态设置为``100''。

 * SET TITLEBAR'xxx'。

   创建对象lo_docking_container

     出口

       repid = sy-repid

       dynnr ='100'" SY-DYNNR

       侧面= lo_docking_container-> dock_at_left

       扩展名= 1200。

   创建对象g_html_control

     出口

       父= lo_docking_container。

 *将xstring转换为二进制表以传递给LOAD_DATA方法

   通话功能'SCMS_XSTRING_TO_BINARY'

     出口

       缓冲区= lv_content

     桌子

       binary_tab = lt_data。

 *载入HTML

   呼叫方法g_html_control-> load_data(

     出口

       类型='应用程序'

       子类型='pdf'

     输入

       Assigned_url = lv_url

     改变

       data_table = lt_data

     例外情况

       dp_invalid_parameter = 1

       dp_error_general = 2

       cntl_error = 3

       其他= 4)。

 * 展示下

   呼叫方法g_html_control-> show_url(url = lv_url

     in_place ='X')。

 ENDMODULE。  " STATUS_0100输出

 *&------------------------------------------------  --------------------- *

 *&模块USER_COMMAND_0100输入

 *&------------------------------------------------  --------------------- *

 *文字

 * -------------------------------------------------  --------------------- *

 MODULE user_command_0100输入。

   数据ok_code类似于sy-ucomm。

   将sy-ucomm移动到ok_code。

   案例ok_code。

     当"返回"或"退出"时。

       调用方法lo_docking_container->免费。

 *呼叫方法g_html_control->免费。

       离开屏幕0。

     当别人。

   结束。

 ENDMODULE。  U
 

但是我仍然只收到黑屏,你能告诉我哪里出了错误!!!

最好的问候

珍妮

一周热门 更多>