ABAP BAPI_PO_CREATE1 净价net_price 无效

本文介绍了在使用BAPI_PO_CREATE1创建SAP采购订单时遇到的价格不正确问题,以及解决方案。当采购信息记录未维护净价时,系统会采用上一个采购订单的净价。通过设置参数NO_PRICE_FROM_PO为X和POITEM-PO_PRICE为'2',可以避免从上一个订单复制价格,并直接导入净价。同时,注意导入价格可能包含税,需要考虑税码的影响。

今天测试发现用BAPI_PO_CREATE1 创建采购订单,虽然能成功创建采购订单,但是行项目的净价总是和自己导入的数据不对。然后在前台手工创建时,发现会自动带出一个净价,奇怪从哪来。原来是因为我采购信息记录没有维护净价,它就会采用上一个采购订单的净价。

  

 查找相关资料,BAPI_PO_CREATE1 函数中的 EXPORTING中的NO_PRICE_FROM_PO 设为X。

还要注意一个问题

如果有税码,那么导入的时候那个价格是含税价格!!!比如我导入时poitem-tax_code 为J1,poitem-net_price=100,导入成功后,净价就变为85.47了!!!如下图。

85.47*(1+17%)。所以一般是先不设置税码。。后面再批量

 

另外找到一些资料:

 

using BAPI_PO_CREATE1 to create POs meanwhile passing the netprice instead of price from inforrecords.

From 5802

### ABAP BAPI_PO_CREATE1 错误解决方案 当遇到 `BAPI_PO_CREATE1` 报错的情况时,通常可以从以下几个方面来排查解决问题: #### 参数验证 确保传递给 `BAPI_PO_CREATE1` 的参数完全正确。任何不匹配的数据类型或错误的输入都可能导致异常抛出[^1]。 ```abap DATA: lv_return TYPE TABLE OF bapiret2, ls_purchaseorder TYPE bapi_purord. CALL FUNCTION 'BAPI_PO_CREATE1' EXPORTING purchaseorderheader = ls_purchaseorder-header IMPORTING purCHASEORDER = ls_purchaseorder-number TABLES return = lv_return. ``` 如果返回表 `lv_return` 中有条目,则表示存在某些问题;应仔细检查这些消息并修正相应字段的内容。 #### 数据一致性校验 确认采购订单中的物料编号、供应商信息以及其他相关数据的一致性准确性。例如,在创建采购合同时使用的材料编码应该存在于系统内,并且与指定工厂相兼容。 #### 权限配置审查 有时权限不足也会引发此接口调用失败。因此建议核查当前用户的授权对象设置是否允许执行该操作以及访问所需资源。 #### 日志记录分析 启用详细的调试模式可以更深入地了解具体哪个环节出现了状况。通过查看后台日志文件或者利用 SAP GUI 内置工具(如 ST22),能够获取更多关于程序运行期间发生的事件的信息,从而帮助定位根本原因所在。 #### 测试环境模拟 在一个受控环境中重现相同的业务场景有助于排除外部因素干扰的可能性。这可能涉及到搭建专门用于测试目的的小型实例或是借助其他开发人员的帮助来进行跨部门协作诊断工作。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值