Friday, 19 August 2011

Oracle Shipping Exceptions.

There might be scenarios when Pick Release is called you are not sure where to look into. WSH_EXCEPTIONS does the job of tracking the exceptions.

select * from WSH_EXCEPTIONS

Thursday, 18 August 2011

Some More Date functions.

What day is today in SQL?
select to_char(sysdate,'DAY') from dual;

Extending the above to other useful stuff:

First Day of the Month:
select to_char(trunc(sysdate,'MM'),'DAY' ) from dual;
Ex: WEDNESDAY

Last Day of the Month:
select to_char(last_day(sysdate),'DAY') from dual;
Ex: MONDAY

Last Date of the month :
select last_day(sysdate) from dual
Ex:31-Aug-2011

Add time to a given date:
select to_char(trunc(last_day(sysdate))+13/12,'DD-MON-RRRR HH24:MI:SS') from dual

Thursday, 2 December 2010

Difference between two dates in hourss/minutes in Oracle.

We might need to find the difference between two dates columns in hours/minutes in many cases. Like trying to find how long some program ran. One of the easiest way I found is

SELECT to_number( to_char(to_date('1','J') +
(date1 - date2), 'J') - 1) days,
to_char(to_date('00:00:00','HH24:MI:SS') +
(date1 - date2), 'HH24:MI:SS') time
FROM mytable;

Progress Order Workflow Automatically.


In any implementation using Order Management Order Workflow errors are a common thing. And once you customize the workflow the pain is even more.

Sometimes the workflow gets struck of the errors might be momentary. Something like some service not available at that point of time.

Oracle provides a Automatic Retry program which does the job for us.

Program Name : Retry Activities in Error
Item Type : In most cases this happens to be 'OM Order Line' or else select accordingly.
Mode : Preview/Execute ,select Execute to commit/action the retry.

Wednesday, 13 January 2010

Get Timestamp value for Date column in SQL Developer.

Most of the times when we look at Oracle tables from SQL Developer we find that the date column not showing the timestamp. A simple way to get the timestamp is using CAST function.

select cast(last_update_date as timestamp) from table_name.

Also there is a mroe easier way to see the timestamp in the settings of SQL Developer.

Tools -> Preferences -> Database -> NLS Parameters
Change Date Format to DD-MON-RRRR HH24:MI:SS

:)

Thursday, 7 January 2010

SQL Loader Failing to load more than 255 characters.

This was one of my observations.

We had a sample dataload file defined as :

,mesg_type CHAR "ltrim(rtrim(:mesg_type))"
,mesg_priority CHAR "ltrim(rtrim(:mesg_priority))"
,mesg_description CHAR "ltrim(rtrim(:mesg_description))"


The program was failing to load the data when the length of the field is more than 254 characters.

Issue:
NOTE: The default data type in SQL*Loader is CHAR(255). To load character fields longer than 255 characters, code the type and length in your control file. By doing this, Oracle will allocate a big enough buffer to hold the entire column, thus eliminating potential "Field in data file exceeds maximum length" errors. Example:

Fix:
,mesg_description CHAR(4000) "ltrim(rtrim(:mesg_description))"

Tuesday, 13 October 2009

FRM-40654 Record Has Been Updated. Requery Block To See Change

One of the root causes which can cause this issue is the trailing spaces in the columns.

my case this was po_vendor_sites_all table.

Those who have Metalink can refer : 429469.1

and for the rest I am copying it here.

-----------
Symptoms

Unable to update fields on vendor sites form due to error:

FRM-40654: Record has been updated. Requery block to see change.

.
Cause
Leading or trailing spaces in various columns on the PO_VENDOR_SITES_ALL table

Leading or Trailing Spaces script available via Note 229407.1 confirmed there were leading or
trailing spaces in several columns in this table.

Solution

The update you need to run is as follows:

Update po_vendor_sites_all
set VENDOR_SITE_CODE = rtrim(VENDOR_SITE_CODE)
where VENDOR_SITE_CODE != rtrim(VENDOR_SITE_CODE);

Update po_vendor_sites_all
set VENDOR_SITE_CODE = ltrim(VENDOR_SITE_CODE)
where VENDOR_SITE_CODE !=ltrim(VENDOR_SITE_CODE);

Commit;

You might only get the ltrim portion updating rows for one column and the rtrim for others or some
of both. Don't worry about the numbers - it's best to run both ltrim and rtrim to be sure you have
caught all the offending spaces.

Then just repeat the script for the offending columns. In your case this would be:

ADDRESS_LINE1
ADDRESS_LINE2
ADDRESS_LINE3
ADDRESS_LINE4
AREA_CODE
PHONE
FAX
VAT_REGISTRATION_NUM
REMITTANCE_EMAIL
----------

An easier way to do the same is by running the DIAGNOSTIC TOOLS which for me is the best way rather than going around with all the columns which is cumbersome.

Steps:

To execute the test, do the following:

1. Login to Oracle E-Business Suite
2. Select the responsibility "Oracle Diagnostics Tool" (see Note 358831.1 for details)
3. Select application "Applications DBA" from the "Application" list of values
4. Click the "Advanced" tab
5. Scroll down to group "Data Collection"
6. Select test name "Trailing and Leading Spaces"

This will list the problematic data in the given Object which is straight forward than the previous approach.

Reference: Metalink : 229407.1

Integrations Lead - Lessons learnt

 Integrations have been my passion for a while but like anything tech there is no credit given when things go right but always heaps of pres...