SERIAL NUMBER IS LOST WHEN CALLING WSH_DELIVERY_DETAILS_PUB.UPDATE_SHIPPING_ATTRIBUTE (Doc ID 884329.1)

Last updated on AUGUST 31, 2016

Applies to:

Oracle Shipping Execution - Version 11.5.10.2 and later
Information in this document applies to any platform.
WSH_DELIVERY_DETAILS_PUB, UPDATE_SHIPPING_ATTRIBUTE, WSHDDGPB.pls


Symptoms

 

-- Problem Statement:
On 11.5.10.2 in Production:
Serial Number is getting lost from staged delivery line for a quantity of 1 when passing same serial number to public API Wsh_Delivery_Details_Pub.Update_Shipping_Attributes.

The serial_number field gets cleared in WSH_DELIVERY_DETAILS (WDD) and the transaction_temp_id
gets populated. But there is no corresponding record present in MTL_SERIAL_NUMBERS_TEMP (MSNT).  The following queries confirm this:

  SELECT transaction_temp_id, shipped_quantity, serial_number
  FROM WSH_DELIVERY_DETAILS
  WHERE delivery_detail_id = 2002413;

  Returns the transaction_temp_id, shipped_quantity, and null serial_number   

  SELECT * 
  FROM MTL_SERIAL_NUMBERS_TEMP
  WHERE transaction_temp_id = &ttid_from_above;

  Returns no rows.  


-- Steps To Reproduce:
The issue can be reproduced by using the following code to invoke the public API Wsh_Delivery_Details_Pub.Update_Shipping_Attributes after the delivery detail has been Staged. This code will attempt to populate the serial_number column in wsh_delivery_details table with the value passed in p_serial_no:

 lv_changed_attributes(1).delivery_detail_id := p_dlvy_dtl_id; 
 lv_changed_attributes(1).serial_number := p_serial_no; 
 lv_changed_attributes(1).shipped_quantity := 1;
 
 wsh_delivery_details_pub.update_shipping_attributes
   (p_api_version_number => 1.0
   ,p_init_msg_list      => fnd_api.g_true
   ,p_commit             => fnd_api.g_true
   ,x_return_status      => x_return_status
   ,x_msg_count          => x_msg_count
   ,x_msg_data           => x_msg_data
   ,p_changed_attributes => lv_changed_attributes
   ,p_source_code        => lv_source_code);       


The problem does not occur if a range of serial numbers is passed in p_serial_range_tab as follows:

--- instead of the following
lv_changed_attributes(1).serial_number := p_serial_no;

--- use the p_serial_range_tab table
l_serial_range_tab(1).from_serial_number := p_serial_no;
l_serial_range_tab(1).to_serial_number := p_serial_no;
l_serial_range_tab(1).quantity := 1;
l_serial_range_tab(1).delivery_detail_id := p_dlvy_dtl_id;  


Note: The from and to serial numbers can have the same value.

Changes

This problem started after the fix for <Bug 5018917> was introduced in the environment.
This fix gave file version: WSHDDGPB.pls 115.93.11510.10.

Cause

Sign In with your My Oracle Support account

Don't have a My Oracle Support account? Click to get started

My Oracle Support provides customers with access to over a
Million Knowledge Articles and hundreds of Community platforms