跟我学ABAP/4- 模块化:事件和子程序

11 篇文章 0 订阅

模块化:事件和子程序

 

ABAP/4的模块单元

 

ABAP/4有三种模块单元:

 

  • Event:事件

     

  • Subroutine:子程序
  • Function module:功能模块

 

 

事件

 

Table 17.1  ABAP/4 Events

 

Category

 

Events

 

Driver

 

initialization
at selection-screen
start-of-selection
get
end-of-selection

 

User

 

at line-selection
at pfn
at user-command

 

Program

 

top-of-page
end-of-page

 

子程序

 

定义子程序的语句

 

form s [tables t1 t2 ...]
       [using u1 value(u2) ...]
       [changing c1 value(c2) ...].
    ---
    endform.

这里:

  • s 是子程序名称
  • t1, t2, u1, u2, c1, c2 是参数(parameter
  • tables 允许内表作为参数传递

     

  • value 不能用在tables
  • The value addition can be applied to any variables passed via using or changing.
  • --- 代表任意行数的代码

     

注意事项:

 

l      所有子句都是可选的

 

l      子句的顺序不可颠倒

 

l      每个子句最多只能出现一次,但子句后的参数可以有多个

 

l      参数之间用空格分隔

 

l      tables的参数只能是内表,不能是数据库表

 

l      一个子程序可以调用另一个子程序

 

l      支持递归,一个子程序可以调用它自己,也可以调用调用它的子程序

 

l      子程序的定义不能嵌套,即不能在一个子程序内定义另一个子程序

 

 

 

调用子程序的语句

 

perform a) s

 

        b) n of s1 s2 s3 ...
                                 [tables t1 t2 ...]
                                 [using u1 u2 ...]
                                 [changing c1 c2 ...].

这里:

  • s, s1, s2, s3, 是子程序名称
  • n 是数值变量
  • a) b) 只能选者其一
  • a) b) 中都可出现tables using changing
  • perform语句中不能用value()
  • b)中执行的是第n个子程序

     

在任何时候都可以用下面的语句退出子程序:

 

  • exit 如果不在循环语句内,就退出子程序,执行perform后的下一语句;如果在循环语句内,则退出循环

     

  • check 同上
  • stop 退出子程序,触发end-of-selection事件

全局变量和局部变量

 

在子程序外部用tablesdata语句定义的变量称为全局变量。

 

在子程序内部用localdatastatics定义的变量称为局部变量。

 

Tables定义的总是全局变量,在子程序内用local代替tables定义局部变量。用local定义的变量可以在被调用的子程序中使用,用datastatics定义的变量则不能。使用statics定义的局部变量在子程序结束时不会被释放,仍可被它自己使用,这样的变量在第一次调用该子程序时初始化(分配内存和赋初值),在后面调用时会保留上一次调用后的值。使用data定义的局部变量则不同,在每次调用时都要初始化。

 

 

 

了解功能组

 

功能组是包含了功能模块的程序。R/3预置了5000多个功能组,总共有30000多个功能模块。

 

功能组的标识符由4个字符组成,自定义功能组的标识符必须以YZ开头。创建功能模块的事务代码是SE37-Function BuilderSAP menu-Tools-ABAP Work bench-Overview),查看功能库的事务代码是SE84-Information System (SAP menu-Tools-ABAP Work bench-Development)SE84可以看到所有信息。

 

功能模块与子程序类似,用语句

 

function fName

 

endfunction

 

定义。用语句

 

call function 'F'
    [exporting   p1 = v1 ... ]
    [importing   p2 = v2 ... ]
    [changing    p3 = v3 ... ]
    [tables      p4 = it ... ]
    [exceptions  x1 = n [others = n]].

这里:

 

  • F 是功能模块名称

     

  • p1 p4  是在功能模块接口中定义的参数名

     

  • v1 v3  是在调用程序中定义的变量或字串名

     

  • it 是在调用程序中定义的内表

     

  • n  任何整数,不能是变量

     

  • x1 是功能模块中抛出的异常名

     

调用。

 

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值