# UPS_timeInTransit() This subprocedure calls the UPS Time in Transit API. It reads request data from UPSTTRQ and writes response data to UPSTTRS. ## Subprocedure Prototype | Field | Description | |---|---| | ` D UPS_timeInTransit... D PR N` | Returns *OFF if an error occurs during processing, *ON otherwise. | | ` D pUniqueID 15P 0` | The ID of the record in UPSTTRQ that will be used to build the request, and under which the response data will be saved in UPSTTRS. | | ` D pErrorDS LikeDS(UPS_Error)` | The data structure in which error information will be returned. | ## Example Code ### T_TT - Query Time and Transit ```rpgle *------------------------------------------------------------------------ * @Author: Kato Integrations * @Description: * This is a test program to illustrate how to call the * UPS_timeInTransit() subprocedure to determine shipping time for a * given shipping option. * * To achieve this, generate a unique ID with UPS_getUID(), and * then populate and write a record to UPSTTRQ. Then, call * UPS_timeInTransit() passing in your unique ID as well as the other * parameters shown. * * UPS_timeInTransit() will return *On if no error was encountered, * or *Off if an error occurred. If an error occurred, you should * look at the fields in ErrorDS to retrieve information about the * error. * * Otherwise, you can perform a CHAIN against the UPSTTRS physical * file, and retrieve the result fields. *------------------------------------------------------------------------ H DFTACTGRP(*NO) ACTGRP(*NEW) BNDDIR('UPSBND') OPTION(*NODEBUGIO) FUPSTTRQ UF A E K DISK Qualified FUPSTTRS IF A E K DISK Qualified /COPY QRPGLECPY,UPS // This is included for demo output purposes. D WriteToJobLog PR 10I 0 Extproc('Qp0zLprintf') D pString * Value Options(*String) D NewLine C x'15' D TTRQ DS Likerec(UPSTTRQ.RUPSTTRQ:*Output) D TTRS DS Likerec(UPSTTRS.RUPSTTRS:*Input) D ErrorDS DS LikeDS(UPS_ErrorDS_t) Inz(*LikeDS) D UniqueID S Like(UPS_UniqueID_t) /FREE reset ErrorDS; // Retrieve Unique ID used to identify this request UniqueID = UPS_getUID(); clear TTRQ; TTRQ.UID = UniqueID; // Populate this field with application name set up using WRKUPSAUTH TTRQ.UserID = 'KATO_TEST'; TTRQ.StCity = 'Washington'; TTRQ.StState = 'DC'; TTRQ.StPostCd = '20500'; TTRQ.StCntry = 'US'; TTRQ.SfCity = 'Cape Coral'; TTRQ.SfState = 'FL'; TTRQ.SfPostCd = '33914'; TTRQ.SfCntry = 'US'; TTRQ.WgtCd = 'LBS'; TTRQ.Wgt = 3.5; TTRQ.TotPkgs = 1; TTRQ.PkUpDt = %Date(); TTRQ.CurCd = 'USD'; TTRQ.Value = 75.00; write UPSTTRQ.RUPSTTRQ TTRQ; // If UPS_timeInTransit() returns *Off, an error occurred and // UPS_ErrorDS should be reviewed to determine the cause. if not UPS_timeInTransit( UniqueID : ErrorDS ); WriteToJobLog( 'API Error: ' + NewLine ); WriteToJobLog( 'Error Code: ' + %Trim(ErrorDS.Code) + NewLine ); WriteToJobLog( 'Error Severity: ' + %Char(ErrorDS.Severity) + NewLine ); WriteToJobLog( 'Error Source: ' + %Trim(ErrorDS.Pgm) + NewLine ); WriteToJobLog( 'Error Text: ' + %Trim(ErrorDS.Text) + NewLine ); exsr cleanup; return; else; setll UniqueID UPSTTRS.RUPSTTRS; if not %Found(UPSTTRS); WriteToJobLog( 'ERROR: No results found in UPSTTRS' + NewLine ); exsr cleanup; return; endif; // Read the results from UPSTTRS. There are typically multiple // records. A selection of the available fields is output by // this example program but more are availble - review the file // to see what else is available. reade UniqueID UPSTTRS.RUPSTTRS TTRS; dow not %Eof(UPSTTRS); WriteToJobLog( 'Result Record: ' + NewLine ); WriteToJobLog( 'PID: ' + %Char(TTRS.PID) + NewLine ); WriteToJobLog( 'UID: ' + %Char(TTRS.UID) + NewLine ); WriteToJobLog( 'SVCCD: ' + %Trim(TTRS.SVCCD) + NewLine ); WriteToJobLog( 'SVCDSC: ' + %Trim(TTRS.SVCDSC) + NewLine ); WriteToJobLog( 'GRNTEED: ' + %Trim(TTRS.GRNTEED) + NewLine ); WriteToJobLog( 'DOCONLY: ' + %Trim(TTRS.DOCONLY) + NewLine ); WriteToJobLog( 'AUTDTYCD: ' + %Trim(TTRS.AUTDTYCD) + NewLine ); WriteToJobLog( 'WEEKDAY: ' + %Trim(TTRS.WEEKDAY) + NewLine ); WriteToJobLog( 'ARRIVTIM: ' + %Char(TTRS.ARRIVTIM) + NewLine ); WriteToJobLog( 'ARRIVDT: ' + %Char(TTRS.ARRIVDT) + NewLine ); WriteToJobLog( 'PKUPTIM: ' + %Char(TTRS.PKUPTIM) + NewLine ); WriteToJobLog( 'PKUPDT: ' + %Char(TTRS.PKUPDT) + NewLine ); WriteToJobLog( 'TRANSBUS: ' + %Char(TTRS.TRANSBUS) + NewLine ); WriteToJobLog( 'TRANSTOT: ' + %Char(TTRS.TRANSTOT) + NewLine ); WriteToJobLog( 'CUTOFF: ' + %Char(TTRS.CUTOFF) + NewLine ); WriteToJobLog( 'RESTDAYS: ' + %Char(TTRS.RESTDAYS) + NewLine ); WriteToJobLog( 'HOLIDAYS: ' + %Char(TTRS.HOLIDAYS) + NewLine ); WriteToJobLog( 'CUSTOMS: ' + %Char(TTRS.CUSTOMS) + NewLine ); WriteToJobLog( '==========' + NewLine ); reade UniqueID UPSTTRS.RUPSTTRS TTRS; enddo; endif; exsr cleanup; return; begsr cleanup; // Always call UPS_cleanup() any time your program will terminate UPS_cleanup(); *INLR = *ON; endsr; /END-FREE ``` ## Data Structures ### UPS_Error | Field | Description | |---|---| | ` D UPS_Error DS Qualified Inz` | | | ` D Code 10A` | Error code raised by subprocedure | | ` D Severity 10I 0` | Severity of error - will be either UPS_SEVERE or UPS_INFO | | ` D Pgm 30A Varying` | Name of subprocedure that raised the error | | ` D Text 32000A Varying` | Error message text | ## Input Table Files ### UPSTTRQ.pf | Field | Description | |---|---| | `A R RUPSTTRQ` | **Record** Time in Transit Request Record | | `A UID 15P 0` | **Key** Record Unique ID | | `A USERID 30A` | UPS User ID | | `A STTOWN 30A` | Ship To Town | | `A STCITY 40A` | Ship To City | | `A STSTATE 5A` | Ship To State | | `A STPOSTCD 16A` | Ship To Postal Code/Zip | | `A STCNTRY 2A` | Ship To Country | | `A STRESDNT 1A` | Ship To Residential Indicator **Valid Values:** `T`, `Y` | | `A SFTOWN 30A` | Ship From Town | | `A SFCITY 40A` | Ship From City | | `A SFSTATE 5A` | Ship From State | | `A SFPOSTCD 16A` | Ship From Postal Code/Zip | | `A SFCNTRY 2A` | Ship From Country | | `A WGTCD 3A` | Weight Code | | `A WGT 5P 2` | Weight | | `A TOTPKGS 10P 0` | Total Number of Packages | | `A PKUPDT L` | Pickup Date | | `A CURCD 3A` | Currency Code | | `A VALUE 11P 2` | Value | | `A DOCONLY 1A` | Documents Only Indicator **Valid Values:** `T`, `Y` | | `A RESULTS 2P 0` | Max Results | ## Output Table Files ### UPSTTRS.pf | Field | Description | |---|---| | `A R RUPSTTRS` | **Record** Time in Transit Response Record | | `A PID 15P 0` | **Key** Parent Unique ID | | `A UID 15P 0` | **Key** Child Unique ID | | `A SVCCD 4A` | UPS Service Code | | `A SVCDSC 50A` | UPS Service Description | | `A GRNTEED 1A` | Guaranteed Indicator | | `A DOCONLY 1A` | Documents Only Indicator | | `A AUTDTYCD 2A` | Auto Duty Code | | `A WEEKDAY 3A` | Arrival Day of the Week | | `A ARRIVTIM T` | Arrival Time | | `A ARRIVDT L` | Arrival Date | | `A PKUPTIM T` | Pickup Time | | `A PKUPDT L` | Pickup Date | | `A TRANSBUS 2P 0` | Business Transit Days | | `A TRANSTOT 2P 0` | Total Transit Days | | `A CUTOFF T` | Customer Center Call Time | | `A RESTDAYS 2P 0` | Non-Movement Days | | `A HOLIDAYS 2P 0` | Holidays | | `A CUSTOMS 2P 0` | Days Delayed By Customs |