1、LINE-SELECTION的使用注意
在使用 AT LINE-SELECTION的HIDE功能是,HIDE語句傳遞的變量必須與其對應的行在同一行,否則變量值不能被正確傳遞。
2、Do循環一種比較有趣的用法
abap中的do循環可以做一種比較有趣的循環,因爲在一個HR的程序中用到了這個功能,趁還記得趕緊整理出來。
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 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語法,如下
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、字串操作注意事項
如在字符串比較關鍵字 CP 和 NP 中,可以使用通配符進行匹配,但是如果要匹配通配符本身、轉義符本身以及大小寫和空格等特殊字符時,可用#實現: