XSTRING的介绍
SAP ABAP 理解RAWSTRING(XSTRING) 类型-腾讯云开发者社区-腾讯云
XString,String以及SString 类型区别 | 摆渡SAP
SAP ABAP 理解RAWSTRING(XSTRING) 类型
RAWSTRING 和 STRING 类型具有可变长度。可以指定这些类型的最大长度,但没有上限。
SSTRING 类型从版本 6.10 开始可用,并且具有可变长度。必须指定其最大长度,并且限制为 255。与 CHAR 相比,此类型的优点是它被分配给 ABAP 类型字符串。
这里不对
SSTRING 是release 6.10之后才有的一个数据类型,长度也可变,但是最长只能指定255个字符。长度是可变的,其最大值必须指定且上限为255。与CHAR类型相比其优势是它与ABAP type string进行映射。
https://www.cnblogs.com/jiangzhengjun/p/4292791.html
string类型 = sstring类型.可以直接赋值"不会出错.
1)xstring不支持中文,
DATA str TYPE sstring.
DATA str1 TYPE sstring.
DATA str2 TYPE xstring. "这个就是rawstring类型
DATA str3 TYPE string.
str1 = '天天向上'.
str2 = '天天向上'.
str3 = '天天向上'.
WRITE :/ 'sstring:',str1.
WRITE :/ 'xstring:',str2.
WRITE :/ 'string:',str3.
2)xstring支持6个字母
DATA str TYPE sstring.
DATA str1 TYPE sstring.
DATA str2 TYPE xstring. "这个就是rawstring类型
DATA str3 TYPE string.
str1 = 'ABCDEFGH'.
str2 = 'ABCDEFGH'.
str3 = 'ABCDEFGH'.
WRITE :/ 'sstring:',str1.
WRITE :/ 'xstring:',str2.
WRITE :/ 'string:',str3.
3)Xstring不支持小写字母
DATA str TYPE sstring.
DATA str1 TYPE sstring.
DATA str2 TYPE xstring. "这个就是rawstring类型
DATA str3 TYPE string.
str1 = 'abcdefgh'.
str2 = 'abcdefgh'.
str3 = 'abcdefgh'.
WRITE :/ 'sstring:',str1.
WRITE :/ 'xstring:',str2.
WRITE :/ 'string:',str3.
4)当xstring一旦遇到不支持的,立刻停止,还有,大家要注意后面的0
DATA str TYPE sstring.
DATA str1 TYPE sstring.
DATA str2 TYPE xstring. "这个就是rawstring类型
DATA str3 TYPE string.
str1 = 'ABCefgh'.
str2 = 'ABCefgh'.
str3 = 'ABCefgh'.
WRITE :/ 'sstring:',str1.
WRITE :/ 'xstring:',str2.
WRITE :/ 'string:',str3.
5)如果xstring的变量,没有到6个字母的时候,都会后面补0
DATA str TYPE sstring.
DATA str1 TYPE sstring.
DATA str2 TYPE xstring. "这个就是rawstring类型
DATA str3 TYPE string.
str1 = 'ABC'.
str2 = 'ABC'.
str3 = 'ABC'.
WRITE :/ 'sstring:',str1.
WRITE :/ 'xstring:',str2.
WRITE :/ 'string:',str3.
当一个xstring变量不支持的值,赋值给它的时候,它会取到自己能读取的部分,而且就算最后想还原,也不可能了。
STRING类型转xstring类型
SAP-ABAP-740新语法解析中文版三:转换操作符CONV_abap conv_Qunending的博客-CSDN博客
方法一:
740前
我们可以使用 方法 cl_abap_codepage=>convert_to 来转换字段类型,如下列代码
DATA text TYPE c LENGTH 255.
DATA helper TYPE string.
DATA xstr TYPE xstring.
helper = text. "char类型转换为string类型直接用等于赋值即可 helper = text.
xstr = cl_abap_codepage=>convert_to( source = helper ). "string类型转换为xstring类型
740之后
可以结合快速定义来转换类型
DATA text TYPE c LENGTH 255.
DATA(xstr1) = cl_abap_codepage=>convert_to( source = CONV string( text ) ).""指定转换为xstring类型
DATA(xstr2) = cl_abap_codepage=>convert_to( source = CONV #( text ) ).""根据上下文代码隐式转换
上面的代码运行结束后xstr1,xstr2都是xstring类型
Before 7.40 |
---|
DATA text TYPE c LENGTH 255. DATA helper TYPE string. DATA xstr TYPE xstring. helper = text. xstr = cl_abap_codepage=>convert_to( source = helper ). |
With 7.40 |
DATA text TYPE c LENGTH 255. DATA(xstr) = cl_abap_codepage=>convert_to( source = CONV string( text ) ). OR DATA(xstr) = cl_abap_codepage=>convert_to( source = CONV #( text ) ). |
方法二:
SCMS_STRING_TO_XSTRING
*string转xstring.
data:xstr type xstring.
data:str type string value 'ABC'.
data:length type i.
length = strlen( str ).
CALL FUNCTION 'SCMS_STRING_TO_XSTRING'"string转xstring函数
EXPORTING
text = str"可以是string或char类型的,
* MIMETYPE = ' '
* ENCODING =
IMPORTING
BUFFER = xstr
EXCEPTIONS
FAILED = 1
OTHERS = 2
.
IF sy-subrc <> 0.
* Implement suitable error handling here
ENDIF.
write:/ 'XSTRING类型输出:'.
uline.
write:/ xstr."结果414243
方法三:
DATA: str TYPE string ,
xstr TYPE xstring.
*TRY.
CALL METHOD cl_bcs_convert=>string_to_xstring
EXPORTING
iv_string = 'ABC'
* iv_convert_cp = 'X'
* iv_codepage =
* iv_add_bom =
receiving
ev_xstring = xstr.
.
WRITE / : xstr."结果414243
* CATCH cx_bcs .
*ENDTRY.
将xstring转为string
** solution 1
CALL FUNCTION 'HR_KR_XSTRING_TO_STRING'
EXPORTING
from_codepage = lv_encoding
in_xstring = lv_upload_file
IMPORTING
out_string = lv_out_string.
** solution 2
* CALL FUNCTION 'LXE_COMMON_XSTRING_TO_STRING'
* EXPORTING
* IN_CODEPAGE = lv_codepage
* in_xstring = lv_upload_file
* IMPORTING
* EX_STRING = lv_out_string.
** solution 3
* DATA: lv_filesize TYPE i,
* lt_bin_data TYPE STANDARD TABLE OF raw255."x类型二进制表即可
*
* CALL FUNCTION 'SCMS_XSTRING_TO_BINARY'
* EXPORTING
* buffer = lv_upload_file
* IMPORTING
* output_length = lv_filesize
* TABLES
* binary_tab = lt_bin_data.
*
* CALL FUNCTION 'SCMS_BINARY_TO_STRING'
* EXPORTING
* input_length = lv_filesize
** MIMETYPE = ' '
* ENCODING = lv_encoding
* IMPORTING
* text_buffer = lv_out_string
** OUTPUT_LENGTH =
* TABLES
* binary_tab = lt_bin_data
* EXCEPTIONS
* failed = 1
* OTHERS = 2.
* IF sy-subrc <> 0.
** Implement suitable error handling here
* ENDIF.
** solution 4
*lv_out_string = CL_BCS_CONVERT=>XSTRING_TO_STRING(
* IV_XSTR = lv_upload_file
* IV_CP = lv_codepage ).
** solution 5
* CALL FUNCTION 'ECATT_CONV_XSTRING_TO_STRING'
* EXPORTING
* im_xstring = lv_upload_file
* IM_ENCODING = lv_encoding
* IMPORTING
* EX_STRING = lv_out_string .
方法一:
ECATT_CONV_XSTRING_TO_STRING
data:xml_xstring type xstring,
xml_string type string.
CALL FUNCTION 'ECATT_CONV_XSTRING_TO_STRING'
EXPORTIN