ORACLE EBS FORM利用模板开发步骤

合集下载

oracle form编译

oracle form编译

oracle form编译标题:Oracle Form编译的工作流程概述:Oracle Form编译是一个重要的过程,它确保了应用程序的正确性和可靠性。

本文将介绍Oracle Form编译的工作流程,从源代码到可执行文件的生成。

一、源代码准备在开始编译前,首先需要准备好源代码。

这些源代码通常包括Form 模块、库文件和引用的对象等。

确保源代码的完整性和正确性,以避免编译过程中出现错误。

二、编译环境设置在进行编译之前,需要设置好合适的编译环境。

这包括指定编译器的路径、设置编译选项和参数等。

确保编译环境的配置正确,以避免编译过程中出现问题。

三、编译过程1. 语法检查:编译器首先会对源代码进行语法检查,以确保代码的正确性。

它会检查代码中是否存在语法错误、拼写错误等。

如果发现错误,编译器会给出相应的错误提示。

2. 语义检查:在通过语法检查后,编译器会进行语义检查。

它会检查代码中是否存在语义错误、逻辑错误等。

例如,检查变量的类型是否匹配、函数的参数是否正确等。

如果发现错误,编译器会给出相应的错误提示。

3. 优化处理:在通过语义检查后,编译器会对代码进行优化处理。

优化处理旨在提高代码的执行效率和性能。

它会对代码进行重构、删除冗余代码、优化算法等。

通过优化处理,可以使生成的可执行文件更加高效。

4. 生成可执行文件:在完成语法检查和优化处理后,编译器会将源代码转换成可执行文件。

这个可执行文件可以在Oracle Form运行时环境中被执行。

生成的可执行文件包括了应用程序的逻辑和界面等。

四、错误处理在编译过程中,可能会出现各种错误。

编译器会给出相应的错误提示,以帮助开发人员找出错误并进行修复。

开发人员需要根据错误提示,逐个解决错误,直到编译成功。

五、测试和调试在编译成功后,需要对生成的可执行文件进行测试和调试。

测试可以帮助开发人员验证应用程序的功能和正确性。

调试可以帮助开发人员找出和修复应用程序中的错误和问题。

六、总结本文介绍了Oracle Form编译的工作流程,从源代码准备到可执行文件生成的整个过程。

ORACLE EBS FORM二次开发整理

ORACLE EBS FORM二次开发整理

一、开始开发标准FORM1.输出不必要的BLOCKNAME,DETAILBLOCK。

(包括数据块,画布,窗口)2.修改触发器:PRE-FORMFND_STANDARD.FORM_INFO(版本号,名称,模块,日期,作者);APP_WINDOW.SET_WINDOW_POSITIN(‘第一个窗口名称’,’FIRST_WINDOW’);FND_ORG.CHOOSE_ORG;――选择组织APP_WINDOW.SET_TITLE(‘窗体名称’,:_code);3.修改程序单元:app_customer:close_window4.编译f60gen module=/porcli/applmgr/1159/au/11.5.0/forms/ZHS/IAQTEST01.fmb userid=apps/simple4uoutput_file=/porcli/applmgr/1159/inv/11.5.0/forms/ZHS/IAQTEST01.fmxmodule_type=form batch=no compile_all=yesf60gen <Form Name> apps/<apps password>pre_insert, pre_update中加入代码:fnd_standard.set_who二、QUERY FIND 制作一.把APPSTAND 的QUERY FIND 对象组拉到开发的FORM上,选择子类。

二.在目的数据块的添加QUERY FIND (BLOCK LEVEL,注:可以从FORM LEVEL拷贝),然后修改代码app_find.query_find (block_window V ARCHAR2, --目的数据块find_window V ARCHAR2, --查询窗口find_block V ARCHAR2) --查询数据块4.在QUERY FIND里面添加文本项等查询内容。

ORACLE EBS FORM二次开发整理

ORACLE EBS FORM二次开发整理

一、开始开发标准FORM1.输出不必要的BLOCKNAME,DETAILBLOCK。

