1. 程式人生 > 其它 >SAP ABAP DESCRIBE TABLE itab [KIND knd] [LINES lin] [OCCURS n].語法使用

SAP ABAP DESCRIBE TABLE itab [KIND knd] [LINES lin] [OCCURS n].語法使用

技術標籤:ABAP 語法sapabap

記錄一下,DESCRIBE TABLE 的用法。
根據F1幫助檢視共有三種用法: KIND,LINES,OCCURS.
此語句確定內表itab的某些屬性,並將它們分配給指定的目標欄位。
1.首先來看一下KIND的使用,
確定內部表itab的表類別。返回值是一個類似ID的單字元。在宣告中,將宣告一個長度為1的tye c變數。
對於標準表,可能的id是“T”,
對於排序表,可能的id是“S”,
對於雜湊表,可能的id是“H”。

DATA : LW_KND      TYPE CHAR1,
       lt_resb_1   TYPE STANDARD TABLE OF resb,
       lS_resb_1   LIKE LINE OF lt_resb_1.
DESCRIBE TABLE lt_resb_1  KIND LW_KND .

在這裡插入圖片描述
可以看到返回值為T,說明這是一個標準表。

2.LINES
確定內部表ITAB中表行的當前數量。返回值的型別為i。

DATA : lw_knd_1 TYPE SY-TABIX.
DESCRIBE TABLE lt_resbtab  LINES lw_knd_1 .

在這裡插入圖片描述
可以看到跟內表顯示的都是3行。可以用到訊息中,返回得欄位放到訊息中,就可以很清楚得看到一些針對內表得語法操作了多少行,更清楚更改了內表得哪些資料。

另一是使用函式,得出行數
g_lines3 = lines( it_itab ). 使用函式來計算內部錶行數。

  1. OCCURS n
    確定使用新增初始大小定義的初始記憶體需求,或在建立內部表時發生過時的新增。返回值的型別為i。
    這個用法現在使用得少,沒有具體用過。

接下來舉個例子,在實際操作中可能會碰到得情況。

  1. 內部表按降序排序。由於已排序的表不能按降序排序,因此會檢查表類別以防止引發不可處理的異常。
 DESCRIBE TABLE itab KIND DATA(tabkind). "檢查表型別 
  IF tabkind = sydes_kind-standard OR    "判斷標準表, 和雜湊表
     tabkind = sydes_kind-hashed. 
    SORT itab DESCENDING. 
  ELSEIF tabkind = sydes_kind-sorted.    "等於排序表就標錯
    MESSAGE '...'
TYPE 'E'. ELSE. MESSAGE '...' TYPE 'E'. ENDIF.