Thanks to visit codestin.com
Credit goes to www.scribd.com

0% found this document useful (0 votes)
1K views3 pages

Oracle Get Table Values

The document describes an issue where GET_TABLE_VALUE and HR_GET_TABLE_VALUE functions in a fast formula return no values when trying to access a user defined table (UDT). The symptoms, cause, and solution are provided. The cause is that the row name passed to the function is the translated display name, not the internal base name needed. The solution is to use the base row name from the UDT metadata tables instead of the display name.

Uploaded by

hamdy20017121
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
1K views3 pages

Oracle Get Table Values

The document describes an issue where GET_TABLE_VALUE and HR_GET_TABLE_VALUE functions in a fast formula return no values when trying to access a user defined table (UDT). The symptoms, cause, and solution are provided. The cause is that the row name passed to the function is the translated display name, not the internal base name needed. The solution is to use the base row name from the UDT metadata tables instead of the display name.

Uploaded by

hamdy20017121
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 3

Fusion HCM Extract: GET_TABLE_VALUE and HR_GET_TABLE_VALUE To

Return No Values in Fast Formula (Doc ID 2471153.1) Bottom

In this Document

Symptoms
Cause
Solution

APPLIES TO:

Oracle Fusion Global Payroll - Version 11.12.1.0.0 and later


Oracle Fusion Global Payroll Cloud Service - Version 11.13.20.07.0 and later
Information in this document applies to any platform.

SYMPTOMS

In an HMC extract accessing a UDT in a fast formula to find an email address. Defined extract
columns to contain the table, column and row names and pass these to the fast formula. The
formula uses these in a call to HR_GET_TABLE_VALUE, but the default value is always
returned. Tried changing contexts in the fast formula to the LDG of the UDT and calling
GET_TABLE_VALUE instead, but the results are the same.

Formula is below:

DEFAULT FOR DATA_ELEMENTS IS EMPTY_TEXT_TEXT

INPUTS ARE DATA_ELEMENTS (TEXT_TEXT)

L_TABLE_NAME = DATA_ELEMENTS['TABLE_NAME']
L_ROW_NAME = DATA_ELEMENTS['ROW_NAME']
L_COLUMN_NAME = DATA_ELEMENTS['COLUMN_NAME']
L_OUTPUT_VAL = ' '

L_DATA = ess_log_write('TABLE_NAME ::'+L_TABLE_NAME )


L_DATA = ess_log_write('ROW_NAME ::'+L_ROW_NAME )
L_DATA = ess_log_write('COLUMN_NAME ::'+L_COLUMN_NAME)

CHANGE_CONTEXTS(ENTERPRISE_ID=1)
(
L_OUTPUT_VAL = HR_GET_TABLE_VALUE ( L_TABLE_NAME, L_COLUMN_NAME, L_ROW_NAME, 'N/A' )
)
L_DATA = ESS_LOG_WRITE( ' Return Value : '+L_OUTPUT_VAL)

rule_value = L_OUTPUT_VAL

RETURN rule_value

Logs show that the correct values are passed to the formula:

TABLE_NAME ::JF_EMAIL_LIST_TO_CLOUD
ROW_NAME ::CASS_NOTIFICATION_EXTRACT
COLUMN_NAME ::RECIPIENT
Return Value : N/A

This query returns the expected value:

SELECT value
FROM ff_user_column_instances_f
WHERE user_row_id IN (SELECT user_row_id
FROM ff_user_rows_vl
WHERE user_table_id IN (SELECT user_table_id
FROM ff_user_tables
WHERE base_user_table_name = 'JF_EMAIL_LIST_TO_CLOUD')
AND row_name = 'CASS_NOTIFICATION_EXTRACT')
AND user_column_id IN (SELECT user_column_id
FROM ff_user_columns
WHERE user_table_id IN (SELECT user_table_id
FROM ff_user_tables
WHERE base_user_table_name = 'JF_EMAIL_LIST_TO_CLOUD')
AND BASE_USER_COLUMN_NAME = 'RECIPIENT');

CAUSE

The values for the GET_TABLE_VALUE call are:

BASE_USER_TABLE_NAME - table name


BASE_USER_COLUMN_NAME - column name
ROW_LOW_RANGE_OR_NUMBER - row name

In this instance, the row name has the problem. There is no


ROW_LOW_RANGE_OR_NUMBER value which is passed to the fomrula. When values are
updated from the User Interface (UI), the base / internal value is not changed e.g.
ROW_LOW_RANGE_OR_NUMBER, only the translated / display value is changed e.g.
ROW_NAME. This is the standard implementation.
SOLUTION

Use the following query:

select ff_user_tables_pkg.get_table_value(NNNNNNNNNNNNNNNNNN, to_date('2018-11-


05', 'YYYY-MM-DD'), 'JF_EMAIL_LIST_TO_CLOUD', 'RECIPIENT',
'CASS_NOTIFICATION_EXTRACT', 'N/A')
from dual;

Also, the following query:

select u.base_user_table_name
, u.user_table_name
, u.range_or_match
, u.user_key_units
, c.base_user_column_name
, c.user_column_name
, c.data_type
, r.row_low_range_or_name
, r.row_name
, to_char(r.effective_start_date, 'YYYY-MM-DD') esd
, to_char(r.effective_end_date, 'YYYY-MM-DD') eed
, r.row_high_range
, to_char(uci.effective_start_date, 'YYYY-MM-DD') uci_esd
, to_char(uci.effective_end_date, 'YYYY-MM-DD') uci_eed
from ff_user_tables_vl u
, ff_user_columns_vl c
, ff_user_rows_vl r
, ff_user_column_instances_f uci
where u.base_user_table_name = 'YOUR UDT'
and u.legislative_data_group_id = NNNNNNNNNNNNNNNNN
and c.user_table_id = u.user_table_id
and r.user_table_id = u.user_table_id
and uci.user_column_id = c.user_column_id
and uci.user_row_id = r.user_row_id
and (r.effective_start_date between
uci.effective_start_date and uci.effective_end_date or
r.effective_end_date between
uci.effective_start_date and uci.effective_end_date);

You might also like