ABAP语法基础4

SAP ABAP 打开SQL概述(后续继续)

打开SQL指示允许直接访问当前AS ABAP的中央的数据库中的数据的ABAP语句的子集。
打开SQL语句映射所有数据库系统支持的ABAP中的SQL的数据操作语言功能。

Open SQL的语句在数据库接口的Open SQL接口中转换为特定于数据库的SQL。
然后将它们传送到数据库系统并执行。打开的SQL语句可用于访问在ABAP字典中声明的数据库表。
缺省的情况下访问AS ABAP的中央数据库,并且可以通过辅助数据库连接访问其他数据库。

每当在ABAP程序中使用这些语句中的任何一个时,重要的是检查锁执行的动作是否已成功。如果尝试将记录插入到数据表中,并且没有正确插入,则知道这一点非常重要,以便可以在程序中采取适当的操作。这可以使用已经使用的系统字段来完成,即SY-SUBRC。 当成功执行语句时,SY-SUBRC字段将包含值0,因此可以检查该值,如果出现该程序,可以继续程序。

DATA语句用于声明一个工作区。 让我们给这个名字“wa_customers1"。 而不是为此声明一个数据类型,可以声明组成表的几个字段。 最简单的方法是使用LIKE语句。

SAP ABAP 本地SQL概述(后续继续)

术语 “本地SQL”是指可以静态传输到数据库接口的本级SQL接口的所有语句。本地SQL语句不属于ABAP的语言范围,不遵循ABAP语法。ABAP仅包含用于隔离其中可以列出Native SQL语句的程序段的语句。

在本机

省略大量数据库内容

SAP ABAP面向对象

创建对象

引用类创建引用变量。其语法是-
DATA: TYPE REF TO .

从引用变量创建对象。其语法是-
CREATE Object: .

例子

REPORT ZDEMO_OBJECT. 
CLASS Class1 Definition.
*创建类Class1
Public Section.
DATA: text1(45) VALUE 'ABAP Objects,'.
*于类中创建变量text1(45) 并赋值 ABAP Objects.
METHODS:Display1.
*使用的方法为Display1
ENDCLASS. 
*类创建完毕

CLASS Class1 Implementation.
METHOD Display1
*Class1 继承方法 Display1
Write:/ 'This is the Display method.'.
*输出 
ENDMETHOD. 
ENDCLASS. 

START-OF-SELECTION.
DATA: Class1 TYPE REF TO Class1.
CREATE Object: Class1.
Write:/ Class1->text1.
CALL METHOD: Class->Display1.
*输出Class1->text1,并且

上述代码产生以下输出:
ABAP Objects.
This is the Display method.

SAP ABAP类

类用于指定对象的形式,它将数据表示和将该数据操作为一个整齐包的方法组合。类中的数据和函数称为类的成员。

类定义和实现

定义类时,可以为数据类型定义蓝图。这实际上不定义任何数据,但它定义了类名称的意义,类的对象将包括声明,以及可以对这样的对象执行什么操作。也就是说,它定义对象的抽象特性,例如属性,字段和属性

下面的语法显示如何定义类:

CLASS   DEFINITION.
........
........
ENDCLASS.

类定义从关键字CLASS开始,后面跟着类名DEFINITION和类主体。类的定义可以包含类的各种组件,如属性,方法和事件。当我们在类声明中声明一个方法时,方法实现必须包含在类实现中。以下语法显示如何实现类:

CLASS   IMPLEMENTATION.
........
........
ENDCLASS

注意 - 类的实现包含其所有方法的实现。在ABAP对象中,类的结构包含诸如属性,方法,事件,类型和常量等组件。

属性

属性是可以具有任何数据类型(如C ,I , F 和N )的类的数据字段。它们在类声明中声明。这些属性可以分为两类:实例和静态属性。实例属性定义对象的实例特定状态。不同对象的状态不同。使用DATA语句声明实例属性。

静态属性定义由类的所有实例共享的类的公共状态。也就是说,如果您更改类的一个对象中的静态属性,该更改对该类的所有其他对象也是课件的。使用CLASS-DATA语句声明静态属性。

方法

方法时表示类中的对象的行为的函数或过程。类的方法可以访问类的任何属性。方法的定义也可以包含参数,以便在调用方法时可以向这些参数提供值。方法的定义在类声明中声明,并在类的实现部分实现。METHOD和ENDMETHOD语句用于定义方法的实现部分。以下语法显示如何实现一种方法。

METHOD . 
.......... 
.......... 
ENDMETHOD.

在此语法中表示方法的名称。
注意-我们可以使用CALL METHOD 语句来调用方法

访问属性和方法

类组件可以在控制如何访问这些组件的公共,私有或受保护的可见性部分中定义。私有可见性部分用于拒绝从类外部访问组件。这样的组件只能从类内部访问,例如方法。

在公共可见性部分中定义的组件可以从任何上下文访问。默认情况下,类的所有成员都是私有的。实际上,我们在私有节中定义数据,在公共节中定义相关方法,以便可以从类外面调用它们,如下面的程序所示,如下面的程序所示。

