亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

ABAP屏幕基礎

2019-11-14 12:53:22
字體:
來源:轉載
供稿:網友

Select語句的使用

關鍵字into后可以加 structure(結構體), internal table(內表) 和 fieldlist(字段列表)

 

 

Authority 權限

 

程序員可以根據權限對象創建權限實例

而basic 負責將權限分配給其他用戶

 

 

At selection-screen

在選擇屏幕中輸入值后,點擊屏幕左上角的運行按鈕 或 按回車鍵時,可以對輸入的數據進行有效性校驗.

重點: at selection-screen最大的作用是檢查當前用戶是否具有對輸入數據進行操作的權限

 

程序中 

第一個事件塊是 load-of-PRogram  也可以附加使用initialization

但是不能只

程序中事件的啟動順序

1.        Load-of-program

2.        (Initialization) (optional event block 可選事件塊)

3.        At selection-screen

4.        Start-of-selection (default event block 缺省事件塊)

5.        At line-selection

 

注意:當程序中沒有指定任何事件塊時, 系統默認為start-of-selection事件

 

 

用戶雙擊basic list screen的一條數據時,系統從隱藏域中查找相應的數據.

并將數據回傳給全局變量中去.

 

當雙擊一條數據的時候 sy-lsind + 1

當沒找到at line-selection事件塊時,sy-lsind又自動減1

 

 

Selection screen選擇屏幕

 

選擇屏幕的屬性

1.        Input help 輸入幫助Possible entries help 可輸入值幫助

2.        Value entry 定制字段可選擇范圍

3.        Type checksMultilingual capacity  多語言

4.        Variants 變式

 

變式的創建

1.      將選擇屏幕中的輸入域填寫完畢

2.      將其保存為變式

1)       輸入變式名

2)       輸入變式描述

3)       為變式設定相關屬性

 

注意:一定要將屏幕中的值填寫完畢以后再保存變式

 

變式的特點

1.      可以簡化輸入

2.      可以用于后臺自動運行程序, 而不需要用戶自己輸入值

 

重點:  variant 變式 是client-specifc  client依賴的.

 

Seletion screen 選擇屏幕

 

定義選擇屏幕上的字段有兩種方式

1.      single value input單值輸入選擇屏幕, 使用parameters 關鍵字 定義 .

2.      multiple value input 多值輸入選擇屏幕,使用 select-options 關鍵字 定義

 

parameters功能: 用戶可以通過選擇屏幕輸入查詢條件對數據庫進行訪問.

 

使用parameters 定義選擇屏幕的兩點限制

1.      變量名的字數長度不可以超過8個字符.

2.      給定義的時候賦值 需要 用關鍵字 default 而不能用 value

 

定義語法: parameters <變量名>type <類型>.

注:如果使用dataelement定義變量,則該變量也具有語義意義.

 

 

Selction screen 的執行順序:

1.        程序啟動時,觸發load-of-program 事件.

2.        顯示層彈出屏幕

3.        用戶輸入值并確定屏幕后,觸發start-of-selection事件

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.        parameters 定義的變量是不可分解的變量

2.        select-options ,表面上定義的是一個字段, 實際上定義的是字段取值范圍的內表

 

select-options功能:

根據用戶輸入的 value range 取值范圍 到數據庫中查找符合范圍的數據

 

Select-options 定義的內表

重要:  Select-options內表具有表頭行

該內表有4個字段

1.        Sign 符號標示 取值: I (included 被包含) , E (excluded 不被包含).

2.        Option 操作   取值: BT(between在范圍之間) , EQ(equal 等于)

3.        Low 最小值   取值: 用戶輸入的最小值

4.        High 最大值   取值:用戶輸入的最大值

 

當屏幕彈出后, 點擊mulitple selction按鈕可以加入其他選擇范圍

范圍包括

1.      single value include 單值包含

2.      range inculde 范圍包含

3.      single value exclude 單值不包含

4.      range exculde 范圍不包含

 

select-options 運行原理

1.        程序運行后, select-options創建的內表中沒有數據

2.        屏幕彈出后,用戶輸入數據

3.        此時,系統將字段范圍保存到該內表中

4.        用戶確定屏幕后,系統將內表中的信息翻譯成對應的native SQL

5.        數據庫將符合用戶輸入范圍的數據返回給用戶

 

 

