2020-08-19 18:35发布
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
什么是ABAP2XLSX API。 如何将.XLSX文件从SAP发布到FTP服务器或从FTP服务器重新发布到SAP。
.2003年之前的XLS可以很好地与FTP服务器进行交互。
我的要求是使用最新的.XLS(2007年之前)或.XLSX发布数据
谢谢
Sandra Rossi
有关所有有价值的答案的建议和指南。
桑德拉·罗西
将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
这不是错误,而是警告。
5天前回到我的答案,因为情况没有改变:
我发现您甚至没有提供正确的文件扩展名,它应该是TXT 因为它包含制表符分隔的值。 XLS仅应用于 Excel二进制文件格式。
(当您在Excel中执行"另存为"或"保存副本"时,Excel二进制文件格式=名为" Excel 5.0/95"的格式;我也提到了" Excel 97/2003
如果您不希望看到此消息,请告诉客户更改程序以通过abap2xlsx生成扩展名为.xlsx并且数据为真实XLSX格式的文件(Excel 2007,也 称为Excel Office Open XML)。
这是我的最后一封邮件。 随时打开一个新问题,以在了解当前情况后用所有信息阐明您的问题。 谢谢。
我发布您的代码,以便人们可以直接查看它:
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
请使用COMMENT按钮评论,提问,添加详细信息等。ANSWER仅是提出解决方案,请在答案区域的右侧删除SAP文本。 p>
一个有效的答案是:" 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。 ...
最多设置5个标签!
Sandra Rossi
有关所有有价值的答案的建议和指南。
谢谢
桑德拉·罗西
将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
这不是错误,而是警告。
5天前回到我的答案,因为情况没有改变:
(当您在Excel中执行"另存为"或"保存副本"时,Excel二进制文件格式=名为" Excel 5.0/95"的格式;我也提到了" Excel 97/2003
如果您不希望看到此消息,请告诉客户更改程序以通过abap2xlsx生成扩展名为.xlsx并且数据为真实XLSX格式的文件(Excel 2007,也 称为Excel Office Open XML)。
这是我的最后一封邮件。 随时打开一个新问题,以在了解当前情况后用所有信息阐明您的问题。 谢谢。
我发布您的代码,以便人们可以直接查看它:
请使用COMMENT按钮评论,提问,添加详细信息等。ANSWER仅是提出解决方案,请在答案区域的右侧删除SAP文本。 p>
一个有效的答案是:" abap2xlsx可用于生成XLSX文件,例如:
一周热门 更多>