顯示具有 EBS [WSH] 標籤的文章。 顯示所有文章
顯示具有 EBS [WSH] 標籤的文章。 顯示所有文章

2020/11/17

wsh_picking_batches_pub

DECLARE
  vOrgId        NUMBER := 00;
  xReturnStatus VARCHAR2(1);
  xMsgCount     NUMBER;
  xMsgData      VARCHAR2(2000);
  pMagIdx       NUMBER(15);
  xNewBatchId   NUMBER;
  vBatchInfoRec wsh_picking_batches_pub.batch_info_rec;
  vRuleId       NUMBER;
  vRuleName     VARCHAR2(30);
  vBatchPrefix  VARCHAR2(200);
  xRequestId    NUMBER;
BEGIN
  fnd_global.apps_initialize(user_id => 00, resp_id => 00,resp_appl_id => 00);
  mo_global.set_policy_context('S', vOrgId);
  mo_global.init('ONT');
  vBatchInfoRec.Delivery_Id             := 00; --wsh_new_deliveries.delivery_id
  vBatchInfoRec.Backorders_Only_Flag    := 'I'; --E:Unrelease / O:Backordered / I:All / M:Replenishment Completed
  vBatchInfoRec.Existing_Rsvs_Only_Flag := 'N';
  vBatchInfoRec.Customer_Id             := 00; --wsh_new_deliveries.customer_id
  --vBatchInfoRec.Order_Header_Id          := 00;

  vBatchInfoRec.Default_Stage_Subinventory := 'XX'; ----mtl_secondary_inventories.secondary_inventory_name
  vBatchInfoRec.Pick_From_Subinventory     := 'XX'; --mtl_secondary_inventories.secondary_inventory_name
  vBatchInfoRec.Organization_Id            := 00;
  vBatchInfoRec.Include_Planned_Lines      := 'N';
  vBatchInfoRec.Autocreate_Delivery_Flag   := 'Y';
  vBatchInfoRec.Autodetail_Pr_Flag         := 'Y';
  vBatchInfoRec.allocation_method          := 'I';
  --vBatchInfoRec.Pick_From_locator_Id       := NULL;
  vBatchInfoRec.Auto_Pick_Confirm_Flag := 'Y';
  vBatchInfoRec.Autopack_Flag          := 'Y';
  vBatchInfoRec.actual_departure_date  := fnd_date.canonical_to_date('2020/01/01');
  --vBatchInfoRec.Ship_Confirm_Rule_Id       := 00;
  --vBatchInfoRec.Ship_Confirm_Rule_Name     := 'XX';
  --vBatchInfoRec.Document_Set_Id            := 00;
  --vBatchInfoRec.Pick_Grouping_Rule_Id      := 00;
  vRuleId      := 00; --wsh_picking_rules_v.picking_rule_id 
  vRuleName    := 'XX'; --wsh_picking_rules_v.picking_rule_name
  vBatchPrefix := NULL;

  wsh_picking_batches_pub.create_batch(p_api_version => 1.0,
                                       p_init_msg_list => fnd_api.g_true,
                                       p_commit => fnd_api.g_true,
                                       x_return_status => xReturnStatus,
                                       x_msg_count => xMsgCount,
                                       x_msg_data => xMsgData,
                                       p_rule_id => vRuleId,
                                       p_rule_name => vRuleName,
                                       p_batch_rec => vBatchInfoRec,
                                       p_batch_prefix => vBatchPrefix,
                                       x_batch_id => xNewBatchId);

  IF xReturnStatus = fnd_api.g_ret_sts_success THEN
    DBMS_OUTPUT.put_line('Pick Release Batch Got Created Sucessfully ' ||
                         xNewBatchId);
  ELSE
    DBMS_OUTPUT.put_line('Message count ' || xMsgCount);
    IF xMsgCount = 1 THEN
      DBMS_OUTPUT.put_line('Message data ' || xMsgData);
    ELSIF xMsgCount > 1 THEN
      LOOP
        pMagIdx  := pMagIdx + 1;
        xMsgData := FND_MSG_PUB.Get(FND_MSG_PUB.G_NEXT, FND_API.G_FALSE);
        IF xMsgData IS NULL THEN
          EXIT;
        END IF;
        DBMS_OUTPUT.put_line('Message' || pMagIdx || '---' || xMsgData);
      END LOOP;
    END IF;
  END IF;

  wsh_picking_batches_pub.release_batch(p_api_version => 1.0,
                                        p_init_msg_list => fnd_api.g_true,
                                        p_commit => fnd_api.g_true,
                                        x_return_status => xReturnStatus,
                                        x_msg_count => xMsgCount,
                                        x_msg_data => xMsgData,
                                        p_batch_id => xNewBatchId,
                                        p_batch_name => NULL,
                                        p_log_level => 1,
                                        --p_release_mode => 'CONCURRENT',
                                        p_release_mode => 'ONLINE',
                                        -- (online or concurrent)
                                        x_request_id => xRequestId);

  IF xReturnStatus = fnd_api.g_ret_sts_success THEN
    dbms_output.put_line('Pick Selection List Generation ' || xRequestId);
  ELSE
    DBMS_OUTPUT.put_line('Message count ' || xMsgCount);
    IF xMsgCount = 1 THEN
      DBMS_OUTPUT.put_line('Message data ' || xMsgData);
    ELSIF xMsgCount > 1 THEN
      LOOP
        pMagIdx  := pMagIdx + 1;
        xMsgData := FND_MSG_PUB.Get(FND_MSG_PUB.G_NEXT, FND_API.G_FALSE);
        IF xMsgData IS NULL THEN
          EXIT;
        END IF;
        DBMS_OUTPUT.put_line('Message' || pMagIdx || '---' || xMsgData);
      END LOOP;
    END IF;
  END IF;
