将存档的PDF保存到本地PC

2020-08-18 08:02发布

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

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


您好,我的要求是将多个已存档的pdf文件保存到本地PC上的目标位置。 我正在尝试使用" ARCHIV_GET_TABLE"以二进制形式获取存档的pdf,然后将其传递给" GUI_DOWNLOAD"。 这有点工作,但保存的pdf已损坏。 我发现的是执行后,即使从sy-subrc,我也从" ARCHIV_GET_TABLE"中获取奇怪的数据。当我在记事本中打开保存的pdf时,显然出现了问题。 这是打开的pdf的内容。

 <!DOCTYPE html>
 
 <头>
 
 
 
  
     
  
    

这是我正在使用的代码。 归档对象肯定存在,我可以使用IBM Content Manager通过OAAD打开它。 使用IBM归档可能是问题吗? 感谢您的任何建议。

通话功能" ARCHIV_GET_TABLE"
  出口
  AR_OBJECT ='ZOZEO'
  OBJECT_ID ='9000000887'
  SAP_OBJECT ='VBRK'
  输入
 *长度=
  BINLENGTH = LV_BINFILESIZE
  桌子
  ARCHIVOBJECT = GT_ARCHIVOBJECT []
  BINARCHIVOBJECT = GT_BINARCHIVOBJECT []

 通话功能'GUI_DOWNLOAD'
  出口
 " BIN_FILESIZE = LV_BINFILESIZE
  FILENAME = lv_filename
  FILETYPE ='BIN'
  桌子
  DATA_TAB = GT_BINARCHIVOBJECT []

 

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

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


您好,我的要求是将多个已存档的pdf文件保存到本地PC上的目标位置。 我正在尝试使用" ARCHIV_GET_TABLE"以二进制形式获取存档的pdf,然后将其传递给" GUI_DOWNLOAD"。 这有点工作,但保存的pdf已损坏。 我发现的是执行后,即使从sy-subrc,我也从" ARCHIV_GET_TABLE"中获取奇怪的数据。当我在记事本中打开保存的pdf时,显然出现了问题。 这是打开的pdf的内容。

 <!DOCTYPE html>
 
 <头>
 
 
 
  
     
  
    

这是我正在使用的代码。 归档对象肯定存在,我可以使用IBM Content Manager通过OAAD打开它。 使用IBM归档可能是问题吗? 感谢您的任何建议。

通话功能" ARCHIV_GET_TABLE"
  出口
  AR_OBJECT ='ZOZEO'
  OBJECT_ID ='9000000887'
  SAP_OBJECT ='VBRK'
  输入
 *长度=
  BINLENGTH = LV_BINFILESIZE
  桌子
  ARCHIVOBJECT = GT_ARCHIVOBJECT []
  BINARCHIVOBJECT = GT_BINARCHIVOBJECT []

 通话功能'GUI_DOWNLOAD'
  出口
 " BIN_FILESIZE = LV_BINFILESIZE
  FILENAME = lv_filename
  FILETYPE ='BIN'
  桌子
  DATA_TAB = GT_BINARCHIVOBJECT []

 
付费偷看设置
发送
5条回答
昵称总是被占用
1楼-- · 2020-08-18 08:36

您可以尝试下面的逻辑。

通过传递SAP_OBJECT和OBJECT_ID从TOA01表中获取ARCHIV_ID和ARC_DOC_ID。

在LT_BIN中,您将拥有二进制数据

选择*
 从TOA01
 INTO ls_toa01
 SAP_OBJECT ='VBRK'并且
 OBJECT_ID ='9000000887'。


   通话功能'SCMS_DOC_READ'
     出口
       mandt = sy-mandt
       stor_cat = lv_stor
       crep_id = ls_toa01-archiv_id
       doc_id = ls_toa01-arc_doc_id
     桌子
       access_info = lt_acess
 * CONTENT_TXT =
       content_bin = lt_bin
     例外情况
       bad_storage_type = 1
       bad_request = 2
       未经授权= 3
       comp_not_found = 4
       not_found = 5
       禁止= 6
       冲突= 7
       internal_server_error = 8
       error_http = 9
       error_signature = 10
       error_config = 11
       error_format = 12
       error_parameter = 13
       错误= 14
       其他= 15。
   如果sy-subrc <> 0。
 *在这里实施适当的错误处理
   ENDIF。
一只江湖小虾
2楼-- · 2020-08-18 08:39

好吧,您可以在记事本中打开几乎所有内容...在记事本中打开PDF文件当然不是最佳选择,但是当pdf文件损坏并且您无法在pdf阅读器中打开它时,打开 它在记事本中让您大致了解该文件中的内容以及它是对还是错。出于某种原因,我什至无法插入文件甚至是.txt文件,也应该允许它...因此,我至少上传了pdf文件的.png屏幕 在记事本中打开。

snimka.png

槿木_熙
3楼-- · 2020-08-18 08:50
# p #

好的。 我不了解您是否真的认为问题中的HTML是PDF。 真正的PDF文件以ASCII字符%PDF-1.3或接近的字符开头(取决于版本)。

因此,您的问题是您错误地访问了Content Management系统。 您能否解释一下ABAP程序,ARCHIV_GET_TABLE的内容,如何获取档案ID等? 以及如何归档PDF文件?

DafaDDDa
4楼-- · 2020-08-18 08:23

PDF文件是使用FM ARCHIV_CREATE_TABLE归档的。

我正在做一点研究,发现的是:

1。 我尝试了ARCHIVE_GET_TABLE,ARCHIVEOBJECT_GET_TABLE,ALINK_RFC_TABLE_GET和SCMS_HTTP_GET。 结果是损坏的PDF的二进制版本相同(上载的.png屏幕)。

2。 无论我尝试使用上述FM检索什么文件,结果(二进制结果)始终相同。 所以我想无论请求如何,内容服务器都会给我一些输出...或者不理解我的请求...

其他有用的信息:

在OAC0中定义了内容:

文档类型= ARCHLINK

存储类型= HTTP内容服务器

链接表为TOA01。 存储的对象类型是带有自定义文档类型的SEPAMANDAT。

粗暴的香蕉
5楼-- · 2020-08-18 08:31

我尝试了您的逻辑,但结果是相同的,损坏的PDF文件,其内容与我在原始问题中发布的内容很奇怪。/p>

一周热门 更多>