You are on page 1of 28

In this Document Purpos e Questions and Answers Referenc es

Applies to:
Oracle Process Manufacturing Financials - Version 11.5.10 to 12.1.3 [Release 11.5 to 12.1] Information in this document applies to any platform. All opm financials forms, reports, concurrent requests for release 11i and 12

Purpose
This document provides basic to advanced trouble shooting information which can be used by Customers, Support and Development.

Questions and Answers


This note provides troubleshooting information for OPM Financials Module (GMF). It covers the following topics. 1. How to enable Debug Log mode for Concurrent Programs 2. Find File versions, Profile values and Patches Applied 3. Find Log File and Error messages for important processes

Cost Rollup Actual Cost Lot Cost Cost Update Test Subledger Update Final Subledger Update Detailed Subledger Report

OPM Accounting Pre- Preprocessor Create Accounting

4. 5. 6. 7. 8.

Enable Forms Trace Enable Reports/Concurrent Request Trace Important Tables in 11i and R12 Important SQL queries and filtering transaction related issues Relayering in Actual Costing

For any OPM Financials issue Oracle Support request that you provide the file versions, log file with debug mode, error messages, screen shots and steps followed. 1.How to enable Debug Log mode (Enabling Debug mode in OPM Financials) These steps are same in 11i and R12 Profile name : GMF Debug Log Level Valid values : Null, 0,1,2 & 3. Set this profile value to 3 to enable the Debug mode and set it to Null in order to disable debug mode. This profile can be set from Menu -> Edit>Preferences ->Profiles->Personal Profile Values (Screen) . Query for profile name %GMF%Debug%. (The long name of the Profile may vary - it is frequently set up as "GMF: Concurrent Debug Flag"). If profile value can not be seen from menu check by logging with the responsibility of system administrator. Otherwise contact your system administrator. If this profile does not exist or if this is a new instance then this profile has to be created. Define new profile GMF_CONC_DEBUG as below: Responsibility: Application Developer. In case you do not have this responsibility ask your dba to create this profile . Before creating this profile below steps can be performed to check if the profile already exists. Profiles screen ---> View ---> Query By Example ---> Enter GMF_CONC_DEBUG in Name field Profile ---> View ---> Query By Example ---> Run If the query does not return any records, it means that this profile was not

created Use below information create a new record : Name GMF_CONC_DEBUG Application Process Manufacturing Financials User Profile Name GMF: Concurrent Debug Flag Description Debug level flag for GMF concurrent programs Active Dates Enter a date from which this profile is active 2 Find File versions, Profile values and Patches Applied These steps are same in 11i and R12. File versions and Profile values There is a concurrent request named Diagnostics: Apps Check which can be submitted in order to get the file version and profile values. Responsibility : PURCHASING Menu -> View Requests -> Submit a new concurrent request -> Diagnostics: Apps Check Parameter : Process Manufacturing Financials (In order to get multiple product versions, submit different products needed in the parameter.) If your requirement is to find only one form version , it is easier to get that from the Application . These steps are same in 11i and R12. Inside the application select the Menu: Use Help->About Oracle Applications Scroll down to find the form name Character: Use Help->Version If you have the access to the server where the Application is installed use below commands to get the executable file versions

strings $GMF_TOP/bin/GMFACOST | grep Head | sort


For a particular file version inside the executable

strings -a $GMF_TOP/bin/GMFACOST | grep -i '$Header'| grep gmafmt.lc

Finding a package version

SELECT name, text FROM all_source WHERE UPPER (NAME) LIKE UPPER ('%&EnterPackageName%') AND text LIKE '%$Header%' ORDER BY 1;

Finding a view definition

SELECT view_name,text FROM DBA_VIEWS WHERE UPPER (VIEW_NAME) LIKE UPPER ('%&EnterViewName%') ;

Note that in SQL*Plus the output from the above statement will normally be limited to 80 characters. To find out how large the view definition is:

SELECT view_name,text_length FROM DBA_VIEWS WHERE UPPER (VIEW_NAME) LIKE UPPER ('%&EnterViewName%') ;

You now need to use the SQL*Plus 'SET LONG <xxx>' command, using a number greater than the View Length returned above. So if the query returned a length of '9800':

SQL>

SET LONG 10000

... will allow the whole View Definition to be displayed, Patches Applied, File name and Version using Query

SELECT DISTINCT af.app_short_name, af.filename, afv.version, afv.creation_date, apr.end_date, aap.patch_name, aprb.applied_flag, aprb.success_flag, a.bug_number FROM ad_patch_drivers apd, ad_applied_patches aap, ad_patch_runs apr, ad_patch_run_bugs aprb, ad_patch_run_bug_actions aprba, ad_file_versions afv, ad_files af, ad_bugs a

