日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

ABAP屏幕基础

發(fā)布時(shí)間:2025/3/20 编程问答 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ABAP屏幕基础 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

Select語(yǔ)句的使用

關(guān)鍵字into后可以加 structure(結(jié)構(gòu)體), internal table(內(nèi)表) 和 fieldlist(字段列表)

?

?

Authority 權(quán)限

?

程序員可以根據(jù)權(quán)限對(duì)象創(chuàng)建權(quán)限實(shí)例

而basic 負(fù)責(zé)將權(quán)限分配給其他用戶

?

?

At selection-screen

在選擇屏幕中輸入值后,點(diǎn)擊屏幕左上角的運(yùn)行按鈕 或 按回車鍵時(shí),可以對(duì)輸入的數(shù)據(jù)進(jìn)行有效性校驗(yàn).

重點(diǎn): at selection-screen最大的作用是檢查當(dāng)前用戶是否具有對(duì)輸入數(shù)據(jù)進(jìn)行操作的權(quán)限

?

程序中?

第一個(gè)事件塊是 load-of-program??也可以附加使用initialization

但是不能只

程序中事件的啟動(dòng)順序

1.????????Load-of-program

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

3.????????At selection-screen

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

5.????????At line-selection

?

注意:當(dāng)程序中沒有指定任何事件塊時(shí), 系統(tǒng)默認(rèn)為start-of-selection事件

?

?

用戶雙擊basic list screen的一條數(shù)據(jù)時(shí),系統(tǒng)從隱藏域中查找相應(yīng)的數(shù)據(jù).

并將數(shù)據(jù)回傳給全局變量中去.

?

當(dāng)雙擊一條數(shù)據(jù)的時(shí)候 sy-lsind + 1

當(dāng)沒找到at line-selection事件塊時(shí),sy-lsind又自動(dòng)減1

?

?

Selection screen選擇屏幕

?

選擇屏幕的屬性

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

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

3.????????Type checks
Multilingual capacity? 多語(yǔ)言

4.????????Variants 變式

?

變式的創(chuàng)建

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

2.??????將其保存為變式

1)???????輸入變式名

2)???????輸入變式描述

3)???????為變式設(shè)定相關(guān)屬性

?

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

?

變式的特點(diǎn)

1.??????可以簡(jiǎn)化輸入

2.??????可以用于后臺(tái)自動(dòng)運(yùn)行程序, 而不需要用戶自己輸入值

?

重點(diǎn):? variant 變式 是client-specifc? client依賴的.

?

Seletion screen 選擇屏幕

?

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

1.??????single value input單值輸入選擇屏幕, 使用parameters 關(guān)鍵字 定義 .

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

?

parameters功能: 用戶可以通過(guò)選擇屏幕輸入查詢條件對(duì)數(shù)據(jù)庫(kù)進(jìn)行訪問(wèn).

?

使用parameters 定義選擇屏幕的兩點(diǎn)限制

1.??????變量名的字?jǐn)?shù)長(zhǎng)度不可以超過(guò)8個(gè)字符.

2.??????給定義的時(shí)候賦值 需要 用關(guān)鍵字 default 而不能用 value

?

定義語(yǔ)法: parameters <變量名>type <類型>.

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

?

?

Selction screen 的執(zhí)行順序:

1.????????程序啟動(dòng)時(shí),觸發(fā)load-of-program 事件.

2.????????顯示層彈出屏幕

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

4.????????輸入的值被傳到內(nèi)存中,進(jìn)一步處理

?

執(zhí)行順序?qū)嵗?

Parameters pa_carr type spfli-carrid.

?

Load-of-program.

Pa_carr = ‘LH’.

?

Start-of-selection.

Pa_carr=’DL’.

Write pa_carr.

?

屏幕彈出時(shí), 輸入域中為 LH ,確定屏幕后, 顯示值為 DL.

?

Value Sets(SELECT-OPTIONS) 多值輸入屏幕

?

Parameters 與 select-options 的區(qū)別

1.????????parameters 定義的變量是不可分解的變量

2.????????select-options ,表面上定義的是一個(gè)字段, 實(shí)際上定義的是字段取值范圍的內(nèi)表

