abap学习笔记2

原创 2007年09月20日 15:39:00

内表的类型及定义:

*******************************************************************************

1,Abap的数据类型分为三种类型

*1,类型 *2,结构 *3,内表

*******************************************************************************

2,数据定义

*1 直接定义

Data int_a type I.

*2 参照自己定义的数据类型定义

Type char_six(6) type c.

Data chs type char_six.

*3 参照se11中建立的数据类型定义

*4 直接使用like

Data ch4 like ch3. (其中ch3已经在se11中定义过)

定义常数:使用constants

基本语法:

Constants: <const.name> type <type> value <literal>.

CONSTANTS INT TYPE I VALUE 99.

*******************************************************************************

3. 选择copy按钮,输入程序名字即可(客户的程序名字,需要以Z开头)

*******************************************************************************

4,如何设置关键字的大小写功能?

路径:在utilities--settings—pretty printer

*******************************************************************************

5,模式按钮

作用:可以call function,写write等固定格式,message等功能

操作方法:将光标放在程序中你要输入的地方,然后按pattern,输入你要输入的参数,回车即可。

旁边的pretty printer 是美化program,即是以标准的缩进和注释对program

*******************************************************************************

6,如何进行程序调试?

其中 F5 单步执行

F6 执行子程序的时候,不进入子程序,即跳过子程序

F7 跳出目前的子程序

F8 直接执行

*******************************************************************************

7,在窗口上直接输入 /h 就可以进入程序调试的模式

*******************************************************************************

8,创建事务代码t-code:SE93

另一种创建T-Code的方法是在程序中点击右键创建—transaction 也可以创建一个T-Code

*******************************************************************************

9,write:a ,b,c。

其中的冒号是语法链的作用。

******************************************************************************

10,如何定义一格结构?

*1,直接定义结构

Data : begin of stru_ztaly,

Name(10) type c,

……

End of stru_ztaly.

*2,自己在程序里先定义结构类型,再参照类型定义结构对象。

Types: begin of stru_ztaly,

Name(10) type c,

……

End of stru_ztaly.

Data: stru_ztaly2 type stru_ztaly.

*3,在se11定义一个公共的类型,再参照类型定义结构对象。

Data stru_italy type ityp_s_ztaly.

*4,使用like

Data stru_italy2 like stru_italy (其中stru_italy是已经定义了的结构)

*******************************************************************************

11,如何建立内表?

*1, 直接建内表

Data : begin of itab_italy occurs 0,

Ino type I,

…..

End of itab_italy.

*2,自己先建一个结构类型,再根据这个结构类型建内表

Type :begin of typ,

ino type I,

……

end of typ.

Data: itab_typ type table of typ.

其中关键字table不能少,否则还是结构,而不是内表

*3,现在数据字典中建一个内表类型,再参照这个类型

Dataitab_italys type zty_t_italy.

说明:对内表的操作必须依靠结构进行。

For example: append stru_italy to Itab_italy.

增加一行到内表中。

*4,内表输出必须依靠于结构,而且要循环输出

For example:

Loop at itab_italy into stru_ztaly.

Write: / ……….

Endloop.

*5,特殊情况

Tables: 表名A

说明:定义了一个和A同样名称的数据结构。

A type B occurs N

说明:定义出来的一格内表

*6data <itab> type <itabtype> [with header line]

说明:在定义的时候同时生成一个同名的结构

*******************************************************************************

12,如何理解程序中的流程呢?

说明:程序其实存放在database中的

*******************************************************************************

13,数据元素,结构和内表的区别是什么?

用一句话说明:就相当于数学中的 线

*******************************************************************************

14, open sql与 native sql的流程区别是什么?

说明:使用了open sql 就不必要理会后台的数据库,只要掌握了open sql就ok

使用native sql 只和后台数据库习习相关

上图:主要说明了

Open sql 只能使用DML native sql 可以使用DML DDL

Open sql 包含:insert,update,delete,modfy

*******************************************************************************

15,processing of tha abap processing block resumes(摘要)?

*******************************************************************************

16,系统参数sy-subrc的功能是?

若返回值为 0 表示系统执行数据成功

若返回值不为0 表示系统执行数据不成功(返回具体数据的含义参加F1帮助文件)

*******************************************************************************

17,message 的语法使用的例子?

说明:

其中bc400 message class

message

040the name of the airline &1 is &2.

041:Airline &1 is not available. (&1&2 都是program中的变量)

*******************************************************************************

18,系统得消息类型有几种?

其中warning的类型,可以不必理会,直接回车,就可继续执行

