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,同樣如 #* 將通配符 * 轉回原意, #+ 也將通配符 + 轉回原意, ## 將轉移字符本身轉回原意, #    用於匹配結尾空格,空格數自定。
 
 
 
 
 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章