Abap-Smartforms中如何去掉开头的中文文本

比如我们的客户是:匈牙利Best Fruit co.我们希望去掉开头的匈牙利三个字,而输出后面的英文,如何做呢?

"截取非中文字符串  添加 2014-3-5
DATA: l_uccp TYPE i,    "转化为ASCIId后的整数值
      l_lenth TYPE i,   "字符串长度
      l_pos TYPE i,     "非中文字符开始的位置
      l_rest TYPE i,    "字符串剩余的长度
      l_temp(2) TYPE c, "暂存单个字符
      l_left(100) TYPE c."暂存字符串
l_txt = l_left."假设字符串现在在l_left中
l_lenth = strlen( l_txt ).
l_pos = 0.
DO.
  CALL FUNCTION 'TEXT_SPLIT'  "分割文本 依次检测每个字符的编码
    EXPORTING
      length = 1
      text   = l_left
    IMPORTING
      line   = l_temp
      rest   = l_left.

  CALL METHOD cl_abap_conv_out_ce=>uccpi  "转化为对应的整数
    EXPORTING
      char = l_temp
    RECEIVING
      uccp = l_uccp.
  l_pos = l_pos + 1.    "位置+1
  IF l_uccp < 19968.  "在19968~40959  为中文 此时出现别的文字
    exit.
  ENDIF.
ENDDO.

l_pos = l_pos - 1.  "有一个偏移量
l_rest = l_lenth - l_pos.
l_txt = l_txt+l_pos(l_rest).
注意,在smartforms中第一个函数的参数length为1,而在报表中开发时则设为2

posted @ 2014-03-05 10:31  庄浩  阅读(248)  评论(0编辑  收藏  举报