ABAP中SHIFT用法

1).SHIFT:截断字符串
         SHIFT {c} [BY {n} PLACES] [{mode}].:
             作用:去掉字符串的前n个位置的字符,如果n未指定,默认为1,如果指定的n小于等于0,则字符串不变。如果n超出字符串的长度,则字符串变空,所以在做 此操作的时候要注意n的指定。可以首先获得该字符串的长度,方法:len=STRLEN(C)。
                 Mode:指定字符串截断的方向。
                   LEFT:从左边截断
                   RIGHT:从右边截断
                   CIRCULAR:把左边的字符放到右边。
           SHIFT {c} UP TO {str} {mode}.:
             作用:把字符串中在str以前的字符都去掉,同样可以指定mode,原理同上。
           SHIFT {c} LEFT DELETING LEADING {str}.
           SHIFT {c} RIGHT DELETING TRAILING {str}.:
             作用:这两个语句就是把字符串c中前的(LEFT)或者后的(RIGHT)的字符str都去掉。
           以上语句常用的场合:
             A.去掉字符串中的前导字符。例如:如果alv中定一了一个字段是10位的字符,里面放的是so,po等number,而你不想显示前面的0,那么就可以这样做:SHIFT {c} LEFT DELETING LEADING 0.
             B.已知某个字符串中包含固定的字符,想把这个固定字符前面的字符删掉,那么可以使用:SHIFT {c} UP TO {str}。例如:某个物料,通过增强mga00002和mga00003对其加了前缀,这个前缀部分是在某固定值表中取得的数据,在具体显示中,要把其 前缀去掉。如TE-MRP-MAT1中想把te去掉,mrp表示该物料是跑mrp的,需求要求把te-去掉,mrp可以在固定值表中取得,则可以使用 SHIFT {c} UP TO ‘MRP‘.

2).SHIFT <c> [BY <n> PLACES] [<mode>].

按照给定位置数移动字符串

该语句将字段 <c> 移动 <n> 个位置。如果省略 BY <n> PLACES, 则将<n>解释为一个位置。如果<n> 是 0 或负值,则<c>保持不变。如果<n>超过<c>长度,则<c>用空格填充 。<n> 可为变量。

对不同(<mode>) 选项,可以按以下方式移动字段 <c>:a.LEFT:向左移动 <n> 位置,右边用<n>个空格填充(默认设置 )。b.RIGHT:向右移动<n>位置,左边用<n>个空格填充 。c.CIRCULAR:向左移动 <n> 位置,以便左边 <n> 个字符出现在右边。

移动字段串到给定串

SHIFT <c> UP TO <str> <mode>. ABAP/4 查找<c>字段内容直到找到字符串 <str> 并将字段<c> 移动到字段边缘。 <mode> 选项与按给定位置数移动字段串中所述相同。<str> 可为变量。

如果 <c> 中找不到 <str>, 则将SY-SUBRC 设置为 4 并且不移动 <c>。否则,将 SY-SUBRC 设置为0。

根据第一个或最后一个字符移动字段串

假设第一个或最后一个字符符合一定条件,则可用 SHIFT 语句将字段向左或向右移动。为此,请使用以下语法: SHIFT <c> LEFT  DELETING LEADING  <str>. SHIFT <c> RIGHT DELETING TRAILING <str>. 假设左边的第一个字符或右边的最后一个字符出现在 <str> 中,该语句将字段 <c> 向左或向右移动。字段右边或左边用空格填充。<str> 可为变量。

ABAP中SHIFT用法,布布扣,bubuko.com

时间: 2024-10-14 09:13:58

ABAP中SHIFT用法的相关文章

Linux shell脚本中shift的用法说明

Linux shell脚本中shift的用法说明 shift命令用于对参数的移动(左移),通常用于在不知道传入参数个数的情况下依次遍历每个参数然后进行相应处理(常见于Linux中各种程序的启动脚本). 示例1:依次读取输入的参数并打印参数个数: run.sh: #!/bin/bash while [ $# != 0 ];do echo "第一个参数为:$1,参数个数为:$#" shift done 输入如下命令运行:run.sh a b c d e f 结果显示如下: 第一个参数为:a