(包括数据块,画布,窗口)2.修改触发器:PRE-FORMFND_STANDARD.FORM_INFO(版本号,名称,模块,日期,作者);APP_WINDOW.SET_WINDOW_POSITIN(‘第一个窗口名称’,’FIRST_WINDOW’);FND_ORG.CHOOSE_ORG;――选择组织APP_WINDOW.SET_TITLE(‘窗体名称’,:_code);3.修改程序单元:app_customer:close_window4.编译f60genmodule=/porcli/applmgr/1159/au/11.5.0/forms/ZHS/IAQTEST01.fmbuserid=apps/simple4uoutput_file=/porcli/applmgr/1159/inv/11.5.0/forms/ZHS/IAQTEST01.fmxmodule_type=form batch=no compile_all=yesf60gen <Form Name> apps/<apps password>pre_insert, pre_update中加入代码:fnd_standard.set_who二、QUERY FIND 制作一.把APPSTAND 的QUERY FIND 对象组拉到开发的FORM上,选择子类。

二.在目的数据块的添加QUERY FIND (BLOCK LEVEL,注:可以从FORM LEVEL拷贝),然后修改代码app_find.query_find (block_window VARCHAR2, --目的数据块find_window VARCHAR2, --查询窗口find_block VARCHAR2) --查询数据块4.在QUERY FIND里面添加文本项等查询内容。

ORACLE EBS FORM利用模板开发步骤

ORACLE EBS FORM利用模板开发步骤

ORACLE EBS FORM利用模板开发步骤1、在formbuilder开发form—>从服务器的以下路径$AU_TOP/forms/US下载模板:TEMPLATE.fmb,并将模板名字改为STUDENTS.fmb—>将服务器$AU_TOP目录下的resource文件夹所有文件下载—>将以上STUDENTS.fmb和resource文件夹分别放在以下目录D:\ErpForm\Form , D:\ErpForm\Library—>在Regedit > HKEY_LOCAL_MACHINE > SOFTWARE > ORACLE > FORMS60_PA TH 加入client 端存放form 及resource的路径D:\ErpForm\Library;D:\ErpForm\Form(放在最前较好)—>运行formbuilder,打开STUDENTS.fmb后,修改名字,删除不需要使用的数据块和画布—>首先建一个窗口,因为画布放在窗口上。

这里将原来的一个窗口BLOCKNAME,改名为WIN_MAIN,并双击进入属性面板修改名称—>添加要用的数据块:右键数据块>数据块向导—>制作要用的画布:—>修改新建数据块和画布的名字为相同(建议),这里都改为MAIN。

并进入属性面板修改子类信息和窗口属性将数据块MAIN里的项STUID、STUNAME、STUSCORE的属性里的子类信息改为TEXT_ITEM,以下只列出STUID的截图将画布MAIN里的子类信息选为CANV AS,窗口选为WIN_MAIN,因为该画布放在WIN_MAIN 展示—>修改FORM上得Trigger2、将开发完的form上传到到服务器并编译—>通过SecureCRT登录到dev3(例如),在SecureCRT里通过echo $AU_TOP获得AU_TOP 路径—>通过FXPFlash也登录到dev3,进入$AU_TOP目录—>通过FXPFlash,将开发完成的form传到$AU_TOP/forms/ZHS目录下—>进入SecureCRT里的$AU_TOP/forms/ZHS目录,然后执行以下命令:f60gen userid=apps/apps module=STUDENTS.fmb output_file=$CPER_TOP/forms/ZHS/STUDENTS.fmx module_type=FORM batch=no3、将编译完成的form挂到EBS前台菜单—>以应用开发员职责登录,注册表单—>以应用开发员职责登录,定义功能—>将以上定义的功能加入MENU,此处加入的是系统管理员职责的MENU。

在EBS-FORM中开发工作流

在EBS-FORM中开发工作流

在EBS-FORM中工作流在EBS中如果需要对某些审批的业务进行审批工作流的二次开发,则需要进行客户化WORKFLOW的流程,然后在EBS-FORM中启用。

