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是可以既做输入参数又做输出参数的

你可能感兴趣的:(SAP)