ABAP DESCRIBE语句

摘要:
如果使用字符串类型,则不会计算尾部空格。此时,预设函数strlen可用于确定DATA:textTYPECLENGTH1、blenTYPEi、cleanTYPEi、bytesTYPEy的十进制数字。描述字段textLENGTHblenINBYTEMODE。DESCRIBEFIELD text清洁长度CHARACTERMODE。字节=混合/清洁。写入:/blen,clean,字节。212小数位数数据:pTYPEPLENGTH8小数位数4,iTYPEi描述字段pDECIMALSi。写入:/i 4OUTPUT LENGTHolen测试dobj屏幕的输出宽度。对于固定长度的数据类型,输出宽度是预设的。对于字符串,它是0NumericDataTypesDataTypeOutputlingthb3s5i11p2xlengthofdobjdecfolat1624decfolat 3446f24注:上表中s类型的显示宽度仅为5位数,不显示符号;i显示宽度为11,可以根据屏幕列表中设置的最大宽度确定显示符号Character like datatypesDataTypeOutputLengthcLengthhofdobj,maximum255stringtextfieldliterals。此外,系统字段sy-fill和sy-length以字节为单位存储表行数和表行长度。没有指定其他项,所述语句仅设置系统字段sy-tfill和sy-length

DESCRIBE. 17

DESCRIBE FIELD.. 17

TYPE typ. 17

LENGTH ilen. 19

DECIMALS dec. 19

OUTPUT-LENGTH olen. 19

HELP-ID hlp. 20

EDIT MASK mask. 20

DESCRIBE TABLE. 21

DESCRIBE DISTANCE

DESCRIBE

可参考反射RTTS

DESCRIBE FIELD

DESCRIBE FIELD dobj
[
TYPEtyp [COMPONENTS com]]
[
LENGTH ilen IN {BYTE|CHARACTER} MODE]
[
DECIMALS dec]
[
OUTPUT-LENGTHolen]
[
HELP-IDhlp]
[
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必须是flatandcharacter-like,针对deep data typesdobj,你只能使用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 ofdobj(+ 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 ofdobj, maximum 255

string

text field literals

根据屏幕列表设置的最大宽度来决定。如果字符不满List设置的宽度时,left-justified输出时会在右边补空格,right-justified输出时会在左边补空格,centered outputs输出时两端补空格

n

Length ofdobj, maximum 255

d

8

t

6

Byte-Like Data Types

Data Type

Output Length

x

2 x length ofdobj, 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
.

image010

EDIT MASK mask

If a conversion routine is assigned to the data objectdobjby 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 objectmask.

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

image011

DESCRIBETABLE

DESCRIBE TABLE itab [KIND knd] [LINES lin] [OCCURS n].

不同的选项使你能够判断表类型、行数、初始化大小。另外,系统字段sy-tfillsy-tleng保存着表行数量和以字节计的表行长度。注:为了更详细的关于内表的信息,应用RTTS的方法代替语句describe table。没有指定一个附加项,语句describe table只设置系统字段sy-tfillsy-tleng的值。

a)KIND knd

标识为T时代表标准表,为S时代表排序表,为H时代表哈希表。这些值在类型组SYDES中已被定义成常量sydes_kind-standedsydes_kind-sortedsydes_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 DISTANCEBETWEEN 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

免责声明:文章转载自《ABAP DESCRIBE语句》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇转:GridView鼠标移动行变色 (http://www.cnblogs.com/lovenets/articles/808071.html)[同ceng]《二叉树》学习心得下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

揭开SAP Fiori编程模型规范里注解的神秘面纱

今天是2020年2月1日鼠年大年初八,这是Jerry鼠年的第8篇文章,也是汪子熙公众号总共第207篇原创文章。 Jerry的前一篇文章 揭开SAP Fiori编程模型规范里注解的神秘面纱 - @ObjectModel.readOnly工作原理解析,给大家分享了@ObjectModel.readOnly这个注解对应的Fiori UI和ABAP后台的工作原理。...

SAP-Function

[转]sap函数大全 ********SAP中常用函数 函数名 描述SD_VBAP_READ_WITH_VBELN 根据销售订单读取表vbap中的信息EDIT_LINES 把READ_TEXT返回的LINES中的行按照TDFORMAT=“*”重新组织VIEW_MAINTENANCE_CALL 维护表视图 函数名 描述DY_GET_FOCUS 获得屏幕焦点D...

ABAP-供应商主数据创建(冻结和解冻供应商的采购组织)

FUNCTION zmm_fm_21_06.*"----------------------------------------------------------------------*"*"本地接口:*"  IMPORTING*"     VALUE(IN) TYPE  ZSLIFNR_SRM*"  EXPORTING*"     VALUE(OUT...

ABAP锁、数据库锁

ABAP数据锁定... 338 SM12锁查看与维护... 344 通用加锁与解锁函数... 344 ABAP程序锁定... 345 数据库锁... 347 锁的分类和兼容性... 347 并发性与锁的权衡... 348 数据库的事务隔离级别... 348 在JDBC应用程序中设置隔离级别... 349 在应用程序中采用悲观锁和乐观锁... 349 由数...

abap 负数前置

第一种、直接调用函数“CLOI_PUT_SIGN_IN_FRONT”。 但是这个有个弊端,传入的值必须是字符型,所以必须赞传入前自己先转换好变量。 第二种:自己写一下自定义函数,可以自己写代码转换也可以在里面调用函数“CLOI_PUT_SIGN_IN_FRONT”。 FUNCTION CONVERSION_EXIT_Z001_OUTPUT. *"-----...

abap将内表数据导出为excel文件

一个不错的方案:  WHEN 'EXPORT'. "导出数据   DATA : GT_TEMP TYPE TABLE OF TY_ITEM WITH HEADER LINE.  LOOP AT GT_IMERR INTO GT_TEMP.   APPEND GT_TEMP. ENDLOOP.   INCLUDE...