zoukankan      html  css  js  c++  java
  • ABAP开发基础知识:11)子程序的建立与调用

          ABAP子程序(Subrouting)是包含在程序中的一段具有一定功能的代码,能够将某个功能作为一个小程序包含在主程序中,以方便程序分析及阅读。特别是一此程序中多次用到的功能,可以简化代码,增加程序的可读性且便于维护。

          1.子程序的定义

           通过FORM...ENDFORM语名可以实现子程序的定义,通过PERFORM语句来实现子程序的调用。
           [For Example]
         
    PERFORM welcome. "调用子程序
          FORM welcome.      "定义子程序
             WRITE / 'subrouting'.
          ENDFORM.

          2.子程序接口参数的定义及使用

          子程序实现了将某段功能的封装处理,那么子程序怎样实现与ABAP程序中其它变量的数值的交换呢?可以通过定义子程序接口来实现,该方法共包括3种模式。

          1)FORM TABLES itab2...itabn:以表的方式传输数据。
          [For Example]
          DATA:BEGIN OF staff OCCURS 0,
             name(10) TYPE C,
          END OF staff.

          staff-name = 'jack'.
          APPEND staff.  "对内表赋值


          PERFORM u TABLES staff. "输出jack.

          FORM u TABLES x STRUCTURE staff.
            WRITE:/ x-name.
          ENDFORM

           2)FORM TABLES USING [VALUE(p1)...pn]:向子程序中直接传输参数,该传输值在子程序中不改变。
           [For Example]
           DATA:str1(10) TYPE C,
                   str2(10) TYPE C.
           str1 = 'Hello'.
           str2 = 'SAP'.

           PERFORM CON_STR USING str1 str2.

           FORM CON_STR USING s1 s2.
             DATA:str_all(20) TYPE C.
             CONCATENATE s1 s2 INTO str_all.
             WRITE:/ str_all.
           ENDFORM.

           3)FORM CHANGING [value(p1...pn)]:向子程序传输表或参数,程序执行结果可通过该表或参数返回给供主程序。
           [For Example]
           DATA:num TYPE I VALUE 10.
           PERFORM add_value CHANGING num.
           WRITE:num.  "调用子程序,输出值为20.

           FORM add_value CHANGING num.
             num = num + 10.
           ENDFORM.

           3)调用指定程序中的子程序
       
    不同的ABAP程序中的子程序是可以共用的,通过ABAP语句PERFORM form IN PROGRAM prog能够调用指定程序中的子程序,并执行子程序中包含的功能。
          [For Example]
          *例如一程序名:ZTEST,它包含一个子程序ADD_VALUE与上例结构一致
          DATA:num2 TYPE I VALUE 10.
          PERFORM ADD_VALUE CHANGING num2 IN PROGRAM ZTEST.
          WRITE:num2."调用子程序加10,输出值为20.

          4)通过TCode调用指定程序中的子程序

          在SAP业务中,通常会将程序与TCode绑定以方便记忆。同样,在ABAP中可以通过语句CALL来实现对某TCode中相对应的子程序的调用,相关语法请参考以下代码:CALL TRANSACTION TCode

         [For Example]
         CALL TRANSACTION 'ICON' and skip first screen.  "调用TCODE:ICON并展开初始界面。

          5)使用SUBMIT方法调用另一个程序
          
    在ABAP中可以直接调用具体程序来实现该程序的所有功能。使用语句SUBMIT可以直接通过程序名来调用该程序,并提供程序执行中所需要输入的字段及参数,其语法及属性如下:

         [Syntax]
         SUBMIT <程序名>.
         ...USING SELECTION-SCREEN <SCR>.   "调用子屏幕
         ...IVA  SELECTION-SCREEN.       "显示所调用程序的初始屏幕
         ...AND RETURN.    "调用指定程序执行后可返回上一屏幕

         调用某一程序语法如:
         SUBMIT ZTEST.
           VIA SELECTION-SCREEN
           USING SELECTION-SCREEN 1000
           AND RETURN.

     


         


        

  • 相关阅读:
    LIBSVM
    tf-idf
    DIV+CSS例子
    网页背景设置
    获取JDBC中的ResultSet的记录的条数
    SQL 基本语句
    经典SQL语句大全
    JS(截取字符串,显示当前系统时间yyyy-MM-dd,从文本框得到的数值计算)
    JavaScript实现全排列
    Java发送邮件
  • 原文地址:https://www.cnblogs.com/foxting/p/2447167.html
Copyright © 2011-2022 走看看