
众所周知SAP MIR7模拟凭证是SAP实时运算结果后台并无存储SAP也没有提供相关函数或方法也可能是我没找到但有些特殊需求里需要获取这个屏幕的数据。身为一个老ABAP有需求就要实现经调试前台模拟按钮发现了可实现的地方具体实现过程如下第一步.调用过账BAPI,BAPI_INCOMINGINVOICE_POST,同时设置一个memory id以供后续增强判断第二步.在下图代码处函数MRM_INVOICE_POST前获取到我们之前设置的MEMORY ID,以此判断是否模拟并设置参数I_SIMULATION ‘X’。此步非常关键如不设置会导致财务凭证跳号注此处截图为ECC版本第三步.在函数CKMV_AC_DOCUMENT_CREATE后插入代码将XACCIT和XACCCR等表数据导出到MEMORY中以供后续获取数据注此处截图为ECC版本第四步。BAPI执行完ROLLBACK一下然后获取刚才导出到MEMORY中的数据即可。以上是ECC中调试结果下面是S/4版本截图原理类似不过代码的位置有所差异。经测试成功获取到模拟数据并且没有产生跳号和其他影响但不保证哈。。。S/4版本设置I_SIMULATION的地方S/4版本CREATE函数的位置S/4版本CREATE执行成功后将相关数据导出到MEMORY的位置(和ECC类型类似后续获取MEMORY数据就不再赘述。注意无论BAPI成功失败都要调用CALL FUNCTION ‘BAPI_TRANSACTION_ROLLBACK’.最后再次强调更改标准代码极具风险使用需谨慎