zoukankan      html  css  js  c++  java
  • ◆◆0如何消除销售订单中配置(Configuration)相关的Incompletion log

    1, 问题描述

    调用bapi 'BAPI_SALESORDER_CREATEFROMDAT2' 创建销售订单,发现生成的销售订单有incompletion log,是关于可配置物料的,如下

    2016-11-10_16-36-43

    2016-11-10_16-37-29

    可配置物料的可以通过字段MARA-KZKFG判断,

    2016-11-11_16-14-46

    2, 问题分析

    经过某大师指点发现,造成此问题的根本原因是bapi BAPI_SALESORDER_CREATEFROMDAT2中行项目ORDER_ITEMS_IN-PO_ITM_NO和configuration的ORDER_CFGS_REF-POSEX为空,没有将行项目和configuration的数据关联起来。

    2016-11-11_16-24-08

    3, 解决方案

    解决方法有两种:

    方法1,当ORDER_ITEMS_IN-PO_ITM_NO和ORDER_CFGS_REF-POSEX 为空时,给这两个字段赋一个相同的假的行项目值,让行项目和配置信息关联起来,但是这么做有个副作用就是这个假行项目值会被保存到vbap-posex中,所以还要再bapi BAPI_SALESORDER_CREATEFROMDAT2 之后用直接更新表的方法将vbap-posex恢复。

    2016-11-14_9-19-01

    方法2,写一段bdc程序模拟以下前台动作,

    选中行项目,点击configuration detail按钮

    2016-11-14_9-54-00

    然后,直接返回保存,这样就不会有incompletion log了

    2016-11-14_9-55-20

    BDC代码如下:

    注意:上面代码中,用到了CALL_TRANSACTION_FROM_TABLE_CO 开了一个新的task来实现BDC,这么做的原因是在调用BAPI_SALESORDER_CREATEFROMDAT2创建销售订单后再用call transaction va02实现BDC会出现一个iactive的屏幕,如下,

    2016-11-11_13-49-11

    这个屏幕和sm35中的录屏不一样,导致bdc失败,所以开了新task执行bdc,这样就能成功,原因还没研究清楚。。。。

    以上。

  • 相关阅读:
    Rman-10038: Database Session For Channel D1 Terminated Unexpectedly
    MySQL从入门到项目实践 pdf下载
    Oracle_优化器使用(oracle11g)
    当sqlserver启用sa账户时,出现Microsoft SQL Server 错误代号: 15535 解决方法 (转)
    sqlserver 如何分析“死锁调度程序”转储?
    AtCoder Beginner Contest 213
    LOJ
    [学习笔记] 计算几何
    [COCI 2009-2010 #6] XOR
    BZOJ
  • 原文地址:https://www.cnblogs.com/lvdong18847870057/p/12534958.html
Copyright © 2011-2022 走看看