ABAP 面向对象学习笔记(三)--接口
ABAP基础

ABAP基础程序结构ABAP语言是整个SAP系统的基础开发工具和技术平台,其包含:事件驱动(Evet-Driven)、机制和模块化技术(Modularization)、完整的面向对象概念及实现方法(Object Oriented)。
ABAP程序的源代码结构包括数据定义和处理块两部分:数据定义:整个程序中可见的全局数据类型和数据对象、选择屏幕元素以及ABAP Object 中自定义的类和接口。
处理块(Processing Blocks):是ABAP的主要结构单元,定义程序在不同状态下执行的具体功能,在编译运行中,每一块都是一个独立的实体。
注:数据(包括选择屏幕元素)定义和声明语句是独立于任何处理块的,其他所有语句则都必须隶属于某个处理块。
1. ABAP程序含有三种类型的处理块:·事件块(Event Blocks):每一个事件都需要有一个时间关键字引导,并单独构成一个语句,其后续语句隶属于该关键字代表的时间块,直到下一关键字出现为止。
包括:报表事件、列表事件、屏幕事件初始化:INITIALIATION数据选择开始:START-OF-SELECTION列表行选择:ATLINE-SELECTION屏幕输出前处理:PROCESS BEFORE OUTPUT平和输入后处理:PORCESS AFTER INPUT·对话模块(Dialog Modules):开始和结束都有相关的关键字作为标志,是相对独立的程序单元。
·过程(Procedures):代码部分的开始和结束都有相关的关键字,也是相对独立的程序单元。
过程包括功能模块和子程序,以及对象中的类方法可以被其他的模块调用,实现程序模块化和代码复用。
2. 处理块调用处理块使程序代码模块,也是运行期间的单元;其具体出现的顺序与其在程序代码中的先后顺序无关。
3. 事件驱动在各种处理块中,系统对事件快的调用过程有其特殊性:其调用总是与某时间地发生相关,也成为事件的触发。
ABAP接口用法

ABAP接⼝⽤法1、定义接⼝INTERFACE intf [PUBLIC].[components]ENDINTERFACE.2、注意点:2.1、接⼝中所定义的所有东西默认都是公共的,所以不⽤也不能写PUBLIC SECTION。
2.2、只有在接⼝中定义的常量(CONSTANTS)才可以使⽤ VALUE 选项来初始化,⽽DATA、CLASS-DATA定义的变量是不能初始化2.3、接⼝定义中也只能包含成员声明部分,⽽具体的实现将在具体类中进⾏2.4、如果要实现某个接⼝,则在类的公共声明PUBLIC SECTION部分进⾏实现,其余部分不⾏3、定义⼀个接⼝ MediaPlayer,表⽰家庭影院的⼀个设备。
MediaPlayer 中包含 play(),stop(), open()三个⽅法,分别表⽰播放、停⽌和开仓功能。
MediaPlayer 有三个实现类,分别为: DVDPlayer,表⽰ DVD 播放器; CDPlayer,表⽰ CD 播放器;TapePlayer,表⽰录⾳机(播放磁带)。
INTERFACE mediaplayer.CONSTANTS pi TYPE f VALUE '3.1415926'.CLASS-DATA dd type f .METHODS: play,stop,open.ENDINTERFACE.CLASS dvdplayer DEFINITION.PUBLIC SECTION.INTERFACES mediaplayer.ENDCLASS.CLASS dvdplayer IMPLEMENTATION.METHOD mediaplayer~play.WRITE / 'dvd is play'.ENDMETHOD.METHOD mediaplayer~stop.WRITE / 'dvd is stop'.ENDMETHOD.METHOD mediaplayer~open.WRITE / 'dvd is open'.ENDMETHOD.ENDCLASS.CLASS cdplayer DEFINITION.PUBLIC SECTION.INTERFACES mediaplayer.ENDCLASS.CLASS cdplayer IMPLEMENTATION.METHOD mediaplayer~play.WRITE / 'cd is play'.ENDMETHOD.METHOD mediaplayer~stop.WRITE / 'cd is stop'.ENDMETHOD.METHOD mediaplayer~open.WRITE / 'cd is open'.ENDMETHOD.ENDCLASS.CLASS tapeplayer DEFINITION.PUBLIC SECTION.INTERFACES mediaplayer.ENDCLASS.CLASS tapeplayer IMPLEMENTATION.METHOD mediaplayer~play.WRITE / 'tape is play'.ENDMETHOD.METHOD mediaplayer~stop.WRITE / 'tape is stop'.ENDMETHOD.METHOD mediaplayer~open.WRITE / 'tape is open'.ENDMETHOD.ENDCLASS.*声明对象DATA: dvd TYPE REF TO dvdplayer,cd TYPE REF TO cdplayer,tape TYPE REF TO tapeplayer. START-OF-SELECTION.CREATE OBJECT dvd.CREATE OBJECT cd.CREATE OBJECT tape.CALL METHOD dvd->mediaplayer~play. CALL METHOD cd->mediaplayer~stop. CALL METHOD tape->mediaplayer~open. write / dvd->mediaplayer~pi.write / dvd->mediaplayer~dd.dvd->mediaplayer~dd = 1.write / dvd->mediaplayer~dd.。
ABAP入门知识最全总结新人小白必备学习资料