在这里,就不具体说明如何使用WF-BUILDER工具进行工作流的开发,此文档主要用来说明及解决在FORM中如何触发一个工作流以及在FORM中如何关闭一个工作流1 在FORM中启用一个工作流:原则:与执行SQL一样,重点在于工作流的程序包的脚本,由于FORM本身直接支持执行SQL的语法,所以,可以在FORM中特定收件人等参数。

/******************以预留单审批为例******************/--此代码具有客户化的TABLE,只能作为参考,不能直接使用create or replace package RESERVESWF_C isG_INFO varchar2(2000);G_id varchar2(20);G_PROFITRATE Number;G_error Varchar2(2000);-- 到预留单取消报表 得到当前审批单据的详细信息 并以HTML的格式显示Procedure write_yl_c_doc(document_id IN VARCHAR2,display_type IN VARCHAR2,document IN OUT VARCHAR2,document_type IN OUT VARCHAR2);Procedure judge_status_c(itemtype IN VARCHAR2,itemkey IN VARCHAR2,actid IN NUMBER,funcmode IN VARCHAR2,resultout OUT VARCHAR2);Procedure create_process(g_tb_id VARCHAR2,send_user varchar2);end RESERVESWF_C;create or replace package body RESERVESWF_C is/**工作流的逻辑判断,用来决定数据走向**/Procedure judge_status_c(itemtype IN VARCHAR2,itemkey IN VARCHAR2,actid IN NUMBER,funcmode IN VARCHAR2,resultout OUT VARCHAR2)IsL_flag VARCHAR2(1);Beging_id := wf_engine.Getitemattrtext(itemtype,itemkey,'ID');If funcmode = 'RUN' ThenSelect nvl(status,1) Into L_flag From RESERVED_ORDER Where RESERVED_ID = g_id;-- 状态(1 正常 2 审批中 3 审批通过 4 审批未通过 5 关闭)-- 只有状态为1 的单据才可能提交审批If L_flag <> '5' Thenresultout := 'CONTINUE';Elsif l_flag='5' thenresultout :='5';End If;End If;ExceptionWhen Others ThenNull;End judge_status_c;/***工作流显示的HTML内容***/Procedure write_yl_c_doc( document_id IN VARCHAR2,display_type IN VARCHAR2,document IN OUT VARCHAR2,document_type IN OUT VARCHAR2)Isn number:=1;L_customers_name varchar2(200);L_reserved_man varchar2(200);L_create_date varchar2(200);L_RESERVED_END_DATE varchar2(200);L_STATUS varchar2(200);L_ERP_CODE varchar2(200);L_RESERVED_TYPE varchar2(200);l_CREATER varchar2(20);l_MEMO varchar2(2000);BeginIf display_type = 'text/html' Thenselect customers_name,reserved_man,to_char(create_date,'yyyy-mm-dd'),to_char(RESERVED_END_DATE,'yyyy-mm-dd'),STATUS,ERP_CODE,RESERVED_TYPE,CREATER,MEMOintoL_customers_name,L_reserved_man,L_create_date,L_RESERVED_END_DATE,L_STATUS,L_ERP_CODE,L_RESERVED _TYPE,l_CREATER,l_MEMOfrom RESERVED_ORDER where RESERVED_ID=document_id;beginselect L_LIST into L_RESERVED_TYPE from setpar where L_FORM_BLOCK='RESERVED_TYPE' and L_VALUE=L_RESERVED_TYPE;exception when others then L_RESERVED_TYPE:='&nbsp';end;beginselect L_LIST into L_STATUS from setpar where L_FORM_BLOCK='Reserved_order.status' and L_VALUE=L_STATUS;exception when others then L_STATUS:='&nbsp';end;document := '<table width=100% border=1 bordercolor=red>';document:=document||'客户名称:'||L_customers_name||'&nbsp&nbsp&nbsp经手人:'||L_reserved_man||'&nbsp&nbsp&nbsp创建日期:'||L_create_date||'&nbsp&nbsp&nbsp预留到期日期:'||L_RESERVED_END_DATE||'&nbsp&nbsp&nbspERP订单编号:'||l_ERP_CODE||'&nbsp&nbsp&nbsp预留类型:'||L_RESERVED_TYPE||'&nbsp&nbsp&nbsp录入人:'||l_CREATER||'&nbsp&nbsp&nbsp审批意见:'||l_MEMO;document:=document||'<tr><td>序号</td><td>产品编码</td><td>预计出货日期</td><td>数量</td><td>预留货物状态</td><td>备注说明</td></tr>';For iLoop In(SELECT product_number, TO_CHAR(out_date,'YYYY-MM-DD') OUT_DATE,nvl(QTY,'0')qty,NUIT,reserved_status,nvl(REMARK,'&nbsp') REMARK from V_YL_QRY_DOC whereRESERVED_ID=document_id) LOOPdocument := document || '<tr>';document := document || '<td>';document := document || n;document := document || '</td>';document := document || '<td>';document := document || iLoop.product_number;document := document || '</td>';document := document || '<td>';document := document || iLoop.OUT_DATE;document := document || '</td>';document := document || '<td>';document := document || iLoop.QTY;document := document || '</td>';document := document || '<td>';document := document || iLoop.reserved_status;document := document || '</td>';document := document || '<td>';document := document || iLoop.REMARK;document := document || '</td>';document := document || '</tr>';n:=n+1;End Loop;document := document || '</table>';End If;document_type := display_type;End write_yl_c_doc;/******************** 启动工作流,参数说明 预留单号,申请提交人**************************/Procedure create_process(g_tb_id VARCHAR2,send_user varchar2)Isg_item_type Varchar2(20) := 'RESER_C'; -- workflow的文件名称g_item_key Varchar2(20);g_process Varchar2(20) := 'RESER_C_PROCESS'; -- wf 的process名称--g_send_name Varchar2(20);--g_appr_name Varchar2(20);g_textname wf_TabTyp;g_textval wf_engine.TextTabTyp;g_numname wf_TabTyp;g_numval wf_engine.NumTabTyp;role_id varchar2(100);l_send varchar2(20);l_create varchar2(20);l_temp VARCHAR2(100);l_sqlerrm varchar2(2000);Beging_id := g_tb_id;If g_id Is Null Theng_id := 1;End If;l_send:=send_user;-- 得到SARTUP WF的一个唯一值Select wf_s.Nextval Into g_item_key From dual ;g_item_key := g_item_type || g_item_key;g_textname(1) := 'SENDER'; --预留单申请人g_textname(2) := 'ID'; -- 需要审批单据号g_textname(3) := 'CREATE'; -- 预留单录入人g_textval(1) := l_send;g_textval(2) := g_id;-- 记录WORKFLOW的IDselect CREATER_CODE into l_create from RESERVED_ORDER where RESERVED_ID=g_id;g_textval(3) := l_create;--判断预留申请人与预留录入人是否一致 一致的话,消息只发送一遍if g_textval(1)=g_textval(3) theng_textval(3):='null';end if;--insert into t values('RESERVESWF_C commit');wf_engine.CreateProcess(g_item_type,g_item_key,g_process);wf_engine.SetItemAttrTextArray(g_item_type,g_item_key,g_textname,g_textval);-- wf_engine.SetItemAttrNumberArray(g_item_type,g_item_key,g_numname,g_numval);wf_engine.SetItemAttrDocument(g_item_type,g_item_key,'DOC','PLSQL:RESERVESWF_C.write_yl_c_ doc/' || g_id);wf_engine.SetItemAttrDate(g_item_type,g_item_key,'RIQI',Sysdate);wf_engine.StartProcess(g_item_type,g_item_key);Commit;ExceptionWhen Others Thennull;l_sqlerrm:=sqlerrm;--dbms_output.put_line(Sqlerrm);End create_process;end RESERVESWF_C;workflowbuild界面编辑流程设计界面2 在FORM中如何关闭一个工作流响应需求:在工作流管理列表中进入FORM中进行审批完成后,不想再在工作流管理列表中对当前的工作流进行关闭。

