首页 > 数据库 >Oracle EBS开发习惯

Oracle EBS开发习惯

时间:2023-04-11 14:22:36浏览次数:51  
标签:中文 NAME FORM 习惯 FND EBS Oracle EVENT


来源  https://www.cnblogs.com/benio/archive/2010/11/11/1875274.html
近几年有幸参与了一些大开发项目的项目管理和监督工作,发现很多开发人员对一些概念或者程序的写法不是很清楚,这也包括一些高级的开发人员也会犯一些基本的错误,因此我就整理一下大家容易犯的错误,希望大家能够在写程序的时候养成良好习惯。
一、例外处理问题
有很多人喜欢在处理exception时,置为'null',应该说这是一个很不好的习惯,如果没有定义特定的exception,最起码应该把数据库的错误信息完整的报出来。 错误的写法:         EXCEPTION          WHEN OTHERS THEN            NULL;         END; 正确的写法:         EXCEPTION           WHEN OTHERS THEN              FND_FILE.PUT_LINE(FND_FILE.OUTPUT, SQLCODE);              FND_FILE.PUT_LINE(FND_FILE.OUTPUT, SQLERRM);         END;
二、并发请求的OUTPUT和LOG不分
有的同学在并发请求输出的时候,不知道如何把日志输出出来,其实很简单: 输出到请求的输出:FND_FILE.PUT_LINE(FND_FILE.OUTPUT, 'XXXXXXX'); 输出到请求的日志:FND_FILE.PUT_LINE(FND_FILE.LOG, 'XXXXXX'); 一般情况是把报表的内容输出到OUTPUT,把报表中间的debug逻辑输出到log中。
三、在EBS环境之外运行EBS程序的初始化问题
我们经常会遇到在pl/sql中运行某个视图,不能显示出数据,但是在界面上确有数据,这主要是因为视图是OU屏蔽的,因此需要你在pl/sql中初始化你的身份,初始化的程序如下,这样你就可以在任何pl/sql环境中运行EBS的视图了,例如PO_HEADERS,PO_LINES等 BEGIN    FND_GLOBAL.APPS_INITIALIZE(USER_ID => ,RESP_ID => ,RESP_APPL_ID => ); END;
四、消息的使用,我经常看到有的同学喜欢在FORM中直接使用FND_MESSAGE.DEBUG('xxxxx');来显示错误或提示信息,实际上这是非常不正确的做法。
顾名思及DEBUG是用来调试的,并不是用来进行人机交互的友好的方式,也不符合Oracle的标准用法。 Oracle的标准用法是使用FND_MESSAGE.SET_NAME( APPL_SHORT_NAME,MESSAGE_NAME) ;
一般情况下在FORM中显示出错信息使用以下代码: FND_MESSAGE.SET_NAME( APPL_SHORT_NAME,MESSAGE_NAME) ; FND_MESSAGE.ERROR ;
在PACKAGE中显示出错信息一般使用以下代码: FND_MESSAGE.SET_NAME( APPL_SHORT_NAME,MESSAGE_NAME) ; APP_EXCEPTION.RAISE_EXCEPTION ;
然后在EBS的应用开发者下定义中文和英文消息,然后提交请求"生成信息"来生成消息,使用这种方式可以适用于多语言和修改人机界面的提示信息,而不用去修改源程序。
五、EBS中客户化表结构的设计原则:
        1)必须包括一个主键,并建立相应的序列;         2)建立5个WHO字段,也就是         CREATED_BY                NUMBER         CREATION_DATE                DATE         LAST_UPDATED_BY                NUMBER         LAST_UPDATE_DATE        DATE         LAST_UPDATE_LOGIN        NUMBER         在FORM中使用属性类:CREATION_OR_LAST_UPDATE_DATE,WHO字段并不会自动地被赋值,必须自己在FORM中编写代码来完成这项工作。         EBS中提供了一个函数FND_STANDARD.SET_WHO,大家只要在FORM的BLOCK级触发器PRE-INSERT/PRE-UPDATE中进行调用即可。
        3)对于业务数据表,要考虑建立15个弹性域字段;         4)如果对于需要并发请求处理过的数据表,则需要增加跟踪请求的4个字段                 REQUEST_ID        NUMBER                 PROGRAM_APPLICATION_ID        NUMBER                 PROGRAM_ID        NUMBER                 PROGRAM_UPDATE_DATE        DATE         5)要考虑这个表是否区分OU和库存组织;
