Chinaunix首页 | 论坛 | 博客
  • 博客访问: 595082
  • 博文数量: 154
  • 博客积分: 10208
  • 博客等级: 上将
  • 技术积分: 2225
  • 用 户 组: 普通用户
  • 注册时间: 2007-11-16 14:02
文章分类

全部博文(154)

文章存档

2012年(4)

2011年(44)

2010年(50)

2009年(4)

2008年(52)

我的朋友

分类:

2011-05-23 15:07:23

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: .

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 TYPE 'X'.
  WRITE c TO .
  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

转自,唉忘了,作者见了自己加上。抱歉
阅读(828) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~