Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Abap 创建对象_Abap - Fatal编程技术网

Abap 创建对象

Abap 创建对象,abap,Abap,下面是创建对象的代码段 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'. inc

下面是创建对象的代码段

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.
我是从文件上查到的

出于性能方面的考虑,对于userexits,应填写参数“main_prog”和“exit_form”,这些参数的执行通常与“SAPMV45A”中的“user_field_modification”类似,每个屏幕字段都会调用这些参数

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


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

我不是100%确定,但这里是我的最佳猜测:

  • 构造了一个名为/bks/exitmanager的对象(它是类/bks/exit_manager的项目,或者更具体地说是指向此类对象的引用/“指针”)。。所需的内存分配等,但也会调用“构造函数”代码(可能会将一些实例变量设置为传递给调用)

  • 如果显式传递这些参数,则不必在运行时“计算”它们(例如,通过查看调用堆栈)。这将节省一些时间,特别是如果必须经常这样做(如文档中所述)


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

  • 构造了一个名为/bks/exitmanager的对象(它是类/bks/exit_manager的项目,或者更具体地说是指向此类对象的引用/“指针”)。。所需的内存分配等,但也会调用“构造函数”代码(可能会将一些实例变量设置为传递给调用)

  • 如果显式传递这些参数,则不必在运行时“计算”它们(例如,通过查看调用堆栈)。这将节省一些时间,特别是如果必须经常这样做(如文档中所述)


  • 这将有助于了解/bks/exit_manager实际上是什么,并简要说明您试图实现的目标

    扩展IronGoofy所写的内容:

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

    创建对象/bks/exitmanager 正在导出主程序='SAPMV45A' exit\u form='USEREXIT\u SAVE\u DOCUMENT\u PREPARE'。 这将基于声明的类创建一个对象实例,并将其分配给引用指针。它通过首先调用构造函数方法来实现这一点。
    只有通过检查/bks/exit_manager,您才能确切地了解您需要导出的内容。

    了解/bks/exit_manager的实际内容以及您试图完成的任务的简要说明将有所帮助

    扩展IronGoofy所写的内容:

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

    创建对象/bks/exitmanager 正在导出主程序='SAPMV45A' exit\u form='USEREXIT\u SAVE\u DOCUMENT\u PREPARE'。 这将基于声明的类创建一个对象实例,并将其分配给引用指针。它通过首先调用构造函数方法来实现这一点。
    只有通过检查/bks/exit_管理器,您才能准确地找到需要导出的内容。

    如果不查看/bks/exit_管理器的构造函数,就无法知道发生了什么以及为什么要传递参数。不过,保留设置缓冲区是一种常见的模式(设想一个静态哈希表,其中键是参数,值包含获取复杂和耗时的内容)。在这种情况下,我希望有一个无法直接访问的受保护构造函数,但是,只有使用静态工厂方法,即使用哈希表来保留退出处理程序本身的引用—最好使用弱引用…

    如果不查看/BKS/exit\u MANAGER的构造函数,就无法判断发生了什么以及为什么要传递参数。不过,保留设置缓冲区是一种常见的模式(设想一个静态哈希表,其中键是参数,值包含获取复杂和耗时的内容)。在这种情况下,我希望有一个不能直接访问的受保护构造函数,但只能使用静态工厂方法,该方法使用哈希表来保留退出处理程序本身的引用—最好使用弱引用