Archive for the ‘ERP开发相关’ Category.

openbravo

大概试用了下openbravo,界面很玄,主要是SCM相关的业务功能

在线DEMO:http://www.openbravo.com/product/demo-center/erp/#video

需要再花些时间仔细研究下这款open source ERP,貌似基本满足我的需求。

大致的介绍:

Openbravo ERP是一套适合于中小企业并且基于web可扩展的开源ERP系统。它在著名的Compiere ERP的基础上重新开发了适用于各种浏览器的B/S界面并且新增了很多 实用功能。

众所周知,企业管理软件(ERP)复杂度高,实施费昂贵,这导致传统的解决方案对中小企业来说是难以接受的。然而,Openbravo相信“每个企业,无论大小,都有权利有他们自己的ERP一一由企业拥有并且按照企业的需求和预算量身订制。” 通过与Bitrock的达成伙伴关系,Openbravo使它的ERP软件对中小企业来说更触手可及。

Openbravo ERP的主要功能

主数据管理

产品,配件,BOM,客户,供应商,员工等

采购管理

采购合同,采购发票,采购计划,货物单据等

库存管理

仓库,库位,编码,包装,标签,入库与出库,库存调拨,库存盘点等

项目/服务管理

项目阶段,项目任务,项目资源,项目预算,项目采购等

生产管理

生产计划,物料需求计划,BOM,派工单,成本核算,日常维护等

销售管理

价格,订单,销售发票,批量折扣,佣金,客户关系管理等

财务管理

会计科目,账户,账套,预算,税率,应收/应付账款,固定资产折旧等

商业智能(BI)

报表,OLAP,平衡计分表等

Openbravo ERP的技术特性

和所有解决方案一样,Openbravo ERP需要一些额外的软件,比如数据库和web服务器。(考虑到技术复杂度)新的Openbravo安装包允许用户选择已经安装的PostgreSOL或者Oracle10g数据库然后自动连接选中的数据库和已安装的TOMCAT服务器。这为用户提供了选择已安装软件的灵活性,同时又提供了一个快速的用户友好的安装过程。

“我们的目标是使开源软件更易于安装,配置和更新”, “Openbravo”的新用户现在可以仅靠点击几下鼠标就完成安装一个强劲的ERP系统一一对其他ERP系统来说几乎是不可能的。除了提供了这个精简的配置系统,BitRock的技术还可以使安装后的软件更快更容易地更新。”

第200个Bug

来Oracle近一年半了,终于修复了我第200个Bug(算了下,平均每修复一个Bug耗时2.7天)

与前公司日均10+的bug速度,慢的不是一点半点。

但慢是有理由的,一个bug的修复,要严格很多,从Bug的定位,修复,review,文档,每步都走的很严格,当然质量也就有了充分的保证。

在‘System Administrator’ responsibility下,Help > About Oracle Appliations可以看到更多有用的信息

在‘System Administrator’ responsibility下,Help > About Oracle Appliations可以看到更多的信息。
以下蓝色字体部分,就是在普通responsibility下无法看到的信息。

——————————–
Oracle Applications
Copyright (c) 2004 Oracle Corporation,
Redwood Shores, California.
All Rights Reserved.

—————————————-
Login
—————————————-
Site : tk10203
Application : System Administration
Responsibility : System Administrator
Security Group : Standard
User Name : MFG

—————————————-
Database Server
—————————————-
RDBMS : 10.2.0.3.0
Oracle Applications : 11.5.10.2
Machine : rws60124rems
User : APPS
Oracle SID : mz1yd102
System Date : 01-DEC-2009 22:08:25
Database Server PID : 7827
Session SID : 377
SERIAL# : 64378
AUDSID : 5947370
Database CPU Usage (in secs) : 15.96

—————————————-
Forms Server
—————————————-
Oracle Forms Version : 6.0.8.27.0
Application Object Library : 11.5.0
Machine : RWS60124REMS
Forms User CPU (secs) : 19.800989
Forms System CPU (secs) : 1.601756
Forms Process ID : 4548

