ABAP培训课堂练习指导_报表设计
ABAP培训教程
ABAP培训教程ABAP培训教程是针对SAP系统中的高级商务应用程序编程语言(ABAP)进行培训的文档。
本教程旨在为初学者提供一个全面的指南,帮助他们深入了解ABAP的基本概念和功能。
本文将详细介绍ABAP培训教程的内容和目标,以及如何利用这个教程来提升自己的ABAP编程技能。
第一部分:介绍ABAP教程的第一部分是一个简要介绍,主要包括ABAP编程语言的背景和起源,以及它在SAP系统中的作用和重要性。
读者将了解到ABAP是如何成为SAP的核心开发语言,以及它在业务流程和数据处理方面的优势。
第二部分:基础知识ABAP培训教程的第二部分是关于ABAP的基础知识。
这部分将介绍ABAP的语法和数据类型,包括变量、操作符、表达式、条件语句和循环语句等。
读者将学习如何定义和使用ABAP程序中的变量,以及如何使用不同的控制结构来控制程序的流程。
第三部分:面向对象编程ABAP培训教程的第三部分是关于面向对象编程(OOP)的内容。
这部分将介绍ABAP中的对象和类的概念,以及如何使用ABAP类来组织和管理代码。
读者将学习如何定义ABAP类和对象、如何使用继承和多态性,以及如何使用封装和抽象化来设计复杂的ABAP程序。
第四部分:数据字典和数据库操作ABAP培训教程的第四部分是关于数据字典和数据库操作的内容。
这部分将介绍ABAP数据字典的概念,以及如何使用数据字典来定义和管理数据表、视图和数据元素。
读者将学习如何使用ABAP语句来进行数据库操作,包括数据的插入、更新和删除等。
第五部分:用户界面设计和调试技巧ABAP培训教程的第五部分是关于用户界面设计和调试技巧的内容。
这部分将介绍如何使用ABAP语句和UI元素来设计和开发用户界面,包括屏幕和报表的设计。
读者将学习如何使用ABAP调试器来调试和分析ABAP程序,以及如何使用断点和变量查看器来查找和解决程序的错误和问题。
第六部分:实例项目ABAP培训教程的第六部分是一个实例项目,旨在帮助读者运用所学的知识,设计和开发一个完整的ABAP程序。
ABAP报表开发培训_ABAP语言篇
Software & Services
Date: 25. Feb 2005
事件块
• 组成报表程序的基本单位; • 原则上每个事件块由各自的关键字为起
始,不同的事件块执行不同的任务; • 事件块的结束标志为下一个事件块的关
键字; • 事件块由ABAP运行时环境调用,其调用
顺序固定,与程序编码顺序无关; • 缺省的事件块START-OF-SELECTION
Software & Services
Date: 25. Febervices
实例讲解
• 某库存地选定物料月末库存数统计表(报表:ZTEST)
• 目的:对某个工厂下的某个库存地的选定物料统计其在某年 某月的月末库存数,数据来源于系统
Date: 25. Feb 2005
例:TABLES: MARA,"物料主数据表 MARD,"物料的仓储位置数据表 MARDH."物料主储存位置段:历史表
Date: 25. Feb 2005
TYPES语句
• 定义一个简单的数据类型; • 定义一个结构化的数据类型; • 定义一个内表形式的数据类型;
Software & Services
• 对话程序(Dialog Program / Transaction Program) 1、结构复杂; 2、包括ABAP程序代码、用户对话、图形用户接口和事务代码; 3、图形用户接口包括菜单栏、标准工具栏、应用程序工具栏和标题栏; 4、程序由事务代码触发运行;
Date: 25. Feb 2005
DATA语句定义内表(3)
Software & Services
Date: 25. Feb 2005
ABAP-SMARTFORMS创建报表表格
Smartform报表实例目的:根据用户需求自定义打印报表。
说明:Smartform的创建需要指定页格式、样式,如果报表中存在条码,则需要指定条码格式。
涉及内容:页格式(SPAD)、条码格式(SE73)、样式(SMARTFORMS)、报表(SMARTFORMS)。
1.4 SMARTFORMS创建报表表格1.4.1 创建报表表格1、T-CODE:SMARTFORMS,输入表格名称,点击”创建“按钮,如图1.4.1-1:图1.4.1-12、输入表格的描述,然后保存,如图1.4.1-2:图1.4.1-21.4.2 全局设置-表格属性1、在表格属性的“输出选项”页签中指定页格式和样式,可以是系统标准的也可以是前面创建的,本练习选择前面自定义的页格式和样式,如图1.4.2-1:图1.4.2-11.4.3 全局设置-表格接口1、在表格接口的“导入”页签中配置Import参数(要同程序中调用该Smartform的程序的参数相同),本练习配置了5个导入参数,如图1.4.3-1:图1.4.3-1说明:a、可选和值传递选项处可以根据实际情况而定,如果勾选了可选的选项,则在程序调用时可不对该参数进行传递值,否则为必须传递的参数,如果没有对必须传递的参数传值就会报错;b、自定义上面的9个参数为系统生成,在“导出”页签中也有3个系统生成的参数,本练习不会使用到,所以不做详细介绍;c、“表”和“例外”页签中也可以进行参数配置,但是本练习都没使用到,所以也不做详细介绍;d、导入参数也可以是导入内表,这样可以在“页和窗口”的主窗口中进行循环打印。
1.4.4 全局设置-全局定义1、在全局定义的“全局数据”页签中配置Smartform中的参数,如图1.4.4-1:图1.4.4-1说明:a、全局数据中的参数通常是为了将表格接口中导入的参数进行处理并赋值。
2、在全局定义的“初始化”页签中将导入Smartform的参数进行处理后赋值给输出参数,如图1.4.4-2:图1.4.4-2说明:a、输入参数为值需要处理的参数;b、输出参数为输入参数处理后的数值返回,可以和输入参数同名,也可以再“全局数据”页签中进行自定义,本练习使用的是自定义的参数;c、本练习的值处理代码如下:MATNR = MATNR1 .MAKTX = MAKTX1 .BISMT = BISMT1 .LGORT = LGORT1 .CALL FUNCTION 'CONVERSION_EXIT_CUNIT_OUTPUT'EXPORTINGINPUT = MEINS1LANGUAGE = SY-LANGUIMPORTING* LONG_TEXT =OUTPUT = MEINS* SHORT_TEXT =* EXCEPTIONS* UNIT_NOT_FOUND = 1* OTHERS = 2.IF SY-SUBRC <> 0.* Implement suitable error handling hereENDIF.*MEINS = MEINS1 .CONDENSE MATNR .CONDENSE MAKTX .CONDENSE MEINS .CONDENSE BISMT .CONDENSE LGORT .1.4.5 页和窗口-新页面经过1.4.1-1.4.4就完成了数据的处理。
ABAP培训资料
Standard length 8 4 8 1 1 8 6 1
Permitted length 1-16 4 8 1-max. 1-max. 8 6 1-max.
R
numeric
P I F N
alphanumeric
C D T X
SAP AG
File: ABAP开发培训.ppt
30/173
ABAP 数据类型和基本语法
Data objects
occupy their own memory space are of a particular type are concrete examples of data types
R
SAP AG
File: ABAP开发培训.ppt
28/173
ABAP 数据类型和基本语法
File: ABAP开发培训.ppt
1/173
培训主题
ABAP 开发介绍 ABAP 数据类型和基本语法 选择屏幕的设计 OPEN SQL INTERNAL TABLE 操作 EVENT 介绍 报表输出(LIST) ALV输出
BDC导入
模块化程序设计 HIDE 技术
29/173
ABAP 数据类型和基本语法
基本的数据类型
Predefined Data Types
4/21
Data type
Predefined (P,I,F,C,N,D,T,X)
User-defined
Elementary
Structured
Structured type
Table type
Data type
在上面运行 数据库的访问 通信,ABAP还可以和其它的系统进行通信,同时外 部的系统也可一访问ABAP 系统的监控和管理
(2024年)ABAP培训教程
修改表
使用ALTER TABLE语句修 改已存在的数据库表结构, 如添加、删除或修改字段。
删除表
使用DROP TABLE语句删 除指定的数据库表。
15
数据库查询优化
索引优化
根据查询条件和数据量大小,合 理创建和使用索引,提高查询效
率。
2024/3/26
SQL语句优化
编写高效的SQL查询语句,避免全 表扫描和不必要的JOIN操作。
在ABAP中,使用 `INHERITING FROM`关键字 实现继承,通过方法重写实现 多态。
21
封装与接口
封装(Encapsulation)将数据 和行为捆绑在一起,隐藏内部实 现细节,只暴露必要的接口。
2024/3/26
接口(Interface)定义了一组方 法的规范,但不提供具体实现。 实现接口的类必须提供这些方法
01
设计报表的布局,包括表格、图表、文本等元素的排列和组合。
格式化
02
对报表中的数据进行格式化处理,如日期、数字、货币等格式
的显示。
样式设置
03
设置报表的样式,包括字体、颜色、背景等,以提高报表的可
读性和美观度。
26
报表输出与打印
2024/3/26
输出格式
支持多种输出格式,如PDF、Excel、Word等,以满足不同用户 的需求。
用于ABAP程序的开发、调试和执行,提 供了丰富的开发工具和界面设计功能。
SAP Web IDE
基于Web的集成开发环境,支持ABAP和 其他SAP开发语言,提供了代码编辑、版 本控制、团队协作等功能。
Eclipse ADT
基于Eclipse平台的ABAP开发工具,提供 了代码自动补全、语法检查、调试等功能。
2024版SAPABAP基础语法培训教程
培训教程•基础概念与入门•控制结构与流程控制•数据处理与操作•模块化编程实践•调试技巧与问题解决•实战案例分析与练习基础概念与入门SAPABAP是SAP系统中用于开发应用程序的高级编程语言。
它支持结构化编程,具有强大的数据处理和逻辑判断能力。
SAPABAP广泛应用于SAP系统的定制开发、报表生成、接口编程等方面。
SAPABAP简介编程环境与工具SAPABAP开发环境提供代码编辑器、调试器、性能分析工具等。
SAPGUI用于与SAP系统交互的图形用户界面。
ABAP Workbench集成开发环境,包括多种开发工具,如数据字典、函数库、屏幕画板等。
包括字符型、数值型、日期型、时间型等。
数据类型变量数据类型转换用于存储数据的容器,包括局部变量、全局变量、静态变量等。
不同数据类型之间的转换规则和方法。
030201数据类型与变量包括算术运算符、比较运算符、逻辑运算符等。
运算符由变量、常量、运算符等组成的计算式。
表达式运算符的优先级和结合性规则,用于确定表达式的计算顺序。
优先级与结合性运算符与表达式控制结构与流程控制用于根据条件执行不同的操作,包括简单IF 、IF-ELSE 和嵌套IF 结构。
IF 语句根据表达式的值选择执行不同的代码块,类似于其他编程语言中的switch-case 结构。
CASE 语句AND 、OR 和NOT 等,用于组合或修改条件表达式的结果。
逻辑运算符条件语句FOR 循环根据指定的次数重复执行一段代码,通常用于遍历数组或处理具有固定次数的任务。
DO 循环重复执行一段代码,直到满足指定的结束条件,包括DO WHILE和DO UNTIL 两种形式。
LOOP 语句无限循环执行一段代码,直到遇到特定的退出语句(如EXIT 或CHECK )才结束。
循环语句03CHECK 语句检查指定条件是否满足,如果不满足则跳转到指定的标签位置。
01JUMP 语句无条件跳转到程序中的指定位置,通常与标签(LABEL )一起使用。
ABAP4培训教程2--Report
XMLProbe™ e-Commerce Web Service Series
Report程序代码编辑界面 Report程序代码编辑界面
XMLProbe™ e-Commerce Web Service Series
Report程序代码编辑功能 Report程序代码编辑功能
Display <-> Change: 編輯模式和查詢模式之間的切換 <Check: 檢查代碼是否合法. 檢查代碼是否合法. WhereWhere-Used List: 查詢選種的內容﹐在哪裡用到 查詢選種的內容﹐ Stack: 顯示堆棧 Cut: 刪除選種的行 Copy To Buffer: Copies the contents of the line containing the cursor to the buffer. Insert From Buffer: Inserts the contents of the buffer to a new line above the current cursor position. Insert Line: Inserts a blank line above the current cursor position. Select: 選擇需要處理的行﹐分兩次進行﹐分別選擇起始行和結束行 選擇需要處理的行﹐分兩次進行﹐ Undo: 回滾﹐只有一次 回滾﹐ ABAP/4 Help: Pattern: 幫助用戶自動生成語句。 Concatenate: 將兩行連接起來 Duplicate Line: 複製行 Move Line: 行的左右移動 Mark Line: Places a bookmark on a line. You can display all marked lines with the menu path Goto -> Markers.
ABAP开发培训经典入门课件pptx(2024)
01
02
03
建立数据库连接
介绍如何在ABAP中建立 与数据库的连接,包括配 置数据源、设置连接参数 等。
2024/1/29
数据库配置管理
详细讲解数据库的配置管 理,包括数据库服务器的 配置、数据库用户的权限 管理等。
连接池技术
阐述连接池技术的原理及 其在ABAP中的应用,以 提高数据库连接的效率和 性能。
利用消息队列、企业服务总线(ESB)等中间件技术,实现ABAP 系统与其他系统的异步通信和数据交换。
API集成
通过调用其他系统提供的API接口,实现系统间的数据交互和业务 协同。
数据库集成
在数据库层面进行数据交换,如使用数据库链接(DBLink)或共 享数据库等方式。
31
系统扩展点与插件开发
01
扩展点概述
面向对象、事件驱动、数据库无关性、强大的数据处理能力 等。
ABAP语言应用领域
SAP系统定制开发、报表开发、接口开发、数据转换等。
4
开发环境搭建
安装SAP GUI客户端 ,并配置连接参数。
使用SAP GUI客户端 连接到SAP系统,并 打开ABAP开发环境 。
2024/1/29
在SAP系统中创建开 发用户,并分配相应 的开发权限。
具有更灵活的操作方式。
12
变量定义与赋值
变量定义
在ABAP中,变量必须先定义后使用。定义变量时需要指定变BAP中,可以使用赋值语句将值赋给变量。赋值语句的格式为“变量名 = 值”。此外,还可以使用输入输出语句从用户或文件中读取数据并赋给变量。
2024/1/29
2024/1/29
24
报表输出与打印
报表输出格式
介绍常见的报表输出格式,如PDF、Excel、Word等,让学员了解 不同输出格式的特点及适用场景。
ABAP开发培训教材
第十九页,共63页。
事情(shìqing)块编码规那么〔5〕
GET 从逻辑数据库中失掉数据〔较少用〕
TOP-OF-PAGE 在此事情块中设计(shèjì)输入清单的页头
例如(lìrú): TOP-OF-PAGE write : /1(240) '汽柴油日出厂状况表' centered . write : /20(8) '日期:' , 29(10) s_date , 180(6) '单位:' , 190(10) '吨' .
依据选项的不同,WRITE语句可以输入到屏幕、输入到变量 (biànliàng)、以复选框的方式输入、以图标的格式输入
第三十五页,共63页。
练习(liànxí)三
编写一支复杂的报表顺序,选择屏幕上创立一parameters,并设置必 需输入,之后将输入的值赋给已定义好的字符变量(biànliàng),最后 输入该变量(biànliàng)的值,同时换行输入自己的姓名(20’)
第二十八页,共63页。
定义输入(shūrù)屏幕
用SELECTION-SCREEN语句来定义输入(shūrù)屏幕
勇于开始,才能找到成功的路
第二十九页,共63页。
SELECTION-SCREEN语法(yǔfǎ)
特殊效果
勇于开始,才能找到成功的路
第三十页,共63页。
输入(shūrù)字段设计
PARAMETERS 语句(yǔjù) SELECT-OPTIONS语句(yǔjù)
第十八页,共63页。
事情(shìqing)块编码规那么〔4〕
END-OF-SELCTION 通常在此事情中中止(zhōngzhǐ)结果清单的输入
SAP培训--ABAP培训AbapReport技术参考(一)【朗泽SAP培训】
1. ABAP/4 IntroductionIntroductionABAP/4(Advanced Business Application Programming)是SAP/R3目前唯一的系统发展工具, 属4GL, 语法比较近似Visual Basic或JAVA, 和传统third-generation 语言, 如C,PASCAL 有很大不同, 在程序模块(Program Structure Module)可分以下三个部分:1.Sequential coding within processing block与一般语言语法近似, 如IF,WHILE等, 但并没有GOTO叙述2.Reports呼叫一个独立的事件(Depending Event), 读取database 产生数据列表3.Dialog屏幕参数输入的对话框, 专门处理database 读取或异动的tranaction processBasic Languange Overview1.data element 宣告方式, 如数值, 字符数据变量宣告2.操作数(operate)使用, 如+ - * /3.Control element使用, 如Boolean 值4.特殊数据格式, 如日期与时间5.字符串字料处理function, 如部分字符串的截取6.子程序或自定函数的呼叫7.SQL语法使用8.数据结构的使用, 如process internal table的宣告与使用Reports Overview1.Reports Task, 如报表屏幕预览或打印机打印的选择2.Reports 模块是一个Stand-along 程序,3.database读取方式, 如可定义logical database(与磁盘的physical storage对映)4.报表数据的计算与产生5.报表的输出Dialog Overview1.专处理database 的读取与异动, 如使用SQL 指令2.Dialog 不是一个Stand-Along Progarm, 使用transaction code来产生屏幕对话框3.由flow logic 控制, flow logic分成PBO(Process Before Output)与PAI(Process After Input) 2.Begin To Programming2.1 ABAP/4 EditorCreating ABAP/4 Program使用ABAP Workbench撰写程序(Choose Tools->ABAP/4 Workbench, Transaction Code: S001), 萤幕如下:可分成:1.ABAP/4 Editor :针对简单的报表或程序, 仅使用几个组件或不使用2.Obiect Browser :针对复杂的报表或程序, 如Dialog Transaction Module 撰写使用ABAP/4 Editor 撰写程序1.ABAP/4 Editor 画面如下(Transaction Code:SE38):2.输入程序名称, 如果是新程序, 按下”Create”, 如果修改已存在程序, 则按下”Change”或F6键在命名规则上, Reports程序为Yaxxxxxx或Zaxxxxxx, a表application module简称, 如s表SD Dialog程序为SAPMYxxx或SAPMZxxx3.输入程序Attribute(1).Title:程序描述或功能说明(2).Type:Execute mode: 1: Stand-along Program 如ReportsI: Include ProgramM: Module PoolF: Function GroupS: Subroutine Pool(3).Status:Program development status: P: SAP standard production programK: Customer production programS: System programT: Test program(4).Application: 程序所属的application module, 如F表Financeial acounting(5).Development class: 用于同一系统中各个program, 如果不属任一class, 可使用$TMP4.撰写Source CodeProgram 之后接的是程序名称, Write 是显示的意思, 会将所接的字符串在屏幕上显示, 注意每一行最后要有一个. (点), 表示叙述的结束, 储存后回ABAP/4 Editor画面5. 执行程序按”Execute”或F8键, 屏幕可见执行所得的结果重要的编辑键2.2 ABAP/4 Data ElementData TypeABAP/4 的数据型态可分成:Type Length Range Initial Value DescriptionC 1 1-65535Byte Space 字符串数据, 如‟Program‟D 8 8Byte …00000000‟ 日期数据, 格式为YYYYMMDDF 8 8Byte 0 浮点数I 4 -2^31至2^31-1 0 整数N 1 1-65535Byte …00…0‟ 数值所组成的字符串P 8 1-16Byte 0 Packed 数, 用在小数点数T 6 6Byte …000000‟ 时间数据, 格式为HHMMSSX 1 1-65535Byte X‟00‟ 16进位数变量宣告变量宣告包含name, type, length 和structure四个部分, 使用DATA 指令, 如DATA: S1 TYPE I,SUM TYPE I.常数宣告常数宣告使用CONSTANTS 指令, 如宣告PI 是一个小数点5位的值3.14159, CONSTANTS PI TYPE P DECIMALS 5 VALUE …3.14159‟.系统所定义数据这是由系统所定义的专有名辞, 如SPACE 空白字符串SY-SUBRC 系统执行传回值, 0 表示成功SY-UNAME logon 账号SY-DATUM 系统日期SY-UZEIT 系统时间SY-TCODE 目前的transaction codeTYPE 叙述用来指定数据型态或宣告自定数据型态Example:TYPES: BEGIN OF MYLIST,NAME(10) TYPE C,NUMBER TYPE I,END OF MYLIST.DATA LIST TYPE MYLIST.LIKE 叙述跟TYPE叙述使用格式相同, 如DATA TRANSCODE LIKE SY-TCODE.不同的是LIKE 用在已有值的数据项, 如系统变量, 而TYPE叙述则是用在指定数据型态。
2024年SAPABAP实用培训教程
SAPABAP实用培训教程引言SAP(系统应用与产品)是一家德国公司,提供企业资源规划(ERP)软件,以帮助企业管理和整合业务运营。
ABAP(高级业务应用程序编程)是SAP的编程语言,用于开发SAP应用程序。
本教程旨在为初学者和希望提高ABAP编程技能的开发人员提供实用的培训。
第一部分:ABAP基础1.1ABAP概览ABAP是一种高级编程语言,专门用于SAP应用程序的开发。
它具有结构化和面向对象的特点,支持模块化、可重用性和可维护性。
ABAP编程环境包括ABAP工作台,它是开发SAP应用程序的主要工具。
1.2数据定义在ABAP中,数据定义是通过数据字典实现的。
数据字典是用于定义和描述数据元素、结构和表格的地方。
数据元素是基本的数据单位,结构是由多个数据元素组成的复合数据类型,表格是用于存储大量数据的集合。
1.3ABAP程序结构ABAP程序由多个块组成,包括声明、执行和异常处理块。
声明块用于定义变量和常量,执行块用于编写程序的主要逻辑,异常处理块用于处理程序运行时可能出现的错误。
第二部分:ABAP编程实践2.1报表开发报表是ABAP编程中最常见的应用程序之一。
通过编写SELECT 语句,可以从SAP数据库中检索数据,并通过报表显示格式化输出。
报表开发涉及定义选择屏幕、处理用户输入、执行数据库查询和显示结果。
2.2输入输出处理输入输出处理是ABAP编程中的重要部分。
输入屏幕用于收集用户输入,输出屏幕用于显示程序的结果。
通过使用屏幕元素,如字段符号、表格控制和循环结构,可以创建用户友好的界面。
2.3数据处理数据处理是ABAP编程中的核心任务。
通过使用内部表、工作区和数据库表,可以对数据进行读取、写入和修改。
ABAP提供了丰富的数据处理语句,如MODIFY、APPEND和DELETE,以及用于数据转换和验证的内建函数。
第三部分:ABAP高级特性3.1面向对象编程ABAP支持面向对象编程(OOP)的概念。
ABAP4培训教程ALV
ABAP4培训教程ALV
一、概述
ALV(ABAP List Viewer)是SAP系统中用于显示报表的一种强大技术,它引入了这一技术,使报表显示的更加友好,而不仅仅是一个简单的表格。
在ALV报表培训中,我们将学习如何创建一个ALV报表,以及如何灵活地操纵ALV报表。
二、基本概念
1、结构
ALV报表由一个最外层的结构,称为ALV对象结构,以及多个内嵌的结构组成。
ALV对象结构是一个单独的结构,它定义了报表的外观,如标题、数据表等。
2、属性
每个ALV对象结构都有多个属性,这些属性被称为ALV属性,它们定义了报表的处理过程。
例如,有关如何排序数据表中的数据,怎样展示列宽,如何处理表格字体等属性,都由ALV属性来实现。
3、事件
ALV还有一些预定义的事件,用于触发一些特定的事件,例如列表改变,行选择等。
这些事件可以用来调整报表的外观,或者在报表中增加额外的功能,以满足用户的具体需求。
三、ALV报表的创建与使用
1、创建ALV报表
要创建一个ALV报表,首先需要定义一个ALV对象结构,然后根据需要定义ALV属性和事件,最后,使用ALVAPI将数据填充到ALV中以完成报表的创建。
2、使用ALV报表。
ABAP4培训手册_final
ABAP4培训手册_finalABAP4开发基本语法,适合刚接触abap语言的新手或者工程师扎实基本功2022年04月ABAP4 TrainingABAP4开发基本语法,适合刚接触abap语言的新手或者工程师扎实基本功ABAP/4程序设计诧言A BA P / 4dvanced (高级) usiness(商业)ABAP/4 是一个面向对象的符合SQL标准的第四代专业开发语言。
SAP R3 的绝大多数是用ABAP/4开发的。
pplication(应用) rogramming(程序设计)ABAP4开发基本语法,适合刚接触abap语言的新手或者工程师扎实基本功ABAP/4 程序类型 1.报表程序报表程序用亍分析数据库表中的数据。
返种分析的结果可以显示在屏幕上戒収送到打印机上。
逻辑数据库支持报表程序。
逻辑数据库是特殊的ABAP/4 程序,使开収者丌必编码所有的数据库访问。
2.对话程序将对话程序组织为包含对话模块的模块池。
每个劢态程序(由一个屏幕及其流逻辑组成的“ 劢态程序” )都基亍一个ABAP/4对话程序。
流逻辑包含对ABAP/4对话模块的调用。
ABAP4开发基本语法,适合刚接触abap语言的新手或者工程师扎实基本功第一部分ABAP/4基础ABAP4开发基本语法,适合刚接触abap语言的新手或者工程师扎实基本功第一章创建简单的ABAP/4程序步骤:1. 命名程序2. 指定程序属性3. 编写程序代码4. 测试程序ABAP4开发基本语法,适合刚接触abap语言的新手或者工程师扎实基本功1.1打开编辑器1.创建程序,请迕行如下操作:a.在“ SAP R/3”初始屏上选择“工具- ABAP/4 工作台”。
出现“开发”屏幕,选择“ABAP4 编辑器”。
双击ABAP4编辑器ABAP4开发基本语法,适合刚接触abap语言的新手或者工程师扎实基本功1.1打开编辑器b. 在屏幕左上角输入事务代码“SE38”。
在此输入“SE38”,然后点击左边的执行按钮ABAP4开发基本语法,适合刚接触abap语言的新手或者工程师扎实基本功1.1打开编辑器执行后出现“ABAP/4 编辑器:初始屏幕”屏幕:创建程序输入程序名称显示程序代码显示程序并处于修改状态ABAP4开发基本语法,适合刚接触abap语言的新手或者工程师扎实基本功1.2命名程序在“程序”字段输入创建的程序名称,必须遵守程序命名规则。
ABAP培训(BDC程序设计)
ABAP培训(报表部分)
第二章 事务录制工具和BDC程序设计
□ 系统(System)和帮助(Help)菜单中的功能不能被录制。 □ 默认变式中的字段值不能被录制。 □ 错误和警告信息不能被录制。 在录制过程中,所输入的数据也将被保存至数据库。因而在重复处理已 经成功录制的记录时,最常见的错误就是系统提示用户:该数据在系统中已 经被创建,如果希望继续处理,应该对记录中的数据进行修改。 5.记录的编辑
16 为客户创造价值 为员工创造价值 为社会创造价值
ABAP培训(报表部分)
第二章 事务录制工具和BDC程序设计
为 BDC_SUBSCR 的字段中。如第8行,字段值“SAPLSZA5 0900MAINAREA”, 该值中包括了子屏幕的模块池程序名、屏幕序号和名称等信息。子屏幕通常 通过选项卡进行组织,对选项卡的选择将触发相应的功能代码。 4.记录录制原则 在使用事务录制工具进行事务录制的过程中,有下面一些原则以及注意 事项。 在录制的过程中,所有需要批输入的字段都要进行修改,即使系统已经 有默认值(如已经通过 SET/GET parameter 功能填充的字段)也需要重新输 入新值,所输入的新值可以和原值相同。只有这样,该字段才能够被记录, 没有修改过的字段则不包含在记录中。因而,在后续生成的BDC程序中,如 果要输入未修改过的字段,就需要手工添加该字段,或者重新录制。 某些情况下,在线输入的屏幕序号和屏幕字段可能和录制时并不完全相 同,这种差异并不会影响到数据的批输入,但是也有些事务并不支持批输入 和录制功能。 下列功能是不被记录的: □ F1、F4功能及自定义的F1、F4帮助都不能被录制。
ABAP培训(报表部分)
ABAP培训(报表部分)
ABAP培训课堂练习指导_报表设计
报表设计前提准备:1、对ABAP语法、基本数据类型等有一定了解2、内表的概念与使用3、对ABAP程序有一定了解4、对表sflight、spfli有一定了解5、对ALV控件的使用有一定了解示例:1、新建一个ABAP程序ZTEST_XXX2、定义查询条件3、用两种方式来显示结果(write方式,使用函数方式调用ALV)4、完善程序课堂练习指导:第一部分:逐步建立程序1、新建程序在GUI系统工具栏命令行输入框内键入事务代码SE38,回车即可打开建立程序的初始界面:输入程序名称ZTEST_007,点击按钮“Create”创建程序,输入程序标题,选择程序类型:完成后,点击“Save”按钮,然后点击“Local Object”保存为本地对象:2、定义查询条件在程序源代码界面中,输入选择屏幕的声明部分,如下:*此处的text-001,需要从菜单栏 Goto/Text Elements/Text Symbols中定义*p_carrid,s_connid如果需要设置显示文本的话,也需要在Goto/Text Elements/Selection texts里设置*设置好后一定要激活SELECTION-SCREEN BEGIN OF BLOCK blockquery WITH FRAME TITLE text-001.*定义航线ID为必输项,默认值为'AA’PARAMETERS: p_carrid TYPE spfli-carrid OBLIGATORY DEFAULT 'AA'.*定义航班连接IDSELECT-OPTIONS: s_connid FOR spfli-connid.SELECTION-SCREEN END OF BLOCK blockquery.3、使用write方法输出结果先输出表头部分:* 画线,长度为106=(1)左侧坚线 + (20)*5 各列宽度 + (1) * 5 各列中间的分隔线 WRITE AT: /(106) sy-uline.WRITE AT : /(1) sy-vline NO-GAP,(20) '航线承运人ID' CENTERED NO-GAP,(1) sy-vline NO-GAP,(20) '航班连接 Id' CENTERED NO-GAP,(1) sy-vline NO-GAP,(20) '起飞城市' CENTERED NO-GAP,(1) sy-vline NO-GAP,(20) '目标城市' CENTERED NO-GAP,(1) sy-vline NO-GAP,(20) '距离' CENTERED NO-GAP,(1) sy-vline NO-GAP.WRITE AT: /(106) sy-uline.再输出数据:LOOP AT it_spfli.WRITE AT : /(1) sy-vline NO-GAP,(20) it_spfli-carrid CENTERED NO-GAP,(1) sy-vline NO-GAP, (20) it_spfli-connid LEFT-JUSTIFIED NO-GAP,(1) sy-vline NO-GAP, (20) it_spfli-cityfrom LEFT-JUSTIFIED NO-GAP,(1) sy-vline NO-GAP, (20) it_spfli-cityto LEFT-JUSTIFIED NO-GAP,(1) sy-vline NO-GAP, (20) it_spfli-distance RIGHT-JUSTIFIED NO-GAP,(1) sy-vline NO-GAP. WRITE AT: /(106) sy-uline.ENDLOOP.4、使用函数方式调用ALV输出结果此处没有添加自定义的一些参数,直接调用函数输出结果CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'EXPORTINGI_STRUCTURE_NAME = 'SPFLI'I_GRID_TITLE = '此处是GRID表格自己的表头'TABLESt_outtab = it_spfli.第二部分:完整的程序代码1、完整的报表程序REPORT ztest_007.TABLES: spfli.TYPE-POOLS: slis.DATA: it_spfli TYPE TABLE OF spfli WITH HEADER LINE.DATA: g_title TYPE text70."ALV列表表头DATA: gt_fields TYPE slis_t_fieldcat_alv, "声明ALV对象wa_field TYPE slis_fieldcat_alv,gs_layout TYPE slis_layout_alv,it_sort TYPE slis_t_sortinfo_alv,wa_sort TYPE slis_sortinfo_alv,it_filter TYPE slis_t_filter_alv,wa_filter TYPE slis_filter_alv,gt_event TYPE slis_t_event,gs_event TYPE slis_alv_event,g_repid TYPE sy-repid VALUE sy-repid.*此处的text-001,需要从菜单栏 Goto/Text Elements/Text Symbols中定义*p_carrid,s_connid如果需要设置显示文本的话,也需要在Goto/Text Elements/Selection texts里设置*设置好后一定要激活SELECTION-SCREEN BEGIN OF BLOCK blockquery WITH FRAME TITLE text-001.*定义航线承运人ID为必输项,默认值为'AA’PARAMETERS: p_carrid TYPE spfli-carrid OBLIGATORY DEFAULT 'AA'.*定义航班连接IDSELECT-OPTIONS: s_connid FOR spfli-connid.SELECTION-SCREEN END OF BLOCK blockquery.START-OF-SELECTION.PERFORM frm_get_data.END-OF-SELECTION.* PERFORM frm_write_display.PERFORM frm_set_alvtitle. "显示ALV列表中的表头PERFORM frm_define_layout. "设置样式PERFORM frm_set_itsort. "设置排序列PERFORM frm_set_itfilter. "设置过滤器PERFORM frm_set_events. "设置事件PERFORM frm_alv_display.*&---------------------------------------------------------------------* *& Form frm_get_data 放在最后执行*&---------------------------------------------------------------------* * 得到数据*----------------------------------------------------------------------* FORM frm_get_data .SELECT * FROM spfliINTO CORRESPONDING FIELDS OF TABLE it_spfliWHERE carrid = p_carridAND connid IN s_connid.ENDFORM. " frm_get_data*&---------------------------------------------------------------------* *& Form frm_write_display*&---------------------------------------------------------------------* * 使用write 方式输出数据*----------------------------------------------------------------------* FORM frm_write_display .CHECK it_spfli IS INITIAL.* 锁定左侧第几列SET LEFT SCROLL-BOUNDARY COLUMN 2.* 标题WRITE: 40 '标准列表输出测试'.*显示页码WRITE AT: /2 '第',4 sy-pagno LEFT-JUSTIFIED,6 '页'.*WRITE AT col(len) text.WRITE AT: /14 '制表日期:', 24 sy-datum RIGHT-JUSTIFIED.* 画线,长度为106=(1)左侧坚线 + (20)*5 各列宽度 + (1) * 5 各列中间的分隔线 WRITE AT: /(106) sy-uline.WRITE AT : /(1) sy-vline NO-GAP,(20) '航线承运人ID' CENTERED NO-GAP,(1) sy-vline NO-GAP,(20) '航班连接 Id' CENTERED NO-GAP,(1) sy-vline NO-GAP,(20) '起飞城市' CENTERED NO-GAP,(1) sy-vline NO-GAP,(20) '目标城市' CENTERED NO-GAP,(1) sy-vline NO-GAP,(20) '距离' CENTERED NO-GAP,(1) sy-vline NO-GAP.WRITE AT: /(106) sy-uline.LOOP AT it_spfli.WRITE AT : /(1) sy-vline NO-GAP,(20) it_spfli-carrid CENTERED NO-GAP,(1) sy-vline NO-GAP, (20) it_spfli-connid LEFT-JUSTIFIED NO-GAP,(1) sy-vline NO-GAP, (20) it_spfli-cityfrom LEFT-JUSTIFIED NO-GAP,(1) sy-vline NO-GAP, (20) it_spfli-cityto LEFT-JUSTIFIED NO-GAP,(1) sy-vline NO-GAP, (20) it_spfli-distance RIGHT-JUSTIFIED NO-GAP,(1) sy-vline NO-GAP. WRITE AT: /(106) sy-uline.ENDLOOP.ENDFORM. " frm_write_display*&---------------------------------------------------------------------* *& Form frm_define_fields*&---------------------------------------------------------------------* * 定义列的格式*----------------------------------------------------------------------* FORM frm_define_fields USING fieldname TYPE slis_fieldnamefieldspec TYPE dd03p-scrtext_mnozero TYPE clzero TYPE creffield TYPE slis_fieldnametablename TYPE dd03p-fieldname.CLEAR wa_field.TRANSLATE fieldname TO UPPER CASE.CASE fieldname .WHEN 'DISTANCE'.wa_field-just = 'R'."对齐方式(R)ight (L)eft (C)entENDCASE.wa_field-fieldname = fieldname."对应的内表字段名wa_field-seltext_l = fieldspec."长文本名称wa_field-seltext_m = fieldspec."中等长度文本名称wa_field-seltext_s = fieldspec."短文本名称wa_field-no_zero = nozero. "为输出隐藏零wa_field-lzero = lzero. "输出前导零wa_field-ddictxt = 'M'. "默认是S (S)hort (M)iddle (L)ongwa_field-ref_fieldname = reffield. "引用的字段名称wa_field-ref_tabname = tablename."引用的表名称APPEND wa_field TO gt_fields.ENDFORM. "add_field*&---------------------------------------------------------------------**& Form frm_set_alvtitle*&---------------------------------------------------------------------** 设置要显示的列*----------------------------------------------------------------------*FORM frm_set_alvtitle .REFRESH gt_fields.CLEAR wa_field.PERFORM frm_define_fields USING 'CONNID' '航线承运人ID' 'X' '' 'CONNID' 'IT_SPFLI'. PERFORM frm_define_fields USING 'CARRID' '航班连接ID' 'X' '' 'CARRID' 'IT_SPFLI'. PERFORM frm_define_fields USING 'COUNTRYFR' '国家代码' 'X' '' 'COUNTRYFR' 'IT_SPFLI'. PERFORM frm_define_fields USING 'CITYFROM' '起飞城市' 'X' '' 'CITYFROM' 'IT_SPFLI'. PERFORM frm_define_fields USING 'AIRPFROM' '起飞机场' 'X' '' 'AIRPFROM' 'IT_SPFLI'. PERFORM frm_define_fields USING 'DISTANCE' '距离' 'X' '' 'DISTANCE' 'IT_SPFLI'. ENDFORM. " frm_set_alvtitle*&---------------------------------------------------------------------**& Form frm_define_layout*&---------------------------------------------------------------------** 设置ALV的样式*----------------------------------------------------------------------*FORM frm_define_layout .gs_layout-totals_text = 'totals'."总计行第一列显示的名称gs_layout-zebra = 'X'."显示条纹样式gs_layout-no_vline = ''. "单元格分割线gs_layout-colwidth_optimize = 'X'."自动设置宽度gs_layout-detail_popup = 'X'."显示明细在POPUP窗口中gs_layout-detail_initial_lines = 'X'."显示明细初始行gs_layout-detail_titlebar = 'Detail Title Bar'."显示明细时工具条ENDFORM. " frm_define_layout*&---------------------------------------------------------------------**& Form frm_set_itsort*&---------------------------------------------------------------------** 设置排序项*----------------------------------------------------------------------*FORM frm_set_itsort .CLEAR wa_sort.wa_sort-fieldname = 'CONNID'."要排序的字段wa_sort-up = 'X'."按升序* wa_sort-down = 'X'."按降序APPEND wa_sort TO it_sort.ENDFORM. "frm_set_itsort*&---------------------------------------------------------------------**& Form frm_set_itfilter*&---------------------------------------------------------------------** 设置过滤器*----------------------------------------------------------------------* FORM frm_set_itfilter .CLEAR wa_filter.wa_filter-fieldname = 'CARRID'."要过滤的字段wa_filter-valuf_int = 'AA'.* wa_filter-valut_int = 'LH'.APPEND wa_filter TO it_filter.ENDFORM. "frm_set_itfilter*&---------------------------------------------------------------------**& Form frm_set_events*&---------------------------------------------------------------------** ALV事件处理*----------------------------------------------------------------------* FORM frm_set_events .CLEAR gs_event.CALL FUNCTION 'REUSE_ALV_EVENTS_GET'EXPORTINGi_list_type = 0IMPORTINGet_events = gt_event.READ TABLE gt_event INTO gs_event WITH KEY name = slis_ev_top_of_page .IF sy-subrc = 0.MOVE 'FRM_TOP_OF_PAGE' TO gs_event-form.APPEND gs_event TO gt_event .ENDIF.ENDFORM. "frm_set_events*&--------------------------------------------------------------------**& Form frm_set_status*&--------------------------------------------------------------------** 设置状态条(菜单栏,应用工具条,功能键)*---------------------------------------------------------------------*FORM frm_set_status USING rt_extab TYPE slis_t_extab.* SET PF-STATUS 'STANDARD'."此处是自己定义的GUI StatusENDFORM. "frm_set_status*&--------------------------------------------------------------------**& Form frm_user_command*&--------------------------------------------------------------------** 设置鼠标事件*---------------------------------------------------------------------*FORM frm_user_command USING p_ucomm LIKE sy-ucomm selfield TYPE slis_selfield. * CASE p_ucomm.* WHEN 'PRT'."打印* WHEN 'BACK'."返回* LEAVE PROGRAM.* ENDCASE.ENDFORM. "frm_user_command*&---------------------------------------------------------------------**& Form TOP-OF-PAGE*&---------------------------------------------------------------------** ALV表头内容*----------------------------------------------------------------------*FORM frm_top_of_page.DATA: l_line TYPE slis_listheader,l_t_header TYPE slis_t_listheader,l_date TYPE char14.CONCATENATE sy-datum(4) '年' sy-datum+4(2) '月' sy-datum+6(2) '日' INTO l_date. CLEAR l_line.l_line-typ = 'H'.l_line-info = g_title.APPEND l_line TO l_t_header.CLEAR l_line.l_line-typ = 'S'.l_line-key = '制表日期:'.l_line-info = l_date.APPEND l_line TO l_t_header.CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'EXPORTINGit_list_commentary = l_t_header.ENDFORM. "TOP-OF-PAGE*&---------------------------------------------------------------------**& Form frm_alv_display*&---------------------------------------------------------------------** 用ALV显示报表*----------------------------------------------------------------------*FORM frm_alv_display .CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'EXPORTING* I_INTERFACE_CHECK = ' '* I_BYPASSING_BUFFER = ' '* I_BUFFER_ACTIVE = ' 'i_callback_program = g_repid* i_callback_pf_status_set = 'FRM_SET_STATUS'* i_callback_user_command = 'FRM_USER_COMMAND'* I_CALLBACK_TOP_OF_PAGE = 'FRM_TOP_OF_PAGE'* I_CALLBACK_HTML_TOP_OF_PAGE = ' '* I_CALLBACK_HTML_END_OF_LIST = ' '* I_STRUCTURE_NAME = 'SPFLI'* I_BACKGROUND_ID = ' 'i_grid_title = '此处是GRID表格自己的表头' * I_GRID_SETTINGS =is_layout = gs_layoutit_fieldcat = gt_fields* IT_EXCLUDING =* IT_SPECIAL_GROUPS =* it_sort = it_sortit_filter = it_filter* IS_SEL_HIDE =* I_DEFAULT = 'X'i_save = 'A'* IS_VARIANT =it_events = gt_event* IT_EVENT_EXIT =* IS_PRINT =* IS_REPREP_ID =* I_SCREEN_START_COLUMN = 0* I_SCREEN_START_LINE = 0* I_SCREEN_END_COLUMN = 0* I_SCREEN_END_LINE = 0* I_HTML_HEIGHT_TOP = 0* I_HTML_HEIGHT_END = 0* IT_ALV_GRAPHICS =* IT_HYPERLINK =* IT_ADD_FIELDCAT =* IT_EXCEPT_QINFO =* IR_SALV_FULLSCREEN_ADAPTER =* IMPORTING* E_EXIT_CAUSED_BY_CALLER =* ES_EXIT_CAUSED_BY_USER =TABLESt_outtab = it_spfli* EXCEPTIONS* PROGRAM_ERROR = 1* OTHERS = 2.IF sy-subrc <> 0.* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.ENDIF.ENDFORM. " frm_alv_display2、给程序添加事务代码在程序激活后,点击右键,创建/事务代码,或者通过事务代码SE93来创建:输入事务代码名称,描述,及程序名称等:第三部分:其它知识点1、激活程序运行前需要激活;设置好文本字段后需要激活;屏幕设计完成后需要激活;第四部分:测试题1.在设计报表程序时,选择的程序类型应该是.()A)可执行程序B)模块池程序C)包含程序D)函数组程序2.在报表程序的屏幕事件里,有一个事件叫做AT LINE-SELECTION.参见如下代码:WRITE / ‘ABAP’.AT LINE-SELECTION.WRITE /‘TEST’.那么,以下哪种情况会发生.()A)先显示出一行ABAP,当用户双击一次时,屏幕上在原来ABAP那行下面换行一次显示出一行新的TESTB)先显示出一行ABAP,当用户双击一次时,屏幕上每次只显示出一行的TEST取代原先的屏幕C)先显示出一行ABAP,当用户双击一次时,屏幕上永远只显示出一行TEST(放在原来ABAP那行下面)D)先显示出一行ABAP,当用户第一次双击时,产生一个新屏幕,显示一行TEST,然后每次双击都在其下换行显示一行新的TEST3.选择事件的执行顺序正确的一组.()A)INITIALIZATION / START-OF-SELECTION / TOP-OF-PAGE / AT LINE-SELECTION B)INITIALIZATION / / START-OF-SELECTION / AT LINE-SELECTIONC)START-OF-SELECTION/ INITIALIZATION / TOP-OF-PAG / AT LINE-SELECTIOND)INITIALIZATION / TOP-OF-PAGE / AT LINE-SELECTION / START-OF-SELECTION4.在ABAP/4的开发工作中,哪一个TCODE是直接进入就可以创建程序,函数组以及程序内部各种元素的. ()A) SE80 B) SE11 C) SE93 D)SE16。
ABAP培训[1]
学习改变命运,知 识创造未来
ABAP培训[1]
事件块编码规则(3)
START-OF-SELCTION 通常在此事件中针对业务需求进行系统数据的查询
ABAP培训[1]
培训内容
ABAP开发过程中常用的TCODE ABAP开发的简要流程 ABAP报表开发 Query的使用
学习改变命运,知 识创造未来
ABAP培训[1]
ABAP开发过程中常用的TCODE
SE80 SE11 SE16 SE38 SE37 ST05 SE10 SE93 SE30 ABAPDOCU SHDB SMARTFORMS
29(10) s_date , 180(6) '单位:' , 190(10) '吨' .
学习改变命运,知 识创造未来
ABAP培训[1]
事件块编码规则(6)
END-OF-PAGE 在此事件中设定输出清单的页脚
例如: END-OF-PAGE . Write : ‘制作人’ , p_name .
报表编程模板:
ABAP培训[1]
输入字段设计
PARAMETERS 语句
SELECT-OPTIONS语句
学习改变命运,知 识创造未来
ABAP培训[1]
PARAMETERS语法
学习改变命运,知 识创造未来
ABAP培训[1]
Select-options语法
学习改变命运,知 识创造未来
ABAP培训[1]
WRITE语句
学习改变命运,知 识创造未来
ABAP培训[1]
ABAP培训课堂练习指导_Smartforms
SAMRTFORMS的设计与调用前提准备:1、已经有一个开发完成的报表程序ZTEST_XXX_ALV_012、该报表程序的最终输出结果存储在内表gt_out中3、内表gt_out的结构类型为报表程序中自定义的类型itab_out课堂练习指导:第一部分:SMARTFORMS设计1、打开SMARTFORMS设计器在GUI系统工具栏命令行输入框内键入事务代码SmartForms,回车即打开SmartForms 设计器初始界面,如下:2、表格属性设置系统默认类型为表格,在文本框中键入ZTESTtFM_DHW_001,然后单击创建,即打开表格设计器,初始功能为表格属性设置,下图即为主界面,修改描述为“课堂练习-航班计划表”。
然后点击保存按钮,在弹出窗口中选择本地对象后即完成保存。
表格设计器左侧为导航树,右侧为属性维护区,点击右侧维护区的【输出选项】选项卡,可以看到表格的默认输出页格式为DINA4,即为A4纸张幅面输出,如果需要修改,可单击右侧按钮在弹出框中选择其他幅面格式,本练习中页格式采用默认的DINA4即可;另外,我们看到表格默认样式为System,鼠标点击样式输入框右侧的按钮,在弹出列表中选中ZGQ_STYLE,单击确定选择。
3、表格接口定义鼠标双击左侧导航树中全局设置下表格接口节点,出现如下窗口,可以在这里定义表格的接口参数,以便报表程序调用表格时传递变量。
默认的许多系统变量,我们无法进行变动。
在这里,我们定义两个参数,参数名称分别为G_TITLE 、G_AUDAT,类型分配填入TYPE,参考打印填入STRING。
点击保存!4、全局定义鼠标双击左侧导航树中全局设置下全局定义节点,出现如下窗口,可以在这里完成表格的一些全局类型、变量以及相关初始化设置。
构类型ITAB_OUT的声明。
然后单击【全局数据】选项卡,定义全局变量,一个是内表对象GT_OUT,一个是对应的工作区对象GS_OUT。
前者用以存放报表程序中待输出的内表数据,后者则用以逐行获得每行数据。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
报表设计前提准备:1、对ABAP语法、基本数据类型等有一定了解2、内表的概念与使用3、对ABAP程序有一定了解4、对表sflight、spfli有一定了解5、对ALV控件的使用有一定了解示例:1、新建一个ABAP程序ZTEST_XXX2、定义查询条件3、用两种方式来显示结果(write方式,使用函数方式调用ALV)4、完善程序课堂练习指导:第一部分:逐步建立程序1、新建程序在GUI系统工具栏命令行输入框内键入事务代码SE38,回车即可打开建立程序的初始界面:输入程序名称ZTEST_007,点击按钮“Create”创建程序,输入程序标题,选择程序类型:完成后,点击“Save”按钮,然后点击“Local Object”保存为本地对象:2、定义查询条件在程序源代码界面中,输入选择屏幕的声明部分,如下:*此处的text-001,需要从菜单栏 Goto/Text Elements/Text Symbols中定义*p_carrid,s_connid如果需要设置显示文本的话,也需要在Goto/Text Elements/Selection texts里设置*设置好后一定要激活SELECTION-SCREEN BEGIN OF BLOCK blockquery WITH FRAME TITLE text-001.*定义航线ID为必输项,默认值为'AA’PARAMETERS: p_carrid TYPE spfli-carrid OBLIGATORY DEFAULT 'AA'.*定义航班连接IDSELECT-OPTIONS: s_connid FOR spfli-connid.SELECTION-SCREEN END OF BLOCK blockquery.3、使用write方法输出结果先输出表头部分:* 画线,长度为106=(1)左侧坚线 + (20)*5 各列宽度 + (1) * 5 各列中间的分隔线 WRITE AT: /(106) sy-uline.WRITE AT : /(1) sy-vline NO-GAP,(20) '航线承运人ID' CENTERED NO-GAP,(1) sy-vline NO-GAP,(20) '航班连接 Id' CENTERED NO-GAP,(1) sy-vline NO-GAP,(20) '起飞城市' CENTERED NO-GAP,(1) sy-vline NO-GAP,(20) '目标城市' CENTERED NO-GAP,(1) sy-vline NO-GAP,(20) '距离' CENTERED NO-GAP,(1) sy-vline NO-GAP.WRITE AT: /(106) sy-uline.再输出数据:LOOP AT it_spfli.WRITE AT : /(1) sy-vline NO-GAP,(20) it_spfli-carrid CENTERED NO-GAP,(1) sy-vline NO-GAP, (20) it_spfli-connid LEFT-JUSTIFIED NO-GAP,(1) sy-vline NO-GAP, (20) it_spfli-cityfrom LEFT-JUSTIFIED NO-GAP,(1) sy-vline NO-GAP, (20) it_spfli-cityto LEFT-JUSTIFIED NO-GAP,(1) sy-vline NO-GAP, (20) it_spfli-distance RIGHT-JUSTIFIED NO-GAP,(1) sy-vline NO-GAP. WRITE AT: /(106) sy-uline.ENDLOOP.4、使用函数方式调用ALV输出结果此处没有添加自定义的一些参数,直接调用函数输出结果CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'EXPORTINGI_STRUCTURE_NAME = 'SPFLI'I_GRID_TITLE = '此处是GRID表格自己的表头'TABLESt_outtab = it_spfli.第二部分:完整的程序代码1、完整的报表程序REPORT ztest_007.TABLES: spfli.TYPE-POOLS: slis.DATA: it_spfli TYPE TABLE OF spfli WITH HEADER LINE.DATA: g_title TYPE text70."ALV列表表头DATA: gt_fields TYPE slis_t_fieldcat_alv, "声明ALV对象wa_field TYPE slis_fieldcat_alv,gs_layout TYPE slis_layout_alv,it_sort TYPE slis_t_sortinfo_alv,wa_sort TYPE slis_sortinfo_alv,it_filter TYPE slis_t_filter_alv,wa_filter TYPE slis_filter_alv,gt_event TYPE slis_t_event,gs_event TYPE slis_alv_event,g_repid TYPE sy-repid VALUE sy-repid.*此处的text-001,需要从菜单栏 Goto/Text Elements/Text Symbols中定义*p_carrid,s_connid如果需要设置显示文本的话,也需要在Goto/Text Elements/Selection texts里设置*设置好后一定要激活SELECTION-SCREEN BEGIN OF BLOCK blockquery WITH FRAME TITLE text-001.*定义航线承运人ID为必输项,默认值为'AA’PARAMETERS: p_carrid TYPE spfli-carrid OBLIGATORY DEFAULT 'AA'.*定义航班连接IDSELECT-OPTIONS: s_connid FOR spfli-connid.SELECTION-SCREEN END OF BLOCK blockquery.START-OF-SELECTION.PERFORM frm_get_data.END-OF-SELECTION.* PERFORM frm_write_display.PERFORM frm_set_alvtitle. "显示ALV列表中的表头PERFORM frm_define_layout. "设置样式PERFORM frm_set_itsort. "设置排序列PERFORM frm_set_itfilter. "设置过滤器PERFORM frm_set_events. "设置事件PERFORM frm_alv_display.*&---------------------------------------------------------------------* *& Form frm_get_data 放在最后执行*&---------------------------------------------------------------------* * 得到数据*----------------------------------------------------------------------* FORM frm_get_data .SELECT * FROM spfliINTO CORRESPONDING FIELDS OF TABLE it_spfliWHERE carrid = p_carridAND connid IN s_connid.ENDFORM. " frm_get_data*&---------------------------------------------------------------------* *& Form frm_write_display*&---------------------------------------------------------------------* * 使用write 方式输出数据*----------------------------------------------------------------------* FORM frm_write_display .CHECK it_spfli IS INITIAL.* 锁定左侧第几列SET LEFT SCROLL-BOUNDARY COLUMN 2.* 标题WRITE: 40 '标准列表输出测试'.*显示页码WRITE AT: /2 '第',4 sy-pagno LEFT-JUSTIFIED,6 '页'.*WRITE AT col(len) text.WRITE AT: /14 '制表日期:', 24 sy-datum RIGHT-JUSTIFIED.* 画线,长度为106=(1)左侧坚线 + (20)*5 各列宽度 + (1) * 5 各列中间的分隔线 WRITE AT: /(106) sy-uline.WRITE AT : /(1) sy-vline NO-GAP,(20) '航线承运人ID' CENTERED NO-GAP,(1) sy-vline NO-GAP,(20) '航班连接 Id' CENTERED NO-GAP,(1) sy-vline NO-GAP,(20) '起飞城市' CENTERED NO-GAP,(1) sy-vline NO-GAP,(20) '目标城市' CENTERED NO-GAP,(1) sy-vline NO-GAP,(20) '距离' CENTERED NO-GAP,(1) sy-vline NO-GAP.WRITE AT: /(106) sy-uline.LOOP AT it_spfli.WRITE AT : /(1) sy-vline NO-GAP,(20) it_spfli-carrid CENTERED NO-GAP,(1) sy-vline NO-GAP, (20) it_spfli-connid LEFT-JUSTIFIED NO-GAP,(1) sy-vline NO-GAP, (20) it_spfli-cityfrom LEFT-JUSTIFIED NO-GAP,(1) sy-vline NO-GAP, (20) it_spfli-cityto LEFT-JUSTIFIED NO-GAP,(1) sy-vline NO-GAP, (20) it_spfli-distance RIGHT-JUSTIFIED NO-GAP,(1) sy-vline NO-GAP. WRITE AT: /(106) sy-uline.ENDLOOP.ENDFORM. " frm_write_display*&---------------------------------------------------------------------* *& Form frm_define_fields*&---------------------------------------------------------------------* * 定义列的格式*----------------------------------------------------------------------* FORM frm_define_fields USING fieldname TYPE slis_fieldnamefieldspec TYPE dd03p-scrtext_mnozero TYPE clzero TYPE creffield TYPE slis_fieldnametablename TYPE dd03p-fieldname.CLEAR wa_field.TRANSLATE fieldname TO UPPER CASE.CASE fieldname .WHEN 'DISTANCE'.wa_field-just = 'R'."对齐方式(R)ight (L)eft (C)entENDCASE.wa_field-fieldname = fieldname."对应的内表字段名wa_field-seltext_l = fieldspec."长文本名称wa_field-seltext_m = fieldspec."中等长度文本名称wa_field-seltext_s = fieldspec."短文本名称wa_field-no_zero = nozero. "为输出隐藏零wa_field-lzero = lzero. "输出前导零wa_field-ddictxt = 'M'. "默认是S (S)hort (M)iddle (L)ongwa_field-ref_fieldname = reffield. "引用的字段名称wa_field-ref_tabname = tablename."引用的表名称APPEND wa_field TO gt_fields.ENDFORM. "add_field*&---------------------------------------------------------------------**& Form frm_set_alvtitle*&---------------------------------------------------------------------** 设置要显示的列*----------------------------------------------------------------------*FORM frm_set_alvtitle .REFRESH gt_fields.CLEAR wa_field.PERFORM frm_define_fields USING 'CONNID' '航线承运人ID' 'X' '' 'CONNID' 'IT_SPFLI'. PERFORM frm_define_fields USING 'CARRID' '航班连接ID' 'X' '' 'CARRID' 'IT_SPFLI'. PERFORM frm_define_fields USING 'COUNTRYFR' '国家代码' 'X' '' 'COUNTRYFR' 'IT_SPFLI'. PERFORM frm_define_fields USING 'CITYFROM' '起飞城市' 'X' '' 'CITYFROM' 'IT_SPFLI'. PERFORM frm_define_fields USING 'AIRPFROM' '起飞机场' 'X' '' 'AIRPFROM' 'IT_SPFLI'. PERFORM frm_define_fields USING 'DISTANCE' '距离' 'X' '' 'DISTANCE' 'IT_SPFLI'. ENDFORM. " frm_set_alvtitle*&---------------------------------------------------------------------**& Form frm_define_layout*&---------------------------------------------------------------------** 设置ALV的样式*----------------------------------------------------------------------*FORM frm_define_layout .gs_layout-totals_text = 'totals'."总计行第一列显示的名称gs_layout-zebra = 'X'."显示条纹样式gs_layout-no_vline = ''. "单元格分割线gs_layout-colwidth_optimize = 'X'."自动设置宽度gs_layout-detail_popup = 'X'."显示明细在POPUP窗口中gs_layout-detail_initial_lines = 'X'."显示明细初始行gs_layout-detail_titlebar = 'Detail Title Bar'."显示明细时工具条ENDFORM. " frm_define_layout*&---------------------------------------------------------------------**& Form frm_set_itsort*&---------------------------------------------------------------------** 设置排序项*----------------------------------------------------------------------*FORM frm_set_itsort .CLEAR wa_sort.wa_sort-fieldname = 'CONNID'."要排序的字段wa_sort-up = 'X'."按升序* wa_sort-down = 'X'."按降序APPEND wa_sort TO it_sort.ENDFORM. "frm_set_itsort*&---------------------------------------------------------------------**& Form frm_set_itfilter*&---------------------------------------------------------------------** 设置过滤器*----------------------------------------------------------------------* FORM frm_set_itfilter .CLEAR wa_filter.wa_filter-fieldname = 'CARRID'."要过滤的字段wa_filter-valuf_int = 'AA'.* wa_filter-valut_int = 'LH'.APPEND wa_filter TO it_filter.ENDFORM. "frm_set_itfilter*&---------------------------------------------------------------------**& Form frm_set_events*&---------------------------------------------------------------------** ALV事件处理*----------------------------------------------------------------------* FORM frm_set_events .CLEAR gs_event.CALL FUNCTION 'REUSE_ALV_EVENTS_GET'EXPORTINGi_list_type = 0IMPORTINGet_events = gt_event.READ TABLE gt_event INTO gs_event WITH KEY name = slis_ev_top_of_page .IF sy-subrc = 0.MOVE 'FRM_TOP_OF_PAGE' TO gs_event-form.APPEND gs_event TO gt_event .ENDIF.ENDFORM. "frm_set_events*&--------------------------------------------------------------------**& Form frm_set_status*&--------------------------------------------------------------------** 设置状态条(菜单栏,应用工具条,功能键)*---------------------------------------------------------------------*FORM frm_set_status USING rt_extab TYPE slis_t_extab.* SET PF-STATUS 'STANDARD'."此处是自己定义的GUI StatusENDFORM. "frm_set_status*&--------------------------------------------------------------------**& Form frm_user_command*&--------------------------------------------------------------------** 设置鼠标事件*---------------------------------------------------------------------*FORM frm_user_command USING p_ucomm LIKE sy-ucomm selfield TYPE slis_selfield. * CASE p_ucomm.* WHEN 'PRT'."打印* WHEN 'BACK'."返回* LEAVE PROGRAM.* ENDCASE.ENDFORM. "frm_user_command*&---------------------------------------------------------------------**& Form TOP-OF-PAGE*&---------------------------------------------------------------------** ALV表头内容*----------------------------------------------------------------------*FORM frm_top_of_page.DATA: l_line TYPE slis_listheader,l_t_header TYPE slis_t_listheader,l_date TYPE char14.CONCATENATE sy-datum(4) '年' sy-datum+4(2) '月' sy-datum+6(2) '日' INTO l_date. CLEAR l_line.l_line-typ = 'H'.l_line-info = g_title.APPEND l_line TO l_t_header.CLEAR l_line.l_line-typ = 'S'.l_line-key = '制表日期:'.l_line-info = l_date.APPEND l_line TO l_t_header.CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'EXPORTINGit_list_commentary = l_t_header.ENDFORM. "TOP-OF-PAGE*&---------------------------------------------------------------------**& Form frm_alv_display*&---------------------------------------------------------------------** 用ALV显示报表*----------------------------------------------------------------------*FORM frm_alv_display .CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'EXPORTING* I_INTERFACE_CHECK = ' '* I_BYPASSING_BUFFER = ' '* I_BUFFER_ACTIVE = ' 'i_callback_program = g_repid* i_callback_pf_status_set = 'FRM_SET_STATUS'* i_callback_user_command = 'FRM_USER_COMMAND'* I_CALLBACK_TOP_OF_PAGE = 'FRM_TOP_OF_PAGE'* I_CALLBACK_HTML_TOP_OF_PAGE = ' '* I_CALLBACK_HTML_END_OF_LIST = ' '* I_STRUCTURE_NAME = 'SPFLI'* I_BACKGROUND_ID = ' 'i_grid_title = '此处是GRID表格自己的表头' * I_GRID_SETTINGS =is_layout = gs_layoutit_fieldcat = gt_fields* IT_EXCLUDING =* IT_SPECIAL_GROUPS =* it_sort = it_sortit_filter = it_filter* IS_SEL_HIDE =* I_DEFAULT = 'X'i_save = 'A'* IS_VARIANT =it_events = gt_event* IT_EVENT_EXIT =* IS_PRINT =* IS_REPREP_ID =* I_SCREEN_START_COLUMN = 0* I_SCREEN_START_LINE = 0* I_SCREEN_END_COLUMN = 0* I_SCREEN_END_LINE = 0* I_HTML_HEIGHT_TOP = 0* I_HTML_HEIGHT_END = 0* IT_ALV_GRAPHICS =* IT_HYPERLINK =* IT_ADD_FIELDCAT =* IT_EXCEPT_QINFO =* IR_SALV_FULLSCREEN_ADAPTER =* IMPORTING* E_EXIT_CAUSED_BY_CALLER =* ES_EXIT_CAUSED_BY_USER =TABLESt_outtab = it_spfli* EXCEPTIONS* PROGRAM_ERROR = 1* OTHERS = 2.IF sy-subrc <> 0.* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.ENDIF.ENDFORM. " frm_alv_display2、给程序添加事务代码在程序激活后,点击右键,创建/事务代码,或者通过事务代码SE93来创建:输入事务代码名称,描述,及程序名称等:第三部分:其它知识点1、激活程序运行前需要激活;设置好文本字段后需要激活;屏幕设计完成后需要激活;第四部分:测试题1.在设计报表程序时,选择的程序类型应该是.()A)可执行程序B)模块池程序C)包含程序D)函数组程序2.在报表程序的屏幕事件里,有一个事件叫做AT LINE-SELECTION.参见如下代码:WRITE / ‘ABAP’.AT LINE-SELECTION.WRITE /‘TEST’.那么,以下哪种情况会发生.()A)先显示出一行ABAP,当用户双击一次时,屏幕上在原来ABAP那行下面换行一次显示出一行新的TESTB)先显示出一行ABAP,当用户双击一次时,屏幕上每次只显示出一行的TEST取代原先的屏幕C)先显示出一行ABAP,当用户双击一次时,屏幕上永远只显示出一行TEST(放在原来ABAP那行下面)D)先显示出一行ABAP,当用户第一次双击时,产生一个新屏幕,显示一行TEST,然后每次双击都在其下换行显示一行新的TEST3.选择事件的执行顺序正确的一组.()A)INITIALIZATION / START-OF-SELECTION / TOP-OF-PAGE / AT LINE-SELECTION B)INITIALIZATION / / START-OF-SELECTION / AT LINE-SELECTIONC)START-OF-SELECTION/ INITIALIZATION / TOP-OF-PAG / AT LINE-SELECTIOND)INITIALIZATION / TOP-OF-PAGE / AT LINE-SELECTION / START-OF-SELECTION4.在ABAP/4的开发工作中,哪一个TCODE是直接进入就可以创建程序,函数组以及程序内部各种元素的. ()A) SE80 B) SE11 C) SE93 D)SE16。