麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

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

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在线免费播放 | 久久丝袜脚交足黄网站免费 | 欧美区在线 | h网站在线观看 | bt 自拍 另类 综合 欧美 | 在线播放免费视频 | 亚洲成人福利在线 | 成年性羞羞视频免费观看 | 免费黄色小视频网站 | 精品国产一区二区三区在线 | 中文字幕在线观看精品 | 国产1区2区在线 | 黄网站在线免费看 | 日本黄色一级电影 | 97视频 | 美女污污视频在线观看 | 久久久久久久久久亚洲 | 一级大片在线观看 | 91快色视频| xnxx 日本19| 91精品国产乱码久久久久久久久 | av在线免费看网址 | 成人免费观看49www在线观看 | 中文字幕在线视频日本 | 国产99久久精品一区二区300 | 日韩午夜一区二区三区 | 欧美特级一级毛片 | 亚洲福利在线视频 | 爽爽视频免费看 | 久久久久久久久久久影视 | 国产免费传媒av片在线 | 极品国产91在线网站 | 97se亚洲综合在线韩国专区福利 | 九九黄色影院 | 日韩欧美激情视频 | 黄色网址免费在线播放 | 最新中文字幕第一页视频 | 黄色视频a级毛片 | 午夜视|