abap面试题
PART I.
1,下面的語句中,哪一個語句編譯會報錯(假設XXX 和結構sflight都已經定義). ( )
A)write at 12 XXX.
B)data type type sflight.
C)sflight-price = a+b.
D)write sy-vline.
2.在ABAP/4的開發工作中,哪一個TCODE是直接進入就可以創建程序,函數組以及程序內部各種元素的. ( )
A) SE80 B) SE11 C) SE93 D)SE16
3.直接進入就可以查詢表的結構是哪個TCODE. ( )
A) SE80 B) SE11 C) SE93 D)SE16
4. 很多表當中都有一個字段,叫做MANDT, 為第一個主鍵,這個字段的用處是.( )
A)區分后臺數據庫的類型
B)區分表中記錄屬于哪個客戶端(client)
C)區分表的數據量大小
D)SAP系統保留字段
5.下面的定義語句中,哪一個語句定義出來的結果是一個內表. ()
A)DATA zsflight TYPE sflight.
B)DATA: COLS LIKE LINE OF TC-COLS.
C)TABLES SFLIGHT.
D)DATA: zsflight TYPE TABLE OF sflight.
6.ABAP中三種基本的數據對象是. ( )
A)內表 結構 基本數據對象
B)內表 程序 語句
C)字符 數字 日期
D)語句 程序 表
7.語句loop at itab into wa. 的準確意思是. ( )
A)把wa中的值進行循環,每一次循環都寫回內表
B)求出迷宮itab的出口放在wa里
C)對內表itab的數值列進行累加放入wa中
D)對內表itab進行循環,把循環中每一行的結果寫入結構wa中
8.程序中執行了這么一段代碼
DATA it_sflight type sflight with header line.
Loop at it_sflight.
it_sflight-carrid = 'AA'.
Modify it_sflight.
Endloop.
該段語法中出現了四次it_sflight,其中后三次分別代表的是內表還是結構. ( )
A)內表 內表 內表
B)內表 結構 內表
C)內表 結構 結構
D)內表 內表 結構
9.在設計報表程序時,選擇的程序類型應該是. ( )
A)可執行程序
B)模塊池程序
C)包含程序
D)函數組程序
10.在報表程序的屏幕篩選條件里,SELECT-OPTIONS定義出來的元素是. ()
A)內表
B)結構
C)基本數據對象
D)指針型字段
11.在報表程序的屏幕事件里,有一個事件叫做AT LINE-SELECTION.參見如下代碼:
WRITE / ‘ABAP’.
AT LINE-SELECTION.
WRITE /‘TEST’.
那么,以下哪種情況會發生. ( )
A)先顯示出一行ABAP,當用戶雙擊一次時,屏幕上在原來ABAP那行下面換
行一次顯示出一行新的TEST
B)先顯示出一行ABAP,當用戶雙擊一次時,屏幕上每次只顯示出一行的TEST取
代原先的屏幕
C)先顯示出一行ABAP,當用戶雙擊一次時,屏幕上永遠只顯示出一行TEST
(放在原來ABAP那行下面)
D)先顯示出一行ABAP,當用戶第一次雙擊時,產生一個新屏幕,顯示一行
TEST,然后每次雙擊都在其下換行顯示一行新的TEST
12.選擇事件的執行順序正確的一組. ( )
A)INITIALIZATION / START-OF-SELECTION / TOP-OF-PAGE / AT LINE-SELECTION
B)INITIALIZATION / TOP-OF-PAGE / START-OF-SELECTION / AT LINE-SELECTION
C)START-OF-SELECTION/ INITIALIZATION / TOP-OF-PAG / AT LINE-SELECTION
D)INITIALIZATION / TOP-OF-PAGE / AT LINE-SELECTION / START-OF-SELECTION
13.在層級報表的開發里,下面哪個條件不是必需的. ( )
A)對內表先按層級字段排序
B)對內表和結構定義時層級字段必須排在前面
C)層級字段不能出現在at 和 end at 語句之外
D)層級字段必須存在
14.在明細報表的開發中,雙擊一行轉向明細報表的取數依據是. ()
A)你雙擊那行的主鍵字段
B)你雙擊的那個字段本身
C)你雙擊那行在循環中預先hide的字段
D)你雙擊那行在循環中預先已經write出來的字段
15.在交互式報表的設計中,假如想在明細報表里加入任意字段的排序功能,
請選擇正確的選項(多選). ( )
A)要先用get cursor field XXX.取得字段
B)對內表排序時該字段要用括號括起來
C)在排序時要把該字段加上一個數字以去除前面的結構名稱
(如果是用結構-字段定義的話)
D)排序后顯示完要把sy-lsind = 0,以防止產生多余的list
16.在屏幕編程的設計中,下面共有四個主要步驟:
a 設計屏幕的格式(有哪些字段,放在什么位置)
b 設計屏幕的整體屬性
c 設計屏幕上字段的屬性
d 編寫屏幕的流邏輯( flow logic )
請選擇通常請況下正確的順序. ( )
A)a b c d
B)c d b a
C)b a c d
D)d b a c
17. 如果屏幕A 的下一個屏幕仍然是A , 那么當執行程序時,對于屏幕的主要事件,下面哪種順序是正確的. ()
A)A 的 PAI ? A 的 PBO ? A 的 PAI ? A 的 PBO
B)A 的 PBO ? A 的 PAI ? A 的 PAI ? A 的 PBO
C)A 的 PAI ? A 的 PAI ? A 的 PBO ? A 的 PBO
D)A 的 PBO ? A 的 PAI ? A 的 PBO ? A 的 PAI
18.屏幕編程中一個屏幕所使用的工具欄應如何設計. ( )
A) 先設計一個Gui Status,再在程序中綁定
B) 先設計一個Gui Titles,再在程序中綁定
C) 在程序中用Add button 語法添加
D)在屏幕設計格式的界面上添加工具欄及其按鈕
19. 以下四種系統變量,各是什么含意. ( )
SY-UCOMM SY-DATUM SY-SUBRC SY-TABIX
A)用戶觸發的屏幕上的功能碼 當前日期 當前時間 循環次數
B)當前日期 當前時間 循環次數 用戶觸發的屏幕上的功能碼
C)用戶觸發的屏幕上的功能碼 循環次數 語句執行結果返回值當前日期
D)用戶觸發的屏幕上的功能碼 當前日期 語句執行結果返回值循環次數
20.一個程序的子屏幕編程是如何實現的. ( )
A)子屏幕區域外加屏幕(屬性設置為正常屏幕)
B)自定義控件外加屏幕(屬性設置為正常屏幕)
C)子屏幕區域外加屏幕(屬性設置為子屏幕)
D)自定義控件外加屏幕(屬性設置為子屏幕)
21.對于表格控件和內表的綁定的做法,下面哪種說法是正確的. ()
A)PBO時同步循環內表和表格控件把內表的值寫入表格控件,PAI時用同樣的
循環把表格控件的值寫回內表
B)PBO時同步循環內表和表格控件把表格控件的值寫入內表,PAI時用同樣的
循環把內表的值寫回表格控件
C)在定義內表時定義與之綁定的表格控件,PBO和PAI事件要各循環內表一次
D)在制作表格控件時定義與之綁定的內表,PBO和PAI事件要各循環表格控件一次
22.如果要把表格控件某列的屬性動態的改變成不可輸入,下面哪種做法是可行的. ( )
A)在PAI事件中修改table的general attribute值
B)在PBO事件中修改table的general attribute值
C)在PAI事件中取得table的COLS屬性,利用它本身是個內表的特點循環找到該列修改之,修改完后寫回COLS內表
D)在PAI事件中取得table的COLS屬性,利用它本身是個結構的特點找到其中表示該列的字段修改
23.要對表格控件增加一個可由用戶寫入信息的列,下面哪種方式是可行的(多選).()
A)在設計屏幕上點擊dictionary / program fields window 按鈕,輸入字典表或者程序中定義的元素,把它拖到表格控件中
B)在設計屏幕上修改table的attributes,增加一列
C)在設計屏幕中的表格控件里拖入一個text field(文本字段)
D)在設計屏幕中的表格控件里拖入一個input/output field(輸入/輸出字段)
24.在編寫ALV GRID CONTROL時,應遵循以下哪種順序. ( )
A)在屏幕上建區域,創建區域對象,創建ALVGRID對象,調用ALVGRID的set_table_for_first_display方法
B)在屏幕上建區域,創建ALVGRID對象,創建區域對象,調用ALVGRID的set_table_for_first_display方法
C)調用ALVGRID的set_table_for_first_display方法,在屏幕上建區域,創建ALVGRID對象,創建區域對象
D)創建區域對象,調用ALVGRID的set_table_for_first_display方法,在屏幕上建區域,創建ALVGRID對象,
25.自己制作一個搜索幫助,引用的表是SBOOKINGS,Dialog Type是Dialog with value restriction,里面customid和name這兩個字段的IMP屬性打勾,customid,name,carrid,connid這四個字段的EXP屬性打勾,四個字段都設定了LPOS和SPOS,這個搜索幫助的輸出效果是. ( )
A)先輸出兩個欄位的篩選屏幕,再按照篩選結果輸出兩個欄位的表格信息讓用戶選擇,
選擇結果影響到四個欄位
B)先輸出兩個欄位的表格信息讓用戶選擇,選擇結果影響到四個欄位
C)先輸出四個欄位的表格信息讓用戶選擇,選擇結果影響到兩個欄位
D)先輸出四個欄位的篩選屏幕,再按照篩選結果輸出四個欄位的表格信息讓用戶選擇,
選擇結果影響到兩個欄位
26.ABAP的OPEN SQL的取數語句是否可以實現數據庫無關性,其原因是什么. ( )
A)不可以,數據庫的SQL格式不同
B)可以,因為它的名字叫做OPEN SQL
C)可以,因為中間有一層DB Interface做轉換
D)不可以,各種數據庫的版本不同
27.對ABAP的OPEN SQL語句的兩個返回系統變量,描述正確的是. ()
A)Sy-dbcnt表示執行結果是否正確,sy-subrc表示執行影響到的數據條數
B)Sy-dbcnt表示執行影響到的數據條數,sy-subrc表示執行結果是否正確
C)Sy-dbamt表示執行結果是否正確,sy-sudnc表示執行影響到的數據條數
D)Sy-dbamt表示執行影響到的數據條數,sy-sudnc表示執行結果是否正確
28.一個表TA有三個字段,其中第一個字段是主鍵,目前有一條記錄是1 /‘first’/ 19,結構wa_result是和表相同類型的,當前值是2 / ‘second’ / 20 .執行OPEN SQL語句 :modify TA from wa_result.執行后對系統的影響為. ( )
A)沒有任何影響
B)TA有兩條記錄1 / ‘first’/ 19 和 2 / ‘second’ / 20
C)TA有一條記錄2 / ‘second’ / 20
D)系統出錯退出,對表沒有任何影響
29.SAP對鎖的主要實現手段是. ( )
A)在SE11里加鎖對象,然后在程序中調用鎖對象生成的函數
B)在數據庫里加鎖,在程序中聲明
C)由數據庫自動進行,SAP不用處理
D)在程序中通過SQL語句實現
30.有一程序,起始畫面里有一個用戶可以輸入字段為A ,如果想在程序進入的時候自動設置成上次退出時的值,可以采用的方法是. ( )
A)在退出時使用GET PARAMETER ID 'XXX' FIELD A.
在進入時使用SET PARAMETER ID 'XXX' FIELD A.
B)在退出時使用SET PARAMETER ID 'XXX' FIELD A.
在進入時使用GET PARAMETER ID 'XXX' FIELD A.
C)不管是退出還是進入時,都執行語句GET PARAMETER ID 'XXX' FIELD A.
D)不管是退出還是進入時,都執行語句SET PARAMETER ID 'XXX' FIELD A.
31.SAP的SMARTFORM和ABAP PROGRAM的對應關系是. ( )
A)一個SMARTFORM對應多個程序
B)一個程序對應多個SMARTFORM
C)一個SMARTFORM對應多個程序,一個程序也可以對應多個SMARTFORM
D)一個SMARTFORM對應一個程序
32.設計SMARTFORM顯示一個表格,如果第一頁是一種格式,后面幾頁是一種格式,
如何設計. ( )
A)第一頁指向第二頁,第二頁指向空
B)第一頁指向自己,第二頁指向第一頁
C)第一頁指向第二頁,第二頁指向第一頁
D)第一頁指向第二頁,第二頁指向自己
33.如果想設計SMARTFORM中大家公用的文本,應該使用什么技術. ()
A)SMART TEXT
B)SMART STYLE
C)SAP SCRIPT
D)TEXT MODULE
34.下面對于SMARTFORM中TABLE和 TEMPLATE的描述,正確的是. ()
A)TEMPLATE用來設計表格模版,TABLE用來設計表格實體
B)TEMPLATE用來設計表格樣式,TABLE用來設計表格實體
C)TEMPLATE用來設計靜態表格,TABLE用來設計表格實體
D)TEMPLATE用來設計靜態表格,TABLE用來設計動態表格
35.SMARTFORM中TABLE的排序事件的觸發場合是. ( )
A)循環到排序字段第一次開始時觸發開始事件,循環到排序字段結束時
觸發結束事件
B)循環到排序字段第一次開始時觸發開始事件,循環到表格結束時
觸發結束事件
C)當表格開始時觸發開始事件,表格結束時觸發結束事件
D)循環到排序字段第一次開始時觸發開始事件,然后觸發結束事件,然后
開始正式循環該排序字段剩余記錄
36.在SMARTFORM中顯示一個表格,其中有一個欄位為wa_sflight-price,現在里面有三行數據,其值依次分別是10,30,50 ,現在在表格設計的時候在Global Definition中定義一個變量G_TOL,在表格的Main Area中加入一個真假節點,節點的條件為WA_SFLIGHT-PRICE > 10 .然后,在真節點下加一個程序行,內容為G_TOL = wa_sflight-price + 10.假節點下加一個程序行,內容為G_TOL = wa_sflight-price + 20.最后在表格的Footer下加一個表行(在表格最后顯示),下加一個文本節點顯示這個字段G_TOL,它顯示的值應該是. ( )
A)60
B)70
C)140
D)150
37.SAP提供的修改系統標準功能的方案里,哪幾種是不需要修改系統標準程序
就可以實現的. ( )
A)Customer Develepment ,Enhancement, Modification
B)Customer Develepment ,Customizing, Modification
C)Customer Develepment ,Customizing, Enhancement
D)Enhancement, Modification,Customizing
38.對于客戶定制需求的解決方案,應該遵循哪一種順序進行為宜. ()
A)先判斷能否配置;再判斷系統有無類似功能,
有的話先判斷能否修改標準程序,再判斷能否進行Enhancement;
最后考慮自己開發
B)先判斷系統有無類似功能,有的話先判斷能否修改標準程序,
再判斷能否進行Enhancement;然后判斷能否配置;
最后考慮自己開發
C)先判斷能否配置;再判斷系統有無類似功能,
有的話先判斷能否進行Enhancement,再判斷能否修改標準程序;
最后考慮自己開發
D)先判斷系統有無類似功能,有的話先判斷能否進行Enhancement,
再判斷能否修改標準程序;然后判斷能否配置;
最后考慮自己開發
39.自己定義一個增強項目,加入系統的增強,并在其中激活增強的TCODE應該是. ( )
A)SMOD
B)CMOD
C)SE84
D)SE80
40.在SAP系統標準增強功能里,主要包含了以下哪組功能. ()
A)Table Enhancement/Screen Exit/Menu Exit/Function module Exit
B)Table Enhancement/Structure Exit/Menu Exit/Event Exit
C)Menu Exit/Function module Exit/Field Exit/BAPI Exit
D)Structure Exit/Menu Exit/Table Enhancement/Screen Exit
二 問答題(共1題,20分)
請簡述SAP二次開發中REPORT , SCREEN , 數據庫更新,SMARTFORM及增強等主要技術的開發方法和主要應用場合
PART II
一:添加字段
向 SAP 表中添加字段的方法是哪兩種?
二:修改(Modifications)
在 SAP 系統中是怎樣定義"修改"的?它們對更新(upgrade)有怎樣的影響?
三:簇表和POOL TABLE 的概念
四:授權對象(Authorization Objects)
什么是授權對象?在 ABAP 程序中使用哪條語句進行授權檢查?
五:ABAP 內存(ABAP Memory)交換
在使用 ABAP 內存的程序間進行數據交換時用到的兩個語句是什么?
六:鎖對象(Lock Object)和 FM(Function Module),激活Lock Object時,產生的 FM 的名字是什么?
七:更新方面的 FM
更新 FM 分為 V1 和 V2,那么首先會執行哪一種更新類型呢?每種類型又是以哪種模式(異步、同步或本地)執行的呢?
八:修改助手(Modification Assistant)
什么是修改助手?
九:功能模塊出口(Function Module Exit)
實現功能模塊出口時 SAP 應用程序中應使用哪條語句?
十:更改 SAP (Changing SAP)
請列出用戶修改 SAP 標準功能的不同方式。
問答題答案
六:鎖對象(Lock Object)和 FM(Function Module),激活Lock Object時,產生的 FM 的名字是什么?
答案:首先要在 ABAP 字典中創建鎖對象,然后才能在 ABAP 程序中設鎖。創建鎖對象時,系統會自動生成兩個 FM 來進行鎖管理。
用于設鎖的 FM 為: ENQUEUE_<鎖對象名>。它用于在鎖表(Lock Table)中生成一個鎖項(Lock Entry)。若設鎖不成功的話,就會在 Return 中反映出來。
用于釋放鎖的 FM 為:DEQUEUE_<鎖對象名>。它用于從鎖表中刪除一個鎖項。在 ABAP 程序中,只需使用 "CALL FUNCITION ..." 語句就可以調用它們。
這兩個鎖 FM 是在 SAP 系統的一個特殊工作進程中執行的,專門進行鎖管理。它運行在一個單獨的服務器上,而該服務器專門用于維護整個 SAP 系統的主鎖表(Central Lock Table)。
有兩種鎖類型:
1. 共享鎖——只讀鎖,一個用戶正在讀數據時,阻止其他用戶更改該數據。
2. 獨占鎖——可寫鎖,一個用戶正在修改數據時,阻止其他用戶更改該數據。
七:更新方面的 FM
更新 FM 分為 V1 和 V2,那么首先會執行哪一種更新類型呢?每種類型又是以哪種模式(異步、同步或本地)執行的呢?
答案:V1 更新類型比 V2 更新類型的優先級高,因此,V1 比 V2 行執行。V1 的執行模式可以為異步、同步或本地;V2 只能為異步執行。
八:修改助手(Modification Assistant)
什么是修改助手?
答案:修改助手是 4.5 版中引入的一個工具,用于簡化更新過程。可以通過 ABAP 編輯器觸發修改助手,它會記錄對系統進行的修改。修改助手支持通過 ABAP 編輯器、Screen Painter、Menu Painter、文本元素維護、Function Builder 和 ABAP 字典進行的修改。
九:功能模塊出口(Function Module Exit)
實現功能模塊出口時 SAP 應用程序中應使用哪條語句?
答案:某些 SAP 應用程序中存在功能模塊出口,它使用戶能夠向 SAP 程序中添加一些功能。通過搜索 "CALL CUSTOMER" 可以發現是否存在功能模塊出口。
十:更改 SAP (Changing SAP)
請列出用戶修改 SAP 標準功能的不同方式。
答案:SAP Standard 可以通過 Personalization、Customizing、Modifications、Enhancements 及自定義 ABAP 程序進行更改。這些方式的示例如下:
Personalization——Personalization 技術包含創建變式、設置/獲取參數及活動組(Activity Groups)。
Customizing ——是最常用的使用 SAP 工具(如 R/3 Reference Model and Implementation Guide)更改 SAP Standard 的方式。可以認為 Customizing 是實施 R/3 所必需的,通常由 Functional Team 來執行。
Enhancements——常由開發 Team 執行,包含的活動有:字典增強、Funciton Module Exits、菜單和屏幕出口及 Business Add-ins (BADI)。
自定義 ABAP 程序——可以與 SAP 對象或自定義開發的對象一起工作。
Modifications——不建議對 SAP 對象使用 Modifications。使用 SSCR (SAP Software Change Registration)注冊所有對 SAP 對象的手動修改。
一:添加字段
向 SAP 表中添加字段的方法是哪兩種?
答案:這兩種方法是:Append 結構(Append Structure)和自定義 Include(Customizing Include)。Append 結構是在向表尾添加字段時創建的,自定義 Include 由 SAP 開發人員指定,以使用戶可以創建新字段。
二:修改(Modifications)
在 SAP 系統中是怎樣定義"修改"的?它們對更新(upgrade)有怎樣的影響?
答案:修改是指用戶對 SAP 發布的庫對象(Repository Object)進行的更改。
必須在更新期間對修改進行評審(Review),來決定是否應該使用新的 SAP 對象,以及將來使用時是否需要進一步修改該對象。
三:簇表和POOL TABLE 的概念
答案:
Pools和Cluster table;他們已經不是各種數據庫常規的表了,也不能夠被數據庫直接訪問。只能通過SAP自己的工具來直接訪問。
透明表:
每個透明表在數據庫中有一個相應的物理表。物理表的名稱和數據字典中的邏輯表
定義的名稱一致。所有事務和應用數據存貯在透明表中。
結構:
結構在數據庫不存在數據記錄。結構用于在程序之間或程序與屏幕之間的接口定義。
附加結構:
附加結構定義字段的子集,該字段屬于其他表格或結構,但是在修正管理中作為單
獨的對象。
存貯表:
存儲表可以用來存貯控制數據(例如:屏幕順序,程序參數或臨時數據)。幾個存
儲表可以組合成一個表庫。該表庫和數據庫中的一物理表庫相一致。它包含了各組
合庫分派給它的所有記錄。
簇KEKEKEY表:
連續的文本如文檔之類可以存貯在簇表中。幾個簇表可以組合成一個表簇。對這種
表類型,不同表中的幾個邏輯行組合到一物理記錄。這可以實現一對象接一對象地
存貯或訪問,訪問簇中的表的一個前提是,至少關鍵字的一部分必須相符合。幾個
簇表存貯在數據庫中 一個相應的表里。
四:授權對象(Authorization Objects)
什么是授權對象?在 ABAP 程序中使用哪條語句進行授權檢查?
答案:授權對象由一組字段組成,這些字段中的值將被用于進行授權檢查。ABAP 程序中使用 AUTHORITY-CHECK 語句根據授權對象進行授權檢查。在 AUTHORITY-CHECK 語句中,必須指明授權對象的所有字段,但有一個例外,可以用 DUMMY 關鍵字來繞過某個字段的檢查。
一個授權對象中最多可以定義 10 個字段。
五:ABAP 內存(ABAP Memory)交換
在使用 ABAP 內存的程序間進行數據交換時用到的兩個語句是什么?
答案:EXPORT to MEMORY ID 用于將數據復制到 ABAP 內存,IMPORT from MEMORY ID 用于將數據從 ABAP 內存復制到程序中。
在 ABAP 內存間進行交換的數據必須在兩個程序中都進行聲明,并包含同樣的數據聲明。
test my signature
1,下面的語句中,哪一個語句編譯會報錯(假設XXX 和結構sflight都已經定義). ( )
A)write at 12 XXX.
B)data type type sflight.
C)sflight-price = a+b.
D)write sy-vline.
2.在ABAP/4的開發工作中,哪一個TCODE是直接進入就可以創建程序,函數組以及程序內部各種元素的. ( )
A) SE80 B) SE11 C) SE93 D)SE16
3.直接進入就可以查詢表的結構是哪個TCODE. ( )
A) SE80 B) SE11 C) SE93 D)SE16
4. 很多表當中都有一個字段,叫做MANDT, 為第一個主鍵,這個字段的用處是.( )
A)區分后臺數據庫的類型
B)區分表中記錄屬于哪個客戶端(client)
C)區分表的數據量大小
D)SAP系統保留字段
5.下面的定義語句中,哪一個語句定義出來的結果是一個內表. ()
A)DATA zsflight TYPE sflight.
B)DATA: COLS LIKE LINE OF TC-COLS.
C)TABLES SFLIGHT.
D)DATA: zsflight TYPE TABLE OF sflight.
6.ABAP中三種基本的數據對象是. ( )
A)內表 結構 基本數據對象
B)內表 程序 語句
C)字符 數字 日期
D)語句 程序 表
7.語句loop at itab into wa. 的準確意思是. ( )
A)把wa中的值進行循環,每一次循環都寫回內表
B)求出迷宮itab的出口放在wa里
C)對內表itab的數值列進行累加放入wa中
D)對內表itab進行循環,把循環中每一行的結果寫入結構wa中
8.程序中執行了這么一段代碼
DATA it_sflight type sflight with header line.
Loop at it_sflight.
it_sflight-carrid = 'AA'.
Modify it_sflight.
Endloop.
該段語法中出現了四次it_sflight,其中后三次分別代表的是內表還是結構. ( )
A)內表 內表 內表
B)內表 結構 內表
C)內表 結構 結構
D)內表 內表 結構
9.在設計報表程序時,選擇的程序類型應該是. ( )
A)可執行程序
B)模塊池程序
C)包含程序
D)函數組程序
10.在報表程序的屏幕篩選條件里,SELECT-OPTIONS定義出來的元素是. ()
A)內表
B)結構
C)基本數據對象
D)指針型字段
11.在報表程序的屏幕事件里,有一個事件叫做AT LINE-SELECTION.參見如下代碼:
WRITE / ‘ABAP’.
AT LINE-SELECTION.
WRITE /‘TEST’.
那么,以下哪種情況會發生. ( )
A)先顯示出一行ABAP,當用戶雙擊一次時,屏幕上在原來ABAP那行下面換
行一次顯示出一行新的TEST
B)先顯示出一行ABAP,當用戶雙擊一次時,屏幕上每次只顯示出一行的TEST取
代原先的屏幕
C)先顯示出一行ABAP,當用戶雙擊一次時,屏幕上永遠只顯示出一行TEST
(放在原來ABAP那行下面)
D)先顯示出一行ABAP,當用戶第一次雙擊時,產生一個新屏幕,顯示一行
TEST,然后每次雙擊都在其下換行顯示一行新的TEST
12.選擇事件的執行順序正確的一組. ( )
A)INITIALIZATION / START-OF-SELECTION / TOP-OF-PAGE / AT LINE-SELECTION
B)INITIALIZATION / TOP-OF-PAGE / START-OF-SELECTION / AT LINE-SELECTION
C)START-OF-SELECTION/ INITIALIZATION / TOP-OF-PAG / AT LINE-SELECTION
D)INITIALIZATION / TOP-OF-PAGE / AT LINE-SELECTION / START-OF-SELECTION
13.在層級報表的開發里,下面哪個條件不是必需的. ( )
A)對內表先按層級字段排序
B)對內表和結構定義時層級字段必須排在前面
C)層級字段不能出現在at 和 end at 語句之外
D)層級字段必須存在
14.在明細報表的開發中,雙擊一行轉向明細報表的取數依據是. ()
A)你雙擊那行的主鍵字段
B)你雙擊的那個字段本身
C)你雙擊那行在循環中預先hide的字段
D)你雙擊那行在循環中預先已經write出來的字段
15.在交互式報表的設計中,假如想在明細報表里加入任意字段的排序功能,
請選擇正確的選項(多選). ( )
A)要先用get cursor field XXX.取得字段
B)對內表排序時該字段要用括號括起來
C)在排序時要把該字段加上一個數字以去除前面的結構名稱
(如果是用結構-字段定義的話)
D)排序后顯示完要把sy-lsind = 0,以防止產生多余的list
16.在屏幕編程的設計中,下面共有四個主要步驟:
a 設計屏幕的格式(有哪些字段,放在什么位置)
b 設計屏幕的整體屬性
c 設計屏幕上字段的屬性
d 編寫屏幕的流邏輯( flow logic )
請選擇通常請況下正確的順序. ( )
A)a b c d
B)c d b a
C)b a c d
D)d b a c
17. 如果屏幕A 的下一個屏幕仍然是A , 那么當執行程序時,對于屏幕的主要事件,下面哪種順序是正確的. ()
A)A 的 PAI ? A 的 PBO ? A 的 PAI ? A 的 PBO
B)A 的 PBO ? A 的 PAI ? A 的 PAI ? A 的 PBO
C)A 的 PAI ? A 的 PAI ? A 的 PBO ? A 的 PBO
D)A 的 PBO ? A 的 PAI ? A 的 PBO ? A 的 PAI
18.屏幕編程中一個屏幕所使用的工具欄應如何設計. ( )
A) 先設計一個Gui Status,再在程序中綁定
B) 先設計一個Gui Titles,再在程序中綁定
C) 在程序中用Add button 語法添加
D)在屏幕設計格式的界面上添加工具欄及其按鈕
19. 以下四種系統變量,各是什么含意. ( )
SY-UCOMM SY-DATUM SY-SUBRC SY-TABIX
A)用戶觸發的屏幕上的功能碼 當前日期 當前時間 循環次數
B)當前日期 當前時間 循環次數 用戶觸發的屏幕上的功能碼
C)用戶觸發的屏幕上的功能碼 循環次數 語句執行結果返回值當前日期
D)用戶觸發的屏幕上的功能碼 當前日期 語句執行結果返回值循環次數
20.一個程序的子屏幕編程是如何實現的. ( )
A)子屏幕區域外加屏幕(屬性設置為正常屏幕)
B)自定義控件外加屏幕(屬性設置為正常屏幕)
C)子屏幕區域外加屏幕(屬性設置為子屏幕)
D)自定義控件外加屏幕(屬性設置為子屏幕)
21.對于表格控件和內表的綁定的做法,下面哪種說法是正確的. ()
A)PBO時同步循環內表和表格控件把內表的值寫入表格控件,PAI時用同樣的
循環把表格控件的值寫回內表
B)PBO時同步循環內表和表格控件把表格控件的值寫入內表,PAI時用同樣的
循環把內表的值寫回表格控件
C)在定義內表時定義與之綁定的表格控件,PBO和PAI事件要各循環內表一次
D)在制作表格控件時定義與之綁定的內表,PBO和PAI事件要各循環表格控件一次
22.如果要把表格控件某列的屬性動態的改變成不可輸入,下面哪種做法是可行的. ( )
A)在PAI事件中修改table的general attribute值
B)在PBO事件中修改table的general attribute值
C)在PAI事件中取得table的COLS屬性,利用它本身是個內表的特點循環找到該列修改之,修改完后寫回COLS內表
D)在PAI事件中取得table的COLS屬性,利用它本身是個結構的特點找到其中表示該列的字段修改
23.要對表格控件增加一個可由用戶寫入信息的列,下面哪種方式是可行的(多選).()
A)在設計屏幕上點擊dictionary / program fields window 按鈕,輸入字典表或者程序中定義的元素,把它拖到表格控件中
B)在設計屏幕上修改table的attributes,增加一列
C)在設計屏幕中的表格控件里拖入一個text field(文本字段)
D)在設計屏幕中的表格控件里拖入一個input/output field(輸入/輸出字段)
24.在編寫ALV GRID CONTROL時,應遵循以下哪種順序. ( )
A)在屏幕上建區域,創建區域對象,創建ALVGRID對象,調用ALVGRID的set_table_for_first_display方法
B)在屏幕上建區域,創建ALVGRID對象,創建區域對象,調用ALVGRID的set_table_for_first_display方法
C)調用ALVGRID的set_table_for_first_display方法,在屏幕上建區域,創建ALVGRID對象,創建區域對象
D)創建區域對象,調用ALVGRID的set_table_for_first_display方法,在屏幕上建區域,創建ALVGRID對象,
25.自己制作一個搜索幫助,引用的表是SBOOKINGS,Dialog Type是Dialog with value restriction,里面customid和name這兩個字段的IMP屬性打勾,customid,name,carrid,connid這四個字段的EXP屬性打勾,四個字段都設定了LPOS和SPOS,這個搜索幫助的輸出效果是. ( )
A)先輸出兩個欄位的篩選屏幕,再按照篩選結果輸出兩個欄位的表格信息讓用戶選擇,
選擇結果影響到四個欄位
B)先輸出兩個欄位的表格信息讓用戶選擇,選擇結果影響到四個欄位
C)先輸出四個欄位的表格信息讓用戶選擇,選擇結果影響到兩個欄位
D)先輸出四個欄位的篩選屏幕,再按照篩選結果輸出四個欄位的表格信息讓用戶選擇,
選擇結果影響到兩個欄位
26.ABAP的OPEN SQL的取數語句是否可以實現數據庫無關性,其原因是什么. ( )
A)不可以,數據庫的SQL格式不同
B)可以,因為它的名字叫做OPEN SQL
C)可以,因為中間有一層DB Interface做轉換
D)不可以,各種數據庫的版本不同
27.對ABAP的OPEN SQL語句的兩個返回系統變量,描述正確的是. ()
A)Sy-dbcnt表示執行結果是否正確,sy-subrc表示執行影響到的數據條數
B)Sy-dbcnt表示執行影響到的數據條數,sy-subrc表示執行結果是否正確
C)Sy-dbamt表示執行結果是否正確,sy-sudnc表示執行影響到的數據條數
D)Sy-dbamt表示執行影響到的數據條數,sy-sudnc表示執行結果是否正確
28.一個表TA有三個字段,其中第一個字段是主鍵,目前有一條記錄是1 /‘first’/ 19,結構wa_result是和表相同類型的,當前值是2 / ‘second’ / 20 .執行OPEN SQL語句 :modify TA from wa_result.執行后對系統的影響為. ( )
A)沒有任何影響
B)TA有兩條記錄1 / ‘first’/ 19 和 2 / ‘second’ / 20
C)TA有一條記錄2 / ‘second’ / 20
D)系統出錯退出,對表沒有任何影響
29.SAP對鎖的主要實現手段是. ( )
A)在SE11里加鎖對象,然后在程序中調用鎖對象生成的函數
B)在數據庫里加鎖,在程序中聲明
C)由數據庫自動進行,SAP不用處理
D)在程序中通過SQL語句實現
30.有一程序,起始畫面里有一個用戶可以輸入字段為A ,如果想在程序進入的時候自動設置成上次退出時的值,可以采用的方法是. ( )
A)在退出時使用GET PARAMETER ID 'XXX' FIELD A.
在進入時使用SET PARAMETER ID 'XXX' FIELD A.
B)在退出時使用SET PARAMETER ID 'XXX' FIELD A.
在進入時使用GET PARAMETER ID 'XXX' FIELD A.
C)不管是退出還是進入時,都執行語句GET PARAMETER ID 'XXX' FIELD A.
D)不管是退出還是進入時,都執行語句SET PARAMETER ID 'XXX' FIELD A.
31.SAP的SMARTFORM和ABAP PROGRAM的對應關系是. ( )
A)一個SMARTFORM對應多個程序
B)一個程序對應多個SMARTFORM
C)一個SMARTFORM對應多個程序,一個程序也可以對應多個SMARTFORM
D)一個SMARTFORM對應一個程序
32.設計SMARTFORM顯示一個表格,如果第一頁是一種格式,后面幾頁是一種格式,
如何設計. ( )
A)第一頁指向第二頁,第二頁指向空
B)第一頁指向自己,第二頁指向第一頁
C)第一頁指向第二頁,第二頁指向第一頁
D)第一頁指向第二頁,第二頁指向自己
33.如果想設計SMARTFORM中大家公用的文本,應該使用什么技術. ()
A)SMART TEXT
B)SMART STYLE
C)SAP SCRIPT
D)TEXT MODULE
34.下面對于SMARTFORM中TABLE和 TEMPLATE的描述,正確的是. ()
A)TEMPLATE用來設計表格模版,TABLE用來設計表格實體
B)TEMPLATE用來設計表格樣式,TABLE用來設計表格實體
C)TEMPLATE用來設計靜態表格,TABLE用來設計表格實體
D)TEMPLATE用來設計靜態表格,TABLE用來設計動態表格
35.SMARTFORM中TABLE的排序事件的觸發場合是. ( )
A)循環到排序字段第一次開始時觸發開始事件,循環到排序字段結束時
觸發結束事件
B)循環到排序字段第一次開始時觸發開始事件,循環到表格結束時
觸發結束事件
C)當表格開始時觸發開始事件,表格結束時觸發結束事件
D)循環到排序字段第一次開始時觸發開始事件,然后觸發結束事件,然后
開始正式循環該排序字段剩余記錄
36.在SMARTFORM中顯示一個表格,其中有一個欄位為wa_sflight-price,現在里面有三行數據,其值依次分別是10,30,50 ,現在在表格設計的時候在Global Definition中定義一個變量G_TOL,在表格的Main Area中加入一個真假節點,節點的條件為WA_SFLIGHT-PRICE > 10 .然后,在真節點下加一個程序行,內容為G_TOL = wa_sflight-price + 10.假節點下加一個程序行,內容為G_TOL = wa_sflight-price + 20.最后在表格的Footer下加一個表行(在表格最后顯示),下加一個文本節點顯示這個字段G_TOL,它顯示的值應該是. ( )
A)60
B)70
C)140
D)150
37.SAP提供的修改系統標準功能的方案里,哪幾種是不需要修改系統標準程序
就可以實現的. ( )
A)Customer Develepment ,Enhancement, Modification
B)Customer Develepment ,Customizing, Modification
C)Customer Develepment ,Customizing, Enhancement
D)Enhancement, Modification,Customizing
38.對于客戶定制需求的解決方案,應該遵循哪一種順序進行為宜. ()
A)先判斷能否配置;再判斷系統有無類似功能,
有的話先判斷能否修改標準程序,再判斷能否進行Enhancement;
最后考慮自己開發
B)先判斷系統有無類似功能,有的話先判斷能否修改標準程序,
再判斷能否進行Enhancement;然后判斷能否配置;
最后考慮自己開發
C)先判斷能否配置;再判斷系統有無類似功能,
有的話先判斷能否進行Enhancement,再判斷能否修改標準程序;
最后考慮自己開發
D)先判斷系統有無類似功能,有的話先判斷能否進行Enhancement,
再判斷能否修改標準程序;然后判斷能否配置;
最后考慮自己開發
39.自己定義一個增強項目,加入系統的增強,并在其中激活增強的TCODE應該是. ( )
A)SMOD
B)CMOD
C)SE84
D)SE80
40.在SAP系統標準增強功能里,主要包含了以下哪組功能. ()
A)Table Enhancement/Screen Exit/Menu Exit/Function module Exit
B)Table Enhancement/Structure Exit/Menu Exit/Event Exit
C)Menu Exit/Function module Exit/Field Exit/BAPI Exit
D)Structure Exit/Menu Exit/Table Enhancement/Screen Exit
二 問答題(共1題,20分)
請簡述SAP二次開發中REPORT , SCREEN , 數據庫更新,SMARTFORM及增強等主要技術的開發方法和主要應用場合
PART II
一:添加字段
向 SAP 表中添加字段的方法是哪兩種?
二:修改(Modifications)
在 SAP 系統中是怎樣定義"修改"的?它們對更新(upgrade)有怎樣的影響?
三:簇表和POOL TABLE 的概念
四:授權對象(Authorization Objects)
什么是授權對象?在 ABAP 程序中使用哪條語句進行授權檢查?
五:ABAP 內存(ABAP Memory)交換
在使用 ABAP 內存的程序間進行數據交換時用到的兩個語句是什么?
六:鎖對象(Lock Object)和 FM(Function Module),激活Lock Object時,產生的 FM 的名字是什么?
七:更新方面的 FM
更新 FM 分為 V1 和 V2,那么首先會執行哪一種更新類型呢?每種類型又是以哪種模式(異步、同步或本地)執行的呢?
八:修改助手(Modification Assistant)
什么是修改助手?
九:功能模塊出口(Function Module Exit)
實現功能模塊出口時 SAP 應用程序中應使用哪條語句?
十:更改 SAP (Changing SAP)
請列出用戶修改 SAP 標準功能的不同方式。
問答題答案
六:鎖對象(Lock Object)和 FM(Function Module),激活Lock Object時,產生的 FM 的名字是什么?
答案:首先要在 ABAP 字典中創建鎖對象,然后才能在 ABAP 程序中設鎖。創建鎖對象時,系統會自動生成兩個 FM 來進行鎖管理。
用于設鎖的 FM 為: ENQUEUE_<鎖對象名>。它用于在鎖表(Lock Table)中生成一個鎖項(Lock Entry)。若設鎖不成功的話,就會在 Return 中反映出來。
用于釋放鎖的 FM 為:DEQUEUE_<鎖對象名>。它用于從鎖表中刪除一個鎖項。在 ABAP 程序中,只需使用 "CALL FUNCITION ..." 語句就可以調用它們。
這兩個鎖 FM 是在 SAP 系統的一個特殊工作進程中執行的,專門進行鎖管理。它運行在一個單獨的服務器上,而該服務器專門用于維護整個 SAP 系統的主鎖表(Central Lock Table)。
有兩種鎖類型:
1. 共享鎖——只讀鎖,一個用戶正在讀數據時,阻止其他用戶更改該數據。
2. 獨占鎖——可寫鎖,一個用戶正在修改數據時,阻止其他用戶更改該數據。
七:更新方面的 FM
更新 FM 分為 V1 和 V2,那么首先會執行哪一種更新類型呢?每種類型又是以哪種模式(異步、同步或本地)執行的呢?
答案:V1 更新類型比 V2 更新類型的優先級高,因此,V1 比 V2 行執行。V1 的執行模式可以為異步、同步或本地;V2 只能為異步執行。
八:修改助手(Modification Assistant)
什么是修改助手?
答案:修改助手是 4.5 版中引入的一個工具,用于簡化更新過程。可以通過 ABAP 編輯器觸發修改助手,它會記錄對系統進行的修改。修改助手支持通過 ABAP 編輯器、Screen Painter、Menu Painter、文本元素維護、Function Builder 和 ABAP 字典進行的修改。
九:功能模塊出口(Function Module Exit)
實現功能模塊出口時 SAP 應用程序中應使用哪條語句?
答案:某些 SAP 應用程序中存在功能模塊出口,它使用戶能夠向 SAP 程序中添加一些功能。通過搜索 "CALL CUSTOMER" 可以發現是否存在功能模塊出口。
十:更改 SAP (Changing SAP)
請列出用戶修改 SAP 標準功能的不同方式。
答案:SAP Standard 可以通過 Personalization、Customizing、Modifications、Enhancements 及自定義 ABAP 程序進行更改。這些方式的示例如下:
Personalization——Personalization 技術包含創建變式、設置/獲取參數及活動組(Activity Groups)。
Customizing ——是最常用的使用 SAP 工具(如 R/3 Reference Model and Implementation Guide)更改 SAP Standard 的方式。可以認為 Customizing 是實施 R/3 所必需的,通常由 Functional Team 來執行。
Enhancements——常由開發 Team 執行,包含的活動有:字典增強、Funciton Module Exits、菜單和屏幕出口及 Business Add-ins (BADI)。
自定義 ABAP 程序——可以與 SAP 對象或自定義開發的對象一起工作。
Modifications——不建議對 SAP 對象使用 Modifications。使用 SSCR (SAP Software Change Registration)注冊所有對 SAP 對象的手動修改。
一:添加字段
向 SAP 表中添加字段的方法是哪兩種?
答案:這兩種方法是:Append 結構(Append Structure)和自定義 Include(Customizing Include)。Append 結構是在向表尾添加字段時創建的,自定義 Include 由 SAP 開發人員指定,以使用戶可以創建新字段。
二:修改(Modifications)
在 SAP 系統中是怎樣定義"修改"的?它們對更新(upgrade)有怎樣的影響?
答案:修改是指用戶對 SAP 發布的庫對象(Repository Object)進行的更改。
必須在更新期間對修改進行評審(Review),來決定是否應該使用新的 SAP 對象,以及將來使用時是否需要進一步修改該對象。
三:簇表和POOL TABLE 的概念
答案:
Pools和Cluster table;他們已經不是各種數據庫常規的表了,也不能夠被數據庫直接訪問。只能通過SAP自己的工具來直接訪問。
透明表:
每個透明表在數據庫中有一個相應的物理表。物理表的名稱和數據字典中的邏輯表
定義的名稱一致。所有事務和應用數據存貯在透明表中。
結構:
結構在數據庫不存在數據記錄。結構用于在程序之間或程序與屏幕之間的接口定義。
附加結構:
附加結構定義字段的子集,該字段屬于其他表格或結構,但是在修正管理中作為單
獨的對象。
存貯表:
存儲表可以用來存貯控制數據(例如:屏幕順序,程序參數或臨時數據)。幾個存
儲表可以組合成一個表庫。該表庫和數據庫中的一物理表庫相一致。它包含了各組
合庫分派給它的所有記錄。
簇KEKEKEY表:
連續的文本如文檔之類可以存貯在簇表中。幾個簇表可以組合成一個表簇。對這種
表類型,不同表中的幾個邏輯行組合到一物理記錄。這可以實現一對象接一對象地
存貯或訪問,訪問簇中的表的一個前提是,至少關鍵字的一部分必須相符合。幾個
簇表存貯在數據庫中 一個相應的表里。
四:授權對象(Authorization Objects)
什么是授權對象?在 ABAP 程序中使用哪條語句進行授權檢查?
答案:授權對象由一組字段組成,這些字段中的值將被用于進行授權檢查。ABAP 程序中使用 AUTHORITY-CHECK 語句根據授權對象進行授權檢查。在 AUTHORITY-CHECK 語句中,必須指明授權對象的所有字段,但有一個例外,可以用 DUMMY 關鍵字來繞過某個字段的檢查。
一個授權對象中最多可以定義 10 個字段。
五:ABAP 內存(ABAP Memory)交換
在使用 ABAP 內存的程序間進行數據交換時用到的兩個語句是什么?
答案:EXPORT to MEMORY ID 用于將數據復制到 ABAP 內存,IMPORT from MEMORY ID 用于將數據從 ABAP 內存復制到程序中。
在 ABAP 內存間進行交換的數據必須在兩個程序中都進行聲明,并包含同樣的數據聲明。
test my signature
總結
- 上一篇: abap名词理解
- 下一篇: 如何跨过自学SAP的三道坎