MIR7屏幕默认值增强

本文介绍了如何在MIR7事务执行后通过在CL_EXITHANDLER类的GET_INSTANCE方法中打断点,找到对应的BADI(MRM_HEADER_DEFAULT),并在SE19事务中创建实施,实现自动填充发票日期的需求。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

MIR7屏幕默认值增强
一、需求
  1. 需要在事务MIR7执行后自动填充发票日期:
    在这里插入图片描述
二、通过第三代增强查找的方法
  1. 在CL_EXITHANDLER类中的GET_INSTANCE方法中的CALL METHOD CL_EXITHANDLER打断点,如下图。
    在这里插入图片描述

  2. 通过执行MIR7进入调试器界面,点击下一步获取对应的增强(BADI):MRM_HEADER_DEFAULT

    在这里插入图片描述

  3. 通过se18可看到这个增强的描述,以看到改BADI对应的接口,接口中定义的方法及参数传递。

    在这里插入图片描述

  4. 双击接口名,可以进入接口中并查看接口中的参数
    在这里插入图片描述

三、增强实现
  1. 事务码SE19,在创建实施栏位的业务加载项名中输入BADI名,点击创建,输入实施名字(自取即可)
    在这里插入图片描述

  2. 进入界面后,添加描述后保存,点击下面的接口按钮可以看到对应的实施类名字,双击进入
    在这里插入图片描述

  3. 接入接口类中后,双击下列方法
    在这里插入图片描述

  4. 进入方法后,在方法中添加对应的逻辑并激活保存。
    在这里插入图片描述

  5. 再次执行事务码:MIR7,发现需求已经实现
    在这里插入图片描述

### 关于SAP MIR7 预制发票底表的技术信息 在SAP系统中,`MIR7` 是用于处理预制发票的一个事务码。它主要用于创建基于采购订单的预制发票凭证,并允许用户手动输入或调整发票数据。为了理解 `MIR7` 的底层逻辑和技术细节,我们需要关注其涉及的核心底表以及配置方法。 #### 核心底表及其作用 以下是与 `MIR7` 预制发票相关的几个重要底表: 1. **`EKPO` 表** - 存储采购订单项目的详细信息。 - 当通过 `MIR7` 创建预制发票时,系统会从该表读取采购订单的相关数据以填充发票字段[^1]。 2. **`EBAN` 表** - 记录采购申请的信息。 - 如果采购订单是从采购申请生成的,则此表中的数据可能间接影响 `MIR7` 中的数据展示[^3]。 3. **`RBKP` 和 `RSEG` 表** - 这两个表分别存储财务会计凭证头和行项目信息。 - 在执行 `MIR7` 后,如果成功生成了预制发票凭证,这些数据会被写入到这两个表中[^2]。 4. **`BKPF` 和 `BSEG` 表** - 类似于 `RBKP` 和 `RSEG`,但更偏向于总账层面的记录。 - 它们同样会在最终确认发票并过账时被更新[^3]。 #### 数据流概述 当使用 `MIR7` 处理预制发票时,整个流程遵循以下顺序: - 用户启动 `MIR7` 并选择对应的采购订单作为依据。 - 系统根据选定的采购订单号访问 `EKPO` 表获取商品和服务的具体明细。 - 若存在已收货物的数量差异或其他特殊情况(如容差范围),则需调用后台作业 (Job Program) 如 `RMBABG00` 来完成自动对比计算。 - 成功匹配后,产生的临时凭证将存放在内存缓冲区直至正式提交至数据库;一旦提交完毕,“实际”的凭证条目即刻录入前述提到的各种核心表格之中。 #### 自定义配置指南 对于希望进一步优化或者修改默认行为的企业来说,可以通过如下方式来定制化自己的解决方案: 1. 使用 T-CODE: OLMRLIST 调整显示布局 此工具可以帮助管理员重新排列界面上各栏位的位置以便更好地满足特定需求。具体步骤包括但不限于复制现有视图模板、增删所需栏目等操作[^4]。 2. 设置合理的容差参数 企业可以根据自身的管理策略设定不同的容忍度界限(比如金额上的轻微偏差),从而减少不必要的干预次数。这通常涉及到更改某些隐藏参数文件的内容或是利用标准交易界面来进行相应设置。 3. 开发额外的功能扩展程序 对于那些超出开箱即用能力范畴的要求而言,往往还需要借助 ABAP 编程技能来自行构建附加组件。例如增加新的校验规则、改变原始算法等等皆可通过此类手段达成目标。 ```abap REPORT zmir7_customization. DATA: lv_order TYPE ekko-bstnk, lt_items TYPE TABLE OF ekpo. SELECT * FROM ekpo INTO TABLE lt_items WHERE bstnk = lv_order. IF sy-subrc EQ 0 AND lines( lt_items ) GT 0. WRITE: / 'Order Items Found:', lines( lt_items ). ELSE. WRITE: / 'No Order Items Found.'. ENDIF. ``` 以上代码片段展示了如何查询给定采购订单下的所有子项列表——这是任何深入分析之前必不可少的基础工作之一。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值