如何使用ABAP2XLSX API将.XLSX文件发布到FTP服务器

2020-08-19 18:35发布

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

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


什么是ABAP2XLSX API。 如何将.XLSX文件从SAP发布到FTP服务器或从FTP服务器重新发布到SAP。

.2003年之前的XLS可以很好地与FTP服务器进行交互。

我的要求是使用最新的.XLS(2007年之前)或.XLSX发布数据

谢谢

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

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


什么是ABAP2XLSX API。 如何将.XLSX文件从SAP发布到FTP服务器或从FTP服务器重新发布到SAP。

.2003年之前的XLS可以很好地与FTP服务器进行交互。

我的要求是使用最新的.XLS(2007年之前)或.XLSX发布数据

谢谢

付费偷看设置
发送
5条回答
Climb_Ma
1楼-- · 2020-08-19 19:17

Sandra Rossi

有关所有有价值的答案的建议和指南。

谢谢

Nir深蓝
2楼-- · 2020-08-19 19:07

桑德拉·罗西

将ABAP代码传输到FTP时,我遇到"错误是"问题,因为文件扩展名的文件格式无效,因此Excel无法打开文件" test.xls"。 验证文件未损坏,并且文件扩展名与文件的格式""

相匹配

并显示消息"文件与Excel版本不兼容"

我正在附加代码,但找不到逻辑不能用于扩展的点。 您可以看到代码

WA_EXCEL-WRK_DELIM1 = CL_ABAP_CHAR_UTILITIES => HORIZONTAL_TAB。

用于Excel的列分隔

以及分配.xls .ie的点,

WRK_FILE ='\ Main \ TEST \ Material_Stock.xls'。

我想要出错的地方,并希望打开.xls和ftp文件的输出而不会显示错误屏幕 test.txt

路亽曱_Ryan
3楼-- · 2020-08-19 18:59

这不是错误,而是警告。

5天前回到我的答案,因为情况没有改变:

我发现您甚至没有提供正确的文件扩展名,它应该是TXT
 因为它包含制表符分隔的值。  XLS仅应用于
 Excel二进制文件格式。

