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/11/17
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;
訂閱:
文章 (Atom)