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

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

ABAP屏幕基礎

2019-11-14 11:57:17
字體:
來源:轉載
供稿:網友

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
亚洲精品自拍偷拍| 亚洲一区二区三区视频| 日韩精品视频免费在线观看| 久久精品99久久久久久久久| 欧美黑人又粗大| 国产经典一区二区| 国产精品免费观看在线| 久久国产精品电影| 欧美成年人视频| 国产精品亚洲综合天堂夜夜| 亚洲男人的天堂在线播放| 亚洲一区二区在线| 欧美人成在线视频| 国产精品露脸av在线| 国产精品91久久久| 亚洲性生活视频| 国产精品成熟老女人| 国产亚洲精品久久久久久777| 久久久久久久久爱| 久久精品亚洲94久久精品| 美女视频黄免费的亚洲男人天堂| 亚洲在线一区二区| 亚洲3p在线观看| 亚洲欧美变态国产另类| 2019最新中文字幕| 91亚洲国产精品| 欧美亚洲视频在线观看| 久久综合伊人77777尤物| 国产精品wwww| 日韩av黄色在线观看| 国产精品极品美女在线观看免费| 日韩精品免费视频| 国产精品日韩久久久久| 亚洲人成亚洲人成在线观看| 97精品国产97久久久久久| 伊人成人开心激情综合网| 国产91精品青草社区| 国产日韩中文字幕在线| 欧美国产精品va在线观看| 国产z一区二区三区| 亚洲精品丝袜日韩| 国产精品中文字幕在线观看| 亚洲老头老太hd| 欧美日韩国产成人在线观看| 97精品国产aⅴ7777| 精品久久久久久国产| 国产精品白嫩美女在线观看| 色婷婷综合成人av| 成人免费视频在线观看超级碰| 亚洲午夜av久久乱码| 性夜试看影院91社区| 欧美日韩亚洲一区二区三区| 日本精品视频在线播放| 欧美黑人xxxⅹ高潮交| 91最新国产视频| 成人黄色在线播放| 国产亚洲精品美女久久久久| 成人久久久久久久| 国产精品久久久久久超碰| 国产精品高潮呻吟久久av黑人| 国产精品扒开腿做爽爽爽的视频| 中文国产成人精品久久一| 亚洲三级 欧美三级| 亚洲精品720p| 欧美日韩一二三四五区| 亚洲性猛交xxxxwww| 97久久精品人人澡人人爽缅北| 欧美多人爱爱视频网站| 国产成人精品久久二区二区| 亚洲一区二区三| 欧美大片在线影院| 国模极品一区二区三区| 国产精品日韩欧美综合| 国产精品7m视频| 国产欧美精品一区二区三区介绍| 91国产美女在线观看| 亚洲色图校园春色| 91最新国产视频| 日韩视频一区在线| 最新的欧美黄色| 亚洲第一中文字幕| 久久久精品久久| 5252色成人免费视频| 国产精品第一视频| 欧美成人亚洲成人日韩成人| 555www成人网| 欧美色欧美亚洲高清在线视频| 中文字幕久久亚洲| 福利微拍一区二区| 亚洲色图综合久久| 中文字幕日韩综合av| 久久福利视频网| 亚洲第一福利在线观看| 国产日韩精品在线播放| 日韩成人在线免费观看| 97人洗澡人人免费公开视频碰碰碰| 91久久在线播放| 91九色精品视频| 国产999精品久久久影片官网| 日韩成人激情视频| 国产亚洲视频在线| 久久精品中文字幕免费mv| 国产精品青草久久久久福利99| 国产精品成人在线| 亚洲男人天堂久| 国产精品旅馆在线| 亚洲精品免费一区二区三区| 5252色成人免费视频| 国产精品pans私拍| 久久久久久久999| 国产精品视频不卡| 日韩高清av在线| 欧美电影在线观看完整版| 亚洲图片制服诱惑| 日韩欧美国产骚| 国产v综合v亚洲欧美久久| 国产精品一区av| 久久免费高清视频| 日韩欧美在线视频日韩欧美在线视频| 国产精品视频久久久| 亚洲欧美精品一区| 96精品视频在线| 欧美成aaa人片免费看| 久久国产精品偷| 亚洲午夜性刺激影院| 亚洲美女视频网| 日韩欧美一区二区三区久久| 国产性色av一区二区| 国产综合香蕉五月婷在线| 欧美最顶级丰满的aⅴ艳星| 自拍偷拍亚洲一区| 亚洲欧美日韩精品久久| 一本色道久久综合狠狠躁篇的优点| 国产精品久久久av久久久| 精品中文字幕久久久久久| 91夜夜揉人人捏人人添红杏| 中文字幕自拍vr一区二区三区| 日韩在线视频播放| 国产精品美女主播在线观看纯欲| 国产欧美一区二区三区在线看| 性欧美暴力猛交69hd| 亚洲国产精品女人久久久| 日韩av手机在线观看| 国产精品成人va在线观看| 日韩欧美在线字幕| 欧美激情极品视频| 精品免费在线视频| 国产一区二区三区视频免费| 日韩美女免费线视频| 疯狂蹂躏欧美一区二区精品| 国产精品伦子伦免费视频| 亚洲精品自拍视频| 成人xvideos免费视频| 国产精品一区二区三区成人| 91av在线免费观看视频| 91久久久久久久久| 91久久久久久国产精品| 亚洲第一天堂av| 国产啪精品视频网站| 国产精品久久网| 精品久久香蕉国产线看观看亚洲| 亚洲欧洲日本专区| 国产精品美女久久久久av超清| 亚洲精品一区中文字幕乱码|