2020.04.10 【ABAP隨筆】- ABAP面試分享


ABAP面試經驗(回憶)

最近受疫情影響,項目比較少,大家有的降薪有個裁員,日子都不太好過,幸好我的項目還沒有結束,所以還在做項目。最近參加面試的小伙伴比較多,我回憶去年我在面試四大的時候,3輪面試的大概過程。  

一 HR面試

HR小姐姐的面試一般來說比較簡單,大致就是問你工資期望,英語水平,項目經歷等大概做一個自我介紹就好了,在這一塊主要看看你這個人基本面是否符合招聘的需求,沒有啥問題就會進入下一輪面試。這一輪小伙伴們要抓住機會問一下HR公司的相關制度福利(比比如幾周一次FB,BASE地,調薪時間,試用期,公司培訓等等),以便於判斷這個公司是否符合你自己心目中的預期。

二 技術面試

那次面試還是問的非常仔細和全面的,因為每個人的知識面不同,所以在全面的提問中,有問題回答不出是很正常的。技術面試圍繞着ABAP相關技術點展開詢問,面試時間大概為1個半小時左右,大概內容就是圍繞ABAP基礎來詢問,相關內容如下:

1.使用for all entries in 的注意事項

(1)IN條件所在內表不能為空(空值將取出所有數據)

(2)IN條件內表數據量大於5000時不建議使用,一定要使用請每次使用3000,循環的方式使用

(3)該語句自動去重,使用時盡量多的帶出主鍵(不清楚的時候全帶出來就行)

2.Dialog 對話框的事件和邏輯流

(1)    調用時首先出發PBO->子畫面PBO,然后顯示dynpro畫面,當在dynpro點擊按鈕時,會觸發PAI->觸發子PAI,觸發完之后又會執行PBO->子PBO:如下圖

blob.png

如果你還能說一下另外2個事件就更好:

PROCESS ON HELP-REQUEST.(F1幫助)

PROCESS ON VALUE-REQUEST.(F4幫助)

3. Funciton ALV如何做到單擊跳轉事務

(1)首先在fieldcat中設置 hotspot = 'X'

(2)然后再USER_COMMAND事件對應Form中 加入

CASE  R_UCOMM.

    WHEN '&IC1'.

        然后調用

          SET PARAMETER ID 'BLN' FIELD LS_ALV-VBLNR.

          SET PARAMETER ID 'BUK' FIELD LS_ALV-ZBUKR.

          SET PARAMETER ID 'GJR' FIELD LV_GJAHR.

          CALL TRANSACTION 'FB03' AND SKIP FIRST SCREEN.

4.Web Service Client 端的配置大致描述一下

(1)右擊企業服務創建server consumer,用URL創建webservice

(2)通過LPCONFIG對於創建好的Proxy Object創建邏輯端口

(3)通過somanager配置默認端口

(4)在代碼中調用外部的接口

5.SMARTFROMS中直接換頁

(1)在循環中插入命令

(2)在命令條件中加入觸發的條件

6.Call function "Your_function" in backgroud task 和 starting new task :

(1)in backgroud task 需要等到commit work 顯示提交時才執行,

(2)starting new task 是異步執行

6.ALV上如何控制單元格的顏色(這個問題之前一直沒有做過,所以記得很清楚沒有回答上來,面試完我也去查看資料了,算是通過面試來查漏補缺了)

(1)列顏色:LVC_S_FCAT-EMPHASIZE = 'C610' - 紅色

(2)行顏色:在ALV內表中加入字段:CLR TYPE CHAR4

                      在LVC_S_LAYO-INFO_FNAME = 'CLR'

                      在需要控制顏色的行:GS_DATA-CLR = 'C610'

(3)單元格顏色:在ALV內表中加入結構:SCOL TYPE LVC_T_SCOL ,在LVC_S_LAYO-CTAB_FNAME = 'SCOL'

在需要控制的單元格中填入:

SCOL-FNAME = 'fieldname'

SCOL-COLOR-COL = '6'

SCOL-COLOR-INT = '0'  

SCOL-COLOR-INV = '0'

7.說明一下尋找增強的方法

(1)SE30找EXIT_*的函數,找SMOD可以查找MODSAP表

(2)在函數MODX_FUNCTION_ACTIVE_CHECK中打斷點,運行程序/TCODE,可以在debug界面查看L_FUNCNAME為出口

(3)CL_EXITHANDLER=>GET_INSTANCE中打上斷點,再執行程序/TCODE,可以在debug界面查看EXIT_NAME參數為BADI

(4)通過SPRO配置部分的enhencement或者客制化等文件說明查看涉及的增強

8.說一下有哪些增強,找一個具體的例子簡單說一下

(1)UserExit 基於源代碼的增強,比如MV35AFZZ銷售訂單的增強點

(2)函數出口增強,Exit_<程序名>_<數字>,該部分為CMOD增強

(3)類的增強,BADI增強,通過SE18,SE19來查看和創建維護

(4)enhencement-point,隱式增強,在代碼界面右擊選擇->show implicit enhencement options來顯示和創建

(5)BTE財務增強(BERE/BERP)+ BF24 + BF34/BF44

大家選擇一個自己熟悉的增強,舉個具體例子說明一下就可以了。