六、在FORM开发中不管是FORM级还是BLOCK级或者ITEM级的TRIGGER,不要把代码直接写到TRIGGER中,要使用PROGRAM UNIT来创建相应的TRIGGER,举例如下:
FORM级和BLOCK级可以按照下面格式在PROGRAM UNIT中创建PACKAGE: PACKAGE BODY FORM_NAME/BLOCK_NAME IS         PROCEDURE EVENT_HANDLER( EVENT  IN VARCHAR2)         IS         BEGIN           IF EVENT = 'WHEN-NEW-FORM-INSTANCE' THEN              XXXXXXXX;           ELSIF EVENT = 'PRE-FORM' THEN              XXXXXXXX;           ELSE             APP_EXCEPTION.INVALID_ARGUMENT('EVENT_HANDLER', 'EVENT', EVENT);           END IF;         END EVENT_HANDLER; END FORM_NAME/BLOCK_NAME; ITEM级的可以按照下面的格式: PACKAGE BODY BLOCK_NAME IS         PROCEDURE ITEM_NAME( EVENT  IN VARCHAR2)         IS         BEGIN           IF EVENT = 'WHEN-NEW-ITEM-INSTANCE' THEN             XXXXXXXX;           ELSE             APP_EXCEPTION.INVALID_ARGUMENT('ITEM_NAME', 'EVENT', EVENT);           END IF;         END ITEM_NAME; END BLOCK_NAME;
七、在EBS如果要使用弹性域或预警等,则必须在EBS注册TABLE及COLUMN。
此注册功能是通过调用AD_DD函数包来实现的: AD_DD.REGISTER_TABLE        注册TABLE AD_DD.REGISTER_COLUMN        注册COLUMN AD_DD.DELETE_TABLE        取消注册TABLE AD_DD.DELETE_COLUMN        取消注册COLUMN
下面是两条路线所需掌握的专业技能与参考资料
1.ERP开发人员
(1)关于Oracle ERP开发的话的一般要求掌握SOL、PL/SQL、 JDeveloper、workflow builder,report,form,discover等等!以及Oracle、DB2等相关数据库知识;(SAP的开发采用ABAP语言)         (2)ERP企业级别的开发,最好能对企业的业务流程非常熟悉,这样开发才会得心应手!         (3)Oracle ERP二次开发书籍集锦

PL/SQL部分
ü        (中文) oracle sql function.ppt
ü        (中文) PLSQL程序设计.pdf
ü        (中文) oracle_sql性能优化.doc
ü        (中文) SQL Performance Tuning.doc
Form 部分
ü        (中文)Form_Builder_Basic_Development.doc
ü        (中文) Form Builder Develop.doc
ü        (英文) Oracle Applications Developer’’s Guide.pdf
ü        (中文) PPT Form开发入门教程.ppt
ü        (中文) FlexField.ppt
ü        (中文) open_form,call_form,new_form的详细讲解及区别
ü        (中文) Oracle Applications 11i 二次开发经验总结.PDF
ü        (英文) extend_apps_forms.pdf
ü        (中文) form builder内置函数说明.pdf
ü        (英文) Trigger Execution Sequence in Oracle Forms
Report 部分
ü        (中文) CrystalReport.chm
ü        (英文) Crystal Enterprise.pdf
ü        (中文) Iss Report Builder Basic Development.doc
ü        (英文) ReportBuilder_ReferenceManual.pdf
ü        (英文) Report Training Material(PPT)
Workflow 部分
ü        (英文) workflow_student_guide.pdf
ü        (中文) OracleERPworkflow.ppt
ü        (英文) Oracle Workflow and Approval Hierarchies.ppt
ü        (英文) Oracle WorkFlow Developer’’s Guide.pdf
ü        (中文) 工作流使用说明.doc
2.ERP应用实施与咨询人员
(1)一般最好能够掌握SOL及简单PL/SQL语句。
(2)必须对企业的业务流程非常熟悉!需求分析、业务流程优化、方案设计、系统测试和上线等环节中都贯穿着我们对流程的深刻理解!
(3)对于Oracle ERP建议先看总结性的精品培训课件,而后可以参看中文联机帮助及user gudie、student guide等资料!注意多结合流程来进行。

