专注Oracle EBS--理性的浪漫
===========================================================
===========================================================

picked ->shipped 中间的ship confirm 如何通过API实现 研究过程


FORM :

/* Formatted on 2007/05/11 18:21 (Formatter Plus v4.8.7) */
PROCEDURE do_action_ship_confirm (p_input_state IN NUMBER)
IS
BEGIN
-- Ship Confirm Rule Changes
-- If ship confirm rule id is null,then find these values
-- else use defaulted values
-- IF g_dlvy_defaults.sc_rule_id IS NULL THEN
-- END IF;
-- In the code below all the Global values are being used,
-- these should have been set correctly on the basis of SC rule(if not null)
-- in get_delivery_defaults API.
-- Will test for all the fields in UT - BOL flag,defer_interface_flag,close flag
-- set intransit flag,ship method, document set
:parameter.ship_method_name := actions.g_dlvy_defaults.ship_method_name;
-- Navigate to Ship Confirm Block and populate parameters
GO_BLOCK ('ship_confirm');
CLEAR_BLOCK;

IF actions.g_dlvy_defaults.sc_rule_id IS NOT NULL
THEN
:ship_confirm.ship_confirm_rule_id :=
actions.g_dlvy_defaults.sc_rule_id;
:ship_confirm.ship_confirm_rule := actions.g_dlvy_defaults.sc_rule_name;
END IF;

-- Fix for bug 4147636
-- Call this procedure set_ship_confirm_options.
-- This will enable/disable the trip and BOL related checkboxes
-- This will also set parameter.create_trip_option based on intransit flag and close trip flags being 'D' or Not 'D'
actions.set_ship_confirm_options;

IF :parameter.create_trip_option = 'Y'
THEN
:ship_confirm.defer_interface_flag :=
actions.g_dlvy_defaults.defer_interface_flag;

IF actions.g_dlvy_defaults.enforce_ship_method = 'Y'
THEN
app_item_property.set_property ('ship_confirm.ship_method_name',
required,
property_on
);
ELSE
app_item_property.set_property ('ship_confirm.ship_method_name',
required,
property_off
);
END IF;

:ship_confirm.actual_departure_date := fnd_standard.system_date;
END IF;

COPY ('N', 'ship_confirm.bill_of_lading_flag');
:ship_confirm.document_set := actions.g_dlvy_defaults.report_set_name;
:ship_confirm.document_set_id := actions.g_dlvy_defaults.report_set_id;

-- bug 4275493: ship_confirm_rule procedure
-- depends on actions.set_ship_confirm_options
-- setting the parameter create_trip_option value.
IF actions.g_dlvy_defaults.sc_rule_id IS NOT NULL
THEN
-- bug 4258951
actions.ship_confirm_rule ('INIT');
ELSIF (actions.g_dlvy_defaults.sc_rule_id IS NULL)
AND (:parameter.create_trip_option = 'Y')
THEN
:ship_confirm.ship_method_name :=
actions.g_dlvy_defaults.ship_method_name;
:ship_confirm.ship_method_code :=
common.get_ship_method_code (:ship_confirm.ship_method_name);
app_item_property.set_property ('ship_confirm.ship_method_name',
item_is_valid,
property_true
);
END IF;

app_item_property.set_property ('ship_confirm.ship_confirm_rule',
item_is_valid,
property_true
);
-- Open Ship Confirm Window after populating the parameters
app_custom.open_window ('SHIP_CONFIRM');
END do_action_ship_confirm;

*************************************************************


common.get_sc_default(p_ship_confirm_rule_id => :ship_confirm.ship_confirm_rule_id,
x_name => :ship_confirm.ship_confirm_rule,
x_ac_intransit_flag => :ship_confirm.autointransit_flag,
x_ac_close_trip_flag => :ship_confirm.autoclose_flag,
x_ac_bol_flag => :ship_confirm.bill_of_lading_flag,
x_ac_defer_interface_flag => :ship_confirm.defer_interface_flag,
x_action_flag => :ship_confirm.action,
x_stage_del_flag => :ship_confirm.stage_del_flag,
x_ship_method_default_flag => l_ship_method_default_flag,
x_ship_method_code => l_ship_method_code,
x_report_set_id => :ship_confirm.document_set_id
);



******************************************************

PROCEDURE get_sc_default(p_ship_confirm_rule_id IN NUMBER,
x_name OUT VARCHAR2,
x_ac_intransit_flag OUT VARCHAR2,
x_ac_close_trip_flag OUT VARCHAR2,
x_ac_bol_flag OUT VARCHAR2,
x_ac_defer_interface_flag OUT VARCHAR2,
x_action_flag OUT VARCHAR2,
x_stage_del_flag OUT VARCHAR2,
x_ship_method_default_flag OUT VARCHAR2,
x_ship_method_code OUT VARCHAR2,
x_report_set_id OUT NUMBER
) IS