EBS Form入门

EBS Form入门

从现在开始,我们开始学习Form的基础知识,关于Form Builder的安装以及设定就跳过,有问题请联系我。

一个标准的Form是由Window、Block、Canvas、Item等组成的。

下面是关于这些基本对象的说明:Form:可以有多个Window;Window:只能有一个Canvas,但是还可以包括其他类型的Canvas;Canvas:我们所称的画布。

官方解释如下:Canvas is a surface where visual objects,such as graphics and items are arranged。

和Block没有直接的对应关系,而是直接和Item 相对应。

一个Canvas上面可以有来自不同的Block的多个item,是我们对Item进行位置调整的平台。

Block: Logical owner of items,items in one block are logically related,There are two main tupes of blocks:data block and control blockItem:Form中最基本的组织元素,是我们设计的最小单位Parameter:相当于全局变量,其作用是传递参数,Oracle 标准的Form也有单独建一个block(多个item)来传递参数的例子;Record Group:主要应用是可以提供给LOV与List item作为数据源。

A record group is internal Form Builder data structure that has a column/row framework similar to a database tableLOV: List Of Value,会直接对应到Text Item上面,点击后会弹出给用户选择数据;Attached Libraries:存放的是Oracle标准的一些PLL文件Property Classes:Oracle标准的一些属性类,我们在建立Window、Canvas、Data Block等都会选择一个属性类以继承一些属性和方法在我们的开发过程中,经常用到的有Form Trigger、Window、Canvas、Data Block、Item、LOV、Record Group、Parameters 等,其中Window、Canvas、Data Block、Item是四个最基本的Object,缺一不可。