Error的类型,在执行过程中若产生Error类型的,将阻止系统继续往下执行

19,t-code:se14的作用?

主要是调整表的作用,具体功能未知

20,系统参数sy-dbcnt的作用是?

Sy-dbcnt表示找到的记录的序号,第一条记录为1,第二条记录为2,最后一条记录的序号也是记录数

21,消息管理的t-code:se91

管理请求号t-code:se10

创建帐号 t-code:su01

创建角色 t-code:pfcg

传输管理系统t-code:stms

跨客户端的应用层次 t-code:se81

寻找跨客户端组件 t-code:se84

创建事务代码:t-code:se93

创建增强工程:t-code:cmod

22,modify语句的作用?

这个是sap特有的语句,若该数据在数据库中存在,则update

若该数据在数据库中不存在,则insert

23,报表分为哪四类?

*1,tools --query

*2,simple lists --简单报表

*3,interactivelists --交互式报表

*4,alv grid Control --alv

24,query 的特征

*1,user basic reports

*2,each user defines own quickviews which only they can display

*3,uses existing data

*4,no administrative(管理的) work

*5,可以使用query进行修改

*6,interface to internal(EIS,ABC,ALV)and external application

*7,fewer functions than infoset query

*8,no transports

24,如何产生一个简单的报表?

Report zrl003.

Data:wa_spfli like spfli.

Select carrid connid cityfrom cityto

into corresponding fields of wa_spfli

from spfli.

Write: / wa_spfli-carrid, wa_spfli-connid,

Wa_spfli-cityfrom, wa_spfli-cityto.

Endselect.

25,setting the list format(报表的宽度和高度)?

基本的语法:

Report <name> line-size <s> line-count <m[(n)]>.

For example:

Report zrl003 line-size 50

Line-count 12.

……

Write:…

产生出来的效果图为:

26,如何在程序中显示图标?

For example:

Report zrl003.

Include<icon>

Include <symbol>

……

*state of free seats

If seatsfree < 1.

Write icon_red_light as icon.

Elseif seatsfree >1.

Write icon_green_light as icon.

Endif.

*state of booked seats

If wa_sflight-seatocc < 10.

Write sym_left_hand as symbol

Endif.

chouer523 发表于:2007.03.14 11:18 ::分类: ( SAP笔记 ) ::阅读:(1375次) :: 评论 (13) :: 引用 (0)

27-37 [回复]

27,设置固定列和显示最后一页的语法
具体的例子参考sapbc405_fold_scroll_boundary
28,系统参数sy-vline作用是画竖线
Sy-pagno 显示页数
Sy-colno 显示列数
Sy-linno 显示行数
29,如何使用checkbox and radiobutton
参看Example
* Radiobutton group with frame and frame text
SELECTION-SCREEN BEGIN OF BLOCK SEATS WITH FRAME TITLE TEXT-S02.
PARAMETERS PA_OCC RADIOBUTTON GROUP SEAT.
PARAMETERS PA_FRE RADIOBUTTON GROUP SEAT.
PARAMETERS PA_ALL RADIOBUTTON GROUP SEAT.
SELECTION-SCREEN END OF BLOCK SEATS.
* Parameters displayed in one line
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 1(20) TEXT-S03.
SELECTION-SCREEN COMMENT POS_LOW(8) TEXT-S04.
PARAMETERS PA_COL AS CHECKBOX.
SELECTION-SCREEN COMMENT POS_HIGH(8) TEXT-S05.
PARAMETERS PA_ICO AS CHECKBOX.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN END OF BLOCK OUT_PUT.
30,如何使用select-options
程序名称:SAPBC405_SSCD_SEL_SCREEN_I
SAPBC405_SSCD_SEL_SCREEN_II
其主要的语法为:
select-options for
Default
Default to
Memory id
Lower case
Obligatory “必输
No-extension “不具有延伸功能
No intervals
屏幕输出还有一个参数为parameter
语法为:
Parameter p_xxxxx like 。
而select-option 和parameter的使用区别主要在:
*1 使用Select-option时候,默认的全部的值
而使用parameter的时候,默认的值是空值
*2 使用select-option 用for
使用parameter的时候,使用的是like
说明:
*1 由于parameter,默认的是空值,所有在程序中,往往需要用if先进行判断是否为初始值。****initial****
*2 在程序中如果是与范围的参数进行匹配的时候,where条件中用in
32,如何进行初始值?
在initialization的事件中输入
INITIALIZATION.
MOVE: MARK TO PA_ALL.
MOVE: 'I' TO SO_CARR-SIGN,
'BT' TO SO_CARR-OPTION,
'AA' TO SO_CARR-LOW,
'LH' TO SO_CARR-HIGH.
APPEND SO_CARR.
CLEAR SO_CARR.
MOVE: 'E' TO SO_CARR-SIGN,
'EQ' TO SO_CARR-OPTION,
'DL' TO SO_CARR-LOW.
APPEND SO_CARR.
31,input checks: at selection-screen
程序名称:SAPBC405_SSCD_AT_SEL_SCREEN
* Check of selection criterion SO_DEPT
**判断飞行的事件如果小于6点或者大于22点的时候,提示出错误。
AT SELECTION-SCREEN ON so_dept.
IF ( so_dept-low LT '060000' OR so_dept-high LT '060000' )
OR ( so_dept-low GE '220000' OR so_dept-high GE '220000' )
AND airp_fr EQ 'FRA'.
MESSAGE e002(bc405).
ENDIF.
其中MESSAGE e002(bc405).这句中的bc405是一个message的类,而e002是一个消息
For example:
32,如何在程序中call selection-screen?
程序中的部分代码为:sapbc405_sscd_call_sel_screen
Report sapbc405_sscd_call_sel_screen
….
Selection-screen: begin of screen 1100.
Parameters: pa_cus as check box,
Pa_agy as checkbox.
Selection-screen:end of screen 1100.
At selection-screen on pa_add.
If pa_add = mark.
Call selection-sreen 1100
Starting at 5 5 ending at 50 10.
If sy-subrc 0.
Leave to screen 1000.
Endif.
Endif.
显示出来的结果如下:

