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


    转自http://guanhuaing.iteye.com/blog/1498891

    代码如下

    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

  • 相关阅读:
    显存与纹理内存详解
    UE4 编译虚幻引擎
    利用Lua脚本语言制作魔兽WOW插件
    详解液晶面板制造全过程
    游戏引擎剖析
    数据库常见面试题
    Selenium Webdriver元素定位的八种常用方式
    Windows 安装 Mongodb
    Redis在windows下安装过程
    python 关于一个懒惰和非懒惰的
  • 原文地址:https://www.cnblogs.com/rainysblog/p/3833098.html
Copyright © 2020-2023  润新知