面试阶段
第一阶段:自我介绍,简单介绍简况,尽量不要喋喋不休
第二阶段:根据简历问技术,不会的东西不要在简历上硬写
第三阶段:技术面
一般来说会有:
做过哪些增强(隐式,出口,BADI)
做过哪些接口
用过哪些BAPI
写过哪些ALV,(一般会问layout这些控制什么,FIELDCATLOG这些控制什么)
smartforms这些,例如换页之类的问题
数据效率问题
尽量使用 select (max,sum,avg,min)等
还有 select single , for all enteris , 二分法 和collect(求和) 等
loop 里不能套 select
尽量避免使用 select distinct (取数不重复)
尽量先 sort 然后 delete
尽量少使用select *
不要使用 select … endselect语句
尽量用sort 代替 order by
尽量不要在 loop 中访问数据库(例如 select) ,在loop 外访问,然后在loop 内 写 read table with key
where 语句可以指定地尽量多一些
where 语句在指定查询条件时,尽量把包含等号的查询条件放到前边。
AT FIRST AT NEW AT END OF
AT FIRST :当前循环内表的第一行,即当每次循环第一行的时候,系统会执行控制语句块
AT NEW : 如果当前行(对象字段以及前面的任何字段)中的任何字段与上一行不同,那么在执行 AT NEW 中的内容
AT END OF : 如果下一行中的任何字段不同于上一行,执行语句块中的内容
AT NEW ,AT END OF 指定字段之后的字段将发生怎么样的变化
commit work 和 rollback 的作用是什么?什么时候自动commit
MM模块主要t-code
MM51N 采购申请
ME21N 采购订单
MIGO 收货
SD主要t-code
VA01 销售订单
PP模块主要T-CODE
coois 显示生产订单查询
CS01创建BOM
CA01创建工艺路线
CO01创建生产订单
BADI和BAPI的区别
BAPI是一种标准化变成接口(其实可以近似看成函数被用来调用)
而BADI是SAP内部提供的让标准SAP业务扩展的特定点
BADI是面向对象编程的
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.
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’
说明一下寻找增强的方法
(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或者客制化等文件说明查看涉及的增强
说一下有哪些增强,找一个具体的例子简单说一下
(1)UserExit 基于源代码的增强,比如MV35AFZZ销售订单的增强点
(2)函数出口增强,Exit_<程序名>_<数字>,该部分为CMOD增强
(3)类的增强,BADI增强,通过SE18,SE19来查看和创建维护
(4)enhencement-point,隐式增强,在代码界面右击选择->show implicit enhencement options来显示和创建
10.BAPI,请说一个你熟悉的BAPI:
然后我说了"BAPI_GOODSMVT_CREATE"这个物料凭证创建的BAPI,面试官接着问我 这个BAPI里面有个参数GOODSMVT_CODE,请问代表什么意思,我记得当时我的回答是,这写分别代表了MIGO界面不同收货类型,01代表PO收货,05代表其他入库。因为我好像对采购订单收货做的比较多,然后其他收货是因为一般项目上线的时候需要导入期初库存,需要用到05的CODE;所以在面试的时候,一定要选择自己熟悉的方面去回答,不然就是说个不太清楚的BAPI给自己挖坑
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.
当时问我有没有啥带人的经验,
我说有,带过刚接触ABAP的毕业生,就是在做项目的过程中把一些简单的工作交给甲方的ABAP去完成,不懂得在一边指导一下把控一下程序,然后后续类似的工作就可以交给他,