面試問題集
- 1. 數據效率?
盡量使用Select(max,min,sum,avg)和select single,for all enteris,二分法,append和collect
loop里不能套select;避免使用select distinct,代替先sort,再delete;
① 抽取數據時,避免使用SELECT *, 盡量使用SELECT A B INTO TABLE ITAB這樣的語句。
② 不要使用SELECT...ENDSELECT語句。
③ 盡量避免在LOOP中訪問數據庫。可以在之前先把數據取到內表,在LOOP中用READ TABLE WITH KEY ... BINARY SEARCH.進行讀取對應的數據。
④ 用SORT代替ORDER BY。
⑤ 使用二分查找法。READ TABLE的之前使用SORT TABLE BY對內表進行排序, 然后使用READ TABLE WITH KEY ...BINARY SEARCH.
⑥ 避免使用SELECT DISTINCT語句。在抽取數據到內表后用DELETE ADJACENT DUPLICATES語句來消除重復行。
⑦ 盡量多指定WHERE語句條件。
⑧ 在WHERE語句指定查詢條件時,在同等條件下把包含等號的查詢條件放到前邊。
- 2. 什么時候使用For all entries命令及其使用時的注意事項?
當需要在LOOP中使用查詢語句時,一般使用For all entries。
注意事項:
① IN條件所在的內表不能為空(如為空將取出全部的數據);
② 數據庫字段與內表中的關聯比較字段必須具有相同的類型和長度,且不能在比較中使用操作符LIKE、BETWEEN和IN,同時不能使用ORDER BY子句。
③ 為避免刪除並不重復的紀錄,在定義內表時應盡可能多的指定關鍵字。
- 3. 如何設置ALV的鼠標雙擊事件。如何設置ALV的頁眉和頁腳?
ALV的鼠標雙擊事件:構造LS_LAYOUT的F2CODE屬性設置為”&ETA”即可。
ALV的頁眉:利用Function“REUSE_ALV_COMMENTARY_WRITE”來進行設置。
- 4. FTP文件上傳,下載,在哪句中需要做異常捕獲?
- 5. SQL性能舉例?
① 對同一數據庫表存取的場合,能一次把多條記錄放到內表中進行處理,不要多次反復存取;
② 只選擇必要的字段,應避免使用”SELECT *”;
③ 在WHERE語句指定查詢條件時,要寫全查詢條件;
④ 在WHERE語句指定查詢條件時,應把包含數據庫關鍵字段的條件列在前邊。
⑤ 在WHERE語句指定查詢條件時,在同等條件下把包含等號的查詢條件放到前邊。
- 6. 怎樣理解Dynpro的PAI,PBO事件?
Dynpro程序運行時,首先觸發PBO事件,然后顯示Dynpro畫面,當在Dynpro畫面觸發一個功能鍵時,這時會觸發PAI事件,當PAI事件執行完畢,重新顯示Dynpro畫面時又將執行PBO事件。當不斷觸發功能鍵時,PBO和PAI事件會不斷交替執行。
pov poh
- 7. 按順序舉例說明Report各事件及其作用?
① LOAD-OF-PROGRAM 程序執行時,自動觸發該EVENT
② INITIALIZTION 對程序變量進行初始化
③ AT SELECTION-SCREEN OUTPUT 選擇屏幕PBO事件,顯示選擇屏幕之前觸發
④ AT SELECTION-SCREEN 選擇屏幕PAI事件,用戶在選擇屏幕上執行某些功能
⑤ START-OF-SELECTION 選擇開始事件
⑥ END-OF-SELECTION 選擇結束事件,一般在該事件中輸出列表
⑦ TOP-OF-PAGE 頁眉控制
⑧ END-OF-PAGE 頁角控制
⑨ AT LINE-SELECTION 行選擇控制,用戶選擇某列表行時觸發
⑩ AT USER-COMMAND 用戶交互控制,用戶選擇某個GUI功能時觸發
- 8. 能否自行創建SD、MM、FI模塊相關數據並說明其過程?
- 9. 是否使用過Query,說明其創建過程?用到過哪些T-CODE?meng
- 10. BDC執行出錯時,為查看設置錯誤處,顯示模式應怎樣設置,A、E、N分別代表什么含義?
顯示模式DISMODE應設置為“A”或“E”。
A:代表無論出錯與否每個畫面都顯示;
E:只是在出錯時顯示;
N:代表無論出錯與否每個畫面都不顯示。
- 11. 是否做過數據庫表維護?meng
- 12. 刪除內表重復數據前應該做什么,如果要按照給定字段如何刪除?meng
應該對內表進行排序。
- 13. Job管理?
- 14. SAP有哪些外部接口及其內容?
RFC,BAPI,IDOC。
RFC :RFC是SAP系統和其他(SAP或非SAP)系統間的一個重要而常用的雙向接口技術,也被視為SAP與外部通信的基本協議。簡單地說,RFC過程就是系統調用當前系統外的程序模塊,從而實現某個功能,而且調用系統和被調用系統中至少有一個必須是SAP ABAP系統。這種遠程功能調用也可在同一系統內部進行(如本地SAP系統內的遠程調用);但通常情況下,調用程序和被調用程序處於不同系統。
BAPI:BAPI全稱Business Application Programming Interfaces,即業務應用編成接口,在SAP內部組件及SAP與非SAP組件之間的技術整合和業務數據交換過程中起着非常重要的作用。(BAPI是基於RFC實現的)
IDOC:IDOC是SAP系統之間或SAP系統與外部系統之間電子數據交換的標准數據格式。在事務處理過程中,隨時會生成IDOC。
- 15. 在什么時候觸發Top of page語句?
在3種情況下可以觸發Top of page語句。
① 遇到第一個WRITE語句時;
② 當頁面行數超過LINE-COUNT里定義的行數時;
③ 遇到NEW-PAGE命令時。
- 16. 本地文件上傳成CSV文件 的function?
- 17. Hash table 和Sort table的注意事項?
Hashed表的除了數字字段以外,其余字段必須指定為key字段,不能使用APPEND語句,Sort 為non-unique時不能使用INSERT語句。
- Report的跳轉語句是什么?pick 是什么?怎么用?
Report的跳轉語句是“HIDE和AT LINE-SELECTION”。 “pick”是在Report一覽畫面雙擊或按F2鍵時觸發的功能鍵鍵值。
- 19. FTP文件的上傳下載操作是什么?
FTP程序大致流程為: FTP_CONNECT ,FTP_COMMAND ,FTP_DISCONNECT。
FTP_COMMAND 中輸入標准的FTP命令。如:更改 FTP 目錄 "cd dir", 更改本地目錄 "lcd localdir",上傳文件"put file"。
FTP_CONNECT – 打開並登陸FTP服務器的連接。
FTP_COMMAND – 在FTP服務器上執行一個命令。
FTP_DISCONNECT –關閉指向FTP服務器的連接。
- 20. 加鎖,解鎖的2種方式是什么?
加鎖的2種方式:
①E模式。同一個terminal session的不同external session之間不受上鎖的影響,可以使用鎖住的對象;
②X模式。上鎖的對象只能由external session中的一個internal session使用。
- 21. MM、PP、SD、FI、HR模塊的主要流程,MM、PP、SD、FI、HR模塊主要數據庫表?
MM模塊的主要流程:
① 接到客戶的采購訂單后,由營業員進行庫存確認,如果庫存不足則由其提出采購申請。
② 購買擔任者接到采購申請經審查合格后,向供應商下達采購訂單。
③ 入庫等相關管理人員對供應商送達的商品進行入庫確認。
④ 由購擔任者對供應商提出支付請求進行確認,經確認無誤后,向財務部門提出支付申請,財務部門對支付申請進行審核合格后,進行支付處理。
SD模塊的主要流程:
① 銷售擔任者接到客戶尋價后,在系統中登錄客戶的尋價信息。
② 相關人員對登錄的尋價信息進行價格確認,並在系統中登錄報價信息。
③ 客戶對收到的報價信息審核合格后,提出采購申請。銷售擔任者接到采購申請后,在系統中登錄采購訂單。
④ 相關人員對客戶所訂購的商品進行籌措完畢后,進行出庫處理,並在系統中登錄出庫單。
⑤ 相關人員向客戶提出支付請求,客戶支付后,給客戶出具紅頭發票,在系統中登錄開票信息。
- 22. update,delete數據庫時的注意事項?
① 正確指定數據庫表的KEY字段,防止更改了不應更改的記錄,同時要正確指定要更改紀錄的中需要變更的字段;
② 要注意保持關聯表的數據一致性;
③ 變更前要注意上鎖,變更后要注意解鎖。
- 23. 怎樣做帶按鈕的選擇畫面?
① TABLES SSCRFIELDS.
② SELECTION-SCREEN PUSHBUTTON /[/]<pos(len)> <name> <ucom> [MODIF ID <key>].
③ INITIALIZATION.
MOVE 'My text' TO <name>.
④ AT SELECTION-SCREEN.
⑤ IF SSCRFIELDS-UCOMM = <ucom>.
ENDIF.
上述代碼的描述:
① 定義構造SSCRFIELDS;
② 使用命令Selection-screen pushbutton定義Push Button;
③ 在事件Initialization中定義pushbutton的文本;
④ 在事件 At Selection-Screen中定義pushbutton按下后,所執行的處理。
- 24. 求和函數(Collect)的注意事項?
① 要填充沒有重復條目的內表,應該使用COLLECT
② COLLECT語句無法用於帶深層結構的內表(組件中不可以包含內表)。
③ 為COLLECT指定的工作區域必須與內表的行類型兼容,(不僅僅是可互相轉換)。
④ 所有的非表關鍵字段必須是數字類型。
- 25. 舉例說明MM、SD、FI、PP模塊的主要t-code?
MM模塊的主要t-code:
MMBE 庫存總覽
ME51N 采購申請
ME21N 采購訂單
MIGO 收貨
MIRO 后勤發票校驗
SD模塊的主要t-code:
VA11 詢價
VA21 報價
VA01 銷售訂單
VL01N 出庫
VF01 開具發票
FI模塊的主要t-code:
總賬:
FS00 創建科目
F.10 查看會計科目表
F.01 查看會計科目余額表
FB50 制總賬憑證
FB08 沖銷憑證
FS10N 科目余額查詢
FBV0 成批過賬
FBV3 顯示預制憑證
OBR2 刪除會計科目
KOB1查看訂單明細
KB31 統計指標賦值
F-04 過賬並清賬
FAGL_FC_VAL外幣評估
FB70 輸入客戶發票(員工借款)
F-22 輸入客戶發票
F-30 過賬並清賬(客戶)
F-53 付款記賬
F-42 輸入結轉過賬
F-43 輸入供應商發票
F-51 過賬並清賬(供應商)
應付會計:
FB01 輸入憑證分錄
F-53 銀行付款清賬(支付貨款、銀兌到期付款、信用證到期付款)
F-51 帶清賬的轉賬業務(如需調整的業務或憑證、退回客戶多付貨款、上線前的發票校驗)
F-48 預付定金
F-43輸入供應商發票(不通過采購訂單形成的應付賬款)
F-42 不帶清賬的轉賬業務(如需進期初差異的發票校驗)
F-40 應付票據清賬
F-57 開立信用證、信用證到期沖銷
F-32 應收票據背書清應付賬款
F-44 供應商預付與應付賬款對沖
FB50付銀兌保證金、信用證保證金、支票重開、電匯退回重付
FB03 顯示憑證
FB08沖銷未清賬憑證
FBRA 沖銷已清賬憑證
MIRO 后勤發票校驗
MR8M 沖銷發票
FK10N 查供應商余額
FBL1N 供應商行項目顯示
F.42供應商明細賬顯示
應收會計:
F -21 預收銀兌
F-28 收款、銀兌到期托收
F-29預收款
F-30 銀兌清賬
F-32 應收預收清賬
FB50 總賬科目過賬
FB70 手工開發票
FB75手工開貸方發票(紅字)
資產會計
AR01 調用資產清單
AS01資產主數據創建
ABZON 資產購置-損贈等、增值
F-90 資產購置
ABGL資產減值(本年)
ABGF 資產減值(上年)
AIAB 在建工程資本化
ABAVN資產報廢
AS93顯示遺產數據
信貸管理
FD32 信用風險、例外信用額度的建立及信用時間的控制,另取消信貸也在此處理
FD33 查詢信用風險、例外信用額度及信用時間
VKM1在信貸額度之內取消銷售訂單
F-49 制作在途資金慮擬憑證
FB08在途資金到賬后沖銷制作的在途資金慮擬憑證
VK13 查看凍結銷售訂單的單價、金額
FBL5N 客戶行項目顯示
FBL3N 總賬科目行項目顯示
F.23 查詢以本幣計的客戶余額
VA05 出具發票憑證清單
FD10N 客戶余額顯示
開票員
FB03查看憑證
VF01開具發票
VF02修改發票
VF03 查看發票
VF04 查看已發貨未開票清單
VL03N 查看交貨單
F-22 客戶發票(一般)
FB75 客戶貸項發票
FB08 沖銷憑證
FD03查看客戶主數據
FB70 客戶發票
VA03 查看銷售訂單
VF05 查看銷售訂單清單
MB51 查看物料移動記錄
VK13 查看定價
PP模塊的主要t-code:
CS01 創建BOM
CS07 將BOM分配給工廠
CR01 創建工作中心
CA01 創建工藝路線
MD61 創建獨立需求計划
MD05 顯示MRP清單
MD04 庫存需求訂單
MD02 運行物料需求計划
COOIS 顯示生產訂單清單
CO02 更改生產訂單(下達生產訂單)
MD42 對成品的生產計划
PM模塊的主要t-code:
CO01 創建生產訂單
CO11N 工序確認(生產訂單確認)
(MPS是確定每一具體的最終產品在每一具體時間段內生產數量的計划)
- 26. SAP R/3包含哪些模塊?
FInancial management (FI,財務會計)
COst management and controlling(CO,管理會計)
Material Management (MM,物料管理)
Production Planning (PP,生產計划和控制)
Sales and Distribution (SD,銷售和分銷)
Production Planning (PP,工程/項目管理)
Quality Management (QM,質量管理)
Project Management (PM,工廠維護與管理)
Human Resource (HR,人力資源)
Enterprise Control (EC,企業控制)
Treasury (TR,財務管理)
Investment Management (IM,投資管理)
- 27. 什么是batchinput(bdc)並簡單介紹其流程?BDC調查有哪些方式?BDC有幾種,分別是什么?
流程:
① 進行BDC調查(使用事務SHDB);
② 提煉數據;
③ 把提煉的數據轉換到內表‘BDCDATA’中;
④ 調用call transaction把數據導入系統。
BDC類型:
① 通過call transaction形式執行;
② 通過session方式形式執行,如果session執行成功,數據將被傳送成功。
BDC調查方式:
① 使用事務SHDB調查;
② 把光標置到需要調查的事務的項目上:通過按F1鍵→技術設定→項目名來進行調查。
29. 請列舉abap程序的運行方式?它們一般表現為什么類型的程序?
① 可以分配事務代碼並通過事務代碼運行,用於完成一項系統功能,可以添加到最終用戶的系統定制菜單中。可執行程序(report),模塊池程序。
② 不能直接通過事務代碼運行的程序。 功能組,ABAP類庫,ABAP接口庫,子程序,類型組包含程序。
30. alv是什么,能簡單介紹一下alv的作用嗎?
ALV 是abap list view.是ABAP的報表顯示工具。它把內表中的內容以設定的格式,顯示出來,附加一些功能,如下載為本地文件等。
31.下拉式報表(下鑽式報表)做過嗎,介紹一下下拉列表多用到的技術?
Hide,
at line-selection定義用戶雙擊列表某行時觸發的事件,
at user-command定義用戶按下某按鈕,菜單項或輸入命令后觸發的事件,
at PF<n>用戶按下功能代碼,(p307 BCDWBDIC.HLP)
32. sap文件操作都有哪幾種?分別有什么操作?版本有什么限制?
順次文件(服務器文件)
本地文件(客戶端文件)
順次文件的操作包括:打開,讀取,寫入,關閉,刪除
本地文件的操作:
4、7版本
GUI_DOWNLOAD
GUI_UPLOAD
4、6版本以前的,性能不好。
WS_DOWNLOAD
WS_UPLOAD
DOWNLOAD
UPLOAD
33. dynpro程序結構以及運行機制,介紹一下。
邏輯上分為PBO,PAI以及POV,POH
建立程序時物理上TOP,O01,I01,F01.
運行機制:T-CODE->PBO->PAI……………
34. 如果bdc出錯時我們應該如何處理?
可以設置“E”模式。有報錯可輸入修正數據。
如果不想馬上轉前台,用 insert_group 插入一個session。
35. 如果我們想把一個batch的程序定義為零點開始啟動應該怎么做?
在sm36下,通過給出job名稱,job類,和job steps創建一個后台job。
36. alv的處理需要2小時或者更長的時間才能顯示出來,應該怎么處理?
① 把標准表改稱sorted表或hash表;
② 檢查取數邏輯,特別是數據庫取數邏輯是否有影響效率的地方而加以改進;
③ 判斷在選擇畫面上增加查詢條件;
37. 如果發現報表性能問題,應如何去處理?
首先要檢查代碼,檢查代碼是不是有誤,看看能不能進行常做的代碼優化。查找耗費資源的原因。
如果是數據太多,可以增加篩選數據的條件,如在畫面上增加查詢條件。
se30定位錯誤。有一個運行分析圖示,找到瓶頸:是數據庫操作還是代碼運行的問題。如果是代碼運行的時間較長,把標准內表類型改成sorted或者hash的內表
38. 經常暴露的性能問題一般體現的什么語句上,舉例說明?
Select和select single,for all enteris,二分法,append和collect,loop里不能套select,where條件,避免使用select distinct,代替先sort,delete。
39. sorted內表在使用時,有什么注意的地方?read時可否刪除內表的記錄?
不能刪除。
40. 在什么情況下要用for all entries,用應該注意什么?
類似外連接的時候,用一個表的某一字段為條件,從另一數據庫中表的數據。
Loop套select的時候用,2個表,for all entries。
for all entries,用它應該注意什么:
使用前要檢查內表是否為空,否則會查詢出全部數據。
要盡可能多的用關鍵字,否則會把重復的刪掉。
41. 打印報表時,想實現直接打印不顯示在屏幕上應如何處理?
可以通過new-page print on 語句,將生成的列表直接發送到spool,系統進行打印處理,不再屏幕中進行顯示。在write語句之前,打印函數之后。
42. 解釋一下pbo pai pov poh?
PBO:Process Before Output(顯示前處理過程)
在向用戶顯示屏幕GUI之前進行觸發,一般作畫面初始化和設定status,title,動態設定畫面屬性,清空變量
PAI:Process After Input(輸入后處理過程) 在用戶進行某些屏幕行為后觸發,對應一些用戶操作,畫面check。
POV:Process On Value-request對應功能鍵F4用戶對畫面上某個字段按F4,類似檢索help值table
POH:Process On Help-request對應功能鍵F1
43. 在dynpro想實現雙擊,取出對應屏幕上的字段的名字的值,如何處理?
44. dynpro的動態屬性,有哪些舉例說明?
NAME屏幕字段名稱
GROUP1,2,3,4, 屏幕字段屬於哪個組
ACTIVE 1可用,0不可用
REQUIRED 1必入力,0非必入力
INPUT1可入力,0不可入力
OUTPUT1可顯示,0不可顯示
INTENSIFIED1強調顯示,0非強調顯示
INVISIBLE1為*,0為輸入即可見
LENGTH字段輸出長度
DISPLAY_3D以三維框架顯示字段
VALUE_HELP 有查詢幫助的字段
45. 在pov中,如果數據的選擇條件為屏幕上的值的時候如何處理?
46. dynpro邏輯塊中,field的作用是什么?
進行字段輸入檢查。(防止所有控件都變灰)
47. 列舉abap數據字典中的對象及作用?三層結構?
數據字典中的對象:
① Tables
② Views
③ Data elements
④ Structure
⑤ Domains
⑥ Search Helps
⑦ Local Objects
三層結構:Domains、Data elements、Tables(Views)。
48. Function所涉及到的參數及其作用
Se37功能組添加FM
Attribute:設定功能模塊類型,名稱等通用屬性
Import:定義輸入參數,從程序傳遞到功能模塊。
Export:定義輸出參數,從功能模塊傳遞到程序中的參數
Tables:定義內表參數,將內表整體輸入輸出
Exceptions:定義可能出現的異常
Changing:定義輸入輸出參數。
49. 使用Call transaction進行BDC處理時,定義項目名、實行參數、處理結果的構造分別是什么,bdc table所用的構造包含哪些字段?
項目名構造:BDCDDATA。
實行參數構造:CTU_PARAMS。
處理結果構造:BDCMSGCOLL。
BDCDATA構造:
FieldNAME |
Type |
Description |
Program |
Char(8) |
Program name of Transaction |
Dynpro |
Char(4) |
Screen number of Transaction |
Dynbegin |
Char(1) |
Indicator for new Screen |
Fnam |
Char (35) |
Name of Database Field from Screen |
Fval |
Char(80) |
Value to Submit to Fied |
50. 在文件處理時,文件中出現亂碼,應該從哪方面考慮?
Open dataset in textmode encoding default for output/input
Open dataset 時指定字符編碼,使用unicode的系統經常出現這樣的問題。
51. 對內表操作collect和append之間的區別,以及collect的用法的考慮是什么?
要逐行填充內表,可以使用APPEND、COLLECT或INSERT語句
Collect用於添加無相同表關鍵字的內表行
Append可以添加相同表關鍵字的內表行
Collect命令的限制事項:
①要填充沒有重復條目的內表,應該使用COLLECT
② COLLECT語句無法用於帶深層結構的內表(組件中不可以包含內表)。
③為COLLECT指定的工作區域必須與內表的行類型兼容,(不僅僅是可互相轉換)。
④所有的非表關鍵字段必須是數字類型。
52. check table和value table各指的是什么?關系怎么樣?
如果一個表字段定義了外部關鍵字,則該表稱為外部關鍵字表,而對應的參照表則稱為check table。如果在數據字典中為一個表字段指定了約束表,則其輸入幫助可以是該表中的關鍵字段值列表,或者是約束表中對應自動制定的輸入幫助。
53. 在sap F4是人機交互的一種形式,請列舉與之相關的技術點?wang
54. 什么是range table ,其作用是什么?
range table是一種特殊的內表,表結構是由4個字段組成,分別是:SIGN、OPTION、LOW和HIGH。
我們可以把某個字段的多個值范圍放到該內表中,作為查詢條件來使用。
55.什么是選擇文本selection-text,其作用是什么?
選擇文本是選擇畫面選擇條件的文本,用來顯示選擇畫面個查詢條件的內容。
56. 請舉例說明client依存,及非依存的概念?
R/3系統將應用分成若干個商業區域,這些分割開來的區域稱為集團,每個集團都分配一個數字ID,當用戶登錄系統時,必須指明要登錄的集團ID,跟特定集團相關的就是client依存,跟特定集團無關的,就是非依存。
57. 邏輯數據庫是什么?如何創建和使用一個邏輯的數據庫?
邏輯數據庫是特殊的ABAP/4程序,使開發者不必編碼所有的數據庫訪問。
邏輯數據庫將一定數據庫表的內容組合在一起。可以將邏輯數據庫鏈接為ABAP/4報表程序的屬性。這樣,邏輯數據庫就可向報表程序提供一組層次結構表格行。該層次結構表格行可從不同數據庫表中提取。
創建和使用:
ABAP/4開發工作台包括創建和顯示邏輯數據庫的便利工具(既可調用事務SLDB,也可選擇“工具->ABAP/4開發工作台->開發->編程環境->邏輯數據庫”)。要查看邏輯數據庫<ldb>的層次結構,請在ABAP/4編輯器的命令區中鍵入SHOW DATABASE <ldb>。
與邏輯數據庫連接的最重要事件是GET(參見《事件和它們的事件關鍵字》)。
也可在已與邏輯數據庫鏈接的報表程序中使用SELECT語句。
來源:在公司的ABAPhelpWORD文檔中找到的。
58. BDC兩種處理方式的區別是什么,BDC session如何創建,在程序如何處理?
Session 方式:
① 同步處理。
② 可以傳輸大量的數據。
③ 處理慢。
④ 生成錯誤日志。
⑤ Session處理前數據沒有被更新,直到Session處理后才被更新。
Call transaction方式:
① 同步或異步處理。
② 可以傳輸少量數據。
③ 處理速度快。
④ 錯誤需要明確處理(不生成錯誤日志)。
⑤ 數據自動更新。
BDC session的創建:
① CALL FUNCTION ‘BDC_OPEN_GROUP’
② CALL FUNCTION ‘BDC_INSERT’
③ CALL FUNCTION ‘BDC_CLOSE’
CALL FUNCTION ‘BDC_OPEN_GROUP’在SE35生成一個session,可以在SE35里手動執行,或在程序里使用命令“SUBMIT RSBDCBTC AND RETURN WITH QUEUE-ID = KEY的ID”來直接執行。
59. 如何運行服務器主機的程序?
60. 在sap中用戶增強都有哪些?如何去查找和處理他們?
1.E類:Enhancement exits,即通常所謂的用戶出口(User_exit )
用戶出口也叫功能出口(Function Exit)。
使用T-code:SE37搜索EXIT*,找到的函數大都是做系統預留的出口函數,前面說過,用戶出口是標准程序留給用戶的接口,標准程序通常不允許用戶任意修改,如果修改需要申請Access Key,而且修改標准程序可能導致的錯誤ERP公司通常是不負責的。在SAP中,自定義的程序通常以保留字Y或Z開頭,因此,出口函數中都預包含了一個Z開頭的程序。
2.C類:GUI接口(GUI codes)
3.S類:屏幕增強(Screen Exit)
比如,在建立采購訂單,工單和固定資產主數據時,系統都預留屏幕增強,也就是說允許用戶自定義用戶輸入界面並編寫相應的輸入輸出處理程序。
在各類增強中,可能還用戶自己定義結構或表格,系統對應類型T類。比如增強MM06E005
允許用戶建立兩個結構CI_EKKODB和CI_EKPODB。
61.解釋一下idoc ,sap對它如何處理配置,使用的?meng
62.sap中img指什么?他有什么作用?
Implementation Guide(IMG)是SAP系統的配置工具,它可按你公司的要求配置SAP系統以適合你公司的要求。有三種類型的IMG,分別是:
SAP Reference IMG,可在這里配置SAP系統的所有功能。
Project IMGs,它基於Rrference IMG,可為某個項目進行單獨配置,比如我們可建立一個FI的Project IMGs,方便配置。
Project view IMGs,在Project IMGs里的Project views里設置,在Project IMGs里再建立一個視圖,把一些配置選項添加到該視圖里。通過這樣一層層的分工,就可把Reference IMG里的配置分配給不同的人員進行維護。
我們可為不同版本的SAP系統建立IMG,如4.0x,4.5x。這種IMG叫做版本相關IMG。通過“help”--“Release notes”菜單可顯示各個SAP發布版的區別。
我們可用事務碼“spro”來進入SAP Reference IMG。使用“spro_admin”進入project IMGs。
操作例子
學習SAP主要學前台操作和后台配置,后者一般通過IMG,事務代碼是SPRO(編輯)
(以FI里的GL為例)
調用 SAP 參考 IMG
進行以下步驟來調用 SAP參考 IMG:
1. 在系統菜單上選擇工具 客戶化,實施方案 顯示 SAP 參考-IMG。
IMG結構將顯示出來。
2. 將光標置於財務會計上並且選擇編輯 擴展或點擊加號,以顯示財務會
計下的副標題。
“財務會計全局設置”, “總分類帳” 和 “應付帳款和應收帳款”。
3. 將光標置於“財務會計全局設置”,“總分類帳會計”或“應付帳款和應
收帳款”上,進一步擴展樹狀結構直至發現您所需的配置步驟。
4. 雙擊文本圖標以閱讀相關配置步驟的說明,然后點擊繼續 以進入設置維護。
5. 進行所需配置設置並且將它存盤。
6. 您可點擊進入 返回 以回到IMG結構顯示中。
63. 在程序中使用邏輯數據庫的兩種方法?
64.Append與Insert的區別?
前者不能用於Hashed表, 后者不能用於Sorted表的non-unique,Append在表尾插入數據,
Insert在指定位置插入數據。
65. sd的業務數據怎么傳遞到總帳的?
建發票會產生會計憑證。借應收客戶,貸主營收入。
66. 什么叫統馭科目,系統中常見的統馭科目類型有哪些?
統馭科目(reconciliation account) 是用來將明細分類帳附加到總分類帳的一種總帳科目。統馭科目和明細分類帳在過帳業務時同步更新-即行項目明細保持在明細份類帳中,匯總信息則保留在統馭科目中,統馭科目是不能直接過帳的。
在系統中,我們一般把某個客戶最經常發生的業務對應的總帳科目設為它的統馭科目。如非特別說明該客戶的業務都會自動計入它的統馭科目中去。而一個總帳科目一旦被設為統馭科目,它就只能接收來自明細帳的數據進行匯總,它本身不能直接錄入數據。
應收應付和資產相關科目一般設置成統馭科目
67. 系統中常見的移動類型有哪些?t156
通常分幾大類:收貨 發貨 轉儲 庫房調整
\}/M0bP;qd6|$p^7590422收貨類:ITPUB個人空間*c7BH!Y4X#U
101 采購訂單收貨 103 采購訂單收貨至凍結狀態 122 無采購訂單退貨 161 按退貨采購訂單退貨 131 從生產訂單
KXN.UwH
K X D7590422收貨ITPUB個人空間
[;W)U!B$E j�W 501 無采購訂單收貨 511 免費收貨
c@O.P9j{b
n)L7590422發貨類:ITPUB個人空間
R‑y i3y0v
201 成本中心消耗 261 內部訂單消耗 fVVq4r7590422541 委外加工發貨ITPUB個人空間 m5K0lpJ 551 庫房報損
3f+fx.e&z IV6T7590422轉儲類:ITPUB個人空間�Q
V%le"~2p
301 工廠間轉儲(一步) 311 存儲地點間轉儲 309 編碼轉換
321-325 庫存類為凍結/質檢狀態的記帳修改 移動ITPUB個人空間{(P~
yn
調整類:ITPUB個人空間ET`xP^
盤贏盤虧 一般控制比較嚴格0ZD,Z
r^9o$r7590422ITPUB個人空間nB-j W*ab(F
68. 清賬的分錄是什么?
清賬沒分錄。付款的分錄是借銀行存款貸應收客戶。
69. 沒有清賬的和已清賬的會計憑證存在在哪些表里?
未清客戶BSID, 未清供應商BAIK, 未清總帳:BSIS;
已清客戶BSAD, 已清供應商BSAK, 已清總帳:BSAS;
70. 現在客戶要做一個報表,看某客戶某日期欠款額度如何取數?
取bsid該客戶該日期前的數據,bsad該客戶該日期之后的數據。
72. 什么是IDoc?
IDoc接口應用於SAP系統與其他系統的業務數據交換過程,包含數據結構的定義以及數據的處理邏輯,其中的數據結構即為IDoc(intermediate document)。IDoc是一種系統間通用的數據交換格式,通過IDoc,SAP系統可以和多種外部系統進行數據交換。
73. 創建財務憑證用哪個bapi?
可以用bapi這個事務去查。
BAPI_ACC_GL_POSTING_POST 總帳的借貸(fb01)
BAPI_ACC_DOCUMENT_POST 其他的
74. 如果客戶有很多憑證放在excel里,怎么把數據導入系統?
可以先利用Function“ALSM_EXCEL_TO_INTERNAL_TABLE”把excel中的數據導入內表中,編輯完后,再調用BDC或BAPI把數據導入系統。
75. excel中數據的上傳下載用什么方式,有函數么?
文件在服務器上用DATASET,在客戶端用函數,下載用WS_EXCEL,上傳可以用ALSM_EXCEL_TO_
INTERNAL_TABLE。
77. sorted的內表read的時候需要注意什么?
根據SORT KEY來進行BINARY SEARCH 查找。
78 . sorted的內表還能插入和刪除么?
語法是允許的,但是規范里不推薦。由於會引起性能問題,因索引重排。
79.什么是smartforms,簡述其創建過程?
SMARTFORMS是SAP提供的打印報表的工具。
創建過程:
運行T-CODE SMARTFORMS。
① 在起始畫面選擇STYLE,進行STYLE的創建。
⑴創建段落書式;
⑵創建文字書式;
⑶有效化STYLE。
② 在起始畫面選擇FROM,進行FROM的創建。
⑴設置FROM屬性;
⑵創建WINDOWS;
⑶創建WINDOWS的標題TEXT;
⑷創建其他TEXT;(可選項)
⑸創建TABLE;(一般都需要創建)
⑹創建TABLE的HEADER;
⑺創建TABLE的HEADER的TEXT;
⑻創建TABLE的主區域;
⑼創建TABLE的主區域的TEXT;
⑽TABLE其它細節設置;
有效化后,點擊預覽生成一個Function,運行這個Function就可以預覽所設置的畫面。在程序里運行SMARTFORMS,需要把先前定義的From 名作為Funcition ‘SSF_FUNCTION_MODULE
_NAME’的輸入參數,然后把‘SSF_FUNCTION_MODULE_NAME’返回的From名,作為接下來要CALL的Funciton來CALL即可。
80. script的輸出類型都知道是么?如標准程序數據的打印輸出?
81. alv你們用哪種方式做?
OO(面向對象)和OP(面向過程)。
84. field module和on value-request有什么作用?
在“field module”中可以指定執行module的屏幕字段;
點擊入力幫助時觸發“process on value-request”事件,可在其對應的module中指定要在入力幫助中顯示的數據,及“CALL SCREEN”命令。
85. BOM數據報存在哪兩個數據庫表中?
STKO(BOM 表頭),STPO(BOM 項目)。
86. 做過哪些程序,描述一下其功能?
(這個問題很重要,幾乎每次面試都會問到,大家一定要仔細回憶一下,把這個問題回答好。回答的要點應該包括:選擇畫面有哪些選擇條件,到哪些數據庫表里取得什么數據,生成什么樣的畫面和執行了什么功能等。)
87. 怎樣開發BAPI?
①定義BAPI的Structure,習慣上以zbapi開頭(必須自己創建,因為BAPI釋放后,其相應的結構也將被釋放);
②創建Function Module ,如果沒有Function Group,要先創建Function Group,在SE37內都可完成。另外BAPI的屬性應設為RFC(Remote Function Call);
③SWO1創建Business Object;
④BAPI分配給業務對象,並添加相應的API Method,目的讓BAPI可以被外部程序調用;
⑤釋放,注意要先把對象設置為實施,然后才能釋放。
88. LEFT OUTER JOIN 和INNER JOIN有哪些限制條件?
LEFT OUTER JOIN限制條件:
① 在ON附加項中,只能使用“=”操作符,且必須至少有一個條件是對主選擇表和結合表中的字段進行比較
② 不能在WHERE子句中對結合數據表中的字段進行條件限定。
INNER JOIN限制條件:
① 不同邏輯條件之間只能通過AND連接;
② 每一個條件中必須包含一個主選擇表中的字段。
89. 客戶退貨需要做哪些處理?
對於客戶投訴的另一種解決方法是退貨。在系統中有3種處理方案:
第一:標准的退貨流程。首先是建立退貨憑證,退貨憑證可以是針對銷售定單或針對發票。當貨物實際退回時,倉庫參照退貨憑證做入庫處理,系統自動生成會計分錄 借:存貨 貸:產品銷售成本。如果需要補貨,那么做補貨的發貨處理,系統自動生成會計分錄 借:產品銷售成本 貸:存貨。這種情況不影響開票和實物發票。
第二:如果客戶不要補貨,而要退回貨款,那系統將針對退貨開出貸項憑證,並自動生成如下分錄: 借:產品銷售收入 借:應交稅金-增值稅-銷項 貸:應收帳款-客戶明細, 金額為退貨部分的售價。同時財務人員手工開具紅字發票,金額為原發票金額。再手工根據退貨后余額重開發票。將紅字發票和重開發票同時作為貸項憑證的原始憑證。
第三:對於不要求補貨的退貨,我們也可以不建立退貨憑證,而直接取消原發票(對應紅字發票),退貨入庫后,再重新開出發票(對應重開的增值稅發票)。
90. AT FIRST, AT NEW, AT END OF 有什么區別?
AT FIRST:當前循環內表的第一行,即當第一次循環操作時,系統會執行控制語句塊。
AT NEW:如果行組(對象字段及其前面的全部字段)中的任何字段內容不同於上一行,執行語句塊中的內容。
AT END OF:如果下一行行組中的任何字段內容不同於上一行,執行語句塊中的內容。
91.BDC當中的T-code如何獲得?
T-code一般由式樣書提供。如需調查,則可以根據要處理的業務需求,到SAP起始畫面(登錄后顯示的第一個畫面)的相應目錄下進行查找,找到后可以運行相應的T-code(事務),然后查看要登錄的數據庫表是否已正確登錄記錄,以此來判斷所查找到的T-code是否是所需的。
92. Dynpro中2個畫面之間跳轉,如何將第一個畫面的事務處理與第二個畫面的事務一起處理?
ABAP 中的COMMIT有兩個自動機制:一個是程序完成,當一個程序運行完了會自動COMMIT(正常或異常),一個是屏幕完成,當一個屏幕出口時也會COMMIT。
由於以上原因,一個SAP LUW里的隱式的DB COMMIT或者改變一般不可以放在不同的屏幕里面來處理,因為那樣的話這些步驟不會在一個DB LUW里了,不在一個DB LUW就會導致數據的不一致性,也不符合all or nothing的原則。一般情況,把之前要改變的數據都保存到global的變量里面,到最后一個屏幕來處理這個global的數據,更新數據庫
93. 常用的abap開發T-CODE有哪些?
se11:數據字典(顯示、編輯、變更)
se12:數據字典(顯示)
se16:表顯示
se24:Class維護
sm12:查看Lock Object
sm35:Batch Input Session OverView
sm36:定義后台Job
sm37:Simple Job Selection
se37:創建Function
se38:Abap編輯器
se71:From維護
se80:對象導航器
se91:message維護
se93:Transcation維護
shdb:BDC調查
bapi:Bapi調查
swo1:創建Business Object
smartforms:smartforms維護
94. AT NEW、AT END OF指定字段之后的字段將發生怎樣的變化?
系統用“****”填充目標區域中所有指定字段后面的關鍵字段,對於非關鍵字段將進行初始化,數值則不變。在使用 AT 命令前,應該先對內表進行SORT。
95. commit work 和 rollback的作用是什么?什么時候自動commit?
“commit work”數據庫更新提交,“rollback”數據庫更新取消。
ABAP 中的COMMIT有兩個自動機制:一個是程序完成,當一個程序運行完了會自動COMMIT(正常或異常),一個是屏幕完成,當一個屏幕出口時也會COMMIT。
96. sap memory 和 abap memory的區別?
回答方法1:
SAP Memory的生命周期與用戶的終端會話(terminal session)一致。SAP MEMORY在同一個terminal session的不同external session之間共享。可用來存儲屏幕輸入字段的缺省值。
ABAP Memory也是用戶相關的存儲變量值的內存空間,它與external session相一致,可以用於external session中的internal session之間傳遞變量,可以用來傳遞任何類型的ABAP變量。當用戶離開external session時(/I command),相應的內存空間就會被初始化。
通過事務代碼調用程序時只有insertion(CALL TRANSACTION)方式才能通過ABAP MEMORY傳遞變量。
回答方法2:
① 讀法和使用方法不同。
Sap內存: set parameter /get parameter
Abap內存:export to memory / import from memory
② 共享范圍不同。
Sap內存可以被所有的主session訪問,內存數據可以同一個session中不同程序之間或不同session之間。
Abap內存只能在同一個session的不同程序之間共享數據。
③ 作用范圍不同。
Sap內存在整個終端session時間內有效。
Abap內存只在一個session時間內存放。
④ 使用一般原則。
Sap內存用於屏幕默認值輸入。
Abap內存用於模塊之間傳遞數據。
97.怎樣刷新alv頁面?
首先找到ALV顯示Function的I_CALLBACK_USER_COMMAND參數所對應FROM,然后把FROM所傳進來參數的構造SELFIELD的REFRESH參數設置為“X”就可以實現。
98. Domain,data element,table之間的關系,為什么要分三層?
Doman是dataelement的組成元素,dataelement是table的組成元素。
Domain:定義的是表的技術屬性,例如:數據類型,數據位數等。Data Element:定義的是表的業務數據屬性,例如:各種標簽的文本等。SAP通過這種方式把技術屬性和業務屬性分開來進行定義。
99. 創建數據庫表時應注意哪些事項?
① 正確指定表的名稱和描述。
② 在屬性標簽,正確指定表的范疇(類型)、輸出類等。
③ 正確指定各字段的data element。
④ 在技術設定里正確指定data class和size category等。
⑤ 正確指定check table。
101. 如何刪除table control 中的一條數據?
① 在table control顯示用內表中定義一個字段作為選中行的FLG;
② 在PROCESS AFTER INPUT(PAI)中指定MODULE USER_COMMAND_XXX;
③ 在STATUS中設定刪除按鈕的功能CODE;
④ 在②步創建的MODULE中循環table control顯示用內表,當系統變量SY-UCOMM的值跟設定的刪除按鈕的功能CODE的值相等,且選中行的FLG =‘X’時,刪除相應的內表中的記錄即可。
102. dynpro中畫面調用的幾種方式和各自的好處是什么?
①SET SCREEN next_screen_number:為當前屏幕指定后續屏幕,不會自動返回當前屏幕。
②CALL SCREEN screen_number及CALL TRANCTION t-code:掛起當前屏幕序列,進入新屏幕(序列)或事務,在新的屏幕序列中,通過語句LEAVE SCREEN TO SCREEN 0調用的屏幕就能夠返回到刮起的屏幕序列上。(返回到原程序)
③LEAVE SCREEN:如果需要未完成當前屏幕控制流就要轉入后續屏幕,使用此語句。
④LEAVE TO SCREEN screen_number及LEAVE TO TRANCTION t-code:未完成當前屏幕就要轉入后續屏幕,不返回原有程序。
103. table control中call subscreen的作用是什么?
call subscreen的作用是雙擊table control的表格行時,彈出PUPUP畫面。
104. 如何制作生產訂單的數據,簡述其步驟(所涉及的表有哪些)?
制作生產訂單的數據:后勤——生產——看板——環境——生產訂單——創建(CO01)
105. 清空內表命令clear和refresh的區別?
當為帶表頭的內表時,Clear清空的是表頭,refresh清空的是表體。當為不帶表頭的內表時,Clear和refresh都可以清空表體
106. Form perform中using、changing 、using value、 changing value的區別?
|
USING |
USING VALUE |
CHANGING |
CHANGING VALUE |
參數傳遞方式 |
應用傳遞 |
值傳遞 |
應用傳遞 |
值傳遞 |
值改變與否 |
改變 |
不改變 |
改變 |
當正常結束后改變 |
107. message有哪些類型?
TYPE |
描述 |
是否終止事務 |
A(終止) |
在PUPUP畫面顯示 |
終止 |
I(信息) |
在PUPUP畫面顯示 |
不終止 |
E錯誤) |
在狀態欄顯示 |
終止 |
W(警告) |
在狀態欄顯示 |
不終止 |
S(成功) |
在次畫面顯示 |
不終止 |
X(退出) |
在強制終了畫面顯示 |
終止 |
108. SELECT SINGLE 和SELECT UP TO 1 ROWS 的區別是什么?
在指定數據庫表中所有選擇KEY字段(指定查詢條件時要用“=”號)時,使用“SELECT SINGLE”;在沒有指定數據庫表中所有選擇KEY字段,且只取一條記錄時使用“SELECT UP TO 1 ROWS”,其后要使用語句“ENDSELECT”結束。
109. Table control 怎么計算循環的當前行在內表中的位置?
在 ABAP/4 模塊中,使用 SY-STEPL 以查找當前正在處理的屏幕表格行的索引。top_line字段記錄的是當前可見的第一行是對應的內表中的第幾行,它同SY-STEPL一起獲得與當前屏幕表格行相對應的內表行。(IND = top_line + SY-STEPL - 1.)。
SY-STEPL只在LOOP...ENDLOOP處理的范圍之內才有意義。
110. Commit語句的用法?什么時候程序自動Commit,跳頁的時候自動執行嗎?
COMMIT WORK。
ABAP 中的COMMIT有兩個自動機制:一個是程序完成,當一個程序運行完了會自動COMMIT(正常或異常),一個是屏幕完成,當一個屏幕出口時也會COMMIT。
由於以上原因,一個SAP LUW里的隱式的DB COMMIT或者改變一般不可以放在不同的屏幕里面來處理,因為那樣的話這些步驟不會在一個DB LUW里了,不在一個DB LUW就會導致數據的不一致性,也不符合all or nothing的原則。一般情況,把之前要改變的數據都保存到global的變量里面,到最后一個屏幕來處理這個global的數據,更新數據庫。
112.向 SAP 表中添加字段的方法是哪兩種?
這兩種方法是:Append 結構(Append Structure)和自定義 Include(Customizing Include)。Append 結構是在向表尾添加字段時創建的,自定義 Include 由 SAP 開發人員指定,以使用戶可以創建新字段。
113. 簇表和POOL TABLE 的概念?
Pools和Cluster table;他們已經不是各種數據庫常規的表了,也不能夠被數據庫直接訪問。只能通過SAP自己的工具來直接訪問。
透明表:
每個透明表在數據庫中有一個相應的物理表。物理表的名稱和數據字典中的邏輯表
定義的名稱一致。所有事務和應用數據存貯在透明表中。
結構:
結構在數據庫不存在數據記錄。結構用於在程序之間或程序與屏幕之間的接口定義。
附加結構:
附加結構定義字段的子集,該字段屬於其他表格或結構,但是在修正管理中作為單
獨的對象。
存貯表:
存儲表可以用來存貯控制數據(例如:屏幕順序,程序參數或臨時數據)。幾個存
儲表可以組合成一個表庫。該表庫和數據庫中的一物理表庫相一致。它包含了各組
合庫分派給它的所有記錄。
簇KEKEKEY表:
連續的文本如文檔之類可以存貯在簇表中。幾個簇表可以組合成一個表簇。對這種
表類型,不同表中的幾個邏輯行組合到一物理記錄。這可以實現一對象接一對象地
存貯或訪問,訪問簇中的表的一個前提是,至少關鍵字的一部分必須相符合。幾個
簇表存貯在數據庫中 一個相應的表里。
114.什么是授權對象?在 ABAP 程序中使用哪條語句進行授權檢查?
授權對象由一組字段組成,這些字段中的值將被用於進行授權檢查。ABAP 程序中使用 AUTHORITY-CHECK 語句根據授權對象進行授權檢查。在 AUTHORITY-CHECK 語句中,必須指明授權對象的所有字段,但有一個例外,可以用 DUMMY 關鍵字來繞過某個字段的檢查。
一個授權對象中最多可以定義 10 個字段。
115. 在使用 ABAP 內存的程序間進行數據交換時用到的兩個語句是什么?
EXPORT to MEMORY ID 用於將數據復制到 ABAP 內存,IMPORT from MEMORY ID 用於將數據從 ABAP 內存復制到程序中。
在 ABAP 內存間進行交換的數據必須在兩個程序中都進行聲明,並包含同樣的數據聲明。
116. 鎖對象(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. 獨占鎖——可寫鎖,一個用戶正在修改數據時,阻止其他用戶更改該數據。
117. 更新方面的 FM????????????????????
更新 FM 分為 V1 和 V2,那么首先會執行哪一種更新類型呢?每種類型又是以哪種模式(異步、同步或本地)執行的呢?
V1 更新類型比 V2 更新類型的優先級高,因此,V1 比 V2 行執行。V1 的執行模式可以為異步、同步或本地;V2 只能為異步執行。
118. 什么是 BADI?
BADI 是 Business Add-in 的縮寫。它是一種新的功能增強概念,使用 ABAP對象技術。這是一種使用面向對象的方法來進行 SAP 增強。實現 BADI 要用到類、接口及方法等面向對象的概念。
要對一個 SAP 應用程序進行增強,必須首先定義 BADI。為 BADI 創建一個接口,接着創建一個適配器類(Adapter Class)來實現這個接口, 然后創建這個適配器類的實例。