首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ABAP创建对象

ABAP创建对象
EN

Stack Overflow用户
提问于 2009-12-10 07:25:28
回答 3查看 1.7K关注 0票数 1

下面是创建对象的代码片段。

代码语言:javascript
复制
Form userexit_save_document_prepare.
  data: /bks/exitmanager type ref to /bks/exit_manager.
  create object /bks/exitmanager
         exporting main_prog = 'SAPMV45A'
                   exit_form = 'USEREXIT_SAVE_DOCUMENT_PREPARE'.
  include /bks/exitman.
ENDFORM.

我是从文件里得到的

出于性能考虑,应该填充参数"main_prog“和"exit_form”,对于用户出口,这些参数通常像"SAPMV45A“中的"user_field_modification”那样执行,而“SAPMV45A”中的“user_field_modification”是每个屏幕字段都需要的。

1)当调用create /bks/exitmanager时,后面到底发生了什么?为对象分配的内存等等?

2)为什么出于性能原因,需要填充create对象的导出参数?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-12-10 07:34:16

我不是百分之百确定,但我最好的猜测是:

  1. 构造了一个名为/bks/exitmanager的对象(它是类/bks/exit_
  2. 的一个对象,或者更具体地说是对该类对象的引用/“指针”)。所需的内存分配等,但也调用“构造函数”代码(可能设置一些实例变量传递给调用)。
  3. ,如果您显式地传递这些参数,它们不必在运行时进行“计算”(例如,通过查看调用堆栈)。这将节省一些时间,特别是如果必须经常这样做的话(如documentation).

所述)。

票数 1
EN

Stack Overflow用户

发布于 2009-12-10 13:38:14

它将有助于了解什么是/bks/exit_manager,并简要解释一下您想要完成的任务。

扩展IronGoofy所写的内容:

数据: /bks/exitmanager类型ref to /bks/exit_manager --这将在程序的ABAP内存中创建一个引用指针,非常类似于字段符号。而且,它必须已经被剥夺了。如果它在包含中,则需要移动包含。

创建对象/bks/exitmanager导出main_prog = 'SAPMV45A‘exit_form =’USEREXIT_SAVE_DOCUMENT_exit_form‘。这将根据声明的类创建对象实例,并将其分配给引用指针。它首先通过调用构造函数方法来做到这一点。只有通过检查/bks/exit_manager,您才能准确地找到需要导出的内容。

票数 0
EN

Stack Overflow用户

发布于 2009-12-12 19:51:30

如果不查看/BKS/EXIT_MANAGER的构造函数,就不可能知道发生了什么以及为什么要传递参数。不过,保持设置缓冲区是一种常见的模式(考虑一个静态散列表,其中的键是参数和值,保存任何复杂且耗时的参数和值)。在这种情况下,我希望得到一个不能直接访问的受保护构造函数,但只使用一个静态工厂方法,该方法使用散列表来保留退出处理程序本身的引用--最好地使用弱引用.

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1879211

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档