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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

SAP ABAP逻辑数据库

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

從數(shù)據(jù)庫中取數(shù)據(jù)有三種方式:OPEN SQL NATIVE SQL和LOGICAL DATABASE,LOGICAL DATABASE相對于前兩種方式,有下列優(yōu)勢:

l???????? 它是按照primary key sequence來取數(shù)據(jù)的

l???????? 可以在logic database program加入權(quán)限檢查

l???????? 可以自動產(chǎn)生selection screen使查詢更加靈活

l???????? 程序員不需要知道logical database中表之間的具體關(guān)系

l???????? 對于logical database的性能優(yōu)化可以影響到使用它的任何程序

l???????? 維護(hù)和增強(qiáng)可以實(shí)現(xiàn)中央處理

4.6C中SAP提供了大約190個(gè)logical database。如果logical database有三個(gè)字符,前兩個(gè)是logical database的名字第三個(gè)是logical database的application area。看每個(gè)字符代表的那個(gè)application area可以通過程序的attribute的application field的F4來查看。只有executable或report可以使用logical database。關(guān)鍵字NODE <node>,決定了logical database中的那個(gè)node要被使用,NODES為這個(gè)node準(zhǔn)備響應(yīng)的存儲空間(work area或table area由node type來決定)。在4.6中tables仍然可以被使用。當(dāng)logical database從數(shù)據(jù)庫中讀取數(shù)據(jù)時(shí)就會執(zhí)行PUT <node>從而觸發(fā)GET事件,GET <node>并不取數(shù)據(jù)。事件的執(zhí)行順序是由logical database本身的結(jié)構(gòu)決定的。在get event中使用fields很很重要就像OPEN SQL中盡量避免SELECT *一樣。Logical database是由很多subobjects組成的,structure決定了hierarchy以及數(shù)據(jù)的讀取順序。Node name最多有14個(gè)字符組成,有四種Node type:

l???????? Table(type T):node name是一個(gè)transparent table name,node name和table name的名稱必須一致,不允許deep types。

l???????? DDIC type(type S):任何Node name都可以,node type由dictionary中的structure或table type來決定,允許deep types。

l???????? Type groups(type C):node type是在type group中定義,type group name必須在Type group field中維護(hù)。應(yīng)當(dāng)優(yōu)先使用DDIC TYPE以便像SAP QUERY這樣的應(yīng)用也可以使用。

l???????? Dynamic nodes(type A):沒有固定的type,它在程序運(yùn)行時(shí)才能夠確定。

報(bào)表的START-OF-SELECTION在所有的get events之前發(fā)生,END-OF-SELECTION在所有的get events之后發(fā)生。GET <node> events一旦從logical database中取得數(shù)據(jù)時(shí)都回觸發(fā),所以這個(gè)事件會被多次觸發(fā)。Get events的執(zhí)行順序由logical database的結(jié)構(gòu)決定。當(dāng)節(jié)點(diǎn)的所有子節(jié)點(diǎn)都被處理后再節(jié)點(diǎn)的下一個(gè)數(shù)據(jù)被處理之前就會觸發(fā)GET <node> LATE事件,在事件開始系統(tǒng)會自動創(chuàng)建一line feed,并把color,font和intensity設(shè)為系統(tǒng)默認(rèn),如果在其他事件中設(shè)置了color,也會被重設(shè)為系統(tǒng)默認(rèn)。CHECK結(jié)束當(dāng)前事件,STOP結(jié)束程序處理執(zhí)行END-OF-SELECTION,在END-OF-SELECTION中的STOP,則之際顯示list buffer。EXIT結(jié)束程序處理,也不執(zhí)行END-OF-SELECTION,直接顯示list buffer中的內(nèi)容。

還可以使用REJECT,當(dāng)前的處理被終止,還可以在下一次數(shù)據(jù)讀取時(shí)觸發(fā)。Logical database程序有一個(gè)include:db<name>sel,這里定義了logical database的selection screen。For node把selection分配給單個(gè)的logical node。Selection screen的屏幕形式由程序中的nodes表達(dá)式?jīng)Q定。Field selection可以由Logical database程序中的node決定,這個(gè)通過SELECTION-SCREEN中的FIELD SELECTION FOR NODE決定。Logical database程序中的這段代碼可以使application program中通過GET <node> FIELD <field list>來限制取出數(shù)據(jù)的數(shù)量,logical database程序中可以為某個(gè)Node設(shè)置dynamic selection,在語句中可以通過addition:DYNAMIC SELECTIONS FOR NODE來實(shí)現(xiàn),這樣Dynamic selection button就會在你的報(bào)表的selection screen中出現(xiàn)。另外logical database還可以定義不同的selection screen version。如果你在報(bào)表程序中指定了一個(gè)logical database,你就可以使用logical database的selection screen了。如果在report程序中你只指定了logical database的子節(jié)點(diǎn),其上層的節(jié)點(diǎn)的篩選條件也可以被使用。對于T(table)類型的node,可以通過TABLES來聲明它的work area。值得注意的是logical database總是按照自己的結(jié)構(gòu)來讀取數(shù)據(jù)的,所以當(dāng)你需要讀取logical database的比較深層次的node的數(shù)據(jù)的時(shí)候,你需要考慮換一個(gè)其所在層次比較高的logical database或者自己寫取數(shù)邏輯。Selection view決定了什么樣的字段會顯示在selection screen。可以創(chuàng)建類型為CUS的自己的view,或者覆蓋類型為SAP的view。

Logical database程序的命名規(guī)則是:SAPDB<ldbname>其中l(wèi)dbname是logical database的名稱。這些程序是由subroutine組成的,每個(gè)subroutine對應(yīng)于一個(gè)事件。例如subroutine <init>是在logical database程序啟動前執(zhí)行,用來初始化變量和屏幕選擇。還有其他的一些subroutine也是在屏幕的PBO或PAI事件中發(fā)生的。例如AUTHORITY CHECK是在PAI中發(fā)生的。數(shù)據(jù)庫訪問是在put_<node> subroutine中實(shí)現(xiàn)的。這個(gè)subroutine可能會被多次執(zhí)行,這取決于屏幕的選擇條件。這些subroutine的執(zhí)行順序由logical database的structure來決定。使用logical database的report在執(zhí)行時(shí)控制權(quán)首先屬于logical database program。每個(gè)事件在logical database program中都有一個(gè)對應(yīng)的subroutine。在LDB和相應(yīng)的report之間交互的時(shí)候LDB中的subroutine都會先執(zhí)行。Logical database program讀取數(shù)據(jù)的順序是按照其structure執(zhí)行的,總是從最頂部向下循環(huán)。LDB program是通過PUT_<NODE> subroutine來訪問數(shù)據(jù)的,在PUT event中,control由LDB program傳向report program的GET EVENT。取出來的數(shù)據(jù)或放到report program相應(yīng)的work area中。GET event一旦執(zhí)行完畢control就會還給LDB program。Data read的depth是由report program的GET event來決定的。如果node的某個(gè)field沒有篩選條件,可以在report program中增加這個(gè)字段select-options在這個(gè)node的GET event中通過check來篩選。


總結(jié)

以上是生活随笔為你收集整理的SAP ABAP逻辑数据库的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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