ABAP中函数的参数问题解惑:export/import参数

  1. 进入FUNCTION MODULE BUILDER的事务代码SE37
  2. 在FUNCTION MODULE BUILDER创建窗口中选择菜单“转到->函数组->创建组”创建FUNCTION GROUP
  3. FUNCTION MODULE创建与FUNCTION MODULE调用是相返的。创建时的IMPORTING对应调用时的EXPORTING。反之亦然。
    SAP ABAP FUNCTION MODULE与其它语言中的函数(或方法)的比较:
    • 在FUNCTION MODULE定义时,IMPORTING相当于定义其它语言函数(或方法)的输入参数,exporting相当于定义其它语言函数(或方法)的输出参数,EXCEPTIONS相当于定义其它的函数(或方法)异常,CHANGING是其它语言所没有的它也是表示将实参传递给形参,但是它还有一个很特殊的应用就是在方法调用完成后用于将形参传递给实参。
    • 在FUNCTION MODULE调用时。EXPORTING用于定义将实参传递给形参(相当其它语言函数调用的输入参数),IMPORTING用于将参数传递给实能(相当其它语言函数调用的输出参数)。
    例如:
    创建:
    FUNCTION z_integer_add.
    *"----------------------------------------------------------------------
    *"*"Local interface:
    *"  IMPORTING
    *"     REFERENCE(INPUT_1) TYPE  I
    *"     REFERENCE(INPUT_2) TYPE  I
    *"  EXPORTING
    *"     REFERENCE(OUTPUT) TYPE  I
    *"----------------------------------------------------------------------

      output = input_1 + input_2.

    ENDFUNCTION.
    调用:
    DATA: sum TYPE i,int1 TYPE i VALUE 3,int2 TYPE i VALUE 4.
    CALL FUNCTION 'Z_INTEGER_ADD'
      EXPORTING
        input_1 = int1
        input_2 = int2
      IMPORTING
        output  = sum.
    IF sy-subrc = 0 .
      WRITE: / sum.
    ENDIF.

 

举个例子:假如你写的应用程序Z_XXX中调用了一个function module,你需要在你自己的应用程序中有类似代码如下:

 CALL FUNCTION 'ZGET_ADR_FUNCTION'

   IMPORTING
    xx = xx
    xx = xx

   EXPORTING

    lv_matnr = lv_matobject

    lv_class = 'SAFETY'

    lv_classtype = '001'

  TABLES"
    objectdata = gt_objectdata[].

   其中exporting是你从你的应用程序中传给你要调用的function的参数,importing是你调用的function返回给你程序的参数。如果你看function的代码,那么它的importing参数就是你写的应用程序中的exporting参数,反之亦然。

    关于funcation 中 tables 的用法。exporting 和importing都是flat类型的数据(structure或者单独的变量,必须使flat类型,不能是内表类型),而tables中的参数都必须是内表类型,并且tables是可以既做输入参数又做输出参数的

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值