call function中的 exporting/importing/changing | 您所在的位置:网站首页 › 创建function方法 › call function中的 exporting/importing/changing |
文章目录
se37 功能模块功能组啥样的功能模块啥样的,怎么去call它创建功能组创建功能模块调用功能模块测试功能模块保存测试结果增添文档及释放
啥是function module啥是method
作为一个新手,单纯从字面上看,功能模块和方法。
看不懂。好像都可以理解为一个方法啊。
凭我有限的知识,我只听过se37/se38和功能组啥的。 而且我现在还在混淆中。 今天我就磕上了,不怕不懂,就怕不学。虽然又笨基础又烂,但咱还是要学习的。 我为啥要看这个呢,因为我今天在结束例程里面看到了 。本来这种我知识盲区的,我就直接忽略了,因为我反正看不懂。但是今天不行了,全是的。没办法往下看了。因为单纯从这个exporting 和 importing我就理解不了了。光靠猜也不行啊。
先不管创建不创建的,我们先得知道这个组干嘛的。就是一个大池子,用来放功能模块的。但是它可不是单纯就是像个包一样的放东西的,不仅是容器,它自己也要有货的。自带的全局数据生命和一些子例程,然后它里面的所有功能模块都能用。 那这玩意类比到面向对象编程。。。我忘了,我又得回去看看了。 那这不就是类么?功能模块是公共静态方法,类里面包括全局声明。 哎,可惜我C语言没学好。 但是不管, 我要来看看这个功能组到底啥样: 这些听说不好改。 还有其他的前缀: Exx: 是指类和方法 Oxx 指PBO模块 Ixx 指PAI模块 Exx 指event blocks Fxx 指本地子例程 在Top include里面可以添加Dxx: 本地类的declaration声明。 接下来看一个功能组: 再往下的功能模块,里面有好几个。按顺序来的。 系统提供了很多功能模块,但是咱作为小白,啥也不知道,这会咋弄呢? 这里找:utilities是工具、设备的意思。 功能模块,我觉得也跟方法好像没啥差。也就长那样,但是它那个接口参数我就不理解了。 进口出口的。单词意思我都知道,就是我一直把import和export搞混淆。 我一般看到的就是 Export: 这个也就是从功能模块传回调用的程序。从上面的图看来,也就是的值是从功能模块导入的。 那为啥不是 -amount = amount_internal这种格式呢? 咋还反着来呢? Changing: 就是说这些值可变的,原始参数值从调用程序传给功能模块,功能模块可以改变初始值然后再传回给调用程序。 Tables:可以导入和导出的内部表,内部表的内容从调用程序传输到功能模块,功能模块可以改变内部表的内容然后传回给功能模块,表总是通过引用来分配的。 Exceptions: 功能模块运行出错会有exceptions。 那我们如何调用功能模块的呢? 系统终止功能模块,并不返回参数值。但是会赋值r给到系统字段SY-SUBRC 就是一个返回码return code。 创建功能组到SE80下面找 function group 一般功能模块用来干啥?执行税务计算,工厂日历。。。 然后这些你写的程序,想要以后重用,那你就在function builder里面建。 流程是啥? 先查查看是否有已实现的function module没有合适的组就创建一个function group创建功能模块定义导入导出参数和例外写功能模块代码,在TOP include里面添加全局数据激活这个功能模块测试这个模块记录功能模块文档及参数(方便其他人使用)释放功能模块要注意的一点是,你调用功能模块的时候,同一个功能组下的所有功能模块都会被加载到调用程序,你要特别注意计划哪些功能该属于一个功能组。否则,调用功能模块会增加内存耗用。(不过不复杂的就无所谓。。。我觉得)
exception里面呢,就填写text了。哪一个exception能被triggered啥的。 在功能模块里也可以调用子例程。子例程可以写在ENDFUNCTION后面,不过我看人家在INCLUDE里面直接弄了一个子例程么。这个以后再看吧。还有Form啥的。 例外啥的: RAISE<exception> 系统终结功能模块,而且返回值到SY-SUBRC。如果调用程序不能处理这个例外,系统会触发一个runtime error。 MESSAGE...RAISING<exception> 不会有runtime error。进程继续,系统显示定义类型的信息。 你得在Include TOP里面确定MESSAGE-ID。然后值会被插入到以下: ○ SY-MSGID (message ID) ○ SY-MSGTY (message type) ○ SY-MSGNO (message number) ○ SY-MSGV1 to SY-MSGV4 (contents of the fields to that are included in the message). 到此我们来理解下功能模块代码的使用:(以下代码我抄的) 接下来可以se38 report里面去调用。 report mdtest. data: result type f. call function ‘MY_DIVIDE’ exporting z1 = 6 m1 = 4 importing res = result exceptions div_zero = 1 others = 2. if sy-sybrc eq 0. write: / ‘Result =’ , result. else. write ‘Division by zero’. endif. 测试功能模块也可以直接小扳手测试: 还可以SE30来查看运行时间分析。 保存测试结果
在function module documentation 记录 释放你的功能模块的话,要通知下组负责人。 |
今日新闻 |
推荐新闻 |
专题文章 |
CopyRight 2018-2019 实验室设备网 版权所有 |