1、文档说明
根据需求,需要上传一段HTML代码,在功能中输出。所以,就需要将这段标准代码上传到SAP中用于读取展示。
2、需求实现
首先,准备HTML代码的txt文件
运行事务码SMW0上传txt文件到SAP,选择二进制数据。
上传附件对象
系统中可能没有配置txt的文件格式,需要设置一下MIME类型
选择菜单
点击创建txt类型
通过函数WWWDATA_IMPORT读取二进制数据,之后通过函数SCMS_BINARY_TO_STRING将其转换为STRING字符串,在调试窗口的HTML视图下就能看到效果
但有的系统会存在乱码问题,所以可以在函数SCMS_BINARY_TO_STRING前加入函数NLS_GET_FRONTEND_CP获取当前系统语言的编码,并将编码传到函数SCMS_BINARY_TO_STRING中
参考代码
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转STRING
CALL 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 here
ENDIF.
WRITE:lv_string."输出的HTML语言文本