WHERE apd.patch_driver_id = apr.patch_driver_id AND apd.applied_patch_id = aap.applied_patch_id AND apr.patch_run_id = aprb.patch_run_id AND aprb.patch_run_bug_id = aprba.patch_run_bug_id AND aprba.patch_file_version_id = afv.file_version_id AND afv.file_id = af.file_id AND a.bug_id = aprb.bug_id AND af.app_short_name = 'GMF' ORDER BY 4 DESC;
Note that the above query tells you which patches have specifically been applied on your environment, but it does not list those fixes which came onto your system implicitly when (for example) a consolidated patch or a Patch Set was applied. When given a list of patches, you can find out which ones are already applied on your system (either explicitly or implicitly) with the following script:

SELECT BUG_NUMBER FROM AD_BUGS WHERE BUG_NUMBER IN ('<Patch1>', '<Patch2>', ...);


When a value of Bug_Number is returned by this script, that patch is already applied and does not need to be applied again. 3 Find Log File and Error messages a) Cost Rollup These steps are same in 11i and R12. Navigation : Standard Costs -> Cost Rollup If the issue is happening for a particular item, run the cost rollup only for that item/product so that we have less data. When a new request is submitted (screen name Start Cost Rollup), note down the reference number. Once the request is completed go to the same Cost Rollup screen and click on the Cancel button. It will show Cost Rollup screen. Query for the reference number. Process status can be found from the Menu ->Actions->Process Status in the same screen. Error messages can be found from the Menu ->Actions->View Error messages. If the error messages are less use the Menu -> Export to get the error messages to an excel file.

If there are more error messages please use the below query to get the error messages from the database using the reference number.

SELECT line_no, message_comment, rollup_id FROM cm_rlup_msg WHERE rollup_id = &EnterRefNo ORDER BY line_no;
Log file for the Cost Rollup can be seen from Menu -> View Requests ->Find Requests -> Search for the Cost Rollup Concurrent request. Click on the button View Log to get the log file. If the log file is very large, note down the concurrent request id from the Concurrent Requests screen and use it in below query to find the location.

SELECT phase_code, status_code, description, completion_text, logfile_name FROM fnd_concurrent_requests WHERE request_id =&EnterRequestID;
If you do not have the access to this file , request your dba to provide the above log file. Provide the file version (Apps Check), log file and error messages for issues related to this. b) Actual Cost Process These steps are same in 11i and R12. Navigation : Actual Costs-> Actual Cost Process When a new request is submitted (screen name Start Actual Cost Process), note down the reference number. Once the request is completed go to the same Actual Cost Process screen and click on the Cancel button. It will show Actual Cost Process screen. Query for the reference number. Process status can be found from the Menu ->Actions->Process Status. Error messages can be found from the Menu ->Actions->View Error messages If the error messages are less use the Menu -> Export to get the error messages.

If there are more error messages please use the below query to get the error messages from the database using the reference number.

SELECT line_no, message_comment FROM cm_acer_msg WHERE acproc_id = &EnterRefNo ORDER BY line_no;
Log file for the Actual Cost Process can be seen from Actual Cost Process screen by clicking on View Log button. Same log file can be seen from Concurrent request screen. Menu -> View Requests ->Find Requests -> Search for the Actual Cost Process Concurrent request. Click on the button View Log to get the log file. If the log file is very large, note down the request id from the Requests screen and use it in below query to find the location.

SELECT phase_code, status_code, description, completion_text, logfile_name FROM fnd_concurrent_requests WHERE request_id =&EnterRequestID;
If you do not have the access to this file , request your dba to provide the above log file. Provide the file version (Apps Check), log file and error messages for issues related to this. c) Lot Cost Process These steps are same in 11i and R12. Navigation : Lot Costs-> Lot Cost Process If the issue is happening for a particular lot or item run the Lot cost process only for that so that we have less data. When a new request is submitted (screen Lot Cost Process), note down the reference number. Process status can not be found from the same screen. It can be found only from the view requests screen. Also there is no view error messages for this process. Log file for the Lot Cost Process can be seen from Concurrent request screen. Menu -> View Requests ->Find Requests -> Search for the Lot Cost Process Concurrent request. Click on the button View Log to get the log file.

If the log file is very large, note down the request id from the Requests screen and use it in below query to find the location.

SELECT phase_code, status_code, description, completion_text, logfile_name FROM fnd_concurrent_requests WHERE request_id =&EnterRequestID;
Please note that in case of lot costing unlike other requests there is no error message which can be found from Menu ->Actions- >View Error messages. If you do not have the access to this file , request your dba to provide the above log file. Provide the file version (Apps Check) and log file for issues related to this. d) Cost Update 11i Navigation : MAC-> Cost Update R12 Navigation : Cost Update When a new request is submitted (screen name Start Cost Update Process), note down the reference number. Once the request is completed go to the same Cost Update screen and click on the Cancel button. It will show Cost Update Process screen. Query for the reference number. Process status can be found from the Menu ->Actions->Process Status. Error messages can be found from the Menu ->Actions->View Error messages If the error messages are less use the Menu -> Export to get the error messages. If there are more error messages please use the below query to get the error messages from the database using the reference number.

