ABAP DESCRIBE FIELD/TABLE 用法 .

DESCRIBE 语句一共有三类用法,先简述一下 DESCRIBE FIELD的用法:
Properties of an Internal Table 1.DESCRIBE TABLE ...
Field Properties 2.DESCRIBE  FIELD...
Distance Between Two Fields 3.DESCRIBE DISTANCE ...


(1): DESCRIBE TABLE

语法:DESCRIBE TABLE itab   [KIND knd]  [LINES lin]  [OCCURS n]

作用:判断内表itab的某些属性并把它们指定到指定的变量中。不同的选项使你能够判断表类型,当前字段行数 和 初始化需要的内存大小。

另外,系统字段sy-tfill和 sy-tleng 保存着当前表行数量 和 以字节计的表行长度。

注:

为了更详细的关于内表的信息,应用RTTS的方法代替语句describe table。

没有指定一个附加项,语句describe table 只设置系统字段sy-tfill 和sy-tleng的值。

1.·····KIND knd

判断内表itab的表类型,并把一个相应的字符的标识赋给字符型数据类型的数据对象knd。标识为T 时代表标准表,为S时代表排序表,为H时代表哈希表。

这些值在类型组SYDES中也被定义成常量sydes_kind-standed ,sydes_kind-sorted,sydes_kind-hashed。

例:在一个子程序中对一个一般内表进行递减排序。因为排序表不能降序排列,所以会进行表类型检查来避免不能处理的异常。
              TYPE-POOLS sydes.
          ...
           FORM sort_descending CHANGINGitab TYPE ANY TABLE.
             DATA tabkind(1) TYPE c.
             DESCRIBE TABLE itab KIND tabkind.
             IF tabkind = sydes_kind-standard OR
                tabkind= sydes_kind-hashed.
                SORTitab DESCENDING.
             ELSEIF tabkind = sydes_kind-sorted.
                MESSAGE'...' TYPE 'E'.
             ELSE.
                MESSAGE'...' TYPE 'E'.
             ENDIF.
           ENDFORM.

2.·····LINES lin

DESCRIBE TABLE lt_mat LINES lv_cont. 

这行的意思是 计算内表 lt_mat  的行数 ,将行数放到变量 lv_cont 里。

lv_cont为I类型的数据对象。

注:

在版本6.10中,内表表行的当前数量也可以用内建函数lines来判断。

3.·····OCCURS n

在内表用选项initial size 或者 老式的选项ocurs创建期间决定内表所需要的初始化内存大小,并把值赋给数据对象n,n为I类型的数据对象。

(2) DESCRIBE  FIELD

作用:对一个Elementary data的属性进行描述,就是说可以通过这条语句知道某一个data的类型、长度、小数点、输出长度等信息。语法如下。
DESCRIBE FIELD dobj
   [TYPE typ [COMPONENTS com]]
   [LENGTH ilen IN { BYTE | CHARACTER } MODE]
   [DECIMALS dec]
   [OUTPUT-LENGTH olen]
   [HELP-ID hlp]
   [EDIT MASK mask].
1. ... TYPE typ [COMPONENTS com]
DESCRIBE FIELD data1 TYPE typ1 COMPONENTS com1.
运行结果是data1的类型被存储在typ1变量里,com1则存放了data1里面有几个子元素。
2. ... LENGTH ilen IN { BYTE | CHARACTER } MODE
DESCRIBE FIELD data1 LENGTH ilen IN BYTE CHARACTER MODE.
运行的结果是data1定义的长度存在了ilen里。
3. ... DECIMALS dec
DESCRIBE FIELD data1 DECIMALS dec.
运行的结果是如果data1是小数,dec则存放了小数点后的位数。
4. ... OUTPUT-LENGTH olen
DESCRIBE FIELD data1 OUTPUT-LENGTH olen.
运行的结果是data1的输出长度存在了olen里。
5. ... HELP-ID hlp
DESCRIBE FIELD carrid HELP-ID hlp.
如果data1是由ABAP Dictionary 里的data element决定,data1的数据类型就会被存放在 hlp里。
6. ... EDIT MASK mask
DATA: time     TYPE s_fltime,
       seconds TYPE i,
       msk     TYPE string.
DESCRIBE FIELD time EDIT MASK msk.
seconds = 333.
WRITE seconds USING EDIT MASK msk.
————————————————
版权声明:本文为CSDN博主「梦笔生花111」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/Victor9279/article/details/53007568

猜你喜欢

转载自blog.csdn.net/qq_53645728/article/details/129753556