确定数据对象属性类型长度小数位{转载}
2009-10-21 14:26
330 查看
如果要查明数据对象的数据类型, 或者要在程序的运行期间使用其属性,请使用 DESCRIBE 语句。语法如下:
语法
DESCRIBE FIELD [LENGTH ] [TYPE [COMPONENTS ]]
[OUTPUT-LENGTH ] [DECIMALS ]
[EDIT MASK ].
将由语句的参数指定的数据对象的属性写入参数后的变量。
DESCRIBE FIELDS 语句具有下列参数:
参数用途
LENGTH 确定字段长度
TYPE确定数据类型
OUTPUT-LENGTH确定输出长度
DECIMALS确定小数位
EDIT MASK确定转换例程
确定字段长度
要确定数据对象的长度,请利用 DESCRIBE FIELD 语句使用 LENGTH 参数,如下所示:
语法
DESCRIBE FIELD LENGTH .
系统读取字段的长度,并将值写入字段 。
DATA: TEXT(8), LEN TYPE I.
DESCRIBE FIELD TEXT LENGTH LEN.
该示例中,字段 LEN 包含的值为 8。
确定数据类型
要确定字段的数据类型,请利用 DESCRIBE FIELD 语句使用 TYPE 参数,如下所示:
语法
DESCRIBE FIELD TYPE [COMPONENTS ].
系统读取字 段 的数据类型 ,然后将值 写入字段 。
除返回预定 义数据类型 C、D、F、 I、N、P、 T 和 X 外(参见 基本数据类型 - 预定义的 中的表), 该语句还返 回
s 对于带前导 符号的两字 节整型
b 对于无前导 符号的一字 节整型
h 对于内表
C 对于组件中 没有嵌套结 构的结构
C 对于组件中 至少有一个 嵌套结构的 结构
类型 s 和 b 可以来自于 对 ABAP/4 词典对象的 引用(参见 TABLES 语句),而后三 种类型则源 于用户定义 的类型。
通过选项 COMPONENTS ,语 句返回
u 对于组件中 没有内表的 结构
v 对于组件或 子组件中至 少有一个内 表的结构
并将结构的 直接组件的 个数写入 。
TABLES SPFLI.
DATA: NUMTEXT(8) TYPE N, TYP.
DESCRIBE FIELD NUMTEXT TYPE TYP.
WRITE TYP.
DESCRIBE FIELD SPFLI-FLTIME TYPE TYP.
WRITE TYP.
这产生下列 输出:
N T
示例中,字 段 TYP 包含第一个 值“N”, 然后是值“ T”。
TYPES: SURNAME(20) TYPE C,
STREET(30) TYPE C,
ZIP_CODE(10) TYPE N,
CITY(30) TYPE C,
PHONE(20) TYPE N,
DATE LIKE SY-DATUM.
TYPES: BEGIN OF ADDRESS,
NAME TYPE SURNAME,
CODE TYPE ZIP_CODE,
TOWN TYPE CITY,
STR TYPE STREET,
END OF ADDRESS.
TYPES: BEGIN OF PHONE_LIST,
ADR TYPE ADDRESS,
TEL TYPE PHONE,
END OF PHONE_LIST.
DATA PL TYPE PHONE-LIST.
DATA: TYP, N TYPE I.
DESCRIBE FIELD PL TYPE TYP COMPONENTS N.
WRITE: TYP, N.
该示例与 TYPES 语句 中的最后一 个示例相似 。输出如下 :
u 2
此处,由于 PL 是具有 2 个直接组件 (ADR 和 TEL)而 没有内表的 结构,所以 字段 TYP 包含值‘u’ ,而 N 包含值 2。
确定输出长度
要确定字段的输出长度 ,请利用 DESCRIBE FIELD 语句使用 OUTPUT-LENGTH 参数,如下 所示:
语法
DESCRIBE FIELD OUTPUT-LENGTH .
系统读取字 段 的输出长度 ,并将值写 入字段 。
DATA: FLOAT TYPE F, OUT TYPE I, LEN TYPE I.
DESCRIBE FIELD FLOAT LENGTH LEN OUTPUT-LENGTH OUT.
该示例的结 果是字段 LEN 包含值 8,而字段 OUT 包含值 22。
关于输出长 度的详细信 息,参见 WRITE 语句 。
确定小数位
若要确定类 型 P 字段的小数 位的个数, 请利用 DESCRIBE FIELD 语句使用 DECIMALS 参数,如下 所示:
语法
DESCRIBE FIELD DECIMALS .
系统读取字 段 的小数个数 ,并将值写 入字段 。
DATA: PACK TYPE P DECIMALS 2, DEC.
DESCRIBE FIELD PACK DECIMALS DEC.
该示例的结 果是字段 DEC 包含值 2。
确定转换例程
要确定 ABAP/4 词典中某字段的转换例程是否存在,如果存在,名称是什么,请利用 DESCRIBE FIELD 语句使用 EDIT MASK 参数,如下 所示:
语法
DESCRIBE FIELD EDIT MASK .
如果 ABAP/4 词典中字段 的转换例程 存在,则系 统将其写入 字段 ,然 后将系统字 段 SY-SUBRC 中的返回代 码设为 0。
可以象下面 所显示的那 样,在 WRITE 语句中将字 段 直接用作格 式模板:
WRITE USING EDIT MASK .
关于 WRITE 语句的详细 信息,参见 WRITE 语句 。如果字段 没有转换例 程,则系统 将返回代码 设为 4。
转自: http://swordwoo.spaces.live.com/blog/cns!6C04FE0A736A65C5!141.entry
ABAPDOCU DEMO
REPORT demo_describe_field.
TYPES: surname(20) TYPE c,
street(30) TYPE c,
zip_code(10) TYPE n,
city(30) TYPE c,
phone(20) TYPE n,
date TYPE sy-datum.
TYPES: BEGIN OF address,
name TYPE surname,
code TYPE zip_code,
town TYPE city,
str TYPE street,
END OF address.
TYPES: BEGIN OF phone_list,
adr TYPE address,
tel TYPE phone,
END OF phone_list.
TABLES spfli.
DATA: BEGIN OF test,
col1(3) TYPE c,
col2(2) TYPE c,
col3 TYPE i,
END OF test,
dist TYPE i.
DATA: text(8) TYPE c VALUE 'abcdefgh', len TYPE i,
numtext(10) TYPE n VALUE '0123456789', typ(1) TYPE c,
pl TYPE phone_list,
n TYPE i,
float TYPE f, out TYPE i,
pack TYPE p DECIMALS 2, dec(1) TYPE c.
DESCRIBE FIELD text LENGTH len IN CHARACTER MODE.
WRITE: text, 'has length', len.
DESCRIBE FIELD numtext TYPE typ.
WRITE: / 'Numerical text has type', typ.
DESCRIBE FIELD spfli-fltime TYPE typ.
WRITE: 'and SPFLI-FLTIME has type', typ.
DESCRIBE FIELD float LENGTH len IN BYTE MODE OUTPUT-LENGTH out.
WRITE: / 'Floating point number has length', len,
'and output length', out.
DESCRIBE FIELD pack DECIMALS dec.
WRITE: / pack, 'has', dec, 'Decimals'.
DESCRIBE FIELD pl TYPE typ COMPONENTS n.
WRITE: / 'The complex field PL has type', typ, 'with', n, 'components'.
DESCRIBE DISTANCE BETWEEN test-col3 AND test-col1 INTO dist
IN BYTE MODE.
WRITE: / 'The distance between TEST-COL3 and TEST-COL1 is', dist.
结果:
验证 DESCRIBE FIELD
——————————————————————————————————————————————————————————————
abcdefgh has length 8
Numerical text has type N and SPFLI-FLTIME has type I
Floating point number has length 8 and output length 24
0.00 has 2 Decimals
The complex field PL has type u with 2 components
The distance between TEST-COL3 and TEST-COL1 is 12
语法
DESCRIBE FIELD [LENGTH ] [TYPE [COMPONENTS ]]
[OUTPUT-LENGTH ] [DECIMALS ]
[EDIT MASK ].
将由语句的参数指定的数据对象的属性写入参数后的变量。
DESCRIBE FIELDS 语句具有下列参数:
参数用途
LENGTH 确定字段长度
TYPE确定数据类型
OUTPUT-LENGTH确定输出长度
DECIMALS确定小数位
EDIT MASK确定转换例程
确定字段长度
要确定数据对象的长度,请利用 DESCRIBE FIELD 语句使用 LENGTH 参数,如下所示:
语法
DESCRIBE FIELD LENGTH .
系统读取字段的长度,并将值写入字段 。
DATA: TEXT(8), LEN TYPE I.
DESCRIBE FIELD TEXT LENGTH LEN.
该示例中,字段 LEN 包含的值为 8。
确定数据类型
要确定字段的数据类型,请利用 DESCRIBE FIELD 语句使用 TYPE 参数,如下所示:
语法
DESCRIBE FIELD TYPE [COMPONENTS ].
系统读取字 段 的数据类型 ,然后将值 写入字段 。
除返回预定 义数据类型 C、D、F、 I、N、P、 T 和 X 外(参见 基本数据类型 - 预定义的 中的表), 该语句还返 回
s 对于带前导 符号的两字 节整型
b 对于无前导 符号的一字 节整型
h 对于内表
C 对于组件中 没有嵌套结 构的结构
C 对于组件中 至少有一个 嵌套结构的 结构
类型 s 和 b 可以来自于 对 ABAP/4 词典对象的 引用(参见 TABLES 语句),而后三 种类型则源 于用户定义 的类型。
通过选项 COMPONENTS ,语 句返回
u 对于组件中 没有内表的 结构
v 对于组件或 子组件中至 少有一个内 表的结构
并将结构的 直接组件的 个数写入 。
TABLES SPFLI.
DATA: NUMTEXT(8) TYPE N, TYP.
DESCRIBE FIELD NUMTEXT TYPE TYP.
WRITE TYP.
DESCRIBE FIELD SPFLI-FLTIME TYPE TYP.
WRITE TYP.
这产生下列 输出:
N T
示例中,字 段 TYP 包含第一个 值“N”, 然后是值“ T”。
TYPES: SURNAME(20) TYPE C,
STREET(30) TYPE C,
ZIP_CODE(10) TYPE N,
CITY(30) TYPE C,
PHONE(20) TYPE N,
DATE LIKE SY-DATUM.
TYPES: BEGIN OF ADDRESS,
NAME TYPE SURNAME,
CODE TYPE ZIP_CODE,
TOWN TYPE CITY,
STR TYPE STREET,
END OF ADDRESS.
TYPES: BEGIN OF PHONE_LIST,
ADR TYPE ADDRESS,
TEL TYPE PHONE,
END OF PHONE_LIST.
DATA PL TYPE PHONE-LIST.
DATA: TYP, N TYPE I.
DESCRIBE FIELD PL TYPE TYP COMPONENTS N.
WRITE: TYP, N.
该示例与 TYPES 语句 中的最后一 个示例相似 。输出如下 :
u 2
此处,由于 PL 是具有 2 个直接组件 (ADR 和 TEL)而 没有内表的 结构,所以 字段 TYP 包含值‘u’ ,而 N 包含值 2。
确定输出长度
要确定字段的输出长度 ,请利用 DESCRIBE FIELD 语句使用 OUTPUT-LENGTH 参数,如下 所示:
语法
DESCRIBE FIELD OUTPUT-LENGTH .
系统读取字 段 的输出长度 ,并将值写 入字段 。
DATA: FLOAT TYPE F, OUT TYPE I, LEN TYPE I.
DESCRIBE FIELD FLOAT LENGTH LEN OUTPUT-LENGTH OUT.
该示例的结 果是字段 LEN 包含值 8,而字段 OUT 包含值 22。
关于输出长 度的详细信 息,参见 WRITE 语句 。
确定小数位
若要确定类 型 P 字段的小数 位的个数, 请利用 DESCRIBE FIELD 语句使用 DECIMALS 参数,如下 所示:
语法
DESCRIBE FIELD DECIMALS .
系统读取字 段 的小数个数 ,并将值写 入字段 。
DATA: PACK TYPE P DECIMALS 2, DEC.
DESCRIBE FIELD PACK DECIMALS DEC.
该示例的结 果是字段 DEC 包含值 2。
确定转换例程
要确定 ABAP/4 词典中某字段的转换例程是否存在,如果存在,名称是什么,请利用 DESCRIBE FIELD 语句使用 EDIT MASK 参数,如下 所示:
语法
DESCRIBE FIELD EDIT MASK .
如果 ABAP/4 词典中字段 的转换例程 存在,则系 统将其写入 字段 ,然 后将系统字 段 SY-SUBRC 中的返回代 码设为 0。
可以象下面 所显示的那 样,在 WRITE 语句中将字 段 直接用作格 式模板:
WRITE USING EDIT MASK .
关于 WRITE 语句的详细 信息,参见 WRITE 语句 。如果字段 没有转换例 程,则系统 将返回代码 设为 4。
转自: http://swordwoo.spaces.live.com/blog/cns!6C04FE0A736A65C5!141.entry
ABAPDOCU DEMO
REPORT demo_describe_field.
TYPES: surname(20) TYPE c,
street(30) TYPE c,
zip_code(10) TYPE n,
city(30) TYPE c,
phone(20) TYPE n,
date TYPE sy-datum.
TYPES: BEGIN OF address,
name TYPE surname,
code TYPE zip_code,
town TYPE city,
str TYPE street,
END OF address.
TYPES: BEGIN OF phone_list,
adr TYPE address,
tel TYPE phone,
END OF phone_list.
TABLES spfli.
DATA: BEGIN OF test,
col1(3) TYPE c,
col2(2) TYPE c,
col3 TYPE i,
END OF test,
dist TYPE i.
DATA: text(8) TYPE c VALUE 'abcdefgh', len TYPE i,
numtext(10) TYPE n VALUE '0123456789', typ(1) TYPE c,
pl TYPE phone_list,
n TYPE i,
float TYPE f, out TYPE i,
pack TYPE p DECIMALS 2, dec(1) TYPE c.
DESCRIBE FIELD text LENGTH len IN CHARACTER MODE.
WRITE: text, 'has length', len.
DESCRIBE FIELD numtext TYPE typ.
WRITE: / 'Numerical text has type', typ.
DESCRIBE FIELD spfli-fltime TYPE typ.
WRITE: 'and SPFLI-FLTIME has type', typ.
DESCRIBE FIELD float LENGTH len IN BYTE MODE OUTPUT-LENGTH out.
WRITE: / 'Floating point number has length', len,
'and output length', out.
DESCRIBE FIELD pack DECIMALS dec.
WRITE: / pack, 'has', dec, 'Decimals'.
DESCRIBE FIELD pl TYPE typ COMPONENTS n.
WRITE: / 'The complex field PL has type', typ, 'with', n, 'components'.
DESCRIBE DISTANCE BETWEEN test-col3 AND test-col1 INTO dist
IN BYTE MODE.
WRITE: / 'The distance between TEST-COL3 and TEST-COL1 is', dist.
结果:
验证 DESCRIBE FIELD
——————————————————————————————————————————————————————————————
abcdefgh has length 8
Numerical text has type N and SPFLI-FLTIME has type I
Floating point number has length 8 and output length 24
0.00 has 2 Decimals
The complex field PL has type u with 2 components
The distance between TEST-COL3 and TEST-COL1 is 12
相关文章推荐
- c# 确定dynamic类型的数据对象是否存在某个属性
- 如何在运行时确定对象类型(RTTI) [转载]
- InnerException 消息是“反序列化对象 属于类型 *** 时出现错误。读取 XML 数据时,超出最大字符串内容长度配额 (8192)。(注意细节)
- 【转载】怎样让SAP的货币、数字数据类型保留4位小数或者自定义位数小数
- isa class 帮助确定对象或变量的数据类型
- java List Collections.sort 排序 支持 对象属性 普通数据类型
- 【转载】SAP的货币数据类型保留4位小数
- js 将json字符串转换为json对象的方法解析 作者: 字体:[增加 减小] 类型:转载 将json字符串转换为json对象的方法。在数据传输过程中,json是以文本,即字符串的形式传递的,而J
- sql语句取得一个表中的列名,数据类型,及长度等属性
- 【C#】解决进行反序列化时出错:。InnerException 消息是“反序列化对象 属于类型 System.String 时出现错误。读取 XML 数据时,超出最大字符串内容长度配额 (8192)。
- 什么事数据对象以及属性分为什么类型?
- InnerException 消息是“反序列化对象 属于类型 *** 时出现错误。读取 XML 数据时,超出最大字符串内容长度配额 (8192)。(注意细节)
- 利用反射机制动态获取对象属性名称及数据类型
- 用sizeof(数据类型)可以确定各种数据类型在当前系统中的字节长度
- javascript基础(对象,对象属性,属性基本和引用数据类型,字面量创建对象,垃圾回收,属性的枚举)(十三)
- 数据对象的属性(特征)类型
- 读取 XML 数据时,超出最大字符串内容长度配额 (8192)。通过更改在创建 XML 读取器时所使用的 XmlDictionaryReaderQuotas 对象的 MaxStringContentLength 属性,可增加此配额。【轉】
- 利用反射机制动态获取对象属性名称及数据类型
- java List Collections.sort 排序 支持 对象属性 普通数据类型 升序 降序 正序 倒序 排列
- 利用反射取得类中属性(引用及非引用数据类型)及设置该类实例化对象的属性值