使用网关的文件附件

2020-08-30 16:51发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)大家好, 新方案:使用SAP N...

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

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


大家好,

新方案:使用SAP Netweaver Gateway上载和下载文件。

不知道该如何解决。

我希望对此要求提供宝贵的建议和建议。

在此先感谢

此致

吉宾·乔伊

7条回答
wang628962
2020-08-30 17:37

如果文件是通过表单上传的,请查找代码以获取文件内容

功能ZFM_GW_STREAM_READER。
*" ---------- -------------------------------------------------- ----------
*" *"本地接口:
*" IMPORTING
*" VALUE(IV_FILE_CONTENT)TYPE XSTRING
*" VALUE(IV_CONTENT_TYPE)TYPE STRING OPTIONAL < br> *" EXPORTING
*" VALUE(EV_FILE_CONTENT)类型XSTRING
*" VALUE(ET_REQUEST_HEADER)类型TIHTTPNVP
*" EXCEPTIONS
*" INVALID_FILE_CONTENT
*" ------ -------------------------------------------------- --------------
常量:lc_boundary TYPE字符串VALUE'boundary =',
lc_new_line TYPE字符串VALUE'0D0A',
lc_srt_file TYPE字符串VALUE'0D0A0D0A',
lc_key_val_sep TYPE字符串值':'。
数据:
lv_xlen TYPE int4,
lv_bolen TYPE int4,
lv_bvalue TYPE字符串,
lv_cufile_content TYPE字符串, lv_bxs TYPE字符串,
lv_header TYPE字符串,
lv_content_footer TYPE字符串,
lv_content TYPE字符串,
lv_footer TYPE字符串,
lv_end_file1 TYPE字符串,
lv_end_file2 TYPE字符串,
lv_bxvalue TYPE xstring,
lt_fnd_boundary TYPE match_result_tab,
lt_fnd_temp TYPE match_result_tab,
ls_fnd_boundary TYPE match_result,
ls_headers TYPE ihttpnvp,
lv_xsheaders TYPE ls_xsheaders TYPE字符串,
lt_xsheaders TYPE TABLE OF字符串。

数据:lv_contant_final_val TYPE字符串,
lv_contant_temp_val TYPE字符串,
lv_content_type TYPE字符串,
lv_content_type_xstr TYPE。 br> lv_cufile_content = iv_file_content。
lv_content_type = iv_content_typ e。

"在SP5服务器中,内容类型可能为空。 因此,如果条件用于从xstring内容中获取文件名/内容类型,则
如果lv_content_type是INITIAL。
"拆分出现新行的xstring。
SPLIT lv_cufile_content AT lc_new_line INTO lv_contant_final_val lv_contant_temp_val。
"从xstring内容中删除两个破折号。
SHIFT lv_contant_final_val按4个位置左移。
lv_content_type_xstr = lv_contant_final_val。
CLEAR lv_contant 调用功能'ECATT_CONV_XSTRING_TO_STRING'
导出
im_xstring = lv_content_type_xstr
IM_ENCODING ='UTF-8'
IMPORTING
EX_STRING = lv_contant_final_val。

"将前缀数据添加到字符串值 。
IF sy-subrc =0。
CONCATENATE'multipart/form-data; boundary ='lv_contant_final_val INTO lv_content_type。
ENDIF。

ENDIF。

内容类型的边界值
查找第一 出现lc_boundary IN
lv_content_type
结果lt_fnd_boundary。
检查sy-subrc EQ 0。
读取表lt_fnd_boundary INTO ls_fnd_boundary INDEX 1。
lv_bolen = ls_fnd_bound。 >"使用额外的-(-<边界值>)
为身体创建身体边界值,CONCATENATE'-'lv_content_type + lv_bolen INTO lv_bvalue。
通话功能'ECATT_CONV_STRING_TO_XSTRING'
导出
im_string = lv_bvalue
导入
ex_xstring = lv_bxvalue。
lv_bxs = lv_bxvalue。
lv_xlen = strlen(lv_bxs)。
"验证是否用新行(ODOA)替换请求正文中的边界键
IF lv_cufile_content + 0(lv_xlen)EQ lv_bxvalue AND lv_cufile_content + lv_xlen(4)EQ lc_new_line。
"从正文边界键中的正文请求中分割标题,
SPLIT lv_cufile_content AT lc_srt_file INTO lv_header。 来自主体边界键的来自主体的页脚请求
" f 以后,以两种格式开始
"一种是,并用新行(ODOA)
",另一种是-
合并lc_new_line lv_bxs lc_new_line INTO lv_end_file1。
查找lv_end_file1 IN的第一次出现。
IF sy-subrc EQ 0。
拆分lv_content_footer AT lv_end_file1 INTO lv_content lv_footer。
ELSE。
链接lc_new_line 2D D. br>清除lt_fnd_temp。
查找lv_end_file2 IN的第一次出现
lv_content_footer。
IF sy-subrc EQ 0。
拆分lv_content_footer AT lv_end_file2 INTO lv_content lv_footer。。 。 "没有结尾主体边界键
ENDIF。
ENDIF。
ev_file_content = lv_content。
ELSE。
RAISE invalid_file_content。"没有起始主体边界键
ENDIF。
"获取 来自请求
SPLIT lv_header AT lc_new_line INTO TABLE lt_xsheaders的请求信息。
lt_xsheaders LOOP AT到2的ls_xsheaders LOOP AT。
lv_xsheaders = ls_xsheaders。 im_xstring = lv_xsheaders
导入
ex_string = lv_sheaders。
拆分lv_sheaders AT lc_key_val_sep INTO ls_headers-name ls_headers-value。
如果sy-subrc EQ0。
CONDENSE:ls_headers 值。
APPEND将ls_headers添加到et_request_header。
ENDIF。
ENDLOOP。
ENDFUNCTION。 >

您是否找到了有关如何删除webkitformboundary的解决方案? 我也面临同样的问题,感谢您的帮助。

谢谢

Rutul

一周热门 更多>