?

select-options功能:

根據(jù)用戶輸入的 value range 取值范圍 到數(shù)據(jù)庫(kù)中查找符合范圍的數(shù)據(jù)

?

Select-options 定義的內(nèi)表

重要: ?Select-options內(nèi)表具有表頭行

該內(nèi)表有4個(gè)字段

1.????????Sign 符號(hào)標(biāo)示 取值: I (included 被包含) , E (excluded 不被包含).

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

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

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

?

當(dāng)屏幕彈出后, 點(diǎn)擊mulitple selction按鈕可以加入其他選擇范圍

范圍包括

1.??????single value include 單值包含

2.??????range inculde 范圍包含

3.??????single value exclude 單值不包含

4.??????range exculde 范圍不包含

?

select-options 運(yùn)行原理

1.????????程序運(yùn)行后, select-options創(chuàng)建的內(nèi)表中沒有數(shù)據(jù)

2.????????屏幕彈出后,用戶輸入數(shù)據(jù)

3.????????此時(shí),系統(tǒng)將字段范圍保存到該內(nèi)表中

4.????????用戶確定屏幕后,系統(tǒng)將內(nèi)表中的信息翻譯成對(duì)應(yīng)的native SQL

5.????????數(shù)據(jù)庫(kù)將符合用戶輸入范圍的數(shù)據(jù)返回給用戶

?

?

注意:使用loop at 循環(huán)一個(gè)帶有head line 的內(nèi)表,不需要加[].

?

?

Selction screen events 選擇屏幕事件

?

事件啟動(dòng)流程

1.????????程序啟動(dòng)后,觸發(fā)load-of-program或initialization 事件對(duì)變量進(jìn)行初始化

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

3.????????用戶輸入值后,點(diǎn)擊 回車 或 運(yùn)行(F8)(有區(qū)別,見下文) 完成屏幕輸入

4.????????如果程序中有 at selection-screen 事件的話, 這時(shí)它就會(huì)被觸發(fā),它的功能是 對(duì)用戶輸入的值進(jìn)行校驗(yàn),而最主要的功能是,判斷用戶是否具有對(duì)該數(shù)據(jù)進(jìn)行操作的權(quán)限.

5.????????當(dāng)校驗(yàn)成功后, start-of-selection 別觸發(fā).并顯示Basic list screen

6.????????雙擊其中一條數(shù)據(jù), 則會(huì)觸發(fā) at line-selection……..

?

重點(diǎn): 回車 和運(yùn)行(F8)的區(qū)別

1.????????回車: 僅僅具有校驗(yàn)功能, 無(wú)論校驗(yàn)成功與否, 程序都不會(huì)往下執(zhí)行

2.????????運(yùn)行(F8): 校驗(yàn)成功后 程序才能往下運(yùn)行,如果校驗(yàn)失敗,程序無(wú)法繼續(xù)運(yùn)行

?

?

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

?

?

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

?

Dynpro screen 功能:用戶可以通過(guò)屏幕錄入或修改數(shù)據(jù)

?

Dynpro screen 參數(shù)

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

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

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

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

?

Dypro screen Attributes屬性

1.????????Screen number: 屏幕編號(hào) 3位

2.????????short text : 屏幕描述

3.????????Nex screen: 下一屏幕編號(hào),?當(dāng)該屏幕結(jié)束后所執(zhí)行的屏幕, 編號(hào)為0時(shí),程序?qū)?huì)在調(diào)用屏幕的語(yǔ)句后繼續(xù)運(yùn)行.

4.????????Screen type :屏幕類型normal一般屏幕,subscreen子屏幕,modal dialog box模態(tài)窗口

?

?

?

Dypro screen 運(yùn)行流程

1.??????使用call screen 100(屏幕編碼), 調(diào)用一個(gè)屏幕

2.??????屏幕彈出之前, 啟動(dòng)PBO事件

3.??????用戶在屏幕輸入值并確定后,輸入的值會(huì)被傳入到內(nèi)存變量當(dāng)中

4.??????當(dāng)屏幕關(guān)閉時(shí),PAI事件觸發(fā)

