背景:
用户需要批量销售开票,用到VF01,
BAPI:BAPI_BILLINGDOC_CREATEMULTIPLE。
需求:
销售开票,用户要求保存外部发票号。
问题:
客户化增强写入外部发票号。
把call bapi生成的开票凭证号及时更新到自建表中。
解决问题1:
因为BAPI_BILLINGDOC_CREATEMULTIPLE中是有EXTENSIONIN,一般传增强字段的,大家都应该清楚。不过,添加好增强字段,运行BAPI,发现值写不进VBRP上,测试过很多次,debug看BAPI传值,传给VBRP时,就丢失外部发票号了(目前就这个BAPI写不进)。
真想直接Update啊~~~。
2.只得找其他增强点,想使用FREE MEMORY ID传值,
于是Debug找到RV60AFZC程序下,可给直接赋值到标准表中增强字段上
这样就完成增强了,其实跟Update没两样,都是赋值,只是比直接Update标准表好些。
解决问题2:
发现call完bapi之后,就更新自建表的开票凭证字段,然而自建表未写值;
奇怪的事,就来了:
就是Debug下断点在select VBRK那时,都能从VBRK中取到数据,也就能同步更新到自建表中。
但是一旦单独运行整个事务码,就不行,就猜想出,运行整个事务码时,call完bapi时,VBRK表便没有产生数据,导致select VBRK,抓不到数据。所以导致后面塞自建表便没有数据塞进去!!!!
解决方案:
就是在call bapi之前,加上SET UPDATE TASK LOCAL.就能解决。加上这个,整支程序运行时,call bapi时,就能及时塞进VBRK表,然后select VBRK能及时抓到数据。
SET UPDATE TASK LOCAL:同步更新数据库表。