ABAP中的subroutine和function module
文章目錄
- 1. 子程序變量(參數)類型
- 1.1 by value
- 1.2 by value & result
- 1.3 by reference
- 2. function module
如果我不是一步走到頭。那我加個模塊化的子程序。
這個模塊化的子程序,是個獨立的小個體,可以被重復使用。
也就是給它的參數和它給出的參數不一樣。
1. 子程序變量(參數)類型
在整個程序里,定義參數變量可以在主程序,也可以在子程序。主程序就是大家都能用,子程序就是只有我自己個能用。
當我在主程序中定義了變量,而我要把主程序的變量傳遞給子程序啊,我的主程序變量就是實參,子程序的變量就是形參。
2020.03.29再來補充:
對于從caller傳遞實參給子例程形參的方式三種:
當然傳遞給子例程的參數的數據類型,是由caller決定的咯。
所以你子例程里面,參數類型要么沒有,要么TYPE ANY。要么就是為了看起來方便,給一個TYPE的。
1.1 by value
這種變量的定義語法就是Using VALUE(P1) 變量在VALUE后面的括號里。
就是說只把主程序實參的值拿過來到子程序里用。但是我這里使用的只是實參的值,不會再改回實參里去的。
主程序讓我執行一些任務,我需要用它的變量值。
1.2 by value & result
主程序讓我來基于一些操作,條件來更改一些值。我需要把更改后的值再傳回主程序去。
Perform xyz Using/changing A B C. Form xyz Changing VALUE(P1) type ...VALUE(P2) type...VALUE(P3) type... Endform.或者是這樣:用Using,但是沒有VALUE和括號
Form xyz Using P1 type ...P2 type...P3 type... Endform.1.3 by reference
這種呢,就是形參直接指向實參,你在子程序里用的形參,實際上會直接分配到實參。
Perform xyz changing A B C. Form xyz Changing P1 type ...P2 type...P3 type... Endform.SAP給的解釋是subroutine已經過時了。。。我覺得能看懂還是很必要的。不過也不難。主要就是三種調用方法。
多學點也不吃虧。
2. function module
也許form過時了,但是function module還沒有過時吧。
subroutine一般就是在一個程序內部進行調用,你看到的form一般就放在在這個程序的F的include里面。那么對于一個很大的程序,這么調用是可以的,因為你可能程序中需要調用好幾次。或者為了看起來方便,給放到一個include里面去。
但是function module是可以在不同的程序間調用的,哪里你都可以調用啊。
function module是附在一個function group里的。只要是這個SAP 系統里的程序,都可以調用function module。
SAP也提供了大量的function module。
誰call這個function module呢,誰可以提供import進這個function module的數據。export呢就是把結果從function module給export出去。
changing 就是一邊導入,一邊導出。
table呢和changing是一樣的,就是它里面只能是內表。
exceptions就是來rasing error的。
function module可以在SAP系統內部任何程序被調用,同時如果是個可以在程序外調用的function module,那它就是一個remote function call,RFC。
填完了import和export,在source code里面你就能看到了:
在exceptions里面也填上:
好了,來這里激活,死活激活不了了:doesn’t begin with function pool
這鬼玩意還給我報了個ABAP的runtime error,光看這個error message,實在看不懂講的什么鬼東西。
哎,快下班了,心情急躁的很。
錯誤里頭還是個德文的:指令缺失,或者是程序類型為include。
反正是不知所云。
最后才發現了根本原因,因為我是連帶功能組一起建的,沒激活那個,就來直接激活function module。就激活不起來。
鬼玩意干啥啥都要激活。
激活還讓我找了半天。
激活后,這個function module就可以被其他的program調用了。
那么怎么調用呢?
調用的話好歹得告訴人家你用什么參數跑吧。
就是這么個調法。寫寫玩還是很有意思的。代碼這玩意,教是教不會的,只能自己去寫,去用。
總結
以上是生活随笔為你收集整理的ABAP中的subroutine和function module的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python视频分段_Python玩转视
- 下一篇: 蒲公英4G路由配置