客户和供应商预制凭证扩充WBS字段
2021-06-24 本文已影响0人
拓跋猫儿
参考文献
1.扩充字段
VBSEGK,VBSEGD
附加接口,ZAS_*,注意这里添加的字段是ps_psp_pnr,为什么用ps_psp_pnr具体原因在参考文献中有介绍。
2.复制屏幕
事务码SE80进入函数组F040,复制0301到9901,0302到9902屏幕。
屏幕9901和9902中添加bseg-projk到界面上。
3.配置屏幕
事务码SM30输入T019,找现在所有的301,302的屏幕,将它们修改为9901和9902.
4.隐式增强
增强修改标准程序BDC_DATA
具体位置如下图所示
将BDC_DATA中的BSEG-PROJK行从内表中删除,行数据和行号(BSEG-VOZEI)通过内存抛出。
5.凭证过账
在凭证行增强(ZIF_EX_BD_SUBSTITUTION~LINEITEM)中接收内存数据并赋值。
遇到的问题
1) FB03报错
修改完成后,查看其它凭证,提示屏幕找不到
事务码FB03,开始进入程序SAPMF05L,750屏幕,双击行会按照逻辑跳转屏幕,屏幕确认代码大约在如下显示。
同理,事务码FBV0确定预制凭证屏幕
观察T019-dyncl='V',判断预制凭证在T019中的配置应该是V,SM30修改T019中的记录,只留下V的9901和9902屏幕。如果还发现类似的问题,再次修改屏幕。
2) 事务码FBV0报错
在完成步骤1,2,3后,直接调用bapiBAPI_ACC_DOCUMENT_POST生成的凭证是带有WBS的,事务码FBV0过账会提示消息号00344,"dynpro&&无批输入数据"的错误,对应的程序为SAPMF05A。这种错误一般为调用BDC程序报错的,具体报错的地方如下。
为了避免扩大修改范围,决定通过修改BDC_DATA,在凭证行增强赋值WBS。通过步骤4的隐式增强,获取WBS相关的信息并赋值。