例如:LE_SHP_DELIVERY_PROC這個BADI用於交貨單的增強處理,其中方法SAVE_DOCUMENT_PREPARE為保存前的校驗增強內容可以寫在其中。

9.常用的數據庫表:當時還問到了一些常用的表,比如采購歷史記錄EKBE,庫存批次MCHA/MCHB等

10.BAPI,請說一個你熟悉的BAPI:

然后我說了"BAPI_GOODSMVT_CREATE"這個物料憑證創建的BAPI,面試官接着問我 這個BAPI里面有個參數GOODSMVT_CODE,請問代表什么意思,我記得當時我的回答是,這寫分別代表了MIGO界面不同收貨類型,01代表PO收貨,05代表其他入庫。因為我好像對采購訂單收貨做的比較多,然后其他收貨是因為一般項目上線的時候需要導入期初庫存,需要用到05的CODE;所以在面試的時候,一定要選擇自己熟悉的方面去回答,不然就是說個不太清楚的BAPI給自己挖坑

11.調用BDC時,使用到哪個語句,其中MODE,和UPDATE參數各有啥作用:

(1)對於BDC調用的語句應該都很清楚CALL TRANSACTION 'TCODE' USING BDCDATA UPDATE 'S' MODE 'N' MESSAGES INTO LT_MESSTAB.

(2)對於UPDATE 當時只記得都填S,並不太記得是什么意思,面試后去查了一下A表示異步,S表示同步,L表示本地

(3)還有一個OPTIONS FROM opt(TYPE CTU_PARAMS ) - 這個個人覺得不說也沒關系,說了更好,使用這個參數會包含前面2個參數,這塊主要注意的是一個DEFSIZE屏幕大小,可能會影響到BDC的運行

12.REPORT程序步驟:當時好像還問了report程序的基本步驟,時間有點久了,有點記不太清,反正report程序一般步驟就是:

INITIALIZATION

AT SELECTION-SCREEN OUTPUT.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_ufile.

AT SELECTION-SCREEN.

START-OF-SELECTION.

END-OF-SELECTION.

13.READ TABLE 會使用到的二分法Binary search,使用前對內表排序

14.loop循環中如何求和或者對於相同的field進行操作等:這里最好先說一下循環之前排序,然后使用(AT END OF/AT NEW/AT LAST/AT FIRST)操作,可以使用COLLECT ls_data into lt_tab來求和,這個效率高

15.LEAVE SCREEN 和 CALL SCREEN的區別:

(1)CALL SCREEN XXXX 為添加一層調用,執行完畢之后會執行CALL SCREEN XXXX之后的代碼語句

(2)LEAVE TO SCREEN XXXX 直接中斷當前屏幕的PAI,直接執行XXXX的PBO和PAI,原來LEAVE TO SCREEN XXXX之后的代碼不再執行

過程中還有一些小小的問題,大體就是一路問下來,能對面試者ABAP水平有個較好的考察吧。當然過程中也問我是否會WEBDYNPRO,FIORI,PI等技術,我說了不會,就沒有繼續問下去了,當時連着問了2個技術說不會,沒做過,有點尷尬。

三 項目經理面試

技術面試完了以后,HR小姐姐還給我一個反饋,告訴我哪些地方沒有回答好之類的,說P4還差點火候,先定個P3(果然水平有待提高T_T),之后等了2天大概,就打電話給我預約項目經理面試(可以說是項目經理面試吧),大概交流了45分鍾吧。因為這邊相對於是一個綜合考察,相互的一個交流,也沒啥技術點。我也就記得幾個討論的比較多的話題吧,

當時問我有沒有啥待人的經驗,我說有,帶過剛接觸ABAP的畢業生,就是在做項目的過程中把一些簡單的工作交給甲方的ABAP去完成,不懂得在一邊指導一下把控一下程序,然后后續類似的工作就可以交給他,一方面作為替甲方爸爸們培養人才,一方面自己有更多的時間去做更重要的事情,一舉多得吧。這樣的舉措對於后面開發程序的交接來說也是很有幫助的,重點是要自己把控好程序的質量。

后面問我,面對沒有接觸過的技術,如何在短時間內快速掌握呢,有沒有這方面的想法或者新得。我當時就說SAP技術其實對於為入門者很不友好,環境就卡掉了一大堆人,然后很多技術需要basis配合和業務數據上得支撐。我的想法就是先找資料,快速做一個簡單的demo出來,然后在此基礎上再去做加法,實現功能。

還有就是讓我說一下在項目上有沒有設計過方案,或者介紹一個解決方案。我就把之前項目做的我給的一個比較特殊的批次管理的方案說了。批次要做到對相同一個物料對於不同工廠,進行部分工廠層級和部分物料層級的管控,因為調撥很多,需要做增強去溯源批次最初的來源。大概就是作為一個abap用自己的方法解決了一個客戶業務上的需求。

四 題外話

國外疫情真的挺嚴重的,希望國內情況不要太受國外疫情的影響,經濟快快復蘇,這樣我們做ABAP的才能更好的工作,希望這篇文章能在大家面試的時候能盡點綿薄之力。

祝大家做項目 需求不增,人天飆升

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM