• 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的才能更好的工作,希望这篇文章能在大家面试的时候能尽点绵薄之力。

    祝大家做项目 需求不增,人天飙升

  • 相关阅读:
    KMP算法之查找模式串在源串中出现的次数
    快速排序算法分析
    排序算法的稳定性分析(转)
    动态规划之最优二叉搜索树(算法导论)
    动态规划之最长公共子序列(算法导论)
    动态规划原理(算法导论)
    动态规划之钢条切割(算法导论)
    动态规划之矩阵链相乘问题(算法导论)
    HNU 13064 Cuckoo for Hashing解题报告 North America
    HNU 13081 Even Up Solitaire解题报告
  • 原文地址:https://www.cnblogs.com/jxzhu/p/12674459.html
Copyright © 2020-2023  润新知