SAP ABAP程序设计基础教程第4章ABAP语言基本语法
abap基本语法汇总
abap基本语法汇总abap 基本语法汇总数据类型和对象在ABAP中,可以使用与标准数据声明相似的语法处理数据类型,而与数据对象无关。
在程序中必须声明要使用的全部数据对象。
声明过程中,必须给数据对象分配属性,其中最重要的属性就是数据类型。
1.1基本数据类型对算术运算的非整型结果(如分数)进行四舍五入,而不是截断。
类型P数据允许在小数点后有数字。
有效大小可以是从1到16字节的任何值。
将两个十进制数字压缩到一个字节,而最后一个字节包含一个数字和符号。
在小数点后最多允许14个数字。
1.2系统定义的数据对象abap 基本语法汇总1.3确定数据对象的属性如果要查明数据对象的数据类型,或者要在程序的运行期间使用其属性,可使用DESCRIBE语句。
语法如下:DESCRIBEELD [LENGTHS〉] [TYPE [COMPONENTS^][OUTPUT-LENGTH ] [DECIMALS ][EDIT MASK ].将由语句的参数指定的数据对象的属性写入参数后的变量。
DESCRIBE FIELDS语句具有下列参数:1.3.1确定字段长度要确定数据对象的长度,利用DESCRIBFIELD语句使用LENGTH 参数,如下所示:DESCRIBE FIELD LENGTH .系统读取字段<f>的长度,并将值写入字段<1>abap 基本语法汇总1.3.2 确定数据类型要确定字段的数据类型,利用DESCRIBE FIELD语句使用TYPE 参数,如下所示:DESCRIBE FIELD TYPE [COMPONENTS ].系统读取字段的数据类型,然后将值写入字段。
除返回预定义数据类型C、D、F、I 、N、P、T 和X 外,该语句还返回s 对于带前导符号的两字节整型b 对于无前导符号的一字节整型h 对于内表C 对于组件中没有嵌套结构的结构C 对于组件中至少有一个嵌套结构的结构1.3.3 确定输出长度要确定字段的输出长度,利用DESCRIBE FIELD语句使用OUTPUT-LENGTH数,如下所示:DESCRIBE FIELD OUTPUT-LENGTH .系统读取字段的输出长度,并将值写入字段<0>。
abap语法
abap语法ABAP1 了解ABAP2 ABAP语法概述3 ABAP语言的数据类型4 ABAP的语法格式5 结构类型和结构体6 内表7 数据库操作ABAP(Advanced business application program),是一种高级企业应用编程语言,它支持封装性和继承性,封装性是面向对象的基础,而继承性是建立在封装性基础上的重要特性。
它适合生成报表,支持对数据库的操作,如:Sqlserver,Oracle,DB2等主流数据库系统。
语法概述ABAP基本语法特点由各自独立的语句构成。
每个语句的第一个单词必须是ABAP关键字。
单词之间至少要用一个空格分隔。
每个语句结束必须要用句号。
一个语句可以跨多行,只要不遇到句号,就认为是一个延续的语句。
可以把多个语句放在一行。
ABAP不区分大小写,关键字和用户操作数都一样,为了便于阅读,一般把关键字大写,而操作数小写。
如果连续多行的第一个关键字相同,可以使用链语句方式减少输入 data: id type I.data: name type c.可写为:data: id type I ,name type c.注释:注释行由第一列的星号(*)开头,并且必须写在第一列,前面不能有空格。
在行末的注释用双引号(”)作为前导。
data: id type i. “ 定义一个对象num数据类型为IABAP的命名规则使用至少1个但不超过8个字符。
不要使用下列字符:句点(.);逗号(,);空格( );括号‘(’‘)’;单引号(‘);双引号(“);等号(=);星号(*);百分号(%);ABAP数据类型(八种基本数据类型)D :日期类型,格式为YYYYMMDD,长度为8T :时间类型,格式为HHMMSS,长度为6I :整数类型,默认长度为4,初始值为0F :浮点类型,默认长度为8,初始值为0,常用于计算C :字符串类型,定义变量时指定字符个数N :数字字符串类型,定义变量时指定数值字符个数X :字节序列类型,定义变量时指定字节数P(压缩号) :允许的长度为1 到16 个字节,系统会指定默认值8 个字节(也就是15 位数字)和0 个小数位常用:大小,长度,重量,货币等单位的场合.定义方法:[f1] type I.[f2] type p decimals [num].[f3] type f.如:DATA number(10) type p value '9.876543210' decimals 9.输出:9.876543210如果decimals 8 输出: 9.87654321ABAP运算数值运算(在ABAP中数学表达式可以任意多层嵌套)算术运算二元操作符包括:–+ :加法– - :减法–* :乘法–/ :除法–** :乘方–DIV :整除忽略余数–MOD :取模需要注意,圆括号和操作符都是关键字,需要跟操作数之间至少用一个空格分开。
资料_ABAP4基本语法介绍
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叙述则是用在指定资料型态。
SAP ABAP基本语法介绍
19
内表类型 ➢标准表
系统内建维护了表的行号(即索引),索引和键访问都是允许的。 当经常用索引访问表的时候就选择标准表。
➢排序表
数据记录在表内自动以升序进行排列,索引是系统自动维护的,索 引和键访问都可以用。如果经常使用键来访 问数据,或者希望数据 能够自动排序时,就用排序表。
往内表的最后追加一条记录,只能用于标准表
➢INSERT
向内表插入一条记录
➢READ
把表的指定行拷贝到结构中
➢LOOP
遍历内表
➢MODIFY
使用结构的内容重写表的指定行
➢DELETE
删除表的指定行
➢COLLECT
把结构中的内容累加到内表具有相同键的行上,只有非键字段才执 行累加,并且只有非键字段 都是数值的时候才能执行这个语句
➢CLEAR 语句根据类型清除数据对象,恢复成默认值。
15
基本ABAP语句:运算
➢ABAP 程序中,数学表达式可以进行任意多层嵌套
( 20 + 10) * 10 + 10 / 2
➢二元操作符包括:
+ :加法 - :减法 * :乘法 / :除法 ** :乘方 DIV :整除忽略余数 MOD(%) :取模
包含了接口。类和接口池 (程序类型为 J) 接口都在类制作器中管理,事务码 SE24。
➢类池 (程序类型为 K)
包含了类。类和接口都在类制作器中管理,事务码 SE24
7
数据类型和数据对象
➢形式上的变量描述叫做数据类型,由数据类型具体定义 的变量叫做数据对象 ➢数据类型
标准数据类型(预定义数据类型)、本地数据类型、全 局数据类型
SAP ABAP基本语法概述
SAP ABAP基本语法概述目录1ABAP基础 (3)1.1创建简单的ABAP程序 (3)1.2ABAP程序帮助 (7)1.3ABAP语法和程序格式 (8)1.4输出数据到屏幕 (11)1.5赋值 (13)1.6运算符及函数 (17)1.7流控制 (18)1.8注释结构 (21)2内表 (21)2.1内表索引 (21)2.2访问内表 (21)2.3内表的声明 (23)2.4内表的使用 (25)3SQL指令 (33)3.1SELECT指令 (33)3.2INSERT指令 (36)3.3UPDATE指令 (37)3.4MODIFY指令 (37)3.5DELETE指令 (37)3.6数据库指针 (38)4数据库 (39)4.1数据库数据的选取、更新、删除、插入 (39)4.2数据库的事务 (40)4.3SE16检查表的内容 (40)4.4SE11定义表结构 (43)4.5检查数据表是否锁定 (46)1 ABAP基础1.1 创建简单的ABAP程序在上述界面中输入SE38键入回车进入ABAP编辑器界面,如图1-1所示。
功能操作区ABAP程序名选项区编辑、查看、创建图1-1创建程序名称时请遵守这些命名约定:报表程序(以列表格式输出数据分析):Yaxxxxxx 或Zaxxxxxx。
用应用程序区的分类字母替换a。
用任何有效字符替换x。
注意SAP报表程序遵守相似的命名约定:Raxxxxxx。
任何其它ABAP/4 程序(培训程序或事务程序): SAPMYxxx 或SAPMZxxx。
用有效字符替换x。
注意标准SAPABAP/4 程序遵守相似的命名约定:SAPMaxxx,其中a代表某应用程序区。
输入程序名,点击创建,则进入以下界面,如图1-2所示。
图1-21)Title:程序描述或功能说明,Report时为显示的标题。
2)Type: Execute mode: 1(Stand-along Program如Reports)、I(Include Program)、M(Module Pool)、F(Function Group)、S(Subroutine Pool)。
ABAP语法完整版
ABAP 语法完整版SAP ABAP / 4 基础知识学习数据类型C:字符串D :日期型格式为YYYYMMDD 例: '1999/12/03'F : 浮点数长度为8I :整数N :数值组成的字符串如:011,'302'P : PACKED 数用于小数点数值如: 12.00542T : 时间格式为:HHMMSS 如: '14:03:00'X : 16 进制数如: '1A03'*-------------------------------------------------------------------------------------* 变量声明DATA <F> [<Length>] <type> [<value>][decimals]<F> 变量名称<length><type> 变量类型及长度<value> 初值<decimals> 小数位数exp:DATA : COUNTER TYPE P DECIMALS 3.NAME(10) TYPE C VALUE 'DELTA'.S_DATE TYPE D VALUE '19991203'.exp:DATA : BEGIN OF PERSON,NAME(10) TYPE C,AGE TYPE I,WEIGHT TYPE DECIMALS 2, END OF PERSON.另外 , 有关 DATA 声明的指令还有: CONSTANTS( 声明常数 ) 、STATICS( 临时变量声明).exp:CONSTANTS PI TYPE P DECIMALS 5 VALUE '3.14159'.STATICS 关键字声明的变量仅在目前的程序中使用, 结束后会自动释放语法 :STATICS <c> [<length>] <type> [<value>] [<decimals>]系统专用变量说明系统内部专门创建了SYST 这个 STRUCTURE, 里面的栏位存放系统变量, 常用的系统变量有:SY-SUBRC: 系统执行某指令后 , 表示执行成功与否的变量,'0' 表示成功SY-UNAME: 当前使用者登入SAP 的 USERNAME;SY-DATUM: 当前系统日期 ;SY-UZEIT: 当前系统时间 ;SY-TCODE: 当前执行程序的Transaction code SY-INDEX:当前 LOOP 循环过的次数SY-TABIX: 当前处理的是 internaltable的第几笔SY-TMAXL: Internal table 的总笔数SY-SROWS:屏幕总行数 ;SY-SCOLS:屏幕总列数 ;SY-MANDT: CLIENT NUMBERSY-VLINE: 画竖线SY-ULINE: 画横线TYPE 关键字用来指定资料型态或声明自定资料型态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基础语法培训教程(珍藏版)
2020/12/9
7
S&D 销售订单
SAP 业务流程
PP
MM
主生产计划
物料需求计划
生产订单
采购订单
运输 开票
生产执行
库存管理 发票校验
2020/12/9
CO/FI 成本 财务
8
ERP实施步骤
▪ 总体规划,分步实施 ▪ 教育和培训 ▪ 原形测试 ▪ 数据准备 ▪ 系统开发 ▪ 模拟运行 ▪ 切换
2020/12/9
▪ SAP:System, Application and Products in Data Processing,即数据处理的系统、应用 和产品
2020/12/9
3
SAP R/3——一体化ERP系统
后勤系统 人力资源
SD
销售与分销
MM
物料管理
PP
生产计划
FI
财务会计
CO
财务控制
TR
司库
QM
质量管理
客户/服务器
PS
项目管理
PM
工厂维护
HR
人事管理
WF
工作流程管理
IS
行业解决方案
财务系统
客户及工业部门的 特殊要求
2020/12/9
4
SAP新的业务模块和组件
▪ CRM顾客关系管理 ▪ SCM供应链管理 ▪ BW商业信息仓库 ▪ APO高级计划与优化(Advanced Planner and
Optimizer)
2020/12/9
35
ABAP处理块调用范例——运行结果
2020/12/9
36
程序类型的设定
▪ 程序类型包括应用程序类型和其它程序类型,在
ABAP4语法
©2008 HAND Enterprise Solutions Co., Ltd. Confidential Not For Public.
9 COLLECT LINE
COLLECT 指令也是将元素加入 指令也是将元素加入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. 此时, 中放的是2笔数据 此时 internal table中放的是 笔数据 分别为 中放的是 笔数据, 分别为: ITAB-COL1 ITAB-COL2 ‘ABC’ 90 ‘XYZ’ 20
©2008 HAND Enterprise Solutions Co., Ltd. Confidential Not For Public.
5
3 .系统专用变量说明 系统专用变量说明
1 SY-SUBRC : 系统执行某指令后 表示执行成功与否的变量 表示成 系统执行某指令后,表示执行成功与否的变量 表示执行成功与否的变量,’0’
SY-TCODE: 当前执行程序的T_ code 当前执行程序的
SAPABAP基础编程
输出数据到屏幕
ULINE [AT [/][<pos>][(<len>)]].
如果没有格式规范,系统则开始新的一行,并用水平线填充该行。 否则,只按指定输出水平线
Camelot Information Systems Co.,Ltd. 柯莱特信息系统有限公司
Write语句
语法: Write 资料项 数据项可以是常数或变量, 如:
TABLES语句
用来声明Table Work Area的数据, 对映至 ABAP/4 资料文件 (Dictionary Object), 由SQL 指令加载所需数据 语法: TABLES <dbtab>
Camelot Information Systems Co.,Ltd. 柯莱特信息系统有限公司
例: DATA: COUNTER TYPE P VALUE 1,
FLAG
TYPE C VALUE IS INITIAL,
WEIGHT TYPE P DECIMALS 2 VALUE ‘1.25’.
Camelot Information Systems Co.,Ltd. 柯莱特信息系统有限公司
SAP ABAP 基本语法
EXPONENT <e>
F(浮点数) exponent 的值
ROUND <r>
四舍五入至小数位数下 r 位
CURRENCY <c>
币别显示
Camelot Information Systems Co.,Ltd. 柯莱特信息系统有限公司
Write语句
产生空白列
产生 n 个空白列 语法: SKIP [<n>]
用WRITE语句画成下列样子
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 )一起使用。
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的ABAP4语言中文培训教材第一部分第四章 将数据输出 到屏幕
第四章将数据输出到屏幕概览内容WRITE 语句....................................................................................................................... 1在屏幕上定位WRITE 输出 ............................................................................................. 3格式化选项 ......................................................................................................................... 5在屏幕上输出符号和图标................................................................................................ 7输出屏幕上的线和空行 ................................................................................................ 8垂直线 ........................................................................................................................... 8空行............................................................................................................................... 8将字段内容作为复选框输出............................................................................................ 9通过语句结构使用WRITE ............................................................................................... 9本节说明如何在屏幕上创建简单输出列表。
ABAP基本语法
标准文档ABAP基本语法目录1.表声明 (1)2.定义变量 (1)3.常用算术操作符: (1)4.常用比较操作: (1)5.赋值语句 (2)6.IF语句 (2)7.CASE语句 (2)8.DO语句 (2)9.WHILE语句 (2)10.从数据库中取数据集 (2)11.取出单行记录 (2)12.WRITE语句 (3)13.ULINE语句 (3)14.SKIP语句 (3)15.定义常量 (3)16.定义结构 (3)17.TYPES语句 (4)18.LIKE语句 (4)19.输入参数 (5)20.分块语句 (5)21.定义内表 (5)22.往内表中添加记录 (6)23.用LOOP读取内表数据 (6)24.用READ读取内表数据 (6)25.把数据库的记录读入内表 (6)26.CLEAR清空表头和表记录 (6)27.DELETE删除内表记录 (6)28.REFRESH删除内表记录 (6)29.FREE删除内表记录 (7)30.在内表中插入记录 (7)31.修改内表记录 (7)32.对内表进行排序 (7)33.内表的控制语句 (7)34.循环跳转语句 (7)35.常用系统变量 (8)36.子程序的定义 (8)37.子程序的调用 (8)38.子程序的参数传递 (8)39.常用事件 (9)40.跳出事件的方法 (10)ABAP/4:Advanced Business Application Programming1.表声明Tables: 表名[,表名]. 声明多个表时可用逗号分隔当你声明了一个数据表的同时,系统也同时自动生成了一个和数据表同名的结构,结构的变量集等于数据表里面的字段。
2.定义变量Data: v1[(l)] [type t] [decimals d] [value 'xxx'].v1 是变量名。
(l) 是变量的长度。
t 是数据类型。
d 是小数位。
'xxx' 是缺省值。
SAPABAP基础语法培训教程x
SAPABAP基础语法培训教程x一、教学内容1. SAP ABAP基本概念与编程环境2. ABAP基本语法与数据类型3. 流程控制语句4. 数据处理与运算符5. 函数与方法6. 面向对象编程7. 数据库操作与事务管理8. 调试与优化二、教学目标1. 掌握SAP ABAP编程语言的基本概念与语法。
2. 能够独立编写简单的ABAP程序,实现数据处理和业务逻辑。
3. 了解面向对象编程的基本原理,并能够运用到实际项目中。
三、教学难点与重点1. 教学难点:面向对象编程、数据库操作与事务管理。
2. 教学重点:ABAP基本语法、流程控制语句、数据处理与运算符。
四、教具与学具准备1. 教具:投影仪、计算机、教学PPT。
2. 学具:计算机、编程环境(SE80)、学习资料。
五、教学过程1. 实践情景引入:以一个简单的ABAP程序为例,展示程序运行过程,引发学生兴趣。
2. 讲解ABAP基本语法与数据类型:介绍基本数据类型、变量、常量等。
3. 流程控制语句:讲解条件语句、循环语句等流程控制方法。
4. 数据处理与运算符:讲解算术运算符、关系运算符、逻辑运算符等。
5. 函数与方法:介绍内建函数、自定义函数和方法的定义与调用。
6. 面向对象编程:讲解类与对象的概念,演示如何创建类和对象,并进行实例化。
7. 数据库操作与事务管理:介绍数据库连接、SQL语句、事务处理等。
8. 调试与优化:讲解调试工具的使用,以及代码优化技巧。
六、板书设计1. ABAP基本语法与数据类型:数据类型变量与常量2. 流程控制语句:条件语句循环语句3. 数据处理与运算符:算术运算符关系运算符逻辑运算符4. 函数与方法:内建函数自定义函数和方法5. 面向对象编程:类与对象实例化与方法调用6. 数据库操作与事务管理:数据库连接SQL语句事务处理七、作业设计输出“Hello, World!”输入一个整数,输出该整数的平方答案:WRITE: / 'Hello, World!' .READ: / input.IF input EQ 'q'.EXIT.ENDIF.WRITE: / input input.属性:姓名(name)、年龄(age)方法:构造函数(initialize)、输出信息(print_info)答案:CLASS Person DEFINITION.PUBLIC SECTION.DATA: name TYPE string,age TYPE i.METHODS: initializeRSING cx_root,print_info.ENDCLASS.CLASS Person IMPLEMENTATION.METHOD initialize.name = ''.age = 30.ENDMETHOD.METHOD print_info.WRITE: / '姓名:', name, ', 年龄:', age.ENDMETHOD.ENDCLASS.八、课后反思及拓展延伸1. 针对本节课的教学内容,引导学生进行课后复习,巩固所学知识。
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)的概念。
SAP的ABAP编程入门
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语法整理
1、ST05是用于在开发ABAP程序时,对应事务码取得的字段是“数据结构”而不是“透明表”的时候,通过ST05的“SQL跟踪”来获得相关“Select”的语句;一般查看“REC”列耗时比较多的“Select”语句;2、跟踪时如果有涉及到“数量”这类有对数据表进行更新或插入操作的,则直接去查Update 和Insert的SQL语句;3、在跟踪后,直接双击“对象名”列的名称,点选“表格”转到“SE11”的表字段表;4、ABAP程序开头的Tables:“数据表名”,只有在屏幕中有用到的表,才需要声明;在程序中用到的表则不需要进行在Tables内声名;5、抓SAP“文本”字段的数据,要先自定义变量,然后通过SE37的函数“FUNCTION ‟ZREAD_TEXT‟”取回文本数据;6、新建的ABAP程序,在测试运行的时候要先进行“激活”,才能测试运行;7、SE93:把ABAP写好的程序指定一个事务码执行;8、abap引号内的字符‟‟必须要是大写;9、ABAP select 里面的语句,不能像mssql有那么丰富的函数使用,需要导到内表后再对数据进行操作;10、‟EQ‟是单个数据值,‟BT‟是between区间的意思。
11、在写select inner join 里面,要注意是否需要加上销售组织的条件;on 条件1 and 销售组织条件。
12、SELECTION-SCREEN,里面有两个子项,PARAMETERS和select-options。
PARAMETERS 一般是用于必输项的屏幕参数设置,如果这个参数不是必输项的,就要用select-options。
在select ...where条件里,用PARAMETERS的条件语法是“数据字段= 屏幕字段”;而select-options的条件语法是“数据字段in 屏幕字段”。
13、在where判断一个日期型数据是空,不是DEAKT = ‟‟,也不是DEAKT is initial,而应该写成DEAKT = ‟00000000‟ (8个0)。
ABAP语法讲解四(FROM语句)
FROM ClauseVariants:1. ... FROM dbtab [AS alias]2. ... FROM (dbtabname)3. ... FROM tabref1 [INNER] JOIN tabref2 ON cond4. ... FROM tabref1 LEFT [OUTER] JOIN tabref2 ON condAdditions:1. ... CLIENT SPECIFIED2. ... BYPASSING BUFFER3. ... UP TO n ROWSEffectUsed in a SELECT statement to name the source (database tables and views) from which the system is to select data.Addition 1... CLIENT SPECIFIEDEffectAutomatic client handling is suspended. This enables you to search all clients in a client-specific table. The client field is treated as a perfectly normal table field, for which you can specify conditions in the WHERE clause.The CLIENT SPECIFIED addition must come immediately after the name of the database table, or, in a JOIN, immediately after the last ON condition.ExampleTo output a list of all customers in client 003:SELECT * FROM SCUSTOM CLIENT SPECIFIED INTO WA_SCUSTOMWHERE MANDT = '003'.WRITE: / WA_SCUSTOM-ID, WA_SCUSTOM-NAME.ENDSELECT.Addition 2... BYPASSING BUFFEREffectThe data is read direct from the database, bypassing any SAP buffer there may be.ExampleTo output the address of the aircraft manufacturer Boeing:DATA: WA_SPPROD TYPE SPPROD.SELECT * FROM SPPROD INTO WA_SPPROD BYPASSING BUFFERWHERE PRODUCER = 'BOE'.WRITE: / WA_SPPROD-STREET, WA_SPPROD-NUMB, WA_SPPROD-POSTCODE, WA_SPPROD-CITY, WA_SPPROD-COUNTRY.ENDSELECT.Addition 3... UP TO n ROWSEffectThe set of results is restricted to a maximum of n rows.ExampleTo output a list of the 3 business customers with the greatest discount:SELECT * FROM SCUSTOM INTO WA_SCUSTOM UP TO 3 ROWSWHERE CUSTTYPE = 'B'ORDER BY DISCOUNT DESCENDING.WRITE: / WA_SCUSTOM-ID, WA_SCUSTOM-NAME, WA_SCUSTOM-DISCOUNT.ENDSELECT.Notes1. If you use an UP TO n ROWS addition in an ORDER-BY clause , the lines read aresorted into the correct order. The first n lines are then displayed. The system mayneed to read more than n lines from the database to be able to do this.2. If n = 0, all selected lines are displayed.3. n < 0 results in a runtime error.Variant 1... FROM dbtab [AS alias]EffectReads data from the database table or view dbtab. You specify the name dbtab directly in the program. The name must be known to the ABAP Dictionary.You can use an alternative table name alias to give column names a unique name in the SELECT, FROM, WHERE, GROUP-BY, or ORDER-BY clauses when you use more than one database table.ExampleOutputs a list of all customers:DATA WA_SCUSTOM TYPE SCUSTOM.SELECT * FROM SCUSTOM INTO WA_SCUSTOM.WRITE: / WA_SCUSTOM-ID, WA_SCUSTOM-NAME.ENDSELECT.Variant 2... FROM (dbtabname)EffectSelects the data from a database table or view. The name is specified at runtime as the contents of the field dbtabname. The database table must be recognized in the ABAP Dictionary.ExampleOutput a list of all customers:DATA TABNAME(10).DATA: BEGIN OF WA,ID LIKE SCUSTOM-ID,NAME LIKE SCUSTOM-NAME,REST(134),END OF WA.TABNAME = 'SCUSTOM'.SELECT * INTO WA FROM (TABNAME).WRITE: / WA-ID, WA-NAME.ENDSELECT.Notes1. You can only specify the database table name at runtime if you specify an INTOclause at the same time.2. You must always enter the name of the database table in uppercase characterswhen using this variant.Variant 3... FROM tabref1 [INNER] JOIN tabref2 ON condEffectSelects data from the transparent database tables or views specified in tabref1 andtabref2. tabref1 and tabref2 either have the same form as in variant 1 or are themseleves joine expressions. The key word INNER can be omitted. The database tables or views specified in tabref1 and tabref2 must be recognized in the ABAP-Dictionary.In a relational data structure, it is quite normal for data that belongs together to be split up across several tables to help standardization (see relational database). To regroup this information in a database query, you can link tables using a join command. This formulates conditions for the columns of the tables involved. An inner join contains all combinations of lines from database table tabref1 with lines from database table tabref2 that meet the condition specified in the logical condition ON cond.Inner join between table 1 and table 2 where column D sets the join condition:Table 1 Table 2|----|----|----|----| |----|----|----|----|----|| A | B | C | D | | D | E | F | G | H ||----|----|----|----| |----|----|----|----|----|| a1 | b1 | c1 | 1 | | 1 | e1 | f1 | g1 | h1 || a2 | b2 | c2 | 1 | | 3 | e2 | f2 | g2 | h2 || a3 | b3 | c3 | 2 | | 4 | e3 | f3 | g3 | h3 || a4 | b4 | c4 | 3 | |----|----|----|----|----||----|----|----|----|\ /\ /\ /\ /\/Inner Join|----|----|----|----|----|----|----|----|----|| A | B | C | D | D | E | F | G | H ||----|----|----|----|----|----|----|----|----|| a1 | b1 | c1 | 1 | 1 | e1 | f1 | g1 | h1 || a2 | b2 | c2 | 1 | 1 | e1 | f1 | g1 | h1 || a4 | b4 | c4 | 3 | 3 | e2 | f2 | g2 | h2 ||----|----|----|----|----|----|----|----|----|ExampleOutput a list of all flights from Frankfurt to New York between 10th and 20th September, which are not sold out:DATA: DATE LIKE SFLIGHT-FLDATE,CARRID LIKE SFLIGHT-CARRID,CONNID LIKE SFLIGHT-CONNID.SELECT F~CARRID F~CONNID F~FLDATEINTO (CARRID, CONNID, DATE)FROM SFLIGHT AS F INNER JOIN SPFLI AS PON F~CARRID = P~CARRID ANDF~CONNID = P~CONNIDWHERE P~CITYFROM = 'FRANKFURT'AND P~CITYTO = 'NEW YORK'AND F~FLDATE BETWEEN '19970910' AND '19970920'AND F~SEATSOCC < F~SEATSMAX.WRITE: / DATE, CARRID, CONNID.ENDSELECT.If there are columns in both tables with the same name, you must distinguish between them by prefixing the field descriptor with the table name, or using an alias.NoteIn order to determine the result of a SELECT statement where the FROM clause contains a join, the database system creates a temporary table containing the lines that meet the ON condition. The WHERE condition is then applied to the temporary table. It does not matter in an inner join whether the condition is in the ON or the WHERE clause. The following example returns the same solution as the previous one.ExampleOutput a list of all flights from Frankfurt to New York between 10th and 20th September, which are not sold out:EffectInstead of the TABLES addition, you should use the USING or CHANGING addition. When you use the TABLES addition, only tables with the table type STANDARD are allowed. The internal tables specified are passed to the FORM together with their header lines. If you use a table without a header line as a TABLES parameter, the system automatically generates a header line for it. This is only valid within the FORM. For this reason, you should not use global commands such as HIDE in the header line. For details of how to specify a type for a TABLES parameter, see specifying a type. TABLES parameters are always passed by reference.ExampleDATA: BEGIN OF X OCCURS 0.INCLUDE STRUCTURE SFLIGHT.DATA: ADDITION(8) TYPE C,END OF X....PERFORM U TABLES X....FORM U TABLES X STRUCTURE SFLIGHT.WRITE: X-FLDATE.ENDFORM.Addition 2... USING [VALUE(p1)|p1] ... [VALUE(pn)|pn]EffectDefines the formal parameters p1,...pn, which are replaced by actual parameters when the subroutine is called.You can assign a type to the formal parameters p1 ... pn (see assigning types). You can also specify the method for passing the parameter.NotePassing methods:1. USING ... p ...The parameter is passed by reference. The reference field can be changed within the subroutine. The changes apply beyond the subroutine.2. USING ... VALUE(p) ...If you use the VALUE(...) addition, you can pass the field contents to acorresponding local field. VALUE parameters behave like local fields.ExampleTYPES: BEGIN OF FLIGHT_STRUC,FLCARRID LIKE SFLIGHT-CARRID,PRICE LIKE SFLIGHT-FLDATE,END OF FLIGHT_STRUC.DATA: MY_FLIGHT TYPE FLIGHT_STRUC OCCURS 0,IBOOK1 LIKE SBOOK OCCURS 0,IBOOK2 LIKE IBOOK1 OCCURS 0,STRUC LIKE SBOOK.PERFORM DISPLAY USING MY_FLIGHT IBOOK1 IBOOK2 STRUC.FORM DISPLAY USING P_ITAB LIKE MY_FLIGHT[]P_BOOK1 LIKE IBOOK1[]P_BOOK2 LIKE IBOOK2[]P_STRU LIKE STRUC.DATA: L_FLIGHT LIKE LINE OF P_ITAB,L_CARRID LIKE L_FLIGHT-FLCARRID....WRITE: / P_STRU-CARRID, P_STRU-CONNID....LOOP AT P_ITAB INTO L_FLIGHT WHERE FLCARRID = L_CARRID....ENDLOOP.ENDFORM. Frankfurt to New York between 10th and 20th September 1997:DATA: DATE LIKE SFLIGHT-FLDATE,CARRID LIKE SFLIGHT-CARRID,CONNID LIKE SFLIGHT-CONNID.SELECT F~CARRID F~CONNID F~FLDATEINTO (CARRID, CONNID, DATE)FROM SFLIGHT AS F INNER JOIN SPFLI AS PON F~CARRID = P~CARRIDWHERE F~CONNID = P~CONNIDAND P~CITYFROM = 'FRANKFURT'AND P~CITYTO = 'NEW YORK'AND F~FLDATE BETWEEN '19970910' AND '19970920'AND F~SEATSOCC < F~SEATSMAX.WRITE: / DATE, CARRID, CONNID.ENDSELECT.NoteSince not all of the database systems supported by SAP use the standard syntax for ON conditions, the syntax has been restricted. It only allows those joins which produce the same results on all of the supported database systems:1. Only a table or view may come to the right of the JOIN statement - not another joinexpression2. The only logical operator you can use in the JOIN condition is AND3. Each comparison in the ON condition must contain a field from the right-hand table.4. If there is an outer join in the FROM clause, each ON condition must contain at leastone "real" JOIN condition (one containing a field from both tabref1 and tabref2.5. Note6. If you specify '*' as the field list in the SELECT clause, and an internal table or workarea instead of a field list in the INTO clause, the fields are inserted into the targetarea in the sequence in which they occur in the table in the FROM clause butaccording to the structure of the target work area. This may, however, contain gapsdue to alignment requirements. For this reason, you should define your work areawith reference to the type of a database table instead of as a list of fields. An example of this appears later in the documentation.Variant 4... FROM tabref1 LEFT [OUTER] JOIN tabref2 ON condEffectSelects data from the transparent database tables or views specified in tabref1 andtabref2. tabref1 and tabref2 either have the same form as in variant 1 or are themseleves joine expressions. The key word OUTER can be omitted. The database tables or views specified in tabref1 and tabref2 must be recognized in the ABAP Dictionary and declared in the program with an appropriate TABLES statement.In order to determine the result of a SELECT statement where the FROM clause contains a left outer join, the database system creates a temporary table containing the lines that meet the ON condition. The remaining fields from the left hand table (tabref1) are then added to this table, and their corresponding fields from the right hand table are filled with NULL values. The system then applies the WHERE condition to the table. tLeft outer join between table 1 and table 2 where column D sets the join condition.Tabelle 1 Tabelle 2|----|----|----|----| |----|----|----|----|----|| A | B | C | D | | D | E | F | G | H ||----|----|----|----| |----|----|----|----|----|| a1 | b1 | c1 | 1 | | 1 | e1 | f1 | g1 | h1 || a2 | b2 | c2 | 1 | | 3 | e2 | f2 | g2 | h2 || a3 | b3 | c3 | 2 | | 4 | e3 | f3 | g3 | h3 || a4 | b4 | c4 | 3 | |----|----|----|----|----||----|----|----|----|\ /\ /\ /\ /\/Left Outer Join|----|----|----|----|----|----|----|----|----|| A | B | C | D | D | E | F | G | H ||----|----|----|----|----|----|----|----|----|| a1 | b1 | c1 | 1 | 1 | e1 | f1 | g1 | h1 || a2 | b2 | c2 | 1 | 1 | e1 | f1 | g1 | h1 || a3 | b3 | c3 | 2 |NULL|NULL|NULL|NULL|NULL|| a4 | b4 | c4 | 3 | 3 | e2 | f2 | g2 | h2 ||----|----|----|----|----|----|----|----|----|ExampleOutput a list of all customers with their bookings (if applicable) for 15th October 1997: TABLES: SCUSTOM, SBOOK.SELECT SCUSTOM~NAME SCUSTOM~POSTCODE SCUSTOM~CITYSBOOK~FLDATE SBOOK~CARRID SBOOK~CONNID SBOOK~BOOKIDINTO (SCUSTOM-NAME, SCUSTOM-POSTCODE, SCUSTOM-CITY,SBOOK-FLDATE, SBOOK-CARRID, SBOOK-CONNID,SBOOK-BOOKID)FROM SCUSTOM LEFT OUTER JOIN SBOOKON SCUSTOM~ID = SBOOK~CUSTOMID ANDSBOOK~FLDATE = '19971015'ORDER BY SCUSTOM~NAME SBOOK~FLDATE.WRITE: / SCUSTOM-NAME, SCUSTOM-POSTCODE, SCUSTOM-CITY,SBOOK-FLDATE, SBOOK-CARRID, SBOOK-CONNID,SBOOK-BOOKID.ENDSELECT.If there are columns in both tables with the same name, you must distinguish between them by prefixing the field descriptor with the table name, or using an alias.NoteWhen you use a left outer join in the FROM clause of a SELECT command, it makes a crucial difference whether the logical condition is in the ON or the WHERE clause. Since not all of the database systems supported by SAP themselves support the standard syntax and semantics of the left outer join, the syntax has been restricted to those cases that return the same solution in all database systems:1. Only a table or view may come after the JOIN statement, not another join expression2. The only logical operator allowed in the ON condition is AND3. Each comparison in the ON comdition must contain a field from the right-hand table4. Comparisons in the WHERE condition may not contain fields from the right-hand table5. You can only use EQ (or =) as comparisons in the ON condition6. The ON condition must contain at least one "real" JOIN condition (a conditioncontaining a field from both tabref1 and tabref2)7. Note8. If you specify '*' as the field list in the SELECT clause, and an internal table or workarea instead of a field list in the INTO clause, the fields are inserted into the targetarea in the sequence in which they occur in the table in the FROM clause butaccording to the structure of the target work area. This may, however, contain gapsdue to alignment requirements. For this reason, you should define your work areawith reference to the type of a database table instead of as a list of fields. An example of this appears later in the documentation.ExampleExample of a JOIN containing more than 2 tables: Select all flights from Frankfurt to New York between 10th and 20th September 1997 where there are free places, and display the name of the airline.DATA: CARRID LIKE SFLIGHT-CARRID,CONNID LIKE SFLIGHT-CONNID,DATE LIKE SFLIGHT-FLDATE,NAME LIKE SCARR-CARRNAME.SELECT F~CARRID F~CONNID F~FLDATE C~CARRNAMEINTO (CARRID, CONNID, DATE, NAME)FROM ( SFLIGHT AS F INNER JOIN SPFLI AS PON F~CARRID = P~CARRID ANDF~CONNID = P~CONNID )INNER JOIN SCARR AS CON F~CARRID = C~CARRIDWHERE P~CITYFROM = 'FRANKFURT'AND P~CITYTO = 'NEW YORK'AND F~FLDATE BETWEEN '19970910' AND '19970920'AND F~SEATSOCC < F~SEATSMAX.WRITE: / NAME, DATE, CARRID, CONNID. ENDSELECT.。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
为代码行设置断点
ABAP程序的流程控制-逻辑表达式
比较所有基本类型的数据对象
运算符 含义
EQ
或 =
等于
NE
或 <> 或
><
不等于
LT
或 <
小于
LE
或 <=
小于等于
GT 或 >
大于
GE
或 >=
大于等于
比较字符串
运算符 含义 CO 仅包含
CN
不仅包含
CA
包含任何
NA
不包含任何
CS
包含字符串
NS
不包含字符串
CP
包含模式
处理字符串
连接字符串 : CONCATENATE <s1> ... <sn> INTO <s> [SEPARATED BY <c>]. 拆分字符串 : SPLIT <s> AT <sep> INTO <s1> ... <sn>. 搜索字符串 : SEARCH <s> FOR <sub>. 获得字符串长度 [COMPUTE] <n> = STRLEN( <s> ). 替换字符串内容 : REPLACE <s1> WITH <s2> INTO <src> [LENGTH <l>]. 字符串的大小写转换: TRANSLATE <s> TO UPPER CASE. :将字符串转换成大写 TRANSLATE <s> TO LOWER CASE. :将字符串转换成小写
第4章ABAP语言基本语法
数据类型: 数据类型是纯粹的类型说明,不与任何实际的 内存相关联,但可以表明由一个数据类型定义 出来的数据对象占有多少内存;数据类型描述 了数据对象的技术属性,用于定义数据对象。
ABAP数据类型的使用场合
ABAP 数据类型
下列ABAP 类型是完整指定的,可以直接用它们定 义 数据对象类型:d、t、i、f、string 和 xstring。string 和xstring 的特殊之处在于它 们的长度是在运行时自动 调整的,因此长度不 是类型的组成部分。
ABAP数据对象分类 变量 常量 文字 文本文字 数字文字
系统定义的数据对象
系统定义的数据对象是系统预先定义好的数据对象,无需声 明,可在程序中直接使用,其中系统全局结构体变量中的很多 系统字段在编程中非常重要。所有系统字段都有格式为 sy<fieldname> 的名称,其 中 <fieldname>是该结构体中单 个字段。
ABAP程序的流程控制-循环语句
DO循环 DO [<n> TIMES] [VARYING <f> FROM <f1> NEXT <f2> ]. <statement block> ENDDO. 带条件的WHILE循环 WHILE <condition> [VARY <f> FROM <f1> NEXT <f2> ]. <statement block> ENDWHILE. LOOP … ENDLOOP循环,用于处理内表(Internal Table)变量。 SELECT … ENDSELECT循环,用于从数据表中循环地读取数据。
CASE的条件分支 CASE <v>. WHEN <v1>. <statement block1> WHEN <v2>. <statement block2> WHEN <v3>. <statement block3> WHEN ... ...... WHEN OTHERS. <statement blockn> ENDCASE.
计算:语法
– 在ABAP 中,可以任意多层嵌套数学表达式。必须 记 住圆括号和操作符都是关键字,在前后都要带 至少一 个空格。 – ABAP 运行时环境位不同数据类型提供一系列函数。 开放圆括号属于函数名称的一部分(不能用空格 与函 数名分开),其余表达式中的元素则都必须 用空格分 开。 – 表达式按一般的代数顺序处理——圆括号最高,接 下 来是函数、幂、乘除,最后是加减。 – DIV(整数除)和MOD(余数)操作都返回整数。
全局的数据类型存储在ABAP字典中的类型:
数据元素(Data Element):用于定义一个的字段类型的变 量 结构体(Structure):用于定义一个内存中的结构体变量, 又称为工作区(Work Area) 透明表(Transparent Table):对于定义内存变量来说,其 功能与结构体类型是一致的,即用于定义一个内存中的工作区 (Work Area),但是其定义的工作区一定是扁平的。 内表(Internal Table):用于定义一个内存的多维表格,如 果定义采用的行类型是基本的数据类型,则相当于一个一维数 组;若其行类型为扁平结构体或透明表,则定义出来的是一个 二维数组;若其行类型为复杂结构体,则定义出来的是一个多 维数组。
SY-SUBRC: 返回代码值(0代表操作成功) SY-UNAME:用户的登录名 SY-TCODE: 当前事务 SY-DATUM:当前日期 SY-UZEIT: 当前时间
ABAP语法元素
ABAP关键字分类
声明型关键字:TYPES, DATA, TABLES 事件关键字: AT SELECTION SCREEN, 程序流程控制关键字: IF, WHILE, CASE 操作关键字:WRITE, MOVE, ADD
计算:语法
– 在计算时会产生下列四类运行时错误: • 应该被转换乘数值的字段无法被解释成数值 • 在转换、赋值或存储中间结果时的值范围太 小 • 除以0 • 在内建函数中使用非法变量,例如: log( -3 ) – 更多信息可参考COMPUTER 语句的关键字 文档。
数据对象赋值 通过声明性赋初始值: DATA myid(10) TYPE c VALUE '100'. 通过操作性语句给数据对象赋值: MOVE source TO destination. 通过CLEAR操作使数据对象具有缺省值: CLEAR var1.
ABAP数据类型分类
在ABAP程序中,定义一个数据对象可以采用三种数据类型中的一 种。 ABAP语言中预定义的标准数据类型,如图中的① 数据字典中的全局数据类型,如图中的② 用户在程序中自定义的数据类型,如图中的③ 在ABAP中,还可以通过“DATA <变量1> LIKE <变量2>” 的方式来定义一个新的变量1,如图4-2中的符号④。图中的符 号⑤是指采用ABAP语言的标准数据类型定义新的用户自定义 数据 类型。
终止循环
CONTINUE 无条件终止本次循环过程 CHECK 有条件终止循环过程 EXIT 完全终止循环
发送对话消息
MESSAGE tnnn(message_class) [ WITH v1 [ v2 ] [ v3 ] [ v4 ] ].
类型t
类型描述
对话行为
消息显示位置
I
消息提示
程序执行被对话框中断,用户选择后程序继续
定义数据对象
1、一般来说,数据对象用DATA 语句按如下方法定义, 在数据对象名字后面,用TYPE 附加关键字分配指定 的 完整类型。类型静态连接到数据对象,在运行时不 能被 修改。 2、所有类型都基于预定义ABAP 类型。部 分ABAP 类型 是完整的,可以直接用来定义数据对象 的类型。其他则 需要包含长度或小数点位数等信息, 这就是用户自定义 类型的最简单例子。 3、可以根据基本类型建立任意复杂层级的复杂结构类型。 4、还可以直接在ABAP 字典中定义类型。以后就可以在 系统的所有适当的知识库对象中使用这些全局类型。
NP
不包含模式
检查字段的初始值
要检查字段是否设置为初始值,应使用带有IS INITIAL参数的 逻辑表达式,其语法为: .... <v> IS INITIAL ..... 如果<v>的值是其数据类型对应的初始值,则表达式为真。一 般情况下,任何字段,包括基本的或结构化的(字符串和内 表),在CLEAR <v> 语句执行后,<v>中都包含其初始值
整数和整数运算
– 当系统执行整数运算时,通常四舍五入到最接近的 整 数。例如:
DATA int TYPE i.
int = 4 / 10. "结果为0 int = 5 / 10. "结果为1 – 使用整数运算的计算速度比用定点数或浮点数都快。 – 可以在DATA 语句的VALUE 附加关键字为整数变 量 指定开始值。通常在VALUE 输入一个数字文本。 如 果用字符文本的形式(用单引号括起来),运行时 系 统会进行转化。 – 对于整数可执行的计算的更多信息,可以参考 COMPUTER 语句的关键字文档。
组合逻辑表达式
可以将几个逻辑表达式组合成一个符合的逻辑表达式,使用逻辑连 接运算符AND、OR 和 NOT,将几个逻辑表达式组合为一个表达 式: 用AND连接:要将几个逻辑表达式组合为一个表达式,且该表达式 中仅当其所有的子表达式为真时总结果才为真,则 表达式之间要用AND连接。 用OR连接:要将几个逻辑表达式组合为一个表达式,且只要其中 的某一个子表达式为真时,该表达式即为真,则表达 式之间要用OR连接。 用NOT取反: 要将逻辑表达式的结果在真和假之间转换,则应在 该表达式前面加 NOT。 它们之间的优先级为:NOT优先于AND,AND 优先于OR。建议 使用任何小括号组合
DATA x1(4) TYPE x VALUE '3D6F'.