ABAP 笔记 01
*&---------------------------------------------------------------------**& Report Z10_P02
*& Author: TianJun GZ010
*& Date:2011/04/21
*& ABAP NOTE 1
*&---------------------------------------------------------------------*
*(1)在代码最开始的时候,需要制定一个REPORT
REPORT z10_p02.
*(2)如果下面有用到t001,则需要用TABLES来声明,或者用INTO指定将数据存到另一个地方。
* 这里的t001要查资料,了解一下table work area,和ABAP/4 资料档(Dictionary Object)
TABLES t001.
SELECT * FROM t001.
* WRITE: / t001-mandt.
ENDSELECT.
*(3)下面用到的begin of ... end of.然后用DATA声明后,可以直接使用,在ABAP里面存放方式是Structure,只是这样还不能将其
* 声明为一种type,然后复用。
DATA: BEGIN OF tianjuntest,
name(10) TYPE c,
address(20) TYPE c,
END OF tianjuntest.
tianjuntest-name = 'tianjun'.
tianjuntest-address = 'shenzhen city'.
*(4)下面先用TYPES将这个Strucutre定义为TYPE,后面就可以用DATA直接新建出此TYPE的实例,类似java里面的class与实例。
TYPES: BEGIN OF test2,
age TYPE i,
birthmonth TYPE d,
birthday TYPE d,
END OF test2.
DATA cooltest TYPE test2.
cooltest-age = 26.
cooltest-birthmonth = '10'.
cooltest-birthday = '03'.
WRITE: '你的年龄:', cooltest-age, / '你的出生月:',cooltest-birthmonth, / '你的出生日:',cooltest-birthday.
*(5)注意下面 LIKE 与 LIKE TABLE OF 的区别。
* 这个时候的LIKE,tabletest会成为一个Structure,flat structure; 注意:Structure里面只能放唯一一批数据,类似java中的class 属性。
* 而这个时候的LIKE TABLE OF,tabletest2会成为一个table,standard table; 注意:table在这里可以记录多条数据,就是一个table概念。
* 1.1 如果要添加进Standard table一条数据记录,可以使用配套字段的Structure,设置好数据,传输方法: APPEND XXX(Structure) TO XXX(Table)。
* 1.2 方法二是用 XXX LIKE LINE OF XXX(table name),方法见下面代码。并且这个table只能是internal table的时候,like line of 才可以使用,查资料看
* 这里说的internal table的具体含义(这里可以确定一点,只要是程序里面通过LIKE TABLE OF出来)
* 2. 注意只要APPEND TO一次数据,TABLE就会增加一条新记录。
DATA: tabletest LIKE cooltest.
DATA: tabletest2 LIKE TABLE OF cooltest.
tabletest-age = 22.
tabletest-birthday = '329'.
APPEND tabletest TO tabletest2.
tabletest-birthmonth = '32'.
APPEND tabletest TO tabletest2.
tabletest-birthmonth = '12'.
DATA: linetest LIKE LINE OF tabletest2.
linetest-age = 44.
linetest-birthday = '33'.
APPEND linetest TO tabletest2.
CLEAR linetest.
linetest-age = 26.
linetest-birthmonth = '11'.
APPEND linetest TO tabletest2.
CLEAR linetest.
*(6)通过SELECT语句可以遍历table内容,可以操作每条数据。
DATA: BEGIN OF test4,
char1 LIKE t001-mandt,
char2 LIKE t001-bukrs,
char3 LIKE t001-periv,
END OF test4.
SELECT mandt bukrs periv INTO test4 FROM t001.
*write: / test4-char3.
ENDSELECT.
*(7)将T001表导入internal table的方法。关注一下work area的含义。
* 如果不加select ... into table 中的table,会报错"You cannot use an internal table as a work area."
DATA: stable1 LIKE TABLE OF test4.
SELECT mandt bukrs periv INTO TABLE stable1 FROM t001.
*(8)可以将internal table 做排序,用Sort XXX(table name) by XXX(table 字段).
SORT stable1 BY char2.
*(9)可以通过LOOP AT XXX(internal table name) into XXX(line of table)来将表记录读出来做处理。
* CASE的句型:
* CASE XXXX.
* WNEH 'test'.
* to do...
* WHEN OTHERS.
* to do...
* ENDCASE.
DATA: linetest2 LIKE LINE OF stable1.
LOOP AT stable1 INTO linetest2.
CASE linetest2-char3.
WHEN 'K4'.
* WRITE: / 'this is K4'.
WHEN OTHERS.
* WRITE: / 'none'.
ENDCASE.
*(10)IF的写法,备注:不等于的三种写法:<> , >< , NE; 等于2种写法: = , EQ.
IF linetest2-char3 <> 'K4'.
WRITE: / 'this is not k4'.
ENDIF.
ENDLOOP.
*CONDENSE ls_range-low NO-GAPS. 去掉前后的空格,测试一下即可。
页:
[1]