abap字符串拆分成固定的几部分

原创 2012年03月23日 15:44:39

情景:有一个字符串(比如12345678),

      我们想得到它的前四位的数字(比如 1 2 3 4)

我们使用SAP的标准function TEXT_SPLIT可以实现想要的功能。

这个function,

输入参数 length每次拆分length个字符,text是要拆分的原串。

输出参数line表示的是拆分所得的字符,rest表示原串被拆分后剩下的新串。

测试代码如下所示:

DATA: lv_str TYPE pqa_comno VALUE '12345678',
      lv_str1 TYPE c,
      lv_str2 TYPE c,
      lv_str3 TYPE c,
      lv_str4 TYPE c.
DATA: len TYPE i VALUE 4.
PERFORM split_comno USING lv_str len CHANGING lv_str1 lv_str2 lv_str3 lv_str4.
WRITE:/ '拆分后各部分的值为: '.
WRITE:/ lv_str1.
WRITE:/ lv_str2.
WRITE:/ lv_str3.
WRITE:/ lv_str4.

FORM split_comno USING iv_str TYPE pqa_comno
                       iv_len TYPE i
                 CHANGING iv_str1 TYPE c
                          iv_str2 TYPE c
                          iv_str3 TYPE c
                          iv_str4 TYPE c.

  DATA: lv_tmpc     TYPE c,
        lv_reststr  TYPE pqa_comno.
  lv_reststr = lv_str.
  DO iv_len TIMES.
    IF STRLEN( lv_reststr ) > 0.
      CALL FUNCTION 'TEXT_SPLIT'
        EXPORTING
          length = 1
          text   = lv_reststr
        IMPORTING
          line   = lv_tmpc
          rest   = lv_reststr.
      CASE sy-index.
        WHEN 1.
          iv_str1 = lv_tmpc.
        WHEN 2.
          iv_str2 = lv_tmpc.
        WHEN 3.
          iv_str3 = lv_tmpc.
        WHEN 4.
          iv_str4 = lv_tmpc.
      ENDCASE.
    ENDIF.
  ENDDO.
ENDFORM.                    "split_comno

程序运行后的结果为:

拆分后各部分的值为:

   1

   2

   3

   4

同样的道理,如果我们每次想拆分出2个字符的话,可以用下面的程序来实现。

DATA: lv_str TYPE pqa_comno VALUE '1234567',
      lv_str1 TYPE string,
      lv_str2 TYPE string,
      lv_str3 TYPE string,
      lv_str4 TYPE string.
DATA: len TYPE i VALUE 4.
PERFORM split_comno USING lv_str len CHANGING lv_str1 lv_str2 lv_str3 lv_str4.
WRITE:/ '拆分后各部分的值为: '.
WRITE:/ lv_str1.
WRITE:/ lv_str2.
WRITE:/ lv_str3.
WRITE:/ lv_str4.

*&---------------------------------------------------------------------*
*&      Form  split_comno
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->IV_STR     text
*      -->IV_LEN     text
*      -->IV_STR1    text
*      -->IV_STR2    text
*      -->IV_STR3    text
*      -->IV_STR4    text
*----------------------------------------------------------------------*
FORM split_comno USING iv_str TYPE pqa_comno
                       iv_len TYPE i
                 CHANGING iv_str1 TYPE string
                          iv_str2 TYPE string
                          iv_str3 TYPE string
                          iv_str4 TYPE string.
  DATA: lv_tmpc     TYPE string,
        lv_reststr  TYPE pqa_comno.
  lv_reststr = lv_str.
  DO iv_len TIMES.
    IF STRLEN( lv_reststr ) > 0.
      CALL FUNCTION 'TEXT_SPLIT'
        EXPORTING
          length = 2
          text   = lv_reststr
        IMPORTING
          line   = lv_tmpc
          rest   = lv_reststr.
      CASE sy-index.
        WHEN 1.
          iv_str1 = lv_tmpc.
        WHEN 2.
          iv_str2 = lv_tmpc.
        WHEN 3.
          iv_str3 = lv_tmpc.
        WHEN 4.
          iv_str4 = lv_tmpc.
      ENDCASE.
    ENDIF.
  ENDDO.
ENDFORM.                    "split_comno

程序运行的结果为:

  12

  34

  56

  7

通过上面第二个例子,我们可以看出,与使用+0(2)这种方式来拆分字符串相比。

使用function TEXT_SPLIT来实现的话,原有的字符串为7位的,第4次拆分的时候,

字符串长度不够拆的也不会报错。

ABAP字符串操作 截取字符长度 取位数

ABAP字符串操作 ABAP對字串的操作方法與其他語言的操作有較大差別,以下是較常用的對字串操作的方法: 1. 字串的連接:CONCATENATE  DATA: t1 TYPE c LENG...
  • yuqinying112
  • yuqinying112
  • 2012年05月04日 16:15
  • 23681

ABAP 字符串截取

*&---------------------------------------------------------------------* *& Report  ZTEST006 *& *...
  • yandong_song
  • yandong_song
  • 2012年08月03日 14:52
  • 4160

ABAP长文本

在ABAP中,我们经常会用到长文本来描述详细信息。   长文本存储在表格:STXH(抬头),STXL(行项目)中。   长文本中有四个关键属性: object、id、na...
  • zhongguomao
  • zhongguomao
  • 2016年10月31日 10:12
  • 611

从路径中拆分出文件名和后缀

call function 'SPLIT_FILENAME'                        "函数:拆分文件绝对路径       exporting         long_file...
  • senlinmu110
  • senlinmu110
  • 2014年01月22日 09:20
  • 1115

将一个数组按照固定大小进行拆分成数组

/** * ArraySplit.java * Copyright(C) 2014 * creator:cuiran 2014-8-4 上午10:39:28 */ package com.ud...
  • cuiran
  • cuiran
  • 2014年08月05日 16:38
  • 17688

ABAP对字符串处理

字符串首字符索引为 0; Character Fields: C,N, D, T, string (CNDT=> CN DataTime)  1. 字符串连接 CONCATENATE do...
  • zhangzaig
  • zhangzaig
  • 2013年08月08日 16:44
  • 774

从实例学sap abap编程(完整版)

  • 2012年04月19日 10:24
  • 27.93MB
  • 下载

从实例学SAP ABAP编程完整版(1-19章)

  • 2008年10月10日 14:38
  • 28.61MB
  • 下载

abap中查找某字符串的两种方法

一、RPR_ABAP_SOURCE_SCAN 可以用于搜索SAP中的程序代码,一般使用时填写开发类、程序名及需要查找的字符串即可,选择屏幕布局和功能很简单,熟悉ABAP代码的人一看就明白了,不多解释了...
  • champaignwolf
  • champaignwolf
  • 2016年05月09日 16:12
  • 2145

ABAP获得目录下符合条件的文件名

*&---------------------------------------------------------------------* *& Report ZTEST *& *&---...
  • zhongguomao
  • zhongguomao
  • 2017年04月18日 09:33
  • 438
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:abap字符串拆分成固定的几部分
举报原因:
原因补充:

(最多只允许输入30个字)