33,层级报表的流程?
说明的是:
在使用层级报表的时候,必须要进行排序

34,关于使用程序中的关键字notes
说明该程序中使用了逻辑数据库

35,在write语句中,让鼠标移到输出的栏位上就会出现手型的图标
程序中的代码为参见例子
if wa_flights-seatsocc gt 0.
write: wa_flights-seatsocc hotspot on.
else.
write: wa_flights-seatsocc.
endif.
在write中如何画图标
Write icon_red_light as icon.

36,如何得到鼠标取得的数?
程序中的代码为参见例子
基本语法:
Get cursor field [value ]
For example:
*1,data: field_name(30), field_value(50).
get cursor field field_name value field_value.
*2 Data: field_name(30).
……
AT LINE-SELECTION.
GET CURSOR FIELD field_name.
CASE field_name.
WHEN 'WA_FLIGHTS-CARRID'.
SELECT SINGLE carrname currcode INTO (carrname, currcode)
FROM scarr WHERE carrid = wa_flights-carrid.
WRITE: / 'Airline carrier:', carrname,
/ 'Short name:', wa_flights-carrid,
/ 'Local currency of the airline:', currcode.
WINDOW STARTING AT pos sy-curow
ENDING AT 50 30.

37,事件on change of
参见例子
On change of 、
New page
说明:当改变变量的时候才开始新的一页。

 

 

1.ANY TABLE:即任意表类型,此种定义方式只能在传递参数的时候定义。

 

      例如:FORM XXX USING/CHANGING TYPE ANY TABLE .

 

2.ANY TABLE包括了两种类型:INDEX TABLEHASHED TABLE

 

   1.INDEX TABLE:包括了STANDARD TABLESORTED TABLE

 

A.      STANDARD TABLE:其实就是一个线性表,通过key访问内表是线性查找的,也就是说,随着表中记录的增加,对表的操作的时间开销也相应的增加。

 

定义方法:TYPES/DATA LIKE/TYPE STANDARD TABLE OF .

 

B.      SORTED TABLE:顾名思义,表中的记录是按照一定的顺序排列的。访问表的主要方式是表中定义的key,如果key不唯一,则选择index最小的那个。也可以通过index来访问排序表,如果你想通过index插入一条记录,系统会自动检查你插入的位置是否正确。所以,如果插入的时间比插入到标准表的时间会长。因此,尽量选择key来对排序表进行操作。

 

定义方法:TYPES/DATA LIKE/TYPE SORTED TABLE OF .

 

2.HASHED TABLE:对哈希表只能用你定义的key进行操作,而不能使用index进行操作。因此,定义哈希表必须定义unique key 。注意:所有关于使用index操作表的语句都不能用于操作哈希表。例如:sortloop等。

 

         定义方法:TYPES/DATA LIKE/TYPE HASHED TABLE OF .

 

2.      内表的操作:

 

1.创建:

 

      A. 定义一个结构,然后type/like这个结构

 

         例如:

 

