ABAP 1

来源:互联网 发布:淘宝网店服务规则 编辑:程序博客网 时间:2024/05/16 17:57

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,同样如 #* 将通配符 * 转回原意, #+ 也将通配符 + 转回原意, ## 将转移字符本身转回原意, #    用于匹配结尾空格,空格数自定。
 
 
 
 
 

原创粉丝点击