ABAP DESCRIBE语句

声明:原创作品,转载时请注明文章来自SAP师太技术博客:www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将追究法律责任!原文链接:http://www.cnblogs.com/jiangzhengjun/p/4292805.html

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
  [TYPE typ [COMPONENTScom]]
  [LENGTHilen IN {BYTE|CHARACTER} MODE]
  [DECIMALSdec]
  [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

时间: 2024-11-07 23:17:18

ABAP DESCRIBE语句的相关文章

ABAP必备基础语法

ABAP基础知识     数据类型 C :字符串 D :日期型 格式为 YYYYMMDD 例:'1999/12/03' F : 浮点数 长度为8 I :整数 N :数值组成的字符串 如:011,'302' P : PACKED数 用于小数点数值 如:12.00542 T : 时间 格式为:HHMMSS 如:'14:03:00' X : 16进制数 如:'1A03' *-----------------------------------------------------------------

ABAP table control例子

[转自]http://blog.csdn.net/lhx20/article/details/3039909Table control用于在screen上以表格的形式显示数据,在table control中,可以使用table elements,keywords,,templates,radio buttons,radio button groups和pushbuttons.一行可以有255个columns.每个column可以有一个title.Table control可以用来显示single

MySQL-Select语句高级应用

1.1 SELECT高级应用 1.1.1 前期准备工作 本次测试使用的是world数据库,由mysql官方提供下载地址: https://dev.mysql.com/doc/index-other.html world文件导入方法,官方说明: https://dev.mysql.com/doc/world-setup/en/world-setup-installation.html 下载sqlyog 软件,用于之后的数据库管理用: http://www.webyog.com 创建用户,能够让sq

load data语句实验报告

1.创建和选择数据库 如果管理员在设置权限时为您创建数据库,则可以开始使用它.否则,您需要自己创建它: 创建数据库不会选择它来使用; 你必须明确地这样做.要创建menagerie当前数据库,请使用以下语句: 2.创建表 创建数据库很容易,但此时它是空的,SHOW TABLES告诉你: 使用CRATE TABLE语句指定表的布局: 创建表后,SHOW TABLES应该产生一些输出: 要验证您的表是否按预期方式创建,请使用以下DESCRIBE语句: 3.将数据加载到表中 假设宠物记录可以如此处所示:

MySQL数据库基本语句

MySQL数据库系统是一个典型的C/S(客户端/服务器)架构的应用,要访问MySQL数据库需要使用专门的客户端软件.在Linux系统中,最简单.易用的MySQL客户端软件是其自带的mysql命令工具. 通过CentOS 7 编译安装MySQL数据库系统可以了解并掌握MySQL数据库的安装方式,作为一名合格的运维工程师,MySQL数据库的基本操作也是必须要掌握的. MySQL是一套数据库管理系统,在每台MySQL服务器中,均支持运行多个库,每个库相当于一个容器,存放着许多表,表中的每行记录包含一条

mysql基础之创建数据库和表

假设你已拥有创建和修改服务器上数据库所必需的权限,那么我们来看一下如何创建数据库以及数据库中的表.在本章的示例中,我们将为一个虚拟的书店建立一个数据库: CREATE DATABASE bookstore; 通过这条简单的SQL语句,我们已经创建了名为bookstore的数据库.另外,MySQL语句以及子句中的保留字对大小写不敏感.数据库与表名对大小写是否敏感取决于你所用的操作系统,比如在Linux系统上对大小写是敏感的,而Window系统对大小写不敏感.按照通常的习惯,在SQL说明文档中保留字

十、MySQL视图

数据库中的视图是一个虚拟表.同真实的表一样,视图包含一系列带有名称的行和列数据.行和列数据来自由定义视图查询所引用的表,并且在引用视图时动态生成. 10.1.视图概述 视图是从一个或多个表中导出的,视图的行为与表非常相似,但视图是一个虚拟表.在视图中用户可以使用SELECT语句查询,以及使用INSERT.UPDATE.DELETE修改记录. 视图是一个虚拟表,是从数据库中一个或多个表中导出来的表.试图还可以从已存在的视图的基础上定义.视图一经定义便存储在数据库中,与其相对应的数据并没有像表那样在

PHP学习笔记A

//语法错误(syntax error)在语法分析阶段,源代码并未被执行,故不会有任何输出. /* [命名规则] */常量名 类常量建议全大写,单词间用下划线分隔 // MIN_WIDTH变量名建议用下划线方式分隔 // $var_name函数名建议用驼峰命名法 // varName定界符建议全大写 // <<<DING, <<<'DING'文件名建议全小写和下划线.数字 // func_name.php私有属性名.方法名建议加下划线 // private $_name

第四章 视图

创建视图 语法形式: create [algorithm = {undefined|merge|temptable}] view 视图名 [(属性清单)] as select语句 [with [cascaded|local] check option] 1.algorithm 可选参数,表示视图选择的算法 undefined表示自动选择 merge表示将使用视图的语句与视图定义合并起来,使得视图定义的某一部分吧取代语句的对应部分. temptable表示将视图的结果存入临时表,然后使用临时表执行