—————————————-
Forms Server Environment Variables
—————————————-
AU_TOP : /slot/ems2570/appmgr/mz1yd102appl/au/11.5.0
FDBDMCHK : [Unset]
FDFGCXDBG : [Unset]
FDSQLCHK : [Unset]
FDUDEBUG : [Unset]
FNDNAM : APPS
FND_TOP : /slot/ems2570/appmgr/mz1yd102appl/fnd/11.5.0
FORMS60_APPSLIBS : APPCORE FNDSQF APPDAYPK APPFLDR GLCORE HR_GEN HR_SPEC ARXCOVER
FORMS60_CATCHTERM : 1
FORMS60_ERROR_DATETIME_FORMAT : [Unset]
FORMS60_ERROR_DATE_FORMAT : [Unset]
FORMS60_FORCE_MENU_MNEMONICS : 0
FORMS60_MAPPING : http://rws60124rems.us.oracle.com:8070/OA_TEMP
FORMS60_MMAP : [Unset]
FORMS60_OUTPUT : /slot/ems2570/appmgr/mz1yd102comn/temp
FORMS60_OUTPUT_DATETIME_FORMAT : [Unset]
FORMS60_OUTPUT_DATE_FORMAT : [Unset]
FORMS60_PATH : /slot/ems2570/appmgr/mz1yd102appl/au/11.5.0/resource:/slot/ems2570/appmgr/mz1yd102appl/au/11.5.0/resource/stub
FORMS60_RESOURCE : [Unset]
FORMS60_TIMEOUT : 5
FORMS60_USER_DATETIME_FORMAT : DD-MON-RRRR HH24:MI:SS
FORMS60_USER_DATE_FORMAT : DD-MON-RRRR
FORMS60_USE_CBO : [Unset]
NLS_DATE_FORMAT : DD-MON-RR
NLS_DATE_LANGUAGE : AMERICAN
NLS_LANG : AMERICAN_AMERICA.UTF8
NLS_NUMERIC_CHARACTERS : ,.
ORACLE_HOME : /slot/ems2570/appmgr/mz1yd102ora/8.0.6
ORACLE_PATH : [Unset]
ORA_NLS_CHARSET_CONVERSION : [Unset]
TNS_ADMIN : /slot/ems2570/appmgr/mz1yd102ora/8.0.6/network/admin/mz1yd102_rws60124rems
TWO_TASK : mz1yd102

—————————————-
Current Form
—————————————-
Form Application : Application Object Library
Form Name : FNDSCSGN
Form Path : UNKNOWN
Form Version : 11.5.124
Form Last Modified : $Date: 2006/10/24 10:54  $

—————————————-
Scheme Display Profiles
—————————————-
Java Look and Feel : ORACLE
Java Color Scheme : BLAF
Color Scheme Indicator : GENERIC
Indicator Colors : Y

—————————————-
Forms
—————————————-
APPSTAND : 11.5.33
FNDSCSGN : 11.5.124

—————————————-
Form Menus
—————————————-
FNDMENU : 11.5.51

—————————————-
Forms PL/SQL
—————————————-
APPCORE : 11.5.157
CUSTOM : 11.5.5.1150.1
FNDSQF : 11.5.111
GHR : 11.5.150
GLOBE : 11.5.46
GMS : 11.5.230.90.7
IGILUTIL2 : 11.5.97
IGILUTIL : 11.5.29
OPM : 11.5.33.115100.2
PQH_GEN : 11.5.118
PSA : 11.5.162
PSAC : 11.5.16
PSB : 11.5.24
VERT : 11.5.6

Flexfields Runtime Debugger

可以通过设定全局变量GLOBAL.FND_FLEX_FNDSQF_DEBUG来在Runtime调试Flexfield的一些信息

全局变量:GLOBAL.FND_FLEX_FNDSQF_DEBUG有’OFF’, ’EXCEPTION’, ’FAILURE’, ’DEBUG’ 四个级别的值。
可以通过
1.Diagnostics > Examine来设置这个全局变量
2.Block:GLOBAL,Filed:FND_FLEX_FNDSQF_DEBUG,Value可以有以下四种,

OFF – The default value. The debugger is turned off. Debug
messages will not be displayed.

EXCEPTION – Only exception debug messages will be
displayed. These messages come from ’EXCEPTION WHEN
OTHERS THEN’ parts of the code. Flexfields will still RAISE the
exceptions, that is, these exceptions will not be handled by the
flexfields code.)

FAILURE – Failure and exception debug messages will be
displayed. In general, these messages are from IF (NOT
FORM_SUCCESS) THEN parts of the code.

DEBUG – All debug messages will be displayed.

这段PL/SQL的执行结果真是让我大跌眼镜

set serveroutput on

BEGIN
IF (‘a’ <> NULL)  THEN
DBMS_OUTPUT.put_line (‘A’);

END IF;

DBMS_OUTPUT.put_line (‘B’);
END;

—Output—–
B

先Oracle DB再Oracle Dev套件,ORACLE_HOME会被覆盖

今天碰到了一个oracle数据库实例连接的问题。
我的一个数据库实例安装成功很久了(当初是可以连接的),之后很久没有连本地的oracle数据库实例。
今天一连数据库实例发现连不上,报:ORA-12560: TNS:protocol adapter error 的错。
查了下DBConsole和service两个服务都正常启动。

最后查明原因,是我在安装数据库之后,又安装的Oracle开发套件,而安装Oracle开发套件时也会在相应的注册表项中创建一个全新的oracle_home变量,这个变量会成为新的默认home项。
先Oracle DB再Oracle Dev套件,ORACLE_HOME会被覆盖
所以造成,你通过sqlplus去连得时候,它检查的是这个新的oracle_home下的tnsnames.ora,所以报了那个错

解决方法1:
在新的oracle_home目录下tnsnames.ora中添加你的tns,然后
C:\> set oracle_sid=<DB name>
e.g C:\> set oracle_sid=<rajesh>
C:\> sqlplus /nolog {press enter}
sql:\>connect sys as sysdba {press enter}
password : sys {press enter}
sql:\> connected
或者
解决方法2:
对于这种问题(即安装Oracle DB也安装Oracle Dev套件的),只要在系统的我的电脑->环境变量里边明确指定了ORACLE_HOME,ORACLE_SID,就没有问题了
ORACLE_HOME=D:\oracle\product\10.1.0\Db_1
ORACLE_SID=test

