读取 SMW0中 txt 文件并解决乱码问题

作者:斌将军 约 4 分钟阅读 更新日期:2025-03-02 1 年前更新 标签:ABAP, Data Engineering, WM, 仓库管理, 工具, 开发, 技术, 数据工程
读取 SMW0中 txt 文件并解决乱码问题 - 封面图
读取 SMW0中 txt 文件并解决乱码问题 - 封面图

**1**

**文档说明**

读取 SMW0中 txt 文件并解决乱码问题 - 封面图
读取 SMW0中 txt 文件并解决乱码问题 - 封面图

根据需求,需要上传一段HTML代码,在功能中输出。所以,就需要将这段标准代码上传到SAP中用于读取展示。

**2**

**需求实现**

读取 SMW0中 txt 文件并解决乱码问题 - 封面图
读取 SMW0中 txt 文件并解决乱码问题 - 封面图

首先,准备HTML代码的txt文件

读取 SMW0中 txt 文件并解决乱码问题 - 封面图
读取 SMW0中 txt 文件并解决乱码问题 - 封面图

运行事务码SMW0上传txt文件到SAP,选择二进制数据。

读取 SMW0中 txt 文件并解决乱码问题 - 封面图
读取 SMW0中 txt 文件并解决乱码问题 - 封面图

上传附件对象

读取 SMW0中 txt 文件并解决乱码问题 - 封面图
读取 SMW0中 txt 文件并解决乱码问题 - 封面图

系统中可能没有配置txt的文件格式,需要设置一下MIME类型

读取 SMW0中 txt 文件并解决乱码问题 - 封面图
读取 SMW0中 txt 文件并解决乱码问题 - 封面图

选择菜单

读取 SMW0中 txt 文件并解决乱码问题 - 封面图
读取 SMW0中 txt 文件并解决乱码问题 - 封面图

点击创建txt类型

读取 SMW0中 txt 文件并解决乱码问题 - 封面图
读取 SMW0中 txt 文件并解决乱码问题 - 封面图

通过函数WWWDATA_IMPORT 读

取二进制数据,之后通过函数SCMS_BINARY_TO_STRING将其转换为STRING字符串,在调试窗口的HTML视图下就能看到效果

读取 SMW0中 txt 文件并解决乱码问题 - 封面图
读取 SMW0中 txt 文件并解决乱码问题 - 封面图

但有的系统会存在乱码问题,所以可以在函数SCMS_BINARY_TO_STRING前加入函数NLS_GET_FRONTEND_CP获取当前系统语言的编码,并将编码传到函数SCMS_BINARY_TO_STRING中

读取 SMW0中 txt 文件并解决乱码问题 - 封面图
读取 SMW0中 txt 文件并解决乱码问题 - 封面图

参考代码

REPORT ytest001. DATA: lv_codepage_numc TYPE cpcodepage, lv_encoding TYPE abap_encoding, lt_mime TYPE TABLE OF w3mime, ls_mime TYPE w3mime, lv_filesize TYPE i, lv_xstring TYPE xstring, ls_key TYPE wwwdatatab. DATA:lv_string TYPE string, lv_length TYPE i. "查询SMW0文件ls_key-relid = 'MI'.ls_key-objid = 'ZHTML'.SELECT * FROM wwwparams INTO TABLE @DATA(lt_wwwparam) WHERE relid = @ls_key-relid AND objid = @ls_key-objid. READ TABLE lt_wwwparam INTO DATA(ls_wwwparam) WITH KEY name = 'filesize'.IF sy-subrc EQ 0. lv_filesize = ls_wwwparam-value.ENDIF. * 获取SMW0的数据CALL FUNCTION 'WWWDATA_IMPORT' EXPORTING key = ls_key TABLES mime = lt_mime EXCEPTIONS wrong_object_type = 1 import_error = 2 OTHERS = 99. "获取当前语言编码CALL FUNCTION 'NLS_GET_FRONTEND_CP' EXPORTING langu = sy-langu fetype = 'MS' IMPORTING frontend_codepage = lv_codepage_numc EXCEPTIONS illegal_syst_codepage = 1 no_frontend_cp_found = 2 internal_or_db_error = 3 OTHERS = 4. IF sy-subrc <> 0. RETURN.ENDIF. lv_encoding = lv_codepage_numc."编码编号 "BIN转STRINGCALL FUNCTION 'SCMS_BINARY_TO_STRING' EXPORTING input_length = lv_filesize* FIRST_LINE = 0* LAST_LINE = 0* MIMETYPE = ' ' encoding = lv_encoding IMPORTING text_buffer = lv_string output_length = lv_length TABLES binary_tab = lt_mime EXCEPTIONS failed = 1 OTHERS = 2.IF sy-subrc <> 0.* Implement suitable error handling hereENDIF. WRITE:lv_string."输出的HTML语言文本

**—— 希望本篇文章对您有所帮助 ——**

斌将军

关于作者:斌将军

企业信息化与 SAP 技术顾问,长期专注 SAP ABAP、FI/CO、MM、SD 等模块的技术分享与实战经验总结。查看更多介绍

来源说明:本文内容由「读取SMW0中txt文件并解决乱码问题.md」整理生成,仅用于内部技术分享与学习交流。