ABAP实例讲解


ABAP培训 韩郁飞 ABAP程序分类 < 报表程序(Report) 1、结构简单, 2、由事件块(Event Blocks)组成程序架构; 3、执行方式多样; 对话程序(Dialog Program / Transaction Program) 1、结构复杂; 2、包括ABAP程序代码、用户对话、图形用户接口和事务代码; 3、图形用户接口包括菜单栏、标准工具栏、应用程序工具栏和标题 栏 4、程序由事务代码触发运行; 报表程序分类 < 普通报表程序 输出结果格式固定,不能对其进行交互式操作 ; < 交互式报表程序 通过特定的触发事件,比如双击、菜单、按钮 和功能键等,可以对报表结果进行操作; 报表程序结构 处理块的类型 事件块 < 组成报表程序的基本单位; < 原则上每个事件块由各自的关键字为 起始,不同的事件块执行不同的任务 ; < 事件块的结束标志为下一个事件块的 关键字; < 事件块由ABAP运行时环境调用,其调 用顺序固定,与程序编码顺序无关; < 缺省的事件块START-OF-SELECTION 实例讲解 < 汽柴油、石脑油、航空煤油日出厂情况表 < 目的:对配置计划(销售计划)中汽柴油、石脑油、航空煤油的日销售完 成情况进行统计,数据来源于系统 程序名 < REPORT rep. < Additions: 1. ... NO STANDARD PAGE HEADING 2. ... LINE-SIZE col 3. ... LINE-COUNT n(m) 表单输出每页由n行,其中的m行作为页脚; 4. ... MESSAGE-ID mid 消息对象 5. ... DEFINING DATABASE ldb 使用逻辑数据库,自动产生 Tables 语句 < 基本格式 TABLES dbtab. < Dbtab是指ABAP字典的一个数据库对象,可以是透明表格、视图和结 构; < 该语句的作用是声明了一个表工作区,类似于C语言里面的 STRUCTURE和PASCAL语言里面的RECORD; < 这个表工作区由多个字段组成,其名称、类型和dbtab的字段完全相同 ; < ABAP字典对象中字段的类型自动的转换为ABAP程序的类型; < 表工作区通常是一个全局变量。 TYPES语句 < 定义一个简单的数据类型; < 定义一个结构化的数据类型; < 定义一个内表形式的数据类型; TYPES语句格式 < 1. TYPES type. 2. TYPES type(len). 3. TYPES: BEGIN OF structype... ENDOF structype. 4. TYPES itabtype{TYPE tabkind OF linetype| LIKE tabkind OF lineobj} [WITH [UNIQUE|NON-UNIQUE] keydef] [INITIAL SIZE n]. 5. TYPES itabtypeTYPE RANGE OF type. TYPES itabtypeLIKE RANGE OF f. 6. TYPES itabtype{TYPE linetype|LIKElineobj} OCCURS n. DATA语句 < 定义一个简单类型的变量 < 定义一个结构化的数据对象 < 定义一个内表 < 定义一个共享的数据区域 用于外部的子程序调用 DATA语句 DATA语句定义内表 定义输入屏幕 < 用SELECTION-SCREEN语句来定义输入屏幕 SELECTION-SCREEN语法 特殊效果 输入字段设计 < PARAMETERS 语句 < SELECT-OPTIONS语句 PARAMETERS语法 Select-options语法 事件块 < INITIALIZATION < AT SELECTION-SCREEN < START-OF-SELECTION < GET < END-OF-SELECTION < TOP-OF-PAGE < END-OF-PAGE 事件块详细讲解 < 事件块的简单处理过程: < ABAP程序运行的时候, INITIALIZATION首先被调用; < 经过初始化的输入屏幕会显示在表 示服务器; < 用户离开输入屏幕的时候, START-OF-SELCTION事件会被自 动调用; < 结果数据会以列表的形式显示在第 二个屏幕上; 事件块的语法 源代码中的事件块顺序不影响它们的执行顺序 事件块编码规则(1) < INITIALIZATION 通常在此事件块中设定输入屏幕字段的初始值 例如: INITIALIZATION . P_DATE = ‘20030201’ . 效果: 输入屏幕的日期字段初始显示值为2003年2月1日 事件块编码规则(2) < AT SELECTION-SCREEN 通常在此事件块中进行用户输入数据的合法性检查,发现错误则以消息 的形式给出警示,直到用户输入正确的数值 例如: AT SELECTION-SCREEN . IF P_DATE = SPACE . MESSAGE E001 . ENDIF. 效果: 如果字段P_DATE为空,则程序会用消息001“日期字段不能为 空!”来提示用户必须输入一个日期。而且输入屏幕会等待用户输入, 知道该字段数值合法 事件块编码规则(3) < START-OF-SELCTION 通常在此事件中针对业务需求进行系统数据的查询 例如: start-of-selection . perform get_data_for_oil. 效果: 在输入屏幕用户按下执行按钮后,子程序get_data_for_oil被执行, 在其中获得业务相关的数据存放到内表或者其它变量,这些数据在 END-OF-SELECTION事件块中被输出 事件块编码规则(4) < END-OF-SELCTION 通常在此事件中进行结果清单的输出 例如: end-of-selection . write : 23(1) sy-vline, 24(20) tab-gas_planright-justified , 效果: 数据以清单的形式输出 事件块编码规则(5) < GET 从逻辑数据库中得到数据(较少用) < TOP-OF-PAGE 在此事件块中设计输出清单的页头 例如: TOP-OF-PAGE write : /1(240) '汽柴油日出厂情况表' centered . write : /20(8) '日期:' , 29(10) s_date, 180(6) '单位:' , 190(10) '吨' . 事件块编码规则(6) < END-OF-PAGE 在此事件中设定输出清单的页脚 例如: END-OF-PAGE . Write : ‘制作人’ , p_name. WRITE语句 < 按照指定的格式把变量里面的数据输出到屏幕 < 语法: WRITE语句的选项 < 根据选项的不同,WRITE语句可以输出到屏幕、输出到变量、以复选 框的形式输出、以图标的格式输出 子程序(1) < 子程序类似于C、PASCAL等语言的 函数/过程 < 子程序在事件块中被调用 子程序(2)-语法 子程序-接口定义 行参-实参传递方式 • 值调用 • 地址调用 子程序调用(1) 语法: PERFORM . 子程序调用(2) 结构作为子程序参数 内表作为子程序参数 函数模块 < 与子程序(form)相比,函数模块是在程序外部 定义的,而且能够在全系统范围内被调用的子 程序;而子程序(form)一般来说只在本程序 内定义和调用。 < 函数模块具有透明的接口,它的接口与代码分 开定义。 < 函数模块都隶属于某一个函数组 < 函数模块由函数制作器(Function Builder) 创建 < 函数模块可以被本系统的程序调用,而且可以 被其它的R/3系统、R/2系统甚至是非R/3系统 调用(RFC) 函数模块的调用 函数模块是程序 外部模块,不在 程序内编码 函数组 < 每个函数模块都属于一个函 数组 < 每个函数组里面的函数模块 都有相同的主题,实现的功 能相互联系 < 函数组实际上是一个类型为 F的ABAP程序,它本身不能 够被执行 < 当一个函数模块被调用的时 候,与它同一个函数组的函 数都被调到内存区域里面; 函数模块的组成 函数模块的调用语法 函数模块可以设置对异 常的处理,以防出现运 行时错误
还剩41页未读

继续阅读

下载pdf到电脑,查找使用更方便

pdf的实际排版效果,会与网站的显示效果略有不同!!

需要 15 金币 [ 分享pdf获得金币 ] 3 人已下载

下载pdf

pdf贡献者

qwfys200

贡献于2011-01-10

下载需要 15 金币 [金币充值 ]
亲,您也可以通过 分享原创pdf 来获得金币奖励!
下载pdf