(当您在Excel中执行"另存为"或"保存副本"时,Excel二进制文件格式=名为" Excel 5.0/95"的格式;我也提到了" Excel 97/2003

如果您不希望看到此消息,请告诉客户更改程序以通过abap2xlsx生成扩展名为.xlsx并且数据为真实XLSX格式的文件(Excel 2007,也 称为Excel Office Open XML)。

这是我的最后一封邮件。 随时打开一个新问题,以在了解当前情况后用所有信息阐明您的问题。 谢谢。

clasier
4楼-- · 2020-08-19 18:56

我发布您的代码,以便人们可以直接查看它:

 REPORT zmm_material_stock_sap_to_ftp。
 类型:ty_mard的开始,"材料库存表
         werks TYPE mard-werks,"植物
         matnr TYPE mard-matnr,"材料代码
         labst TYPE mard-labst,"未限制使用的估价存货
         lgort TYPE mard-lgort,"存储位置
       ty_mard的结尾,
       ty_fin的开始,
         类型c长度为10的"怪人"," MARD-WERKS","植物"
         matnr TYPE C LENGTH 18," MARD-MATNR",材料代码
         labst(20)TYPE C," N",已估价的非限制使用库存MARD-LABST,
         lgort TYPE C LENGTH 10," MARD-LGORT","存储位置"
       结束于ty_fin,
       开始于excel_st,
         类型c长度为10的"怪人"," MARD-WERKS","植物"
         wrk_delim1 TYPE c," X"
         matnr TYPE C LENGTH 18," MARD-MATNR",材料代码
         wrk_delim2 TYPE c," N,
         labst(20)TYPE C," N",已估价的非限制使用库存MARD-LABST,
         wrk_delim3 TYPE c," X
         lgort TYPE C LENGTH 10," MARD-LGORT","存储位置",
       excel_st结束。
 数据:ty_mard的it_mard类型标准表,
      ty_fin的it_fin类型标准表,
      it_excel excel_st的标准类型表。
 数据:wa_fin TYPE ty_fin,
      wa_mard TYPE ty_mard,
      wa_excel TYPE excel_st。
 表:马尔。

 选择屏幕:带有标题标题文本001的b1块的开始。
 参数:p_date像sy-data的DEFAULT sy-datum。
 选择屏幕:块结尾b1。

 初始化。
   清除:wa_mard,
   wa_excel,
   wa_fin。
   刷新:it_mard,
   it_excel,
   it_fin。

 选择开始。
   执行final_table_header。
   执行get_mard_table_details。
   执行excel_format_template。
   执行sap_stock_excel_file_to_ftp。

 表格get_mard_table_details。
   选择mard〜werks mard〜matnr mard〜labst mard〜lgort进入表it_mard FROM mard
   内连接mara ON(mara〜matnr = mard〜matnr)
   在哪里mara〜mtart ='ZFRT'
   AND wers IN('5000',
   '6000')
   AND lgort IN('1001','1101')。

   如果sy-subrc = 0。
     排序:it_mard,作者:matnr werks lgort。
     循环到it_mard INTO wa_mard。
       清除:wa_fin。
       wa_fin-werks = wa_mard-werks。
       wa_fin-matnr = wa_mard-matnr。
       wa_fin-labst = wa_mard-labst。
       wa_fin-lgort = wa_mard-lgort。
       将wa_fin附加到it_fin。
       清除:wa_fin,wa_mard。
     结局。
   万一。
 ENDFORM。  " GET_MARD_TABLE_DETAILS

 FORM excel_format_template。
   循环到it_fin INTO wa_fin。
     移动对应的wa_fin到wa_excel。
     wa_excel-wrk_delim1 = cl_abap_char_utilities =>水平标签。 或| \ t |
     wa_excel-wrk_delim2 = cl_abap_char_utilities =>水平标签。 或| \ t |
     wa_excel-wrk_delim3 = cl_abap_char_utilities =>水平标签。 或| \ t |
     附加wa_excel至it_excel。
     清除:wa_mard,wa_excel。
   结局。
 ENDFORM。  " EXCEL_FORMAT_TEMPLATE

 格式sap_stock_excel_file_to_ftp。
   DATA:l_user(30)TYPE C VALUE'test123'," FTP服务器的用户名
        l_pwd(30)TYPE c VALUE'1234567'," ftp服务器的密码
        l_host(64)TYPE c VALUE'XXX.XX.XXX.X'," FTP服务器的IP地址
        l_dest LIKE rfcdes-rfcdest值'SAPFTPA'。  "背景RFC目标
   数据:w_hdl TYPE i,
        c_key TYPE i VALUE 26101957,
        l_slen TYPE i。
   数据:wrk_file类型char200。
   清除:wrk_file。
   wrk_file ='\ Main \ TEST \ Material_Stock.xls'。
   将扩展检查设置为OFF。
   l_slen = strlen(l_pwd)。
   通话功能'HTTP_SCRAMBLE'
     出口
       源= l_pwd
       sourcelen = l_slen
       键= c_key
     输入
       目的地= l_pwd。
 *使用FTP连接到服务器
   通话功能'FTP_CONNECT'
     出口
       用户= l_user
       密码= l_pwd
       主机= l_host
       rfc_destination = l_dest
     输入
       句柄= w_hdl
     例外情况
       其他= 1。
   通话功能'FTP_R3_TO_SERVER'
     出口
       句柄= w_hdl
       fname = wrk_file
       character_mode ='X'
     桌子
       文字= it_excel
     例外情况
       tcpip_error = 1
       command_error = 2
       data_error = 3
       其他= 4。
   如果sy-subrc <> 0。
     消息ID sy-msgid类型sy-msgty编号sy-msgno
     与sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4
     RAISING invalid_output_file。
   万一。
   通话功能'FTP_DISCONNECT'
     出口
       句柄= w_hdl。
   通话功能'RFC_CONNECTION_CLOSE'
     出口
       目的地= l_dest
     例外情况
       其他= 1。
 ENDFORM。  " SAP_STOCK_EXCEL_FILE_TO_FTP

 FORM final_table_header。
   wa_fin-werks ='植物'。
   wa_fin-matnr ='材料'。
   wa_fin-labst ='库存数量。  '。
   wa_fin-lgort ='位置'。
   将wa_fin附加到it_fin。
   清除:wa_fin。
 ENDFORM。  " FINAL_TABLE_HEADER
 
蓋茨
5楼-- · 2020-08-19 19:20

请使用COMMENT按钮评论,提问,添加详细信息等。ANSWER仅是提出解决方案,请在答案区域的右侧删除SAP文本。

一个有效的答案是:" abap2xlsx可用于生成XLSX文件,例如:

数据:lo_excel类型参考zcl_excel,
       lo_worksheet类型参考zcl_excel_worksheet,
       lo_writer类型参考zif_excel_writer,
       xstring TYPE xstring。

 创建对象lo_excel。
 lo_worksheet = lo_excel-> get_active_worksheet()。
 lo_worksheet-> set_cell(ip_column = 1 ip_row = 1 ip_value ='Hello World')。
 创建对象lo_writer类型zcl_excel_writer_2007。
 xstring = lo_writer-> write_file(lo_excel)。

 ...

 "等代码,用于将XSTRING转换为BLOB/BINARY表并将其传输到FTP

 ...

   通话功能'FTP_R3_TO_SERVER'
     出口
       句柄= w_hdl
       fname = wrk_file
       字符模式= ABAP_FALSE
     桌子
       blob = lt_binary
     例外情况
       其他= 4。

 ... 

一周热门 更多>