ABAP--关于字符串String到XString XString to String转换代码

最近有网友问及String到XString XString to String转换,下面代码供大家参考

代码如下

report zrich_0001.

data: s type string,
h(1) type x,
c(1) type c,
byte(2) type c,
length type i,
l_bindata type xstring,
l_cntbin TYPE sdokcntbins.

FIELD-SYMBOLS: <DUMMY>.

s = 'This Is A String!'.
length = strlen( s ).

* Use Write to Convert String to XSTRING
write:/ 'Use Write to Convert String to XSTRING' .
ULINE /1(80).
New-line.
do length times.
byte = ( sy-index - 1 ).
c = s+byte(1).
* You can do this
ASSIGN h TO <DUMMY> TYPE 'X'.
WRITE c TO <DUMMY>.
write: h.
enddo.

* Use Function to Convert String to XSTRING
call function 'SCMS_STRING_TO_XSTRING'
exporting
text = s
* MIMETYPE = ' '
importing
buffer = l_bindata
exceptions
failed = 1
others = 2
.
if sy-subrc = 0.
ULINE /1(80).
write:/ 'Use Function to Convert String to XSTRING'.
ULINE /1(80).
write:/ l_bindata.
endif.
*
** 1. Convert input-table to XSTRING
*CALL FUNCTION 'SCMS_BINARY_TO_XSTRING'
* EXPORTING: input_length = length
* IMPORTING: buffer = l_bindata
* TABLES: binary_tab = l_cntbin
* EXCEPTIONS: failed = 1
* OTHERS = 2.
*IF sy-subrc <> 0.
*ENDIF.

* 2. Convert XSTRING to STRING
clear length.
CALL FUNCTION 'SCMS_XSTRING_TO_BINARY'
EXPORTING:
buffer = l_bindata
IMPORTING:
output_length = length
TABLES:
binary_tab = l_cntbin.
if sy-subrc = 0.
CALL FUNCTION 'SCMS_BINARY_TO_STRING'
EXPORTING
INPUT_LENGTH = length
IMPORTING
TEXT_BUFFER = S
OUTPUT_LENGTH = length
TABLES
BINARY_TAB = l_cntbin
* EXCEPTIONS
* FAILED = 1
* OTHERS = 2
.
IF SY-SUBRC <> 0.
ULINE /1(80).
write:/ 'Convert XSTRING to output-table'.
ULINE /1(80).
write:/ s.
endif.
endif.

3 Decode base64 (TYPE STRING) into plaintext (TYPE STRING).

FORM encode_base64 USING plaintext base64.
CHECK plaintext IS NOT INITIAL.
CONSTANTS:
lc_op_enc TYPE x VALUE 36.
DATA:
l_len TYPE i,
l_xstr TYPE xstring,
lr_conv TYPE REF TO cl_abap_conv_out_ce.
lr_conv = cl_abap_conv_out_ce=>create( ).
l_len = strlen( plaintext ).
lr_conv->write( data = plaintext n = l_len ).
l_xstr = lr_conv->get_buffer( ).
CALL 'SSF_ABAP_SERVICE'
ID 'OPCODE' FIELD lc_op_enc
ID 'BINDATA' FIELD l_xstr
ID 'B64DATA' FIELD base64. "#EC CI_CCALL
ENDFORM.

相关函数

SCMS_STRING_TO_XSTRING

'ECATT_CONV_XSTRING_TO_STRING'

SCMS_BINARY_TO_XSTRING

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值