Showing posts with label Oracle ERP. Show all posts
Showing posts with label Oracle ERP. Show all posts

Jan 13, 2009

Difference between Oracle Applications 11i and R12

Database:
Database Version in 11i (11.5.9 & 11.5.10) was 9i Rel 2 where as in Release 12 its 10g R2 (10.2.0.2)

Application Tier:
Tech Stack in Application Tier consist of iAS(1.0.2.2.2) &
Developer 6i (Forms & Reports 8.0.6) but in Applications R12 it is build on Fusion Middleware (10g Web Server and 10g Forms & Reports)

Sub component in Application Tier
A) HTTP Server or Web Server in R12 is Version 10.1.3 which is built on Apache version 1.3.34. In apps 11i it is Version 1.0.2.2.2 built on Apache Version 1.3.19
B) Jserv in apps 11i is replaced by OC4J (mod_jserv is replaced by mod_oc4j)
C) Forms Version 6i in Apps 11i is replaced by Forms 10.1.2.0.2 in R12
D) Reports Version 6i in Apps 11i is replaced by Reports 10.1.2.0.2 in R12
E)
JDBC version is changed from version 9 in apps 11i to version 10.2.0 in Apps R12
F) modplsql or mod_pls is removed from Apps R12 (
What will happen to my mod plsql applications- coming soon* )
G)
Java processes use JDK/JRE version 1.5.0 in R12 against JDK version 1.3.1 or 1.4.2 in Apps 11i
H) For various environment variable changes check below picture


I) New top INSTANCE_TOP added in Release 12 for configuration and log files















From: http://www.dba-oracle.com/t_applications_differences_11i_12.htm

Nov 4, 2008

Oracle ERP JVM

1. What is JVM ?
JVM acronym for Java Virtual Machine which executes instructions generated by Java compiler. So user click on any Self Service Request or any program which uses Java, then Apache forwards this request to mod_jserv (mod_oc4j in 10g AS) & mod_jserv caters this request with help of JVM.

2. How to increase No. Of JVM's
So lets start with CONTEXT file under $APPL_TOP/admin (xml file) which is of pattern $SID_$HOSTNAME.xml
There are two important lines in CONTEXT file which will help you in understanding JVM

# jvm_options oa_var="s_jvm_options" osd="Solaris" -verbose:gc -Xmx512M -Xms128M -XX:MaxPermSize=128M -XX:NewRatio=2 -XX:+PrintGCTimeStamps -XX:+UseTLAB /jvm_options

-Verbose:gc means JVM is configured to print output when gc(Garbage Collector) runs.
Xmx is maximum memory allocated to JVM in above example its 512 MB.
Xms is JVM will start with this much memory i.e. 128 MB.
# Now Check another line in 11i Context file like oacore_nprocs oa_var="s_oacore_nprocs"2/oacore_nprocs
Which means that there are two JVM's for OACore Group. Usually default its 1 JVM in my Instance I changed it to 2, to cater huge Self Service users in my case.
# In Context File
disco_nprocs oa_var="s_disco_nprocs" osd="Solaris" 1 /disco_nprocs Sets 1 JVM Process for Discoverer.
oacore_nprocs oa_var="s_oacore_nprocs" 1 /oacore_nprocs Sets 1 JVM for for OACoreGroup
Similarly , s_forms_servlet_nprocs & s_xmlsvcs_nprocs for Forms & XML Services resp.
These Groups are defined in configuration file for Jserv i.e. jserv.conf under $IAS_ORA/Apache/Jserv/conf ; like
ApJServGroup OACoreGroup
ApJServGroup DiscoGroup
ApJServGroup FormsGroup
ApJServGroup XmlSvcsGrp