SAP系统与ABAP关系
01
SAP系统是一款广泛应用于企业 资源计划(ERP)、供应链管理 (SCM)、客户关系管理 (CRM)等领域的软件产品。
02
ABAP是SAP系统的开发语言, 用于编写SAP系统中的业务逻辑、 数据处理和报表生成等功能。
调试日志
在调试过程中,可以开启调试日 志功能,记录程序执行过程中的 详细信息和操作步骤。这对于复 杂问题的排查和分析非常有帮助。
08
实战案例分析与经验分 享
案例一:简单报表开发实例
报表需求分析与设计
明确报表目的、数据源和输出格式,设计报 表布局和字段。
ABAP报表开发流程
创建报表程序,定义数据源和选择条件,编 写报表逻辑和输出处理。
根据实际需求设置报表的输出格式, 如PDF、Excel、Word等。
格式调整
调整报表的页面设置、边距、字体、 颜色等,确保报表输出的美观和易读 性。
报表性能优化策略
数据源优化
优化数据库查询语句,减少数据冗余和提高查询 效率。
报表缓存
合理利用报表缓存机制,减少重复计算和数据库 访问次数。
分页处理
对于大量数据的报表,采用分页处理技术,提高 报表加载速度和用户体验。
Eclipse与SAP系统连接
配置Eclipse连接参数,连接到SAP系统,实现ABAP代码的上传、下载和执行等操作。
其他辅助工具推荐
SAP Notepad
一款轻量级的文本编辑器,支持ABAP语法高亮显示和代 码折叠等功能,适合编写简单的ABAP程序。
ABAP Doc
ABAP学习笔记

ABAP学习笔记一、ABAP语法简介:ABAP(Advanced business application program),是一种高级企业应用编程语言,它支持封装性和继承性,封装性是面向对象的基础,而继承性是建立在封装性基础上的重要特性。
它适合生成报表,支持对数据库的操作,如:Sqlserver,Oracle,DB2等主流数据库系统。
主要的语法有:数据类型、控制流程、文本摘要、输出格式、程序调试1、数据类型:(八种基本数据类型)D :日期类型,格式为YYYYMMDD,长度为8T :时间类型,格式为HHMMSS,长度为6I :整数类型,默认长度为4,初始值为0F :浮点类型,默认长度为8,初始值为0,常用于计算C :字符串类型,定义变量时指定字符个数N :数字字符串类型,定义变量时指定数值字符个数X :字节序列类型,定义变量时指定字节数P(压缩号) :允许的长度为1 到16 个字节,系统会指定默认值8 个字节(也就是15 位数字)和0 个小数位常用:大小,长度,重量,货币等单位的场合.2、输出格式:WRITE 'First line.'.WRITE 'Still first line.'WRITE / 'Second line.'WRITE /13 'Third line’.3、控制流程:使用IF的条件分支IF <条件表达式1>.< statement block >ELSEIF <条件表达式2>.< statement block >ELSEIF <条件表达式3>.< statement block >.....ELSE.< statement block >ENDIF.使用CASE的条件分支CASE <f>.WHEN <F1>.<statement block>WHEN <F2>.<statement block>WHEN <F3>.<statement block>WHEN .........WHEN OTHERS.<statement block>ENDCASE.二、ABAP的语法特点:1、由各自独立的语句构成。
ABAP知识清单梳理

掌握情况学习方式
数据定义和操作
基本掌握结构控制(分支和循环)
基本掌握内表的使用基本掌握模块化引用基本掌握类和对象知道理论方法
知道理论继承
知道理论接口知道理论事件
知道理论数据表维护
基本掌握SELECT操作数据
基本掌握更新数据
基本掌握数据一致性
未知点文件接口和数据簇操作未知点Quick Viewer
未知点SAP Query 未知点选择屏幕
基本掌握逻辑数据库LDB
未知点标准列表
基本掌握交互式列表基本掌握ALV列表
基本掌握后台工作模式
未知点列表打印管理
未知点保存列表未知点定义屏幕基本掌握调用屏幕
基本掌握用户交互基本掌握消息处理
基本掌握定义和调用模块
基本掌握数据传输控制
未知点输入检查未知点上下文菜单未知点下拉框基本掌握表格控件
基本掌握选项卡控件未知点ALV表格控件
基本掌握屏幕中的传统列表基本掌握SAPscript(FORM)
SAPscript 知道理论Smart Forms Smartforms 基本掌握Tree Control Tree Control 知道理论Table Control Table Control 知道理论
开发规格说明书
功能增强BC400传输请求BADI BAPI 函数
各种语句的效率se30重点学习程序测试及优化技巧
后台处理与打印事务屏幕设计
控制逻辑设计高级屏幕元素
ABAP知识点
ABAP语言基础
ABAP面向对象数据库操作报表生成工具
ABAP报表设计
实践成果。
SAP常用接口讲解