CURSOR c_get_sc_default IS
select name,
ac_intransit_flag,
ac_close_trip_flag,
ac_bol_flag,
ac_defer_interface_flag,
action_flag,
stage_del_flag,
ship_method_default_flag,
ship_method_code,
report_set_id
from wsh_ship_confirm_rules
where ship_confirm_rule_id = p_ship_confirm_rule_id;


BEGIN


FOR rec in c_get_sc_default
LOOP
x_name := rec.name;
x_ac_intransit_flag := rec.ac_intransit_flag;
x_ac_close_trip_flag := rec.ac_close_trip_flag;
x_ac_bol_flag := rec.ac_bol_flag;
x_ac_defer_interface_flag := rec.ac_defer_interface_flag;
x_action_flag := rec.action_flag;
x_stage_del_flag := rec.stage_del_flag;
x_ship_method_default_flag := NVL(rec.ship_method_default_flag, 'R');
x_ship_method_code := rec.ship_method_code;
x_report_set_id := rec.report_set_id;

END LOOP;

END get_sc_default;


********************************************************************

actions.do_action_multi(entity => 'TRIP',
action => 'TRIP-CONFIRM',
p_state => 2,
block_name => :PARAMETER.P_TRIP_MODE);


****************************************************

ELSIF action = 'TRIP-CONFIRM' THEN

go_block('trip_confirm');
clear_block;


:parameter.p_trip_multiple_pickup := g_trip_defaults.trip_multiple_pickup;
:trip_confirm.stop_location_code := g_trip_defaults.stop_location_code;
:trip_confirm.defer_interface_flag := g_trip_defaults.defer_interface_flag ;
:trip_confirm.document_set_id := g_trip_defaults.report_set_id;
:trip_confirm.document_set := g_trip_defaults.report_set_name;
if :parameter.p_trip_multiple_pickup = 'N' then

app_item_property.set_property('trip_confirm.defer_interface_flag', ENABLED, PROPERTY_ON);

app_item_property.set_property('trip_confirm.actual_departure_date', ENABLED, PROPERTY_ON);

app_item_property.set_property('trip_confirm.autointransit_flag', ENABLED, PROPERTY_ON);

app_item_property.set_property('trip_confirm.autoclose_flag', ENABLED, PROPERTY_ON);


:trip_confirm.autointransit_flag := 'Y';


:trip_confirm.autoclose_flag := 'Y';

:trip_confirm.actual_departure_date := fnd_standard.system_date;

else
app_item_property.set_property('trip_confirm.actual_departure_date', ENABLED, PROPERTY_OFF);
app_item_property.set_property('trip_confirm.defer_interface_flag', ENABLED, PROPERTY_OFF);
app_item_property.set_property('trip_confirm.autointransit_flag', ENABLED, PROPERTY_OFF);
app_item_property.set_property('trip_confirm.autoclose_flag', ENABLED, PROPERTY_OFF);
copy('N','trip_confirm.autoclose_flag');
copy('N','trip_confirm.autointransit_flag');
copy('N','trip_confirm.defer_interface_flag');
:trip_confirm.actual_departure_date := NULL;
end if;

app_item_property.set_property('trip_confirm.bill_of_lading_flag', ENABLED, PROPERTY_ON);

--Added for MBOL.
app_item_property.set_property('trip_confirm.mbol_flag', ENABLED, PROPERTY_ON);

:trip_confirm.bill_of_lading_flag := 'Y';

--Added for MBOL.
:trip_confirm.mbol_flag := 'Y';

:parameter.p_defer_interface_flag := :trip_confirm.defer_interface_flag;

app_custom.open_window('TRIP_CONFIRM');

return;

***********************************

SELECT oh.header_id,oh.order_number,ol.line_id, ol.inventory_item_id,
ol.pricing_quantity
FROM oe_order_headers_all oh,
oe_order_lines_all ol,
fnd_lookup_values lv,
wsh_delivery_line_status_v wdl
WHERE oh.header_id = ol.header_id
-- and oh.ORDER_NUMBER='234'
AND oh.attribute1 = 'Y'
--AND ol.flow_status_code = 'AWAITING_SHIPPING'

AND lv.lookup_type = 'SHIP_METHOD'
AND oh.shipping_method_code = lv.lookup_code
AND lv.LANGUAGE = 'ZHS'
AND wdl.source_code = 'OE'
AND NVL (oh.attribute15, 'N') != 'Y'
AND wdl.source_line_id = ol.line_id
AND wdl.pick_status = 'Y'
AND lv.meaning = v_ship_method
AND oh.org_id = 101


