寻求适配SAP IW41操作的BAPI:上传PM订单确认实际数据并过账
适配SAP事务码IW41的PM订单确认及货物移动过账BAPI方案
对应的标准BAPI是 BAPI_ALM_ORDER_CONFIRM,这是SAP官方针对PM订单确认(对应事务码IW41)提供的专用接口,支持同时处理订单确认数据录入与货物移动过账。
为何你之前尝试的BAPI不适用:
MAP2E_RIWOL_TO_ALM_ORDER_OLIST:属于内部转换函数,并非对外暴露的可直接调用BAPI,仅用于SAP内部逻辑转换BAPI_ALM_ORDER_MAINTAIN:核心功能是维护PM订单的主数据(如修改订单描述、工艺路线等),不负责订单确认操作BAPI_PRODORDCONF_GET_TT_PROP:针对生产订单确认设计,与PM订单的业务逻辑、数据结构不兼容
BAPI_ALM_ORDER_CONFIRM关键使用要点:
必填基础参数
ORDERID:PM订单编号CONFIRMATION_TYPE:确认类型(如01对应最终确认,02对应部分确认,可参考事务码OPK4配置的确认类型)POSTGING_DATE:过账日期ACTIVITY_QUANTITY:实际执行的作业数量(如工时)ACTIVITY_UNIT:作业单位(如H对应小时)
货物移动配置
通过GOODSMOVEMENTS内表传入货物移动数据,需维护以下核心字段:MOVE_TYPE:移动类型(如261对应消耗物料到订单)MATERIAL:物料编码PLANT:工厂代码STGE_LOC:存储地点ENTRY_QNT:移动数量ENTRY_UOM:移动单位
事务提交
BAPI调用成功后,必须调用BAPI_TRANSACTION_COMMIT完成数据库提交,否则数据不会持久化。
调用示例(伪代码):
DATA: ls_confirm TYPE bapi_alm_order_confirm, lt_goods_movements TYPE STANDARD TABLE OF bapi_alm_goodsmovement, ls_goods_movement TYPE bapi_alm_goodsmovement, lt_return TYPE STANDARD TABLE OF bapiret2. * 填充基础确认数据 ls_confirm-orderid = 'PM0000001234'. ls_confirm-confirmation_type = '01'. ls_confirm-postging_date = sy-datum. ls_confirm-activity_quantity = '8.00'. ls_confirm-activity_unit = 'H'. * 填充货物移动数据(消耗物料到订单) ls_goods_movement-move_type = '261'. ls_goods_movement-material = 'MAT001'. ls_goods_movement-plant = 'PL01'. ls_goods_movement-stge_loc = 'SL01'. ls_goods_movement-entry_qnt = '1.00'. ls_goods_movement-entry_uom = 'EA'. APPEND ls_goods_movement TO lt_goods_movements. * 调用BAPI CALL FUNCTION 'BAPI_ALM_ORDER_CONFIRM' EXPORTING confirmation = ls_confirm TABLES goods_movements = lt_goods_movements return = lt_return. * 检查返回结果,提交事务 READ TABLE lt_return INTO DATA(ls_return) WITH KEY type = 'E'. IF sy-subrc <> 0. CALL FUNCTION 'BAPI_TRANSACTION_COMMIT' EXPORTING wait = 'X'. ENDIF.
注意事项:
- 确保PM订单处于可确认状态(如已释放,未完成)
- 货物移动的移动类型需配置对应的自动过账科目(事务码OBYC)
- 调用者需拥有IW41事务对应的权限,以及BAPI调用的相关权限
内容的提问来源于stack exchange,提问作者A-G
相关产品推荐
相关产品推荐