转 ABAP中USING与CHANGING的用法

ABAP中FORM参数的传递有以下几种方式. 1.引用传递(CALL BY REFERENCE) 传递参数时将参数的地址(ADDRESS)传至子程序中,也就是子程序中的参数变量与外部程序的参数变量共享地址内的值.又叫CALL BY ADDRESS,若子程序中的参数变量的值发生了改变,那么,外部程序的实际变量的值也发生改变. [Syntax] FORM <subform> [USING <f1> <f2>...]  [CHANGING <fr1> <fr

Shell编程中Shift的用法

Shell编程中Shift的用法 Bash中,数组变量的赋值有两种方法: (1) name = (value1 ... valuen) 此时下标从0开始 (2) name[index] = value 下面以一个简单的脚本来说明,脚本内容如下: #!/bin/sh until [ $# -eq 0 ] do echo "第一个参数为: $1 参数个数为: $#" shift done 执行以上程序x_shift.sh: [[email protected] test]# ./test

ABAP中USING与CHANGING的用法

ABAP中USING与CHANGING的用法 ABAP中FORM参数的传递有以下几种方式. 1.引用传递(CALL BY REFERENCE) 传递参数时将参数的地址(ADDRESS)传至子程序中,也就是子程序中的参数变量与外部程序的参数变量共享地址内的值.又叫CALL BY ADDRESS,若子程序中的参数变量的值发生了改变,那么,外部程序的实际变量的值也发生改变. [Syntax] FORM <subform> [USING <f1> <f2>...]  [CHAN

typename在C++中的用法

1. //在C++中typename一般用来声明模板的模板参数(template parameter): template<typename T> class X; //T是一个模板参数 2. /*但是还有一个关键的用法.首先是两个概念: 1). qualified name 例如:std::cout, std::endl;这样含有作用域符号(::)的就是限定名, 当我们用using声明将cout,endl引入到当前作用域之后就可以直接使用 这两个名称,这个时候cout,endl就不是限定名了

C#中MessageBox用法大全(转)

我们在程序中经常会用到MessageBox. MessageBox.Show()共有21中重载方法.现将其常见用法总结如下: 1.MessageBox.Show("Hello~~~~"); 最简单的,只显示提示信息. 2.MessageBox.Show("There are something wrong!","ERROR"); 可以给消息框加上标题. 3.if (MessageBox.Show("Delete this user?&q

【转】 从最简单的vector中sort用法到自定义比较函数comp后对结构体排序的sort算法

sort函数在使用中非常好用,也非常简单,而且效率与冒泡或者选择排序不是一个数量级.本文就sort函数在vector中的用法分为sort函数入门用法与自定义comp比较函数比较结构体这两个最基本的功能讲讲其用法: 1.sort入门: 使用sort需要包含algorithm头文件,完整代码如下 #include<iostream> #include<vector> #include<algorithm>//貌似可以不用,但最好加上. using namespace std

[转载]C#中MessageBox.Show用法以及VB.NET中MsgBox用法

一.C#中MessageBox.Show用法 MessageBox.Show (String) 显示具有指定文本的消息框. 由 .NET Compact Framework 支持. MessageBox.Show (IWin32Window, String) 在指定对象的前面显示具有指定文本的消息框. MessageBox.Show (String, String) 显示具有指定文本和标题的消息框.由 .NET Compact Framework 支持. MessageBox.Show (IWi

IOS中NSdate用法

// date方法返回的就是当前时间(now) 02. NSDate *date = [NSDate date]; 03.// now: 11:12:40 04.// date: 11:12:50 05. date = [NSDate dateWithTimeIntervalSinceNow:10];//返回当前时间10秒后的时间 06. // 从1970-1-1 00:00:00开始 07. date = [NSDate dateWithTimeIntervalSince1970:10];//