API wsh_deliveries_pub.delivery_action问题点:
1、发运确认会调用接口请求,同一个SO对应几个交货号会报出现锁,
2、请求会存在延时,报表不能输出正确的结果
解决方法:
把发运确认API设置为延迟接口,即p_sc_defer_interface_flag为‘Y’,
然后存储过程中直接调用连接停靠站过程。
DECLARE
x_Return_Status VARCHAR2(1);
x_Msg_Count NUMBER;
x_Msg_Data VARCHAR2(3500);
l_Trip_Id NUMBER;
l_Trip_Name VARCHAR2(40);
x_Msg_Details VARCHAR2(3000);
x_Msg_Summary VARCHAR2(3000);
BEGIN
Fnd_Global.Apps_Initialize(0
,50627
,190);
Wsh_Deliveries_Pub.Delivery_Action(p_Api_Version_Number => 1.0
,p_Init_Msg_List => Fnd_Api.g_True
,x_Return_Status => x_Return_Status
,x_Msg_Count => x_Msg_Count
,x_Msg_Data => x_Msg_Data
,p_Action_Code => 'CONFIRM'
,p_Delivery_Id => R2.Delivery_Id
,p_Sc_Rule_Id => 1 --发运规则 select * from wsh_ship_confirm_rules
,p_Sc_Action_Flag => 'S'
,p_Sc_Stage_Del_Flag => 'Y'
,p_Sc_Actual_Dep_Date => SYSDATE
,p_Sc_Intransit_Flag => 'Y'
,p_Sc_Close_Trip_Flag => 'Y'
,p_Sc_Create_Bol_Flag => 'N'
,p_Sc_Defer_Interface_Flag => 'Y' --为‘Y’,手动运行连接停靠站
,x_Trip_Id => l_Trip_Id
,x_Trip_Name => l_Trip_Name);
IF (x_Return_Status <> Wsh_Util_Core.g_Ret_Sts_Success AND
x_Return_Status <> 'W') THEN
ROLLBACK;
--raise Api_Failed;
ELSE
--调用连接停靠站请求过程
--defer_interface_flag是'Y',需运行以下接口请求
Wsh_Ship_Confirm_Actions.Interface_All(Errbuf => Errbuf2
,Retcode => Retcode2
,p_Mode => p_Mod
,p_Stop_Id => p_Stop_Id
,p_Delivery_Id => R2.Delivery_Id
,p_Log_Level => p_Log_Level);
IF Retcode != '0' THEN
ROLLBACK;
ELSE
COMMIT;
END IF;
END IF;
END;