Oracle+EBS+Forms开发指南(中级)

Oracle+EBS+Forms开发指南(中级)

Oracle+EBS+Forms开发指南(中级)信息技术最佳实践ORACLE核⼼应⽤技术E-B USINESS S UITEForms开发指南Author: 黄建华Creation Date: October 16, 2006Last Updated: March 24, 2013Document Ref:Version: DRAFT 1AApprovals:Copy Number _____Document ControlChange RecordReviewersDistributionNote To Holders:If you receive an electronic copy of this document and print it out, please write yourname on the equivalent of the cover page, for document control purposes.If you receive a hard copy of this document, please write your name on the frontcover, for document control purposes.ContentsDocument Control .................................................................................................................. i i 1.Folder、JTF Grid (2)1.3.Folder开发步骤(基于模版) (7)1.4.JTF Grid开发步骤 (10)2.多语⾔开发 (14)2.1.国际化⽀持 (14)2.2.Form⾃⾝的多语⾔版本 (14)2.3.数据多语⾔开发步骤 (14)2.4.EBS启⽤新语⾔时的考虑 (22)3.附件开发 (24)3.1.关于附件 (24)3.2.标准附件设置 (24)4.Javabean (29)4.1.Form与Java (29)4.2.例⼦:Hello World (31)4.3.例⼦:执⾏PC本地命令 (34)4.4.例⼦:读取PC⽂本⽂件 (37)4.5.例⼦:通⽤导⼊ (39)5.Form个性化 (41)5.1.Form个性化概述 (41)5.2.例⼦:修改字段Prompt (42)5.3.例⼦:有条件显⽰消息 (43)5.4.例⼦:调⽤数据库Package (44)5.5.例⼦:添加菜单 (44)5.6.例⼦:打开功能 (45)5.7.例⼦:执⾏查询 (46)5.8.例⼦:其他应⽤ (47)5.9.例⼦:Instance间迁移 (48)6.技巧、常⽤代码 (49)6.1.Form中的变量 (49)6.2.初始值、格式掩码 (49)6.3.消息处理 (50)6.6.MFG_ORGANIZATION_ID相关问题 (51)6.7.常⽤内置过程 (52)6.8.待续 (52)7.Open and Closed Issues for this Deliverable (53)Closed Issues (53)1.Folder、JTF Grid1.1.Folder开发步骤(从头开始)本节标题说明:标准指做Folder都要做⽽且是⼀样的步骤,可以考虑做个模版了;普通指和做普通Form⼀样;特殊指做Folder都要做但需要根据实际内容作修改。

Oracle EBS Form 开发 Tips

Oracle EBS Form 开发 Tips

