目前有这样一个需求,在销售交货单交货过账后,同时产生一个会计凭证。以前试过在增强程序“MV50AFZ1 ”的“USEREXIT_SAVE_DOCUMENT”方法中直接写代码,调用BAPI并Commit,结果就是报错。
CSDN上面看到一篇博文类似需求:SAP增强程序里,调用BAPI并COMMIT的设计方案(MIGO增强)
上面这位朋友的做法是在增强代码中调用普通函数,在普通函数中调用远程函数,最后在远程函数中调用BAPI并Commit。
call function 'ZMM_GOODSMVT_MAIN2'
starting new task 'T1'
destination 'NONE'
exporting
goodsmvt_header = goodsmvt_header
goodsmvt_code= goodsmvt_code
testrun= testrun
is_log3= is_log3
tables
goodsmvt_item= goodsmvt_item[]
log= log[].
异步调用的实质:程序进行多线程执行。
【SAP|【转载】增强中调用BAPI并COMMIT使用】异步调用:
CALL FUNCTION 'FUN'
STARTING NEWTASK
DESTINATION IN GROUP
PERFORMING ON END OF TASK。"子程序
等待多个异步调用的返回结果:WAIT UNTIL log_exp[UP TO sec SECONDS].
异步调用时不能有IMPORTING参数;函数一定要是RFC函数才能采用异步调用;只要有STARTING NEW TASK选项,即为异步调用;如果是异步调用同一目标端的RFC函数,则可以省略DESTINATION
DESTINATION 取值
l目标NONE:当前程序所在应用服务器作为目标系统,但调用过程还是RFC远程方式来调用,这与SPACE是同的
l目标SPACE: DESTINATION选项将会被忽略,被调功能函数将作为普通函数在本机调用
l目标BACK:用于被远程调用的RFM程序内部的CALL FUNCTION语句中的目标指定,通过已建立的RFC连接反过来调用该函数的主调者系统中的其他功能模块(即主调程序—>远程系统中的RFM—>又回调主调程序所在系统中的其他函数)
收藏备用。
推荐阅读
- SAP|【测试】工艺路线展开Function
- SAP|SAP 主生产计划(MPS)
- SAP|MPS(主生产计划)
- MPS与MRP的区别
- sap|使用事物码SAT检测SAP CRM中间件的传输性能
- sap|如何使用SAP CRM中间件从ERP往CRM下载Service Master
- crm|SAP CL_CRM_BOL_ENTITY单元测试方法
- crm|显示SAP CRM Product hierarchy的一个小工具
- sap|SAP CRM错误消息 Specify at least one number for the business partner