*& Report YTEST002_CY *&
*&---------------------------------------------------------------------* *& *&
*&---------------------------------------------------------------------*
REPORT YTEST002_CY.
********************************************************************** * 基本数据类型 * ********************************************************************** DATA text1(20) TYPE c. \"声明一个char类型大小为20的变量。 DATA text2 TYPE string. \"声明一个string类型的变量。 DATA number TYPE i. \"声明一个ineger类型的变量。
text1 = 'this number '.\"为text1赋值 number = 100. \"为NUMBER赋值。
text2 = 'is an integer.'. \"为text2赋值
WRITE: text1, number, text2. \"输出三个变量。
********************************************************************** * 自定义类型声明 * ********************************************************************** WRITE: / '************************************************************'.
TYPES MYTEXT(10) TYPE C. \"自定一个类型CHAR大小为10名字为MYTEXT的类型。 TYPES MYAMOUNT TYPE P DECIMALS 2.\"自定义一个类型为PACKED保留2位小数名为MYAMOUNT的类型。
DATA text type mytext.\"声明一个类型为MYTEXT的变量。 DATA amount TYPE myamount.\"声明一个类型为MYANOUNT的变量。
text = '4 / 3 ='.\"为TEXT赋值。 amount = 4 / 3. \"为AMOUNT赋值。
WRITE: / TEXT,AMOUNT.\"输出两个值.
********************************************************************** * 定义结构体 * ********************************************************************** WRITE: / '************************************************************'.
TYPES: BEGIN OF MAN,\"自定义一个数据类型。
NAME(20) TYPE C, \"为数据类型声明一个名为name的CHAR类型的变量。 AGE TYPE I,\"为数据类型声明一个名为AGE类型为INTEGER的变量
HIGH TYPE P DECIMALS 2,\"为数据体类型声明一个名为HIGH类型为PACKED并且保留两位小数点的变量。
END OF MAN.\"结束自定义数据类型。
TYPES: BEGIN OF KILLER, \"自定义一个名为KILLER的数据类型。 SEX TYPE MAN,\"此数据类型的第一个变量引用了MAN这个数据类型。 HOBBY(20) TYPE C,\"为killer定义一个名为HOBBY类型为CHAR的变量。 END OF KILLER.\"结束定义\"
DATA MAJOR TYPE KILLER.\"声明一个名为MAJOR类型为KILLER的结构体。
MAJOR-SEX-NAME = 'DANIEL'.\"为MAJOR所引用的数据类型中的SEX变量下的NAME赋值。 MAJOR-SEX-AGE = '25'.\"为MAJOR所引用的数据类型中的SEX变量下的AGE赋值 MAJOR-SEX-HIGH = '1.80'.\"为MAJOR所引用的数据类型中的SEX变量下的HIGH赋值 MAJOR-HOBBY = 'GUN'.\"为MAJOR的变量HOBBY赋值。
WRITE: / MAJOR-SEX-NAME,MAJOR-SEX-AGE,MAJOR-SEX-HIGH,MAJOR-HOBBY.\"分别输出MAJOR里面的数据。
**********************************************************************
* 定义内表 * ********************************************************************** WRITE: / '************************************************************'.
TYPES: BEGIN OF thistext,\"定义一个数据类型 text_number TYPE i,\"定义一个I类型的变量。 text_name(10) TYPE c,\"定义一个char类型的变量 END OF thistext.\"结束定义
TYPES mytab TYPE STANDARD TABLE OF thistext with DEFAULT KEY. \"定义一个数据类型,用来声明内表。
DATA d_text TYPE thistext.\"定义一个类型为thistext的结构体。 DATA itab TYPE mytab. \"定义一个类型为MYTAB的内表
d_text-text_number = 1.\"为结构体赋值 d_text-text_name = 'aaa'.\"为结构体赋值 APPEND d_text to itab.\"将结构体的值传入内表。 d_text-text_number = 2. d_text-text_name = 'bbb'. APPEND d_text to itab. d_text-text_number = 3. d_text-text_name = 'ccc'. APPEND d_text to itab. d_text-text_number = 4. d_text-text_name = 'ccc'. APPEND d_text to itab.
loop at itab into d_text.\"循环开始
WRITE: / d_text-text_number,d_text-text_name.\"循环输出 ENDLOOP.\"循环结束。
********************************************************************** * 描述域
********************************************************************** WRITE: / '**********************************************************************'.
TYPES: surname(20) TYPE c,\"声明一个大小为20的CHAR类型数据类型 street(30) TYPE c,\"声明一个大小为30的CHAR类型数据类型。 zip_code(10) TYPE n,\"声明一个大小为10的数字文本数据类型。 city(30) TYPE c,\"声明一个大小为30的CHAR类型数据类型、 phone(20) TYPE c,\"声明一个大小为20的数字文本类型数据类型。 date TYPE sy-datum. \"声明一个变量保存系统日期的类型数据类型。
TYPES: BEGIN OF address,\"开始声明一个数据类型
name TYPE surname,\"声明一个类型为SURNAME的变量。 code TYPE zip_code, \"声明一个类型为zip_code的变量。 town TYPE city, \"声明一个类型为CITY的变量。
str TYPE street, \"声明一个类型为STREET类型的变量。 END OF address.
TYPES: BEGIN OF phone_list,\"声明一个数据类型
adr TYPE address,\"声明一个名为adr数据类型为address的变量。 tel TYPE phone,\"声明一个名为TEL数据类型为PHONE的变量。 END OF phone_list.
TABLES spfli.\"引入spfli表。
DATA: BEGIN OF test,\"声明一个结构体。
col1(3) TYPE c,\"声明一个大小为3类型为CHAR的变量。 col2(2) TYPE c,\"声明一个大小为2类型为CHAR的变量。 col3 TYPE i, \"声明一个INTEGER类型的变量。 END OF test,
dist TYPE i.\"声明一个INTEGER类型的变量。
DATA: field_text(8) type c value 'abcdefgh', \"声明一个char类型的变量并且赋值为'”abcdefgh
len TYPE i,\"声明一个integer类型的变量 保存字符串长度
numtext(10) TYPE n value '0123456789', \"声明一个数字文本类型的变量 并且赋值为0123456789
typ(1) TYPE c,\"声明一个CHAR类型的变量,来保存类型 pl TYPE phone_list,\"声明一个PHONE_LIST类型的变量。 n TYPE i,\"声明一个INTEGER类型的变量 float TYPE f, \"声明一个浮点数
out TYPE i,\"声明一个INTEGER类型的变量保存DESCRIBE FIELD的输出长度 pack type p decimals 2, \"声明一个P类型的变量 保留两位小数 dec(1) TYPE c.\"声明一个CHAR类型的变量。
DESCRIBE FIELD field_text LENGTH len in CHARACTER MODE.\"把FILED_TEXT内部字符串的长度赋值给LEN并且输出出来。
WRITE: / field_text, 'has lenth',len.
DESCRIBE FIELD NUMTEXT TYPE TYP.\"输出NUMTEXT的类型 WRITE: / 'NUMERICAL TEXT HAS TYPE', TYP.
DESCRIBE FIELD SPFLI-FLTIME TYPE TYP.\"输出SPFLI-FLTIME的类型 WRITE: 'AND SPFLI-FLTIME HAS TYPE', TYP.
DESCRIBE FIELD FLOAT LENGTH LEN IN BYTE MODE OUTPUT-LENGTH OUT.\"FLOAT得大小赋值给LEN,将他的输出长度给OUT 并且输出
WRITE: / 'FLOATING POINT NUMBER HAS LENGTH', LEN, 'AND OUTPUT LENGTH',OUT.
DESCRIBE FIELD PACK DECIMALS DEC.\"输出PACK保留了几位小数。 WRITE: / PACK, 'HAS',DEC, 'DECIMALS'.
DESCRIBE FIELD PL TYPE TYP COMPONENTS N.\"输出TYP的类型和内部包含的元素数量 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.
将*&---------------------------------------------------------------------*
*& Report YTEST003_PROCESSDATA_CY *&
*&---------------------------------------------------------------------* *& *&
*&---------------------------------------------------------------------*
REPORT YTEST003_PROCESSDATA_CY.
********************************************************************** * 用MOVE赋值
********************************************************************** *MOVE
DATA: t(10) TYPE c,
number TYPE p DECIMALS 2, count TYPE i.
t = 1111.
MOVE '5.75' to number.
count = number. WRITE 'move'. ULINE.
WRITE: / t, / number, / count.
*move corresponding DATA: BEGIN OF address,
firstname(20) TYPE c VALUE 'Fred', surname(20) TYPE c value 'FLINTSTONE', initials(4) TYPE c VALUE 'ff',
street(20) TYPE c VALUE 'cave avenue', number TYPE i VALUE '11',
postcode(5) TYPE n VALUE '98765', city(20) TYPE c VALUE 'Bedrock', END OF address.
DATA: BEGIN OF name, surname(20) TYPE c, firstname(20) TYPE c, initials(4) TYPE c,
title(10) TYPE c VALUE 'Mister', END OF name.
MOVE-CORRESPONDING address to name. skip.
WRITE: / 'move corresponding'. ULINE.
WRITE: / 'FIRSTNAME', address-firstname, / 'surname', address-surname, / 'initials',address-initials, / 'street', address-street, / 'number', address-number, / 'postcode',address-postcode, / 'city',address-city. SKIP.
WRITE: / 'surname', name-surname, / 'fristname',name-firstname, / 'initials', name-initials, / 'title', name-title.
********************************************************************** * 用WRITE TO 赋值
********************************************************************** WRITE: / '**********************************************************************'.
DATA: write_number TYPE f VALUE '4.3', text(10) TYPE c,
float TYPE f,
pack TYPE p DECIMALS 1.
WRITE: / write_number.
WRITE write_number to text EXPONENT 2. WRITE / text.
MOVE write_number to pack. WRITE / pack. ULINE.
DATA: write_name(10) TYPE c VALUE 'source', soruce(10) TYPE c VALUE 'antony', target(10) TYPE c.
WRITE (write_name) to target. WRITE target.
********************************************************************** * 数据运算
********************************************************************** WRITE: / '**********************************************************************'. * div mod
DATA: c_pack TYPE p decimals 4, n TYPE f VALUE '+5.2', m TYPE f VALUE '+1.1'.
pack = n / m. write / pack.
pack = n div m. WRITE / pack.
pack = n mod m.
WRITE / pack. ULINE.
*multiply-corresponding. DATA: BEGIN OF rate,
usa TYPE f VALUE '0.6667', frg TYPE f VALUE '1.0', aut TYPE f VALUE '7.0', END OF rate.
DATA: BEGIN OF money,
usa TYPE i VALUE 100, frg TYPE i VALUE 200, aut TYPE i VALUE 300, END OF money.
MULTIPLY-CORRESPONDING money BY rate.
WRITE: / money-usa, / money-frg, / money-aut. ULINE. *ADD
DATA: BEGIN OF SERIES, n1 TYPE i VALUE 10, n2 TYPE i VALUE 20, n3 TYPE i VALUE 30, n4 TYPE i VALUE 40, n5 TYPE i VALUE 50, n6 TYPE i VALUE 60, END OF SERIES.
DATA SUM TYPE I.
ADD SERIES-N1 THEN SERIES-N2 UNTIL SERIES-N5 GIVING SUM. WRITE SUM.
ADD SERIES-N2 THEN SERIES-N3 UNTIL SERIES-N6 TO SUM. WRITE / SUM.
********************************************************************** * 数据运算
********************************************************************** WRITE: / '**********************************************************************'.
DATA a TYPE P DECIMALS 2.
DATA b TYPE P DECIMALS 2 VALUE '-5.55'.
a = abs( b ).\"绝对值 WRITE: / 'abs:',a.
a = sign( b ). \"返回输入参数符号,正数为1,0返回0,负数为-1. WRITE: / 'sign:',a.
a = ceil( b ).\"返回小于输入参数的最小整数。 WRITE: / 'ceil:',a.
a = floor( b ).\"返回大于输入参数的最大整数. WRITE: / 'floor:',a.
a = trunc( b ).\"返回输入参数整数部分。 WRITE: / 'trunc:',a.
a = frac( b ). \"返回输入参数的小数部分。 WRITE: / 'frac:',a. ULINE.
DATA: result TYPE f,
pi(10) TYPE c VALUE '3.14159265'. result = cos( pi ).\"余弦函数。
WRITE result.
********************************************************************** * 数据运算
**********************************************************************
WRITE: / '***********************************************************'. DATA: ultimo TYPE d. ultimo = sy-datum. ultimo+6(2) = '01'. ultimo = ultimo - 1. WRITE : / ultimo. ULINE.
DATA: DIFF TYPE I, SECONDS TYPE I, HOURS TYPE I.
DATA: T1 TYPE T VALUE '200000', T2 TYPE T VALUE '020000'.
DIFF = T2 - T1.
SECONDS = DIFF MOD 86400. HOURS = SECONDS / 3600.
WRITE: / TEXT-001, HOURS. ULINE.
DATA: ODATE TYPE D VALUE '19955011', IDATE LIKE ODATE.
DATA FIELD(8) TYPE C.
FIELD = ODATE. WRITE / FIELD.
CONVERT DATE odate INTO INVERTED-DATE idate.
FIELD = IDATE. WRITE / FIELD.
CONVERT INVERTED-DATE IDATE INTO DATE ODATE.
FIELD = ODATE. WRITE / FIELD.
********************************************************************** * 压缩字符串
********************************************************************** WRITE: / '***********************************************************'. DATA: STRING9(25) TYPE c VALUE ' one two three four', len9 TYPE i.
len9 = strlen( string9 ). WRITE: / string9, '!'. WRITE: / 'length:', len9. CONDENSE string9.
len9 = strlen( string9 ). WRITE: / string9, '!'. WRITE: / 'length:',len9. condense string9 NO-GAPS. len9 = strlen( string9 ). WRITE: / string9, '!'. WRITE: / 'length:',len9.
********************************************************************** * 压缩拼接
********************************************************************** WRITE: / '***********************************************************'. DATA: c1(10) TYPE C VALUE 'SUM', C2(3) TYPE C VALUE 'MER', C3(5) TYPE C VALUE 'holi', C4(10) TYPE C VALUE 'DAY', C5(30) TYPE C,
SEP(3) TYPE C VALUE '-'.
CONCATENATE C1 C2 C3 C4 INTO C5. WRITE / C5.
CONCATENATE C1 C2 C3 C4 INTO C5 SEPARATED BY SEP. WRITE / C5.
********************************************************************** DATA time TYPE t VALUE '172545'. WRITE time.
WRITE / time+2(2). clear time+2(4). WRITE / time. ULINE.
DATA: f1(8) TYPE c VALUE 'abcdefgh',
f2(20) TYPE c VALUE '12345678901234567890'.
f2+6(5) = f1+3(5). WRITE / f1. WRITE / f2. ULINE.
DATA: f3(8) TYPE c VALUE 'ABCDEFGH', f4(8) TYPE c.
因篇幅问题不能全部显示,请点此查看更多更全内容