SELECT line_no, message_comment FROM cm_cupd_msg WHERE cuproc_id = &EnterRefNo ORDER BY line_no;
Log file for the Cost Update can be seen from Menu -> View Requests ->Find Requests -> Search for the Cost Update

Concurrent request. Click on the button View Log to get the log file. If the log file is very large, note down the request id from the Requests screen and use it in below query to find the location.

SELECT phase_code, status_code, description, completion_text, logfile_name FROM fnd_concurrent_requests WHERE request_id =&EnterRequestID;
If you do not have the access to this file , request your dba to provide the above log file. Provide the file version (Apps Check), log file and error messages for issues related to this. e) Test Subledger Update This is available only in 11i Navigation : MAC-> Subledger Update -> Menu -> Actions ->Test Subledger Update If the issue is happening for a particular source, run this process only for that source. If this is happening for a particular date restrict this using the Post Start Date and Post End Date. This helps to have the smallest data that replicates the issue. When a new request is submitted (screen name Test Subsidiary Ledger Update ), note down the reference number. Once the request is completed go to the same Subsidiary Ledger Update screen and click on the Cancel button. It will show Subsidiary Ledger Update Process screen. Query for the reference number. Process status can be found from the Menu ->Actions->Process Status. Error messages can be found from the Menu ->Actions->View Error messages If the error messages are less use the Menu -> Export to get the error messages. If there are more error messages please use the below query to get the error messages from the database using the reference number.SELECT line_no, message_text

FROM gl_mesg_tbl WHERE reference_no = &EnterRefNo ORDER BY line_no;


Log file for the Test Subledger can be seen from Concurrent request screen. Menu -> View Requests ->Find Requests -> Search for the Test Subledger Concurrent request. Click on the button View Log to get the log file. If the log file is very large, note down the request id from the Requests screen and use it in below query to find the location.

SELECT phase_code, status_code, description, completion_text, logfile_name FROM fnd_concurrent_requests WHERE request_id =&EnterRequestID;
If you do not have the access to this file , request your dba to provide the above log file. Provide the file version (Apps Check), log file, report output if any and error messages for issues related to this. f) Final Subledger Update Update This is available only in 11i Navigation : MAC-> Subledger Update -> Menu -> Actions -> Subsidiary Ledger Update. Please note that Final mode can be run only once. So please check if the same issue happens when the Test Subledger is run. If the issue is happening for a particular source, run this process only for that source. If this is happening for a particular date restrict this using the Post Start Date and Post End Date. This helps to have the smallest data that replicates the issue. When a new request is submitted (screen name Subsidiary Ledger Update ), note down the reference number. Once the request is completed go to the same Subsidiary Ledger Update screen and click on the Cancel button. It will show Subsidiary Ledger Update Process screen. Query for the reference number. Process status can be found from the Menu ->Actions->Process Status. Error messages can be found from the Menu ->Actions->View Error messages

If the error messages are less use the Menu -> Export to get the error messages. If there are more error messages please use the below query to get the error messages from the database using the reference number.

SELECT line_no, message_text FROM gl_mesg_tbl WHERE reference_no = &EnterRefNo ORDER BY line_no;
Log file for the Lot Cost Process can be seen from Concurrent request screen. Menu -> View Requests ->Find Requests -> Search for Final Subledger request. Click on the button View Log to get the log file. If the log file is very large, note down the request id from the Requests screen and use it in below query to find the location.

SELECT phase_code, status_code, description, completion_text, logfile_name FROM fnd_concurrent_requests WHERE request_id =&EnterRequestID;
If you do not have the access to this file , request your dba to provide the above log file. Provide the file version (Apps Check), log file, report output if any and error messages for issues related to this. g) Detailed Subledger Report These steps are same in 11i and R12. Navigation : Menu-> View Requests ->Submit New Request -> Detailed Subledger Report Please note that reference number is taken from the Subledger update (11i) or from OPM Accounting preprocessor (R12). If this is happening for a particular date restrict this using the Start Date and End Date. This helps to have the smallest data that replicates the issue. Log file for the Detailed Subledger Report can be seen from Concurrent

request screen. Menu -> View Requests ->Find Requests -> Search for Detailed Subledger Report . Click on the button View Log to get the log file. If the log file is very large, note down the request id from the Requests screen and use it in below query to find the location.

SELECT phase_code, status_code, description, completion_text, logfile_name FROM fnd_concurrent_requests WHERE request_id =&EnterRequestID;
If you do not have the access to this file , request your dba to provide the above log file. Provide the file version (Apps Check), log file and report output for issues related to this. h) OPM Accounting Pre- Preprocessor This is available only in R12 Navigation : OPM Accounting Preprocessor If the issue is happening for a particular source, run this process only for that source. If this is happening for a particular date restrict this using the Post Start Date and Post End Date. This helps to have the smallest data that replicates the issue. When a new request is submitted (screen name Start OPM Accounting Preprocessor), note down the reference number. Once the request is completed go to the same OPM Accounting Preprocessor screen and click on the Cancel button. It will show Subsidiary Ledger Update Process screen. Query for the reference number. Process status can be found from the Menu ->Actions->Process Status. Error messages can be found from the Menu ->Actions->View Error messages If the error messages are less use the Menu -> Export to get the error messages. If there are more error messages please use the below query to get the error messages from the database using the reference number.