注意:使用loop at 循環一個帶有head line 的內表,不需要加[].

 

 

Selction screen events 選擇屏幕事件

 

事件啟動流程

1.        程序啟動后,觸發load-of-program或initialization 事件對變量進行初始化

2.        如果有parameters 或 select-options屏幕變量,則會彈出選擇屏幕

3.        用戶輸入值后,點擊 回車 或 運行(F8)(有區別,見下文) 完成屏幕輸入

4.        如果程序中有 at selection-screen 事件的話, 這時它就會被觸發,它的功能是 對用戶輸入的值進行校驗,而最主要的功能是,判斷用戶是否具有對該數據進行操作的權限.

5.        當校驗成功后, start-of-selection 別觸發.并顯示Basic list screen

6.        雙擊其中一條數據, 則會觸發 at line-selection……..

 

重點: 回車 和運行(F8)的區別

1.        回車: 僅僅具有校驗功能, 無論校驗成功與否, 程序都不會往下執行

2.        運行(F8): 校驗成功后 程序才能往下運行,如果校驗失敗,程序無法繼續運行

 

 

注意: at selection screen 的主要功能是authority check 權限校驗 ,如果校驗失敗,則應該生成一個E(error)類型的message 以通知用戶校驗失敗.

 

 

User Dialog screen用戶會話屏幕(或稱為Dynpro Screen ,standardscreen)

 

Dynpro screen 功能:用戶可以通過屏幕錄入或修改數據

 

Dynpro screen 參數

1.        Attributes屏幕屬性: screen number  shorttext   nextscreen    screentype 

2.        Layout 屏幕布局:  屏幕屬性的擺放順序

3.        Element list 元素列表:  所有元素的集合

4.        Flow control 控制流程:  flow logic流邏輯(dynpro screen  PBO 和PAI事件中所調用的module模塊).

 

Dypro screen Attributes屬性

1.        Screen number: 屏幕編號 3位

2.        short text : 屏幕描述

3.        Nex screen: 下一屏幕編號, 當該屏幕結束后所執行的屏幕, 編號為0時,程序將會在調用屏幕的語句后繼續運行.

4.        Screen type :屏幕類型normal一般屏幕,subscreen子屏幕,modal dialog box模態窗口

 

 

 

Dypro screen 運行流程

1.      使用call screen 100(屏幕編碼), 調用一個屏幕

2.      屏幕彈出之前, 啟動PBO事件

3.      用戶在屏幕輸入值并確定后,輸入的值會被傳入到內存變量當中

4.      當屏幕關閉時,PAI事件觸發

5.      PAI結束以后, 程序將會根據該屏幕的next screen 跳到下一屏幕

6.      當next screen 為本屏幕的編號, 則需要使用自定義按鈕退出屏幕,否則會出現屏幕死循環現象.

 

PBO module: PBO 事件對應的模塊

PAI  module. PAI 事件對應的模塊

 

Next screen 的配置

1.      靜態配置: 通過dynpro screen 自身屬性配置next screen

2.      動態配置: 在程序的PAI事件中 使用關鍵字 SET screen 200(下一屏幕編號)定義下一屏幕,當PAI運行到該語句時, 該屏幕的靜態配置 則會被 動態配置所覆蓋

 

 

使用T CODE 運行屏幕

功能: 使用T CODE可以使ABAP以外的配置人員 在workbench 以外運行屏幕.

 

Dynrpo screen 在程序中可以使用的位置

1.        觸發Start-of-selection,生成basic list screen

2.        雙擊單條數據

3.        觸發 at line-selection 事件

4.        在這個事件中 call screen 100.

5.        彈出dynpro screen, 用戶輸入相關值

6.        點擊 save 保存到數據庫 ,點擊back 返回到basic list screen

 

Screen painter 屏幕繪制器

功能:專門繪制ABAP屏幕的程序,可以繪制dynpro screen

 

注意:必須在安裝GUI的時候選擇并安裝.

 

可以通過screen 屏幕上的 LAYOUT 鍵,可以進入 screen painter ,通過Graphicallayout editor 布局編輯器 對布局進行編輯

 

Dynpro Screen 具體操作

1.      根據spfli-carrid字段建立paramters選擇屏幕

2.      根據 spfli 建立結構體變量wa_spfli

3.      在start-of-selection事件中 打印Basic list screen屏幕

