Title
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:如下图
如果你还能说一下另外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的才能更好的工作,希望这篇文章能在大家面试的时候能尽点绵薄之力。
祝大家做项目 需求不增,人天飙升