Select語句的使用
關鍵字into后可以加 structure(結構體), internal table(內表) 和 fieldlist(字段列表)
Authority 權限
程序員可以根據權限對象創建權限實例
而basic 負責將權限分配給其他用戶
At selection-screen
在選擇屏幕中輸入值后,點擊屏幕左上角的運行按鈕 或 按回車鍵時,可以對輸入的數據進行有效性校驗.
重點: at selection-screen最大的作用是檢查當前用戶是否具有對輸入數據進行操作的權限
程序中
第一個事件塊是 load-of-PRogram
但是不能只
程序中事件的啟動順序
1.
2.
3.
4.
5.
注意:當程序中沒有指定任何事件塊時, 系統默認為start-of-selection事件
用戶雙擊basic list screen的一條數據時,系統從隱藏域中查找相應的數據.
并將數據回傳給全局變量中去.
當雙擊一條數據的時候 sy-lsind + 1
當沒找到at line-selection事件塊時,sy-lsind又自動減1
Selection screen選擇屏幕
選擇屏幕的屬性
1.
2.
3.
4.
變式的創建
1.
2.
1)
2)
3)
注意:一定要將屏幕中的值填寫完畢以后再保存變式
變式的特點
1.
2.
重點:
Seletion screen 選擇屏幕
定義選擇屏幕上的字段有兩種方式
1.
2.
parameters功能: 用戶可以通過選擇屏幕輸入查詢條件對數據庫進行訪問.
使用parameters 定義選擇屏幕的兩點限制
1.
2.
定義語法: parameters <變量名>type <類型>.
注:如果使用dataelement定義變量,則該變量也具有語義意義.
Selction screen 的執行順序:
1.
2.
3.
4.
執行順序實例:
Parameters pa_carr type spfli-carrid.
Load-of-program.
Pa_carr = ‘LH’.
Start-of-selection.
Pa_carr=’DL’.
Write pa_carr.
屏幕彈出時, 輸入域中為 LH ,確定屏幕后, 顯示值為 DL.
Value Sets(SELECT-OPTIONS) 多值輸入屏幕
Parameters 與 select-options 的區別
1.
2.
select-options功能:
根據用戶輸入的 value range 取值范圍 到數據庫中查找符合范圍的數據
Select-options 定義的內表
重要:
該內表有4個字段
1.
2.
3.
4.
當屏幕彈出后, 點擊mulitple selction按鈕可以加入其他選擇范圍
范圍包括
1.
2.
3.
4.
select-options 運行原理
1.
2.
3.
4.
5.
注意:使用loop at 循環一個帶有head line 的內表,不需要加[].
Selction screen events 選擇屏幕事件
事件啟動流程
1.
2.
3.
4.
5.
6.
重點: 回車 和運行(F8)的區別
1.
2.
注意: at selection screen 的主要功能是authority check 權限校驗 ,如果校驗失敗,則應該生成一個E(error)類型的message 以通知用戶校驗失敗.
User Dialog screen用戶會話屏幕(或稱為Dynpro Screen ,standardscreen)
Dynpro screen 功能:用戶可以通過屏幕錄入或修改數據
Dynpro screen 參數
1.
2.
3.
4.
Dypro screen Attributes屬性
1.
2.
3.
4.
Dypro screen 運行流程
1.
2.
3.
4.
5.
6.
PBO module: PBO 事件對應的模塊
PAI
Next screen 的配置
1.
2.
使用T CODE 運行屏幕
功能: 使用T CODE可以使ABAP以外的配置人員 在workbench 以外運行屏幕.
Dynrpo screen 在程序中可以使用的位置
1.
2.
3.
4.
5.
6.
Screen painter 屏幕繪制器
功能:專門繪制ABAP屏幕的程序,可以繪制dynpro screen
注意:必須在安裝GUI的時候選擇并安裝.
可以通過screen 屏幕上的 LAYOUT 鍵,可以進入 screen painter ,通過Graphicallayout editor 布局編輯器
Dynpro Screen 具體操作
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
重點:在PBO事件中第一步一定要清空OK_CODE(CLEAR ok_code)
1.
2.
3.
4.
5.
6.
暫時消息:可以使用
Global modularization
Function module : 屬于repositiry中對對象, 封裝了最為常用的代碼.
Fuction group
1.
2.
Function group 工作原理:
1.
2.
3.
4.
注意:Functiongroup不能太大,粒度不適合過大.每一次調用,都會將group所有部分調入到內存,如果過大 ,則會降低系統運行效率.
Function group 共享性
如果group 中的一個module 修改了group 中的屬性,那么當組內的module再次訪問該屬性時,顯示的屬性就是已經修改后的屬性
Function group 需要通過接口來調用
Function module
Fucntion module 類型
1.
2.
3.
Function module interface 參數
1.
2.
3.
重要: 聲明module 時,參數要以 module 內部為參照體, 進來的數據為import , 出去的數據為 export.
注意:Import 和 export 參數都是可選的, 也可以設定為passvalue值傳, 缺省以及推薦傳送方式 是 引用傳.由于調用module 時, 需要調用group的整個數據,數據量較大, 所以選擇引用傳能提高效率.
Function module 的創建
1.
2.
3.
4.
5.
6.
7.
8.
Classes and Objects 類和對象
ABAP 可以創建一個引用類型的數據類型
DATA ref1 TYPE REF TO class.
DATA ref2 TYPE REF TO class.
定義兩個能指向 class 的指針
CREATE OBJECT ref1
CREATE OBJECT 相當于java 中的new
方法的調用
CALL METHOD ref1 -> meth1
EXPORTING
IMPORTING
EXCEPTIONS
面向對象中封裝了很多組件
1.
2.
BAPI: 屬于全局調用的方法,業務層的函數
Standardlized BAPIs
1.
2.
3.
4.
BAPI 就是 function module , 相當于business functionmodule
Calling programs調用程序
程序之間的調用.
Insertion(謙讓式)
當程序A調用程序B時, 程序B占據棧頂,程序A壓在下面, 當程序B執行完畢后,程序A繼續執行
Restart(搶占式)
當程序A調用程序B時,程序A在棧頂被移出而被程序B所占據
程序調用語句:
在程序中使用 submit關鍵字 調用 下一個程序
1)
2)
3)
via selection-screen作用:如果程序2中有選擇屏幕,則程序2被調用時會彈出屏幕
Restart
Leave to transaction<T-code>: 功能相當于輸入”/n<T-code>”,當程序執行該語句時,該程序就會在內存被清空,接著轉到相應的TCODE程序中去
insertion
call transaction <T_CODE> [andskip first screen 忽略被調用程序的第一個屏幕]
執行下一個程序, 當前程序會被壓到棧的下一個位置而不會被清空
重點: and skip first screen 忽略被調用程序的第一個屏幕,但是 PBO 和 PAI的Module還會被執行.
Memory management內存管理
重要:當R/3 用戶登陸系統的時候, 整個系統環境被稱作 userterminal session.
其中包含:
1.
2.
Session流程
1.
2.
3.
Memory
1.
2.
在一個External session中 ,程序A將數據存放至ABAP memory中,程序B可以從中取出存放的數據.
在同一個terminalsession(同一個操作用戶)的前提下,程序A數據存放到 SAP memory中,程序B可以共享內存中的數據.
在同一個External session中,
Insertion
程序A 調用 程序B
此時 internal session 從上到下的位置為 C – B -- A
Restart
程序A 調用 程序B,
注意:例如,在restart情況下,堆棧中已經有程序A, B, C 三個程序,C在棧頂,
新聞熱點
疑難解答