RFC
RFC(Remote Function Call) SAP为多种语言及相关的操作系统提供RFC库(其中包含RFC API)及
SAP连接器。连接配置操作简单。为Java提供的Java Connector(JCo),为 C和C++提供的RFC SDK(RFC Software Development Kit),为.NET(C#, 等)提供的 .NET Connector(NCo),为Louts Notes 提供的Louts connector 。RFC分为同步和异步的,队列RFC,事务性RFC。
6
ALE/IDOC
IDoc多用于在SAP系统之间的传输数据,IDoc对接收端的配置人员要求高。 IDOC入站处理:
1)应用层:生成应用数据 2)ALE层:创建出站IDOC 3)通讯层:寻找伙伴和端口 4)发送 IDoc IDOC入站处理: 1)通讯层:接收入站端口传来的数据. 2)ALE 层:创建入站IDOC并通过伙伴参数文件查找IDOC处理类型. 3)应用层:写入文档.
SAP高端项目实战第一品牌
数位资深项目经理多年经验总结
SAP ECC ABAP 高端实战课程
敲开通向SAP金领行业的大门
ABAP_Unit12
SAP常用接口
了解并掌握SAP常用的接口
2
内容
SAP ABAP课程——单元12
SAP常用接口 • Webservice • ALE/IDOC • RFC • BAPI • Middleware
根据外部系统提供的webservice的wsdl地址,在SAP系统创建 webservice consumer时候输入该URL。使用SOAMANAGER创建逻辑端口, 封装函数,在函数里指定端口,并调用类的方法,反之,创建webservice provider,生成wsdl供外部调用。
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 系统的监控和管理
总结一下ABAP中的各种接口技术
总结⼀下ABAP中的各种接⼝技术下⾯总结⼀下ABAP中的各种接⼝技术,因为学习时间不是很长,肯定还不全(还有增强、出⼝等),以后再补上。
针对具体的情况,选择不同的接⼝⽅法,或⼏种⽅法并⾏使⽤。
⼀、CPI-C是基础,但不是很常⽤,⽐较底层⼆、RFC1、R3系统之间(1)在调⽤系统上进⾏RFC⽬标系统的配置(TCODE:SM59)(2)在远程系统上创建允许远程访问的功能模块2、R3与外部系统之间(1)外部程序调⽤SAP功能(功能模块、BAPI)(2)SAP调⽤外部程序三、Connectors(1)SAP Business Connector(SAP BC)(2)SAP Marketplace Connector(3).NET Connector、Java Connector、DCOM Connector、Lotus Connector四、OLE1、Excel作为OLE客户端2、ABAP作为OLE2控制器五、Desktop Office Integrated(DOI)六、WebService1、R3中创建WebService的⽅法(举函数模块产⽣WebService的⽅法)(1)定义函数模块并选择函数组(2)根据向导⽣成WebService(3)使⽤TCODE “wsadmin”和“wsconfig”对服务进⾏管理和配置(4)⽣成WSDL和测试WebService3、外部系统使⽤R3的WebService4、R3调⽤外部系统上的WebService(1)根据WebService连接,使⽤se80,创建代理类(Proxy Object),并激活(2)为代理类配置逻辑端⼝(TCODE:lpconfig)(3)在程序中使⽤代理类完成WebService中⽅法的调⽤七、FTP配合数据迁移的⽅法(标准导⼊程序、定制BDC、LSMW、DXWB),可完成⼀些接⼝功能。
1、条件(1)服务器和客户端程序(SAPFTPA和SAPFTP)(2)服务器配置(3)IIS或Serv-U建⽴FTP服务2、操作⽅式(1)连接到FTP服务器(2)进⾏操作(执⾏FTP命令)(3)断开与FTP服务器的连接3、操作实例(1)获取FTP服务器上的⽂件列表(2)本地与FTP之间的⽂件交换(3)应⽤服务器与FTP服务器之间的⽂件交换⼋、外部数据库1、连接外部数据库(1)服务器端配置(DBCON)(2)访问SQL Server数据库,必须要求R3系统安装在Windows系统上(因为需要⼀些DLL库⽀持)(3)访问外部Oracle数据库2、使⽤Native SQL进⾏数据库操作九、ALE and EDI、IDoc接⼝⼗、SAP Exchange Infrastructure(SAP XI)。
abap class 解读
abap class 解读ABAP Class 解读ABAP(Advanced Business Application Programming)是一种基于SAP系统的编程语言,被广泛用于开发企业级应用程序。
在ABAP中,Class是一种重要的概念和编程结构,用于实现面向对象编程(OOP)的原则。
在本文中,我们将一步一步地解读ABAP Class的相关概念、特性和用法,帮助读者更好地理解和应用这一重要的编程工具。
一、什么是ABAP ClassABAP Class是一种面向对象编程(OOP)的核心概念,在ABAP中用于定义对象和对象的行为。
一个Class可以包含属性(Attributes)和方法(Methods),以及相关的事件(Events)和异常(Exceptions)。
通过Class的实例化(Instantiation),我们可以创建具体的对象,然后调用对象的方法来执行相应的逻辑。
在ABAP中,每个Class都有一个唯一的名字,以及可选的访问修饰符(Public、Private、Protected)。
Public修饰符表示其他对象可以直接访问该Class及其成员;Private修饰符表示只有该Class内部的方法才可以访问;Protected修饰符表示该Class及其子类可以访问。
二、ABAP Class的组成部分一个典型的ABAP Class由以下几个组成部分组成:1. Class声明(Class Declaration):用于定义Class的名字、可选的继承关系和接口(Interface)实现。
2. 属性(Attributes):Class的成员变量,用于保存对象的状态信息。
属性可以有不同的数据类型(如整数、字符串等),以及可选的访问修饰符和初始值。
3. 方法(Methods):Class的成员函数,用于执行特定的逻辑。
方法可以有输入参数(Importing)、输出参数(Exporting)、输入输出参数(Changing)和异常参数(Raising),以及可选的访问修饰符。
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.
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
*&-------------------------------------------------------------------*& ABAP 面向对象学习笔记—(三)接口。
*&-------------------------------------------------------------------REPORT ZBCRP_OO_LYB_04.
INTERFACE f0.
" 接口中不能设定成员的权限领域(可见性).或者说接口的组件总是public的
* CLASS-METHODS static_meth. "接口中可以声明静态成员
METHODS meth IMPORTING msg TYPE string OPTIONAL.
DATA str TYPE string.
" 接口中的变量不能用value给值。
而常量可以。
CONSTANTS cons TYPE string VALUE '常量'.
ENDINTERFACE.
"接口只声明方法,不实现方法,没有implementation部分。
CLASS c1 DEFINITION. "不能使用INHERITING FROM 继承接口。
PUBLIC SECTION.
METHODS: outp.
INTERFACES: f0.
" 只能在PUBLIC SECTION中声明要使用接口;可以声明多个接口。
" 可以用aliases..for..语句,为接口的每个组件指定别名,方便访问。
" 别名只能被当前类和实例访问。
ALIASES meth0 FOR f0~meth.
ENDCLASS.
CLASS c1 IMPLEMENTATION.
METHOD f0~meth. " 可以使用别名meth0
WRITE:/, msg.
ENDMETHOD.
METHOD outp.
WRITE:/, 'test' .
ENDMETHOD.
ENDCLASS.
CLASS c2 DEFINITION.
PUBLIC SECTION.
INTERFACES: f0.
ENDCLASS.
CLASS c2 IMPLEMENTATION.
METHOD f0~meth.
WRITE:/,msg.
ENDMETHOD.
ENDCLASS.
START-OF-SELECTION.
DATA ref0 TYPE REF TO f0. "定义接口的引用
DATA ref1 TYPE REF TO c1.
DATA ref2 TYPE REF TO c2.
CREATE OBJECT: ref1, ref2.
"把不同的对象分别赋给接口的引用——多态性的体现。
ref0 = ref1.
ref0->meth('C1使用接口').
ref0 = ref2.
ref0->meth('C2使用接口').
" 接口的引用只能调用它自身所声明了的组件。
" 类中新定义的组件,对接口(的引用)是不可见的。
" 打开下面这句将会报错。
* ref0->outp( ).
"下面三种调用METHOD的写法是等效的:
CALL METHOD ref1->meth0 EXPORTING msg = 'test'. CALL METHOD ref1->meth0( 'test').
ref1->meth0( 'test' ). "最简形式。
" 如果要传递多个参数,可以这样写:
" ref1->meth0( p1 = f1 p2 = f2..) .
" 目前ABAP对圆括号的定义尚未规范化:
" 括号与参数间可能需要空格,也可能不用空格。
" 具体用的时候多尝试即可。
*" 组件没有别名时,可以用波浪号访问
*ref1->f0~meth( ).。