5.??????PAI結(jié)束以后, 程序?qū)?huì)根據(jù)該屏幕的next screen 跳到下一屏幕

6.??????當(dāng)next screen 為本屏幕的編號(hào), 則需要使用自定義按鈕退出屏幕,否則會(huì)出現(xiàn)屏幕死循環(huán)現(xiàn)象.

?

PBO module: PBO 事件對(duì)應(yīng)的模塊

PAI? module. PAI 事件對(duì)應(yīng)的模塊

?

Next screen 的配置

1.??????靜態(tài)配置: 通過(guò)dynpro screen 自身屬性配置next screen

2.??????動(dòng)態(tài)配置: 在程序的PAI事件中 使用關(guān)鍵字 SET screen 200(下一屏幕編號(hào))定義下一屏幕,當(dāng)PAI運(yùn)行到該語(yǔ)句時(shí), 該屏幕的靜態(tài)配置 則會(huì)被 動(dòng)態(tài)配置所覆蓋

?

?

使用T CODE 運(yùn)行屏幕

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

?

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

1.????????觸發(fā)Start-of-selection,生成basic list screen

2.????????雙擊單條數(shù)據(jù)

3.????????觸發(fā) at line-selection 事件

4.????????在這個(gè)事件中 call screen 100.

5.????????彈出dynpro screen, 用戶輸入相關(guān)值

6.????????點(diǎn)擊 save 保存到數(shù)據(jù)庫(kù) ,點(diǎn)擊back 返回到basic list screen

?

Screen painter 屏幕繪制器

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

?

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

?

可以通過(guò)screen 屏幕上的 LAYOUT 鍵,可以進(jìn)入 screen painter ,通過(guò)Graphicallayout editor 布局編輯器?對(duì)布局進(jìn)行編輯

?

Dynpro Screen 具體操作

1.??????根據(jù)spfli-carrid字段建立paramters選擇屏幕

2.??????根據(jù) spfli 建立結(jié)構(gòu)體變量wa_spfli

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

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

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

6.??????通過(guò) screen painter 編輯screen 100的布局

7.??????通過(guò) 字典庫(kù)結(jié)構(gòu)體sdyn_conn 在屏幕上批量加入字段

8.??????創(chuàng)建兩個(gè) push button,名字分別為 SAVE 和 BACK ,描述以及Fcode 都于按鈕名相同

9.??????在屏幕的Element list 選項(xiàng)卡中, 在最后一行添加字段 OK_CODE

10.?? 保存屏幕 并激活

11.?? 在程序中聲明變量OK_CODE與屏幕字段相對(duì)應(yīng),注: TYPE ok_code LIKE sy-ucomm.

12.?? 在屏幕 Flow logic選項(xiàng)卡中打開PBO注釋中的 module ,并且將module創(chuàng)建在主程序內(nèi)

13.?? 在主程序中創(chuàng)建結(jié)構(gòu)體變量sdyn_conn,使內(nèi)存中的字段變量能夠與屏幕中的字段同名對(duì)應(yīng) 注:TABLES sdyn_conn

14.?? 在PBOmodule中, 首先清空OK_CODE 通過(guò)hidearea隱藏域回傳的字段到數(shù)據(jù)庫(kù)中查找相應(yīng)的數(shù)據(jù),并將數(shù)據(jù)傳遞到sdyn_conn結(jié)構(gòu)體變量中.

15.?? 打開PAImodule的注釋并將module創(chuàng)建到主程序中.

16.??對(duì)OK_CODE進(jìn)行CASE判斷,如果為SAVE則提示message信息,如果為BACK,則通過(guò)關(guān)鍵字 SET SCREEN<屏幕編號(hào)> 跳轉(zhuǎn)到指定的屏幕中去

17.?? 保存整個(gè)程序 并激活.

?

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

1.????????假如ok_code沒有清空.

2.????????當(dāng)用戶第一次進(jìn)入屏幕并點(diǎn)擊保存按鈕時(shí)(例如:SAVE),這時(shí)ok_code 的值為 SAVE,

3.????????當(dāng)用戶第二次進(jìn)入屏幕時(shí), 由于ok_code沒有被清空,所以ok_code依然為SAVE,

