在已存在销售订单上插入销售订单行
--This is to add a line to an existing order
DECLARE
l_api_version_number
NUMBER
:=
1
;
l_return_status
VARCHAR2
(
2000
);
l_msg_count
NUMBER
;
l_msg_data
VARCHAR2
(
2000
);
/*****************INPUT VARIABLES FOR PROCESS_ORDER API*************************/
l_header_rec oe_order_pub.header_rec_type;
l_line_tbl oe_order_pub.line_tbl_type;
l_action_request_tbl oe_order_pub.request_tbl_type;
/*****************OUT VARIABLES FOR PROCESS_ORDER API***************************/
l_header_rec_out oe_order_pub.header_rec_type;
l_header_val_rec_out oe_order_pub.header_val_rec_type;
l_header_adj_tbl_out oe_order_pub.header_adj_tbl_type;
l_header_adj_val_tbl_out oe_order_pub.header_adj_val_tbl_type;
l_header_price_att_tbl_out oe_order_pub.header_price_att_tbl_type;
l_header_adj_att_tbl_out oe_order_pub.header_adj_att_tbl_type;
l_header_adj_assoc_tbl_out oe_order_pub.header_adj_assoc_tbl_type;
l_header_scredit_tbl_out oe_order_pub.header_scredit_tbl_type;
l_header_scredit_val_tbl_out oe_order_pub.header_scredit_val_tbl_type;
l_line_tbl_out oe_order_pub.line_tbl_type;
l_line_val_tbl_out oe_order_pub.line_val_tbl_type;
l_line_adj_tbl_out oe_order_pub.line_adj_tbl_type;
l_line_adj_val_tbl_out oe_order_pub.line_adj_val_tbl_type;
l_line_price_att_tbl_out oe_order_pub.line_price_att_tbl_type;
l_line_adj_att_tbl_out oe_order_pub.line_adj_att_tbl_type;
l_line_adj_assoc_tbl_out oe_order_pub.line_adj_assoc_tbl_type;
l_line_scredit_tbl_out oe_order_pub.line_scredit_tbl_type;
l_line_scredit_val_tbl_out oe_order_pub.line_scredit_val_tbl_type;
l_lot_serial_tbl_out oe_order_pub.lot_serial_tbl_type;
l_lot_serial_val_tbl_out oe_order_pub.lot_serial_val_tbl_type;
l_action_request_tbl_out oe_order_pub.request_tbl_type;
l_msg_index
NUMBER
;
l_data
VARCHAR2
(
2000
);
l_loop_count
NUMBER
;
l_debug_file
VARCHAR2
(
200
);
BEGIN
/*****************INITIALIZE DEBUG INFO*************************************/
l_debug_file := oe_debug_pub.set_debug_mode(
'FILE'
);
oe_debug_pub.initialize;
oe_debug_pub.setdebuglevel(
5
);
oe_msg_pub.initialize;
/*****************INITIALIZE ENVIRONMENT*************************************/
fnd_global.apps_initialize(
2250
,
50786
,
20003
);
-- pass in user_id, responsibility_id, and application_id
/*****************INITIALIZE HEADER RECORD******************************/
l_header_rec := oe_order_pub.g_miss_header_rec;
/*****************POPULATE REQUIRED ATTRIBUTES **********************************/
--l_header_rec.operation := oe_globals.g_opr_create;
--l_header_rec.order_type_id := ;
--l_header_rec.sold_to_org_id := ;
--l_header_rec.price_list_id := ;
/*****************INITIALIZE ACTION REQUEST RECORD*************************************/
l_action_request_tbl(
1
) := oe_order_pub.g_miss_request_rec;
l_action_request_tbl(
1
).request_type := oe_globals.g_book_order;
/*****************INITIALIZE LINE RECORD********************************/
--Adding a new line to an existing order
--This is to add a line to an existing order
-- Initialize record to missing
l_line_tbl(
1
) := oe_order_pub.g_miss_line_rec;
-- Line attributes
-- Required Line Attributes
l_line_tbl(
1
).header_id :=
101452
;
l_line_tbl(
1
).ordered_quantity :=
0.5
;
l_line_tbl(
1
).inventory_item_id :=
1019
;
-- Other line attributes
l_line_tbl(
1
).ship_from_org_id :=
92
;
--l_line_tbl(1).subinventory := &subinventory code;
--Operation set to Create
l_line_tbl(
1
).operation := oe_globals.g_opr_create;
/*****************CALLTO PROCESS ORDER API*********************************/
oe_order_pub.process_order(p_api_version_number => l_api_version_number,
p_header_rec => l_header_rec,
p_line_tbl => l_line_tbl,
p_action_request_tbl => l_action_request_tbl,
-- OUT variables
x_header_rec => l_header_rec_out,
x_header_val_rec => l_header_val_rec_out,
x_header_adj_tbl => l_header_adj_tbl_out,
x_header_adj_val_tbl => l_header_adj_val_tbl_out,
x_header_price_att_tbl => l_header_price_att_tbl_out,
x_header_adj_att_tbl => l_header_adj_att_tbl_out,
x_header_adj_assoc_tbl => l_header_adj_assoc_tbl_out,
x_header_scredit_tbl => l_header_scredit_tbl_out,
x_header_scredit_val_tbl => l_header_scredit_val_tbl_out,
x_line_tbl => l_line_tbl_out,
x_line_val_tbl => l_line_val_tbl_out,
x_line_adj_tbl => l_line_adj_tbl_out,
x_line_adj_val_tbl => l_line_adj_val_tbl_out,
x_line_price_att_tbl => l_line_price_att_tbl_out,
x_line_adj_att_tbl => l_line_adj_att_tbl_out,
x_line_adj_assoc_tbl => l_line_adj_assoc_tbl_out,
x_line_scredit_tbl => l_line_scredit_tbl_out,
x_line_scredit_val_tbl => l_line_scredit_val_tbl_out,
x_lot_serial_tbl => l_lot_serial_tbl_out,
x_lot_serial_val_tbl => l_lot_serial_val_tbl_out,
x_action_request_tbl => l_action_request_tbl_out,
x_return_status => l_return_status,
x_msg_count => l_msg_count,
x_msg_data => l_msg_data);
/*****************CHECK RETURN STATUS***********************************/
IF
l_return_status = fnd_api.g_ret_sts_success
THEN
dbms_output.put_line(
'success'
);
COMMIT
;
ELSE
dbms_output.put_line(
'failure'
);
ROLLBACK
;
END
IF
;
/*****************DISPLAY RETURN STATUS FLAGS******************************
DBMS_OUTPUT.PUT_LINE('process ORDER ret status IS: ' || l_return_status);
DBMS_OUTPUT.PUT_LINE('process ORDER msg data IS: ' || l_msg_data);
DBMS_OUTPUT.PUT_LINE('process ORDER msg COUNT IS: ' || l_msg_count);
DBMS_OUTPUT.PUT_LINE('header.order_number IS: ' || to_char(l_header_rec_out.order_number));
DBMS_OUTPUT.PUT_LINE('header.return_status IS: ' || l_header_rec_out.return_status);
DBMS_OUTPUT.PUT_LINE('header.booked_flag IS: ' || l_header_rec_out.booked_flag);
DBMS_OUTPUT.PUT_LINE('header.header_id IS: ' || l_header_rec_out.header_id);
DBMS_OUTPUT.PUT_LINE('header.order_source_id IS: ' || l_header_rec_out.order_source_id);
DBMS_OUTPUT.PUT_LINE('header.flow_status_code IS: ' || l_header_rec_out.flow_status_code);
/*****************DISPLAY ERROR MSGS*************************************/
FOR
i
IN
1
.. l_msg_count
LOOP
oe_msg_pub.get(p_msg_index => i,
p_encoded => fnd_api.g_false,
p_data => l_data,
p_msg_index_out => l_msg_index);
dbms_output.put_line(
'message is: '
|| l_data);
dbms_output.put_line(
'message index is: '
|| l_msg_index);
END
LOOP
;
dbms_output.put_line(
'Debug = '
|| oe_debug_pub.g_debug);
dbms_output.put_line(
'Debug Level = '
||
to_char(oe_debug_pub.g_debug_level));
dbms_output.put_line(
'Debug File = '
|| oe_debug_pub.g_dir ||
'/'
||
oe_debug_pub.g_file);
dbms_output.put_line(
'****************************************************'
);
oe_debug_pub.debug_off;
END
;