abap学习笔记2

内表的类型及定义:

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

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:直接向表中添加数据

 

 

 

 

      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].

 

 

 

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

 

Basic form

 

COLLECT [wa INTO] itab.

 

Extras:

 

 

3.删除数据:

 

 

4.修改数据:

 

 

 

阅读更多
上一篇ABAP学习笔记之一
下一篇日文输入法键盘分部图
想对作者说点什么? 我来说一句

webDynproForABAP学习笔记

2011年12月07日 628KB 下载

webdynproforabap学习笔记

2011年12月07日 71KB 下载

ABAP语言学习笔记1.0V

2011年04月04日 1.17MB 下载

SAP BC401 课程中文自学笔记

2007年06月23日 1.52MB 下载

BADI出口增强查找方法

2018年02月24日 37KB 下载

SAP BC402 课程中文自学笔记

2007年06月29日 925KB 下载

webdynproforabap学习笔记四.docx

2011年12月07日 208KB 下载

sap+ABAP开发实例详解

2013年04月25日 1.53MB 下载

ABAP中的宏

宏不能Debug

kinglvcha kinglvcha

2014-11-03 10:21:01

阅读数:453

没有更多推荐了,返回首页

关闭
关闭