4.      在 at line-selection 事件中 call screen 100

5.      建立屏幕100 , 填寫描述 和next screen

6.      通過 screen painter 編輯screen 100的布局

7.      通過 字典庫結構體sdyn_conn 在屏幕上批量加入字段

8.      創建兩個 push button,名字分別為 SAVE 和 BACK ,描述以及Fcode 都于按鈕名相同

9.      在屏幕的Element list 選項卡中, 在最后一行添加字段 OK_CODE

10.   保存屏幕 并激活

11.   在程序中聲明變量OK_CODE與屏幕字段相對應,注: TYPE ok_code LIKE sy-ucomm.

12.   在屏幕 Flow logic選項卡中打開PBO注釋中的 module ,并且將module創建在主程序內

13.   在主程序中創建結構體變量sdyn_conn,使內存中的字段變量能夠與屏幕中的字段同名對應 注:TABLES sdyn_conn

14.   在PBOmodule中, 首先清空OK_CODE 通過hidearea隱藏域回傳的字段到數據庫中查找相應的數據,并將數據傳遞到sdyn_conn結構體變量中.

15.   打開PAImodule的注釋并將module創建到主程序中.

16.  對OK_CODE進行CASE判斷,如果為SAVE則提示message信息,如果為BACK,則通過關鍵字 SET SCREEN<屏幕編號> 跳轉到指定的屏幕中去

17.   保存整個程序 并激活.

 

重點:在PBO事件中第一步一定要清空OK_CODE(CLEAR ok_code)

1.        假如ok_code沒有清空.

2.        當用戶第一次進入屏幕并點擊保存按鈕時(例如:SAVE),這時ok_code 的值為 SAVE,

3.        當用戶第二次進入屏幕時, 由于ok_code沒有被清空,所以ok_code依然為SAVE,

4.        當屏幕數據還沒有輸入完整時, 用戶可能會通過點擊push button 以外的方式 結束屏幕.

5.        這時,程序觸發PAI事件, 而PAI事件會進入CASE 中的WHEN ‘SAVE’語句, 此時很可能對數據庫產生誤操作.

6.        所以,PBO中一定要清空ok_code 以避免以上情況

 

 

暫時消息:可以使用  message‘hello’ type ‘I’.

 

 

Global modularization  全局模塊化

 

Function module : 屬于repositiry中對對象, 封裝了最為常用的代碼.

 

Fuction group

1.        是多個function module的集合

2.        擁有組內所有module 可以共享的對象

 

Function group 工作原理:

1.        當一個Function group中某一個Functionmodule,被程序第一次調用的時候

2.        Function group 中所有的組成部分(包括共享對象 和modual)都會被調入內存.

3.        當第二個程序再一次調用group中的module 時,就可以直接從內存中調用module了

4.        當程序完成并不再使用module時, funtion group就會在內存中被清除

 

注意:Functiongroup不能太大,粒度不適合過大.每一次調用,都會將group所有部分調入到內存,如果過大 ,則會降低系統運行效率.

 

Function group 共享性

如果group 中的一個module 修改了group 中的屬性,那么當組內的module再次訪問該屬性時,顯示的屬性就是已經修改后的屬性

 

 

Function group 需要通過接口來調用

 

Function module

 

Fucntion module 類型

1.      normal Fucntion module 一般類型

2.      Remote-enabled module 可被遠程調用類型

3.      Update module 更新類型

 

 

Function module interface 參數

1.        Import 輸入參數 

2.        Export 輸出參數

3.        Changing 更改參數

 

重要: 聲明module 時,參數要以 module 內部為參照體, 進來的數據為import , 出去的數據為 export.

       而當程序調用module時,則需要以程序內部為參照體, 出去的數據為 export,進來的的數據為inport

 

注意:Import 和 export 參數都是可選的, 也可以設定為passvalue值傳, 缺省以及推薦傳送方式 是 引用傳.由于調用module 時, 需要調用group的整個數據,數據量較大, 所以選擇引用傳能提高效率.

 

 

Function module 的創建

1.        右鍵package--- create ----function group 創建functiongroup  注意: function group 不能重名 

2.        在function group下創建function module

3.        設定fuction module interface 參數

4.        在source code 中寫入執行的代碼

5.        建立程序調用function module

6.        點擊 Pattern 按鈕, 在 CALL FUNCTION 選項中 輸入module名,確定