3. Sizing Apps JVM
As by now you might be aware that there are four JVM Groups, OACoreGroup,DiscoGroup, FormsGroup & XMLsvcsGrp ( FromsGroup JVM's disabled by defualt as forms run on Socket rather servlets) so thumb rule in Apps is 1 JVM with default settings per 100 Users for OACoreGroup, so if you have 1000 users with five middle tiers you can configure 2 JVM on each middle tier i.e. 2*5*100=1000 Users.

- No more than 100 active users per JVM/OC4J instance
- There should be no more than 1 active JVM/OC4J instance per CPU (ideally, there should be 1 JVM per 2 CPUs)
- Watch out for available memory (make sure that you have enough memory to run all the configured JVMs/OC4J instances without swapping)

refer from http://www.teachmeoracle.com/jvm.html

Aug 14, 2008

Cannot select data from Oracle ERP database??

Trying select data from Oracle ERP database view, but no data return ??
Oracle client regedit At "HK Local Machine " -> Software -> Oracle -> "Oraclehome"-> NLS_LANG must "ENG" , Ex. "AMERICAN_AMERICA.ZHT16BIG5"

Jun 6, 2008

Workflow Notification Mailer-Unable to make a network connection

Workflow Notification Mailer cannot start.
Status is "System Deactivated".
Edit Workflow Mailer found "Validation error occurred. Please check indicated fields below".
Inbound EMail Account-> "Unable to make a network connection" message.
Solution:
1.Telnet mail server IP with port 25(SMTP) and 143(IMAP),found 143 port cannot use.
2.Found Exchange Server "IMAP4 service status abnormal.
3.Restart mail server , everything is ok.

Jun 5, 2008

XML Report Publisher Fails With java.lang.OutOfMemoryError

-- Notes:315477.1 XML publisher version 5.6.1
1. Under FO Processing:(XML Publisher Administrator -> data define 或 template 處)
1.1 "Use XML Publisher's XSLT processor" set to true
1.2 "Enable scalable feature of XSLT processor" set to true
1.3 Restart "Output Post Processor" concurrent process.
2. If got another error like 'post process(response) time out' then
2.1 Increase "Output Post Processor" concurrent process number.
2.2 Enlarge the profile "Concurrent:OPP Response Timeout" , "Concurrent:OPP Process Timeout" values.

Jun 3, 2008

oracle ERP - JInitiator 異常解決方式

use jre15012
# copy jre15012.exe to $COMN_TOP/html
# $OA_HTML/bin/appsweb__.cfg file.

[J15012]
connectMode=socket
serverPort=9000
sun_plugin_classid=clsid:CAFEEFAC-0015-0000-0012-ABCDEFFEDCBA
sun_plugin_version=1.5.0_12
sun_plugin_url=http://xxx.com.tw:8000/OA_HTML/jre15012.exe
sun_plugin_mimetype=application/x-java-applet;jpi-version=1.5.0_12
sun_plugin_legacy_lifecycle=false
plugin=jdk
;


Modify the " ICX: Forms Launcher " profile at user level.

http://xxx.com.tw:8000/dev60cgi/f60cgi?config=J15012

May 7, 2008

Good and usful Metalink Notes

Applications FAQ

Cloning

Oracle Applications with Oracle Application Server

  • Note Id:186981.1 Oracle Application Server with Oracle E-Business Suite Release 11i FAQ
  • Note Id:233436.1 Installing Oracle Application Server 10g with Oracle E-Business Suite Release 11i
  • Note Id:295606.1 Oracle Application Server 10g with Oracle E-Business Suite Release 11i Troubleshooting

Autoconfig

Oracle Applications and Database

  • Note Id:362203.1 Oracle Applications Release 11i with Oracle 10g Release 2 (10.2.0)

Oracle Applications And RAC

DMZ with Oracle Applications

SSL and Oracle Applications
  • Note Id:123718.1 11i: A Guide to Understanding and Implementing SSL for Oracle Applications
  • Note Id:340178.1 Enabling SSL with Oracle Application Server 10g and the E-Business Suite
Shared APPL_TOP and Application Tier Filesystem

Patching

Concurrent Managers

System Administration

Troubleshooting

Portal with Oracle Applications

Single Sign-On with Oracle Applications

Jan 30, 2008

Oracle ERP ECO import customization

Import ECO component

1. /*********** Issue a ECO to Add Assembly a new component content with designator and substitute component. *********/
--- ECO Header
insert into ENG_ENG_CHANGES_INTERFACE(ORGANIZATION_CODE,CHANGE_NOTICE,ENG_CHANGES_IFCE_KEY,CHANGE_ORDER_TYPE,APPROVAL_STATUS_NAME,APPROVAL_LIST_NAME, STATUS_NAME,TRANSACTION_TYPE,ECO_DEPARTMENT_NAME,REASON_CODE,PLM_OR_ERP_CHANGE)
values('IM','AA','852','Finshed good','Approved',NULL,'Scheduled','CREATE',NULL,NULL,'ERP');

--- Assembly Primary record
INSERT INTO ENG_REVISED_ITEMS_INTERFACE(ORGANIZATION_CODE,CHANGE_NOTICE,ENG_REVISED_ITEMS_IFCE_KEY,REVISED_ITEM_NUMBER,NEW_ITEM_REVISION,SCHEDULED_DATE,TRANSACTION_TYPE)
values('IM','AA','852','TESTBOM','007',to_date('2007/04/14','YYYY/MM/DD'),'CREATE');

--- Assembly primary record specify component information
INSERT INTO BOM_INVENTORY_COMPS_INTERFACE(ORGANIZATION_CODE,CHANGE_NOTICE,BOM_INVENTORY_COMPS_IFCE_KEY,ASSEMBLY_ITEM_NUMBER,OLD_EFFECTIVITY_DATE,EFFECTIVITY_DATE,OLD_OPERATION_SEQ_NUM,COMPONENT_ITEM_NUMBER,OPERATION_SEQ_NUM,TRANSACTION_TYPE,ACD_TYPE,ITEM_NUM,COMPONENT_QUANTITY,REVISED_ITEM_NUMBER,NEW_REVISED_ITEM_REVISION)
values('IM','AA','852','TESTBOM',null,to_date('2007/04/14','YYYY/MM/DD'),40,'114-2514',40,'CREATE',1,200,1,'TESTBOM','007');

---- Specify Component designator location
insert into BOM_REF_DESGS_INTERFACE(ORGANIZATION_CODE,CHANGE_NOTICE,BOM_REF_DESGS_IFCE_KEY,ASSEMBLY_ITEM_NUMBER,NEW_REVISED_ITEM_REVISION,OPERATION_SEQ_NUM,EFFECTIVITY_DATE,COMPONENT_ITEM_NUMBER,TRANSACTION_TYPE,ACD_TYPE,COMPONENT_REFERENCE_DESIGNATOR)
values('IM','AA','852','TESTBOM','007',40,to_date('2007/04/14','YYYY/MM/DD'),'114-2514','CREATE',1,'ZZZ');

---- Specify substitute component information
insert into BOM_SUB_COMPS_INTERFACE(ORGANIZATION_CODE,CHANGE_NOTICE,BOM_SUB_COMPS_IFCE_KEY,ASSEMBLY_ITEM_NUMBER,NEW_REVISED_ITEM_REVISION,COMPONENT_ITEM_NUMBER,SUBSTITUTE_COMP_NUMBER,EFFECTIVITY_DATE,OPERATION_SEQ_NUM,ACD_TYPE,TRANSACTION_TYPE)
values('IM','AA','852','TESTBOM','007','114-2514','143-6185',to_date('2007/04/14','YYYY/MM/DD'),40,1,'CREATE')

commit;


2. ---- Create import function to process eco record.
function eco_import_api(P_identity_key varchar2)
return varchar2
as
l_eco_rec Eng_Eco_Pub.Eco_Rec_Type;
l_eco_revision_tbl Eng_Eco_Pub.Eco_Revision_Tbl_Type;
l_revised_item_tbl Eng_Eco_Pub.Revised_Item_Tbl_Type;
l_rev_component_tbl Bom_Bo_Pub.Rev_Component_Tbl_Type;
l_sub_component_tbl Bom_Bo_Pub.Sub_Component_Tbl_Type;
l_ref_designator_tbl Bom_Bo_Pub.Ref_Designator_Tbl_Type;
l_rev_operation_tbl Bom_Rtg_Pub.rev_operation_tbl_Type;
l_rev_op_resource_tbl Bom_Rtg_Pub.rev_op_resource_Tbl_Type;
l_rev_sub_resource_tbl Bom_Rtg_Pub.rev_sub_resource_Tbl_Type;
l_return_status VARCHAR2(1);
l_msg_count NUMBER;
l_msg_data VARCHAR2(2000);
l_Error_Table Error_Handler.Error_Tbl_Type;
l_Message_text VARCHAR2(2000);
p_test_tag varchar2(100);
CURSOR c_eco_rec IS
SELECT *
FROM eng_eng_changes_interface
WHERE eng_changes_ifce_key like p_test_tag;
CURSOR c_eco_rev IS
SELECT *
FROM eng_eco_revisions_interface
WHERE eng_eco_revisions_ifce_key like p_test_tag;
CURSOR c_rev_items IS
SELECT *
FROM eng_revised_items_interface
WHERE eng_revised_items_ifce_key like p_test_tag;
CURSOR c_rev_comps IS
SELECT *
FROM bom_inventory_comps_interface
WHERE bom_inventory_comps_ifce_key like p_test_tag;
CURSOR c_sub_comps IS
SELECT *
FROM bom_sub_comps_interface
WHERE bom_sub_comps_ifce_key like p_test_tag;
CURSOR c_ref_desgs IS
SELECT *
FROM bom_ref_desgs_interface
WHERE bom_ref_desgs_ifce_key like p_test_tag;
i number;
BEGIN
-- Query all the records and call the Private API.
p_test_tag :=P_identity_key;
FOR eco_rec IN c_eco_rec
LOOP
l_eco_rec.eco_name := eco_rec.change_notice;
l_eco_rec.organization_code := eco_rec.organization_code;
l_eco_rec.change_type_code := eco_rec.change_order_type;
l_eco_rec.status_NAME := eco_rec.status_NAME; --HARRY
l_eco_rec.eco_department_name := eco_rec.eco_department_name;
l_eco_rec.priority_code := eco_rec.priority_code;
l_eco_rec.approval_list_name := eco_rec.approval_list_name;
l_eco_rec.approval_status_NAME := eco_rec.approval_status_NAME; --HARRY
l_eco_rec.reason_code := eco_rec.reason_code;
l_eco_rec.eng_implementation_cost := eco_rec.estimated_eng_cost;
l_eco_rec.mfg_implementation_cost := eco_rec.estimated_mfg_cost;
l_eco_rec.cancellation_comments:=eco_rec.cancellation_comments;
l_eco_rec.requestor := eco_rec.requestor_USER_NAME; --HARRY
l_eco_rec.description := eco_rec.description;
l_eco_rec.transaction_type := eco_rec.transaction_type;
l_eco_rec.PLM_OR_ERP_CHANGE := 'ERP';
END LOOP;
-- Fetch ECO Revisions
i := 1;
FOR rev IN c_eco_rev
LOOP
l_eco_revision_tbl(i).eco_name := rev.change_notice;
l_eco_revision_tbl(i).organization_code:= rev.organization_code;
l_eco_revision_tbl(i).revision := rev.revision;
l_eco_revision_tbl(i).new_revision := rev.new_revision;
l_eco_revision_tbl(i).comments := rev.comments;
l_eco_revision_tbl(i).transaction_type := rev.transaction_type;
i := i + 1;
END LOOP;
-- Fetch revised items
i := 1;
FOR ri IN c_rev_items
LOOP
l_revised_item_tbl(i).eco_name := ri.change_notice;
l_revised_item_tbl(i).organization_code := ri.organization_code;
l_revised_item_tbl(i).revised_item_name := ri.revised_item_number;
l_revised_item_tbl(i).New_Revised_Item_Rev_Desc:=ri.descriptive_text; -- By brian
l_revised_item_tbl(i).new_revised_item_revision := ri.new_item_revision;
l_revised_item_tbl(i).start_effective_date := ri.scheduled_date;
l_revised_item_tbl(i).alternate_bom_code := ri.alternate_bom_designator;
l_revised_item_tbl(i).status_type := ri.status_type;
l_revised_item_tbl(i).mrp_active := ri.mrp_active;
l_revised_item_tbl(i).earliest_effective_date := ri.early_schedule_date;
l_revised_item_tbl(i).use_up_item_name := ri.use_up_item_number;
l_revised_item_tbl(i).use_up_plan_name := ri.use_up_plan_name;
l_revised_item_tbl(i).disposition_type := ri.disposition_type;
l_revised_item_tbl(i).update_wip := ri.update_wip;
l_revised_item_tbl(i).cancel_comments := ri.cancel_comments;
-- l_revised_item_tbl(i).change_description := ri.descriptive_text; --By Brian
l_revised_item_tbl(i).transaction_type := ri.transaction_type;
i := i + 1;
END LOOP;
-- Fetch revised components
i := 1;
FOR rc IN c_rev_comps
LOOP
l_rev_component_tbl(i).eco_name := rc.change_notice;
l_rev_component_tbl(i).organization_code:= rc.organization_code;
l_rev_component_tbl(i).revised_item_name := rc.assembly_item_number;
l_rev_component_tbl(i).new_revised_item_revision := rc.NEW_REVISED_ITEM_REVISION;
l_rev_component_tbl(i).start_effective_date := rc.effectivity_date;
l_rev_component_tbl(i).disable_date := rc.disable_date;
l_rev_component_tbl(i).operation_sequence_number := rc.operation_seq_num;
l_rev_component_tbl(i).component_item_name := rc.component_item_number;
l_rev_component_tbl(i).alternate_bom_code := rc.alternate_bom_designator;
l_rev_component_tbl(i).acd_type := rc.acd_type;
l_rev_component_tbl(i).old_effectivity_date := rc.old_effectivity_date;
l_rev_component_tbl(i).old_operation_sequence_number := rc.old_operation_seq_num;
l_rev_component_tbl(i).item_sequence_number := rc.item_num;
l_rev_component_tbl(i).quantity_per_assembly := rc.component_quantity;
l_rev_component_tbl(i).planning_percent := rc.planning_factor;
l_rev_component_tbl(i).projected_yield := rc.component_yield_factor;
l_rev_component_tbl(i).include_in_cost_rollup :=rc.include_in_cost_rollup;
l_rev_component_tbl(i).wip_supply_type := rc.wip_supply_type;
l_rev_component_tbl(i).so_basis := rc.so_basis;
l_rev_component_tbl(i).optional := rc.optional;
l_rev_component_tbl(i).mutually_exclusive := rc.mutually_exclusive_options;
l_rev_component_tbl(i).check_atp := rc.check_atp;
l_rev_component_tbl(i).shipping_allowed := rc.shipping_allowed;
l_rev_component_tbl(i).required_to_ship := rc.required_to_ship;
l_rev_component_tbl(i).required_for_revenue := rc.required_for_revenue;
l_rev_component_tbl(i).include_on_ship_docs := rc.include_on_ship_docs;
l_rev_component_tbl(i).quantity_related := rc.quantity_related;
l_rev_component_tbl(i).supply_subinventory := rc.supply_subinventory;
l_rev_component_tbl(i).location_name := rc.location_name;
l_rev_component_tbl(i).minimum_allowed_quantity := rc.low_quantity;
l_rev_component_tbl(i).maximum_allowed_quantity := rc.high_quantity;
-- l_rev_component_tbl(i).component_remarks :=rc.component_remarks;
--rc.component_remarks; --HARRY
l_rev_component_tbl(i).comments := rc.component_remarks; --HARRY
l_rev_component_tbl(i).transaction_type := rc.transaction_type;
i := i + 1;
END LOOP;
-- Fetch substitute component records
i := 1;
FOR sc IN c_sub_comps
LOOP
l_sub_component_tbl(i).eco_name := sc.change_notice;
l_sub_component_tbl(i).organization_code:= sc.organization_code;
l_sub_component_tbl(i).revised_item_name := sc.assembly_item_number;
l_sub_component_tbl(i).start_effective_date := sc.effectivity_date;
l_sub_component_tbl(i).new_revised_item_revision := sc.NEW_REVISED_ITEM_REVISION; -- Add by Brian ;
l_sub_component_tbl(i).component_item_name := sc.component_item_number;
l_sub_component_tbl(i).alternate_bom_code := sc.alternate_bom_designator;
l_sub_component_tbl(i).substitute_component_name := sc.substitute_comp_number;
l_sub_component_tbl(i).acd_type := sc.acd_type;
l_sub_component_tbl(i).operation_sequence_number := sc.operation_seq_num;
l_sub_component_tbl(i).substitute_item_quantity := sc.substitute_item_quantity;
l_sub_component_tbl(i).transaction_type := sc.transaction_type;
i := i + 1;
END LOOP;
-- Fetch reference designators
i := 1;
FOR rd IN c_ref_desgs
LOOP
l_ref_designator_tbl(i).eco_name := rd.change_notice;
l_ref_designator_tbl(i).organization_code := rd.organization_code;
l_ref_designator_tbl(i).revised_item_name := rd.assembly_item_number;
l_ref_designator_tbl(i).start_effective_date := rd.effectivity_date;
-- l_ref_designator_tbl(i).new_revised_item_revision := null;
l_ref_designator_tbl(i).new_revised_item_revision := rd.NEW_REVISED_ITEM_REVISION; -- Add by Brian
l_ref_designator_tbl(i).operation_sequence_number := rd.operation_seq_num;
l_ref_designator_tbl(i).component_item_name := rd.component_item_number;
l_ref_designator_tbl(i).alternate_bom_code := rd.alternate_bom_designator;
l_ref_designator_tbl(i).reference_designator_name := rd.component_reference_designator;
l_ref_designator_tbl(i).acd_type := rd.acd_type;
l_ref_designator_tbl(i).ref_designator_comment := rd.ref_designator_comment;
l_ref_designator_tbl(i).new_reference_designator := rd.new_designator;
l_ref_designator_tbl(i).transaction_type := rd.transaction_type;
i := i + 1;
END LOOP;
Eng_Globals.G_WHO_REC.org_id := 103;
Eng_Globals.G_WHO_REC.user_id := 1115;
Eng_Globals.G_WHO_REC.login_id := -1;
Eng_Globals.G_WHO_REC.prog_appid := 703;
Eng_Globals.G_WHO_REC.prog_id:= NULL;
Eng_Globals.G_WHO_REC.req_id := NULL;
fnd_global.apps_initialize
( user_id => Eng_Globals.G_WHO_REC.user_id
, resp_id => 50250
, resp_appl_id => Eng_Globals.G_WHO_REC.prog_appid
);
-- dbms_output.put_line('Comes before process_eco call');
-- Call the private API
Eng_Eco_PUB.Process_Eco
( p_api_version_number => 1.0
, x_return_status => l_return_status
, x_msg_count => l_msg_count
, p_eco_rec => l_eco_rec
, p_eco_revision_tbl => l_eco_revision_tbl
, p_revised_item_tbl => l_revised_item_tbl
, p_rev_component_tbl => l_rev_component_tbl
, p_sub_component_tbl => l_sub_component_tbl
, p_ref_designator_tbl => l_ref_designator_tbl
, x_eco_rec => l_eco_rec
, x_eco_revision_tbl => l_eco_revision_tbl
, x_revised_item_tbl => l_revised_item_tbl
, x_rev_component_tbl => l_rev_component_tbl
, x_sub_component_tbl => l_sub_component_tbl
, x_ref_designator_tbl => l_ref_designator_tbl
, x_rev_operation_tbl => l_rev_operation_tbl
, x_rev_op_resource_tbl => l_rev_op_resource_tbl
, x_rev_sub_resource_tbl => l_rev_sub_resource_tbl
);

COMMIT;
return '';
exception
when others then
return ' Import ECO exception' || SQLCODE || SQLERRM;
END eco_import_api;