Thursday 29 December 2016

Custom OAF code deployment to Run edition in 12.2.X


Steps to deploy custom OAF code to run edition (assuming that custom OAF code is under $JAVA_TOP/xxcust.

1. Login into instance and source to "Run edition"
2. Go to $JAVA_TOP
3. Take backup of  customall.jar
4. Run adcgnjar command. Just enter adcgnjar and then enter
5. Provide DB apps password.
6. Then go to $ADMIN_SCRIPTS_HOME and bounce OA core on Weblogic
admanagedsrvctl.sh stop oacore_server1
admanagedsrvctl.sh start oacore_server1


BI Publisher useful snippets



1. xdofx vs xdoxslt
<?xdofx:expression?> for extended SQL functions
<?xdoxslt:expression?> for extended XSL functions.

You cannot mix xdofx statements with XSL expressions in the same context


Number-To-Word Conversion


<?xdofx:to_check_number(amount, precisionOrCurrency, caseType, decimalStyle)?>
amount  --> The number to be transformed. --> Any number

precisionOrCurrency -->  For this attribute you can specify either the precision, which is the number of digits after the decimal point; or the currency code, which governs the number of digits after the decimal point. The currency code does not generate a currency symbol in the output. --> An integer, such as 2; or a currency code, such as 'USD'.


caseType  --> The case type of the output. --> Valid values are: 'CASE_UPPER', 'CASE_LOWER', 'CASE_INIT_CAP'


decimalStyle --> Output type of the decimal fraction area. --> Valid values are: 'DECIMAL_STYLE_FRACTION1', 'DECIMAL_STYLE_FRACTION2', 'DECIMAL_STYLE_WORD'

Examples:
<?xdofx:to_check_number(12345.67, 2)?>

Twelve thousand three hundred forty-five and 67/100



<?xdofx:to_check_number(12345.67, 'USD')?>

Twelve thousand three hundred forty-five and 67/100

<?xdofx:to_check_number(12345, 'JPY', 'CASE_UPPER')?>

TWELVE THOUSAND THREE HUNDRED FORTY-FIVE

<?xdofx:to_check_number(12345.67, 'EUR', 'CASE_LOWER', 'DECIMAL_STYLE_WORDS')?>
twelve thousand three hundred forty-five and sixty-seven

2.

Download FND new messages in Other langauges


To download the FND new messages in other languages, first we need to set the NLS lang.

To get the correct setting query FND_LANGUAGES as below

Find the language from FND_LANGUAGES

select NlS_LANGUAGE||'_'||NLS_TERRITORY||'.'||NLS_CODESET from FND_LANGUAGES WHERE INSTALLED_FLAG IN ('I','B');

For example for Simplified Chinese use:

For Download:
$ export NLS_LANG="SIMPLIFIED CHINESE_CHINA.ZHS16CGB231280"

$ FNDLOAD apps/<AppsPwd> Y DOWNLOAD$FND_TOP/patch/115/import/afmdmsg.lct  FND_NEW_MESSAGES APPLICATION_SHORT_NAME=XXCUST MESSAGE_NAME=XXCUSTMSG

For Upload:
Note: Do not set any nls lang varaible.. if you have previously alter NLS LANG then disconnect from session and then do upload
FNDLOAD apps/<Apps Password> 0 Y UPLOAD $FND_TOP/patch/115/import/afmdmsg.lct XXCUSTMSG_MSG_ZHS.ldt - UPLOAD_MODE=NLS CUSTOM_MODE=FORCE WARNINGS=TRUE

Workflow translation


Introduction:

Recently came across a situation, where in we need to translate workflow notifications to Simplified Chinese. We evaluated multiple methods 

Approach 1:
  1. Set the NLS_LANG on the desktop and edit the workflow  and update messages with Chinese translations.
  2.  Remove all standard and flex fields workflow from the current definition.
  3.  Set NLS_LANG to ”SIMPLIFIED CHINESE_CHINA”.ZHS16GBK and then upload the workflow using WFLOAD

Approach 2:
1.       Open the workflow in notepad and set the language to ZHS.
2.       Remove all standard and flex fields workflow from the current definition
3.       Update message subject and body with Chinese translations
4.       Set NLS_LANG
5.       Upload the .wft using FNDLOAD and using afwfload.lct

Approach 3:
1.       Give a SQL script to update subject and body columns of WF_MESSAGES_TL for ZHS language as we are only translating the messages and not changing any other part.

Finally we went with approach 3 as it is simple and just we need notifications in simplified Chinese but instead of simple update we went with API approach. Here are the steps..


---First, set the session language:
execute immediate 'alter session set nls_language='||''''||'SIMPLIFIED CHINESE'||'''';

-- Secondly, set the WF mode and access levels..
wf_core.upload_mode := 'FORCE';
wf_core.session_level := 100;

-- Prepare tables, if we want to execute the script in patch edition
-- Need to prepare the seed tables
ad_zd_seed.prepare('WF_MESSAGES');
ad_zd_seed.prepare('WF_MESSAGES_TL');
ad_zd_seed.prepare('WF_RESOURCES');

-- Finally call the API with message

WF_LOAD.UPDATE_MESSAGE (
  p_type =>  'XXCSWF', -- wf type
  p_name => 'XXMSGNAME',  -- message name
  p_subject => l_subject,  -- message subject in Chinese
  p_body =>  l_msg_body,  -- message body in Chinese
  p_html_body => l_body ,   -- message html body in Chinese.
  p_level_error => x_level_error);

         -- Commit or rollback based on success/failure

Note: Use 
SET SERVEROUTPUT ON;
SET DEFINE OFF;
SET VERIFY OFF;

to turn off substitution.