Oracle EBS Form 开发TipsEBSForm开发中经常会遇到一些小问题,以免再次遇到而不记得什么原因,在此记下,如有新的问题,亦在此继续更新...1.带有stacked canvas 的Form,比如content canvas A,stacked canvasB,这两个canvas在WINDOW M上,当光标移动到A的最后一个Item(例如z)的时候,Bcanvas消失了(可以用Tab键移动光标至它,即显示)。

Cause: B和A.z发生的互相遮盖,即有重叠区域。

Solution: 将Item间距离拉大一些。

1-1)有时候还会发现某一个stackedcanvas没有显示出来,在树状结构中把canvas的排列顺序调整一下(最好把item的顺序也调整一下,因其也会有影响),content在前,后面跟stacked A,stacked B。

1-2)一个content canvas(Main),两个stackedcanvas (A&amp;B),发现只显示了content canvas上的item。

Cause: 由于是在测试,B上还没有内容,只选择了view stacked canvasA。

症状是A的内容不显示,只是用TAB键的时候才会把A切换出来。

造成这个的原因是B虽然没有显示,但是也是存在的,且是较大片空白,盖住了A。

--shit...1-3)有时候view--stacked canvas,选中了要显示的stackedcanvas,却不见其显示出来,看下stacked canvas的视图端口高度和宽度是否为0。

2.在Form中使用LOV时,LOV的Record Group 中的语句不要有用'--'Mark掉的东东在里面,如果有的话,'--'后面的所有语句都会被mark掉,因为Record Group的Query 语句会全部被放在一行中。

切记3.Set_item_instance_property() 用来改变一列中的某个的属性,如显示特殊颜色等4.复选框背景色及前景色无法显示成canvas底色、白字。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

ORACLE EBS FORM利用模板开发步骤
1、在formbuilder开发form
—>从服务器的以下路径$AU_TOP/forms/US下载模板:TEMPLATE.fmb,并将模板名字改为STUDENTS.fmb
—>将服务器$AU_TOP目录下的resource文件夹所有文件下载
—>将以上STUDENTS.fmb和resource文件夹分别放在以下目录D:\ErpForm\Form , D:\ErpForm\Library
—>在Regedit > HKEY_LOCAL_MACHINE > SOFTWARE > ORACLE > FORMS60_PA TH 加入client 端存放form 及resource的路径D:\ErpForm\Library;D:\ErpForm\Form(放在最前较好)
—>运行formbuilder,打开STUDENTS.fmb后,修改名字,删除不需要使用的数据块和画布
—>首先建一个窗口,因为画布放在窗口上。

这里将原来的一个窗口BLOCKNAME,改名为WIN_MAIN,并双击进入属性面板修改名称
—>添加要用的数据块:右键数据块>数据块向导
—>制作要用的画布:
—>修改新建数据块和画布的名字为相同(建议),这里都改为MAIN。

并进入属性面板修改子类信息和窗口属性
将数据块MAIN里的项STUID、STUNAME、STUSCORE的属性里的子类信息改为TEXT_ITEM,以下只列出STUID的截图
将画布MAIN里的子类信息选为CANV AS,窗口选为WIN_MAIN,因为该画布放在WIN_MAIN 展示
—>修改FORM上得Trigger
2、将开发完的form上传到到服务器并编译
—>通过SecureCRT登录到dev3(例如),在SecureCRT里通过echo $AU_TOP获得AU_TOP 路径
—>通过FXPFlash也登录到dev3,进入$AU_TOP目录
—>通过FXPFlash,将开发完成的form传到$AU_TOP/forms/ZHS目录下
—>进入SecureCRT里的$AU_TOP/forms/ZHS目录,然后执行以下命令:
f60gen userid=apps/apps module=STUDENTS.fmb output_file=$CPER_TOP/forms/ZHS/STUDENTS.fmx module_type=FORM batch=no
3、将编译完成的form挂到EBS前台菜单
—>以应用开发员职责登录,注册表单
—>以应用开发员职责登录,定义功能
—>将以上定义的功能加入MENU,此处加入的是系统管理员职责的MENU。

以系统管理员职责登录
以系统管理员职责登录,点击常用菜单里的菜单选项
想的)。

相关文档
最新文档