ABAP 1

1、LINE-SELECTION的使用注意
在使用 AT LINE-SELECTION的HIDE功能是,HIDE语句传递的变量必须与其对应的行在同一行,否则变量值不能被正确传递。

错误:Hide在ULINE语句下,和相关变量不在同一行!
        (4)   REC_LFA1-LIFNR,
        (40) REC_LFA1-NAME1.
 ULINE.
  HIDE: REC_LFA1-LIFNR,REC_LFA1-NAME1.
 
正确:
 WRITE:/1 SY-VLINE NO-GAP,
        (4)   REC_LFA1-LIFNR,
        (40) REC_LFA1-NAME1.
 HIDE: REC_LFA1-LIFNR,REC_LFA1-NAME1.
 ULINE.

2、Do循环一种比较有趣的用法
abap中的do循环可以做一种比较有趣的循环,因为在一个HR的程序中用到了这个功能,趁还记得赶紧整理出来。
DATA: BEGIN OF TEXT,
      WORD1( 4 ) VALUE  ' This ' ,
      WORD2(
4 ) VALUE  ' is ' ,
      WORD3(
4 ) VALUE  ' a ' ,
      WORD4(
4 ) VALUE  ' loop ' ,
      WORD5(
4 ) VALUE  ' That ' ,
      WORD6(
4 ) VALUE  ' is ' ,
      WORD7(
4 ) VALUE  ' a ' ,
      WORD8(
4 ) VALUE  ' loop ' ,
      END OF TEXT.
DATA: STRING1(
4 ), STRING2( 4 ).
DO 
8  TIMES VARYING STRING1 FROM TEXT - WORD1 NEXT TEXT - WORD2.
   WRITE STRING1.
   IF STRING1 
=   ' is ' .
      STRING1 
=   ' was ' .
   ENDIF.
ENDDO.
SKIP.
DO 
4  TIMES VARYING STRING1 FROM TEXT - WORD1 NEXT TEXT - WORD3
           VARYING STRING2 FROM TEXT
- WORD2 NEXT TEXT - WORD4.
    WRITE: STRING1, STRING2.
ENDDO.

输出如以下所示:
This  is    a    loop That  is    a    loop

This was  a    loop That was  a    loop

以上代码是修改了一下abap中文帮助的一个小示例得来得。可以看到do在这种循环方式下,循环中可以修改所传入的字段串中组件的值,并且循环的step由 FROM ...(组件) NEXT ...(组件)  中的step决定。

3、去除字段或者变量的前导0
去前导0:SHIFT REC_PER-NO LEFT DELETING LEADING '0'.
在普通输出或者smartforms中可以使用:字段名(C)
也可以使用一个FM:CONVERSION_EXIT_ALPHA_OUTPUT
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'
  EXPORTING
    INPUT         =
* IMPORTING
*   OUTPUT        = .

4、判断内表中是否有数据行
    一是使用LINES语法,如下
   IF LINES( TAB_BKPF ) < 1.
    MESSAGE ID 'ZFI001' TYPE 'I' NUMBER 004.
    RETURN.
  ELSE.
    SORT TAB_BKPF BY BUKRS BELNR BLART.
  ENDIF.
  二是使用DESCRIBES,如下
  DESCRIBE TABLE <itab> [LINES <lin>] [OCCURS <occ>].

5、字串操作注意事项
       连接字串:CONCATENATE <c1> ... <cn> INTO <c> [SEPARATED BY <s>].
       使用CONCATENATE连接字符串是,为了防止生成的数据被截断,最好将输出到的变量定义为String类型。
       并且该命令忽略被连接的各个字符串的尾部空格
       拆分字串: SPLIT <c> AT <del> INTO <c1> ... <cn>.
       使用SPLIT拆分字串时,如果源字串能够拆分的字串多过指定的数目,则源字串的最后剩余部分将写入最后一个字串,为了避免这种情况,最好使用内表进行操作:
      SPLIT S_SOURCE AT sep INTO TABLE itab.   这样源字串会生成N行的内表。

 
6、 ABAP中的转义符 #
      ABAP程序中在对某些特别字符进行处理时要用到转义符 #.
      如在字符串比较关键字 CP 和 NP 中,可以使用通配符进行匹配,但是如果要匹配通配符本身、转义符本身以及大小写和空格等特殊字符时,可用#实现:
      'ABC'  CP  '*#b*'                本例返回值为假,因为 #b 限定了匹配小写的字符b,同样如 #* 将通配符 * 转回原意, #+ 也将通配符 + 转回原意, ## 将转移字符本身转回原意, #    用于匹配结尾空格,空格数自定。
 
 
 
 
 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值