什么是SAP數(shù)據(jù)字典
常見的數(shù)據(jù)庫對象有表空間怎憋,表,字段九昧,索引等盛霎,除開這些,ABAP字典還有一些自己獨創(chuàng)的概念耽装,主要是域(Domain)愤炸,數(shù)據(jù)元素(Data Element),結(jié)構(gòu)(structure)掉奄,透明表(Transparent Table)规个,表類型等凤薛。它們之間的關(guān)系如下圖:
域(Domain):優(yōu)先聲明,用戶定義字段的技術(shù)屬性诞仓,包括數(shù)據(jù)類型缤苫、格式、長度墅拭、初始化值等活玲。域在定義時刻使用SAP的預定義類型
其中預定義類型最常用的是CHAR(字符),DEC(金額)谍婉,INT4(整型)舒憾, NUMC(數(shù)字字符),CURR(貨幣)穗熬, CUKY(貨幣單位), QUAN(數(shù)量)镀迂, UNIT(數(shù)量單位) 。需要注意的是CURR貨幣類型唤蔗,一定要指定參考表字段CUKY探遵。如果是QUAN數(shù)量類型,要指定參考表字段UNIT箱季。我們在系統(tǒng)中實際創(chuàng)建一個域。域通常用ZD開頭
步驟1:事務碼se11, 回車棍掐。
步驟2:輸入域的名稱ZD_AMOUNT, 建議以ZD_開頭藏雏。
步驟3:創(chuàng)建。
步驟4:輸入技術(shù)屬性塌衰,包括數(shù)據(jù)類型诉稍,輸出長度,小數(shù)位等最疆。
步驟5:激活杯巨,若要產(chǎn)生請求號可選擇本地。
數(shù)據(jù)元素 Date Element:數(shù)據(jù)元素以Domain作為參考對象努酸,繼承Domain的所有屬性服爷,也可以在Domain的基礎(chǔ)上重新定義相關(guān)長度,小數(shù)位等屬性获诈。一個域可以被多個數(shù)據(jù)元素引用仍源。
步驟1剖张、2:數(shù)據(jù)元素可以引用域升略,也可以直接定義內(nèi)置的數(shù)據(jù)類型胞锰。
步驟3:可以在這里指定搜索幫助赌厅,關(guān)于搜索幫助,后面做進一步說明砂缩。
步驟4:指定參數(shù)ID泵额,參數(shù)ID用于SAP屏幕間傳輸參數(shù):輸出使用 SET Parameter ID ‘XXX’迫悠;輸入使用 GET Parameter ID ‘XXX’。
步驟5:填寫字段標簽于购,界面上可以根據(jù)字段的實際長度顯示不同的標簽袍睡。
步驟6:保存激活。
結(jié)構(gòu):結(jié)構(gòu)是字段的集合肋僧,可以嵌套其它結(jié)構(gòu)斑胜,表類型。我們在系統(tǒng)中實際創(chuàng)建一個表示銷售訂單行項目的結(jié)構(gòu)嫌吠。
步驟1:填寫結(jié)構(gòu)名稱止潘,創(chuàng)建。
步驟2:選擇結(jié)構(gòu)居兆。
步驟3:填寫銷售訂單行項目字段覆山。
步驟4:對于數(shù)量字段竹伸,必須填寫參考表和參考字段泥栖。參考字段為數(shù)量單位。
步驟5:保存激活勋篓。
表類型:表類型的行引用一個結(jié)構(gòu)吧享,和透明表類似,但只是聲明譬嚣,不實際保存數(shù)據(jù)钢颂。我們在系統(tǒng)中實際創(chuàng)建一個包含銷售訂單行項目的表類型。
步驟1:輸入表類型名稱ZSSALEORDERITEM_TAB拜银,一般以_TAB結(jié)尾殊鞭。
步驟2:選擇表類型。
步驟3:在行類型中輸入之前創(chuàng)建的結(jié)構(gòu)ZSSALEORDERITEM尼桶。
步驟4:保存激活操灿。
深度結(jié)構(gòu):結(jié)構(gòu)可以嵌套其它結(jié)構(gòu),表類型泵督。我們在系統(tǒng)中實際創(chuàng)建一個銷售訂單的深度結(jié)構(gòu)趾盐。
步驟1:輸入深度結(jié)構(gòu)名稱ZSSALEORDER。
步驟2:選擇結(jié)構(gòu)小腊。
步驟3:ITEMS 組件類型指定我們之前創(chuàng)建的表類型ZSSALEORDERITEM_TAB救鲤。
步驟4:保存激活。
透明表:透明表存儲實際數(shù)據(jù)秩冈,并且在數(shù)據(jù)庫底層有對應的表本缠。我們在系統(tǒng)中實際創(chuàng)建一個透明表。
步驟1:填寫透明表名稱入问。
步驟2:創(chuàng)建丹锹。
步驟3:選擇表類型犹赖,自定義表一般選擇C。
步驟4:選擇是否直接允許通過標準事務碼SE11卷仑,SE16N修改數(shù)據(jù)峻村。
步驟5:填寫字段。每個字段可以指定數(shù)據(jù)元素锡凝,數(shù)據(jù)元素可以是自定義的粘昨,也可以使用系統(tǒng)的標準數(shù)據(jù)元素。每個字段還可以不指定數(shù)據(jù)元素窜锯,直接輸入內(nèi)置的數(shù)據(jù)類型张肾。
除了輸入字段,還可以通過.include 直接包含一個已經(jīng)存在的結(jié)構(gòu)锚扎。
步驟6:技術(shù)設(shè)置吞瞪。
步驟7:填寫技術(shù)設(shè)置參數(shù)。根據(jù)實際需要評估數(shù)據(jù)條目驾孔,輸入合理數(shù)值芍秆,系統(tǒng)會根據(jù)輸入的數(shù)值分配存儲空間。對于不經(jīng)常執(zhí)行寫操作的小表翠勉,可以使用緩沖妖啥,加快讀取速度。
Q对碌、創(chuàng)建數(shù)據(jù)元素之前一定要先創(chuàng)建域么荆虱?
A、不一定的朽们,也可以直接在數(shù)據(jù)元素指定數(shù)據(jù)類型怀读,但如果一種數(shù)據(jù)類型會被多個數(shù)據(jù)元素引用,還是建議先創(chuàng)建域骑脱。而且域可以限制值的范圍菜枷。
Q、索引可以提升查找效率惜姐,是否應該盡可能給表建索引犁跪?
A、索引可視為將表縮減為僅含索引字段后的排序版歹袁,要占用存儲空間坷衍。對于內(nèi)容頻繁更改的表,不建議建立太多索引条舔,因為在更改表記錄時枫耳,索引也要重新排序,會消耗資源孟抗。此外迁杨,對正在使用中的業(yè)務表創(chuàng)建索引钻心,必須非常謹慎,耗時會很長铅协,而且可能會造成宕機引發(fā)生產(chǎn)事故捷沸。
Q、創(chuàng)建表時狐史,是否盡可能多用緩沖痒给?
A、緩沖是將數(shù)據(jù)庫常用的記錄保存在應用服務器上骏全,以提高讀取效率苍柏。但也有副作用,若有多臺應用服務器姜贡,頻繁對表執(zhí)行寫操作试吁,緩存刷新不及時,可能會造成數(shù)據(jù)不一致楼咳。只有對于頻繁讀取熄捍,極少更改,表也不大的情況爬橡,才適合進行緩存治唤。
為什么有域棒动,數(shù)據(jù)元素和表
那就回想什么是數(shù)據(jù)字典糙申,數(shù)據(jù)字典的作用就是提高可用性和復用性。域中定義字段技術(shù)屬性船惨,數(shù)據(jù)類型柜裸,格式,長度等粱锐。數(shù)據(jù)元素可直接引用域或者在域上重新定義長度疙挺,屬性等(理解為java方法重寫)。表的字段則是直接引用數(shù)據(jù)元素怜浅。
常用事務碼
SE10:傳輸組織器铐然,用于顯示包的情況等
SE11:ABAP字典,初始屏幕恶座。用于建表搀暑,數(shù)據(jù)類型,域等
SE80:對象導航欄跨琳,用戶進行對象管理自点,比如管理包等
命名規(guī)范
KNA1:標準表,不要隨便更改
統(tǒng)一規(guī)則:Z開頭脉让,_分割
表規(guī)則:ZT*
結(jié)構(gòu)規(guī)則:ZS*
數(shù)據(jù)域規(guī)則:ZD*
數(shù)據(jù)元素規(guī)則:ZE*