XSTRING与STRING之间的互转,base64,长文本,科学计数法

本文聚焦于SAP ABAP开发,介绍了RAWSTRING(XSTRING)类型,包括其与STRING、SSTRING类型的区别,以及STRING与XSTRING类型的相互转换方法。还提及二进制与XSTRING的转换、Base64编解码、科学计数法转换数字,最后阐述了ABAP中长文本的创建、修改、读取和删除操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值