1.在类中的Public 部分中声明的属性和方法可以由该类和程序的任何其他类,子类访问。
2.当属性和方法在类的Procted部分中声明时,那些类和子类(派生类)只能访问它们。
3.当在类的Private部分中声明属性和方法时,这些属性和方法只能由该类访问,而不能由任何其他类访问

Report ZAccess1. 
CLASS class1 Definition.
	PUBLIC Section.
		Data;text1 Type char25 Value 'Public Data'.
		Methods meth1.
*定义class1类, 此部分为PUBLIC,其内的数据名为 text1,是 char类,值为'Public Data'.
*方法定义为meth1


	PROTECTED Section.
		Data:text2 Type char25 Value 'Protected Data'.
*此部分为PROTECTED部分,其内的数据text2,同样是char类,值为 'Protected Data'.

	PRIVATE Section
		Data:text3 Type char25 Value  'Private Data'.
	*此部分为Private部分,其内的数据text2,同样是char类,值为 'Private Data'.
ENDCLASS.
*类定义结束


CLASS class1 Implementation.
	Method meth1.
		Write:/ 'public Method:',
				/ text1,
				/ text2,
				/ text3.
	*class1继承方法meth1,其具体实现为,输出text1,text2,text3
		Skip.
	EndMethod.
ENDCLASS.

Start-Of-Selection.
*相当于主函数
	Data: Objectx Type Ref To class1.
	*定义Objectx,格式等同于class1
	Create Object:objectx.
	*创建对象objectx
	CALL Method: Objectx->meth1.
	*使用方法meth1
	Write: / Objectx->text1.
	*输出Objectx内容为text1
	

上述代码的输出如下:
Public Method:
Public Data
Protected Data
Private Data

Public Data
综上:我们可以看到CALL Method可以输出三种
而直接Write则只能输出Public 的内容

静态属性

静态属性用语句CLASS-DATA声明。所有对象或实例都可以使用类的静态属性。静态属性直接在类名的帮助下访问,像class_name=>name_1=>‘Some Text’.


下面是一个程序,我们要打印一个文本行4到8。我们定义一个类class1,在公共部分我们声明CLASS-DATA(静态属性)和一个方法。在实现类和方法之后,我们直接访问Start-Of-Selection事件中的static属性。然后只创建类的实例并调用该方法。

REPORT ZStatic1.
CLASS class1 Definition.
	PUBLIC Section.
		CLASS-DATA: name1 TYPE char45,
								data1	Type	I.
	Methods:meth1.
ENDCLASS.

CLASS class1 Implementation.
	Method meth1.
		Do	4 Times
			data1 = 1 + data1.
			Write : / data1,name1.
		EndDo.	
	EndMethod。
ENDCLASS.

Start-Of-Selection.
	class=>name1 = 'ABAP Object Oriented Programming'.
	class=>data1 = 0.
	Data: Object1 Type Ref To class1,
			  Object2 Type Ref To class1.

	Create object: Object1,Object2.
	CALL Method: Object1->meth1,
							Object2->meth1,
							

构造函数

构造函数是在创建对象或访问类的组件时自动调用的特殊方法。每当一个对象被创建时,构造器被触发,但是我们需要调用一个方法来触发一般方法。在下面的例子中,我们声明了两个公共方法method1和constructor。这两种方法都有不同的操作。在创建类的对象时,构造函数方法触发其操作。

例子

Report ZConstructor1.
CLASS class1 Definition.
	PUBLIC Section.
		Methods:method1,constructor.
ENDCLASS.

CLASS class1 Implementation.
	Method method1.
		Write: /'This is Method1'.
	EndMethod.

	Method constructor.
		Write: /'Constructor Triggered'.
	EndMethod.
ENDCLASS.

Start-Of-Selection.
   Data Object1 Type Ref To class1.
   Create Object Object1.

产生的输出如下:
Constructor Triggered

ME操作员

当你在类的public 节中声明任何类型的变量时,你可以在任何其他实现中使用它。变量可以在public section中用初始值声明。我们可以在一个具有不同值得方法中再次声明该变量。当我们在方法中写入变量时,系统将打印更改的值。要反映变量的先前值,我们必须使用“ME”运算符。

在这个程序中,我们声明了一个公共变量text1,并用一个值初始化。我们已经再次声明相同的变量,但是用不同的值实例化。在该方法中,我们使用“ME”运算符写该变量以获取先前启动的值。我们通过直接声明获得更改的值。

案例

Report ZMEOperator1.
CLASS class1 Definition.
	PUBLIC Section.

Data text1 Type char25 Value 'This is CLASS Attibute'.
	Methods method1.
ENDCLASS.

CLASS class1 Implementation.
	Method method1.

Data text1 Type char25 Value 'This is METHOD Attribute'.
	Write : / ME->text1,
				  / text1.
	ENDMethod.
ENDCLASS.

Start-Of-Selection.
	Data objectx Type Ref To class1.
	Create Object objectx.
	CALL Method objectx->method1.

输出如下:
This is CLASS Attribute
This is METHOD Attribute

你可能感兴趣的:(ABAP,数据库,sql,mysql)