Many businesses are turning to software packages such as UPS WorldShip to streamline their shipping processes in a cost-effective manner. Learn how to interface UPS WorldShip with your SAP R/3 system.
Key Concept
UPS WorldShip is a Windows-based shipping solution that can be integrated into R/3 systems. It allows customers to create a shipment order and select and assign a UPS service as well as calculate the shipping cost, assign a tracking number, print labels, and transfer all relevant data automatically to UPS.
UPS WorldShip provides a built-in integration method based on Microsoft's Open Database Connectivity
(ODBC). The ODBC connects client/server databases and is used by UPS WorldShip to import and export data among
applications.
I will explain the technical design that I used to integrate UPS WorldShip with SAP R/3 based on the ODBC
feature and describe the logic of the interface. I will then detail the closed-loop business process of creating a
shipment in the source system, transferring the shipment data to UPS WorldShip, and importing the assigned tracking number
and calculated shipment charge back into R/3. While I focus on integrating UPS WorldShip with R/3, the concept is the same
for the FedEx Ship Manager application. In some cases, FedEx and UPS applications can be used simultaneously.
Note
UPS offers a host of business technology solutions, including more complex packages that enable tighter integration with R/3 such as UPS Intelliverse. More advanced applications require more data exchange to support features like step-by-step tracking. Your R/3 system must be tied to the UPS central database through a Business Connector or XML interface. UPS WorldShip is a simpler solution for smaller environments with fewer shipments per day.
Technical Design
Figure 1 on the next page shows the SAP R/3 application and its database layers, along
with the ODBC client and the UPS WorldShip components. The two R/3 custom tables (UPS Z tables) act as
the staging area for exchanging data between R/3 and UPS WorldShip. The UPS inbound (IB) table serves as
a temporary storage area of shipping data coming from R/3, in particular the so-called handling units (HUs). The UPS
outbound (OB) table stages the data coming from UPS WorldShip to be processed in the ERP system.

Figure 1
SAP R/3 and database layers with ODBC client and UPS WorldShip
In addition to staging the data in a format suitable for exchange with UPS WorldShip, the R/3 tables
introduce a layer of separation between the R/3 application data and the non-R/3 application data. Best practices demand
that an R/3 application never be directly modified by an external system.
The ODBC client in the middle of Figure 1 is a database-specific module that allows
standardized access to a relational database for any ODBC-enabled application. At the right of the figure you'll find the
UPS WorldShip system where the inbound map and outbound map are created. They map the
WorldShip data with field-level custom tables.
No actual data tables are defined in the database instance in the middle of Figure 1. Instead, two
database views are created that point to the UPS inbound and outbound tables defined in the R/3 database instance. The
separate database instance adds another degree of separation between the R/3 database instance and the external
application. In addition to providing peace of mind, it limits the number of tables being accessed by the UPS WorldShip
application.
Business Process
Now, let's look at how an R/3 system performs its job when integrated with UPS WorldShip. A typical
business process follows the steps depicted in Figure 2.

Figure 2
Typical UPS WorldShip business process in R/3
In my client's case, I used the special Express Ship Interface (XSI) designed for express delivery
carriers. XSI was introduced with R/3 Release 4.6 and allows capturing and exchanging data and provides standard
transaction codes to view tracking information stored in HUs. Documentation can be found in the SAP library under
SAP R/3>Logistics>Sales and Distribution (SD)>Shipping (LE-SHP)>Goods Issue>Parcel Tracking for Express
Delivery Companies.
Step 1. Create a handling unit (HU). Creating an HU with all the necessary information
such as weight and physical dimensions triggers two separate HU output types. The first prints a bar-code label containing
the HU number and any additional information as needed.
The second output type triggers an ABAP program that creates a record for a particular package in the UPS
inbound Z table. The record contains all necessary shipping information such as the receiver name and address, package
type, weight, dimensions, and service type. The bar-code label is then attached to the package and it is ready to be
metered at the UPS WorldShip station.
Note
R/3 HUs typically correspond to individual packages and are created either automatically or manually during the packing process. Although I describe the procedure using HUs, the business process can also be designed without HUs. Serial numbers, for example, or other unique sequential numbers can be used to identify packages and returned tracking numbers of UPS packages can be summarized in a text field printed on the invoice for the delivery item.
Step 2. Create a UPS shipment. If the UPS WorldShip application is
in the appropriate mode, scanning the bar code with the HU number or other unique package identifier
triggers the application to read the data from the inbound table and create a shipment with that data. The operator must
complete the shipment process and calculate the shipping charges. The system then assigns a tracking number to the package
from a predefined number range.
A UPS label is then printed and attached to the package. The system creates a record in the outbound table
that contains the same information as the inbound record along with the tracking number and shipment charges as well as
the UPS pick-up date. The basic shipment data is transferred back to R/3 to capture any potential modifications to the
data (e.g., address change, a different service type). The package is now ready for UPS pick up.
Note
UPS WorldShip allows data to be exported into the UPS outbound table either immediately as the shipment is processed or in batch once daily as a part of the end-of-day process. The first option supports strict real-time requirements, but in other instances you should consider the end-of-day process so your system reflects changes occurring the day before.
Step 3. Apply tracking number and charges. A periodically run job (e.g., every five
minutes) triggers an ABAP program that extracts newly added records in the UPS outbound table and processes the data in
R/3. This is the most specific step, and must be designed to exactly fit the requirements of your business process design.
This final step includes transferring the tracking number to the appropriate application table(s) of R/3 as well as
rolling up the shipping charges to the appropriate delivery or shipment in R/3.
The customized ABAP code must meet the specific demands of each unique R/3 system related to storage,
display, and printing tracking numbers, as well as how freight charges are handled. Typically, tracking numbers are stored
in the appropriate field in the HU, but they can also be stored in a text field at the delivery-item level if you are not
using HUs. Freight charges are captured for the delivery via freight and pricing customization in SD at the delivery-item
level.
Ali Sarraf
Ali Sarraf is the managing partner at Enowa Consulting. He has 15 years of experience as a senior consultant for SAP Business Suite applications and 20 years of IT experience. During much of his career, he has focused on helping customers optimize their logistics business processes by analyzing and explaining cause-and-effect relationships and by bringing the machine and the human sides of IT closer together.
You may contact the author at ali.sarraf@enowa.com.
If you have comments about this article or publication, or would like to submit an article idea, please contact the editor.