/* Formatted on 2007/05/11 10:19 (Formatter Plus v4.8.7) */
--部分PICKED
SELECT wdl.*
FROM wsh_delivery_line_status_v wdl
WHERE wdl.source_header_id = 2444

Ship_Confirm_Rule_Id Number
Ship_Confirm_Rule_Name Varchar2(30)


resp_id 21623
resp_appl_id 660


ship_confirm_rule_id
Should be a valid element of wsh_picking_batches.Ship_Confirm_Rule_Id.
ship_confirm_rule_name
Should be a valid element of wsh_Ship_Confirm_rules.name.


/* Formatted on 2007/05/11 13:21 (Formatter Plus v4.8.7) */
-- ship_confirm_rule_id

SELECT DISTINCT (wpb.ship_confirm_rule_id)
FROM wsh_picking_batches wpb

/* Formatted on 2007/05/11 13:21 (Formatter Plus v4.8.7) */
SELECT NAME
FROM wsh_ship_confirm_rules


发货确认


WSH_PICKING_BATCHES_PUB.create_batch

WSH_PICKING_BATCHES_GRP.Create_Batch

FND_API.G_MISS_CHAR


wsh_util_core
actions_custom.do_action_ship_confirm(p_input_state => 1);

*******************************************************

DECLARE
lr_batch_rec WSH_PICKING_BATCHES_PUB.Batch_Info_Rec;
ln_msg_count NUMBER;
ln_batch_id NUMBER;
lc_msg_data VARCHAR2(32767);

lc_return_status VARCHAR2(1000) := NULL;
ln_request_id NUMBER;
ln_i NUMBER;


BEGIN
FND_GLOBAL.apps_initialize ( user_id => 1133,
resp_id => 50238,
resp_appl_id => 101 );

-- Give the data
lr_batch_rec.ORDER_HEADER_ID := 2947;
lr_batch_rec.CUSTOMER_ID := 12268;
lr_batch_rec.INVENTORY_ITEM_ID := 3165;
lr_batch_rec.ORDER_TYPE_ID := 1001;
lr_batch_rec.ORGANIZATION_ID := 101;
lr_batch_rec.Default_Stage_Locator_Id:=21;
lr_batch_rec.Pick_From_locator_Id:=1;
lr_batch_rec.pick_from_subinventory :='Goods';
lr_batch_rec.Default_Stage_Subinventory:='Stage';
lr_batch_rec. ship_confirm_rule_id:=1;
--lr_batch_rec.ship_confirm_rule_name:='TVSN发货确认';

WSH_PICKING_BATCHES_PUB.create_batch (p_api_version => 1.0, p_init_msg_list =>fnd_api.g_false,
p_commit => fnd_api.g_false, x_return_status =>lc_return_status,
x_msg_count => ln_msg_count,
x_msg_data => lc_msg_data,
p_batch_rec => lr_batch_rec,
x_batch_id => ln_batch_id

);

dbms_output.put_line('ln_batch_id: '||ln_batch_id);
dbms_output.put_line('ln_msg_count: '||ln_msg_count);
dbms_output.put_line('lc_msg_data: '||lc_msg_data);
-- dbms_output.put_line('lc_return_status: '||lc_return_status1);

IF ln_batch_id > 0 AND ln_msg_count = 0 THEN
WSH_PICKING_BATCHES_PUB.release_batch (p_api_version => 1.0,
p_init_msg_list => fnd_api.g_false,
p_commit => fnd_api.g_false,
x_return_status => lc_return_status,
x_msg_count => ln_msg_count,
x_msg_data => lc_msg_data,
p_batch_id => ln_batch_id,
p_release_mode => 'CONCURRENT',
x_request_id => ln_request_id) ;
dbms_output.put_line('lc_return_status: '||lc_return_status);
dbms_output.put_line('ln_request_id: '||ln_request_id);
dbms_output.put_line('ln_msg_count: '||ln_msg_count);
dbms_output.put_line('lc_msg_data: '||lc_msg_data);

IF ln_msg_count = 0 AND lc_return_status = 'S' THEN
COMMIT;
ELSE
ROLLBACK;
END IF;
ELSE
ROLLBACK;
END IF;
END;
******************************************


WSH_DELIVERIES_PUB.DELIVERY_ACTION 好像就是这个

Shipment Processing Using APIs 4-5

moonsoft 发表于:2007.05.11 20:34 ::分类: ( 分销 ) ::阅读:(688次) :: 评论 (0) ::收藏此页到365Key

发表评论
标题

在此添加评论
表情符号: smile laughing tongue angry crying sad wassat wink

称呼

邮箱地址(可选)

个人主页(可选)

 authimage


Blog信息
博客日历
切换风格
文章归档...
最新发表...
最新评论...
最多阅读文章...
博客统计...
网站链接...
新闻聚合