4.????????當(dāng)屏幕數(shù)據(jù)還沒有輸入完整時(shí), 用戶可能會(huì)通過(guò)點(diǎn)擊push button 以外的方式 結(jié)束屏幕.

5.????????這時(shí),程序觸發(fā)PAI事件, 而PAI事件會(huì)進(jìn)入CASE 中的WHEN ‘SAVE’語(yǔ)句, 此時(shí)很可能對(duì)數(shù)據(jù)庫(kù)產(chǎn)生誤操作.

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

?

?

暫時(shí)消息:可以使用? message‘hello’ type ‘I’.

?

?

Global modularization? 全局模塊化

?

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

?

Fuction group

1.????????是多個(gè)function module的集合

2.????????擁有組內(nèi)所有module 可以共享的對(duì)象

?

Function group 工作原理:

1.????????當(dāng)一個(gè)Function group中某一個(gè)Functionmodule,被程序第一次調(diào)用的時(shí)候

2.????????Function group 中所有的組成部分(包括共享對(duì)象 和modual)都會(huì)被調(diào)入內(nèi)存.

3.????????當(dāng)?shù)诙€(gè)程序再一次調(diào)用group中的module 時(shí),就可以直接從內(nèi)存中調(diào)用module了

4.????????當(dāng)程序完成并不再使用module時(shí), funtion group就會(huì)在內(nèi)存中被清除

?

注意:Functiongroup不能太大,粒度不適合過(guò)大.每一次調(diào)用,都會(huì)將group所有部分調(diào)入到內(nèi)存,如果過(guò)大 ,則會(huì)降低系統(tǒng)運(yùn)行效率.

?

Function group 共享性

如果group 中的一個(gè)module 修改了group 中的屬性,那么當(dāng)組內(nèi)的module再次訪問(wèn)該屬性時(shí),顯示的屬性就是已經(jīng)修改后的屬性

?

?

Function group 需要通過(guò)接口來(lái)調(diào)用

?

Function module

?

Fucntion module 類型

1.??????normal Fucntion module 一般類型

2.??????Remote-enabled module 可被遠(yuǎn)程調(diào)用類型

3.??????Update module 更新類型

?

?

Function module interface 參數(shù)

1.????????Import 輸入?yún)?shù)?

2.????????Export 輸出參數(shù)

3.????????Changing 更改參數(shù)

?

重要: 聲明module 時(shí),參數(shù)要以 module 內(nèi)部為參照體, 進(jìn)來(lái)的數(shù)據(jù)為import , 出去的數(shù)據(jù)為 export.

???????而當(dāng)程序調(diào)用module時(shí),則需要以程序內(nèi)部為參照體, 出去的數(shù)據(jù)為 export,進(jìn)來(lái)的的數(shù)據(jù)為inport

?

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

?

?

Function module 的創(chuàng)建

1.????????右鍵package--- create ----function group 創(chuàng)建functiongroup? 注意: function group 不能重名?

2.????????在function group下創(chuàng)建function module

3.????????設(shè)定fuction module interface 參數(shù)

4.????????在source code 中寫入執(zhí)行的代碼

5.????????建立程序調(diào)用function module

6.????????點(diǎn)擊 Pattern 按鈕, 在 CALL FUNCTION 選項(xiàng)中 輸入module名,確定

7.????????修改參數(shù)值? 注意: 一定要將程序中的參數(shù) 與 module中的參數(shù)相對(duì)應(yīng)

8.????????當(dāng)function 調(diào)用成功后, 系統(tǒng)變量sy-subrc = 0.

?

Classes and Objects 類和對(duì)象

?

ABAP 可以創(chuàng)建一個(gè)引用類型的數(shù)據(jù)類型

DATA ref1 TYPE REF TO class.?注:Class是數(shù)據(jù)類型

DATA ref2 TYPE REF TO class.

定義兩個(gè)能指向 class 的指針

?

CREATE OBJECT ref1????

CREATE OBJECT 相當(dāng)于java 中的new

?

方法的調(diào)用

CALL METHOD ref1 -> meth1?(方法名)

EXPORTING

IMPORTING

EXCEPTIONS

?

?

?

