SAP的ABAP4语言中文培训教材第三部分第七章转到列表过 程
SAP-ABAP程序设计基础教程第7章ABAP数据库操作PPT课件
其步骤如下: 打开光标: 使用光标几乎可从任何 SELECT 语句的结果集中获得下一行(或 一些行)。为此,应该按如下格式使用OPEN CURSOR 语句将光 标与相关的SELECT 语句链接起来,语法是:
OPEN CURSOR [WITH HOLD] <c> FOR SELECT ........
-
7
SELECT <field list> FROM table INTO | APPENDING [CORRESPONDING FIELDS OF] TABLE itab WHERE <condition> .
-
8
总计表达式
使用总计表达式,可从数据库表的列<f> 中取得统计数据,有 效的总计表达式有: (1) MAX: 返回列<f>的最大值 (2) MIN: 返回列<f>的最小值 (3) SUM: 返回列<f>的总计 (3) AVG: 返回列<f>的平均值 (4) COUNT:给值或行计数:其中COUNT( DISTINCT <f> )
使用光标从数据库表中读取行
-
3
从数据库表中读取数据
SELECT语句的用法
SELECT <result> FROM <source> [INTO <target>] [WHERE <condition>] [GROUP BY <fields>] [HAVING <cond>] [ORDER BY
<sort_order>].
删除行
DELETE: 可使用DELETE 语句从数据库表中删除行。
ABAP4基础培训教程
XMLProbe™ e-Commerce Web Service Series
如何学习ABAP/4?
I. ABAP/4处理的对象
基本对象 ABAP/4 Dictionary Report Batch Input Dialog SAPScript Function Query 高级对象 BAPI Module Smartform Object Orient Event Communication Interface Internet Application ……
程序执行的过程
SAP R/3客户端 ABAP/4 Workbench
知识库
工作台
XMLProbe™ e-Commerce Web Service Series
ABAP基础知识 ABAP程序的程序处理流程 SAP R/3客户端
ABAP/4 Workbench
ABAP程序的程序处理流程
Advance programmer:
Senior programmer:
ABAP consultant:
XMLProbe™ e-Commerce Web Service SeV.我们的学习目标
基础教程 认识SAP R/3 创建、维护ABAP/4 Dictionary对象 Report程序设计 Batch Input程序设计 课题 Dialog程序设计 SAPScript Layout Set和处理程序设计 函数(Function)设计 BAPI程序设计 面向对象程序设计 ALV程序设计 ……
ABAP程序的程序处理流程
XMLProbe™ e-Commerce Web Service Series
ABAP 培训 教材
left join 图示
A a1 a2 a3 B b1 b2 b3 C c1 c2 c3 A a1 a3 a3 D d1 d2 d3 E e1 e2 e3
A a1 a2 a3 a3
B b1 b2 b3 b3
C c1 c2 c3 c3
D d1
E e1
d2 d3
e2 e3
多表结合查询
ABAP/4数据字典
ABAP/4数据字典
ABAP/4数据字典是和ABAP/4工作台密切结
合在一起的一个活动组件 数据字典的修改将立刻影响到相关的程序和 屏幕 R/3系统是一个解释执行的系统,程序或是屏 幕并不直接读取源代码,而是执行内部经过 “生成”的描述 对于ABAP/4字典的修改将触发内部描述的重 新生成
身或内表。可以用TYPES语句或DATA语句定义字段串。通过DATA语 句不能定义独立数据类型,而可以定义具有结构化类型的数据对象。 内表还“垂直地”扩展。可以用TYPES或DATA语句的OCCURS参数 定义内表。
内表:内表由相同类型的几行组成。与字段串仅“水平地”扩展不同,
声明数据
结构化数据类型示例:下列是ABAP/4中结构化数据类型的示例 由一系列基本数据类型组成的字段串(平铺结构,仅“水平”) 为基本字段定义的内表(基本数据类型的动态排列,仅“垂直”) 为简单字段串定义的内表(带有行和列的表)
SELECT S032~SSOUR S032~VRSIO * S031~SPWOC * S031~SPBUP S032~WERKS S032~LGORT S032~MATNR S031~SPMON S031~BASME S031~MZUBB S031~WZUBB S031~MAGBB S031~WAGBB S032~MTART S032~MBWBEST S032~WBWBEST FROM S032 LEFT OUTER JOIN S031 ON S031~MATNR = S032~MATNR AND S031~LGORT = S032~LGORT INTO CORRESPONDING FIELDS OF TABLE IT_S031 WHERE S032~MATNR IN S_MATNR AND S032~LGORT IN S_LGORT * AND S031~SPMON IN R_MONTH AND S032~MTART IN S_MTART.
ABAP快速入门培训教材
ABAP快速入门培训教材3.ABAP基础3.3 屏幕输入指令在ABAP/4中要自屏幕输入变量的内容, 使用的命令是PARAMETERS 及 SELECTION-OPTIONS:1. PARAMETER:输入一个变量或字段内容2. SELECTION-OPTIONS:使用条件筛选画面来输入数据3.3.1 PARAMETERS 指令语法:PARAMETERS[DEFAULT ] [LOWER CASE] [OBLIGATORY] [AS CHECKBOX] [RADIOBUTTON GROUP ] 实例:PARAMETERS: NAME(8) TYPE C,AGE TYPE I,BIRTH TYPE D.执行行結果:图29LOWER CASE:ABAP/4预设是将字串输入值自动转换为大写, 加上此参数会将输入的资料转成小写。
OBLIGATORY:强制要求输入, 屏幕上会出現一个“ ?” , 使用者必须要输入才可。
AS CHECKBOX:输入 CHECKBOX的格式。
实例:PARAMETERS: TAX AS CHECKBOX DEFAULT ‘X’,NTD AS CHECKBOX.执行結果:图30RADIOBUTTON GROUP :输入 RADIO BUTTON GROUP 的方式。
实例:PARAMETERS: BOY RADIOBUTTON GROUP SEX DEFAULT ‘X’,GIRL RADIOBUTTON GROUP SEX.执行結果:图313.3.2 SELECTION-OPTIONS语法:SELECT-OPTIONS FOR[DEFAULT TO ][NO-EXTENSION][NO INTERVALS][LOWER CASE][OBLIGATORY]实例:TABLES SPFLI.SELECT-OPTIONS AIRLINE FOR SPFLI-CONNID. *将条件的输入值存放入AIRLINE, 筛选对象为SPFLI中的CONNID栏位。
(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开发工具,提供 了代码自动补全、语法检查、调试等功能。
SAPABAP基础语法培训教程
SAPABAP基础语法培训教程SAP ABAP(Advanced Business Application Programming)是一种基于ERP平台的开发语言,ABAP基础语法是程序员学习和掌握ABAP语言的基础。
本教程将为大家介绍ABAP语言的基本概念和语法规则。
1.ABAP程序结构ABAP程序由模块(MODULE)、函数(FUNCTION)和方法(METHOD)组成。
每个程序都由声明、定义和执行部分构成。
声明部分包括程序名称、输入输出参数和局部变量的声明。
定义部分包括逻辑处理和函数实现。
执行部分包括调用其他程序或函数的操作。
2.数据类型ABAP支持多种数据类型,包括整数、小数、字符串、日期和时间等。
声明和定义变量时需要指定数据类型,如:DATA num TYPE I.(整数类型的变量)ABAP还支持结构体和表格类型的数据。
在声明变量时,可以使用LIKE关键字指定一个已有变量的数据类型。
3.控制语句ABAP的控制语句包括条件语句和循环语句。
条件语句包括IF、CASE和WHEN等关键字。
例如:IF condition.statement.ELSEIF condition.statement.ELSE.statement.ENDIF.循环语句包括DO、WHILE和LOOP等关键字。
例如:DOnTIMES.statement.ENDDO.WHILE condition.statement.ENDWHILE.LOOP AT itab.statement.ENDLOOP.4.函数和方法ABAP可以定义自己的函数和方法,以供其他程序或函数调用。
函数由FUNCTION关键字定义,例如:FUNCTION function_name.statement.ENDFUNCTION.方法由METHOD关键字定义,例如:METHOD method_name.statement.ENDMETHOD.在函数和方法中可以通过EXPORTING关键字指定输出参数,通过IMPORTING关键字指定输入参数。
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 )一起使用。
SAP的ABAP编程入门.pdf
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键, 屏幕可见执行所得的结果重要的编辑键key FunctionF8F5F11 CTRL+F11 执行程序复制游标所在列的内容储存档案删除游标所在列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’ 时间数据, 格式为HHMMSS X 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叙述则是用在指定数据型态。
SAP ABAP_4编程语法汇总(中文版)
SAP ABAP_4编程语法汇总(中文版)本文是由塞依教育编辑整理,了解更多SAP培训信息,请进入/news/一、Data Type (数据类型)C: 字符(串), 长度为1, 最大有65535 BYTES, 初始值为: space,例: ‘M’;D: 日期, 格式为YYYYMMDD, 最大是’9999/12/31’ ,例:’1999/12/03’.F: 浮点数, 长度为8, 例如: 4.285714285714286E-01I: 整数范围 :-2^31 ~ 2^31-1N: 数值组成的字符串: 011, ‘302’.P: packed 数,用于小数点数值,例如: 12.00542;T: 时间, 格式为HHMMSS,例如: ’14:03:00’, ’21:30:39’.X: 16进制数, 例如‘1A03’.二、变量宣告变量宣告包含name, length, type, structure等,语法如下:DATA <F> [<length>] <type> [<value>] [<decimals>]其中: <f> :变量名称,最长30个字符,不可含有 + , . , : ( ) 等字符;<length><type>:变量类型及长度;<value>:初值<decimals>:小数位数Example 1:DATA: COUNTER TYPE P DECIMALS 3,NAME (10) TYPE C VALUE ‘Delta’,S_DATE TYPE D VALUE ‘19991203’.Example 2:DATA: BEGIN OF PERSON,NAME(10) TYPE C,AGE TYPE I,WEIGHT TYPE P DECIMALS 2,END OF PERSON.另外,有关DATA宣告的指令还有: CONSTANTS(宣告常数)、STATICS(临时变量宣告).三、系统专用变量说明系统内部专门创建了SYST这个STRUCTURE,里面的字段存放系统变量,常用的系统变量有: SY-SUBRC : 系统执行某指令后,表示执行成功与否的变量,’0’表示成功SY-UNAME: 当前使用者登入SAP的USERNAME;SY-DATUM: 当前系统日期;SY-UZEIT: 当前系统时间;SY-TCODE: 当前执行程序的Transaction codeSY-INDEX : 当前LOOP循环过的次数SY-TABIX: 当前处理的是internal table 的第几笔SY-TMAXL: Internal table的总笔数SY-SROWS: 屏幕总行数;SY-SCOLS: 屏幕总列数;SY-MANDT: CLIENT NUMBERSY-VLINE: 画竖线SY-ULINE: 画横线附注:1.SAP的全称是: System Application Products in Data Processing;2.ABAP/4的全称是:Advanced Business Application Programming;3.ABAP/4的路径为:Tools → ABAP/4 WorkBench→ABPA/4 Editor ;4.ABAP/4每条语句以句号结束;5.ABAP/4中象= ,>, <,+,-,*,/等符号左右都需要有至少一个空格;6.整行注释用’*’号, 注释本行后面部分用’”’号;一. WRITE 语句ABAP/4用来在屏幕上输出数据的指令是WRITE指令,例如:WRITE: ‘USER NAME IS:’, SY-UNAME.二. 指定屏幕输出位置指定输出位置的语句格式为:WRITE: [AT] [ / ] [<pos>] [(<len>)] 资料项 [<par>]其中: / : 在下一行输出<pos>: 指定输出的行号;(<len>):指定输出位数(长度)<par>: 指定显示格式参数,参数有:LEFT-JUSTIFIED 资料靠左对齐CENTERED 数据靠中间对齐RIGHT-JUSTIFIED 资料靠右对齐UNDER <g> 正对在数据项<g>的下面显示NO-GAP 紧接着显示,不留空格USING EDIT MASK <m>: 使用内嵌子元显示, 如 12:03:20 USING NO EDIT MASK: 不使用内嵌子元NO-ZERO: 数字前面 0 的部分不显示NO-SIGN: 不显示正负号DECIMALS <d>: 显示 <d> 位小数EXPOENT <e>: F(浮点数)指数的值ROUND <r>: 四舍五入至小数点后<r>位CURRENCY <c>: 币别显示DD/MM/YY : 日期显示格式MM/DD/YY:YY/MM/DD:YY/DD/MMMM/DD/YYYY:DD/MM/YYYYYYYY/MM/DD:YYYY/DD/MM:例如1: WRITE: /10(6) ‘ABCDEFGHIJK’.输出结果为: ABCDEF例如2: DATA: X TYPE I VALUE ’11:20:30’,A(5) TYPE C VALUE ‘AB CDE’.WRITE: / X USING EDIT MASK ‘__:__:__’.WRITE: / X USING EDIT MASK ‘$___,___’.WRITE: / Y NO-GAP.输出结果为:11:20:30$112,030ABCDEF一. 显示图标:语法: WRITE: <symbol-name> AS SYMBOL.WRITE: <icon-name> AS ICON.例如: INCLUDE <SYMBOL>.INCLUDE <ICON>.WRITE: / ‘Phone symbol:’, SYM_PHONE AS SYMBOL.WRITE: / ‘Alarm Icon:’, ICON_VOICE_OUTPUT AS ICON.要查看系统所提供有那些符号及图标,可选择’EDIT’下的’Insert Statement’,选择’Write’,接下来选择要查看的群组,如SYMBOL 或ICON, 接下来按’Display’即可.§ INTERNAL TABLE一. Internal Table 的宣告ABAP/4中的Internal Table是一种Data Structure,类似于其它语言中的STRUTURE,它可以由几个不同类型的字段(field)组成,用来表示具有不同属性的某一事物,单独一笔资料表示某个事物,多笔数据表示具有相同属性的多个事物.例如:为了存取或记录某班的同学数据,我们创建如下的internal table:DATA: BEGIN OF STUDENT OCCURS 20,STD_ID TYPE N,NAME(10) TYPE C,AGE TYPE I,BIRTH TYPE D,SCORE TYPE P DECIMALS 2,END OF STUDENT.此时我们已经创建了名叫STUDENT的internal table,并且为它预先申请了能够存放20笔数据的Buffer(当然,如果存取数据不止20笔,程序执行时,会自动申请系统Buffer)Internal table 的定义有以下几种格式:格式一. DATA: BEGIN OF <internal table> OCCURS <n>,<field 1> TYPE <type1>,[<field 2> TYPE <type 2>,<field 3> TYPE <type 3>,… ]END OF <internal table>.格式二. TYPES: BEGIN OF <work area>,<field 1> TYPE <type1>,[<field 2> TYPE <type 2>,<field 3> TYPE <type 3>,… ]END OF <work area>.TYPES <internal table> TYPE <work area> OCCURS <n>.格式三. DATA: BEGIN OF <work area>.INCLUDE STRUCTURE <table name>.DATA: END OF <work area>.DATA: <internal table> LIKE <work area> OCCURS <n>.二. APPEND LINE格式: APPEND [<work area> TO ] <internal table>.举例一. (使用work area)DATA: BEGIN OF LINE,COL1 TYPE I,COL2 TYPE I,END OF LINE.DATA ITAB LIKE LINE OCCURS 10.DO 2 TIMES.LINE-COL1 = SY-INDEX.LINE-COL2 = SY-INDEX ** 2.APPEND LINE TO ITAB.ENDDO.LOOP AT ITAB INTO LINE.WRITE: / LINE-COL1, LINE-COL2.ENDLOOP.执行结果为:1 12 4举例二. (不使用work area)DATA: BEGIN OF ITAB OCCURS 10,COL1 TYPE I,COL2 TYPE I,END OF ITAB.DO 2 TIMES.ITAB-COL1 = SY-INDEX.ITAB-COL2 = SY-INDEX ** 2.APPEND ITAB.ENDDO.LOOP AT ITAB.WRITE: / ITAB-COL1, ITAB-COL2.ENDLOOP.执行结果与举例一相同.举例三. (加入另一个Internal table的元素)格式: APPEND LINES OF <itab1> [FROM <n1> ] [TO <n2>] TO <itab2>.将<itab1>的元素加入至<itab2>中,可选取自<n1>至<n2>的范围.APPEND LINES OF ITAB TO JTAB.三. COLLECT LINECOLLECT 指令也是将元素加入Internal table中,与APPEND 的区别是: COLLECT指令在非数值字段相同的情况下,将数值字段汇总.格式: COLLECT [<work area> INTO ] <itab>DATA: BEGIN OF ITAB OCCURS 3,COL1(3) TYPE C,COL2 TYPE I,END OF ITAB.ITAB-COL1 = ‘ABC’. ITAB-COL2 = 10.COLLECT ITAB.ITAB-COL1 = ‘XYZ’. ITAB-COL2 = 20.COLLECT ITAB.ITAB-COL1 = ‘ABC’. ITAB-COL2 = 80.COLLECT ITAB.此时, internal table中放的是2笔数据, 分别为:ITAB-COL1 ITAB-COL2‘ABC’ 90‘XYZ’ 20四. INSERT LINE将元素插入在指定的internal table位置之前.格式: INSERT [<wa> INTO] [INITIAL LINE INTO ] <itab> [INDEX <idx>]或者: INSERT LINES OF <itab1> [FROM <n1> TO <n2>] INTO <itab2> INDEX <idx>其中: <wa>即work area,工作区中的元素.[INITIAL LINE INTO] :插入一笔初始化的记录.<itab>: internal table[INDEX <idx>]: internal table 的记录号.(新加入的元素放在此记录前面)五. 读取internal table格式一:LOOP AT <itab> [INTO <wa>][FROM <n1> TO <n2>][WHERE <conditions>]<statement>ENDLOOP.格式二:READ TABLE <itab> [INTO <wa>] [INDEX <idx> / WITH KEY <conditions>]举例. (格式二)DATA: BEGIN OF ITAB OCCURS 10,COL1 TYPE I,COL2 TYPE I,END OF ITAB.DO 10 TIMES.ITAB-COL1 = SY-INDEX.ITAB-COL2 = SY-INDEX * 2.APPEND ITAB.ENDDO.READ TABLE ITAB INDEX 3.(或者: READ TABLE ITAB WITH KEY COL1 = 3.)WRITE: / ‘ITAB-COL1 = ‘, ITAB-COL1, ‘ITAB-COL2 = ‘, ITAB-COL2.执行结果同样是:ITAB-COL1 = 3ITAB-COL2 = 6.六. 修改internal table 中的值格式: MODIFY <itab> [FROM <wa>][INDEX <idx>][TRANSPORTING <f1><f2>…][WHERE <conditions>]举例一. READ TABLE ITAB INDEX 3.LINE-COL1 = 29.MODIFY ITAB FROM LINE TRANSPORTING COL1.将第三笔记录的COL1字段的值修改为29.举例二. T_SALARY – salary = 50.MODIFY T_SALARY TRANSPORTING salary WHERE birthday = ‘1999/12/06’.七. DELETE internal table中的字段格式: DELETE <itab> INDEX <idx>.或: DELETE <itab>[FROM <n1> TO <n2>] [WHERE <conditions>]八. Internal table 排序SORT <itab> [<order way>][BY <f1><f2>…]其中:<order way> 有DESCENDING 和ASCENDING, Default 为ASCENDING.<f1>: 为指定排序的字段.九. 加总SUM.总和计算存放与work area中,但只能在LOOP 中使用.例: LOOP AT ITAB INTO LINE.SUM.ENDLOOP.WRITE: / LINE-COL1, LINE-COL2.十. 初始化internal tableREFRESH <itab>. 清空<itab>中的值.CLEAR <itab>. 清空<itab>的Header Line.FREE <itab>. 释放记忆体空间.§屏幕输入命令在ABAP/4中要从屏幕输入变量, 使用的命令是 PARAMETERS 及SELECTION-OPTIONS:1. PARAMETER: 输入一个变量2. SELECTION-OPTIONS: 使用条件筛选画面来输入数据一. PARAMETERS 指令基本的输入命令, 类似如BASIC的INPUT命令, 但无法使用F格式(浮点数)语法:PARAMETERS <p> [DEFAULT <f>] [LOWER CASE][OBLIGATORY] [AS CHECKBOX][RADIOBUTTON GROUP <rad>]Example:PARAMETERS: NAME(8),AGE TYPE I,BIRTH TYPE D.执行结果:在日期的输入格式上为 MM/DD/YY , MM/DD/YYYY, MMDDYY或MMDDYYYY , 如输入 020165表 1965年02月01日, 与02/01/65的输入是一样的, 日期输入范围为公元1950年至2049年1.DEFAULT设定输入的默认值Example:PARAMETERS: COMPANY(20) DEFAULT ‘DELTA’,BIRTH TYPE D DEFAULT ‘19650201’.2. LOWER CASEABAP/4预设是将字符串输入值自动转换为大写, 加上此参数会将输入的数据转成小写,3. OBLIGATORY强制要求输入, 屏幕上会出现一个 ? , 使用者必须要输入才可.4. AS CHECKBOX输入 CHECKBOX的格式Example:PARAMETERS: TAX AS CHECKBOX DEFAULT ‘X’,NTD AS CHECKBOX.执行结果:5. RADIOBUTTON GROUP <rad>输入 RADIO BUTTON GROUP 的方式Example:PARAMETERS: BOY RADIOBUTTON GROUP SEX DEFAULT ‘X’,GIRL RADIOBUTTON GROUP SEX.执行结果:二. SELECT-OPTIONSSELECTION-OPTIONS所输入的值实际上是放在internal table中的,该Internal table 有四个字段,分别是:SIGN,OPTION,LOW,HIGH.. 条件筛选检查条件输入画面指令, 输入条件后可配合SELECT指令自TABLE读取符合条件的数据, 直接执行或放入 Internal Table中, 条件有四个参数:1. SIGN:I: 表筛选条件符合的资料E: 表筛选条件不符合的资料2. OPTION: 比较的条件符号EQ(等于),NE(不等于),GT(大于),LE(小于),CP(包含),NP(不包含)3. LOW: 最小值4. HIGH: 最大值语法:SELECT-OPTIONS <check-option> FOR <table-field>Example:TABLES SPFLI.SELECT-OPTIONS AIRLINE FOR SPFLI-CONNID.将条件的输入值存放入 AIRLINE, 筛选选择为SPFLI中的CONNID字段执行结果:可直接输入起始范围或按下选择画面, 输入完后按下左上角的执行键三. 条件输入选择画面1.自Table中选取按下输入项的右边往下箭头, 叫出Table中数据项, 选取开始和结束的范围2.Selection Options按下”Selection options”按键, , 输入Option及 Sign参数内容, 屏幕如下:3.Multi-Options输入按下最右边的Multi-Options输入键, 输入条件选取的范围, 画面如下:条件输入完后按下”Copy”按键四. 改变条件输入格式1.DEFAULT <begin> TO <end>设定开始结束范围输入默认值Example:SELECT-OPTIONS AIRLINE FOR SPFLI-CONNIDDEFAULT ‘2042’ TO ‘4555’.2.NO-EXTENSION设定不要Multi-Option输入画面3.NO INTERVALS设定不要区间范围输入画面4.LOWER CASE输入转换成大写5.OBLIGATORY强制要求输入五. 配合 SELECT 命令条件输入完后要将符合条件的数据筛选出来, 可配合使用 SELECT 指令 1.使用WHERE <条件式>Example:SELECT-OPTIONS AIRLINE FOR SPFLI-CONNID.SELECT * FROM SPFLI WHERE CONNID IN AIRLINE.WRITE: / CONNID,FROMCITY,TOCITY.ENDSELECT.2.使用CHECK参数Example:SELECT-OPTIONS AIRLINE FOR SPFLI-CONNID.SELECT * FROM SPFLI.CHECK AIRLINE.WRITE: / CONNID,FROMCITY,TOCITY.ENDSELECT.3.使用 IF … IN 叙述Example:SELECT-OPTIONS AIRLINE FOR SPFLI-CONNID.SELECT * FROM SPFLI.IF SPFLI-CONNID IN AIRLINE.WRITE: / CONNID,FROMCITY,TOCITY.ENDIFENDSELECT.六. SELECTION-SCREEN1.产生空白列语法:SELECTION-SCREEN SKIP [<n>]Example:SELECTION-SCREEN SKIP 2.产生两列空白列2.产生底线语法:SELECTION-SCREEN ULINE / <pos>(length)Example:SELECTION-SCREEN ULINE /10(30).自第10格开始产生长度30的底线3.印出备注说明语法:SELECTION-SCREEN COMMENT / <pos>(length) <name>Example:REMARK = ‘Pls enter your name’.SELECTION-SCREEN COMMENT /10(30) REMARK.4. 同一列中输入数个数据项语法:SELECTION-SCREEN BEGIN OF LINE.……SELECTION-SCREEN END OF LINE.Example:SELECTION-SCREEN BEGIN OF LINE.SELECTION-SCREEN POSITION 20.PARAMETERS NAME(10).SELECTION-SCREEN POSITION 40.PARAMETERS BIRTH TYPE D.SELECTION-SCREEN END OF LINE.在20格输入NAME内容, 40格输入 BIRTH的内容5. 绘出BLOCK PANEL语法:SELECTION-SCREEN BEGIN OF BLOCK <block>[WITH FRAME [TITLE <title>].…….SELECTION-SCREEN END OF BLOCK <block>.Example:SELECTION-SCREEN BEGIN OF BLOCK RADIO WITH FRAME .PARAMETER R1 RADIOBUTTON GROUP GR1.PARAMETER R2 RADIOBUTTON GROUP GR1.PARAMETER R3 RADIOBUTTON GROUP GR1.SELECTION-SCREEN END OF BLOCK RADIO.§SQL语法我们在编写ABAP4程序的时候,经常需要从TABLE中根据某些条件读取数据,.读取数据最常用的方法就是通过SQL语法实现的.ABAP/4中可以利用SQL语法创建或读取TABLE,SQL语法分为DDL(DATA DEFINE LANGUAGE)语言和DML(DATA MULTIPULATION LANGUAGE)语言,DDL语言是指数据定义语言,例如CREATE等, DML语言是数据操作语言,例如SELECT, INSERT等语句. SQL语句有OPEN SQL语句和NATIVE SQL语句. OPEN SQL语句不是标准SQL语句,是ABAP/4语言,利用OPEN SQL语句能在Databases 和 Command 之间产生一个BUFFER,所以它有一个语言转换的过程.而NATIVE SQL语句则是标准的SQL语句, 它直接针对Databases操作.一. OPEN SQLOPEN SQL 语句包含有: SELECT,INSERT,UPDATE,MODIFY,DELETE,OPEN CURSOR, FETCH,CLOSE CURSOR,COMMIT WORK,ROLLBACK WORK等.1. SELECT语句语法格式:SELECT <result> [INTO <target>] [FROM <source>] [WHERE <condition>][GROUP BY <fields>] [ORDER BY <sort order>]其中: <result>指定要抓取的字段<target>将读取的记录存放在work area中<source>指定从那个TABLE中读取数据<condition>抓取资料的条件<fields>指定按那些字段分组<sort order>排序的字段及方式相关的系统变量:SY-SUBRC = 0 表示读取数据成功<> 0 表示未找到符合条件的记录SY-DBLNT: 被处理过的记录的笔数.相关的命令:EXIT. 退出循环.CHECK <logistic statement>.如果逻辑表达式成立,则继续执行,否则,开始下一次循环.◆.利用循环方式读取所有记录SELECT ….ENDSELECT.是循环方式读取记录的.例如:TABLES MARD.SELECT [DISTINCT] * FROM MARD WHERE MATNR = ‘3520421700’.<Statements>.ENDSELECT.(从MARD中抓取所有料号=3520421700的数据)◆读取一笔数据TABLES MARD.SELECT SINGLE * FROM MARD WHERE MATNR = ‘3520421700’.(从MARA中抓取一笔料号=3520421700的资料)◆将读取的记录放在work area中,并且加入Internal table 中.格式有:... INTO <work area>... INTO CORRESPONDING FIELDS OF <work area>... INTO (f1, ..., fn) 变量组.... INTO TABLE <internal table>... INTO CORRESPONDING FIELDS OF TABLE <internal table>... APPENDING TABLE <internal table>... APPENDING CORRESPONDING FIELDS OF TABLE <internal table>举例一:TABLES MARD.DATA: BEGIN OF ITAB OCCURS 10,MATNR LIKE MARD-MATNR,WERKS LIKE MARD-WERKS,LGORT LIKE MARD-LGORT,LABST LIKE MARD-LABST,END OF ITAB.SELECT MATNR WERKS LGORT LABSTINTO CORRESPONDING FIELDS OF ITABFROM MARDWHERE MATNR = ‘3520421700’.APPEND ITAB.CLEAR ITAB.ENDSELECT.(将读取的结果放在Internal table ITAB中)举例二.TABLES MARD.SELECT MATNR MTART MAKTX INTO (t_matnr, t_mtart, maktx)FROM MARDWHERE MATNR = ‘3520421700’.<Statements>.ENDSELECT.(从MARD中抓取料号=3520421700的料号、类型和描述,放在变量t_matnr, t_mtart, maktx中)。
SAPABAP入门教程参考手册
WebDynpro报表开发方法
01
02
03
04
05
WebDynpro概 述
WebDynpro使 用…
WebDynpro开 发…
WebDynpro高 级…
WebDynpro优 化…
了解WebDynpro的基本概 念、架构和组件。
掌握WebDynpro适用的业 务场景和报表类型。
学习WebDynpro报表的开 发流程,包括创建 WebDynpro组件、定义数 据源、设计界面、实现业务 逻辑等。
文件定位与指针
可以使用文件指针在文件中进行定位和操作。ABAP 提供 了 SEEK 和 TELL 等语句用于文件指针的定位和获取当前 位置。
03
SAPABAP开发环境搭建
安装与配置SAP GUI
下载与安装SAP GUI
01
从SAP官方网站下载最新。
配置连接参数
Web应用开发
SAPABAP支持Web应用开发,可以 通过Web Dynpro等技术实现Web 应用的开发和部署。
02
SAPABAP基础知识
数据类型与变量
03
数据类型
变量声明
变量赋值
SAP ABAP 中有多种数据类型,包括基本 数据类型(如 C、N、D、T 等)、结构数 据类型和引用数据类型等。
后台任务调度
使用SAP系统的任务调度功能,可以定时启动或周期性执行后台任务。可以根据业务需求设置任务的执行频率和时间窗口。
错误处理和日志记录 在批处理程序中添加错误处理和日志记录逻辑,以便在任务执行过程中出现问题时能够及时发现并进行 排查。可以将错误信息记录到日志文件中,方便后续分析和处理。
07
调试与性能优化技巧
SAP ABAP基础语法培训教程珍藏版 ppt课件
类别组织R/3对象的浏览及维护
▪ 程序编辑器:ABAP Editor,编辑ABAP程
序代码
▪ 数据建模器:Data modeler,业务数据建
模工具
▪ 数据字典:ABAP Dictionary,定义系统数
据类型及数据库对象
▪ 简单报表创建器:ABAP Query
事务码SE38
2020/9/1
21
SAP ABAP基础语法培训教程珍藏 版
▪ ABAP advanced business application programming 是“高级商业应用编程”的缩写
▪ “Hello World”程序 ▪ 系统程序实例:ABAPDOCU、DWDM
2020/9/1
22
恢复初始状态不指向任何数据对象2020102068数值运算算术预算语句运算数学表达式语句关键字语句加法2020102069数值运算算术预算原则运算符号及括号都是abap关键字前后都需要有空格使用p类型进行计算时程序属性fixedpointedarithmetic没有选中的话运算时会被当作整数类型进行处理两个结构体同名字段也可以整体进行算术运算语句为addcorresponding前缀和运算关键字一样2020102070数值运算任意类型参数的数学函数函数名称说明abs返回输入参数的绝对值sign返回输入参数符号正数返回10返回0负数返回1trunc返回输入参数的整数部分frac返回输入参数的小数部分ceil返回不小于输入参数的最小整数值floor返回不大于输入参数的最大整数值2020102071数值运算浮点数类型的数学函数函数名称说明cossintan三角函数acosasinatan反三角函数coshsinhtanh双曲函数exp底数为e27182818285的幂函数loglog10底数为e10的对数sqrt平方根2020102072数值运算时间日期运算系统将日期时间先转换为数值类型根据这两种特殊的类型进行合理的增减如下所示data
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培训手册_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命名程序在“程序”字段输入创建的程序名称,必须遵守程序命名规则。
SAPABAP基础语法培训教程
SAPABAP基础语法培训教程SAPABAP语言是用于在SAP系统中开发和定制应用程序的编程语言。
对于想要了解和掌握ABAP语言的人来说,基础语法是必不可少的。
本教程将介绍ABAP语言的基础语法,并提供一些实例和注释来帮助读者更好地理解和掌握ABAP编程。
1.ABAP编程环境在开始编写ABAP程序之前,需要在SAP系统中设置ABAP开发环境。
可以使用SAP GUI(图形用户界面)或ABAP开发工具(比如Eclipse)来进行ABAP编程。
2.第一个ABAP程序ABAP程序通常以“REPORT”关键字开头,后跟一个程序名称。
然后是“BEGINOFREPORT”(BEGIN...END)语句和程序代码。
以下是一个简单的例子:REPORTZ_MY_FIRST_PROGRAM.BEGINOFREPORT.WRITE: 'Hello, world!'.ENDOFREPORT.在这个程序中,第一行指定了程序名称为“Z_MY_FIRST_PROGRAM”。
然后使用“BEGIN OF REPORT”和“END OF REPORT”来定义程序范围。
在范围内,使用WRITE语句打印“Hello, world!”。
3.变量和数据类型在ABAP中,可以使用关键字“DATA”来声明变量。
以下是一些常见的数据类型:-STRING:字符串-CHAR:字符-INT:整数-DECIMALS:小数-DATE:日期-TIME:时间声明变量的语法如下:DATA var_name TYPE data_type.以下是一个声明变量并赋值的例子:DATA lv_name TYPE STRING.lv_name = 'John'.在这个例子中,我们声明了一个名为“lv_name”的字符串类型变量,并将其赋值为“John”。
4.条件语句ABAP提供了一些条件控制语句,比如IF、CASE和LOOP。
以下是一个使用IF语句的例子:DATA lv_age TYPE INT.WRITE: 'You are an adult.'.ELSE.WRITE: 'You are a minor.'.ENDIF.在这个例子中,我们声明一个名为“lv_age”的整数类型变量,并将其赋值为25、然后使用IF语句检查年龄是否大于等于18,如果是,则打印“You are an adult.”,否则打印“You are a minor.”。
2024版SAP系统培训教材
1990年代,SAP R/3系统问世,采用 客户端/服务器架构,支持多语言、 多货币、多税制等功能
2024/1/30
1980年代,SAP R/2系统推出,为企 业提供全面的业务流程管理解决方案
2000年代至今,SAP系统不断升级和 扩展,包括SAP ERP、SAP S/4HANA等新产品线,以及云计算、 大数据、人工智能等新技术应用
2024/1/30
利润中心会计
实现利润中心的定义、收入确认、费 用分摊等功能,反映企业各利润中心 的盈利状况。
产品成本核算
支持标准成本法、实际成本法等多种 成本核算方法,实现产品成本的准确 核算和分析。
14
04
SAP系统供应链管理模块
2024/1/30
15
供应链管理模块概述
供应链管理模块是SAP系统中的 重要组成部分,涵盖了从采购到
2024/1/30
19
05
SAP系统人力资源管理模块
2024/1/30
20
人力资源管理模块概述
SAP系统人力资源管理模块是企业管 理人力资源信息的核心工具,涵盖了 员工信息管理、组织结构管理、时间 管理、薪酬管理等多个方面。
该模块通过集成化的数据管理和流程优 化,提高了企业人力资源管理的效率和 准确性,为企业提供了全面的人力资源 解决方案。
SAP系统培训教材
2024/1/30
1
contents
目录
2024/1/30
• SAP系统概述 • SAP系统基础操作 • SAP系统财务管理模块 • SAP系统供应链管理模块 • SAP系统人力资源管理模块 • SAP系统实施与维护
2
ABAP_培训教程
ABAP_培训教程ABAP 培训教程ABAP(Advanced Business Application Programming),即高级业务应用程序编程,是一种用于在 SAP 系统中进行开发的编程语言。
如果你对 ABAP 编程感兴趣,或者想要在 SAP 领域深入发展,那么参加ABAP 培训是一个不错的选择。
接下来,就让我们一起走进 ABAP 培训的世界。
一、ABAP 基础在 ABAP 培训的初始阶段,您将接触到 ABAP 的基础知识。
这包括对 ABAP 语言的语法、数据类型、变量和常量的理解。
语法是编程的规则,就像我们日常交流中的语言规则一样。
ABAP 有其特定的语法结构,例如语句的书写方式、关键字的使用等。
数据类型则决定了数据的存储方式和可以进行的操作。
比如整数型、字符型、浮点型等。
变量就像是一个容器,用来存放不同类型的数据,而常量则是固定不变的值。
掌握这些基础知识是后续学习的基石,只有在这个基础上,才能搭建起更复杂的程序结构。
二、数据处理数据处理是 ABAP 编程中的重要环节。
培训中会涵盖数据的读取、写入、修改和筛选等操作。
读取数据通常是从数据库表中获取所需信息。
这需要了解如何使用SQL 语句在 ABAP 中与数据库进行交互。
写入和修改数据则要确保数据的准确性和完整性。
数据筛选则是根据特定的条件从大量数据中提取出有用的部分。
这需要掌握条件判断语句,如 IF 语句、CASE 语句等,以便根据不同的情况对数据进行处理。
三、程序结构在 ABAP 培训中,您还将学习不同的程序结构,如顺序结构、循环结构和分支结构。
顺序结构是最简单的,按照代码的书写顺序依次执行。
循环结构则用于重复执行一段代码,比如 FOR 循环、WHILE 循环等。
分支结构可以根据不同的条件选择执行不同的代码块,让程序更加灵活和智能。
合理运用这些程序结构,可以使程序的逻辑更加清晰,提高程序的效率和可读性。
四、函数和子程序函数和子程序是 ABAP 中实现代码复用的重要手段。
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报表。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第七章转到列表过程概览如果经常想从您的事务中生成一个列表。
可使用下面两种方法。
内容使用LEAVE TO LIST-PROCESSING .................................................................................................. 1在列表模式中使用GUI 状态................................................................................................................ 2返回对话模式........................................................................................................................................... 2提交一个独立的报告使用SUBMIT 语句直接从事务中启动一个独立的报表。
SUBMIT 语句的用法在提交报表(页Error! Not a valid link.) 中详细说明。
从模块存储中使用LEAVE TO LIST-PROCESSING 生成列表。
LEA VE TO LIST-PROCESSING 语句是从模块存储中生成列表时所使用的语句。
该语句允许您在对话程序中从对话模式切换到列表模式。
可在模块存储中对所需的列表处理逻辑进行编码。
当运行LEA VE TO LIST-PROCESSING 语句时,模块存储仍旧保持执行的控制权。
事务的数据区域对报表处理编码来说完全可用,因此没必要来回传送参数。
当您进入列表模式时,可以使用交互式报表可用的所有ABAP/4 工具来生成报表。
当您想定制字段帮助或可能取值的显示时,这对PROCESS ON V ALUE-REQUEST 或PROCESS ON HELP-REQUEST过程尤其有用。
有关信息参见下列资料:使用LEAVE TO LIST-PROCESSING (页1)在列表模式中使用GUI 状态(页2)返回对话模式(页2)关于如何进入列表模式的具体示例,参见事务TZ70(在同系统一起发表的开发类SDWA 中)和本章中的讨论。
事务示例:转到列表模式(页3)使用LEAVE TO LIST-PROCESSING要使用LEA VE TO LIST-PROCESSING,请把该语句放在开始列表模式处理的代码中。
该语句要做两件事:切换到列表模式处理从此处开始,可以编码发布和控制报表所需的报表语句。
所有标准的同报表有关的事件和特征都可用:AT LINE-SELECTION、功能键、基本的详细列表层、窗口等等。
把标准列表输出设置为当前屏幕的“下一屏”系统提示标准列表输出应当在当前屏幕显示之后。
根据应用程序需要,可以让两者都显示,或者禁止当前屏幕显示而替换为列表输出。
由清除器封装所有单个子程序中的报表代码是很普遍的事。
事务TZ70 的示例如下:**** ABAP/4 模块和格式:****MODULE PREPARE_LIST OUTPUT.LEAVE TO LIST-PROCESSING AND RETURN TO SCREEN 0.PERFORM EDIT_LIST.LEAVE SCREEN.ENDMODULE.FORM EDIT_LIST.SET PF-STATUS 'LIST'.SET TITLEBAR 'LST' WITH SFLIGHT-CONNID SFLIGHT-CARRID.NEW-PAGE LINE-SIZE 72.SELECT * FROM SFLIGHT WHERE C ARRID = SFLIGHT-CARRIDAND CONNID = SFLIGHT-CONNID.WRITE: / SY-VLINE NO-GAP,SFLIGHT-FLDATE COLOR 4 INTENSIFIED OFF NO-GAP,SY-VLINE NO-GAP,SFLIGHT-PRICE COLOR 2 INTENSIFIED OFF NO-GAP,.......ENDFORM.列表模式在对话模式中如何工作运行时,模块存储保持执行控制。
可以用PBO 或PAI 为当前屏幕编制列表模式逻辑代码。
选择哪一个取决于您希望列表在当前屏幕之后输出,还是取代当前屏幕。
在两种情况下,当前屏幕终止时,列表都会出现。
(当控制遇到LEAVE SCREEN 语句或者到PAI 结尾时屏幕处理都会终止。
)要在显示当前屏幕之后显示列表输出:把LEAVE TO LIST-PROCESSING 逻辑放在PAI 的结尾。
以这种方式编码,程序就会在当前PAI 处理中响应列表输出请求。
从列表显示中返回时,系统就会从PBO的头部开始,重复当前屏幕过程。
要显示列表输出而不显示当前屏幕:在PBO 中编制LEAVE TO LIST-PROCESSING 逻辑代码,后面加上LEAVESCREEN。
这样就告诉系统显示列表而不显示当前屏幕。
当前屏幕的PAI 过程将不执行。
详细信息,参见:后台处理屏幕(页Error! Not a valid link.)事务示例:转到列表模式(页3)在列表模式中使用GUI 状态可以使用列表的标准GUI 状态,或者定义自己的界面。
如果使用标准列表状态,系统将自动替您执行许多GUI 功能。
例如:两个返回功能(BACK, CANCEL)“打印”和“搜索”功能标准滚动键(P+, P++, P-, P--)您不需要在自己的代码中安排这些功能。
如果要定义自己的状态,您必须做两件事。
首先,在GUI 状态中显式地激活要求的功能(通过在相应的按钮和功能码中输入它们的功能码)。
其次,在ABAP/4 模块中,系统没有自动处理编码逻辑的功能。
包括F21-F24 键,尽管P-、P-、P+ 和P++ 功能已自动定义。
事务示例TZ70定义了自己的状态(命名为LIST)。
因为该状态有“对话框中的列表”类型,所以只能定义按钮(不需要菜单条)。
因为系统自己执行了退出功能,所以“返回”和“取消”功能(BACK und RW)自动显示为按钮。
关于交互式报表技术的信息,参见交互式列表(页Error! Not a valid link.) 。
返回对话模式有两种方法可以从列表模式返回到对话模式。
在这两种情况下,程序返回的地方都默认为进行列表处理的屏幕。
(包含LEAVE TO LIST-PROCESSING 语句的屏幕。
)如果想返回其它屏幕,参见返回其它屏幕(页3) 。
您的程序将继续在列表模式下运行,除非遇到下列情况:系统在代码中遇到一条LEAVE LIST-PROCESSING 语句。
LEAVE LIST-PROCESSING 语句将控制返回到对话屏幕。
返回时,系统在PBO 的开始处重新启动过程。
用户从报表的基本列表层中请求“返回”或“取消”。
如果用户使用“返回”或“取消”图标退出列表,您不必安排显式的LEAVELIST-PROCESSING 语句。
“返回”或“取消”是系统自动运行的标准返回功能。
当用户按下了其中的一个,系统就返回到含有LEAVE TO LIST-PROCESSING 的屏幕中。
这里系统重新启动PBO 处理屏幕。
(记住,“退出”功能不同于“返回”或“取消”,它不是由系统运行的。
如果您想要提供“退出”功能,就必须自己实现。
在这种情况下,请使用一条LEAVELIST-PROCESSING 语句来实现。
)事务示例TZ70 使用第二种方法从列表模式中返回。
因为系统自动提供了“返回”和“取消”功能,当事务从屏幕200 进入列表模式时,并没有编制退出功能代码。
而对于没有列表过程的屏幕100 来说,程序必须执行自己的退出功能(“返回”、“退出”和“取消”):MODULE EXIT_0100 INPUT.CASE OK_CODE.WHEN 'CANC'.CLEAR OK_CODE.SET SCREEN 0. LEAVE SCREEN.WHEN 'EXIT'.CLEAR OK_CODE.SET SCREEN 0. LEAVE SCREEN.WHEN 'BACK'.CLEAR OK_CODE.SET SCREEN 0. LEAVE SCREEN.ENDCASE.ENDMODULE.返回其它屏幕当返回对话模式时,程序还能重新指定用户路径以便到达与启动列表屏幕不同的屏幕。
为此,请在首次转到列表模式时使用关键字AND RETURN TO SCREEN:LEAVE TO LIST-PROCESSING AND RETURN TO SCREEN 100.使用该语句,无论程序何时返回到对话模式(因为用户从列表中退出,或执行了命令LEA VE LIST-PROCESSING),系统都恢复屏幕请求的PBO 过程(这里是屏幕100)。
事务TZ70使用模块PREPARE_LIST 中的AND RETURN TO SCREEN 0:** PROCESSING FOR SCREEN 200**MODULE PREPARE_LIST OUTPUT.LEAVE TO LIST-PROCESSING AND RETURN TO SCREEN 0.PERFORM EDIT_LIST.LEAVE SCREEN.ENDMODULE.这里,返回到屏幕0将关闭CALL 模式,该模式是CALL SCREEN 触发屏幕200 时启动的。
系统将控制返回到先前最后调用模式的屏幕(那就是,屏幕100 的PBO)事务示例:转到列表模式事务TZ70 介绍了在事务内部进行列表处理的一种方法:1. 屏幕100 PAI:CALL SCREEN 200.2. 屏幕200 PBO:转到列表处理,生成列表并离开屏幕200-屏幕200 无显示(由LEAVE SCREEN 命令禁止)3. 屏幕200 PAI:没有需要的编码过程(由LEAVE SCREEN 禁止)-进行列表显示输出:-返回到屏幕100 的PBO(因为用户按了“取消”或“结束”)4. 屏幕100 PBO:重新执行PBO...屏幕流逻辑两种屏幕流逻辑的相关部分是:*---------------------------------------------------------------** Screen 100: Flow Logic (PAI only) **&--------------------------------------------------------------*PROCESS AFTER INPUT.MODULE EXIT_0100 AT EXIT-COMMAND.MODULE USER_COMMAND_0100.*---------------------------------------------------------------** Screen 200: Flow Logic **&--------------------------------------------------------------*PROCESS BEFORE OUTPUT.MODULE PREPARE_LIST.*PROCESS AFTER INPUT.ABAP/4 代码屏幕100 的主PAI 模块调用屏幕200,该屏幕将作为单独的对话框出现(弹出):*&---------------------------------------------------------------**& Module USER_COMMAND_0100 INPUT*&---------------------------------------------------------------*MODULE USER_COMMAND_0100 INPUT.CASE OK_CODE.WHEN SPACE.<...Select flight info for the requested flight..>CLEAR OK_CODE.CALL SCREEN 200 STARTING AT 10 5 ENDING AT 80 15.ENDCASE.ENDMODULE.屏幕200 的PBO 模块将设置列表模式分支:*&---------------------------------------------------------------* *& Module PREPARE_LIST OUTPUT*&---------------------------------------------------------------* MODULE PREPARE_LIST OUTPUT.LEAVE TO LIST-PROCESSING AND RETURN TO SCREEN 0.PERFORM EDIT_LIST.LEAVE SCREEN.ENDMODULE.产生列表的子例程包含有规律的报表过程(部分显示):*&---------------------------------------------------------------* *& Form EDIT_LIST*&---------------------------------------------------------------* FORM EDIT_LIST.SET PF-STATUS 'LIST'.SET TITLEBAR 'LST' WITH SFLIGHT-CONNID SFLIGHT-CARRID.NEW-PAGE LINE-SIZE 72.SELECT * FROM SFLIGHT WHERE C ARRID = SFLIGHT-CARRIDAND CONNID = SFLIGHT-CONNID.WRITE: / SY-VLINE NO-GAP,SFLIGHT-FLDATE COLOR 4 INTENSIFIED OFF NO-GAP,* .......ENDSELECT.IF SY-SUBRC = 0. ULINE. ENDIF.ENDFORM.列表模式事件TOP_OF_PAGE 是列表显示编制的:TOP-OF-PAGE.ULINE.WRITE: / SY-VLINE NO-GAP,......。