深入浅出Oracle之s开发指南.doc_第1页
深入浅出Oracle之s开发指南.doc_第2页
深入浅出Oracle之s开发指南.doc_第3页
深入浅出Oracle之s开发指南.doc_第4页
深入浅出Oracle之s开发指南.doc_第5页
免费预览已结束,剩余138页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Doc Ref: Oracle ERP最佳技术实践十二月 13, 2012Oracle ERP最佳技术实践E-Business SuiteOracle核心应用技术Forms开发指南Author:黄建华Creation Date:October 16, 2006Last Updated:十二月 13, 2012Document Ref: Version:DRAFT 1AApprovals: Copy Number_Document ControlChange Record5DateAuthorVersionChange Reference16-Oct-06Jianhua.HuangDraft 1aNo Previous DocumentReviewersNamePositionDistributionCopy No.NameLocation1Library MasterProject Library2Project Manager34Note To Holders:If you receive an electronic copy of this document and print it out, please write your name 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 front cover, for document control purposes.ContentsDocument Controlii1.开发背景与基础21.1.读者基础要求21.2.用户和常用工具21.3.AOL开发框架21.4.多组织支持61.5.主要实例62.基于EBS的Forms开发过程82.1.Form文件类型82.2.Forms Builder安装82.3.下载Template相关文件122.4.一个简单的例子.创建数据库对象142.5.一个简单的例子.从模版开始设计252.6.一个简单的例子.编写数据操作触发器322.7.一个简单的例子.上传&编译372.8.一个简单的例子.在EBS中注册运行373.参数、List、LOV、字段和记录控制、日历403.1.例子:Parameter参数403.2.例子:List值列表413.3.例子:LOV窗口式值列表423.4.例子:字段和记录控制443.5.例子:日历453.6.上传&编译&运行464.行指示符、主从块、滚动条、Stacked&Tab画布、多行文本474.1.例子:销售订单行474.2.例子:Master-Detail主从块494.3.例子:滚动条514.4.例子:Stacked画布524.5.画布小结574.6.例子:Tab画布594.7.例子:控制Tab画布624.8.例子:多行文本框635.Lov查询、块查询、Button655.1.查询原理655.2.例子:Lov查询655.3.例子:块查询675.4.例子:Button696.触发器层次关系、常用触发器编写规范706.1.理解层次关系706.2.触发器原理706.3.基于EBS模版开发的触发器716.4.一些触发器的理解727.描述性弹性域、Key弹性域、Key弹性域查询747.1.描述性弹性域开发步骤747.2.Key弹性域开发步骤778.Folder、JTF Grid808.1.Folder开发步骤(从头开始)808.2.Folder问题858.3.Folder开发步骤(基于模版)858.4.JTF Grid开发步骤889.多语言开发929.1.国际化支持929.2.Form自身的多语言版本929.3.数据多语言开发步骤929.4.EBS启用新语言时的考虑10010.附件开发10210.1.关于附件10210.2.标准附件设置10211.Javabean10711.1.Form与Java10711.2.例子:Hello World10911.3.例子:执行PC本地命令11211.4.例子:读取PC文本文件11511.5.例子:CSV通用导入11812.Form个性化12212.1.Form个性化原理12212.2.例子:修改字段Prompt12312.3.例子:有条件显示消息12412.4.例子:调用数据库Package12512.5.例子:添加菜单12512.6.例子:打开功能12612.7.例子:执行查询12712.8.例子:Instance间迁移12813.技巧、常用代码13013.1.Form中的变量13013.2.初始值、格式掩码13013.3.消息处理13113.4.Special菜单13113.5.库存组织访问13113.6.MFG_ORGANIZATION_ID相关问题13213.7.常用内置过程13313.8.待续133附录:我开始学习Form时的笔记1,仅供参考,未必100%正确134附录:我开始学习Form时的笔记2,仅供参考,未必100%正确13714.Open and Closed Issues for this Deliverable140Open Issues140Closed Issues140Open and Closed Issues for this Deliverable 139Forms开发指南File Ref: 091c957e39eaa614aae77a604fb20afd.pdf (v. DRAFT 1A )Company Confidential - For internal use only1. 开发背景与基础1.1. 读者基础要求1、 有EBS的使用经验,尤其是Form的使用经验2、 创建客户化应用,参考深入浅出Oracle EBS之全模块设置详例第一章节3、 熟悉PL/SQL4、 熟悉Telnet和FTP工具,熟悉Windows常规操作5、 理解或开发过数据库应用系统6、 有Form开发经验则更佳1.2. 用户和常用工具1.2.1. 区分3类用户1、 OS用户:包括超级用户root,应用OS用户如applprod,数据库OS用户如oraprod。后两个用户具体由dba安装环境时创建,名字不定。2、 数据库用户:包括内置管理用户sys、system,EBS用户apps,EBS各模块用户applsys、gl、inv、po、ar、ap等等,EBS网关用户applsyspub。3、 EBS用户:也叫OA用户、应用用户、ERP用户,包括默认超级用户sysadmin,其他内置用户(参见深入浅出Oracle EBS之安全机制探索),企业实施、使用过程中创建的用户。1.2.2. Form开发使用的用户和工具Forms开发过程中需要具体使用如下3个用户。1、 应用OS用户:用telnet工具如SecureCRT登录服务器,获得各$XXX_TOP的具体路径、编译form和pll;用FTP如cuteftp连接服务器,下载必要文件、上传开发的form。2、 APPS:用PL/SQL Developer登录数据库,创建各类数据库对象。3、 sysadmin或者拥有应用开发员和系统管理员职责的等价用户:注册form等各AOL对象、测试form。1.3. AOL开发框架1.3.1. 再说NavigatorForms自身菜单其实和传统菜单一样:然而EBS中基本摒弃Forms自身的菜单功能,而是专门开发了一个Navigator界面,采用树形结构显示菜单,每个菜单项对应一个Forms:这里的菜单是可随意组织的,因此非常灵活,而不用如传统菜单那样要么写死要么用代码控制。实际上,该方式完成了EBS最主要的安全性控制功能安全性,为什么这么说呢?1.3.2. AOL开发框架:EBS功能安全性基本原理这里仅说明Forms部分,其他的可参考深入浅出Oracle EBS之安全机制探索。安全性最终都要落实到“用户”身上,即某一用户是否具有某一权限;功能安全性的核心就是某一用户是否具有运行某一个Forms的权限。为了方便管理,分类维护,EBS在“用户”和“Forms”之间加了几个层次。考察如下过程:1、 “用户”如sysadmin登录,系统验证其用户名/密码2、 如果OK,系统列出其拥有的所有角色,在EBS中叫“职责”(Responsibility),而每个职责,都对应一个定义好的“菜单”3、 当用户选择相应的职责进入“Navigator”后,显示的就是此菜单的内容4、 每个底层菜单项,还不是直接对应Forms,而是先对应一个“功能”(Function),由功能再去对应一个具体的“Forms”。这里的好处是,在功能上可以定义参数比如查询条件、控制码等,然后传递给Forms,当然大部分情况是不定义参数,所以功能和Forms基本上是一一对应关系5、 用户点击菜单项,到定义Forms时指定的应用的TOP下,找到“fmx文件”执行之所以,反过来,如果我们开发好一个Forms,要在EBS中跑起来,完整的过程就是为该“Forms”定义“功能”,定义“菜单”调用该功能,定义“职责”使用该菜单,最后把职责分配给“用户”等一系列无Coding的定义工作。1.3.3. Template.fmb专业的软件系统,其操作方式、界面风格总是非常统一,即便是后来收购集成进来的模块,经过调整优化后,风格也基本一致。那么如何才能做到统一呢?一是依赖于规范文档,大家老老实实照标准开发;二是采用更加直接有效的办法模版。Oracle EBS的Forms,基本上都是从Template.fmb开始,该模版预先定义了:1、 各种界面元素的属性集子类2、 常用的控件日历、进度条3、 一系列Form级触发器,统一处理各种未被明确处理的事件4、 丰富的PLL库函数,大大超越了Forms Builder内置的函数所以,我们基于EBS的开发,当然也是从Template.fmb开始1.3.4. EBS文件系统EBS文件系统,指其以怎样的目录结构组织各种可执行文件、命令文件、配置文件的。从整个EBS的角度看,分DB、APP两部分、五个大目录:其中COMN目录(对应环境变量$COMMON_TOP)存放服务启停脚本和基于HTML的应用文件(Java类、JSP页等):APPL(对应环境变量$APPL_TOP)则存放配置文件、各种管理脚本、各模块应用代码:APPL下的各个应用模块目录,则是本次介绍的主角了:AU模块存放fmb、pll、plx文件、各应用模块存放fmx文件,具体是:$AU_TOP/resource:pll文件、plx文件$AU_TOP/forms/US:英文fmb文件$AU_TOP/forms/:特定语种(如ZHS)的fmb文件$_TOP/forms/US:各模块英文fmx文件录$_TOP/forms/:特定语种(如ZHS)fmb文件上面,如INV、GL、AP、AR等等,在System Administrator职责下的Application/Register中定义。通常各个企业都会创建一个客户化应用来管理二次开发的所有代码和设置,比如CUX、HAND等,下面以CUX(客户化的意思)为例。总之我们需要的模版及相关文件在AU_TOP下;我们开发的fmb文件呢,也应根据上述规则传到$AU_TOP/forms的相关语言路径下,不过为管理、备份方便,实际开发中可能故意违反EBS的规则,与fmx一起放在$CUX_TOP/forms的相关语言路径下。详情可参考:Arone的11iConcepts.ppt或Oracle的Oracle Applications ConceptsPDF。1.4. 多组织支持1.4.1. 说明Oracle的多组织数据屏蔽,设计要点如下:1、 核心层次:业务组BG账套SOB法人实体LE经营单位OU库存组织INV,这些层次统称为组织,可通过视图org_organization_definitions查看关系。2、 数据级别:表中设计有组织ID来屏蔽;不同模块因为针对的层次不同,其组织ID含义不同,比如HR的表用Business_Group_Id,GL的表用Set_Of_Book_Id,AR/AP/PO/OM等表用经营单位Org_Id,INV/MRP/WIP/BOM等模块用库存组织Organization_Id。3、 程序级别:用户登录、选择职责后,其所能操作的业务组、账套、法人实体、经营单位就确定了,这个是通过相关的Profile来设置的;当进入制造和库存相关模块,需要通过Change Organization菜单来获得可操作的库存组织。Oracle标准的Package、Form、Java等程序,都是严格根据当前用户的参数来过滤各模块表数据。1.5. 主要实例本文档主要围绕开发销售订单来介绍Form开发过程中涉及的关键技术点。1.5.1. 销售订单销售订单最核心的内容为:某客户,在某天,以何价格,购买多少数量的哪些商品。一张销售订单,客户是一定的,销售员可能有多个,这里假定只记录主销售员,所以这两个信息构成销售订单的“头信息”;一次订单,客户通常会同时购买多种商品,并且未必是同一天要货,这样需求日期、商品、数量、价格构成销售订单的“行信息”。1.5.2. 开发需求分析销售订单还需要记录其它重要的内容,这个可直接参照EBS的“Sales Order”,为学习方便,这里仅加入如下不完整、不严谨的信息。头信息:订单编号、订单日期、内销还是外销、所采用的价目表、总价、币别、订单状态;非“录入”的不能删除,“部分履行”或“完全履行”的不能修改。订单状态:录入、确定、部分履行、完全履行。行信息:发货日期、收款日期;如果已发货,商品和数量不能修改,记录不能删除;如果已收款,整条记录都不能修改、不能删除。全部行都已发货、已收款则订单状态为“完全履行”,部分发货或部分收款,则订单状态为“部分履行”。订单查询:需要提供按订单号、订单日期、客户、销售员、销售类型、商品、是否发货、是否收款等条件进行组合查询,查询表现方式分为Folder形式和Grid形式。1.5.3. 其它说明本文档使用“SCF”客户化应用做开发,不过数据库对象仍然沿用“CUX”前缀;没有建立专门的索引表空间。2. 基于EBS的Forms开发过程2.1. Form文件类型2.1.1. Form文件类型.fmb:源文件,目前是二进制格式,也可以转成早期版本的ASCII格式.fmx:可执行文件,类似VB的.exe文件,其也需要在Forms Runtime环境中运行.pll:库函数源文件,类似所有开发语言的库函数,如VC的.cpp文件.plx:库函数可执行文件调用关系:fmb文件可以引用其他fmb文件、pll文件,pll文件可以进一步引用其他pll文件,引用是可以嵌套的。所以要成功打开一个forms源文件,必须保证其直接引用、间接引用的fmb、pll文件均存在。怎样才叫“存在”呢?类似各种语言如C的Include Path或Java的Class Path,Forms也有一个参数注册表FORMS60_PATH来指示引用的路径,只要需要的文件在该路径下即可。2.2. Forms Builder安装2.2.1. 版本尽管Oracle的Developer工具已经升级到9i、10g,但EBS中使用的Forms Server和Forms Builder版本还是6i,今后的开发将逐步转移到Java,Oracle将来也不会在EBS中使用高于6i的Forms。可以从/EPD/Search/get_form下载,其包含在EBS for Windows版本的下载列表中。2.2.2. Oracle HomeOracle Home:Oracle产品的根目录及其名称;不同产品可以装到不同的目录,拥有各自的Oracle Home;通过安装目录下的binoracle.key来指示使用哪个注册表项。Default Home:指所有Oracle Home中,哪个是Default,其名字则未必叫Default。Developer 6i的安装不够友好,必须安装到Default Home,为避免手工修改注册表的烦恼,最好先安装6i,再安装其他Oracle产品。2.2.3. 基本安装过程,请采用Custom1、 运行Setup,选择安装目录和语言,建议采用English:2、 选择Oracle Forms Developer:Tips:待装完Forms Developer,需要重新运行Setup来安装Reports Developer,至于两个Server,基于EBS的开发不需要,装了也用不了。3、 选择安装类型,请采用Custom:4、 选择安装Forms Builder,将自动分析并安装需要的相关组件和文件:如果系统足够“干净”,通常一路OK就能顺利安装;点击Exit退出。5、 请从头开始,安装Reports Developer:2.2.4. 打Patch,请采用Typical上述安装的Developer6i的版本是1.3,在编辑比较复杂的Form时会报错退出,需要打Patch,我打的是5。1、 运行Setup,选择安装目录和语言,默认即可。2、 选择安装类型,请采用Typical:通常一路OK就能顺利安装。2.2.5. 配置TNSNAME从DBA或他人索要SQLNET.ORA和TNSNAMES.ORA,直接覆盖到安装目录的NET80ADMIN下。SQLNET.ORA是Oracle SQL*Net协议配置文件,样例如下:SQLNET.AUTHENTICATION_SERVICES= NONENAMES.DIRECTORY_PATH= (TNSNAMES, ONAMES, HOSTNAME)SQLNET.EXPIRE_TIME=1 TNSNAMES.ORA是Oracle SQL*Net数据库服务解析文件,样例如下:PROD=(DESCRIPTION= (ADDRESS=(PROTOCOL=tcp)(HOST=HUAJHUA.)(PORT=1521) (CONNECT_DATA= (SERVICE_NAME=PROD) (INSTANCE_NAME=PROD) ) )2.2.6. 配置FORMS60_PATH基于EBS的Forms开发,需要从服务器上下载必要的fmb和pll文件到本地,比如两类文件都放在d:oracleresource,那么需要添加注册表的字符串值FORMS60_PATH,类似C语言的Include Directory或者Java的Class Path:2.2.7. 配置NLS_LANG修改注册表:Local Machine/Software/Oracle/NLS_LANG改为AMERICAN_AMERICA.ZHS16GBK,这样开发IDE使用英文,字符集可满足英文、简体中文、繁体中文的需要。习惯上也同时修改其他子分支下的NLS_LANG。2.3. 下载Template相关文件用FTP以应用操作系统用户登录EBS服务器,进入到$AU_TOP目录下。2.3.1. 下载TEMPLATE.fmb从$AU_TOP/forms/US下载TEMPLATE.fmb到FORMS60_PATH对应的目录下。2.3.2. 启动Form Builder通过开始菜单启动:去掉Display at startup,点击Cancel:2.3.3. 打开TEMPLATE.fmb及报错分析N: 点击Open,打开TEMPLATE.fmb本地仅有TEMPLATE.fmb,将报fmb文件找不到Source Module后就是form文件名:点击OK,再报pll文件找不到PL/SQL library后面就是就是pll文件名:注意只可关闭、不可保存TEMPLATE.fmb!2.3.4. 下载必要的文件到FORMS60_PATH对应的目录目标:不断测试、下载,直至打开TEMPLATE.fmb,没有任何错误为止。从$AU_TOP/forms/US下载缺失的fmb文件。从$AU_TOP/resource下载缺失的pll文件。因为form和pll都可嵌套引用,所以有时候把提示的form或者pll下载下来,打开TEMPLATE.fmb依然报错,那么需要直接打开提示缺失的fmb或pll文件,这个时候才会看到真正缺失的文件,下载之。为减少每个人的麻烦,现把需要的文件全部列出:EBS 11i:请看附件中的“EBS11Source”目录。EBS 12请看附件中的“EBS12Source”目录。 2.4. 一个简单的例子.创建数据库对象要求:表、序列、索引建在应用数据库用户下,表放在数据表空间中,索引放在索引表空间中;视图、包建在APPS下,表和序列需要在APPS下创建别名。本小节的脚本在PL/SQL Developer中,用APPS登录,在Command Window中运行。2.4.1. 创建数据库对象这里仅创建“头信息”表,并遵循如下规范:1、 1个表关键字ID,通常与表名一致,并用Sequence为每条记录获得一个唯一值。2、 1个组织ID,根据不同的开发选用不同层次的组织ID,这里的销售订单跑在OU层,所以基表命名为_ALL表,并创建一个过滤组织的View作为“基表”。3、 5个Who字段,记录由谁在何时创建,并由谁在何时修改,登录ID是多少。4、 4个请求字段,处理的请求ID、请求日期、并发程序ID及其应用ID,如果有的话。5、 16个描述性弹性域字段,1个上下文字段,15个弹性域字段。6、 另外,根据以往开发经验,加个描述字段可解决不少难缠的问题。7、 因为脚本中带有Schema前缀,可以在APPS直接运行创建,源文件为cux_order_headers_all.sql。- Create tablecreate table SCF.CUX_ORDER_HEADERS_ALL( HEADER_ID NUMBER not null, ORG_ID NUMBER not null, ORDER_NUMBER NUMBER not null, ORDERED_DATE DATE not null, ORDER_TYPE VARCHAR2(1) not null, CUSTOMER_ID NUMBER not null, SALESREP_ID NUMBER(15), PRICE_LIST_ID NUMBER, CURRENCY_CODE VARCHAR2(15) not null, FLOW_STATUS_CODE VARCHAR2(30) not null, DESCRIPTION VARCHAR2(240), CREATION_DATE DATE not null, CREATED_BY NUMBER not null, LAST_UPDATED_BY NUMBER not null, LAST_UPDATE_DATE DATE not null, LAST_UPDATE_LOGIN NUMBER, PROGRAM_APPLICATION_ID NUMBER, PROGRAM_ID NUMBER, PROGRAM_UPDATE_DATE DATE, REQUEST_ID NUMBER, ATTRIBUTE_CATEGORY VARCHAR2(30), ATTRIBUTE1 VARCHAR2(240), ATTRIBUTE2 VARCHAR2(240), ATTRIBUTE3 VARCHAR2(240), ATTRIBUTE4 VARCHAR2(240), ATTRIBUTE5 VARCHAR2(240), ATTRIBUTE6 VARCHAR2(240), ATTRIBUTE7 VARCHAR2(240), ATTRIBUTE8 VARCHAR2(240), ATTRIBUTE9 VARCHAR2(240), ATTRIBUTE10 VARCHAR2(240), ATTRIBUTE11 VARCHAR2(240), ATTRIBUTE12 VARCHAR2(240), ATTRIBUTE13 VARCHAR2(240), ATTRIBUTE14 VARCHAR2(240), ATTRIBUTE15 VARCHAR2(240)tablespace SCF;- Create/Recreate indexes create unique index SCF.CUX_ORDER_HEADERS_U1 on SCF.CUX_ORDER_HEADERS_ALL (HEADER_ID) tablespace SCF; create unique index SCF.CUX_ORDER_HEADERS_U2 on SCF.CUX_ORDER_HEADERS_ALL (ORG_ID, ORDER_NUMBER) tablespace SCF;create index SCF.CUX_ORDER_HEADERS_N1 on SCF.CUX_ORDER_HEADERS_ALL (CUSTOMER_ID) tablespace SCF; create index SCF.CUX_ORDER_HEADERS_N2 on SCF.CUX_ORDER_HEADERS_ALL (SALESREP_ID) tablespace SCF; create index SCF.CUX_ORDER_HEADERS_N3 on SCF.CUX_ORDER_HEADERS_ALL (FLOW_STATUS_CODE) tablespace SCF; - Create/Recreate sequenceCREATE SEQUENCE SCF.CUX_ORDER_HEADERS_S;- Create/Recreate synonumCREATE SYNONYM CUX_ORDER_HEADERS_S FOR scf.CUX_ORDER_HEADERS_S;CREATE SYNONYM CUX_ORDER_HEADERS_ALL FOR scf.CUX_ORDER_HEADERS_ALL;- Create/Recreate ViewCREATE OR REPLACE VIEW CUX_ORDER_HEADERS ASSELECT header_id, org_id, order_number, ordered_date, order_type, customer_id, salesrep_id, price_list_id, currency_code, flow_status_code, description, creation_date, created_by, last_updated_by, last_update_date, last_update_login, program_application_id, program_id, program_update_date, request_id, attribute_category, attribute1, attribute2, attribute3, attribute4, attribute5, attribute6, attribute7, attribute8, attribute9, attribute10, attribute11, attribute12, attribute13, attribute14, attribute15 FROM cux_order_headers_all WHERE nvl(org_id, nvl(to_number(decode(substrb(userenv(CLIENT_INFO), 1, 1), , NULL, substrb(userenv(CLIENT_INFO), 1, 10), -99) = nvl(to_number(decode(substrb(userenv(CLIENT_INFO), 1, 1), , NULL, substrb(userenv(CLIENT_INFO), 1, 10), -99);2.4.2. 注册表和字段需要向EBS注册表和字段,这样以后就可通过标准功能设置弹性域、监控表操作。EXECUTE AD_DD.REGISTER_TABLE(SCF,CUX_ORDER_HEADERS_ALL,T,2,10,40);EXECUTE AD_DD.REGISTER_COLUMN(SCF,CUX_ORDER_HEADERS_ALL,HEADER_ID,1,NUMBER,38,N,N);EXECUTE AD_DD.REGISTER_COLUMN(SCF,CUX_ORDER_HEADERS_ALL,ORG_ID,2,NUMBER,38,N,N);EXECUTE AD_DD.REGISTER_COLUMN(SCF,CUX_ORDER_HEADERS_ALL,ORDER_NUMBER,3,NUMBER,38,N,N);EXECUTE AD_DD.REGISTER_COLUMN(SCF,CUX_ORDER_HEADERS_ALL,ORDERED_DATE,4,DATE,9,N,N);EXECUTE AD_DD.REGISTER_COLUMN(SCF,CUX_ORDER_HEADERS_ALL,ORDER_TYPE,5,VARCHAR2,1,N,N);EXECUTE AD_DD.REGISTER_COLUMN(SCF,CUX_ORDER_HEADERS_ALL,CUSTOMER_ID,6,NUMBER,38,N,N);EXECUTE AD_DD.REGISTER_COLUMN(SCF,CUX_ORDER_HEADERS_ALL,SALESREP_ID,7,NUMBER,38,Y,N);EXECUTE AD_DD.REGISTER_COLUMN(SCF,CUX_ORDER_HEADERS_ALL,PRICE_LIST_ID,8,NUMBER,38,Y,N);EXECUTE AD_DD.REGISTER_COLUMN(SCF,CUX_ORDER_HEADERS_ALL,CURRENCY_CODE,9,VARCHAR2,15,N,N);EXECUTE AD_DD.REGISTER_COLUMN(SCF,CUX_ORDER_HEADERS_ALL,FLOW_STATUS_CODE,10,VARCHAR2,30,N,N);EXECUTE AD_DD.REGISTER_COLUMN(SCF,CUX_ORDER_HEADERS_ALL,DESCRIPTION,11,VARCHAR2,240,Y,N);EXECUTE AD_DD.REGISTER_COLUMN(SCF,CUX_ORDER_HEADERS_ALL,CREATION_DATE,12,DATE,9,N,N);EXECUTE AD_DD.REGISTER_COLUMN(SCF,CUX_ORDER_HEADERS_ALL,CREATED_BY,13,NUMBER,38,N,N);EXECUTE AD_DD.REGISTER_COLUMN(SCF,CUX_ORDER_HEADERS_ALL,LAST_UPDATED_BY,14,NUMBER,38,N,N);EXECUTE AD_DD.REGISTER_COLUMN(SCF,CUX_ORDER_HEADERS_ALL,LAST_UPDATE_DATE,15,DATE,9,N,N);EXECUTE AD_DD.REGISTER_COLUMN(SCF,CUX_ORDER_HEADERS_ALL,LAST_UPDATE_LOGIN,16,NUMBER,38,Y,N);EXECUTE AD_DD.REGISTER_COLUMN(SCF,CUX_ORDER_HEADERS_ALL,PROGRAM_APPLICATION_ID,17,NUMBER,38,Y,N);EXECUTE AD_DD.REGISTER_COLUMN(SCF,CUX_ORDER_HEADERS_ALL,PROGRAM_ID,18,NUMBER,38,Y,N);EXECUTE AD_DD.REGISTER_COLUMN(SCF,CUX_ORDER_HEADERS_ALL,PROGRAM_UPDATE_DATE,19,DATE,9,Y,N);EXECUTE AD_DD.REGISTER_COLUMN(SCF,CUX_ORDER_HEADERS_ALL,REQUEST_ID,20,NUMBER,38,Y,N);EXECUTE AD_DD.REGISTER_COLUMN(SCF,CUX_ORDER_HEADERS_ALL,ATTRIBUTE_CATEGORY,21,VARCHAR2,30,Y,N);EXECUTE AD_DD.REGISTER_COLUMN(SCF,CUX_ORDER_HEADERS_ALL,ATTRIBUTE1,22,VARCHAR2,240,Y,N);EXECUTE AD_DD.REGISTER_COLUMN(SCF,CUX_ORDER_HEADERS_ALL,ATTRIBUTE2,23,VARCHAR2,240,Y,N);EXECUTE AD_DD.REGISTER_COLUMN(SCF,CUX_ORDER_HEADERS_ALL,ATTRIBUTE3,24,VARCHAR2,240,Y,N);EXECUTE AD_DD.REGISTER_COLUMN(SCF,CUX_ORDER_HEADERS_ALL,ATTRIBUTE4,25,VARCHAR2,240,Y,N);EXECUTE AD_DD.REGISTER_COLUMN(SCF,CUX_ORDER_HEADERS_ALL,ATTRIBUTE5,26,VARCHAR2,240,Y,N);EXECUTE AD_DD.REGISTER_COLUMN(SCF,CUX_ORDER_HEADERS_ALL,ATTRIBUTE6,27,VARCHAR2,240,Y,N);EXECUTE AD_DD.REGISTER_COLUMN(SCF,CUX_ORDER_HEADERS_ALL,ATTRIBUTE7,28,VARCHAR2,240,Y,N);EXECUTE AD_DD.REGISTER_COLUMN(SCF,CUX_ORDER_HEADERS_ALL,ATTRIBUTE8,29,VARCHAR2,240,Y,N);EXECUTE AD_DD.REGISTER_COLUMN(SCF,CUX_ORDER_HEADERS_ALL,ATTRIBUTE9,30,VARCHAR2,240,Y,N);EXECUTE AD_DD.REGISTER_COLUMN(SCF,CUX_ORDER_HEADERS_ALL,ATTRIBUTE10,31,VARCHAR2,240,Y,N);EXECUTE AD_DD.REGISTER_COLUMN(SCF,CUX_ORDER_HEADERS_ALL,ATTRIBUTE11,32,VARCHAR2,240,Y,N);EXECUTE AD_DD.REGISTER_COLUMN(SCF,CUX_ORDER_HEADERS_ALL,ATTRIBUTE12,33,VARCHAR2,240,Y,N);EXECUTE AD_DD.REGISTER_COLUMN(SCF,CUX_ORDER_HEADERS_ALL,ATTRIBUTE13,34,VARCHAR2,240,Y,N);EXECUTE AD_DD.REGISTER_COLUMN(SCF,CUX_ORDER_HEADERS_ALL,ATTRIBUTE

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论