7.        修改參數值  注意: 一定要將程序中的參數 與 module中的參數相對應

8.        當function 調用成功后, 系統變量sy-subrc = 0.

 

Classes and Objects 類和對象

 

ABAP 可以創建一個引用類型的數據類型

DATA ref1 TYPE REF TO class. 注:Class是數據類型

DATA ref2 TYPE REF TO class.

定義兩個能指向 class 的指針

 

CREATE OBJECT ref1    

CREATE OBJECT 相當于java 中的new

 

方法的調用

CALL METHOD ref1 -> meth1 (方法名)

EXPORTING

IMPORTING

EXCEPTIONS

 

 

 

面向對象中封裝了很多組件

1.        一個BOR business object repositiry 包含多個 BO business object

2.        一個商業對象  business object 包含多個BAPI Business API

 

BAPI: 屬于全局調用的方法,業務層的函數

 

 

Standardlized BAPIs  ---標準化的  BAPIs

1.        GetList

2.        GetDetail

3.        Create Change, Delete Cancel

4.        Addlem RemoveItem.

 

 

BAPI 就是 function module , 相當于business functionmodule

 

 

Calling programs調用程序

程序之間的調用.

Insertion(謙讓式)

當程序A調用程序B時, 程序B占據棧頂,程序A壓在下面, 當程序B執行完畢后,程序A繼續執行

 

Restart(搶占式)

當程序A調用程序B時,程序A在棧頂被移出而被程序B所占據

 

程序調用語句:

在程序中使用 submit關鍵字 調用 下一個程序

1)       Submit prog_name_2 (restart)

2)       Submit prog_name_2 and return (insertion)

3)       Submit prog_name_2 via selection-screen andreturn   (insertion)

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.        Internal session. 程序執行窗口

2.        External session. 用戶的窗口

 

Session流程

1.      用戶登陸系統時的系統環境為terminal session

2.      此時系統開辟了一個External session,用戶可以自主創建 , 重要:最大數為6

3.      當一個程序運行的時候,該程序所占的區域為internal session, 相當于程序的內存區域

 

 

Memory

1.        ABAP memory  屬于一個External session 的內存區域

2.        SAPmemory       屬于一個 terminal session 的內存區域

 

在一個External session中 ,程序A將數據存放至ABAP memory中,程序B可以從中取出存放的數據.

 

在同一個terminalsession(同一個操作用戶)的前提下,程序A數據存放到 SAP memory中,程序B可以共享內存中的數據.

 

 

在同一個External session中,  (Externalsession相當于一個堆棧)

Insertion

程序A 調用 程序B  ,  程序B 調用 程序C

此時 internal session 從上到下的位置為 C – B -- A

 

Restart

程序A 調用 程序B,  程序A會在棧頂被拿掉, 被程序B占據位置

 

 

