读取PDF格式的假脱机并将PDF文件写入Application Server

2020-09-02 06:16发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)专家们, 在ECC 6.0之...

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

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


专家们,

在ECC 6.0之后,HR-W2和W2C表单假脱机将以PDF格式生成。

我们有一个需求,我们希望以编程方式读取PDF假脱机并将PDF文件写入应用程序服务器(使用OPEN DATASET和CLOSE DATASET)

参数:p_spono类似于tsp01-rqident。


 数据:pdf_数据类型FPCONTENT。
 类型:lt_pdf_table(1000)类型x。
 数据:lt_pdf_table的l_pdf_data类型标准表,
        l_pdf_line类型lt_pdf_table,
        l_offset类型i,
        l_len类型i,
        p_file(100)VALUE'\ sapout \ DVH \ pdf2.pdf'。

 *阅读阀芯内容
 通话功能'FPCOMP_CREATE_PDF_FROM_SPOOL'
     出口
     i_spoolid = p_spono
     i_partnum ='1'
     输入
       e_pdf = pdf_data
 * e_pdf_file =文件
     例外情况
     ads_error = 1
     usage_error = 2
     system_error = 3
     internal_error = 4
     其他= 5。


 *修改后台打印内容以准备内部表
   l_len = xstrlen(pdf_data)。
   而l_len> = 1000。
     l_pdf_line = pdf_data + l_offset(1000)。
     将l_pdf_line附加到l_pdf_data。
     将1000加到l_offset。
     从l_len中减去1000。
   最后。

   如果l_len> 0。
     l_pdf_line = pdf_data + l_offset(l_len)。
     将l_pdf_line附加到l_pdf_data。
   万一。


 * -------------------------------------------------  -------------------
 * GUI下载工作正常
 * -------------------------------------------------  -------------------
 *现在pdf内容已准备就绪,可以存储在本地PC中
 *通话功能'GUI_DOWNLOAD'
 *出口
 *文件名='C:\ Documents and Settings \ Desktop \ shital.pdf'
 *文件类型='BIN'
 *桌子
 * data_tab = l_pdf_data。

 OPEN DATASET p_file以二进制模式输出。
 如果sy-subrc <> 0。
   消息ID'00'类型'E'数字'398'与'sy-subrc:'sy-subrc
           '打开文件错误:'(Z03)p_file。
 万一。

 环回l_pdf_data INTO l_pdf_line。
   将l_pdf_line传输到p_file。
 结局。

 CLOSE DATASET p_file。
 如果sy-subrc <> 0。
   消息ID'00'类型'E'数字'398'与'sy-subrc:'sy-subrc
           '关闭文件时出错:'(Z04)p_file。
 万一。
 

当前您可以看到,我已经注释掉了GUI_DOWNLOAD功能模块,但是当我尝试将文件下载到本地桌面时,它非常完美。

但是,当我尝试将相同的内容传递到应用程序服务器文件,然后尝试通过下载文件打开它时,它将打开空白pdf文件。

根据要求,我应该能够在Application Server上正确写入文件,如果从那里下载它,则应该正确打开PDF文件。

如果您需要有关此问题的更多详细信息,请告诉我。

致谢

Shital

编辑:shital phadake于2009年4月8日晚上9:39

6条回答
渐行渐远_HoldOn
2020-09-02 06:31

进行以下更改:

*将循环l_pdf_data输入到l_pdf_line。
将pdf_data传送到p_file。
* ENDLOOP。

*如果不起作用,则需要调整从服务器到PC的下载方式。

做。
清除:ls_bin,lv_len。
读取数据集iv_file INTO ls_bin长度lv_len。
IF sy-subrc <> 0.
如果lv_len> 0.
将lv_len添加到 lv_size。
附加ls_bin到lt_bin。
ENDIF。
退出。
ELSE。
将lv_len添加到lv_size。
APPEND ls_bin到lt_bin。
ENDIF。
ENDDO

呼叫方法cl_gui_frontend_services => gui_download
导出
bin_filesize = lv_size
filename = file
文件类型='BIN'

更改
data_tab = lt_bin

一周热门 更多>