转:使用脚本关闭订单头
订单的关闭是自动的,在所有行工作流结束(Close或者Cancel)后0.5天,订单头也将在Workflow Background Process的推动下关闭。
还有另外一种说法:you can wait until month-end and the “Order Flow – Generic” workflow will close it for you.
所以造成了很多时候订单行已经关闭了,但订单头还是处于Booked状态,这个时候如果你想Close订单头,你可以手动运行Workflow Background Process来关闭订单,也可以使用脚本来close Order Header.
脚本一:
begin fnd_global.apps_initialize(:USER_ID, :RESP_ID, :RESP_APPL_ID); end; / /*If Work Flow exist for Order header then use the script below. This will close the Order After running this script run "Workflow Background Process" */ begin wf_engine.completeactivity ( 'OEOH', --item_type '9999999', --item_key = header_id .... pass the HEADER_ID of the order you want to close 'CLOSE_WAIT_FOR_L', -- apps.wf_process_activities.activity_name where instance_id= apps.wf_item_activity_statuses.process_activity null ); end; / Commit; ==================== /*If Work Flow does NOT exist for Order then use the script below . After running this script run "Workflow Background Process" */ declare l_return_status VARCHAR2(240); l_msg_count NUMBER; l_msg_data VARCHAR2(240); l_header_id NUMBER := 99999999; --pass the HEADER_ID of the order you want to close begin OE_ORDER_CLOSE_UTIL.Close_Order ( p_api_version_number => 1.0 , p_header_id => l_header_id , x_return_status => l_return_status , x_msg_count => l_msg_count , x_msg_data => l_msg_data ); dbms_output.put_line('status = ' l_return_status); end; / Commit; /* After running this script run "Workflow Background Process" */ ********************************************************************** **********************************************************************
脚本二:你要确保订单行都被关闭了的情况用这个脚本
Select HEADER_ID, OPEN_FLAG, FLOW_STATUS_CODE from apps.oe_order_lines_all where org_id=:org_id and header_id =:HEADER_ID; --pass the ORG_ID and HEADER_ID of the order you want to close update apps.oe_order_headers_all set open_flag = 'N' , FLOW_STATUS_CODE= 'CLOSED' where org_id=:org_id and header_id =:HEADER_ID; --pass the ORG_ID and HEADER_ID of the order you want to close Commit;