SELECT line_no, message_text FROM gl_mesg_tbl

WHERE reference_no = &EnterRefNo ORDER BY line_no;


Log file for the Test Subledger can be seen from OPM OPM Accounting Preprocessor screen or from the Concurrent request screen. Menu -> View Requests ->Find Requests -> Search for the Test Subledger Concurrent request. Click on the button View Log to get the log file. If the log file is very large, note down the request id from the Requests screen and use it in below query to find the location.

SELECT phase_code, status_code, description, completion_text, logfile_name FROM fnd_concurrent_requests WHERE request_id =&EnterRequestID;
If you do not have the access to this file , request your dba to provide the above log file. Provide the file version (Apps Check), log file and error messages for issues related to this. i) Create Accounting This is available only in R12 Navigation : Menu-> View Requests ->Submit New Request -> Create Accounting Please note that Final mode can be run only once. Make sure to run this in Draft mode and when everything works fine or when you are ready to run the Final run then only run the Create Accounting in Final Mode. If the issue is happening for a particular process category(source), run this process only for that process category(source). If this is happening for a particular date restrict this using End Date. This helps to have the smallest data that replicates the issue. GMF Debug Log mode has no effect on Create Accounting since this is part of SLA which is common for most of the Financial Modules. In order to enable the Debug we need to set FND profile values , run create accounting and run the sql query. Profile values SLA: Enable Diagnostics : Yes

FND: FND: FND: FND:

Debug Debug Debug Debug

Log Log Log Log

Enabled : Yes Filename: Blank Level: Statement Module: %

These profile values can be set from Menu -> Edit->Preferences ->Profiles>Personal Profile Values (Screen) . Query for %FND%Debug%. If profile values can not be seen from menu check by logging with the responsibility of system administrator. Otherwise contact your system administrator. Submit Request Run the Create Accounting Program and note down the request id Query Debug output Run the below query in order to get the debug log and upload in excel format:

SELECT SUBSTR (module, 1, 70), message_text, timestamp, log_sequence FROM fnd_log_messages msg, fnd_log_transaction_context tcon WHERE msg.transaction_context_id = tcon.transaction_context_id AND tcon.transaction_id = &EnterRequestID ORDER BY log_sequence;
If you do not have the access to this file , request your dba to provide the above log file. Provide the file version (Apps Check), log file, report output and query output for issues related to this. 4.Enable Forms Trace These steps are same in 11i and R12. Navigation : Menu -> Help ->Diagnostics -> Trace >Trace with Binds and Waits When you enable the trace you can see a Note window which shows the location and file name. Note down this or take a screen shot. This is needed if there is any APP-FND error messages or issues related to List of values or items is reported. Enable the trace just before the error message occurs and Disable the trace once the error message is displayed. Trace can be disabled

by Menu-> Help ->Diagnostics -> Trace >No Trace Location of trace files (always on the database server) can be found from below query:

SELECT * FROM v$parameter WHERE name = 'user_dump_dest';


The following alternative query shows the location and name of trace files relating to currently-running Applications sessions and processes:

SELECT DISTINCT par.value || '/' || LOWER(instance_name) || '_ora_' || spid || '.trc' "Trace file name" , par.value "Location" FROM v$instance i, v$process p, v$mystat m, v$session s, v$parameter par WHERE s.paddr = p.addr AND s.sid = m.sid AND par.name='user_dump_dest';
Performance Related issues a) Tkprof and Trace If this trace is related to a performance issue please ask your dba to generate the tkprof file using below command.

tkprof <filename.trc> <output_filename> sys=no explain=apps/<password> sort='(prsela,exeela,fchela)' print=10


b) Tables Analyzed

SELECT owner, MIN(last_analyzed), MAX(last_analyzed) FROM dba_tables WHERE owner = 'GMF' GROUP BY owner ;
c) Current SQL that is being executed

SELECT r.request_id, sq.sql_text, ss.SID, ss.SERIAL# FROM fnd_concurrent_requests r, v$process p, v$session ss, V$SQLAREA sq ,sq.buffer_gets,ss.last_call_et WHERE r.request_id IN (&EnterRequestID) AND p.spid = r.oracle_process_id AND ss.paddr = p.addr AND sq.ADDRESS = ss.SQL_ADDRESS;
Run the above every 5 minutes or certain intervals based on how much time the total request takes. This way it is easy to find out which statement is taking time. In some cases we may need to enable trace for the whole application session. Follow below note for the complete steps Note 170223.1 Title: Trace 11i Bind Variables - Profile Option: Initialization SQL Statement - Custom In some cases we may need to enable the trace for the user in order to capture all the SQL statements executed. Follow below note for the complete steps Note 309798.1 How to Trace Specific Database Users to Collect Full DML Statements Executed If you do not have the access to these files , request your dba to provide the above files. Provide the file version (Apps Check), trace file ,log file and screen shots for issues related to this. If this is related to performance issue provide the file version (Apps Check), trace file , log file , tkprof ,table analyzed output and Sql executed output. 5.Enable Reports/Concurrent Request Trace These steps are same in 11i and R12. Responsibility -> System Administrator ->Program ->Define - >Query for the Program name. Enable the checkbox for trace in the Request. And save the record. Once the report is submitted and completed use the same responsibility and navigation path as above to deselect the checkbox. This will disable the trace. Reports/Concurrent request trace location

