您好,欢迎访问三七文档
ERP开发技术培训培训顾问:刘天来我们的目标•想让我们看到什么、怎么去看•我们看到的怎么去用•我们怎么去开发•怎么样解决问题•掌握数据流而反掌握业务流程主要内容•ERP客户化开发的内容和工具•ERP客户化开发的架构概述•开发标准•SQL语言•FORM开发技术•PLSQLDev开发技术•心得体会ERP客户化开发的内容和工具•内容:包含了前台显示的FORM、后台请求。其中请求包含了:PKG、PROCEDURE、FUNCTION、SQL*PLUS。•FORM:它是开发可视化界面,开发前台处理界面,如:数据维护、计划输入、指示产生等等。•PLSQLDEV:它是一种后台处理工具,主要是操作数据库和开发、PKG、PROCEDURE、FUNCTION、SQL*PLUS,如报表、后台请求处理等等。其中地数据库操作语言都是标准的SQL。ERP客户化开发的构架概述FROM开发是基于B/S结构,分为客户端、应用服务器、数据库服务器。它们的关系如下图。开发人员需要把开发的FORM上传到应用服务器指定的目录里,通过TELNET远程编译,才能生效使用。目前我们开发环境的目录为:/u03/dev/appdev/devappl/xxmfg/11.5.0/forms/ZHS在开发FORM过程需要本地编译检查错误,则FORM就只需要连接数据库就行了。PLSQL开发是基于数据库的开发,因此只需连接数据库,直接在数据库服务器上开发。数据库服务器开发标准ERP是一个融入先进管理理念的企业级系统,可它毕竟是一个计算机软件系统,一样存在客户化、维护、升级。为了在客户化过程中能团队开发、程序易读可维护、好管理可升级,必须有一套可行的开发标准。经过公司开发人员几年实施ERP的心得,我们得出了具有长安特色的ERP开发标准,见附件。SQL语言DML语句:–Select–Insert–Update–DeleteDDL语句:–CREATE–ALTER–MODIFY–DROP事务处理语句:–COMMIT–ROLLBACKSELECTSELECT语句主要用于查询、显示、跟踪、分析数据,取得数据制定报表,它的格式:Selectcolsum(col)fromtable/viewwhereconditiongroupbycolhavingconditionorderbyasc/desc例如:SELECT例子selectt.attribute2,count(t.attribute2),sum(t.quantity)fromrcv_transactionstwheret.organization_id=176andt.attribute2isnotnullgroupbyt.po_header_id,t.attribute2havingcount(t.attribute2)1INSERTINSERT语句主要用于向一个表里添加数据,它的格式:insertintotable(col)values(value)或insertintotable(col)select语句例如:INSERT例子客户Example1:insertintohb_exp_emp(emp_id,emp_name,dep_id,salary)values(hb_exp_emp_s.nextval,‘刘天来’,10,2500)Example2:insertintohb_exp_empselect*fromhb_exp_emp_copyUPDATE客户UPDATE语句主要用于更新一个表的数据,它的格式:updatetablesetcol=valuewhereconditionUPDATE例子客户Example:updatehb_exp_empsetdep_id=20wheredep_id=10DELETEDELETE语句主要用于删除一个表得数据,它的格式:deletefromtablewhereconditionDELETE例子Example:deletefromhb_exp_empwheredep_id=20CREATECREATE语句主要用于创建数据库对象,它的格式:createtablename(coldatatype,……)tablespaceTABLESPACE---XXMFGD………storage(………………);altertableXXMFG.HB_EXP_EMPaddconstraintHB_EXP_EMP_U1primarykey(EMP_ID);createviewnameasselect语句;CREATEcreateviewnameasselect语句;createsynonymnameforschema.name;createsequencenameminvaluevaluemaxvaluevaluestartwithvalueincrementbyvaluenocachecycle;CREATE例子Example1:createtableHB_EXP_EM(EMP_IDNUMBERnotnull,EMP_NMAEVARCHAR2(80),DEP_IDNUMBER,SALARYNUMBER)tablespaceXXMFGDpctfree10pctused40initrans1maxtrans255storage(initial64Kminextents1maxextentsunlimited);altertableHB_EXP_EMPaddconstraintHB_EXP_EMP_U1primarykey(EMP_ID);CREATE例子Example2:createorreplaceviewHB_EXP_EMp_vasselectt.emp_name,t.salaryfromhb_exp_empt;Example3:createsynonymhb_exp_empforxxmfg.hb_exp_emp;Example4:createsequenceXXMFG.HB_EXP_EMP_Sminvalue1maxvalue999999startwith227021incrementby1nocachecycle;DROPDORP语句主要用于删除数据库对象,它的格式:droptable/view/synonym/sequencenameDROP例子Example:droptablehb_exp_emp事务处理语句Transactioncontrol:commit/rollback;Example:银行转帐begin:account12000------account23000||2000-10003000||(rollback)10003000+1000||10004000(commit/rollback)FROM开发技术FROM(表单)的开发是可视化开发,其主要内容:•连接数据库•Windows(窗口)•Canvas(画布)•Block(数据块)•Item(数据项)•Trigger(触发器)•Lovs(下拉列表选值)•FORM例子•上传编译,定义表单、功能、菜单连接数据库配置数据库连接别名:1.查询form的home目录。2.找到设置连接文件ORACLE_HOME\net80\admin\tnsnames.txt。3.输入设置值:DEV=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=10.0.2.13)(PORT=1524)))(CONNECT_DATA=(SERVICE_NAME=DEV)))4.连接格式:apps/password@devWINDOWS它是一个组件容器,表单的入口处,一个FORM里必须至少有一个WINDOW,一个WINDOW至少要关联一个CANVAS。它的属性主要是限定FORM界面的大小、显示位置、提示信息等等。CANVAS它是也一个组件容器,它装载所有ITEM物理属性,一个FORM里必须至少有一个CANVAS,它必须关联一个WINDOWS,它和WINDOWS一起成为FORM真正的显示界面。BLOCKBlock(数据块)主要用于连接数据对象和装载item,一个block只能连接一个数据对象,数据对象要操作的数据列赋值给item,其中连接view的block一般只能显示,若要做添加、更新、删除动作,则要写block级trigger。Block的属性主要是设置数据操作和显示属性ITEMItem(数据项)包含了所有具体的操作组件,如:button、text、list等等,这些组件继承了不同的类。它必须包含在一个canvas和一个block里。TRIGGERTrigger(触发器)就是事务触发器,它是指在什么情况想干什么,如:在text输入完数量后,想验证数量是否超出规定数量,那就需要在此text加上when_validate_item触发器:if:text规定数量then报警处理;endif;trigger分为form级、block级、item级。Form级trigger是对整个form控制,如:PRE_FORM触发器FND_STANDARD.FORM_INFO('$Revision:115.11$','XXINF502','XXMFG',‘$Date:2005/03/0817:20$’,‘$Author:邓世杰$');app_standard.event('PRE-FORM');app_window.set_window_position('XXINF502','FIRST_WINDOW');FND_ORG.CHOOSE_ORG;TRIGGERblock级trigger只对数据对象控制,如:WHEN-NEW-BLOCK-INSTANCE触发器IF:XXINF502_MAIN.SOURCE_TYPE='PO'THENSET_ITEM_PROPERTY('WIP_SEGMENT',UPDATE_ALLOWED,PROPERTY_FALSE);SET_ITEM_PROPERTY('CLASS_CODE_T',UPDATE_ALLOWED,PROPERTY_FALSE);ELSIF:XXINF502_MAIN.SOURCE_TYPE='WIP'THENSET_ITEM_PROPERTY('PO_SEGMENT_T',UPDATE_ALLOWED,PROPERTY_FALSE);ELSIF:XXINF502_MAIN.SOURCE_TYPE='MANUAL'THENSET_ITEM_PROPERTY('PO_SEGMENT_T',UPDATE_ALLOWED,PROPERTY_FALSE);SET_ITEM_PROPERTY('WIP_SEGMENT',UPDATE_ALLOWED,PROPERTY_FALSE);SET_ITEM_PROPERTY('CLASS_CODE_T',UPDATE_ALLOWED,PROPERTY_FALSE);ENDIF;TRIGGERitem级只对数据项控制,如:WHEN-VALIDATE-ITEM触发器IF:QUERY.CARD_NUMBERISNOTNULLTHENBEGINSELECTt.card_idinto:QUERY.CARD_IDFROMXXINV_MATERIAL_CARDSTWHERET.CARD_NUMBER=:QUERY.CARD_NUMBER;EXCEPTIONWHENNO_DATA_FOUNDTHENFND_MESSAGE.DEBUG(‘物料卡不正确,请输入正确的物料卡!’);return;end;endif;LOVSLOVS(列表选择值):它不同list,list值都是人为输入的固定值,而lovs它的列表值来源于数据库的数据对象,用select语句取得,它是动态的值。它的返回值必须返回给item。如:Selectpha.segment1,pha.po_header_idFrompo_headers_allphawherepha.type_lookup_codein('B
本文标题:ERP开发培训
链接地址:https://www.777doc.com/doc-10737 .html