DESCRIBE
DESCRIBE FIELD
DESCRIBE FIELD dobj
[TYPE typ [COMPONENTS com]]
[LENGTH ilen IN {BYTE|CHARACTER} MODE]
[DECIMALS dec]
[OUTPUT-LENGTH olen]
[HELP-ID hlp]
[EDIT MASK mask].
TYPE typ
以下是不同類型的dobj返回的類型ID列表,ID大小寫敏感:
Numeric Data Type |
ID |
b |
b |
s |
s |
i |
I |
p |
P |
decfloat16 |
a |
decfloat34 |
e |
f |
F |
Character-Like Data Type |
ID |
c |
C |
string |
g |
n |
N |
d |
D |
t |
T |
Byte-Like Data Type |
ID |
x |
X |
xstring |
y |
Reference Type |
ID |
Data reference |
l |
Object reference |
r |
Complex Type |
ID |
Flat structure |
u |
Deep structure |
v |
Internal table |
h |
COMPONENTS選項是對結構的字段數進行統計,如果有內嵌的結構,則只算直接(最高級別的)內嵌的結構,且只算做1個。
DATA: BEGIN OF struc1,
comp1 TYPE c LENGTH 1,
comp2 TYPE string,
BEGIN OF struc2,
comp1 TYPE c LENGTH 1,
comp2 TYPE i,
END OF struc2,
END OF struc1,
typ1 TYPE c LENGTH 1,
comp1 TYPE i,
typ2 TYPE c LENGTH 1,
comp2 TYPE i.
DESCRIBE FIELD: struc1 TYPE typ1 COMPONENTS comp1,
struc1-struc2 TYPE typ2 COMPONENTS comp2.
WRITE:/ typ1,comp1,/ typ2,comp2.
DESCRIBE FIELD: struc1 TYPE typ1,
struc1-struc2 TYPE typ2.
WRITE:/ typ1,/ typ2.
v 3
u 2
v
u
LENGTH ilen
當使用IN CHARACTER MODE選項時,dobj必須是flat and character-like,針對deep data types的dobj,你只能使用IN BYTE MODE,並且此情況下返回的長度為引用所占長度(在SAP系統中每個reference的長度固定為8 bytes)
對於固定長度類型的dobj,是在創建這個變量時就已決定。如果字符串類型,則不會計算尾部空格,此時可以使用預置函數strlen來測定
DATA: text TYPE c LENGTH 1,
blen TYPE i,
clen TYPE i,
bytes TYPE i.
DESCRIBE FIELD text LENGTH blen IN BYTE MODE.
DESCRIBE FIELD text LENGTH clen IN CHARACTER MODE.
bytes = blen / clen.
WRITE:/ blen,clen,bytes.
2 1 2
DECIMALS dec
dobj的小數位
DATA: p TYPE p LENGTH 8 DECIMALS 4,
i TYPE i.
DESCRIBE FIELD p DECIMALS i.
WRITE:/ i.
4
OUTPUT-LENGTH olen
測試dobj屏幕輸出寬度,對於那些固定長度數據類型,輸出寬度都是已經預置好的,對於strings,則為0
Numeric Data Types
Data Type |
Output length |
b |
3 |
s |
5 |
i |
11 |
p |
2 x length of dobj (+ 1, if there is a decimal separator) |
decfloat16 |
24 |
decfloat34 |
46 |
f |
24 |
注:上面表中的s類型顯示寬度只有5位,不中以顯示符號;i顯示寬度為11,可以顯示符號
Character-like data types
Data Type |
Output Length |
c |
Length of dobj, maximum 255 |
string text field literals |
根據屏幕列表設置的最大寬度來決定。如果字符不滿List設置的寬度時,left-justified輸出時會在右邊補空格,right-justified輸出時會在左邊補空格,centered outputs輸出時兩端補空格 |
n |
Length of dobj, maximum 255 |
d |
8 |
t |
6 |
Byte-Like Data Types
Data Type |
Output Length |
x |
2 x length of dobj, maximum 255 |
xstring |
2 x number of bytes contained |
DATA: date1 TYPE d,
date2 TYPE sy-datum,
olen1 TYPE i,
olen2 TYPE i.
DESCRIBE FIELD date1 OUTPUT-LENGTH olen1.
DESCRIBE FIELD date2 OUTPUT-LENGTH olen2.
WRITE: / date1,date2,/ olen1,olen2.
00000000 00.00.0000
8 10
HELP-ID hlp
DATA: carrid TYPE spfli-carrid,
hlp TYPE string,
struc TYPE dfies-tabname,
comp TYPE dfies-fieldname.
DESCRIBE FIELD carrid HELP-ID hlp.
SPLIT hlp AT '-' INTO struc comp.
WRITE:/ hlp, / struc,/ comp.
CALL FUNCTION 'F4IF_FIELD_VALUE_REQUEST'
EXPORTING
tabname = struc
fieldname = comp.
EDIT MASK mask
If a conversion routine is assigned to the data object dobj by referring to a domain in ABAP Dictionary, two equals signs "==" precede the name of the conversion routine and the result is assigned to the data object mask.
DATA: time TYPE s_fltime,
seconds TYPE i,
msk TYPE string.
DESCRIBE FIELD time EDIT MASK msk.
WRITE msk.
seconds = 333.
WRITE / seconds USING EDIT MASK msk.
==SDURA
5:33
DESCRIBE TABLE
DESCRIBE TABLE itab [KIND knd] [LINES lin] [OCCURS n].
不同的選項使你能夠判斷表類型、行數、初始化大小。另外,系統字段sy-tfill 和 sy-tleng 保存着表行數量和以字節計的表行長度。注:為了更詳細的關於內表的信息,應用RTTS的方法代替語句describe table。沒有指定一個附加項,語句describe table 只設置系統字段sy-tfill 和sy-tleng的值。
a) KIND knd
標識為T 時代表標准表,為S時代表排序表,為H時代表哈希表。這些值在類型組SYDES中已被定義成常量sydes_kind-standed ,sydes_kind-sorted,sydes_kind-hashed。
b) LINES lin 內表表行數量
注:在版本6.10中,內表表行的當前數量也可以用內建函數lines來判斷
c) OCCURS n
在內表用選項initial size 或者老式的選項ocurs創建期間決定內表所需要的初始化內存大小
FORM sort_descending CHANGING itab TYPE ANY TABLE.
DATA tabkind TYPE c LENGTH 1.
DESCRIBE TABLE itab KIND 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.
ENDFORM.
DESCRIBE DISTANCE
DESCRIBE DISTANCE BETWEEN dobj1 AND dobj2 INTO dst
IN {BYTE|CHARACTER} MODE.
dobj1 and dobj2兩個變量地址起始位置的距離
DATA: BEGIN OF struc,
comp1 TYPE i,
comp2 TYPE x LENGTH 1,
comp3 TYPE c LENGTH 4 VALUE 'Hey',
comp4 TYPE c LENGTH 4 VALUE 'you!',
comp5 TYPE x,
END OF struc.
DATA: off TYPE i,
len TYPE i,
len2 TYPE i.
FIELD-SYMBOLS: <hex> TYPE x,
<result> TYPE c.
DESCRIBE DISTANCE BETWEEN:
struc AND struc-comp3 INTO off IN BYTE MODE,
struc-comp3 AND struc-comp5 INTO len IN BYTE MODE,
struc AND struc-comp1 INTO len2 IN BYTE MODE.
ASSIGN: struc TO <hex> CASTING,
<hex>+off(len) TO <result> CASTING.
WRITE: / 'Offset off is', off,
/ 'Length len is', len,
/ '<result> points to', <result>,
/ len2.
Offset off is 6
Length len is 16
<result> points toHey you!
0