2020-08-30 20:46发布
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
尊敬的大师,
我编写了一个自定义程序,然后使用FM: text_convert_xls_to_sap 将excel上载到SAP。
有些用户成功上传了excel,但是有些用户上传失败。
最奇怪的是,他们用自己的电脑上传同一文档。
然后我尝试复制未能上载的用户ID,然后我登录SAP上载excel,上载成功。...
为什么会这样?
任何建议?
谢谢。
亲爱的
对不起,用户无法上传excel的原因与Spreadsheet软件有关,而不与ABAP代码有关。 用户公司中有两种办公软件,Microsoft和Kingsoft。 当用户将Excel上载到SAP时,金山词霸将弹出消息:无效的指针操作...。因此,我卸载了金山词霸,效果很好。
我真的很感谢您的帮助,即使我尝试了您提到的解决方案,也没有用,因为问题的关键不是ABAP代码。
非常感谢您!
是的
给出文件在Presentation Server中的正确路径。
或者您可以使用此FM获取F4帮助来浏览文件位置并选择路径。
参数:p_ufile,如rlgrap文件名。
在p_ufile的值请求的选择屏幕上。执行get_file。
form get_file。 调用函数'KD_GET_FILENAME_ON_F4'导出 mask =''更改 file_name = p_ufile 异常 mask_too_long = 1 其他=2。 sy-subrc <> 0. 消息i003(ztmtl)。 endif。终端格式。
这将使用正确的路径获取文件。
希望这会有所帮助。
关于...
苏丹娜
嗨Ya-Chun,
您得到什么错误?
您是否要通过变体在选择屏幕中提供输入?
在这种情况下,您需要更改文件位置的路径。
Sultana
这是正常情况..我想,就您而言。.文件路径超过128个字符时会发生。问题在于下一行。 p>
参数:P_FILE TYPE RLGRAP-FILENAME MODIF ID GP2。
RLGRAP-FILENAME只能容纳128个字符。
当用户从C驱动器或D驱动器加载文件时,它可以工作;每当用户尝试从桌面加载文件时,文件路径可能会被截断,因此可能无法运行。
有两种方法可以解决您的问题。
1)您可以要求用户始终从目录加载文件,而不要从桌面加载excel文件作为文件 路径因长度而被截断。
2)更改参数:P_FILE(255)MODIF ID GP2。
并将FM(TEXT_CONVERT_XLS_TO_SAP)复制到Z *,并确保文件路径可以容纳255个字符。
我想以上信息将帮助您关闭线程。
SaiRam
嗨,
您能提供给我们代码..文件格式等吗
致谢
阿莫尔
嗨Vinodkumar,
它是.XLS格式,而不是xlsx。
上传失败后是否检查过sy--subrc?
在这种情况下,我想建议另一种在上载按钮的选择屏幕上选择文件的方法。 调用FM text_convert_xls_to_sap之前,请检查以下代码。
为p_upload选择值的选择屏幕。
呼叫方法cl_gui_frontend_services => get_desktop_directory 更改 desktop_directory = gv_desktop 例外情况 cntl_error = 1 error_no_gui = 2 not_supported_by_gui = 3 其他=4。 > IF sy-subrc <>0。消息ID sy-msgid类型sy-msgty编号sy-msgno 带sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4。 ENDIF。
调用方法cl_gui_frontend_services => file_open_dialog 导出 window_title ='选择Excel文件' default_extension ='XLSX' file_filter ='Excel文件(* .XLS)| * .XLS | Excel文件(* .XLSX)| * .XLSX |'初始目录= gv_desktop 更改 file_table = gt_file_table rc = gv_rc 例外情况 file_open_dialog_failed = 1 cntl_error = 2 error_no_gui = 3 not_supported_by_gui = 4 其他= 5。
如果sy-subrc = 0并且gv_rc =1。读取表gt_file_table INTO gs_file_table索引1。 p_upload = gs_file_table-filename。 ENDIF。
******************************
现在您可以在以下程序的选择区域中使用FM TEXT_CONVERT ****
通话功能'TEXT_CONVERT_XLS_TO_SAP'导出 i_field_seperator ='X'
i_line_header ='X'
i_tab_raw_data = lt_tab_raw_data i_filename = p_upload 表格 i_tab_converted_data = 例外情况 conversion_failed = 1 OTHERS =2。 IF sy-subrc <> 0. 消息ID sy-msgid类型sy-msgty编号sy-msgno 带sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4。 ENDIF。
谢谢
Deeps
最多设置5个标签!
亲爱的
对不起,用户无法上传excel的原因与Spreadsheet软件有关,而不与ABAP代码有关。 用户公司中有两种办公软件,Microsoft和Kingsoft。 当用户将Excel上载到SAP时,金山词霸将弹出消息:无效的指针操作...。因此,我卸载了金山词霸,效果很好。
我真的很感谢您的帮助,即使我尝试了您提到的解决方案,也没有用,因为问题的关键不是ABAP代码。
非常感谢您!
是的
给出文件在Presentation Server中的正确路径。
或者您可以使用此FM获取F4帮助来浏览文件位置并选择路径。
参数:p_ufile,如rlgrap文件名。
在p_ufile的值请求的选择屏幕上。
执行get_file。
form get_file。
调用函数'KD_GET_FILENAME_ON_F4'
导出
mask =''
更改
file_name = p_ufile
异常
mask_too_long = 1
其他=2。
sy-subrc <> 0.
消息i003(ztmtl)。
endif。
终端格式。
这将使用正确的路径获取文件。
希望这会有所帮助。
关于...
苏丹娜
嗨Ya-Chun,
您得到什么错误?
您是否要通过变体在选择屏幕中提供输入?
在这种情况下,您需要更改文件位置的路径。
关于...
Sultana
这是正常情况..我想,就您而言。.文件路径超过128个字符时会发生。问题在于下一行。 p>
参数:P_FILE TYPE RLGRAP-FILENAME MODIF ID GP2。
RLGRAP-FILENAME只能容纳128个字符。
当用户从C驱动器或D驱动器加载文件时,它可以工作;每当用户尝试从桌面加载文件时,文件路径可能会被截断,因此可能无法运行。
有两种方法可以解决您的问题。
1)您可以要求用户始终从目录加载文件,而不要从桌面加载excel文件作为文件 路径因长度而被截断。
2)更改参数:P_FILE(255)MODIF ID GP2。
并将FM(TEXT_CONVERT_XLS_TO_SAP)复制到Z *,并确保文件路径可以容纳255个字符。
我想以上信息将帮助您关闭线程。
< p>关于,SaiRam
嗨,
您能提供给我们代码..文件格式等吗
致谢
阿莫尔
嗨Vinodkumar,
它是.XLS格式,而不是xlsx。
嗨,
上传失败后是否检查过sy--subrc?
在这种情况下,我想建议另一种在上载按钮的选择屏幕上选择文件的方法。 调用FM text_convert_xls_to_sap之前,请检查以下代码。
为p_upload选择值的选择屏幕。
呼叫方法cl_gui_frontend_services => get_desktop_directory
更改
desktop_directory = gv_desktop
例外情况
cntl_error = 1
error_no_gui = 2
not_supported_by_gui = 3
其他=4。
> IF sy-subrc <>0。
消息ID sy-msgid类型sy-msgty编号sy-msgno
带sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4。
ENDIF。
调用方法cl_gui_frontend_services => file_open_dialog
导出
window_title ='选择Excel文件'
default_extension ='XLSX'
file_filter ='Excel文件(* .XLS)| * .XLS | Excel文件(* .XLSX)| * .XLSX |'
初始目录= gv_desktop
更改
file_table = gt_file_table
rc = gv_rc
例外情况
file_open_dialog_failed = 1
cntl_error = 2
error_no_gui = 3
not_supported_by_gui = 4
其他= 5。
如果sy-subrc = 0并且gv_rc =1。
读取表gt_file_table INTO gs_file_table索引1。
p_upload = gs_file_table-filename。
ENDIF。
******************************
现在您可以在以下程序的选择区域中使用FM TEXT_CONVERT ****
通话功能'TEXT_CONVERT_XLS_TO_SAP'
导出
i_field_seperator ='X'
i_line_header ='X'
i_tab_raw_data = lt_tab_raw_data
i_filename = p_upload
表格
i_tab_converted_data =
例外情况
conversion_failed = 1
OTHERS =2。
IF sy-subrc <> 0.
消息ID sy-msgid类型sy-msgty编号sy-msgno
带sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4。
ENDIF。
谢谢
Deeps
一周热门 更多>