How to debug stored procedure/function in TOAD

研究了下在Toad是下如何调试Stored procedure或者function,之前都是看到Toad下有相应的菜单,但一直不知道怎么使用。

具体可以参考文章:Debugging PL/SQL, now available for everyone!

这里就通过我的一个case来说明具体怎么样在Toad中调试的:

这个Case的测试代码:

CREATE OR REPLACE  PROCEDURE APPS.swapn (num_one IN OUT NUMBER, num_two IN OUT NUMBER) IS
temp_num    NUMBER;
BEGIN
temp_num := num_one;
num_one := num_two;
num_two := temp_num ;
END;

打上断点

一定要先编译你的Procedure

Debug中Run(如果没有编译这个stored procedure,那么debug菜单下的绝大多数按钮都是灰显的)

调试前,设定输入参数的值

断点处就会停下,你可以在Watches输出窗口看到,变量值的变化

Oracle ERP Dev Download Links

增加一个页面,用于归纳Oracle ERP开发相关软件的链接,持续更新ing…

Oracle R12 User Guide:Click Here

Oracle SQL Developer: Click Here

Reports n Forms 6i: Click here

XML Publisher: Click here

Putty: Click here

Winscp (FTP Tool): Click here

Developer suite 10g (Including reports, forms, Jdeveloper): Click here

BI Publisher: Click here

Workflow Builder: Click here

Toad Free Trail: Click here

JDeveloper n ADF Software: Click here

Warehouse Builder Software: Click here

Discoverer Desktop Software: Click here

BPEL Software: Click here

JInitiator: Click here

Oracle Database 9i: Click here

Oracle Database 10g:Click Here

Oracle Database 11g: Click Here

Oracle Linux: Click here

Oracle Virtual Machine (VM): Click here

Oracle Applications 11i and R12: Click here

小小的里程点

今天修复了来公司以来的第50个Bug,不是什么大的成就,但也算一个小小的里程点。
记录一下,BUG:421xx87 – Subject:pqeqe:omfmtqai:inv:subinv & loc values not defaulting from item txn default form

BBS式的Bug系统

无意中一睹了Redhat的Bug系统的芳容,催生了我写这篇文章的想法。
我所在的公司Oracle的Bug系统和Redhat的Bug系统非常相似(莫非国外大公司的BUG系统都是这样的?),所以对这样的Bug系统有着切身的体会,作为开人人员,绝大多数的时候我们每天打交道最多的其实也就是Bug系统,所以早就有想法写一篇关于Bug系统的文章。

从界面上,我们能够看到Redhat的bug系统主要由两大块组成:
Bug Header,主要用于说明了这个Bug的标题,优先级,所发生的模块,bug的状态,当前处理人…
Bug Body,最开始的地方,QA或者客户先把Bug的内容作一描述,以及相关数据文件的路径…,然后开发人员分析,索要更多信息,关闭bug

从客户或者QA的角度,你能够很好的跟踪一个bug所处的状态,开发是否在修改bug,修改bug的进度,这个进度可以是非常详尽工作状态,比如开发人员有没有发现这个bug的Root cause,是否需要从客户环境获取更多的信息。这样的Bug系统是一个宝贵的资料库,可以供以后的开发人员参考,你的一份付出,可能可以很好的帮助到后来遇到类似BUG的开发人员,以后开发人员遇到了类似的问题,就可以参考你现在的修改方式,这样可以让后来人快速的站在前人的肩膀上。

这样的Bug系统还有的好处就是,当一个还没有修复完的Bug转给了另外一个开发人员,那个新接收的开发不是从零开始来的,他可以根据之前开发的一些文字获取更多的信息,很快的就可以站在“巨人”的肩膀上。

当你第一次看到这样的Bug系统,你会感觉它就是一个加强版的BBS。客户或者QA作为帖子的发起人,然后由开发人员进行回帖,在回帖的过程中,其他的开发人员也可以参与进来。开发人员可能一下没有明白发帖者的目的或者意思,可以要求发帖者(客户或者QA)提供更多的线索。开发人员在修复的过程中可以不断更新这个“帖子”,让客户或者QA知道你“在”做着,以及相应的进度。

现在国内很多软件公司的Bug系统更多的是注重Bug的统计,你未改bug是哪些,已改bug有多少…而对于你所每个bug的细节很少有关注。你打开一个未改的Bug,只有QA寥寥的一些描述和图片,如若不清楚,只能通过邮件或者IM的方式和QA交流,殊不知开发所问的问题,和QA的答复都是相当有价值的(对于后来人来说)。开发人员修复了一个bug就是一个,这个bug完全没有任何“影响力”,那么开发人员的工作所体现的价值也大打折扣。项目经理若想知道你某一个bug进度,只能通过询问这个开发人员才能获知,无形中也增加了沟通成本。