Sales Order Import using API
Please note that this is just the sample code and should be used only for reference.
The code below creates a sales order in entered status with one line record. Also the price adjustment is done for the line.
DECLARE
l_api_version_number NUMBER := 1;
l_return_status VARCHAR2 (2000);
l_msg_count NUMBER;
l_msg_data VARCHAR2 (2000);
/*****************PARAMETERS****************************************/
l_debug_level NUMBER := 1;
-- OM DEBUG LEVEL (MAX 5)
l_org NUMBER := 5283;
-- OPERATING UNIT
l_no_orders NUMBER := 1;
-- NO OF ORDERS
l_user NUMBER := 28573;
-- USER
l_resp NUMBER := 53073;
-- RESPONSIBLILTY
l_appl NUMBER := 660;
-- ORDER MANAGEMENT
/**********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;
l_line_adj_tbl oe_order_pub.line_adj_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);
b_return_status VARCHAR2 (200);
b_msg_count NUMBER;
b_msg_data VARCHAR2 (2000);
BEGIN
DBMS_APPLICATION_INFO.set_client_info
(l_org);
mo_global.set_policy_context ('S', l_org);
mo_global.init ('ONT');
/*****************INITIALIZE
DEBUG INFO************************/
IF (l_debug_level > 0)
THEN
l_debug_file := oe_debug_pub.set_debug_mode
('FILE');
oe_debug_pub.initialize;
oe_debug_pub.setdebuglevel (l_debug_level);
oe_msg_pub.initialize;
END IF;
/*****************INITIALIZE
ENVIRONMENT******************************/
fnd_global.apps_initialize (l_user, l_resp, l_appl);
-- 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 := 2159; -- domestic return
l_header_rec.sold_to_org_id :=
659018;
l_header_rec.ship_to_org_id :=
635775;
l_header_rec.invoice_to_org_id :=
635776;
l_header_rec.order_source_id := 9;
l_header_rec.booked_flag := 'N';
l_header_rec.price_list_id :=
39825;
l_header_rec.pricing_date := SYSDATE;
l_header_rec.transactional_curr_code := 'USD';
l_header_rec.flow_status_code := 'ENTERED';
l_header_rec.cust_po_number := '1211314AFA';
/**********INITIALIZE
ACTION REQUEST RECORD****************/
l_action_request_tbl (1) := oe_order_pub.g_miss_request_rec;
/*****************INITIALIZE
LINE RECORD********************/
l_line_tbl (1) := oe_order_pub.g_miss_line_rec;
l_line_tbl (1).operation := oe_globals.g_opr_create;
l_line_tbl (1).inventory_item_id := 826543;
l_line_tbl (1).ordered_quantity := 1;
--l_line_tbl(1).unit_selling_price
:= 2000; -- The price is done using adjustments
--l_line_tbl(1).unit_list_price
:= 2000;
l_line_tbl (1).calculate_price_flag := 'Y';
l_line_tbl (1).return_reason_code := 'B2';
--l_line_tbl(1).line_number
:= 1;
l_line_adj_tbl (1) := oe_order_pub.g_miss_line_adj_rec;
l_line_adj_tbl (1).operation := oe_globals.g_opr_create;
l_line_adj_tbl (1).list_header_id := 148129;
l_line_adj_tbl (1).list_line_id := 651550;
l_line_adj_tbl (1).change_reason_code := 'MANUAL';
l_line_adj_tbl (1).change_reason_text := 'Manually applied adjustments';
l_line_adj_tbl (1).operand := 2000;
l_line_adj_tbl (1).pricing_phase_id := 2;
l_line_adj_tbl (1).updated_flag := 'Y';
l_line_adj_tbl (1).applied_flag := 'Y';
l_line_adj_tbl (1).line_index := 1;
FOR i IN 1 .. l_no_orders
LOOP
/*****************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,
p_line_adj_tbl => l_line_adj_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
IF (l_debug_level > 0)
THEN
DBMS_OUTPUT.put_line ('success');
END IF;
COMMIT;
ELSE
IF (l_debug_level > 0)
THEN
DBMS_OUTPUT.put_line ('failure');
END IF;
ROLLBACK;
END IF;
END LOOP;
-- END LOOP
/*****************DISPLAY
RETURN STATUS FLAGS************************/
IF (l_debug_level > 0)
THEN
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 ( 'adjustment.return_status
IS: '
||
l_line_adj_tbl_out (1).return_status
);
DBMS_OUTPUT.put_line ( 'header.header_id
IS: '
|| l_header_rec_out.header_id
);
DBMS_OUTPUT.put_line ( 'line.unit_selling_price
IS: '
|| l_line_tbl_out (1).unit_selling_price
);
END IF;
/*****************DISPLAY
ERROR MSGS*******************************/
IF (l_debug_level > 0)
THEN
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;
END IF;
IF (l_debug_level > 0)
THEN
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 IF;
END;
/
No comments:
Post a Comment