
wa_B like line of itab_B.
loop at itab_A into wa_A.
read table itab_B into wa_B index sy-tabix.
if sy-subrc eq 0.
wa_B-xyz = wa_A-abc.
modify itab_B from wa_B index sy-tabix transporting xyz.
endif.
endloop.
ABAP中对矩阵运算就是循环,然唯指并后按照字段名字来加减乘除运算,或者水平较高可以考虑用循环或者按照index直接读取表来定位行,用field-symbol的index来定位列的方法进行加减乘除运算。具逗档体就是熟练使用相指迹应的语法了
该语句连接字串s1...sn并将结果赋给s_dest,其中s_dest也可以是s1...sn中的某个变量。选项拦梁漏SEPARATED BY 用于指定一个字串作为分隔符,在构成新字串时插入在s1...sn之间。如果连接后的长度超过了目标数据定义长度,则把截断赋给c。如结果出现截断情况,SY-SUBRC返回4,否则该值返回0.要避免截断,可以将将c定义为String,该类型长度自适应。
该语句在源字串中搜索分隔符sep,并根据该分割符将元字串拆成各个小串放到目标字段s1 ... sn中,这些子串不包括分隔符。与连接语句类型,如结果出现截断情况,SY-SUBRC返回4,否则该值返回0。如果源子串能够拆分的子串多过指定数目,则源子串最后剩余部分包括其后的分割符都将写入最后一个子串,要避免这种情况,需要使用内表进行 *** 作。
SPLIT s_source AT sep INTO TABLE itab.
语句LOOP AT用于循环输出内表的每一行数据。
改语句在字段c中查找字符串str。如果找到,则将SY-SUBRC返回0,SY-FDPOS返回字段c中该字符串的位置(从做算起的字节偏移量),否则将SY-SUBRC返回4。所谓模式是指要查找的字串不一定与str完全一致,可以设定忽略或保留str末尾的空格,或利用通配符“*”扩大其查找灵活性,由下列几种模式:
该语句对字段s_dest进行搜索,如果在其中出现了字符串str1,则用str2替换第一次出现的部分。如果未指定长度,则搜索整个s_dest。如果指定长度len,则只搜索前len个字节。如果字段SY-SUBRC返回0,则说明已经替换;非0则意味着未进行替换。
字符型逻辑表达式用于判断两个字符串之间的包含关系
CO,CN,CA,NA比较时要区分大小写,并且尾部空格也在比较的范围之内;使用CS,NS,CP,NP比较时简烂忽略尾部空格并且比较不区分大小写。比较结束后,如果结果为真,系统字段SY-FDPOS将给出s2在s1中偏移量信息。
CP和NP被称为模式比较逻辑表达式,意义在于可以使用通配符。
“*”用于替代任何字符串,“+”用于替代任何单个字符。
如需对大小写或尾部空格进行区分比较,需要将换码字符“#”放到相应的字符前。下面列出可以使用“#”指定的功能:
通渣卜常,必须将偏移量和长度指定为无符号数。然而,一下情况中可以使用变量动态指定:
对字符类型,数值文本字段,十六进制字段,日期和时间字段指定偏移量是有意义的;类型F,I,P数值字段则不要使用指定偏移量。
DATA : LV_STR TYPE CHAR20.DATA : LV_LINE TYPE SY-INDEX.
DATA : LV_INDEX TYPE SY-INDEX.
DATA : LV_TABIX TYPE SY-TABIX.
DATA : LV_CHAR TYPE C.
DATA : LV_C TYPE C.
" 第一种
LV_STR = 'ABAADDD435345AD3'.
LV_LINE = STRLEN( LV_STR ).
WRITE : / 'Old value : ', LV_STR.
CLEAR : LV_INDEX, LV_TABIX, LV_CHAR, LV_C.
DO LV_LINE TIMES.
LV_CHAR = LV_STR+LV_INDEX(1).
IF LV_CHAR EQ 'A'.
LV_TABIX = LV_INDEX + 1.
LV_STR+LV_TABIX(1) = 1.
CONDENSE LV_STR.
ENDIF.
LV_INDEX = LV_INDEX + 1.
ENDDO.
WRITE : / 'New value : ', LV_STR.
" 第二种
LV_STR = 'ABAADDD435345AD3'.
LV_LINE = STRLEN( LV_STR ).
WRITE : / SY-ULINE.
WRITE : / 'Old value : ', LV_STR.
CLEAR : LV_INDEX, LV_TABIX, LV_CHAR, LV_C.
DO LV_LINE TIMES.
LV_CHAR = LV_STR+LV_INDEX(1).
IF LV_C EQ 'A' AND LV_CHAR NE 'A'.
LV_STR+LV_INDEX(1) = 1.
CONDENSE LV_STR.
ENDIF.
LV_C = LV_CHAR.
LV_INDEX = LV_INDEX + 1.
ENDDO.
WRITE : / 'New value : ', LV_STR.
结果:
1,
Old value : ABAADDD435345AD3
New value : A1A1DDD435345A13
2,
Old value : ABAADDD435345AD3
New value : A1AA1DD435345A13
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)