SELECT fcr.request_id "Request ID" , fcp.user_concurrent_program_name "Program" , p1.value "Trace Directory" , '*' ||fcr.oracle_process_id ||'*.trc' "Trace File format" , fcp.language FROM fnd_concurrent_requests fcr , v$parameter p1 , fnd_concurrent_programs_tl fcp WHERE p1.name ='user_dump_dest' AND fcr.concurrent_program_id = fcp.concurrent_program_id AND fcr.program_application_id = fcp.application_id AND fcr.request_id=&EnterRequestID;
For example if trace_id = 123567 is returned, then in the user_dump_dest use the following to find the trace file

-ls -al *123567*


If this trace is related to a performance issue please perform the same steps mentioned in the Performance Related issues under Enable Forms Trace. If you do not have the access to these files , request your dba to provide the above files. Provide the file version (Apps Check), trace file and log file for issues related to this. If this is related to performance issue provide the file version (Apps Check), trace file, tkprof,table analyzed and Sql executed. Concurrent request time taken

select fcr.request_id request_id, fcp.concurrent_program_name conc_prog, fcpt.user_concurrent_program_name user_conc_prog, fcr.argument_text, fcr.actual_start_date start_date, fcr.actual_completion_date completion_date, round (fcr.actual_completion_date - fcr.actual_start_date, 5) aa, substr (numtodsinterval (( fcr.actual_completion_date - fcr.actual_start_d ate ), 'day' ), 12, 8 ) DURATION, fcr.status_code, fcr.completion_text from fnd_concurrent_programs fcp,

fnd_concurrent_programs_tl fcpt, fnd_concurrent_requests fcr where fcr.concurrent_program_id = fcp.concurrent_program_id and fcr.program_application_id = fcp.application_id and fcr.concurrent_program_id = fcpt.concurrent_program_id and fcr.program_application_id = fcpt.application_id and fcp.concurrent_program_name = '&EnterShortname' -For example 'GMFACOST' and rownum < 100 order by trunc ( ( (fcr.actual_completion_date fcr.actual_start_date) / (1 / 24) ) * 60 ) desc;
Modify the above where condition to suit your needs. 6.Important Tables in 11i and R12 a) Important tables in 11i IC_TRAN_PND: Inventory Transaction Table having pending and completed transactions. Transaction types( PORC, XFER, OMSO, PROD ) IC_TRAN_CMP: Inventory Transaction Table having completed transactions.Transaction types( CREI, ADJI, CRER, ADJR, TRNI, TRNR, PIPH ) IC_PERD_BAL: Inventory Table having ending balance, consumption, and yield for closed inventory periods. IC_ITEM_MST_B : Item definition table having all information relating to an item, such as lot/sublot control, unit of measure information, and all class and type designations. CM_CMPT_DTL: Item Cost Component Details table CM_ACST_LED:-Stores all actual costing transactions GL_ITEM_CST: Cost Details Header table used by Subledger Process. GL_ITEM_DTL: Cost component detail information for the item. GL_SUBR_TST: Subsidiary ledger test run work Table GL_SUBR_LED: Actual Subledger Table or GL subsidiary ledger data GL_SUBR_STA : Subsidiary ledger update state.

GL_MESG_TBL: Subledger Error Message Table b) Important tables in R12 MTL_MATERIAL_TRANSACTIONS : Inventory Transaction table which stores a record of every material transaction or cost update performed in Inventory. MTL_TRANSACTION_LOT_NUMBERS: Inventory table which stores lot number information for transactions in the MTL_MATERIAL_TRANSACTIONS table. GMF_MATERIAL_LOT_COST_TXNS : Transaction history table for lot costs MTL_SYSTEM_ITEMS: Item definition table having all information relating to an item, such as lot/sublot control, unit of measure information, and all class and type designations. GMF_PERIOD_BALANCES : OPM Financials table having ending balance, consumption, and yield for closed inventory periods. GL_ITEM_CST: Cost details header table used by Subledger Process. GL_ITEM_DTL: Cost component detail information for the item. GMF_PERIOD_STATUSES :OPM Financails table which stores the OPM Financials period status. CM_MTHD_MST: table stores the cost methods defined GMF_INCOMING_MATERIAL_LAYERS : Layer data for consumption transactions in case of actual cost. GMF_LOT_COST_ADJUSTMENTS: Lot Cost Adjustments header table GMF_XLA_EXTRACT_HEADERS: SLA Extract Headers table which stores transactions for process inventory organizations are processed and all the necessary data for accounting are stored in this table. When the SLA accounting program is run data from this table is extracted for creation of journal entries in SLA. GMF_XLA_EXTRACT_LINES: SLA Extract Lines table which stores transactions for process inventory organizations are processed and all the necessary data for accounting are stored in this table. When the SLA accounting program is run data from this table is extracted for creation of journal entries in SLA.

