- 浏览: 231581 次
- 性别:
- 来自: 大连
文章分类
最新评论
-
evangxli:
niitallen 写道为啥我就显示不出来数据呢,在smart ...
ALV & SMARTFORMS 并分页 -
niitallen:
为啥我就显示不出来数据呢,在smartforms中~~
ALV & SMARTFORMS 并分页 -
binjoo:
insufficient privileges -
695165987:
用逗号分割,是改变那个参数。
SAP Function module - GUI_DOWNLOAD -
shamusoft:
希望你成功
四月咯
Zhuan 的哦!
1. 数字类型(numeric types)
(1).类型
Abap支持三种数字类型:
I:整型
范围:-2147483648 to 2147483647
P:16位
范围:取决于小数位的长度
注意事项:为了确保计算正确,必须在程序属性中把fixed point arithmetic选中,参考图1。
F:浮点类型
范围:+/- 2.2250738585072014E-308 to 1.7976931348623157E+308
注意事项:因为长度的关系,所以尽量不要用两个该类型的数据相等作为判断条件
(2).定义方法
[f1] type I.
[f1] type P decimals [num].
[f1] type F.
(3).使用
I类型:
主要是用于计数器,数量,索引,偏移量等等
例如:
*取得内表行数
DATA: V_COUNTER TYPE I.
V_COUNTER = LINES( I_TAB ).
*根据索引读取内表中的数据
DATA: V_INDEX TYPE I.
READ TABLE I_TAB INDEX V_INDEX.
*截取字符串
DATA: V_OFFSET_START TYPE I,
V_OFFSET_LENGTH TYPE I,
V_C(10) TYPE C,
L_C(3) TYPE C.
V_C = ‘ABCDEFGHIJ’.
V_OFFSET_START = 3.
V_OFFSET_LENGTH = 5
L_C = V_C+V_OFFSET_START(V_OFFSET_LENGTH).
RESULT:
L_C = ‘DEFGH’.
P类型:
主要和数据库中的QUAN类型关联;
常用场合:大小,长度,重量,货币等有单位的场合
*根据单位把数量写入字符型变量中
WRITE:[数量] to [字符型变量] unit [单位].
F类型:
常用场合:计算
字符类型:
一.包括:
C:字符
N:应该算是字符型的数字
D:日期类型,标准长度8(YYYYMMDD),注意其初期值的判断,不是space,而是'00000000',判断语句可以使用is initial or not。
T:时间类型,标准长度6(HHMMSS)
二.具体使用:
1.对字符串的操作
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).REPLACE:替换字符串
REPLACE {str1} WITH {str2} INTO {c} [LENGTH {l}].:
作用:把字符串c中的str1替换成str2,如果指定l,就是指定了替换的长度。如果替换成功,则SY-SUBRC设置成0。
常用场合:
字符串的替换操作比较常用,需要注意的是l的指定长度。
3).TRANSLATE:转换字符串
TRANSLATE {c} TO UPPER CASE.
TRANSLATE {c} TO LOWER CASE.:
作用:字符串的大小写的转换
TRANSLATE {c} USING {r}. :
作用:根据规则r转换字符串c
常用场合:
Sap系统一般都是使用大写字母的,但是某些特定的字段却是用小写字母来标记的,在操作这些字段的时候就需要注意大小写的转换了。转换规则倒是不太常用,到现在我还没有遇到过。
4).SEARCH:查找字符串
SEARCH {c} FOR {str} {options}.:
作用:在字符串c中查找str,如果找到了,SY-SUBRC为0,SY-FDPOS为找到字符串的具体位置。
需要说明的地方:注意模式的使用
指定str:查找str,str中后面的空格忽略
指定.str.:查找str,包含了str中尾部的空格
指定*str:查找以str结尾的字符串
指定str*:查找以str开头的字符串
{options}的指定:
主要用到的就是:STARTING AT {n1}指定开始位置
ENDING AT {n2}指定结束位置
常用场合:
一般用来判断某个字符串是否符合条件。也可以结合其他语句对字符串进行操作。
5).CONDENSE:去掉字符串中的空格
CONDENSE {c} [NO-GAPS].:
作用:去掉字符串中的前面和后面的空格,如果指定NO-GAPS,则去掉字符串中的所有空格。
常用场合:获得字符串的精确长度,用于判断。
6).SPLIT:拆分字符串
SPLIT {c} AT {del} INTO {c1} ... {cn}.
作用:按照分割字符del把字符串c分割成c1…cn。
SPLIT {c} AT {del} INTO TABLE {itab}.
作用:按照分割字符del把c分割,然后放到内表中的相应字段
常用场合:
文件名的分割,根据完整的文件路径加文件名把文件名分割出来。
难点:无法确定要分割多少次.
解决方法:两两分割,到最后的那个就是了。例如:str=c:\dir1\dir2\dir3\file
Split str at '\' into str1 str2.
Find str2 for '/'.
Check sy-subrc = 0.
Do.
Find str2 for '/'.
If sy-subrc = 0.
Split str2 into str1 str2.
Else.
Exit.
Endif.
Enddo.
文件上传的类型是字符串,把其分割后放到内表中。例如上面的问题:
data: begin of itab occurs 0 ,
col1(30) type c,
end of itab.
Split str at '\' into table itab.
describe table itab lines line.
Read table itab index line.
Itab-col1就是file
7).CONCATENATE:连接字符串
CONCATENATE {c1} ... {cn} INTO {c} [SEPARATED BY {s}].
作用:把c1…cn用s分隔连接到c中
常用场合:文件下载,对文件中的字段编辑。
8).模式匹配
CO / CN contains only or not
CA / NA contains any or not any
CS / NS contain string or not
CP / NP contains pattern or not
NOTE:
a) . CO, NO, CA, NA比较时区分大小写, 并且尾部空格也在比较的范围之内
data: s1(10) value 'aabb'.
if s1 co 'ab' ==> false
if s1 co 'ab ' ==>true
CS, NS, CP, NP不区分大小写和尾部空格
b) .对于CP, NP
* = \s?
+ = \s
# 换码字符, 用于匹配 *, +这样的字符
##
#*
#+
#___ 比较结尾空格
#[a-z] 在CP, NP中强制区分大小写
c) . 比较结束后,如果结果为真,sy-fdpos将给出s2在s1中的偏移量信息
9).去前导0 (Remove leading zero)
SHIFT dobj LEFT DELETING LEADING '0'.
FM : CONVERSION_EXIT_ALPHA_OUTPUT
增前导0 (Add leading zero)
DATA v_s(5).
UNPACK '123' to v_s. ==> v_s = '00123'
FM: CONVERSION_EXIT_ALPHA_INPUT
10).截取子字串
data: text type c length 10.
data: ilen type i.
data: subtext type c length 5.
text = 'ABCDEFGHIJ'.
subtext = text+0(5). "左面第一个字符前有个光标,光标便宜0位,取5位的长度('ABCDE')
subtext = text+3(5). "光标偏移3位,走到C后面,这时开始取5位长度('DEFGH)
text+0(1) = 'Z'. "替换该位置上的字符为'Z'
注意:+两边不能有空格。
11).取字串長度:STRLEN
DATA TEXT TYPE C LENGTH 20.
DATA: ILEN TYPE I.
TEXT = `Barbcbdbarb`.
ILEN = STRLEN( TEXT ). "字串實際長度(11)
DESCRIBE FIELD TEXT LENGTH ILEN IN BYTE MODE. "字串定義時的字節長度,一個長度等2個字節(40)
DESCRIBE FIELD TEXT LENGTH ILEN IN CHARACTER MODE. "字串定義的長度(20)
1. 数字类型(numeric types)
(1).类型
Abap支持三种数字类型:
I:整型
范围:-2147483648 to 2147483647
P:16位
范围:取决于小数位的长度
注意事项:为了确保计算正确,必须在程序属性中把fixed point arithmetic选中,参考图1。
F:浮点类型
范围:+/- 2.2250738585072014E-308 to 1.7976931348623157E+308
注意事项:因为长度的关系,所以尽量不要用两个该类型的数据相等作为判断条件
(2).定义方法
[f1] type I.
[f1] type P decimals [num].
[f1] type F.
(3).使用
I类型:
主要是用于计数器,数量,索引,偏移量等等
例如:
*取得内表行数
DATA: V_COUNTER TYPE I.
V_COUNTER = LINES( I_TAB ).
*根据索引读取内表中的数据
DATA: V_INDEX TYPE I.
READ TABLE I_TAB INDEX V_INDEX.
*截取字符串
DATA: V_OFFSET_START TYPE I,
V_OFFSET_LENGTH TYPE I,
V_C(10) TYPE C,
L_C(3) TYPE C.
V_C = ‘ABCDEFGHIJ’.
V_OFFSET_START = 3.
V_OFFSET_LENGTH = 5
L_C = V_C+V_OFFSET_START(V_OFFSET_LENGTH).
RESULT:
L_C = ‘DEFGH’.
P类型:
主要和数据库中的QUAN类型关联;
常用场合:大小,长度,重量,货币等有单位的场合
*根据单位把数量写入字符型变量中
WRITE:[数量] to [字符型变量] unit [单位].
F类型:
常用场合:计算
字符类型:
一.包括:
C:字符
N:应该算是字符型的数字
D:日期类型,标准长度8(YYYYMMDD),注意其初期值的判断,不是space,而是'00000000',判断语句可以使用is initial or not。
T:时间类型,标准长度6(HHMMSS)
二.具体使用:
1.对字符串的操作
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).REPLACE:替换字符串
REPLACE {str1} WITH {str2} INTO {c} [LENGTH {l}].:
作用:把字符串c中的str1替换成str2,如果指定l,就是指定了替换的长度。如果替换成功,则SY-SUBRC设置成0。
常用场合:
字符串的替换操作比较常用,需要注意的是l的指定长度。
3).TRANSLATE:转换字符串
TRANSLATE {c} TO UPPER CASE.
TRANSLATE {c} TO LOWER CASE.:
作用:字符串的大小写的转换
TRANSLATE {c} USING {r}. :
作用:根据规则r转换字符串c
常用场合:
Sap系统一般都是使用大写字母的,但是某些特定的字段却是用小写字母来标记的,在操作这些字段的时候就需要注意大小写的转换了。转换规则倒是不太常用,到现在我还没有遇到过。
4).SEARCH:查找字符串
SEARCH {c} FOR {str} {options}.:
作用:在字符串c中查找str,如果找到了,SY-SUBRC为0,SY-FDPOS为找到字符串的具体位置。
需要说明的地方:注意模式的使用
指定str:查找str,str中后面的空格忽略
指定.str.:查找str,包含了str中尾部的空格
指定*str:查找以str结尾的字符串
指定str*:查找以str开头的字符串
{options}的指定:
主要用到的就是:STARTING AT {n1}指定开始位置
ENDING AT {n2}指定结束位置
常用场合:
一般用来判断某个字符串是否符合条件。也可以结合其他语句对字符串进行操作。
eg: DATA STRING7(30) TYPE C VALUE 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'. WRITE: / 'Searched', 'SY-SUBRC', 'SY-FDPOS'. ULINE /1(26). SEARCH STRING7 FOR 'X'. WRITE: / 'X', SY-SUBRC UNDER 'SY-SUBRC', SY-FDPOS UNDER 'SY-FDPOS'. WRITE:/ '看这里的数据'.
5).CONDENSE:去掉字符串中的空格
CONDENSE {c} [NO-GAPS].:
作用:去掉字符串中的前面和后面的空格,如果指定NO-GAPS,则去掉字符串中的所有空格。
常用场合:获得字符串的精确长度,用于判断。
6).SPLIT:拆分字符串
SPLIT {c} AT {del} INTO {c1} ... {cn}.
作用:按照分割字符del把字符串c分割成c1…cn。
SPLIT {c} AT {del} INTO TABLE {itab}.
作用:按照分割字符del把c分割,然后放到内表中的相应字段
常用场合:
文件名的分割,根据完整的文件路径加文件名把文件名分割出来。
难点:无法确定要分割多少次.
解决方法:两两分割,到最后的那个就是了。例如:str=c:\dir1\dir2\dir3\file
Split str at '\' into str1 str2.
Find str2 for '/'.
Check sy-subrc = 0.
Do.
Find str2 for '/'.
If sy-subrc = 0.
Split str2 into str1 str2.
Else.
Exit.
Endif.
Enddo.
文件上传的类型是字符串,把其分割后放到内表中。例如上面的问题:
data: begin of itab occurs 0 ,
col1(30) type c,
end of itab.
Split str at '\' into table itab.
describe table itab lines line.
Read table itab index line.
Itab-col1就是file
7).CONCATENATE:连接字符串
CONCATENATE {c1} ... {cn} INTO {c} [SEPARATED BY {s}].
作用:把c1…cn用s分隔连接到c中
常用场合:文件下载,对文件中的字段编辑。
8).模式匹配
CO / CN contains only or not
CA / NA contains any or not any
CS / NS contain string or not
CP / NP contains pattern or not
NOTE:
a) . CO, NO, CA, NA比较时区分大小写, 并且尾部空格也在比较的范围之内
data: s1(10) value 'aabb'.
if s1 co 'ab' ==> false
if s1 co 'ab ' ==>true
CS, NS, CP, NP不区分大小写和尾部空格
b) .对于CP, NP
* = \s?
+ = \s
# 换码字符, 用于匹配 *, +这样的字符
##
#*
#+
#___ 比较结尾空格
#[a-z] 在CP, NP中强制区分大小写
c) . 比较结束后,如果结果为真,sy-fdpos将给出s2在s1中的偏移量信息
9).去前导0 (Remove leading zero)
SHIFT dobj LEFT DELETING LEADING '0'.
FM : CONVERSION_EXIT_ALPHA_OUTPUT
增前导0 (Add leading zero)
DATA v_s(5).
UNPACK '123' to v_s. ==> v_s = '00123'
FM: CONVERSION_EXIT_ALPHA_INPUT
10).截取子字串
data: text type c length 10.
data: ilen type i.
data: subtext type c length 5.
text = 'ABCDEFGHIJ'.
subtext = text+0(5). "左面第一个字符前有个光标,光标便宜0位,取5位的长度('ABCDE')
subtext = text+3(5). "光标偏移3位,走到C后面,这时开始取5位长度('DEFGH)
text+0(1) = 'Z'. "替换该位置上的字符为'Z'
注意:+两边不能有空格。
11).取字串長度:STRLEN
DATA TEXT TYPE C LENGTH 20.
DATA: ILEN TYPE I.
TEXT = `Barbcbdbarb`.
ILEN = STRLEN( TEXT ). "字串實際長度(11)
DESCRIBE FIELD TEXT LENGTH ILEN IN BYTE MODE. "字串定義時的字節長度,一個長度等2個字節(40)
DESCRIBE FIELD TEXT LENGTH ILEN IN CHARACTER MODE. "字串定義的長度(20)
发表评论
-
SAP 常用的库存表
2018-11-24 09:58 4878根据库存类型的不同,库存信息保存在不同的表中 ... -
SE16N变更为编辑模式
2018-09-19 10:27 2246SAP中直接修改表、视图的Tcode有SE16N和SM30。 ... -
SAP 示例
2018-07-11 13:08 1252经常会用到一些SAP自带的小程序, 无TCODE, 或者是 ... -
ABAP Test Cockpit (ATC) - About the TCode
2014-11-28 09:24 2798ABAP测试驾驶舱这个翻译很牵强,姑且叫做ABAPer 的诊 ... -
SAP SmartForms 字符处理
2014-05-14 14:44 2070格式化数字等,在smartforms显示输出的格式。 ... -
adf
2013-09-10 17:07 0*&------------------------ ... -
SAP Code 增强
2013-09-23 14:06 1385REPORT Z_FIND_BADI. *&- ... -
NND 搞Eclipse
2013-08-19 09:56 856NND,为了HANA, 我还得 ... -
SAP SE38 增强
2013-08-19 09:57 1469最近很多人在搞SE38增强,没事就在系统里面挂一个test ... -
SAP内存/ABAP内存/共享内存区别(深入浅出)
2013-03-06 11:30 3052转:http://www.zhsap.com/?fr ... -
ABAP 写入内存:ABAP memory中的Export和Import
2013-03-06 10:22 3588转:cnblogs(没有具体地址,抱歉哈!) 上图是SA ... -
SAP ABAP 格式化输出
2011-07-05 16:58 25921。从字段NUMBER输出到字段STRING,输出到屏幕不同位 ... -
SAP 计算时间-MTIME
2011-05-10 18:48 1456计算时间字段的值,例如Structure EMG_FILEIN ... -
sap submit and return
2011-04-13 19:47 3071转自: Barry 白 SUBMIT的几种情况 1 ... -
Call Transaction - using
2011-03-29 08:57 2364Call transaction 的时候,我们会用到using ... -
BDC技术
2010-11-02 08:35 1377BDC技术 写的很清晰~! ... -
ABAP性能优化
2010-11-02 08:34 1664ABAP性能优化 1.使用二分法查询,提高查询内表数据速度 ... -
SAP BAPI的简单实现步骤
2010-11-02 08:32 4595ABAP中有关BAPI的介绍 1.BAPI – busines ... -
查找SAP系统可操作的用户出口
2010-10-13 10:04 1168转——Jack Wu http://blog.csdn.net ... -
SMOD和CMOD-SAP 留给开发人员的接口
2010-10-13 09:58 2637转SAP BLOG--Jack Wu http://blog. ...
相关推荐
- **OSS1**:SAP Online Support。 - **S001**:ABAP工作台说明(T-CODE)。 - **SCAT**:Computer Aided Test Tool。 - **SE01**:维护数据元素(同一数据元素在不同客户端中)。 - **SE09**:维护数据元素。 - **...
1、解压后,支持直接导入ABAP 2、支持文本编辑器打开 3、如有不解之处,可以查阅文章:《金色传说:SAP-ABAP-IW21/IW22通知单保存增强:保存通知单时根据特殊条件创建新的事故通知单》或搜索公众号:SAPABAP金色传说
SAP-ABAP-Certification-Review.pdf
### SAP-ABAP-OO 实现 CL-SALV-TABLE 的关键知识点 #### 1. ABAP 面向对象的 ALV 显示方法 在 SAP 的 ABAP 环境中,ALV (Application List Viewer) 是一种非常常用的技术,用于在屏幕上以表格的形式展示数据。传统...
2. **数据字典(Data Dictionary, DDIC)**:SAP数据字典是系统中所有业务对象和数据结构的中央存储库。通过DDIC,开发者可以定义结构化数据类型,如数据库表、视图、域、数据元素和结构。这些定义不仅影响后台...
### ABAP常用字符串操作知识点详解 #### 一、字符串连接 在ABAP中,字符串连接是一种常见的操作方式,用于将两个或多个字符串合并成一个新的字符串。实现字符串连接的方法主要是通过`CONCATENATE`语句。 **语法...
根据提供的文件信息,“SAP BC400-ABAP基础教程(中文版).pdf”,我们可以提炼出以下几个重要的知识点: ### SAP BC400-ABAP基础教程概述 #### SAP ABAP简介 SAP (Systems, Applications, and Products in Data ...
这个名为"SAP资料集有ABAP-PP-MM-RFC-BAPI-JCO等.rar"的压缩包文件包含了多个与SAP相关的学习资料,涵盖了许多关键模块和技术,包括ABAP编程、生产计划(PP)、物料管理(MM)、远程功能调用(RFC)、业务对象接口...
详细介绍了SAP ABAP 高级编程技术
ERP系统信息化资料:abap+测试题--不带答案.doc
SAP ABAP 实例13-19章-2,由于太大,只能分两个文件传
以下是对SAP ABAP基础知识的详细解释: 1. **ABAP概述** - ABAP(Advanced Business Application Programming)是SAP系统中的一种编程语言,用于开发和修改ERP解决方案。 - SAP是全球领先的ERP软件供应商,其R/3...
SAP ABAP 实例13-19章,有点模糊,但还能分辨
本套从实例学SAP ABAP编程书籍共19章,应包含ABAP编程的基础知识、高级特性和实际应用案例。以下是一些可能涉及的知识点: 1. ABAP概述:了解ABAP语言的历史、特点、在SAP系统中的作用以及ABAP与SAP NetWeaver平台...
ERP系统信息化资料:KTSC-ABAP-FIEX070-行项目业务范围与PM工单业务范围一致性检查-20100312-Vf.doc
实战SAP程序开发——从实例学SAP ABAP编程 13-19章
本文章将基于《SAP ABAP Command Reference》这本书的部分内容,深入探讨其中提及的关键知识点,包括ABAP的基础概念、常用命令及其应用场景。 #### 二、为什么使用ABAP? 1. **集成性**:ABAP是专门为SAP系统设计...
ABAP - Keyword Documentation This documentation describes the syntax and meaning of the keywords of the ABAP language and its object-oriented part ABAP Objects. Alongside this, language frameworks ...
abap-advent-2020-template 2020的-ABAP模板让我们用困难的方式做吧! 通过在运行的ABAP先决条件已安装NodeJS 12 无需ABAP系统但是,要使ABAP在Node中运行需要大量的耐心,这将涉及对javascript和打字稿代码的调试!...
这些课程覆盖了从ABAP基础知识到特定开发技巧的广泛主题,强调了SAP在ABAP编程培训方面的全面性和深度。 以上就是根据提供的文件信息所能整理出的详细知识点。由于文件中仅提供了标题、描述、标签和部分内容摘录,...