ABAP基础
来源:互联网 发布:安卓微信数据恢复大师 编辑:程序博客网 时间:2024/05/22 09:07
ABAP程序的源代码结构包括数据定义和处理块两部分:
数据定义:整个程序中可见的全局数据类型和数据对象、选择屏幕元素以及ABAP Object中自定义的类和接口。
处理块(Processing Blocks):是ABAP的主要结构单元,定义程序在不同状态下执行的具体功能,在编译运行中,每一块都是一个独立的实体。
注:数据(包括选择屏幕元素)定义和声明语句是独立于任何处理块的,其他所有语句则都必须隶属于某个处理块。
1. ABAP程序含有三种类型的处理块:
·事件块(Event Blocks):每一个事件都需要有一个时间关键字引导,并单独构成一个语句,其后续语句隶属于该关键字代表的时间块,直到下一关键字出现为止。包括:报表事件、列表事件、屏幕事件
初始化:INITIALIATION
数据选择开始:START-OF-SELECTION
列表行选择:ATLINE-SELECTION
屏幕输出前处理:PROCESS BEFORE OUTPUT
平和输入后处理:PORCESS AFTER INPUT
·对话模块(Dialog Modules):开始和结束都有相关的关键字作为标志,是相对独立的程序单元。
·过程(Procedures):代码部分的开始和结束都有相关的关键字,也是相对独立的程序单元。过程包括功能模块和子程序,以及对象中的类方法可以被其他的模块调用,实现程序模块化和代码复用。
2. 处理块调用
处理块使程序代码模块,也是运行期间的单元;其具体出现的顺序与其在程序代码中的先后顺序无关。
3. 事件驱动
在各种处理块中,系统对事件快的调用过程有其特殊性:其调用总是与某时间地发生相关,也成为事件的触发。
4. 处理块与工作过程
通过调度机(Dispatcher)把应用程序的各个代码模块分解成许多对话步骤,并通过工作过程(Work Processes ,是系统的软件元素)在系统的应用层的虚拟机上进行处理,这保证了ABAP程序运行是的系统硬件平台无关性。
程序类型
在创建ABAP程序时均需要指定其类型,程序类型将决定在改程序中可以包含哪些处理块,已经运行环境是如何处理该程序的。
ABAP程序分为两大类:一类是可以分陪事务代码,直接运行的应用程序,这类程序往往用于完成一种系统功能;另一类不是为了实现特定的功能,可能只在系统开发过程中具有意义。
各种不同程序类型的介绍:
1. 应用程序类型:
·可执行程序(Executable Program , 类型代码1):常常用于创建通常以以上的报表,整个程序由REPORT关键字语句进行引导,可以包含自定义的屏幕,在ABAP编辑器中进行编辑,并可以直接在ABAP编辑器中执行。此外,还可以通过SUBMIT语句或者分配报表事务代码来运行。
·模块池(Module pool , 类型代码M):出案件时有系统自动生成,由PROGRAM关键字进行引导,一般包含程序自定义的屏幕和对话模块,必须通过事务代码运行。
习惯上,应用程序往往被分为报表程序和对话程序(又称动态程序、事务程序),可执行程序中可以处理报表事件,也可以加入屏幕和对话模块;而模块池程序一般只用于事务程序的设计。
2. 其他程序类型:
其不能直接执行,但这些类型作为代码容器,可以为ABAP程序提供各种各样的模块化代码单元。
·功能组(Function groups ,类型代码F):由FUNCTION-POOL语句引导,包含一个或多个功能模块,可包含自己的屏幕,一般不能直接运行功能。功能模块是模块化的代码段,不嫩那个直接执行,需要在普通程序中调用。
·ABAP类库(Class pools , 类型代码K):由CLASS-POOL语句引导,是系统ABAP对象类和多个局域类。类库在ABAP工作台工具Class Builder进行创建。
·ABAP接口库(Interface pools , 类型代码J):由INTERFACE-POOL语句引导,与类型K程序相似,用于定义ABAP对象的接口,可被人以全局类和局部类实现,不能直接运行。
·子程序池(Subroutine pools , 类型代码S):由PROGRAM语句引导,包含一个或多个程序代码模块或类方法,续被普通程序调用,不可包含自定义的用户屏幕,在ABAP编辑器中进行编辑。
·类型组(Type groups , 无类型代码):由TYPE-POOL语句引导,在数据字典中定义,不包含任何屏幕和处理块,用于定义全局数据类型。
·包含程序(Include programs , 类型代码I):不需要任何语句引导,也无需要包含完整的处理块。无需独立编译,包含程序只是代码复用,在ABAP中编辑,可直接插入其他程序中。包含程序可通过INCLUDE语句被多个程序引用,与其他程序之间不存在参数接口。
程序元素
一个ABAP应用程序并不是仅仅由源代码组成,在上述各种类型的程序中,可能包含一个或多个下述程序元素的组合:
1. ABAP元素
·源代码(Source code)是ABAP语句的集合;分数据定义和具体处理代码两部分。
·变式(Variants)与选择屏幕相关,用于储存在选择屏幕中输入的数据选择标准,以方便再次输入。
·属性(Attributes)创建前后的维护修改,其中包含程序类型,使用的逻辑数据库以及应用模块等。
·文件元素(Text Elements)用于储存在文本池中的文字,包括:文本符号、选择文本、列表标题。
·文档(Documentation)程序的说明文,也指程序中的注释部分。
2. 屏幕
ABAP中可以包含屏幕的程序类型有可执行程序、模块池以及功能组程序。这些程序中能可已包含三种不同类型的屏幕:
·普通屏幕(Screens , 也称为SAP标准屏幕)经常出现在SAP系统事务设计中,包括幕布局,流逻辑,不能在ABAP编辑器中维护。
·选择屏幕(Selection screens)经常出现在报表程序中,用于接受用户输入。
·传统列表屏幕(List , 又称Classical Lists)是SAP发布ALV表格控制之前的主要报表程序输出界面。
3. GUI
Graphi User Interface,图形界面接口:式屏幕的组成部分,但设计过程中独立于SAP屏幕而存在。GUI元素在程序调用时分为状态(GUI Status)和标题(GUI Title)两个部分。不可以在ABAP编辑器中维护,但是可通过Object Navigtor(SE80)添加至程序中,并使用想过工具开发(Screen Painter和Menu Painter)。
语句格式
1. 语句结构
所有程序语句都有一个ABAP语句关键字引导,并由一个“.”作为结束的标志。
·声明语句:用于数据元素的定义和声明,形成独立于各个处理块的数据声明代码区域。
常用数据声明关键字:TYPES、DATA、PARAMETER和TABLES等。
·模块化语句:用于定义ABAP程序运行时内的处理代码块,还可细分为时间关键字语句和过程定义关键字语句。
事件关键字有:AT SELECTION-SCREEN、START-OF-SELECTION、AT USER-COMMAND等。
注:期结束取决于下一时间关键字的出现。
过程定义关键字有:FORM / ENDFORM、FUNCTION / ENDFUNCTION、MOSDULE / ENDMOSDULE等。
注:一般有对应的END关键字标志出现。
·控制语句:通过条件控制程序处理块每部的程序流程。 IF、WHILE、CASE等。
·调用语句:用于调用已经定义好的处理块。如子程序、功能模块、其他程序。PERFORM、CALL、SUBMIT、LEAVE TO等。
·操作语句:用于程序内部数据操作和输出,该类型关键字较多:WRITE、MOVE、ADD等
·数据库语句:用于数据操作。包含Open SQL和Native SQL。
2. 编辑格式
在ABAP编辑器中书写语句时各个关键字,选项及操作数之间应至少保留一个空格,系统将换行符也解释为一个空格,而且并不要求每一语句都占一行。
注:ABAP编辑器中的Pretty Printer功能可以实现缩进控制。
3. 语句链
如果连续使用相同关键字引导的语句,可以使用关键字后加“:”和语句间加“,”来形成语句链。
例: WRITE : text1 , text2 .
等价于 WRITE test1 .
WRITE text2 .
4. 注释
ABAP中的注释有两种形式:
·在开头使用“*”,则该整行都成为注释。
·在行中使用“"”,则符号后面的文字为注释部分。
注:ABAP不区分大小写,习惯上所有ABAP关键字设为大写;数据对象、程序标题等设为小写形式,可通过编辑器中的Pretty Printer功能进行设定。
- ABAP基础
- ABAP基础
- abap基础
- ABAP 基础
- [abap]基础(转载)
- ABAP 基础概念一览
- ABAP屏幕基础
- ABAP-基础一
- ABAP基础内容
- ABAP屏幕基础
- ABAP屏幕基础
- ABAP基础类型温习
- ABAP基础-abap数据类型的解析整理
- ABAP基础篇-语法-数据类型
- ABAP基础篇-语法-数据类型
- ABAP基础程序类型(ABAP Elementary Data Types)
- SAP ABAP/4学习---基础(1)
- ABAP基础——模块化技术
- 奇技淫巧之避免因宏带来的名字冲突
- 排序算法小结(冒泡排序、简单选择排序、快速排序)
- SQL第五讲--即将第七周
- 数据仓库 数据集市
- JavaScript操作dom最常用到的属性方法
- ABAP基础
- 一个项目用到的sql语句
- DQL、DML、DDL、DCL的概念与区别
- C基础:memmove和memcpy的区别
- 信号完整性:PCB走线宽度变化产生的反射
- Oracle管理专题之:用于监控Session、process、Lock的几个SQL语句
- 文件属性函数stat/fstat/lstat
- C Run Time--crt0.o 分析
- 世博会==人多