标签:中文,NAME,FORM,习惯,FND,EBS,Oracle,EVENT
From: https://www.cnblogs.com/crrc/p/17306079.html

相关文章

  • Oracle Database 23c Free - Developer Release(免费的 Oracle 数据库开发者版本)
    免费的Oracle数据库开发者版本请访问原文链接:https://sysin.org/blog/oracle-database-23c-free/,查看最新版。原创作品,转载请保留出处。作者主页:sysin.orgOracleDatabase23cFree-DeveloperRelease是一个全新的、免费的、业界领先的Oracle数据库,全世界各个行业的企......
  • oracle分隔字符串的存储过程
    /*参数说明:输入:srcStr;待分割字串;例子:1;2;3;45;46;splitStr:分隔符功能说明:输出分隔符前字串演示:sql>setserveroutputon;sql>execsplitStr('12;34;56;',';......
  • Oracle自定义splitstr
     CREATEORREPLACEFUNCTIONSPLITSTR(P_STRINGINVARCHAR2,P_DELIMITERINVARCHAR2)RETURNSTR_SPLITPIPELINEDASV_LENGTHNUMBER:=LENGTH(P_STRING);V_STARTNUMBER:=1;V_INDEXNUMBER;BEGINWHILE......
  • python写入数据到oracle clob字段
     环境:Python:3.6.5  #!/usr/bin/envpython#coding=utf-8importos,json,urllib,datetime,shutilimporttimeimportcx_Oraclegl_mysql_server="192.168.1.118"gl_user_name="hxl"gl_password="mysql"gl_db_name="db_t......
  • 解决WebService部署时出现的“未能创建类型...”错误
       这几天正在学习WebService,但是在部署时老是出现“未能创建类型...”的错误,在IIS7.0下折腾了半天,终于成功部署,现将经验向大家奉上。   首先必须先在IIS在创建一个虚拟目录(这个就不用多说了吧),如果这个时候直接在浏览器里调用WebService就会出现......
  • Oracle常用方法
    一、截取字符串1.substr(String,int1,int2) //参数1:要截取的字符串,参数2:从第几位字符串开始截取,参数3:保留几位长度的字符串 即,将某个字符串从int1开始截取,保留int2位长度2.substr(String,int1)//参数1:要截取的字符串,参数2:从第几位字符串开始截取 即,将某个字符串从int1......
  • oracle导出impdp导入已存在表设置TABLE_EXISTS_ACTION参数
    目录oracle导出impdp导入已存在表设置TABLE_EXISTS_ACTION参数1、TABLE_EXISTS_ACTION参数说明2、使用示例oracle导出impdp导入已存在表设置TABLE_EXISTS_ACTION参数1、TABLE_EXISTS_ACTION参数说明有四个参数:skip:默认操作,跳过已存在的表不做处理。append:在原有的数据上追加......
  • oracle19c支持低版本plsql
    oracle19c支持低版本plsql1、登录服务器${ORALCE_HOME}/network/admin/sqlnet.ora增加cd${ORALCE_HOME}vi./network/admin/sqlnet.orasqlnet.ora:如没有文件,新增SQLNET.ALLOWED_LOGON_VERSION_SERVER=8SQLNET.ALLOWED_LOGON_VERSION_CLIENT=82、重启监听sqlplus/as......
  • Oracle 11g R2创建数据库时,提示:要求在当前Oracle主目录中配置监听程序 必须运行Netca
    问题描述:    Oracle11gR2创建新的数据库时出现:使用DatabaseControl配置数据库时,要求在当前Oracle主目录中配置监听程序必须运行Netca以配置监听程序,然后才能继续。或者,可以选择继续,但不使用DatabaseControl配置。==================================================......
  • EBS 各模块常用表结构
    EBS各模块常用表EBS库存(INV)模块常用表select*fromorg_organization_definitions库存组织select*frommtl_parameters组织参数select*frommtl_system_items_bwhereinventory_item_id=171andorganization_id=204物料表select*frommtl_secondary_inventori......