SAP|【转载】增强中调用BAPI并COMMIT使用

目前有这样一个需求,在销售交货单交货过账后,同时产生一个会计凭证。以前试过在增强程序“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—>又回调主调程序所在系统中的其他函数)

收藏备用。

    推荐阅读