SAP ABAP开发个别概念理论区分理解

一、types与data的区别:

types是用来定自定义某种类型的,需要用data语句实例化之后才可以使用;

data是用来声明基本类型数据对象(实例变量)的,对于用data直接定义的结构体对象(不参照其他结构类型)

二、type与like的区别:

type后面跟随的只能是某种类型

like后面可以跟实例对象

参照结构体对象生成内表时只能用like,不能用type,因为结构体对象不是类型,只是一种实例对象

参照结构类型生成内表时可以用like,也可以用type

通过like定义的内表直接拥有参照结构类型的元素结构

通过type定义的内表只能间接拥有被参照结构类型的元素结构,结构类型不能作为内表的工作区,只有结构体对象才可以

三、结构、内表、工作区的区别:

结构由各种组件或字段构成,只是拥有结构,是一种数据类型,把对个具有相似功能性质的简单类型打包成一个整体

方便调用这些变量,存在的目的就是方便程序的管理操作,在程序运行时会被作为临时对象创建。

工作区基本上是用于存储单行数据的变量。

内表是一种以固定格式将数据存储在ABAP的工作存储器中的方法,数据逐行存储。

语法:

结构使用types定义:

types:begin of t_line,

name(2) type C,

age(2) type C,

end of t_line.

工作区使用DATA定义:

DATA:BEGIN OF T_DATA,

NAME(2) TYPE C,

AGE(2) TYPE C,

END OF T_DATA.

DATA W_LINE TYPE\LIKE T_LINE.

内表使用DATA定义:

DATA MARA TYPE\LIKE TABLE OF MARA

结构只是作为数据类型的参照,不进行数据操作

工作区只能拥有一条数据

内表作为有类似表结构类型的变量

数据的展示通过把数据库的结果记录插入到内表,由内表循环到工作区进行展示

四、EXPORTING与IMPORTING的区别

在定义function 时使用exporting表示function要传出的参数

在调用function时使用exporting表示function要传入的参数

importing反之

在定义function时使用importing表示function要传入的参数

在调用function时使用importing表示function要传出的参数

(不得不吐槽一下这个逻辑importing传入的变量调用却要用exporting来接收,真麻烦)

五、STOP、EXIT、RETURN、CHECK、LEAVE、REJECT的使用场景区分

stop

使用该命令的程序位置

INITIALIZATION

AT SELECTION-SCREEN

START-OF-SELECTION

GET

处理说明

1)当在INITIALIZATION事件执行该命令,系统将直接触发应用服务器和客户端屏幕元素的发送;

2)在其他事件中将直接触发END-OF-SELECTION事件的执行,如果不想执行END-OF-SELECTION,请使用RETURN或者 EXIT.

exit

使用该命令的程序位置

用于循环和程序模块中:

DO和其他处理模块中(event block, dialog module, procedure (function module, method, subroutine))…ENDDO,WHILE…ENDWHILE,LOOP…ENDLOOP,SELECT…ENDSELECT

处理说明

1、 循环处理中,EXIT只跳出当前的循环;

2、 在START-OF-SELECTION, GET, END-OF-SELECTION事件中,将直接触发List输出,将不执行END-OF-SELECTION事件;如果没有List输出,系统将直接返回选择屏幕;

3、 对于procedure系统返回调用处;

注意事项

SAP推荐EXIT只是用于循环处理,对于处理模块请使用Return。

return

使用该命令的程序位置

用于处理模块中(event block, dialog module, procedure (function module, method, subroutine))

处理说明

1、 对于procedure ,RETURN将无条件退出当前的处理模块,不影响后续模块的执行;

2、 对于START-OF-SELECTION, GET, END-OF-SELECTION事件中,将直接触发List输出,将不执行END-OF-SELECTION事件;如果没有List输出,系统将直接返回选择屏幕;

注意事项

RETURN不管存在多少层次的循环,将直接退出当前处理模块,这一点和EXIT不同。

check

使用该命令的程序位置

用于循环和程序模块中:DO和其他处理模块中(event block, dialog module, procedure (function module, method, subroutine))…ENDDO,WHILE…ENDWHILE,LOOP…ENDLOOP,SELECT…ENDSELECT

处理说明

1、 循环处理中,CHECK只是不执行本次循环的后续处理,继续调到下一次循环;

2、 在START-OF-SELECTION, GET, END-OF-SELECTION事件中,只是中断本事件内的后续代码的执行 ,不影响其他后续模块的处理,这和EXIT,RETURN是不同的;

3、 对于没有循环procedure系统返回调用处;

4、 对逻辑数据库的GET事件,系统退出本次纪录和子节点的读取处理,将继续下一条纪录的处理;

REJECT

使用该命令的程序位置

用于逻辑数据库的GET处理事件中

处理说明

REJECT的处理类似CHECK,但和CHECK不同的是:REJECT如果在循环内也同样退出本次的处理,而CHECK只是退出循环,不退出处理

LEAVE

LEAVE PROGRAM. 退出整个程序

LEAVE TO TRANSACTION ta

LEAVE LIST-PROCESSING.          从list processor回到dialog processor

LEAVE TO LIST-PROCESSING    控制权从dialog processor转交给list processor

LEAVE { SCREEN | {TO SCREEN dynnr} }

注意事项

Sap推荐CHECK只是用于循环处理,对于处理模块请使用Return。

区别:在LOOP 中 check 只是不执行本次循环的后续处理,继续调到下一次循环;

EXIT只跳出当前的循环继续执行loop外的语句。

return 跳出form了

在form 中 三种效果一样都跳到下个PERFORM frm_test

在事件中 CHECK  在START-OF-SELECTION, GET, END-OF-SELECTION事件中,只是中断本事件内的后续代码的执行 ,不影响其他后续模块的处理

在事件中, exit,return 在START-OF-SELECTION, GET, END-OF-SELECTION事件中,将直接触发List输出,将不执行END-OF-SELECTION事件;如果没有List输出,系统将直接返回选择屏幕。

六、宏概念及用法

宏:是一种单纯源代码复用的技术,不存在参数传递机制,可以在程序内定义和调用。

用法:

定义:

 DEFINE INCREMENT.    "INCREMENT为自定义宏的名称。
       ......

          ADD 1 TO &1.
           WRITE: / &1.
           WRITE: / &2.
 END-OF-DEFINITION.

调用:

 INCREMENT number str.   "调用宏,number是参数一,对应&1,str是参数二,对应&2

 注意:与子程序不同的是,宏通过&N(N为索引)接收传入的参数,不需要定义接收参数的类型及格式。宏只能被本程序中定义于宏后面的语名所调用,宏一般定义于程序最开始。

七、数据对象与数据类型的区别:

  • 数据对象是程序内存中操作的数据值,数据类型定义它的属性,可以看作是生成对象的模板不占据内存单元,数据对象是类型的实例,是内存中的存储单元。
  • 数据类型可以在ABAP程序中或者ABAP词典中定义,这种数据类型成为完全预定义类型或者命名类型。
  • 数据对象不一定必须基于完全预定义的类型而创建,如:DATA txt(15) type c.该语句直接生成了一个15字节的C类型数据,此处的15字节的C类型即为一个隐含的数据类型。这种类型不能离开数据对象而独立存在,称为匿名类型。
  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值