使用API進行發運確認並運行Interface Trip Stop,apiinterface

來源:互聯網
上載者:User

使用API進行發運確認並運行Interface Trip Stop,apiinterface

DECLARE  p_sales_order            NUMBER := 1506764295;  p_line_number            NUMBER := 1.1;  p_org_id                 NUMBER := 121;  l_shipped_quantity       NUMBER := 1;  p_api_version_number     NUMBER := 1.0;  init_msg_list            VARCHAR2(200);  l_commit                 VARCHAR2(30);  x_msg_details            VARCHAR2(3000);  x_msg_summary            VARCHAR2(3000);  x_return_status          VARCHAR2(3);  x_msg_count              NUMBER;  x_msg_data               VARCHAR2(3000);  p_validation_level       NUMBER;  v_errbuf                 VARCHAR2(2000);  v_retcode                VARCHAR2(20);  v_released_status        wsh_delivery_details.released_status%TYPE;  v_inv_interfaced_flag    wsh_delivery_details.inv_interfaced_flag%TYPE;  v_oe_interfaced_flag     wsh_delivery_details.oe_interfaced_flag%TYPE;  v_source_code            wsh_delivery_details.source_code%TYPE;  v_pending_interface_flag wsh_trip_stops.pending_interface_flag%TYPE;  l_changed_attributes     wsh_delivery_details_pub.changedattributetabtype;  l_source_code            VARCHAR2(30) := 'OE';  -- Parameters for WSH_DELIVERIES_PUB  p_delivery_name           VARCHAR2(30);  p_action_code             VARCHAR2(15);  p_asg_trip_id             NUMBER;  p_asg_trip_name           VARCHAR2(30);  p_asg_pickup_stop_id      NUMBER;  p_asg_pickup_loc_id       NUMBER;  p_asg_pickup_loc_code     VARCHAR2(30);  p_asg_pickup_arr_date     DATE;  p_asg_pickup_dep_date     DATE;  p_asg_dropoff_stop_id     NUMBER;  p_asg_dropoff_loc_id      NUMBER;  p_asg_dropoff_loc_code    VARCHAR2(30);  p_asg_dropoff_arr_date    DATE;  p_asg_dropoff_dep_date    DATE;  p_sc_action_flag          VARCHAR2(10);  p_sc_intransit_flag       VARCHAR2(10);  p_sc_close_trip_flag      VARCHAR2(10);  p_sc_create_bol_flag      VARCHAR2(10);  p_sc_stage_del_flag       VARCHAR2(10);  p_sc_trip_ship_method     VARCHAR2(30);  p_sc_actual_dep_date      VARCHAR2(30);  p_sc_report_set_id        NUMBER;  p_sc_report_set_name      VARCHAR2(60);  p_sc_defer_interface_flag VARCHAR2(60);  p_sc_send_945_flag        VARCHAR2(60);  p_sc_rule_id              NUMBER;  p_sc_rule_name            VARCHAR2(60);  p_wv_override_flag        VARCHAR2(10);  p_asg_pickup_stop_seq     NUMBER;  p_asg_dropoff_stop_seq    NUMBER;  x_trip_id                 VARCHAR2(30);  x_trip_name               VARCHAR2(30);  fail_api EXCEPTION;  x_debug_file       VARCHAR2(100);  l_ship_method_code VARCHAR2(100);  l_user_id          NUMBER;  l_resp_id          NUMBER;  l_appl_id          NUMBER;  CURSOR c_ord_details IS      SELECT DISTINCT det.source_header_number sales_order                   ,det.org_id                   ,det.source_line_number                   ,det.source_header_id                   ,det.source_line_id                   ,det.source_header_type_name                   ,det.inventory_item_id                   ,det.requested_quantity                   ,det.delivery_detail_id                   ,(SELECT concatenated_segments                       FROM mtl_system_items_kfv                      WHERE inventory_item_id = det.inventory_item_id                        AND organization_id = det.organization_id) ordered_item                   ,det.organization_id                   ,det.src_requested_quantity                   ,det.shipped_quantity                   ,del.delivery_id                   ,del.status_code delivery_status_code                   ,det.released_status pick_release_status                   ,det.oe_interfaced_flag                   ,det.inv_interfaced_flag      FROM wsh_delivery_details     det          ,wsh_delivery_assignments asn          ,wsh_new_deliveries       del     WHERE 1 = 1       AND det.delivery_detail_id = asn.delivery_detail_id       AND asn.delivery_id = del.delivery_id(+)       AND det.source_header_number = p_sales_order       AND det.source_line_number = p_line_number       AND det.org_id = p_org_id       AND shipped_quantity IS NULL       AND nvl(del.status_code, 'OP') <> 'CL'       AND det.released_status = 'Y';  --  v_user_id      NUMBER;  v_resp_id      NUMBER;  v_resp_appl_id NUMBER;  --  BEGIN  --  /* To get the user id details */  SELECT user_id INTO v_user_id FROM fnd_user WHERE user_name = 'SETUP01';  /* To get the responsibility and responsibility application id */  SELECT f.responsibility_id, f.application_id    INTO v_resp_id, v_resp_appl_id    FROM fnd_responsibility_tl f   WHERE f.responsibility_name = '受注管理スーパーユーザー(SC)'     AND f.language = 'JA';  --  fnd_global.apps_initialize(user_id      => v_user_id,                             resp_id      => v_resp_id,                             resp_appl_id => v_resp_appl_id);  dbms_output.put_line(v_user_id || ' ' || v_resp_id || ' ' ||                       v_resp_appl_id);  --  FOR i IN c_ord_details LOOP    dbms_output.put_line('Initializing the Application for Shipping Transactions');    -- Mandatory initialization for R12    mo_global.set_policy_context('S', i.org_id);    mo_global.init('ONT');    -- Ship Confirming    p_delivery_name := to_char(i.delivery_id);      dbms_output.put_line('Before Shipping, Calling WSH_DELIVERY_DETAILS_PUB API to Update Shipping Attributes');    dbms_output.put_line('=============================================');    l_changed_attributes(1).delivery_detail_id := i.delivery_detail_id;    l_changed_attributes(1).shipped_quantity := l_shipped_quantity;    wsh_delivery_details_pub.update_shipping_attributes(p_api_version_number => 1.0,                                                        p_init_msg_list      => init_msg_list,                                                        p_commit             => l_commit,                                                        x_return_status      => x_return_status,                                                        x_msg_count          => x_msg_count,                                                        x_msg_data           => x_msg_data,                                                        p_changed_attributes => l_changed_attributes,                                                        p_source_code        => l_source_code);      IF (x_return_status <> wsh_util_core.g_ret_sts_success) THEN      RAISE fail_api;      dbms_output.put_line('Failed to Update the Shipping Attributes');    ELSE      dbms_output.put_line('Successfully Updated the Shipping Attributes');    END IF;      BEGIN      SELECT shipping_method_code        INTO l_ship_method_code        FROM oe_order_headers_all       WHERE order_number = i.sales_order         AND org_id = i.org_id;    EXCEPTION      WHEN OTHERS THEN        l_ship_method_code := NULL;    END;      p_action_code       := 'CONFIRM'; -- The action code for ship confirm    p_sc_action_flag    := 'S'; -- Ship entered quantity.    p_sc_intransit_flag := 'N';    --In transit flag is set to 'Y' closes the pickup stop and sets the delivery in transit.    p_sc_close_trip_flag      := 'Y'; -- Close the trip after ship confirm    p_sc_trip_ship_method     := l_ship_method_code; -- The ship method code    p_sc_defer_interface_flag := 'Y';    p_sc_stage_del_flag       := 'Y';    p_sc_create_bol_flag      := 'N';    p_wv_override_flag        := 'N';      -- API Call for Ship Confirmation    dbms_output.put_line('Calling WSH_DELIVERIES_PUB to Perform Ship Confirmation');    dbms_output.put_line('=============================================');      wsh_deliveries_pub.delivery_action(p_api_version_number      => 1.0,                                       p_init_msg_list           => init_msg_list,                                       x_return_status           => x_return_status,                                       x_msg_count               => x_msg_count,                                       x_msg_data                => x_msg_data,                                       p_action_code             => p_action_code,                                       p_delivery_id             => i.delivery_id,                                       p_delivery_name           => p_delivery_name,                                       p_asg_trip_id             => p_asg_trip_id,                                       p_asg_trip_name           => p_asg_trip_name,                                       p_asg_pickup_stop_id      => p_asg_pickup_stop_id,                                       p_asg_pickup_loc_id       => p_asg_pickup_loc_id,                                       p_asg_pickup_stop_seq     => p_asg_pickup_stop_seq,                                       p_asg_pickup_loc_code     => p_asg_pickup_loc_code,                                       p_asg_pickup_arr_date     => p_asg_pickup_arr_date,                                       p_asg_pickup_dep_date     => p_asg_pickup_dep_date,                                       p_asg_dropoff_stop_id     => p_asg_dropoff_stop_id,                                       p_asg_dropoff_loc_id      => p_asg_dropoff_loc_id,                                       p_asg_dropoff_stop_seq    => p_asg_dropoff_stop_seq,                                       p_asg_dropoff_loc_code    => p_asg_dropoff_loc_code,                                       p_asg_dropoff_arr_date    => p_asg_dropoff_arr_date,                                       p_asg_dropoff_dep_date    => p_asg_dropoff_dep_date,                                       p_sc_action_flag          => p_sc_action_flag,                                       p_sc_intransit_flag       => p_sc_intransit_flag,                                       p_sc_close_trip_flag      => p_sc_close_trip_flag,                                       p_sc_create_bol_flag      => p_sc_create_bol_flag,                                       p_sc_stage_del_flag       => p_sc_stage_del_flag,                                       p_sc_trip_ship_method     => p_sc_trip_ship_method,                                       p_sc_actual_dep_date      => p_sc_actual_dep_date,                                       p_sc_report_set_id        => p_sc_report_set_id,                                       p_sc_report_set_name      => p_sc_report_set_name,                                       p_sc_defer_interface_flag => p_sc_defer_interface_flag,                                       p_sc_send_945_flag        => p_sc_send_945_flag,                                       p_sc_rule_id              => p_sc_rule_id,                                       p_sc_rule_name            => p_sc_rule_name,                                       p_wv_override_flag        => p_wv_override_flag,                                       x_trip_id                 => x_trip_id,                                       x_trip_name               => x_trip_name);      IF (x_return_status <> wsh_util_core.g_ret_sts_success) THEN      dbms_output.put_line('Ship confirm has not been Completed For SO => ');      --ROLLBACK;      RAISE fail_api;    ELSE      dbms_output.put_line('Ship confirm Successfully Completed For SO => ');      --COMMIT;          dbms_output.put_line('Checking the Delivery Status after delivery action API Call');      dbms_output.put_line('==========================================');          SELECT wdd.source_code            ,wdd.released_status            ,wdd.inv_interfaced_flag            ,wdd.oe_interfaced_flag            ,wts.pending_interface_flag        INTO v_source_code            ,v_released_status            ,v_inv_interfaced_flag            ,v_oe_interfaced_flag            ,v_pending_interface_flag        FROM wsh_trips                wtr            ,wsh_trip_stops           wts            ,wsh_delivery_legs        wlg            ,wsh_new_deliveries       wnd            ,wsh_delivery_assignments wda            ,wsh_delivery_details     wdd       WHERE wtr.trip_id = wts.trip_id         AND wts.stop_id = wlg.pick_up_stop_id         AND wts.pending_interface_flag = 'Y'         AND wdd.inv_interfaced_flag <> 'Y'         AND wlg.delivery_id = wnd.delivery_id         AND wnd.delivery_id = wda.delivery_id         AND wda.delivery_detail_id = wdd.delivery_detail_id         AND wnd.delivery_id = p_delivery_name         AND wdd.source_line_id = i.source_line_id;          IF (v_source_code = 'OE' AND v_released_status = 'C' AND         v_inv_interfaced_flag <> 'Y' AND v_oe_interfaced_flag <> 'Y' AND         v_pending_interface_flag = 'Y') THEN              dbms_output.put_line('The Delivery has been Shipped & the Next Step is - Run Interface');        dbms_output.put_line('===========================================');        -- API Call for Submitting Interface Trip Stop              wsh_ship_confirm_actions.interface_all_wrp(errbuf            => v_errbuf,                                                   retcode           => v_retcode,                                                   p_mode            => 'ALL',                                                   p_stop_id         => NULL,                                                   p_delivery_id     => p_delivery_name,                                                   p_log_level       => 0,                                                   p_batch_id        => NULL,                                                   p_trip_type       => NULL,                                                   p_organization_id => i.organization_id,                                                   p_num_requests    => 1,                                                   p_stops_per_batch => 1);            ELSE        dbms_output.put_line('The Delivery has not Shipped Properly');      END IF;    END IF;  END LOOP;EXCEPTION  WHEN fail_api THEN      dbms_output.put_line('==============');    dbms_output.put_line('Error Details If Any');    dbms_output.put_line('==============');      wsh_util_core.get_messages(p_init_msg_list => 'Y',                               x_summary       => x_msg_summary,                               x_details       => x_msg_details,                               x_count         => x_msg_count);      IF x_msg_count > 1 THEN      x_msg_data := x_msg_summary || x_msg_details;      dbms_output.put_line(x_msg_data);    ELSE      x_msg_data := x_msg_summary || x_msg_details;      dbms_output.put_line(x_msg_data);    END IF;    --  --FOR i IN 1 .. x_msg_count LOOP    --  x_msg_data := oe_msg_pub.get(p_msg_index => i, p_encoded => 'F');    --  dbms_output.put_line(i || ') ' || x_msg_data);    --END LOOP;   --END;

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.