注意:例如,在restart情況下,堆棧中已經有程序A, B, C 三個程序,C在棧頂, 此時程序C調用了使用程序D所創建的TCODE,此時程序D將占據整個窗口,與此同時,堆棧將全部被清空,ABAP memory也會被clear


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
全亚洲最色的网站在线观看| 国产丝袜一区视频在线观看| 日韩欧美成人区| 在线观看久久av| 日韩一中文字幕| 激情成人中文字幕| 欧美黄色片免费观看| 国内精品久久久久伊人av| 久久久精品视频在线观看| 欧美日韩成人在线视频| 亚洲视频在线免费观看| 2019中文字幕在线免费观看| 欧美三级欧美成人高清www| 亚洲第一区第一页| 日本成人激情视频| 欧美性猛交xxxx乱大交极品| 日韩一二三在线视频播| 亚洲欧美综合另类中字| 国产精品日韩av| 国产亚洲一区二区精品| 日韩经典中文字幕| 青青草国产精品一区二区| 欧美黑人国产人伦爽爽爽| 性色av一区二区三区红粉影视| 欧美另类极品videosbest最新版本| 欧美中文字幕在线视频| 色先锋久久影院av| 日韩精品在线免费观看| 成人激情视频在线观看| 亚洲国产精品va在看黑人| 日韩av免费一区| 亚洲第一精品久久忘忧草社区| 亚洲国产古装精品网站| 色噜噜狠狠色综合网图区| 欧美专区在线观看| 成人免费看黄网站| 在线性视频日韩欧美| 亚洲欧美日韩天堂一区二区| 国产欧美日韩91| 欧美日韩国产丝袜另类| 欧美日韩在线免费观看| 日韩精品视频三区| 日韩精品在线视频| 色综合老司机第九色激情| 国产精品亚洲аv天堂网| 九九热在线精品视频| 亚洲全黄一级网站| 俺去亚洲欧洲欧美日韩| 色吧影院999| 欧美激情一级二级| 中文字幕视频一区二区在线有码| 久久久久久久国产精品视频| 欧美风情在线观看| 尤物yw午夜国产精品视频| 51精品在线观看| 136fldh精品导航福利| 亚洲小视频在线| 麻豆乱码国产一区二区三区| 九九热这里只有精品6| 日韩欧美aⅴ综合网站发布| 一本色道久久综合狠狠躁篇怎么玩| 亚洲欧美另类在线观看| 国产中文字幕91| 亚洲欧美中文字幕| 国产精品第1页| 欧美日韩美女在线| 日韩午夜在线视频| www国产精品com| 92看片淫黄大片看国产片| 日韩高清av一区二区三区| 亚洲一区二区免费| 超在线视频97| 久久久久久亚洲精品| 亚洲美女黄色片| 中文字幕久热精品视频在线| 97视频在线观看免费高清完整版在线观看| 日韩av中文字幕在线免费观看| 久久久在线视频| 国产成人+综合亚洲+天堂| 国产精品久久久av| 日韩人体视频一二区| 久久久久久18| 永久555www成人免费| 欧美尤物巨大精品爽| 日本欧美中文字幕| 国产精品aaa| 日韩精品免费在线视频| 一区二区三区国产在线观看| 成人在线播放av| 亚洲成人激情在线观看| 精品久久久在线观看| 成人性生交大片免费看视频直播| 欧洲午夜精品久久久| 国产一区二区三区丝袜| 精品视频—区二区三区免费| 色综合久久悠悠| 久久久久久网址| 国产精品久久久久久久久粉嫩av| 国产精品久久久久久久久久久久久| 亚洲免费小视频| 久久久久久美女| 性色av一区二区三区红粉影视| 久久久久久久久久久亚洲| 一区二区国产精品视频| 国产精品麻豆va在线播放| 国产一区欧美二区三区| 日韩中文字幕国产精品| 久久精品人人爽| 奇门遁甲1982国语版免费观看高清| 久久国产精品免费视频| 日韩欧美亚洲成人| 国产精品成人免费视频| 一本色道久久综合狠狠躁篇怎么玩| 中文亚洲视频在线| 成人福利在线观看| 亚洲欧美一区二区三区久久| 久久久视频免费观看| 一区二区av在线| 欧美午夜精品久久久久久浪潮| 精品久久久视频| 日韩精品一区二区视频| 18久久久久久| 亚洲aⅴ日韩av电影在线观看| 国产亚洲人成a一在线v站| 在线视频欧美性高潮| 国产精品va在线播放我和闺蜜| 中文字幕在线精品| 国产欧美欧洲在线观看| 青青在线视频一区二区三区| 亚洲香蕉在线观看| 欧美日本高清一区| 国产精品一区二区久久| 韩国三级日本三级少妇99| 中文字幕日韩av| 亚洲精品国产精品久久清纯直播| 成人激情视频在线播放| 亚洲免费影视第一页| 国语自产精品视频在线看| 国产精品美乳一区二区免费| 欧美视频中文字幕在线| 亚洲开心激情网| 性欧美长视频免费观看不卡| 日韩精品中文字幕久久臀| 亚洲大胆人体在线| 国产精品一区二区三区在线播放| 久青草国产97香蕉在线视频| 亚洲成人a**站| 欧美高清电影在线看| 亚洲国产天堂久久综合网| 亚洲精品色婷婷福利天堂| 亚洲国产高潮在线观看| 4k岛国日韩精品**专区| 日韩精品中文字幕在线播放| 欧美中文在线免费| 欧洲美女免费图片一区| 日韩精品中文字幕有码专区| 日韩中文字幕在线视频播放| 亚洲色图50p| 日本精品一区二区三区在线播放视频| 国产精品白嫩初高中害羞小美女| 日韩免费黄色av| 日本国产精品视频| 日韩国产欧美精品一区二区三区| 欧美老女人bb|