BC400:ABAPWorkbenchFoundationsandConcepts博科技术BONCKSAPBC400ABAP工作台简介博科技术BONCK段霄鹏2013.3BC400:ABAPWorkbenchFoundationsandConcepts博科技术BONCKBC400:ABAPWorkbenchFoundationsandConcepts3目录••••••课程概览第一单元:ABAP程序的执行流程第二单元:ABAP工作台简介第三单元:ABAP字典简介第四单元:ABAP语言的基本元素第五单元:数据获取博科技术BONCKBC400:ABAPWorkbenchFoundationsandConcepts博科技术BONCKBC400:ABAPWorkbenchFoundationsandConcepts4目录••••••第六单元:程序分析工具第七单元:在ABAP中使用子程序第八单元:ABAP事件简介第九单元:用户会话第十单元:组件重用第十一单元:调整SAP标准软件(概览)博科技术BONCKBC400:ABAPWorkbenchFoundationsandConcepts博科技术BONCKBC400:ABAPWorkbenchFoundationsandConcepts5课程概览•BC400这门课程主要介绍SAP的编程语言ABAP以及ABAP的开发环境ABAP工作台,做为入门课程将面向一般概念和基本原理,当然还要介绍一些相关技术,以利于后面其他课程的学习。•课程中将使用大量实例帮助理解课程中讲到的概念,让学员用ABAP工作台快速构建高性能的商业应用。博科技术BONCKBC400:ABAPWorkbenchFoundationsandConcepts博科技术BONCKBC400:ABAPWorkbenchFoundationsandConcepts6课程概览•课程目标––––理解和使用基本ABAP语法元素实现不同类型的用户会话程序读取访问数据库使用ABAP工作台开发工具–理解开发过程是如何组织和传输的•学习本课程后应该可以–创建包含用户会话和数据库访问的ABAP程序–说明不同开发对象类型和它们的主要用途–用合适的工具创建出说明开发对象功能的简单例子博科技术BONCKBC400:ABAPWorkbenchFoundationsandConcepts博科技术BONCKBC400:ABAPWorkbenchFoundationsandConcepts7第一单元ABAP程序的执行流程•单元目标本单元完成后,应该能:–描述SAPNetWeaver应用服务器的结构原理–描述简单的会话程序如何被ABAP运行时环境处理•本单元的课程为–SAPR/3的系统结构–使用选择屏幕和清单的ABAP程序示例博科技术BONCKBC400:ABAPWorkbenchFoundationsandConcepts博科技术BONCKBC400:ABAPWorkbenchFoundationsandConcepts8第一单元ABAP程序的执行流程第一课系统架构表示层应用层数据库层SAPGUISAPGUISAPGUISAPGUISAPGUISAPGUI分配器工作进程工作进程分配器工作进程工作进程工作进程工作进程工作进程工作进程SAPNetWeaver应用服务器的客户端/服务器架构图博科技术BONCKBC400:ABAPWorkbenchFoundationsandConcepts博科技术BONCKBC400:ABAPWorkbenchFoundationsandConcepts9第一单元ABAP程序的执行流程第一课系统架构•SAPNetWeaver应用服务器具有模块化架构,遵循面向软件的客户端/服务器原则。•在SAPNetWeaver应用服务器中,表示层、应用逻辑和数据存储可以分派给不同的系统,这就使整个系统具有良好的可伸缩性。•虽说SAP自己的提法是C/S架构,但实际上使用的就是现在流行的三层结构,即浏览器/应用服务器/数据库,而且在可伸缩性和平台上做的非常之好。它的SAPGUI虽说是个传统客户端软件,但具有浏览器的某些特性,客户端并没有事先画好的屏幕,所有屏幕布局都是从应用服务器传输过来的。博科技术BONCKBC400:ABAPWorkbenchFoundationsandConcepts博科技术BONCKBC400:ABAPWorkbenchFoundationsandConcepts10第一单元ABAP程序的执行流程第一课系统架构•最底层是数据库层。SAP自己并不提供底层数据库,而使用其他厂商的数据库管理系统(支持所有主流数据库)。只有SAP自身管理和运行所需的程序和元数据没有保存在数据库里,而应用系统运行的几乎所有数据都存储在数据库中。•ABAP程序运行在应用服务层。ABAP程序包括SAP提供的标准程序和我们自己开发的程序。ABAP程序从数据库读数据,处理数据,有可能还要储存数据。•第三层是表示层。这一层就是用户界面,用户可以通过它访问程序,输入数据,接收工作进程处理的结果。SAP把表示层也称为服务器,因为它的工作模式跟web浏览器类似,负责把应用服务器传来的界面布局数据转换成用户可浏览的界面,这种处理也可以称为一种“服务”。博科技术BONCKBC400:ABAPWorkbenchFoundationsandConcepts博科技术BONCKBC400:ABAPWorkbenchFoundationsandConcepts11第一单元ABAP程序的执行流程第一课系统架构•在SAP系统中,软件的技术分布完全独立与它所安装硬件的物理位置。•从纵向上说,所有三层既可以安装在同一台计算机上,也可以各层独立安装在各自的计算机上。•从横向上说,表示层和应用层可以分别安装在任意多的计算机上。•而数据库组件的横向安装能力则取决于数据库管理系统本身的设计(也就是说,只要数据库管理系统支持多机分布安装,SAP就支持对它的多机访问)。博科技术BONCKBC400:ABAPWorkbenchFoundationsandConcepts博科技术BONCKBC400:ABAPWorkbenchFoundationsandConcepts12第一单元ABAP程序的执行流程第一课系统架构•前面那个复杂的三层结构图可以简化成左图的样子,在本课程中,我们更关心一个用户和一个ABAP程序之间的交互。•应用服务器上,包括用户分配器在内的扩展进程对我们理解ABAP程序运行并不是非常重要,因此我们这个图中没有明确区分分配器和工作进程,只有当与我们所讲的ABAP程序相关时,才会详细介绍。•ABAP程序运行在应用服务器上,用户会话和数据库访问的设计显得更为重要。表示层应用层数据库层工作进程ABAP程序博科技术BONCKBC400:ABAPWorkbenchFoundationsandConcepts博科技术BONCKBC400:ABAPWorkbenchFoundationsandConcepts13第一单元ABAP程序的执行流程第一课系统架构•从用户角度看,他只关心业务流转和数据的输入输出,而根本无需关注技术层面的程序。因此,对用户来说,SAP系统的应用层和数据库就是一个黑盒(BlackBox)。•从技术角度讲,有三种类型的屏幕:标准屏幕、选择屏幕和清单,每种屏幕为用户提供不同的服务。程序员应该根据任务的需要,为用户提供合适的屏幕。表示层应用层数据库层黑盒DynproListSelectionScreen博科技术BONCKBC400:ABAPWorkbenchFoundationsandConcepts博科技术BONCKBC400:ABAPWorkbenchFoundationsandConcepts14ABAP运行时系统数据表第一单元ABAP程序的执行流程第二课程序运行示例程序开始ABAP程序ABAP程序块ABAP程序块博科技术BONCKBC400:ABAPWorkbenchFoundationsandConcepts博科技术BONCKBC400:ABAPWorkbenchFoundationsandConcepts15第一单元ABAP程序的执行流程第二课程序运行示例•上页图说明了在各个服务层之间的数据交互,需要说明的是,实际处理时应用层与数据库的交互比上图中更为频繁,不仅仅在处理用户操作时才读写数据库。后面的例子会详细说明这一过程。•当用户触发一个操作,例如按了回车、功能键、菜单、按钮等时,就会把控制权从表示层传递给应用层。•只有跟用户操作相关的那部分程序会被执行。•如果在程序中触发了其他会话,系统会把屏幕传递给表示层,同时交出控制权。博科技术BONCKBC400:ABAPWorkbenchFoundationsandConcepts博科技术BONCKBC400:ABAPWorkbenchFoundationsandConcepts16第一单元ABAP程序的执行流程第二课程序运行示例•1、程序开始–用户登录到系统之后,就会出现初始屏幕,在初始屏幕里,可以通过菜单路径或事务码来启动ABAP程序。–知识库(Repository),它是SAP系统中非常重要的组成部分,负责存储系统运行的基本数据,例如:程序库、数据字典、ABAP对象等,被保存在数据库中,后面会专题讲解它。数据表程序开始知识库1博科技术BONCKBC400:ABAPWorkbenchFoundationsandConcepts博科技术BONCKBC400:ABAPWorkbenchFoundationsandConcepts17ABAP运行时系统ABAP程序选择屏幕知识库ABAP程序块数据表数据对象xxx:xxxxxx:xxxxxxxxx第一单元ABAP程序的执行流程第二课程序运行示例2程序开始博科技术BONCKBC400:ABAPWorkbenchFoundationsandConcepts博科技术BONCKBC400:ABAPWorkbenchFoundationsandConcepts18第一单元ABAP程序的执行流程第二课程序运行示例•2、系统读取程序上下文–上下文(Context),在汉语里面还真没什么合适的词可以跟这个英文单词对应的,只可意会不可言传。–系统在程序开始后,会把所有程序上下文读到应用服务器上。程序上下文包括:存储变量和复杂对象的内存区,用户会话的屏幕信息,ABAP程序块等。上述的这些东西都存储在知识库中。–上页的例子里,用到了一个选择屏幕与用户交互,一个变量和一个结构,还有一个ABAP程序块。显示数据的清单则根据用户输入动态生成。–ABAP运行时环境控制后面的程序流。博科技术BONCKBC400:ABAPWorkbenchFoundationsandConcepts博科技术BONCKBC400:ABAPWorkbenchFoundationsandConcepts19ABAP运行时系统ABAP程序选择屏幕知识库ABAP程序块数据表数据对象xxx:xxxxxx:xxxxxxxxx第一单元ABAP程序的执行流程第二课程序运行示例3程序开始博科技术BONCKBC400:ABAPWorkbenchFoundationsandConcepts博科技术BONCKBC400:ABAPWorkbenchFoundationsandConcepts20第一单元ABAP程序的执行流程第二课程序运行示例•3、运行时系统发送选择屏幕–如果运行时系统包含了选择屏幕,ABAP运行时系统就会把屏幕发送给表示层服务器,在用户没有输入完成前,表示层服务器就控制着程序流。–选择屏幕可以做一些基础的输入有效性检查,如必输字段、日期/数值格式等。博科技术BONCKBC400:ABAPWorkbenchFoundationsandConcepts博科技术BONCKBC400:ABAPWorkbenchFoundationsandConcepts21ABAP运行时系统ABAP程序选择屏幕知识库ABAP程序块数据表数据对象xxx:xxxxxx:x