RCV_TRANSACTIONS: stores historical information about receiving transactions XLA_AE_HEADERS: SLA table stores subledger journal entries. There is a oneto-many relationship between accounting events and journal entry headers. XLA_AE_LINES:SLA table stores the subledger journal entry lines. There is a one-to-many relationship between subledger journal entry headers and subledger journal entry lines. XLA_DISTRIBUTION_LINKS: SLA table stores the link between transactions and Subledger journal entry lines.

7.Important Queries and filtering transaction related issues Please make sure to provide the output in excel format with column headers . For multiple query outputs make sure to take each output in a separate worksheet. These queries are same in 11i and R12 Invalid objects

SELECT object_name, object_type, owner, status FROM all_objects WHERE status = 'INVALID';
Application Instance name, Apps Level, Host Name, Version and database version

SELECT DISTINCT fat.application_name "Application", f.application_id, a.host_name, a.instance_name, a.instance_number,a.VERSION "Db Version", fpg.release_name "Apps Level", f.patch_level "Family Pack" FROM v$instance a, fnd_product_installations f, fnd_product_groups fpg,fnd_application_tl fat WHERE f.application_id = fat.application_id AND f.application_id IN (550, 551, 552, 553, 554, 555, 556, 709, -- for OPM -- related Products 50, 0, 101, 178, 222, 401, 724, 722, 660, 201, 665, 200) ORDER BY 1;

a) Narrow down transaction related issues in 11i Identify the TRANS_ID from material transactions Inquiry screen in Inventory or provide the ITEM_ID or BATCH_ID in order to narrow down the data Trans_id can be found from Opm Inventory Responsibility under the transaction inquiry Item_id can be found using below query

select item_id from ic_item_mst where item_no = '&EnterItemNo';


Batch_id can be found from below query

select * from gme_batch_header where batch_no = '&EnterBatchno';

select * from ic_tran_pnd where trans_id in (&EnterTransID);


or select * from ic_tran_pnd where item_id in (&EnterItemID); or select * from ic_tran_pnd where item_id in (&EnterBatchID); or select itp.* from ic_tran_pnd itp, ic_item_mst iim where itp.item_id = iim.item_id and item_no in ('&EnterItemNo'); select * from ic_tran_cmp where trans_id in (&EnterTransID); or select * from ic_tran_cmp where item_id in (&EnterItemID); or select itp.* from ic_tran_cmp itc, ic_item_mst iim where itc.item_id = iim.item_id and item_no in ('&EnterItemNo'); select * from cm_mthd_mst where cost_mthd_code = '&EnterCostMethod'; select * from cm_acst_led where item_id in (&EnterItemID); select * from cm_brdn_dtl where item_id= &EnterItemID; select cmp.* from cm_cmpt_mst cmp, cm_cmpt_dtl c where cmp.cost_cmpntcls_id = c.cost_cmpntcls_id and c.calendar_code = '&Entercost_calendar_code' and c.period_code = '&Entercost_period_code' and c.cost_mthd_code = '&Entercost_mthd_code' ; select * from cm_cmpt_dtl where calendar_code = '&Entercost_calendar_code' and period_code = '&Entercost_period_code' and cost_mthd_code = '&Entercost_mthd_code' ; select * from cm_cldr_hdr a where a.calendar_code= '&entercost_calendar_code'

select * from cm_cldr_dtl where calendar_code = '&Entercost_calendar_code' and period_code = '&Entercost_period_code' select * from perd_bal where fiscal_year = &EnterFiscalYear and period = &EnterPeriod; select * from gl_item_cst where calendar_code = '&Entercost_calendar_code' and period_code = '&Entercost_period_code' and cost_mthd_code = '&Entercost_mthd_code' ; or select * from gl_item_cst where item_id in (&EnterItemID); select * from gl_item_dtl where itemcost_id in ( select itemcost_id from gl_item_cst where calendar_code = '&Entercost_calendar_code' and period_code = '&Entercost_period_code' and cost_mthd_code = '&Entercost_mthd_code' ); or select * from gl_item_dtl where itemcost_id in ( select itemcost_id from gl_item_cst WHERE item_id in (&EnterItemID ) ); select * from gme_material_details where batch_id = &enterbatchid; select * from gl_subr_led where reference_no=&EnterReferenceNo; or select * from gl_subr_led where doc_id = &EnterBatchID and doc_type='PROD' select * from gl_subr_tst reference_no=&EnterReferenceNo; or select * from gl_subr_tst where doc_id = &EnterBatchID and doc_type='PROD' select * from gl_subr_sta where reference_no=&enterreferenceno; or select * from gl_subr_sta where doc_id = &EnterBatchID and doc_type='PROD' b) Narrow down transaction related issues in R12 Identify the TRANSACTION_ID from material transactions Inquiry screen in Inventory or provide the INVENTORY_ITEM_ID or BATCH_ID in order to narrow down the data

