# abap-interview **Repository Path**: revolveyao/abap-interview ## Basic Information - **Project Name**: abap-interview - **Description**: 收集abap面试题及提供参考答案 - **Primary Language**: 其他 - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 4 - **Forks**: 2 - **Created**: 2021-04-13 - **Last Updated**: 2024-03-16 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # ABAP面试总结 ## MM模块业务相关 ### 请简述下MM模块的业务流程 业务流程:确定采购需求—>货源的确认—>供应商选择—>下采购订单—>订单跟踪—>入库(库存管理)—>发票检验—>应付账款。 对应前台事务操作:采购申请(ME51N/ME57) 做采购询报价(采购信息记录(ME11),框架协议(ME31K),货源清单(ME01)) —>采购订单(ME21N)—>入库(MIGO)会对应生成物料凭证和预制凭证,预制凭证(MIRO)_为后面财务做发票校验。 ### 请简单介绍下MM模块的相关表 [详细内容请转到MM相关表](#MM相关表) ## SD模块业务相关 ### 请简述下SD模块的业务流程 业务流程:售前活动(成品推广)—>销售订单处理—>库存资源—>装运出库—>开具发票—>应收账款。 系统前台操作:创建销售订单(VA01)根据客户下的采购信息 —>创建外向交货单(VL01N)检查库存资源是否满足交货,确认交货日期—>开具发票(VF01) 提供给客户的费用单据。 相关寄售的业务和门店售卖比较复杂。 ### 请简单介绍下SD模块的相关表 ## PP模块业务相关 ### 请简述下PP模块的业务流程 ### 请简单介绍下PP模块的相关表 ## FICO模块业务相关 ### 请简述下FICO模块的业务流程 ### 请简单介绍下FICO模块的相关表 ## 其他模块业务相关 ## 语法相关 ### 使用FOR ALL ENTRIES IN 需要注意什么? - 1、使用前必须判断使用的内部是否为空 如果内表为空,就会使WHERE条件失效,相当于没有指定任何取值限制 - 2、 默认使用了DISTINCT 语句会将一个SQL分解成多个SQL去执行,然后把结果去重后返回,这个去重相当于添加了DISTINCT,尽量将所有表的主键也取出 - 3、 内表大的时候占用内存很大 如果内表很大,有几百万数据的话,执行SQL占用内存会很大,有可能会达到内存使用上限,效率也会很差,这个时候尽量避免使用。 ### 单元格设置是否可编辑 ALV中设置单元格可编辑,在结构中新增字段 ` style TYPE lvc_t_styl, "ALV 控制: 单元格的类型表 ` 该字段结构中包含FIELDNAME和STYLE、STYLE2、STYLE3等,我们要设置不可编辑就修改STYLE字段 在对应的gs_layout-stylefname属性中添加新增的字段名 ` gs_layout-stylefname = 'STYLE'. ` 设置字段是否可编辑 ``` abap data: ls_style TYPE lvc_s_styl, lt_style TYPE lvc_t_styl. ls_style-fieldname = '字段名'. ls_style-style = cl_gui_alv_grid=>mc_style_disabled. "不可编辑 "或者 ls_style-style = cl_gui_alv_grid=>mc_style_enabled. "可编辑 append ls_style to lt_style. ``` 将该内表赋给结构新增的字段 ` gs_alv-style[] = lt_style. ` 然后在需要修改属性的地方循环gt_alv表. 注意:lvc_s_style这是个sorted table结构,当需要限制多个字段时,在append多行数据时,fieldname字段要字母按顺序写入。否则会DUMP,破坏了了排序表的键定义。 如果不排序,可用insert语法替换 append则不需排序。 ` insert ls_style into lt_style. ` ### 优化LOOP 套 LOOP 切记在优化前确保内表均以主键排序。 loop外层内表,read内层内表,匹配到,获取当前索引。从当前索引开始内层LOOP. ```abap LOOP AT LT_TAB1 INTO LS_TAB1 READ TABLE LT_TAB2 INTO LS_TAB2 WITH KEY "关联关系 IF SY-SUBRC = 0. data(lv_index) = sy-tabix. LOOP AT LT_TAB2 INTO LS_TAB2 FROM LV_INDEX. IF LS_TAB1- NE LS_TAB2-. EXIT ENDIF. "写逻辑代码 ENDLOOP. ENDIF. ENDLOOP. ``` ### 附录 #### MM相关表 物料主数据: - MARA 常规物料数据,主键物料号MATNR - MARC 物料的工厂数据,主键物料号MATNR和工厂WERKS - MARD 物料的仓储位置数据,主键物料号MATNR、工厂WERKS和库存地点LGORT - MARM 物料的计量单位,主键物料号MATNR和计量单位MEINH - MARV 物料控制记录,主键公司代码BUKRS;MBEW 物料评估,主键物料号MATNR、估价范围BWKEY和评估类型BWTAR - MAKT 物料描述,主键物料号MATNR和SPRAS语言代码 - MAST BOM链接物料,主键物料号MATNR、工厂WERKS、BOM用途STLAN、物料单STLNR和STLAL备选物料清单 - MVKE 物料销售数据,主键物料号MATNR、销售组织VKORG和分销渠道VTWEG - MAPR 有关预测的物料索引,主键工厂WERKS和物料号MATNR - MSTA 物料主记录状态,主键物料号MATNR、物料主记录的维护状态STATM和计数器ZHLER 供应商主数据: - LFA1 供应商主数据 (一般地区),主键供应商账号LIFNR - LFB1 公司代码,主键供应商账号LIFNR和公司代码BUKRS - LFBK 银行细目,主键供应商账号LIFNR、银行国家代码BANKS、银行代码BANKL和银行账户号码BANKN - LFM1购买组织数据,主键供应商账户LIFNR和采购组织EKORG - LFAS增值税登记号,主键供应商账户LIFNR和国家代码LAND1 - LFAT税务分组,主键供应商账户LIFNR和税码的分类标志TAXGR - LFB5 催款数据,主键供应商账号LIFNR、公司代码BUKRS和MABER催款范围 - LFBW 预扣税类型,主键供应商账号LIFNR、公司代码BURKS和用于代扣所得税类型的标识WITHT 信息记录: - EINA 采购信息记录 - 一般数据,主键采购信息记录号INFNR - EINE 采购组织数据,主键采购信息记录号INFNR、采购组织EKORG、采购信息记录分类ESOKZ和工厂WERKS - EIPA 订单价格历史,主键采购信息记录号INFNR、采购凭证编号EBELN和采购凭证的项目编号EBELP 货源清单: - EORD采购货源清单,主键物料号MATNR、工厂WERKS和ZEORD货源清单记录号 采购申请PR: - EBAN采购申请,主键采购申请编号BANFN和采购申请的项目编号BNFPO - EBKN采购申请账户设置,主键采购申请编号BANFN、采购申请的项目编号BNFPO和采购申请账户分配段的序列号ZEBKN 采购订单PO: - EKKO 采购凭证抬头,主键采购凭证编号EBLEN,EKPO采购凭证项目,主键采购凭证编号EBELN和采购凭证的项目编号EBELP 货物移动MIGO: - MKPF 物料凭证抬头,主键物料凭证编号MBLNR和物料凭证年份MJAHR - MSEG 物料凭证物料明细,主键物料凭证编号MBLNR、物料凭证年份MJAHR和物料凭证中的项目ZEILE 发票凭证MIRO: - RBKP 发票收据凭证表头,主键发票凭证的凭证编号BELNR和会计年度GJAHR - RSEG 收款发票凭证项目,主键发票凭证的凭证编号BELNR、会计年度GJAHR和凭证项目BUZEI 配额: - EQUK 装运: 盘点: 批次: 计划协议: 转储: 库存: