如何解决Oracle-为新行程分配交货并确认发货
我一直在搜寻并试图找出解决方法,但是我似乎找不到答案...
我在定制表中保存了一个交货名称列表。现在,我想将所有这些交付分配给一个行程,然后由船确认行程。
现在,我的附加代码正在运行。它将成功为每次交货创建唯一行程,并在发货时确认每次行程。但是我真的需要为所有交付只创建一次旅行。请帮忙!
function f_download_order_ship_confirm return boolean
is
cursor c_deliveries is
select *
from tup_mexico_dlvrs_to_reconcile
where nvl(attribute1,'0') != 'SHIP_CONFIRMED'
order by delivery_name;
p_ship_conf_status varchar2(5000);
x_msg_data varchar2(5000);
p_api_version_number number;
init_msg_list varchar2(30);
x_msg_count number;
x_msg_details varchar2(32000);
x_msg_summary varchar2(32000);
p_validation_level number;
p_commit varchar2(30);
x_return_status varchar2(15);
source_code varchar2(15);
changed_attributes wsh_delivery_details_pub.changedattributetabtype;
p_action_code varchar2(15);
p_delivery_id number;
p_delivery_name varchar2(30);
p_asg_trip_id number;
p_asg_trip_name varchar2(30);
p_asg_pickup_stop_id number;
p_asg_pickup_loc_id number;
p_asg_pickup_loc_code varchar2(30);
p_asg_pickup_arr_date date;
p_asg_pickup_dep_date date;
p_asg_dropoff_stop_id number;
p_asg_dropoff_loc_id number;
p_asg_dropoff_loc_code varchar2(30);
p_asg_dropoff_arr_date date;
p_asg_dropoff_dep_date date;
p_sc_action_flag varchar2(10);
p_sc_close_trip_flag varchar2(10);
p_defer_iface varchar2(10);
p_sc_create_bol_flag varchar2(10);
p_sc_stage_del_flag varchar2(10);
p_sc_trip_ship_method varchar2(30);
p_sc_actual_dep_date varchar2(30);
p_sc_report_set_id number;
p_sc_report_set_name varchar2(60);
p_wv_override_flag varchar2(10);
x_trip_id varchar2(30);
x_trip_name varchar2(30);
p_msg_data varchar2(32000);
fail_api exception;
n_cursor_count number := 0;
v_first_delivery varchar2(30);
v_last_delivery varchar2(30);
begin
x_return_status := wsh_util_core.g_ret_sts_success;
p_action_code := 'CONFIRM';
p_sc_action_flag := 'B';
p_sc_close_trip_flag := 'Y';
p_defer_iface := 'N';
for x in c_deliveries loop
wsh_deliveries_pub.delivery_action(p_api_version_number => 1.0,p_init_msg_list => init_msg_list,x_return_status => x_return_status,x_msg_count => x_msg_count,x_msg_data => p_msg_data,p_action_code => p_action_code,p_delivery_id => p_delivery_id,p_delivery_name => x.delivery_name -- delivery name,p_asg_trip_id => p_asg_trip_id,p_asg_trip_name => p_asg_trip_name,p_asg_pickup_stop_id => p_asg_pickup_stop_id,p_asg_pickup_loc_id => p_asg_pickup_loc_id,p_asg_pickup_loc_code => p_asg_pickup_loc_code,p_asg_pickup_arr_date => p_asg_pickup_arr_date,p_asg_pickup_dep_date => p_asg_pickup_dep_date,p_asg_dropoff_stop_id => p_asg_dropoff_stop_id,p_asg_dropoff_loc_id => p_asg_dropoff_loc_id,p_asg_dropoff_loc_code => p_asg_dropoff_loc_code,p_asg_dropoff_arr_date => p_asg_dropoff_arr_date,p_asg_dropoff_dep_date => p_asg_dropoff_dep_date,p_sc_action_flag => p_sc_action_flag,p_sc_close_trip_flag => p_sc_close_trip_flag,p_sc_create_bol_flag => p_sc_create_bol_flag,p_sc_stage_del_flag => p_sc_stage_del_flag,p_sc_trip_ship_method => p_sc_trip_ship_method,p_sc_actual_dep_date => p_sc_actual_dep_date,p_sc_report_set_id => p_sc_report_set_id,p_sc_report_set_name => p_sc_report_set_name,p_sc_defer_interface_flag => p_defer_iface,p_wv_override_flag => p_wv_override_flag,x_trip_id => x_trip_id,x_trip_name => x_trip_name);
-- if api was not successful --
if (x_return_status <> wsh_util_core.g_ret_sts_success) then
wsh_util_core.get_messages('Y',x_msg_summary,x_msg_details,x_msg_count);
if x_msg_count > 1 then
x_msg_data := x_msg_summary || x_msg_details;
else
x_msg_data := x_msg_summary;
end if;
-- if api was successful --
else
-- mark as ship confirmed in custom table --
update tup_mexico_dlvrs_to_reconcile md
set md.attribute1 = 'SHIP_CONFIRMED',md.attribute5 = x_trip_id
where md.delivery_name = x.delivery_name;
end if;
end loop;
return true;
exception
when others then
return false;
end f_download_order_ship_confirm;
解决方法
如果您正确配置了Oracle EBS Shipping Execution模块,则可以使其自动创建交货并将其分配给自动旅行。
否则,您需要自己通过API进行操作。
如果您为wsh_deliveries_pub
指定了正确的值,那么您已经在使用的p_action_code
公共API可以做到这一点
- AUTOCREATE-TRIP ==>自动创建交货行程
- ASSIGN-TRIP ==>将交货分配给现有行程
您可能想用“ AUTOCREATE-TRIP”呼叫该批次中的第一批交货,然后用“ ASSIGN-TRIP”呼叫后续批次。
请记住,API将验证交付是否确实可以分配给您选择的旅程。有规则。例如,您不能将去往客户A的送货分配给仅在客户B停留的行程。
有关如何通过这些操作代码使用API的更多信息,请参考Oracle文档。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。