Transaction_id can be found from Opm Inventory Responsibility under the transaction inquiry. Inventory_Item_id can be found using below query

select distinct inventory_item_id from mtl_system_items where segment1 like '%EnterItemName%' ;


Batch_id can be found from below query

select * from gme_batch_header where batch_no = &EnterBatchno ;


Enter the transaction dates or the item number and find out the transaction_id

select msi.segment1 itemno, mmt.inventory_item_id, mmt.transaction_id, mmt.transaction_date, mmt.creation_date, sysdate from mtl_material_transactions mmt, mtl_system_items msi where mmt.inventory_item_id = msi.inventory_item_id and mmt.transaction_date between '&EnterFromDate' and '&EnterToDate' or msi.segment1 = '&EnterItemNo';

select * from mtl_material_transactions mmt where mmt.transaction_id in (&EnterTransactionID); or select mmt.* from mtl_material_transactions mmt, mtl_system_items msi where mmt.inventory_item_id = msi.inventory_item_id and mmt.transaction_date between '&EnterFromDate' and '&EnterToDate' or msi.segment1 = '&EnterItemNo'; or select * from mtl_material_transactions mmt where mmt.transaction_batch_id in (&EnterBatchID);

select * from mtl_transaction_lot_numbers mtln where mtln.transaction_id in (&EnterTransactionID);

OPM Preprocessor Data Run Accounting Preprocessor only for a particular source and small date range to include transaction. This way we have the smallest data that replicates the issue. Reference number is the number obtained while running OPM preprocessor. a)

select * from gmf_xla_extract_headers where reference_no = '&EnterReference_no' and transaction_id in ( &EnterTransaction id)
b)

select * from gmf_xla_extract_lines where header_id in ( select header_id from gmf_xla_extract_headers where reference_no = '&reference_no' and transaction_id in ( &EnterTransaction id) );
c)

select line_no,message_text from gl_mesg_tbl where (reference_no='&reference_no') Order by line_no;


d ) If this issue is related with Inter org transfer or receiving transaction

select * from rcv_transactions where transaction_id in (select rcv_transaction_id from mtl_material_transactions where transaction_id in (&transaction id));
Also provide the debug log output file from the OPM preprocessor. Create Accounting Data SLA Events

select dl.* from xla_events dl, gmf_xla_extract_headers geh where dl.event_id = geh.event_id and dl.application_id = 555 and geh.entity_code = '&EnterEntity' --For Example INVENTORY and geh.transaction_date <= TO_DATE('01/02/08 23:59:59','dd/mm/yyhh24:mi:ss')
SLA Headers

select ah.* from xla_ae_lines al,xla_ae_headers ah, xla_distribution_links dl, gmf_xla_extract_headers geh, gmf_xla_extract_lines gel where al.ae_header_id = dl.ae_header_id and ah.ae_header_id = al.ae_header_id and ah.application_id = 555 and al.ae_line_num = dl.ae_line_num and dl.event_id = geh.event_id and dl.application_id = 555 and dl.source_distribution_type = geh.entity_code and dl.source_distribution_id_num_1 = gel.line_id and geh.header_id = gel.header_id and geh.event_id = gel.event_id and geh.entity_code = '&EnterEntity' --For Example INVENTORY and geh.transaction_date <= TO_DATE('01/02/08 23:59:59','dd/mm/yyhh24:mi:ss')
SLA Lines

select al.* from xla_ae_lines al, xla_ae_headers ah, xla_distribution_links dl, gmf_xla_extract_headers geh, gmf_xla_extract_lines gel where al.ae_header_id = dl.ae_header_id and ah.ae_header_id = al.ae_header_id and ah.application_id = 555 and al.ae_line_num = dl.ae_line_num and dl.event_id = geh.event_id and dl.application_id = 555 and dl.source_distribution_type = geh.entity_code and dl.source_distribution_id_num_1 = gel.line_id and geh.header_id = gel.header_id and geh.event_id = gel.event_id and geh.entity_code = '&EnterEntity' --For Example INVENTORY

and geh.transaction_date <= TO_DATE('01/02/08 23:59:59','dd/mm/yyhh24:mi:ss')


SLA Distributions