面向?qū)ο笾蟹庋b了很多組件

1.????????一個(gè)BOR business object repositiry 包含多個(gè) BO business object

2.????????一個(gè)商業(yè)對(duì)象? business object 包含多個(gè)BAPI?Business API

?

BAPI: 屬于全局調(diào)用的方法,業(yè)務(wù)層的函數(shù)

?

?

Standardlized BAPIs??---標(biāo)準(zhǔn)化的? BAPIs

1.????????GetList

2.????????GetDetail

3.????????Create Change, Delete Cancel

4.????????Addlem RemoveItem.

?

?

BAPI 就是 function module , 相當(dāng)于business functionmodule

?

?

Calling programs調(diào)用程序

程序之間的調(diào)用.

Insertion(謙讓式)

當(dāng)程序A調(diào)用程序B時(shí), 程序B占據(jù)棧頂,程序A壓在下面, 當(dāng)程序B執(zhí)行完畢后,程序A繼續(xù)執(zhí)行

?

Restart(搶占式)

當(dāng)程序A調(diào)用程序B時(shí),程序A在棧頂被移出而被程序B所占據(jù)

?

程序調(diào)用語(yǔ)句:

在程序中使用 submit關(guān)鍵字 調(diào)用 下一個(gè)程序

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被調(diào)用時(shí)會(huì)彈出屏幕

?

?

?

Restart

Leave to transaction<T-code>: 功能相當(dāng)于輸入”/n<T-code>”,當(dāng)程序執(zhí)行該語(yǔ)句時(shí),該程序就會(huì)在內(nèi)存被清空,接著轉(zhuǎn)到相應(yīng)的TCODE程序中去

?

?

insertion

call transaction <T_CODE> [andskip first screen 忽略被調(diào)用程序的第一個(gè)屏幕]

執(zhí)行下一個(gè)程序, 當(dāng)前程序會(huì)被壓到棧的下一個(gè)位置而不會(huì)被清空

?

重點(diǎn): and skip first screen 忽略被調(diào)用程序的第一個(gè)屏幕,但是 PBO 和 PAI的Module還會(huì)被執(zhí)行.

?

?

Memory management內(nèi)存管理

重要:當(dāng)R/3 用戶登陸系統(tǒng)的時(shí)候, 整個(gè)系統(tǒng)環(huán)境被稱作 userterminal session.

其中包含:

1.????????Internal session. 程序執(zhí)行窗口

2.????????External session. 用戶的窗口

?

Session流程

1.??????用戶登陸系統(tǒng)時(shí)的系統(tǒng)環(huán)境為terminal session

2.??????此時(shí)系統(tǒng)開辟了一個(gè)External session,用戶可以自主創(chuàng)建 , 重要:最大數(shù)為6

3.??????當(dāng)一個(gè)程序運(yùn)行的時(shí)候,該程序所占的區(qū)域?yàn)閕nternal session, 相當(dāng)于程序的內(nèi)存區(qū)域

?

?

Memory

1.????????ABAP memory? 屬于一個(gè)External session 的內(nèi)存區(qū)域

2.????????SAPmemory???????屬于一個(gè) terminal session 的內(nèi)存區(qū)域

?

在一個(gè)External session中 ,程序A將數(shù)據(jù)存放至ABAP memory中,程序B可以從中取出存放的數(shù)據(jù).

?

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

?

?

在同一個(gè)External session中,? (Externalsession相當(dāng)于一個(gè)堆棧)

Insertion

程序A 調(diào)用 程序B? ,? 程序B 調(diào)用 程序C

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

?

Restart

程序A 調(diào)用 程序B,? 程序A會(huì)在棧頂被拿掉, 被程序B占據(jù)位置

?

?

注意:例如,在restart情況下,堆棧中已經(jīng)有程序A, B, C 三個(gè)程序,C在棧頂,?此時(shí)程序C調(diào)用了使用程序D所創(chuàng)建的TCODE,此時(shí)程序D將占據(jù)整個(gè)窗口,與此同時(shí),堆棧將全部被清空,ABAP memory也會(huì)被clear.


總結(jié)

以上是生活随笔為你收集整理的ABAP屏幕基础的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。