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; /
5 Comments:
Hi Suresh
We are experiencing kind of slowness with this API for the first transaction. The first transaction takes almost upto 40secs to 1 minute while the subsequent transactions are processed within 10-20 seconds. Is this an expected behavior?
Regards,
Raj
Hi Suresh
Could you please help me to find an API to split order lines from backend.
thanks in advance
Hi
I am struggling with oe_order_pub.process_order API for splitting order lines. Could you please help me on it.
Regards
Sud
You need to call process order API in update mode for the line to be splitted.
use
split_action_code = 'SPLIT'
Let me know if you still have any questions.
This is the best sample code on the net. Thanks
Post a Comment