select dl.* from xla_ae_lines al, xla_ae_headers ah, xla_distribution_links dl, gmf_xla_extract_headers geh, gmf_xla_extract_lines gel where al.ae_header_id = dl.ae_header_id and ah.ae_header_id = al.ae_header_id and ah.application_id = 555 and al.ae_line_num = dl.ae_line_num and dl.event_id = geh.event_id and dl.application_id = 555 and dl.source_distribution_type = geh.entity_code and dl.source_distribution_id_num_1 = gel.line_id and geh.header_id = gel.header_id and geh.event_id = gel.event_id and geh.entity_code = '&EnterEntity' --For Example INVENTORY and geh.transaction_date <= TO_DATE('01/02/08 23:59:59','dd/mm/yyhh24:mi:ss')
Accounting entries based on source

SELECT geh.pm_batch_number, geh.header_id, geh.event_class, geh.event_type, gel.line_number, gel.journal_line_type, cost_cmpntcls_id, cost_analysis_code, gel.component_cost, DECODE(SIGN(gel.base_amount), 1, gel.base_amount,0,0,'') BASE_DR_AMOUNT, DECODE(SIGN(gel.base_amount),-1,ABS (gel.base_amount),0,0,'') BASE_CR_AMOUNT, DECODE(SIGN(gel.trans_amount), 1,gel.trans_amount,0,0,'') TRANS_DR_AMOUNT,DECODE(SIGN(gel.trans_amount),1,ABS(gel.trans_amount),0,0,'') TRANS_CR_AMOUNT,gel.entered_amount,gel.accounted_amount, FND_FLEX_EXT.GET_SEGS('SQLGL', 'GL#',gcc.chart_of_accounts_id,gcc.code_combination_id) account,GL_FLEXFIELDS_PKG.get_concat_description( gcc.chart _of_accounts_id, gcc.code_combination_id) acc_description FROM gl_code_combinations gcc,xla_ae_lines al, xla_distribution_links dl,gmf_subledger_rep_v geh, gmf_xla_extract_lines gel

WHERE gcc.code_combination_id = al.code_combination_id AND al.ae_header_id = dl.ae_header_id AND al.ae_line_num = dl.ae_line_num AND dl.event_id = geh.event_id AND dl.application_id = 555 AND dl.source_distribution_type = geh.entity_code AND dl.source_distribution_id_num_1 = gel.line_id AND geh.header_id = gel.header_id AND geh.event_id = gel.event_id AND geh.entity_code ='&EntityCode';
For eg entity code can be 'REVALUATION' or 'PRODUCTION' or 'PURCHASING' or 'ORDERMANAGEMENT' or 'INVENTORY' -- For batch replace the last line above with below information

AND geh.entity_code = 'PRODUCTION' AND geh.pm_batch_number = '&batch_number'


--If you know the transaction_id use replace the last line with below

AND geh.transaction_id in &EnterTransaction id)


Also provide the FND debug log for the create accounting. Identify transaction Type Transaction type can be identified from the transaction id or item no or inventory item id or date range by using below query.

SELECT msi.segment1 ItemName, mtt.transaction_type_name TxnType, mmt.* FROM mtl_material_transactions mmt, mtl_transaction_types mtt , mtl_system_items msi WHERE mtt.transaction_type_id = mmt.transaction_type_id AND mtt.transaction_action_id = mmt.transaction_action_id AND mmt.organization_id=msi.organization_id AND mtt.transaction_source_type_id = mmt.transaction_source_type_id AND mmt.inventory_item_id = msi.inventory_item_id AND mmt.transaction_id in (&EnterTransactionID);
or modify the where condition with item_no or inventory_item_id ( msi.segment1 = '&EnterItemNo' or mmt.inventory_item_id=

&EnterInventoryItemID) or modify the where condition with date range and mmt.transaction_date between '&EnterFromDate' and '&EnterToDate' 8.Relayering in Actual Cost Process This concept was introduced from 11.5.10 in order to resolve inventory reconciliation issues with batches crossing the period. Prior to this when a batch is completed in one costing period and closed in the next or subsequent period, quantities yielded in prior periods were counted twice in the PMAC cost calculation. This change assumes that the users are creating batch transactions in sequence (like, first consumptions followed by yields) and no back dated transactions. In Release 11i manually-executed scripts were used to recreate the Layer data, but in Release 12 and later a Concurrent Request is provided to make it easier to include the recreation of the Layer Cost data in your routine Period End tasks. Long Name:- GMF Recreate Batch / Period Layers Short Name :- GMFRLAYR Parameters:- Legal Entity, Cost Calendar , Period, Cost Type, Batch Organization & Batch Number This concurrent request is available from patch 8523022 (R12)/ patch 9078278 (R12.1.1) onwards. This can be run for a particular period, batch or organization. Run this request when the batch cost is not correct or when there is transactions which are out of sequence. Actual cost process has to be run after this concurrent request and costs can be verified from the item costs screen. Running this 'Recreate' program can not do any harm, so it is recommended that it should be routinely run before Actual Costing in order to remove potential data problems (for example where the details of a Batch have been updated but these changes are not reflected in the Layer Cost tables. For details of this program in 11i, please refer the following Note - New concurrent program GMF Recreate Batch / Period Layers to recreate layer date for production batches Document ID 1068301.1