END;

2020/07/21

[API] How to Assign Multiple Delivery Details

DECLARE
  vOperation    VARCHAR2(30) := 'Assign to the new delivery';
  xReturnStatus VARCHAR2(1);
  xMsgData      VARCHAR2(2000);
  xMsgCount     VARCHAR2(2000);

  --Standard Parameters
  vApiVersionNumber NUMBER;
  vInitMsgList      VARCHAR2(30);
  vMsgDetails       VARCHAR2(2000);
  vMsgSummary       VARCHAR2(2000);
  vVaildationLevel  NUMBER;
  vCommit           VARCHAR2(30);
  --Parameters for WSH_DELIVERY_DETAILS_PUB.DETAIL_TO_DELVIERY
  vDeliveryId   NUMBER;
  vDeliveryName VARCHAR2(30);
  vTabOfDelDets WSH_DELIVERY_DETAILS_PUB.id_tab_type;
  vAction       VARCHAR2(30);
BEGIN
  xReturnStatus := wsh_util_core.g_ret_sts_success;
  fnd_global.apps_initialize(user_id => 00, resp_id => 00,resp_appl_id => 660);

  vDeliveryId := 00;
  vTabOfDelDets(1) := 1;
  vTabOfDelDets(2) := 2;
  vTabOfDelDets(3) := 3;
  vAction := 'ASSIGN';

  wsh_delivery_details_pub.detail_to_delivery(p_api_version => 1.0,
                                              p_init_msg_list => vInitMsgList,
                                              p_commit => vCommit,
                                              x_return_status => xReturnStatus,
                                              x_msg_count => xMsgCount,
                                              x_msg_data => xMsgData,
                                              p_tabofdeldets => vTabOfDelDets,
                                              p_action => vAction,
                                              p_delivery_id => vDeliveryId,
                                              p_delivery_name => vDeliveryName);

  IF xReturnStatus = wsh_util_core.g_ret_sts_success THEN
    dbms_output.put_line(vOperation || ' done successfully.');
    COMMIT;
  ELSE
    dbms_output.put_line('Failure.');
    dbms_output.put_line('Return Status = ' || xReturnStatus);
    wsh_util_core.get_messages('Y', xMsgData, vMsgDetails, xMsgCount);
    dbms_output.put_line(vOperation || ': ');
    dbms_output.put_line('Summary: ' || substrb(xMsgData, 1, 200));
    dbms_output.put_line('Detail: ' || substrb(vMsgDetails, 1, 200));
    ROLLBACK;
  END IF;
END;

[API] 建立交貨單

DECLARE
  vApiVersion  NUMBER := 1.0;
  vInitMsglist VARCHAR2(30);
  vCommit      VARCHAR2(30);

  vActionCode   VARCHAR2(15) := 'CREATE';
  xDeliveryId   wsh_new_deliveries.delivery_id%TYPE;
  vDeliveryInfo wsh_deliveries_pub.delivery_pub_rec_type;
  xDeliveryName wsh_new_deliveries.name%TYPE;
  -- out parameters
  xReturnStatus VARCHAR2(1);
  xMsgCount     NUMBER;
  xMsgData      VARCHAR2(2000);
  xMsgDetails   VARCHAR2(2000);
  xMsgSummary   VARCHAR2(2000);
  -- Handle exceptions
  eApiFail EXCEPTION;
BEGIN
  xReturnStatus := wsh_util_core.g_ret_sts_success;

  -- Call this procedure to initialize applications parameters.
  fnd_global.apps_initialize(user_id => 00, resp_id => 00,resp_appl_id => 00);
  -- Create a new delivery for the following

  --vDeliveryInfo.name                         := 'XX';
  vDeliveryInfo.organization_id              := 00;
  vDeliveryInfo.initial_pickup_location_id   := 00;
  vDeliveryInfo.ultimate_dropoff_location_id := 00;
  vDeliveryInfo.ship_method_code             := 'XX';

  -- Call to wsh_deliveries_pub.create_update_delivery
  wsh_deliveries_pub.create_update_delivery(p_api_version_number => vApiVersion,
                                            p_init_msg_list => vInitMsglist,
                                            x_return_status => xReturnStatus,
                                            x_msg_count => xMsgCount,
                                            x_msg_data => xMsgData,
                                            p_action_code => vActionCode,
                                            p_delivery_info => vDeliveryInfo,
                                            p_delivery_name => xDeliveryName,
                                            x_delivery_id => xDeliveryId,
                                            x_name => xDeliveryName);

  -- If the return status is not success(S) then raise exception
  IF (xReturnStatus <> wsh_util_core.g_ret_sts_success) THEN
    RAISE eApiFail;
  ELSE
    dbms_output.put_line('Delivery ID  : ' || xDeliveryId);
    dbms_output.put_line('Delivery Name: ' || xDeliveryName);
  END IF;
EXCEPTION
  WHEN eApiFail THEN
    wsh_util_core.get_messages('Y', xMsgSummary, xMsgDetails,
                               xMsgCount);
    IF xMsgData > 1 THEN
      xMsgData := xMsgSummary || xMsgDetails;
      Dbms_output.put_line('Message Data : ' || xMsgData);
    ELSE
      xMsgData := xMsgSummary;
      Dbms_output.put_line('Message Data : ' || xMsgData);
    END IF;
END;