`
JerryWang_SAP
  • 浏览: 1026408 次
  • 性别: Icon_minigender_1
  • 来自: 成都
文章分类
社区版块
存档分类
最新评论

ABAP方法的exporting类型参数,需要在方法实现最开始显式初始化么

阅读更多

# Sent: Monday, September 23, 2013 10:59 AM

Subject: code review遗留问题: is it necessary to explicitly initialize the exporting parameter within implementation itself

像下图里的exporting parameter需要在method 实现最开始时显式CLEAR么?

答案是it depends.

pass by value checkbox默认未选中,即pass by reference,此时实参的reference直接传到method 实现里,修改method里的形参即直接修改了实参。

如果是pass by value,在runtime进入method执行时,abap runtime自动为输入和输出形参创建local object,然后把输入实参的value copy到local object里,method里的计算都存储在输出形参的local object里,method执行结束后再把local object的值copy到输出实参。

在pass by reference的情况下,exporting参数在进入函数内时不会自动被初始化,而仍然为传入时实参的值,因此需要developer 自己负责去初始化,否则可能会出现unexpepected的behavior。

什么时候用pass by reference,什么时候用pass by value?

Pass by reference性能更好,但需要developer自己在实现里初始化exporting parameter

如果期望输出参数仅当method 成功执行之后才返回给caller,用pass by value

如果参数是一个很复杂的structure,比如nested table,或者按照abap help里面的建议值—超过100bytes后最好用pass by reference。

二者更详细的区别参考abap help。

Extended check会自动把所有违反规则的code 列出来,比如CL_CRM_SOC_FND_ACCESS_IMPL 有17处:

这些issue被categorize成programming guideline violation,不会算作ATC error。

0
0
分享到:
评论

相关推荐

    BOM按层展开在ABAP中的几个实现方法

    文件名“BOM按层展开在ABAP中的几个实现方法.pdf”很可能包含了上述方法的详细步骤、示例代码以及相关注意事项。阅读这份文档可以帮助读者深入理解如何在ABAP环境下处理和展示物料清单的层级结构,对于从事制造业...

    abap BADI的实现

    3. **定义实现接口**:在实现界面中,同样需要选择“Interface”,然后指定实现接口(例如`ZIF_EX_TEST`)。 4. **编写实现代码**:在实现类中编写具体的逻辑。这通常涉及定义实现类的方法,这些方法必须与定义的...

    ABAP 基本数据类型及计算

    在进行计算时,ABAP的F(Floating Point)类型可能会因为浮点数的精度问题导致不精确的结果,如示例中的`f3 = f1 - f2`,而P类型则可以避免这种精度问题,提供精确的计算结果。因此,当需要进行高精度计算时,P类型...

    ABAP数据类型笔记(详细).pdf

    `VALUE`选项用于给变量初始化,如`DATA gv_num3 VALUE 5`,将变量设置为初始值5。`LENGTH`和`DECIMALS`用于指定字符、数值和浮点类型变量的长度和小数位数,如`DATA gv_char1 LENGTH 10`定义一个长度为10的字符型...

    sap abap oo实现alv框可编辑

    在这个方法中,我们可以根据需要,实现自定义的数据验证和处理逻辑。 使用面向对象编程在SAP ABAP中实现ALV框的可编辑功能,可以使得我们的程序更加灵活和可维护。通过定义事件接收器类,并将其与ALV框对象关联起来...

    abap-ALV.rar_ABAP系统ALV_abap_abap开发alv

    REUSE_ALV_GRID_DISPLAY_LVC函数是ABAP ALV编程中常用的一个函数模块,它负责初始化并显示ALV网格。这个函数的主要步骤包括: 1. 初始化ALV:调用FUNCTION模块`REUSE_ALV_GRID_DISPLAY`,并传递必要的参数,如选择的...

    ABAP调用函数自动填充模式

    “声明变量”部分意味着在调用函数时,ABAP编辑器可以同时创建并初始化函数所需的变量。这样,我们不需要手动为每个参数创建变量,节省了大量时间。通常,编辑器会根据函数参数的数据类型自动生成VAR关键字后面的...

    sap abap找表的18种方法

    在 SAP ABAP 开发中,查找和操作数据库表是日常任务的重要组成部分。下面将详细介绍标题“sap abap找表的18种方法”所涵盖的知识点,这些方法...在实际工作中,开发人员通常会结合使用多种方法,以实现最佳的解决方案。

    ABAP ALV面向对象方法

    - 在面向对象的ABAP中,ALV的实现变得更加模块化和可扩展。 - 可以通过继承自`cl_salv_table`的类来创建自定义的ALV Grid Control实例。 - 开发者还可以利用事件驱动机制来响应用户交互,如行选择、排序请求等。 ...

    ABAP 调用ABAP PROXY

    1. **实例化Proxy对象**:在ABAP程序中,首先需要创建Proxy类的实例。 2. **参数设置**:根据服务接口的要求,设置调用所需的输入参数。 3. **调用方法**:通过Proxy对象调用相应的方法执行服务。 4. **处理返回结果...

    ABAP 函数介绍

    ABAP 函数调用方法详解 ABAP 函数调用是 SAP 系统中的一种常用技术,用于实现业务逻辑的复杂处理。该技术可以实现同步调用和异步调用两种方式,本文将对这两种方式进行详细的介绍。 1. 异步调用 异步调用是指在主...

    ABAP程序相互调用

    ABAP程序相互调用 ABAP程序相互调用是指在ABAP中,通过SUBMIT关键字实现程序之间的调用,这是一个非常有用的关键字。...ABAP程序相互调用可以通过SUBMIT关键字来实现,并且可以使用多种方法来传递数据和参数。

    abap产生流水号的两种方法

    两种方法都可以实现流水号的生成,但是在选择方法时需要考虑到性能和可维护性等因素。 优缺点分析 使用范围对象的优点是: * 可以维护流水号的规则,可以自定义流水号的生成规则。 * 可以控制流水号的最大值和...

    abap 如何刷新序号

    为了保持序号顺序不变,通常需要在ALV的初始化阶段就设定好相应的参数。例如,可以定义一个额外的列用于存储原始数据的索引,然后在每次排序或过滤之后,根据这个索引重新计算序号。这样即使数据行的位置发生了变化...

    ABAP程序的8种类型

    ABAP 程序的 8 种类型 ABAP 程序有哪些类型?在用事务码 SE38 创建新程序时,总是被要求指定一个程序类型,这些程序类型分别完成不同的功能,如果选择错误,程序就可能无法运行。 可执行程序 (Executable Program)...

    abap_alv去掉标准按钮

    在设置好排除列表后,需要在ALV网格控件的初始化过程中传递这个列表。这通常是通过调用`SET_TABLE_FOR_FIRST_DISPLAY`方法完成的,该方法允许开发者指定各种参数来控制ALV的显示行为: ```abap CALL METHOD GRF_...

    ABAP url下载文件

    根据提供的文件信息,本文将详细解释 ABAP 中通过 URL 下载文件的相关知识点,包括 ABAP 程序中实现此功能的基本步骤和技术要点。 ### ABAP URL 文件下载概述 ABAP(Advanced Business Application Programming)...

Global site tag (gtag.js) - Google Analytics