`
tianjun309
  • 浏览: 360283 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

ABAP 笔记 01

    博客分类:
  • SAP
阅读更多

*&---------------------------------------------------------------------*
*& 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.  去掉前后的空格,测试一下即可。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics