OM订单登记不了的处理办法

问题的产生:

1、缺少了一些字段内容, 例如:订单头录入时缺少了收货地点,销售员,销售业绩等,导致订单行中缺少相关内容。有时虽然回到订单头补充了相关内容,但行的内容是没有变化的,因此同样检查订单行中是否有同样的内容;

2、如果在订单头中忘记了销售员,会导致销售业绩没有,需要人工去维护。

3、有时维护了所有内容,但仍然无法登记,是因为工作流的已进入登记订单(BOOK_ORDER)这一环节过程中,但工作流步骤的目前状态为空不正确系统不能自动返回到登记合格(BOOK_Eligible)这环节去的,这时需要工作流管理员(sysadmin登录)进行维护,具体是:

 1)工作流管理员->状态监控程序 

输入项目关键字(header_id) 和 工作流责任人 找到工作流,在“活动历史”页签,点进去[登记订单:人工],点[登记-合格],点加速(expedite)钮,retry 后,再看status 页,确认现在的状态     是已通知 (NOTIFIED),

 2)  然后操作员可以回到在form 界面中点[登记订单],然后一般可以登记成功.


(注:如果打开了订单工具栏中的调试选项,则可以查看/tmp下的产生的dbg文件,查看执行的调试log信息。调试是检查错误的好办法)

请参考过程oe_order_book_util.Complete_Book_Eligible 仔细研读;

/*--CURSOR book_eligible IS
    SELECT
'Y'
   
FROM WF_ITEM_ACTIVITY_STATUSES WIAS
        , WF_PROCESS_ACTIVITIES WPA
    WHERE WIAS.item_type =
'OEOH'
     
AND WIAS.item_key = &l_itemkey      -- 订单头ID
     
AND WIAS.activity_status = 'NOTIFIED'
     
AND WPA.activity_name = 'BOOK_ELIGIBLE'
     
AND WPA.instance_id = WIAS.process_activity

 

找到记录则可以点登记订单,如找不到则可能已完成或状态不正确

*/


 

检查工作流发现当数据不完全情况下点登记按钮BOOK_ORDER活动环节的状态结果代码是空值,本应该返回结果代码是‘INCOMPLETE’,造成不能自已返回上一环节, 经研究工作流资料后,编写了一段PLSQL代码,可通过执行该过程来调动工作流返回到登记合格这个环节。返回后在订单录入界面重新进行登记就没有问题。

代码如下:(以后可以把这段代码放在客户化的订单录入FORM中去)

 

create or replace procedure MIPENG_OEOHBOOK_FIX(P_HEADER_ID in number) is

 

 sts varchar2(100);

 res varchar2(100);

 p_item_key varchar2(50);

 l_activity_id number; -- 活动ID

begin

   /*当订单登记缺少信息时往往出现不适合登记提示,原因是工作流活动已经走到登记这个活动,但状态结果是空值

     设置该活动为未完成可以回到上一步等待登记活动的状态*/

   --1 找到订单登记的活动ID

   P_item_key := to_char(P_HEADER_ID);

   begin

    select wpa.instance_id into l_activity_id  

    from wf_item_activity_statuses s,wf_process_activities wpa

    where s.process_activity=wpa.instance_id and s.item_type = 'OEOH'  

          and s.item_key = p_item_key and wpa.activity_name = 'BOOK_ORDER';

   exception

   when others then

      return ;

   end;

 -- 2 完成该活动以结果代码'INCOMPLETE',使活动转到上一步

 wf_item_activity_status.result('OEOH',P_item_key,l_activity_id,sts,res);

 if sts='COMPLETE' and res is null then -- 如活动完成且结果代码为空

     wf_engine_util.complete_activity('OEOH',P_item_key,l_activity_id,'INCOMPLETE');

 end if;

 commit;

 

end MIPENG_OEOHBOOK_FIX;

 


posted @ 2011-11-02 13:42  郭振斌  阅读(2034)  评论(0编辑  收藏  举报