TYPES: BEGIN OF ,
         ...
         i> ...,
         ...
       END OF .

 

DATA  TYPE STANDARD TABLE OF
                 WITH NON-UNIQUE DEFAULT KEY
                 INITIAL SIZE
                 WITH HEADER LINE.

 

      B. type/like系统表或者数据库表或者结构

 

DATA  TYPE STANDARD TABLE OF <系统表名>
                 INITIAL SIZE
                 WITH HEADER LINE.

 

2.添加数据:

 

      AAPPEND:直接向表中添加数据

 

1. APPEND [wa TO|INITIAL LINE TO] itab[ASSIGNING |REFERENCE INTO dref].

 

2. APPEND LINES OF itab1 [FROM idx1] [TO idx2] TO itab2.

 

3. APPEND [wa TO] itab SORTED BY f [ASSIGNING

 

      B.向表中插入数据:

 

1. INSERT [wa INTO|INITIAL LINE INTO] itab [INDEX idx] [ASSIGNING |REFERENCE INTO dref].

 

2. INSERT [wa INTO|INITIAL LINE INTO] TABLE itab [ASSIGNING |REFERENCE INTO dref].

 

3. INSERT LINES OF itab1 [FROM idx1] [TO idx2] INTO itab2 [INDEX idx3].

 

4. INSERT LINES OF itab1 [FROM idx1] [TO idx2] INTO TABLE itab2.

 

      C.相同字段求和向表里添加:

 

Basic form

 

COLLECT [wa INTO] itab.

 

Extras:

 

1. ... ASSIGNING
2. ... REFERENCE INTO dref
3. ... SORTED BY f

 

3.删除数据:

 

1. DELETE itab.
2. DELETE TABLE itab WITH TABLE KEY k1 = v1 ... kn = vn.
3. DELETE TABLE itab [FROM wa].
4. DELETE itab INDEX idx.
5. DELETE itab FROM idx1 TO idx2.
6. DELETE itab WHERE logexp.
7. DELETE ADJACENT DUPLICATES FROM itab.

 

4.修改数据:

 

1. MODIFY itab [FROM wa] [INDEX idx] [ASSIGNING |REFERENCE INTOdref] [TRANSPORTING f1 ... fn].

 

2. MODIFY TABLE itab [FROM wa] [ASSIGNING |REFERENCE INTO dref] [TRANSPORTING f1 ... fn].

 

3. MODIFY itab [FROM wa] TRANSPORTING f1 ... fn WHERE cond.

相关文章推荐

ABAP学习笔记--操作字符串2

1. 字符串连接 CONCATENATE dobj1 dobj2 ...  INTO result             [IN { BYTE | CHARACTER } MODE]  ...

abap学习笔记

  • 2012年03月13日 22:57
  • 268KB
  • 下载

ABAP语言学习笔记1.0V

  • 2011年04月04日 16:12
  • 1.17MB
  • 下载

ABAP学习笔记--处理字符串1

ABAP学习笔记--处理字符串 一、移动字段内容 1、按给定位置数移动字符串 语法:SHIFT [BY PLACES] [].将字段移动个位置,如果省略BY PLACES,则将解释为一个位...

BC404学习笔记-ABAP面向对象编程(三)-CAST 向上、向下转型问题.

1.向上、向下中的上下,可以理解成父类和子类。 2.向上转型(up-cast或者narrowing cast)指子类型引用实例化父类型对象,这样父类引用指向子类引用。这样之后父类的引用是访问不了子类的...

BC404学习笔记-ABAP面向对象编程(一)-基础

只摘录注意事项和难以理解的地方。总的来说和JAVA、C++面向对象编程技术差不太多。类、继承、封装之类的概念在abapoo中也都有体现。面向对象的对象简单理解就是现实世界的事物,到编程世界就用类来表现...

SAP系统与ABAP 学习笔记

sap登陆集团:700用户名: 密码: 常用TCODE(事务代码)SE11ABAP字典:初始屏幕 SE37函数构建器:初始屏幕 SE38ABAP编辑器:初始屏幕 SE80ABAP工作台 SU3维护用户...
  • FTDD_HW
  • FTDD_HW
  • 2017年08月08日 11:15
  • 174

ABAP学习笔记

ABAP学习笔记

Struts2学习笔记

  • 2017年11月02日 20:27
  • 257KB
  • 下载

javascript学习笔记2

  • 2017年07月31日 00:43
  • 3KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:abap学习笔记2
举报原因:
原因补充:

(最多只允许输入30个字)