<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss'><id>tag:blogger.com,1999:blog-429266944698350812</id><updated>2009-10-13T03:59:02.896-07:00</updated><title type='text'>Gooply</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://gooply.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/429266944698350812/posts/default'/><link rel='alternate' type='text/html' href='http://gooply.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/429266944698350812/posts/default?start-index=26&amp;max-results=25'/><author><name>Dreaming Bug</name><uri>http://www.blogger.com/profile/00298973410574940859</uri><email>noreply@blogger.com</email></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>47</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-429266944698350812.post-6044483940931609167</id><published>2008-10-22T08:21:00.000-07:00</published><updated>2008-10-22T08:47:29.716-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CMMI'/><title type='text'>CMMI 预审</title><content type='html'>参加了CMMI的预审，记录部分感受。&lt;br /&gt;&lt;br /&gt;二级，关心需求的监控，变更管理，供应商的管理，配置管理，对设计和开发阶段并不关注。&lt;br /&gt;需求部分关注如下：需求怎样传递到项目经理，以及怎样确定立项。重点要强调，和客户进行了需求调研，并形成了BA分析报告。而且BA报告进行了评审，评审通过才立项。参加评审人员包括业务部门代表，经理，PM，PMO，IT经理等。在BA分析报告，包含相关的基本的估算，级别的估算。&lt;br /&gt;&lt;br /&gt;根据BA制定概要设计，需求跟踪矩阵。需求矩阵不仅仅只和需求相关，还和功能以及测试用例相关。&lt;br /&gt;&lt;br /&gt;制定WBS。首先对项目进行更具体的估算，子任务的划分，包括工作量，工期，资源成本，然后再确定WBS。&lt;br /&gt;&lt;br /&gt;怎样对项目进度进行监控？WBS有项目各任务完成时间，可以监控。然后项目Charter中也有各阶段开始和完成时间。&lt;br /&gt;&lt;br /&gt;变更管理。需求变更的流程，评审，变更跟踪单。变更分析包括变更的影响，时间，成本，以及需要更改的文档等等。&lt;br /&gt;&lt;br /&gt;配置管理。VSS相关功能，基线的种类。怎样比较版本和找到正确的版本。随来监控配置。&lt;br /&gt;&lt;br /&gt;QA，项目的QA人员。QA提供什么（QA检查清单，培训）。&lt;br /&gt;&lt;br /&gt;供应商的管理，供应商的QA，以及怎样对供应商进行监控。&lt;br /&gt;&lt;br /&gt;.....&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/429266944698350812-6044483940931609167?l=gooply.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gooply.blogspot.com/feeds/6044483940931609167/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=429266944698350812&amp;postID=6044483940931609167' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/429266944698350812/posts/default/6044483940931609167'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/429266944698350812/posts/default/6044483940931609167'/><link rel='alternate' type='text/html' href='http://gooply.blogspot.com/2008/10/cmmi.html' title='CMMI 预审'/><author><name>Dreaming Bug</name><uri>http://www.blogger.com/profile/00298973410574940859</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='08937255071733634038'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-429266944698350812.post-4791897975555030401</id><published>2008-03-17T09:12:00.000-07:00</published><updated>2008-03-17T09:15:16.604-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Preference SSWA'/><category scheme='http://www.blogger.com/atom/ns#' term='customize homepage'/><category scheme='http://www.blogger.com/atom/ns#' term='worklist'/><title type='text'>登录默认页面看到notifications提示</title><content type='html'>Home FAQ  Note:207541.1&lt;br /&gt;&lt;br /&gt; QUESTIONS &amp;amp; ANSWERS-------------------&lt;br /&gt;1. How can I create a notifications worklist in main menu?&lt;br /&gt;Answer------&lt;br /&gt; . Add Preferences responsibility to your user. &lt;br /&gt;. Click Create and Modify Pages icon at the top of your menu page. &lt;br /&gt;. Click New. &lt;br /&gt;. New Page Name = Worklist. &lt;br /&gt;. Apply.  &lt;br /&gt; . Select Worklist: single click on Worklist. &lt;br /&gt;. Click edit. &lt;br /&gt;. Choose Edit Content. &lt;br /&gt;. Select Worklist. &lt;br /&gt;. Single click on the "&gt;" icon.  . Done.&lt;br /&gt;&lt;br /&gt;如果不能看到plus-in，需要增加职责。&lt;br /&gt;&lt;br /&gt; Problem Description------------------- &lt;br /&gt;11i when trying to customize homepage and clicking on edit content no available plug-in to choose from.&lt;br /&gt;Navigation -&gt; Sign On  -&gt; On the Main Menu page&lt;br /&gt;Click on Create and Modify icon  -&gt;&lt;br /&gt;Create a new page and click on edit button -&gt;&lt;br /&gt;Press the edit content button -&gt;&lt;br /&gt;No available plug-in to select from  Solution Description--------------------&lt;br /&gt;&lt;br /&gt;In System Administrator Responsibility add the Preference Responsibility Navigation -&gt; System Administrator Responsibility -&gt; Security / User / Define -&gt; Query User and Add the 'Preference' Responsibiltiy&lt;br /&gt;&lt;br /&gt; 如果没有'Preference'职责，那就是'Preference SSWA'职责。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/429266944698350812-4791897975555030401?l=gooply.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gooply.blogspot.com/feeds/4791897975555030401/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=429266944698350812&amp;postID=4791897975555030401' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/429266944698350812/posts/default/4791897975555030401'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/429266944698350812/posts/default/4791897975555030401'/><link rel='alternate' type='text/html' href='http://gooply.blogspot.com/2008/03/notifications.html' title='登录默认页面看到notifications提示'/><author><name>Dreaming Bug</name><uri>http://www.blogger.com/profile/00298973410574940859</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='08937255071733634038'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-429266944698350812.post-2289548184412907690</id><published>2008-03-07T19:52:00.000-08:00</published><updated>2008-03-07T19:58:06.336-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Invalid Object'/><title type='text'>编译失效对象</title><content type='html'>正在尝试XML Gateway，出现问题，做了一个debug，发现问题的大概位置，然后在系统标准的package中ECX_UTILS中增加了几行语句，然后编译到数据库。&lt;br /&gt;&lt;br /&gt;发现无效的对象又多了一个，集中在ECX开头的几个Package，然后通过TOAD，查看系统中APPS这个Schema下的失效对象，将EXC开头的Package选中，重新编译。刷新后，失效对象越来越多。&lt;br /&gt;&lt;br /&gt;最后没有办法，只有请DBA在Unix端，通过ADAdmin来运行编译命令，解决问题。&lt;br /&gt;&lt;br /&gt;但是为什么会出现开始失效对象越来越多的情况呢？&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/429266944698350812-2289548184412907690?l=gooply.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gooply.blogspot.com/feeds/2289548184412907690/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=429266944698350812&amp;postID=2289548184412907690' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/429266944698350812/posts/default/2289548184412907690'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/429266944698350812/posts/default/2289548184412907690'/><link rel='alternate' type='text/html' href='http://gooply.blogspot.com/2008/03/blog-post.html' title='编译失效对象'/><author><name>Dreaming Bug</name><uri>http://www.blogger.com/profile/00298973410574940859</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='08937255071733634038'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-429266944698350812.post-3468984359224240796</id><published>2008-01-29T09:25:00.000-08:00</published><updated>2008-11-13T01:57:49.637-08:00</updated><title type='text'>怎样限制并发请求只能在指定时间运行?</title><content type='html'>怎样限制并发请求只能在指定时间运行?&lt;br /&gt;&lt;br /&gt;定义新的并发管理器，通过“Specialization Rules”将需要限定运行时间段的并发请求添加到新定义的并发管理器中。再定义work shift，定义并发请求的运行时间段，并将这个work shift分配给新定义的并发管理器。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;步骤（没有图片，arsenefang已发）：&lt;br /&gt;1） 定义work shift。&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_LVEyZaW7hys/R59kbEV28AI/AAAAAAAAAVs/ZN3m2bmRpn0/s1600-h/work+shifts.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5160954114174545922" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; CURSOR: hand" alt="" src="http://4.bp.blogspot.com/_LVEyZaW7hys/R59kbEV28AI/AAAAAAAAAVs/ZN3m2bmRpn0/s400/work+shifts.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;2） 定义并发请求管理器。&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_LVEyZaW7hys/R59kbUV28BI/AAAAAAAAAV0/k_ZvzObm7PU/s1600-h/managers.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5160954118469513234" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; CURSOR: hand" alt="" src="http://1.bp.blogspot.com/_LVEyZaW7hys/R59kbUV28BI/AAAAAAAAAV0/k_ZvzObm7PU/s400/managers.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;3） 通过Specialization Rules将需要限制将需要限定运行时间段的并发请求添加到新定义的并发管理器中。&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_LVEyZaW7hys/R59kbkV28CI/AAAAAAAAAV8/SYv6Nh69DMQ/s1600-h/rules.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5160954122764480546" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; CURSOR: hand" alt="" src="http://2.bp.blogspot.com/_LVEyZaW7hys/R59kbkV28CI/AAAAAAAAAV8/SYv6Nh69DMQ/s400/rules.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;4） 将work shift分配给并发管理器。&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_LVEyZaW7hys/R59kcEV28DI/AAAAAAAAAWE/A1J4f61C9fs/s1600-h/assing+work+shift.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5160954131354415154" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; CURSOR: hand" alt="" src="http://4.bp.blogspot.com/_LVEyZaW7hys/R59kcEV28DI/AAAAAAAAAWE/A1J4f61C9fs/s400/assing+work+shift.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;其他测试：&lt;br /&gt;1） 对于新定义的并发请求，并不会自动分配给某一个并发管理器，需要手工添加。&lt;br /&gt;2） 如果已经将一个并发程序分配到某一个并发管理器A，但是实际上却在另一个并发管理器B中运行，需要检查另一个并发请求管理器中是否也包括（include）了这个并发程序。如果不希望并发程序在B中运行，可以在B通过exclude这个并发程序。&lt;br /&gt;&lt;br /&gt;想知道并发程序究竟在哪些并发管理器中？&lt;br /&gt;通过界面查询比较麻烦，不能根据并发程序的名称进行查询，如果需要，可以通过如下SQL来完成。&lt;br /&gt;&lt;br /&gt;SELECT a.type_id, a.queue_application_id, a.concurrent_queue_id, a.type_code,&lt;br /&gt;a.type_id, a.include_flag, d.user_concurrent_program_name,&lt;br /&gt;c.description, c.user_concurrent_queue_name&lt;br /&gt;FROM applsys.fnd_concurrent_programs_tl d,&lt;br /&gt;applsys.fnd_concurrent_queue_content a,&lt;br /&gt;applsys.fnd_concurrent_programs b,&lt;br /&gt;fnd_concurrent_queues_vl c&lt;br /&gt;WHERE (a.type_id = b.concurrent_program_id)&lt;br /&gt;AND (a.type_application_id = b.application_id)&lt;br /&gt;AND (b.application_id = d.application_id)&lt;br /&gt;AND (b.concurrent_program_id = d.concurrent_program_id)&lt;br /&gt;AND a.concurrent_queue_id = c.concurrent_queue_id&lt;br /&gt;AND d.user_concurrent_program_name = Your concurrent program name&lt;br /&gt;&lt;br /&gt;3） 对于有两个并发管理器都包括同一个并发程序，这个并发程序究竟在哪个并发管理器中运行，比较随机。可能，哪个free，哪个work。这和设定process的个数，sleep的时间相关，还请有研究的同志多多发言。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/429266944698350812-3468984359224240796?l=gooply.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gooply.blogspot.com/feeds/3468984359224240796/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=429266944698350812&amp;postID=3468984359224240796' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/429266944698350812/posts/default/3468984359224240796'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/429266944698350812/posts/default/3468984359224240796'/><link rel='alternate' type='text/html' href='http://gooply.blogspot.com/2008/01/blog-post.html' title='怎样限制并发请求只能在指定时间运行?'/><author><name>Dreaming Bug</name><uri>http://www.blogger.com/profile/00298973410574940859</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='08937255071733634038'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_LVEyZaW7hys/R59kbEV28AI/AAAAAAAAAVs/ZN3m2bmRpn0/s72-c/work+shifts.jpg' height='72' width='72'/><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-429266944698350812.post-1530261204717955085</id><published>2008-01-15T09:21:00.000-08:00</published><updated>2008-01-15T09:22:07.000-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='qarun'/><title type='text'>form的label变更影响了qarun的脚本</title><content type='html'>一直运行的qarun脚本突然不能收集其中几个事务的性能数据了，搞了老半天才发现ERP升级之后，其中的某一个form的label名字更改了，从QUERY_MANAGER_×××变成了QM_×××。所以，脚本怎么也不能定位对应的field，出现错误，脚本便退出了。&lt;br /&gt;&lt;br /&gt;是个小问题，开始还以为是预置文件的问题，因为还出现FND: Developer Mode未设置的错误，一直怀疑这个来着。&lt;br /&gt;&lt;br /&gt;搞定手工。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/429266944698350812-1530261204717955085?l=gooply.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gooply.blogspot.com/feeds/1530261204717955085/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=429266944698350812&amp;postID=1530261204717955085' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/429266944698350812/posts/default/1530261204717955085'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/429266944698350812/posts/default/1530261204717955085'/><link rel='alternate' type='text/html' href='http://gooply.blogspot.com/2008/01/formlabelqarun.html' title='form的label变更影响了qarun的脚本'/><author><name>Dreaming Bug</name><uri>http://www.blogger.com/profile/00298973410574940859</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='08937255071733634038'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-429266944698350812.post-3911848401418623715</id><published>2007-12-13T07:46:00.000-08:00</published><updated>2008-11-13T01:57:49.768-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sun-web.xml'/><category scheme='http://www.blogger.com/atom/ns#' term='iplanet'/><category scheme='http://www.blogger.com/atom/ns#' term='DOCTYPE'/><title type='text'>sun-web.xml之痛</title><content type='html'>去年开发的系统，突然出现了问题，问了原来的开发的成员，说时间太久忘了，只要找我，其实我也差不多忘了。&lt;br /&gt;&lt;br /&gt;错误主要是在显示系统中详细信息和保存项目的时候，很快就定位是iplanet端数据库连接池配置问题。&lt;br /&gt;&lt;br /&gt;于是，让DBA检查，将密码重新设置，没有成功。&lt;br /&gt;让DBA发过来日志有如下错误，可能是sun-web.xml文件有问题，是不是UNIX下字符出现错误，将我本机的这个文件发过去给DBA，没有成功。&lt;br /&gt;&lt;br /&gt;&lt;em&gt;WEB0120: XML error parsing deployment descriptor [/~~~~~~~~/wwwroot/WEB-INF/sun-web.xml]&lt;br /&gt;Failed to create the XML-DOM Document. Check your XML to make sure it is correct.&lt;br /&gt;java.net.ConnectException: 连接超时 at org.apache.crimson.parser.Parser2.fatal(Parser2.java:3376) at org.apache.crimson.parser.Parser2.externalParameterEntity(Parser2.java:3064) at org.apache.crimson.parser.Parser2.maybeDoctypeDecl(Parser2.java:1347) at org.apache.crimson.parser.Parser2.parseInternal(Parser2.java:656)&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;最后，重新考虑这个日志的时候，忽略了“java.net.ConnectException: 连接超时 ” 这个错误。怎么会网络访问，重新检查sun-web.xml，发现DOCTYPE节点，其声明的dtd文件是指向&lt;a href="http://www.sun.com/"&gt;http://www.sun.com/&lt;/a&gt;的，可能这就是问题所在。以前从来没有注意这个问题，对于DOCTYPE，PUBLIC指定DTD文件是在系统之外，需远程访问；如果是SYSTEM，就在本地找寻dtd文件。虽然在我机器上将网络断开，没有重现这个错误，但是比较肯定系统就是遇到这个问题。将这个节点去掉，将sun-web.xml发给系统管理员，果然成功了！&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&amp;lt!DOCTYPE sun-web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Application Server 8.1 Servlet 2.4//EN" "http://www.sun.com/software/appserver/dtds/sun-web-app_2_4-1.dtd"&amp;gt&lt;br /&gt;&lt;br /&gt;另外，将系统迁移到iplanet的时候，磕磕碰碰，花费了以整体的时间，记录下来以备忘。&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;1）Iplanet的版本。&lt;/strong&gt;&lt;br /&gt;从sun的官方网站下载要注册，我原来有帐户但是忘了，于是从别的地方下载了一个。本来是要6.1版本的，下来发现是6.0的，这就是后面很多错误的根源。&lt;br /&gt;部署完成之后，访问系统的时候，总是出现如下错误：&lt;br /&gt;“"No WebApplicationContext found: no ContextLoaderListener registered"”&lt;br /&gt;在web.xml中增加如下内容，可以Iplanet可以成功启动。&lt;br /&gt;&lt;br /&gt;&amp;ltservlet&amp;gt&lt;br /&gt; &amp;ltservlet-name&amp;gtcontext&amp;lt/servlet-name&amp;gt&lt;br /&gt;   &amp;ltservlet-class&amp;gt&lt;br /&gt;   org.springframework.web.context.ContextLoaderServlet&lt;br /&gt;   &amp;lt/servlet-class&amp;gt&lt;br /&gt; &amp;ltload-on-startup&amp;gt1&amp;lt/load-on-startup&amp;gt&lt;br /&gt;&amp;lt/servlet&amp;gt&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;但是访问系统的时候，出现Servlet 2.2中不支持setCharacterEncoding() 错误。乖乖，原来IPlanet只支持Servlet 2.2，而我需要的是2.3版本。于是从Sun上下载了6.1颁布，不需要在web.xml增加上述那段，部署成功。&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;2）数据库连接池的建立&lt;/strong&gt;&lt;br /&gt;在Iplanet端建立了连接池，出现总是找不到驱动程序的错误，而实际上classes2.jar已经在WEB-INF/lib路径下。最后在JVM Path Settings中将JDBC的路径直接出入，解决这个问题。&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_LVEyZaW7hys/R2FUTKU9sEI/AAAAAAAAAUk/fWq1sZuLbkw/s1600-h/jdbcdirver.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5143484937600348226" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; CURSOR: hand" alt="" src="http://1.bp.blogspot.com/_LVEyZaW7hys/R2FUTKU9sEI/AAAAAAAAAUk/fWq1sZuLbkw/s400/jdbcdirver.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;3）Iplanet程序的部署。&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;首先是将Web程序打包成war。但是Iplanet部署war文件的时候有大小限制，可以先不降lib目录打包，待部署完成再拷贝过去。&lt;br /&gt;部署应用。其对应的路径为：&lt;br /&gt;Administration Server &gt; MyServer &gt; vsclass1 &gt; WebApplication。&lt;br /&gt;其中MyServer是系统默认建立的服务器，vsclass1是系统默认建立的虚拟class。可以同时管理n个服务器，一个服务器上又可以建立n个vsclass1，一个vsclass可以对应多个WebApplication。所以，从左到右都是1:n的关系。为什么会有vsclass1的概念呢？ 这是因为对于某些Web Application，其配置可能绝大部分相同，所以可以统一在vsclass层次定义就可，这些Web Applications共享这些设置。这个设计应该是为哪些提供hosting服务的机构设定的吧。但是看看现在hosting，绝大部分都在使用LAMP。&lt;br /&gt;然后就是在vsclass层建立，数据库链接池和JDBC的Resource。&lt;br /&gt;最后别忘了将lib拷贝到Web Application的WEB-INF目录下。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;总结，&lt;/strong&gt;&lt;br /&gt;1) 最初发现问题的时候，虽然大概定位，但是没有再深究问题的根本，再加上时差的问题，问题解决效率不高。&lt;br /&gt;2) 没有模拟服务器环境，而开始只在Tomcat上测试，而sun-web.xml在Tomcat环境下是不需要的，对问题的重现带来困难。&lt;br /&gt;3) 在定位sun-web.xml文件的错误之后，没有静下心来研究文档结构，而是意味怀疑字符问题，耽误解决问题的时间。&lt;br /&gt;&lt;br /&gt;Any way，问题总算解决了，休息一下，休息一下。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/429266944698350812-3911848401418623715?l=gooply.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gooply.blogspot.com/feeds/3911848401418623715/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=429266944698350812&amp;postID=3911848401418623715' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/429266944698350812/posts/default/3911848401418623715'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/429266944698350812/posts/default/3911848401418623715'/><link rel='alternate' type='text/html' href='http://gooply.blogspot.com/2007/12/sun-webxml.html' title='sun-web.xml之痛'/><author><name>Dreaming Bug</name><uri>http://www.blogger.com/profile/00298973410574940859</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='08937255071733634038'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_LVEyZaW7hys/R2FUTKU9sEI/AAAAAAAAAUk/fWq1sZuLbkw/s72-c/jdbcdirver.jpg' height='72' width='72'/><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-429266944698350812.post-3719357786270253713</id><published>2007-12-04T07:36:00.000-08:00</published><updated>2007-12-04T07:46:34.147-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='compuware'/><category scheme='http://www.blogger.com/atom/ns#' term='任务'/><category scheme='http://www.blogger.com/atom/ns#' term='定时运行'/><title type='text'>拷贝定时执行的任务</title><content type='html'>测试机器上的定期运行的任务停止运行已经有快两个星期，最后一次运行应该是感恩节前了。主要的问题是通过执行程序“Start ClientVantage.exe”再也不能生成计划任务 “Standard Transactions” 了。重新启动，OS升级，杀掉系统中的相关进程都不能。虽然是测试机器，但是数据有时候还是有一定参考意义，今天暂时找到一个方法。&lt;br /&gt;&lt;br /&gt;1. 从别的机器上将Windows/tasks下的“Standard Transactions”任务拷贝到测试机器的Windows/tasks目录下。&lt;br /&gt;2. 执行的时候应该会出现“Can not start”的错误，那么就编辑这个任务，将开始时间更改一下，系统会提示让你输入这个操作系统的密码，输入完成确定之后，任务就可以正常执行了。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;这只是一个暂时的方法，对于每天重新启动，还是不能应付，再想办法。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/429266944698350812-3719357786270253713?l=gooply.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gooply.blogspot.com/feeds/3719357786270253713/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=429266944698350812&amp;postID=3719357786270253713' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/429266944698350812/posts/default/3719357786270253713'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/429266944698350812/posts/default/3719357786270253713'/><link rel='alternate' type='text/html' href='http://gooply.blogspot.com/2007/12/blog-post.html' title='拷贝定时执行的任务'/><author><name>Dreaming Bug</name><uri>http://www.blogger.com/profile/00298973410574940859</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='08937255071733634038'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-429266944698350812.post-1827695433557684210</id><published>2007-11-06T07:43:00.000-08:00</published><updated>2008-11-13T01:57:49.921-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Supplier Item Catalog Window'/><category scheme='http://www.blogger.com/atom/ns#' term='function secuiry'/><title type='text'>怎样disable掉Supplier Item Catalog Window中的标签页</title><content type='html'>怎样disable掉Supplier Item Catalog Window中的标签页&lt;br /&gt;在采购模块中，如果从菜单Supplier Item Catalog进入，输入条件，点击Find，就会进入如下的界面。在这个界面中，如果我只想要用户只能够看到“Requisition Templates”，应该怎样设置呢？ 手册有这么一段，但是没有说具体怎么做：&lt;br /&gt;&lt;br /&gt;========================&lt;br /&gt;There are four tabbed regions in the upper screen of this folder window,but Function Security can be used to determine whether a user will beable to see all of them.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_LVEyZaW7hys/RzCMcMOyT9I/AAAAAAAAATU/ro92vX95Hcg/s1600-h/192482055.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5129754391522463698" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; CURSOR: hand" alt="" src="http://1.bp.blogspot.com/_LVEyZaW7hys/RzCMcMOyT9I/AAAAAAAAATU/ro92vX95Hcg/s400/192482055.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Metalink的一文：&lt;br /&gt;=============================&lt;br /&gt;Subject: How To Restrict Access To Specific Form's Tab In Oracle Applications 11i?&lt;br /&gt;Doc ID: Note:189420.1 Type: HOWTO&lt;br /&gt;Last Revision Date: 05-AUG-2003 Status: PUBLISHED&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Goal: How to restrict access to specific form's tab in Oracle Applications 11i?&lt;br /&gt;Fact: Oracle Application Object Library 11.5&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Fix:&lt;br /&gt;&lt;br /&gt;Every form's tab represents a function. Function security is controlled by Responsibilities. A system administrator should exclude the form's tab Corresponding function from the menu structure assigned to a responsibility, users belong to this responsibility will not be able to access this form's tab anymore. As an example, the following steps will disable the Costing tab in Orgination Items form for some users:&lt;br /&gt;1. Create a new responsibility and attach INV_NAVIGATE menu to it.&lt;br /&gt;2. Assign the new responsibility to users that will not access the above tab.&lt;br /&gt;3. From System Administrator--&gt;menus--&gt;query INV_NAVIGATE and display the menu tree, drill down items --&gt;Organization Items--&gt;get the display name&lt;br /&gt;of the function corresponding to the Costing tab 'Items:Costing Group'.&lt;br /&gt;4. System Administrator--&gt;Responsibilities--&gt;Define, query the new responsibility and use the Menu Exclusions tab to exclude the function in step 3.&lt;br /&gt;5. Logon to Applications using the new responsibility and navigate to&lt;br /&gt;Organization Items form, the Costing tab is disabled.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/429266944698350812-1827695433557684210?l=gooply.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gooply.blogspot.com/feeds/1827695433557684210/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=429266944698350812&amp;postID=1827695433557684210' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/429266944698350812/posts/default/1827695433557684210'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/429266944698350812/posts/default/1827695433557684210'/><link rel='alternate' type='text/html' href='http://gooply.blogspot.com/2007/11/disablesupplier-item-catalog-window.html' title='怎样disable掉Supplier Item Catalog Window中的标签页'/><author><name>Dreaming Bug</name><uri>http://www.blogger.com/profile/00298973410574940859</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='08937255071733634038'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_LVEyZaW7hys/RzCMcMOyT9I/AAAAAAAAATU/ro92vX95Hcg/s72-c/192482055.jpg' height='72' width='72'/><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-429266944698350812.post-366575825752689607</id><published>2007-10-25T14:00:00.000-07:00</published><updated>2008-11-13T01:57:51.890-08:00</updated><title type='text'>采购 -&gt; AutoCreate</title><content type='html'>&lt;strong&gt;Action：&lt;/strong&gt;&lt;br /&gt;可以将请购单新增文档或则添加到已存在的文档。有两种方式，一种是Create，一种是Add To。&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_LVEyZaW7hys/RyPP1MOyTzI/AAAAAAAAASE/DofknF8aLVE/s1600-h/b1.PNG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5126169313601015602" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; CURSOR: hand" alt="" src="http://4.bp.blogspot.com/_LVEyZaW7hys/RyPP1MOyTzI/AAAAAAAAASE/DofknF8aLVE/s400/b1.PNG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Add To&lt;br /&gt;将新的请购单创建到采购文档T_ClosePoint1，新增加的采购行序号2。&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_LVEyZaW7hys/RyPP18OyT3I/AAAAAAAAASk/bUujamUQPP0/s1600-h/b5.PNG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5126169326485917554" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; CURSOR: hand" alt="" src="http://3.bp.blogspot.com/_LVEyZaW7hys/RyPP18OyT3I/AAAAAAAAASk/bUujamUQPP0/s400/b5.PNG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;是否可以将请购单Add To已经存在的采购单，必须依据采购文档的安全设置。如果Access Level为View Only。&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_LVEyZaW7hys/RyPP1cOyT0I/AAAAAAAAASM/_22pvlVZPCM/s1600-h/b2.PNG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5126169317895982914" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; CURSOR: hand" alt="" src="http://1.bp.blogspot.com/_LVEyZaW7hys/RyPP1cOyT0I/AAAAAAAAASM/_22pvlVZPCM/s400/b2.PNG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;那么当点击Manual按钮进行创建的时候，系统提示你选择一个已经存在的文档。如果当前用户原来没有创建采购订单，系统将找不对应的采购订单（因为采购文档的安全设置）&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_LVEyZaW7hys/RyPP1cOyT1I/AAAAAAAAASU/eVNUFKSXVho/s1600-h/b3.PNG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5126169317895982930" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; CURSOR: hand" alt="" src="http://1.bp.blogspot.com/_LVEyZaW7hys/RyPP1cOyT1I/AAAAAAAAASU/eVNUFKSXVho/s400/b3.PNG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;如果采购文档的安全设置为可以修改。那么这个时候再Add To，可以找到你需要将请购单提交进去的采购文档。&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_LVEyZaW7hys/RyPP1sOyT2I/AAAAAAAAASc/hWt0WuqO18s/s1600-h/b4.PNG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5126169322190950242" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; CURSOR: hand" alt="" src="http://2.bp.blogspot.com/_LVEyZaW7hys/RyPP1sOyT2I/AAAAAAAAASc/hWt0WuqO18s/s400/b4.PNG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Document Type：&lt;/strong&gt;&lt;br /&gt;已经审批的请购单，可以创建如下4种。未审批的请购单只能创建RFQ。&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_LVEyZaW7hys/RyEEiMOyTqI/AAAAAAAAAQ8/wegcbb4lj1A/s1600-h/b6.PNG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5125382836369641122" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; CURSOR: hand" alt="" src="http://2.bp.blogspot.com/_LVEyZaW7hys/RyEEiMOyTqI/AAAAAAAAAQ8/wegcbb4lj1A/s400/b6.PNG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;如果针对为审批未通过的请购单创建Standard PO/Planned PO/Blanket Release，那么将会提示如下提示（Manual和Auto略有不同）。&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_LVEyZaW7hys/RyEEjsOyTrI/AAAAAAAAARE/U9A2Iy4n7To/s1600-h/b7.PNG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5125382862139444914" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; CURSOR: hand" alt="" src="http://4.bp.blogspot.com/_LVEyZaW7hys/RyEEjsOyTrI/AAAAAAAAARE/U9A2Iy4n7To/s400/b7.PNG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Grouping：&lt;/strong&gt;&lt;br /&gt;如果是分组方式Default，在创建采购订单行的时候，将会根据请购单行的Item，Item版本，行类型，单位等进行分组。如果是Requisition，那么每一个请购行将会对应一个采购行。&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_LVEyZaW7hys/RyEEjsOyTsI/AAAAAAAAARM/Q0aaTLribLA/s1600-h/b8.PNG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5125382862139444930" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; CURSOR: hand" alt="" src="http://4.bp.blogspot.com/_LVEyZaW7hys/RyEEjsOyTsI/AAAAAAAAARM/Q0aaTLribLA/s400/b8.PNG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;针对如下两个请购行。&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_LVEyZaW7hys/RyEEj8OyTtI/AAAAAAAAARU/grw9JOXWJAs/s1600-h/b9.PNG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5125382866434412242" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; CURSOR: hand" alt="" src="http://1.bp.blogspot.com/_LVEyZaW7hys/RyEEj8OyTtI/AAAAAAAAARU/grw9JOXWJAs/s400/b9.PNG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;如果Grouping = Default，那么创建采购单的时候，将会分组到一个采购订单行上，采购数量为两个请购数量之和。也就是将两者合并了。&lt;br /&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;a href="http://4.bp.blogspot.com/_LVEyZaW7hys/RyEESsOyTkI/AAAAAAAAAQM/HG1BAxfy9j4/s1600-h/b10.PNG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5125382570081668674" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; CURSOR: hand" alt="" src="http://4.bp.blogspot.com/_LVEyZaW7hys/RyEESsOyTkI/AAAAAAAAAQM/HG1BAxfy9j4/s400/b10.PNG" border="0" /&gt;&lt;/a&gt; &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;如果Grouping = Requisition，一个采购单行就会对应一个请购单行。上述的两个请购单行，创建了两个采购单行。&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_LVEyZaW7hys/RyPTQMOyT6I/AAAAAAAAAS8/L-BaCn0h4G4/s1600-h/b33.PNG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5126173075992367010" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; CURSOR: hand" alt="" src="http://4.bp.blogspot.com/_LVEyZaW7hys/RyPTQMOyT6I/AAAAAAAAAS8/L-BaCn0h4G4/s400/b33.PNG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_LVEyZaW7hys/RyEETMOyTlI/AAAAAAAAAQU/HhQoFegGY_8/s1600-h/b11.PNG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5125382578671603282" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; CURSOR: hand" alt="" src="http://2.bp.blogspot.com/_LVEyZaW7hys/RyEETMOyTlI/AAAAAAAAAQU/HhQoFegGY_8/s400/b11.PNG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Return Requistion：&lt;br /&gt;&lt;/strong&gt;Path: AutoCreate（M）-&gt; Tools （M）-&gt;Return Requisition（M）&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_LVEyZaW7hys/RyEETMOyTmI/AAAAAAAAAQc/Us1A6OlUeYE/s1600-h/b12.PNG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5125382578671603298" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; CURSOR: hand" alt="" src="http://2.bp.blogspot.com/_LVEyZaW7hys/RyEETMOyTmI/AAAAAAAAAQc/Us1A6OlUeYE/s400/b12.PNG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Modify：&lt;/strong&gt;&lt;br /&gt;AutoCreate（M）-&gt; Tools （M）-&gt;Modify（M）&lt;br /&gt;将原来的一行分成两行。&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_LVEyZaW7hys/RyEETcOyTnI/AAAAAAAAAQk/ixExO287w6E/s1600-h/b13.PNG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5125382582966570610" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; CURSOR: hand" alt="" src="http://3.bp.blogspot.com/_LVEyZaW7hys/RyEETcOyTnI/AAAAAAAAAQk/ixExO287w6E/s400/b13.PNG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;完成之后，在AutoCreate窗口只能看到新创建的两行。&lt;/div&gt;&lt;div&gt;&lt;a href="http://4.bp.blogspot.com/_LVEyZaW7hys/RyEETsOyToI/AAAAAAAAAQs/12tHqU5clbc/s1600-h/b14.PNG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5125382587261537922" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; CURSOR: hand" alt="" src="http://4.bp.blogspot.com/_LVEyZaW7hys/RyEETsOyToI/AAAAAAAAAQs/12tHqU5clbc/s400/b14.PNG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;但是从Requisition Lines Summary可以看到新创建的两行，和原来存在的一行。&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_LVEyZaW7hys/RyPSbMOyT4I/AAAAAAAAASs/zPDytRjILEQ/s1600-h/b15.PNG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5126172165459300226" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; CURSOR: hand" alt="" src="http://4.bp.blogspot.com/_LVEyZaW7hys/RyPSbMOyT4I/AAAAAAAAASs/zPDytRjILEQ/s400/b15.PNG" border="0" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/429266944698350812-366575825752689607?l=gooply.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gooply.blogspot.com/feeds/366575825752689607/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=429266944698350812&amp;postID=366575825752689607' title='2 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/429266944698350812/posts/default/366575825752689607'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/429266944698350812/posts/default/366575825752689607'/><link rel='alternate' type='text/html' href='http://gooply.blogspot.com/2007/10/blog-post_25.html' title='采购 -&gt; AutoCreate'/><author><name>Dreaming Bug</name><uri>http://www.blogger.com/profile/00298973410574940859</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='08937255071733634038'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_LVEyZaW7hys/RyPP1MOyTzI/AAAAAAAAASE/DofknF8aLVE/s72-c/b1.PNG' height='72' width='72'/><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-429266944698350812.post-2584341783836400026</id><published>2007-10-24T14:42:00.000-07:00</published><updated>2008-11-13T01:57:52.717-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Purchasing Workflow'/><category scheme='http://www.blogger.com/atom/ns#' term='Notification Routing Rules'/><title type='text'>采购 -&gt; Notification Routing Rules</title><content type='html'>如果审批者由于出差不能及时审批订单，这时候采购员叫天天不应，叫地地不灵。那就叫系统管理员。&lt;br /&gt;一种方法通过“Mass Forwarding Documents”功能，将提交给某一个审批者的订单，批量转发给另外的审批者。&lt;br /&gt;&lt;br /&gt;这里讲述的是另外一种方法——Notification Routing Rules。这个功能按钮存在Notification页面上。主要功能就是创建一个Notification路由的规则，对于接收Notification，采取转发，重新分配，或者审批等。如果是系统管理员，那么可以针对任何用户接收的Notification可以创建规则。如果是普通用户，那么只能针对自己的接收的Notification创建规则。&lt;br /&gt;假定，现在你要出差，对于出差这段时间，对所有提交给你审批的采购订单都需要转发到另外一个审批者代劳。那就，开始设置：&lt;br /&gt;&lt;br /&gt;1. 点击Notification Summary打开Notification页面，点击页面上的Routing Rules按钮。&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_LVEyZaW7hys/Rx-9FQfptSI/AAAAAAAAAPc/CGfX973-BCk/s1600-h/a1.PNG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5125022798995633442" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; CURSOR: hand" alt="" src="http://4.bp.blogspot.com/_LVEyZaW7hys/Rx-9FQfptSI/AAAAAAAAAPc/CGfX973-BCk/s400/a1.PNG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;2. Routing Rules列表中，点击“Create Rule”来创建一个新的Rule。&lt;br /&gt;在Notification的窗口，有创建Create Notification Rule的按钮。&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_LVEyZaW7hys/Rx-9FgfptTI/AAAAAAAAAPk/ZSkNppf_Izw/s1600-h/a2.PNG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5125022803290600754" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; CURSOR: hand" alt="" src="http://1.bp.blogspot.com/_LVEyZaW7hys/Rx-9FgfptTI/AAAAAAAAAPk/ZSkNppf_Izw/s400/a2.PNG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;3. 创建Rule的第一步，选择Item Type，可以选择PO Approval或者Requisition，或者两者。&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_LVEyZaW7hys/Rx-9FgfptUI/AAAAAAAAAPs/xAq9jZ-SVcE/s1600-h/a3.PNG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5125022803290600770" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; CURSOR: hand" alt="" src="http://1.bp.blogspot.com/_LVEyZaW7hys/Rx-9FgfptUI/AAAAAAAAAPs/xAq9jZ-SVcE/s400/a3.PNG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;4. 创建Rule的第二步，设置Notification的格式。&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_LVEyZaW7hys/Rx-9FgfptVI/AAAAAAAAAP0/sHYIqFC0p_g/s1600-h/a4.PNG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5125022803290600786" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; CURSOR: hand" alt="" src="http://1.bp.blogspot.com/_LVEyZaW7hys/Rx-9FgfptVI/AAAAAAAAAP0/sHYIqFC0p_g/s400/a4.PNG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;5. 创建Rule的第三步，设置Rule的有效日期，收到Notification后采取的动作。&lt;a href="http://3.bp.blogspot.com/_LVEyZaW7hys/Rx-9GAfptWI/AAAAAAAAAP8/r4AOI2YhTxo/s1600-h/a5.PNG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5125022811880535394" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; CURSOR: hand" alt="" src="http://3.bp.blogspot.com/_LVEyZaW7hys/Rx-9GAfptWI/AAAAAAAAAP8/r4AOI2YhTxo/s400/a5.PNG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;6. 点击Submit。收拾东西出差吧，出自己的差，让别人去烦审批的事情吧。&lt;br /&gt;&lt;br /&gt;7. 其他，测试过程中，不要将Forward To的用户设置为提交审批请求的Buyer，因为在文档类型中设置了Buyer不能审批，最后在系统中出现大量的提示信息——invalid forward-to person，界面也在提交审批界面Pending住，最后只要重新来过。 &lt;a href="http://1.bp.blogspot.com/_LVEyZaW7hys/Rx-9LgfptXI/AAAAAAAAAQE/o4K6bow6mlo/s1600-h/a6.PNG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5125022906369815922" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; CURSOR: hand" alt="" src="http://1.bp.blogspot.com/_LVEyZaW7hys/Rx-9LgfptXI/AAAAAAAAAQE/o4K6bow6mlo/s400/a6.PNG" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/429266944698350812-2584341783836400026?l=gooply.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gooply.blogspot.com/feeds/2584341783836400026/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=429266944698350812&amp;postID=2584341783836400026' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/429266944698350812/posts/default/2584341783836400026'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/429266944698350812/posts/default/2584341783836400026'/><link rel='alternate' type='text/html' href='http://gooply.blogspot.com/2007/10/notification-routing-rules.html' title='采购 -&gt; Notification Routing Rules'/><author><name>Dreaming Bug</name><uri>http://www.blogger.com/profile/00298973410574940859</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='08937255071733634038'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_LVEyZaW7hys/Rx-9FQfptSI/AAAAAAAAAPc/CGfX973-BCk/s72-c/a1.PNG' height='72' width='72'/><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-429266944698350812.post-6509928286276124095</id><published>2007-10-23T13:50:00.000-07:00</published><updated>2007-10-23T13:52:45.968-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Financials Options'/><title type='text'>采购设置 ——&gt; 3 财务选项</title><content type='html'>还是没有图片&lt;br /&gt;&lt;br /&gt;Supplier – Entry&lt;br /&gt;&lt;br /&gt;Path：Setup (M) -&gt;Organization (M) -&gt;Financials Options (M)&lt;br /&gt;是针对Supplier定义的相关设置。对于RFQ Only Site，Hold Unmatched Invoiced，Invoice Match Option等选项，这里的设置会默认到供应商以及供应商地点上对应选项值的设定。Supplier Number，是设置供应商编码的规则。&lt;br /&gt;&lt;br /&gt;a.      RFQ Only Site&lt;br /&gt;如果Disable这个选项。&lt;br /&gt;Path：Setup (M) -&gt;Organization (M) -&gt;Financials Options (M) -&gt; Supplier Entry (T)&lt;br /&gt;&lt;br /&gt;对于新创建的供应商地点，这个选项默认也是Disable的。&lt;br /&gt;Path：Supplier Base (M) –&gt; Suppliers (M) -&gt; Sites (B)&lt;br /&gt;&lt;br /&gt;如果Enable这个选项。&lt;br /&gt;Path：Setup (M) -&gt;Organization (M) -&gt;Financials Options (M) -&gt; Supplier Entry (T)&lt;br /&gt;&lt;br /&gt;对于新创建的供应商地点，这个选项默认也是Enable的。&lt;br /&gt;Path：Supplier Base (M) –&gt; Suppliers (M) -&gt; Sites (B)&lt;br /&gt;&lt;br /&gt;如果供应商地点一旦被设置为RFQ Only，那么创建采购订单的时候将不能从Site中选择这个供应商地点。&lt;br /&gt;Path：Purchase Orders（M） -&gt; Purchase Orders（M）&lt;br /&gt;&lt;br /&gt;b.      Hold Unmatched Invoiced&lt;br /&gt;&lt;br /&gt;如果Enable这个选项。&lt;br /&gt;Path：Setup (M) -&gt;Organization (M) -&gt;Financials Options (M) -&gt; Supplier Entry (T)&lt;br /&gt;&lt;br /&gt;对于新创建的供应商以及地点，这个选项默认也是Enable的。&lt;br /&gt;Path：Supplier Base (M) –&gt; Suppliers (M) -&gt; Sites (B)&lt;br /&gt;&lt;br /&gt;c.       Invoice Match Option&lt;br /&gt;&lt;br /&gt;如果选择Purchase Order。&lt;br /&gt;Path：Setup (M) -&gt;Organization (M) -&gt;Financials Options (M) -&gt; Supplier Entry (T)&lt;br /&gt;&lt;br /&gt;对于新创建的供应商以及地点，这个选项默认也是Purchase Order的。&lt;br /&gt;Path：Supplier Base (M) –&gt; Suppliers (M)&lt;br /&gt;&lt;br /&gt;d.      Supplier Number&lt;br /&gt;供应商编码的编码规则。&lt;br /&gt;Path：Setup (M) -&gt;Organization (M) -&gt;Financials Options (M) -&gt; Supplier Entry (T)&lt;br /&gt;&lt;br /&gt;e.      Supplier – Payables&lt;br /&gt;&lt;br /&gt;默认供应商定义窗口的Payment页上相关域的值。设置。&lt;br /&gt;Path：Setup (M) -&gt;Organization (M) -&gt;Financials Options (M) -&gt; Supplier - Payables (T)&lt;br /&gt;&lt;br /&gt;从供应商Payment页检查。&lt;br /&gt;Path：Supplier Base (M) –&gt; Suppliers (M) -&gt; Payment （T）&lt;br /&gt;&lt;br /&gt;f.        Supplier – Purchasing&lt;br /&gt;&lt;br /&gt;默认供应商定义窗口的Purchasing页上相关域的值。设置。&lt;br /&gt;Path：Setup (M) -&gt;Organization (M) -&gt;Financials Options (M) -&gt; Supplier - Purchasing (T)&lt;br /&gt;&lt;br /&gt;默认值被带入供应商定义窗口。&lt;br /&gt;Path：Supplier Base (M) –&gt; Suppliers (M)&lt;br /&gt;&lt;br /&gt;g.      Inventory Organization&lt;br /&gt;&lt;br /&gt;创建主组织（000）创建新的Item，不将其分配给其他组织。将Inventory Organization更改为C10（非主组织）&lt;br /&gt;&lt;br /&gt;创建采购订单，可以看到系统不能找到对应的采购编码。&lt;br /&gt;Path：Purchase Orders（M） -&gt; Purchase Orders（M）&lt;br /&gt;&lt;br /&gt;结论：一旦财务选项中定义了Inventory Organization，那么对于整个OU，对应采购订单行上所有的Item只能这里定义的Inventory Organization上来。而对于Shipment上的Org，包括定义Item的Org以及分配了这个Item的Org。例如，如果将这个Item分配给C10，查看Shipment行，可以看到Org可以选择000或者C10。&lt;br /&gt;&lt;br /&gt;发运行上的Org可以选择两个组织。&lt;br /&gt;Path：Purchase Orders（M） -&gt; Purchase Orders（M）-&gt; Shipment （B）&lt;br /&gt;&lt;br /&gt;h.      Supplier – Encumbrance&lt;br /&gt;&lt;br /&gt;尚未使用。&lt;br /&gt;Path：Setup (M) -&gt;Organization (M) -&gt;Financials Options (M) -&gt; Encumbrance (T)&lt;br /&gt;&lt;br /&gt;i.        Supplier – Tax&lt;br /&gt;&lt;br /&gt;Path：Supplier Base (M) –&gt; Suppliers (M) -&gt; Sites (B)&lt;br /&gt;这里设定的Tax Code带入到新创建的供应商和供应商地点。同时可以在采购选项中设定采购文档的Tax Code的继承层次。&lt;br /&gt;Path：Setup (M) -&gt;Organization (M) -&gt;Purchase Options (M) -&gt; Tax Defaults (T)&lt;br /&gt;&lt;br /&gt;j.        Enable Recoverable Tax&lt;br /&gt;这里的设置会影响到新建的Tax Code，新建编码默认值从财务选项中带入。而创建的采购订单的Distribution行的Recoverable Tax会根据Tax Code的设定而来。&lt;br /&gt;&lt;br /&gt;实际上，Recovery Rate的设置比较复杂。&lt;br /&gt;首先Enable财务选项中的“Enable Recoverable Tax”以及设置“Default Recovery Rate”。&lt;br /&gt;第二，在Purchasing Look Up Code中设置Vendor Type，并在Vendor定义中将Vendor Type分配给对应供应商。&lt;br /&gt;第三，在Tax Recovery Rate中定义Tax Rule，指定帐户访问，以及条件，这里设定对“风险”类型的采购商，可退回税为50%。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;第四，在Recovery Code中设定对应的Recovery Rate或者Rule Name。&lt;br /&gt;如果是Rate会默认从财务选项中带入。&lt;br /&gt;&lt;br /&gt;如果Rule Name，可以选定步骤三中新建的Rule。&lt;br /&gt;&lt;br /&gt;第四：针对上述供应商创建采购订单，检查其Recovery Rate就是定义Rule中定义中的50%。&lt;br /&gt;&lt;br /&gt;第五，如果需要对Tax Code和Recovery Rate 进行更改，可以设定两个预置文件。Tax: Allow Override of Tax Code和Tax: Allow Override of Tax Recovery Rate。&lt;br /&gt;&lt;br /&gt;结论：财务选项中所设定的Recovery Rate只是会默认带入Tax Code中定义，可以在定义Tax Code的时候进行修改。&lt;br /&gt;在定义Tax Code的时候也选择Recovery Rule来定义Recovery Rate。&lt;br /&gt;最终决定采购文档上Recovery Rate是由Tax Code所定义的Recovery Rate而决定。&lt;br /&gt;而采购文档上的Tax Code是根据采购选项中设定Tax Code的优先次序决定。有可能来自于财务选项，有可能来自于Item层，供应商地点层等。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/429266944698350812-6509928286276124095?l=gooply.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gooply.blogspot.com/feeds/6509928286276124095/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=429266944698350812&amp;postID=6509928286276124095' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/429266944698350812/posts/default/6509928286276124095'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/429266944698350812/posts/default/6509928286276124095'/><link rel='alternate' type='text/html' href='http://gooply.blogspot.com/2007/10/3.html' title='采购设置 ——&gt; 3 财务选项'/><author><name>Dreaming Bug</name><uri>http://www.blogger.com/profile/00298973410574940859</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='08937255071733634038'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-429266944698350812.post-9132837986542322253</id><published>2007-10-22T14:48:00.000-07:00</published><updated>2007-10-22T14:50:15.249-07:00</updated><title type='text'>采购设置 ——&gt; 2 接收选项</title><content type='html'>不再贴图，图片太多实在太耗费时间。&lt;br /&gt;&lt;br /&gt;a.      Receipt Date&lt;br /&gt;&lt;br /&gt;设定接收日期的允许偏差。下面设置不能早于或者晚于计划接收日期5天。如果超过，出现提示信息。&lt;br /&gt;Path：Setup（M）-&gt; Organization （M）-&gt; Receiving Option（M）&lt;br /&gt;&lt;br /&gt;如果接收日期超过上述接收接收日期允许范围，将会出现如下提示错误。&lt;br /&gt;Path：Receiving（M） -&gt; Receipt（M）&lt;br /&gt;&lt;br /&gt;结论：用于控制供应商交货日期。是否真的需要退回给供应商需要根据采购物品已经返回给供应商。如果需要，可以通过Correct窗口对采购订单进行订货。&lt;br /&gt;问题：采购接收的接口部分应该也考虑了这里的选项，如果插入接口表的数据中，接收日期超过允许的范围，那么应该不会成功导入接收表。&lt;br /&gt;&lt;br /&gt;b.      Over Receipt Control&lt;br /&gt;&lt;br /&gt;控制是否可以超过采购数据进行接收。&lt;br /&gt;Path：Setup（M）-&gt; Organization （M）-&gt; Receiving Option（M）&lt;br /&gt;&lt;br /&gt;如果超过允许超过的数量，将会有如下的提示。&lt;br /&gt;Path：Receiving（M） -&gt; Receipt（M）&lt;br /&gt;&lt;br /&gt;结论：只会限制超过采购数量的接收，不会限制低于采购数量的接收。因为如果限制低于采购数量的接收，那么对同一个采购行接收将不能够进行分多次接收。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;c.       Receipt unordered&lt;br /&gt;&lt;br /&gt;可以接收没有采购单的物料。&lt;br /&gt;Path：Setup（M）-&gt; Organization （M）-&gt; Receiving Option（M）&lt;br /&gt;&lt;br /&gt;如果需要进行unordered的接收，首先必须将Receipt Option中enable unordered receipt 选项。这样在Receipt窗口中Receipt Unordered的按钮才是enable的。 同时指定能够进行未订购接收的供应商，具体是在供应商属性中enable receipt unordered。&lt;br /&gt;然后如果Item层次如果的Allow Unordered Receipts没有设置覆盖上述两个选项的话，那么可以针对这些Item进行未采购接收。&lt;br /&gt;Path：Items（M）-&gt; Master Item（M）&lt;br /&gt;&lt;br /&gt;通过unordered按钮进入接收窗口，接收20个，此时无订单。&lt;br /&gt;Path：Receiving（M） -&gt; Receipt（M）&lt;br /&gt;&lt;br /&gt;然后创建采购订单TunorderRev3，然后通过Match Unordered Receipt窗口，进行Match。采购订单的采购数量必须大于Unordered Receipt的接收单的数量。&lt;br /&gt;Path：Receiving（M） -&gt; Match Unordered Receipt（M）&lt;br /&gt;&lt;br /&gt;Match完成之后，可以继续进行后续检验入库操作了。&lt;br /&gt;Path：Receiving（M） -&gt; Receiving Transactions（M）&lt;br /&gt;&lt;br /&gt;剩下的6个采购订单，可以还可以做正常的Receipt操作。&lt;br /&gt;Path：Receiving（M） -&gt; Receipt（M）&lt;br /&gt;&lt;br /&gt;结论：进行没有采购单的接收，可以处理哪些供应商已经送货，但是实际上系统中下采购订单或者没有审批完成，可以系统中对供应商的送货进行接收，记录数据。待采购订单完成审批完成之后，再进行Match。&lt;br /&gt;问题：在采购订单完成审批之前，这种接收不能入库，从而不能其他库存业务操作，例如生产发料，库存转移等等，后续流程不能还是不能在系统中完成。&lt;br /&gt;&lt;br /&gt;d.      Express Transactions&lt;br /&gt;&lt;br /&gt;设置允许快速接收，提高接收的效率。&lt;br /&gt;Path：Setup (M) -&gt;Organization (M) -&gt;Receiving Options (M)&lt;br /&gt;&lt;br /&gt;查询处对应需要进行快速接收的采购订单&lt;br /&gt;Path：Receiving (M) -&gt; Receipts (M) -&gt; Find (B)&lt;br /&gt; &lt;br /&gt;点击Express按钮，会让选择快速接收的Final Destination&lt;br /&gt;Path：Express (B)&lt;br /&gt;&lt;br /&gt;从Receiving Transaction Summary刚才快速接收的事务。因为选择的为Final Destination，所以同时将Receipt和Deliver两步同时完成。&lt;br /&gt;Path：Receiving（M） –&gt; Receiving Transaction Summary（M）&lt;br /&gt;&lt;br /&gt;是否进行快速接收存在一定的条件，对于不能快速接收的必须手动完成：&lt;br /&gt;• The item revision/subinventory/locator is required and not obtainable as a default from the item definition and the destination is Final&lt;br /&gt;• The early/late receipt date tolerance is exceeded and the exception control is Reject&lt;br /&gt;• Lot/serial information is required&lt;br /&gt;• Ship–to location is not available and the destination is Receiving&lt;br /&gt;• Location is not available for Expense destination type and the destination is Final Destination&lt;br /&gt;• Purchase order supplier and receipt header supplier do not match&lt;br /&gt;• other receipts are pending for the specified shipment&lt;br /&gt;&lt;br /&gt;结论：快速接收能够加快接收的效率。但是存在一定的前提，业务部门是否需要对接收的步骤进行的严格的控制。例如，必须进行了检验之后才入库。同时，要保证快速接收的效率，必须满足上述的条件，对于不满足条件的订单，必须手工完成。&lt;br /&gt;&lt;br /&gt;e.      Cascading Receipt&lt;br /&gt;&lt;br /&gt;“级联”功能便于将从单个供应商处接收的指定物料数量在多个发运和分配之间进行分配。如果在“查找预计接收”窗口中指定了供应商和物料，并在“接收选项”窗口中启用了“允许级联事务处理”，则将可以在“接收”窗口中使用此功能。&lt;br /&gt;Path：Setup (M) -&gt;Organization (M) -&gt;Receiving Options (M)&lt;br /&gt;&lt;br /&gt;针对某一个供应商和物料编码进行查询接收，下面的接收行来于三个订单。&lt;br /&gt;Path：Receiving（M） -&gt; Receipt（M）&lt;br /&gt;&lt;br /&gt;点击Cascade按钮，输入需要接收的数量以及单位。&lt;br /&gt;Path：Receiving（M） -&gt; Receipt（M）-&gt; Cascade（B）&lt;br /&gt;&lt;br /&gt;确定之后，发现系统自动计算5000数量所需要的接收行，注意最后一样的数量由2250更改为750。然后再进行接收。&lt;br /&gt;Path：Receiving（M） -&gt; Receipt（M）&lt;br /&gt;&lt;br /&gt;如果实际的接收行为5000，而输入接收数量为5100，将会出现如下的提示。&lt;br /&gt;Path：Receiving（M） -&gt; Receiving Transactions（M）&lt;br /&gt;&lt;br /&gt;结论：“级联”功能便于将从单个供应商处接收的指定物料数量在多个发运和分配之间进行分配。如果在“查找预计接收”窗口中指定了供应商和物料，并在“接收选项”窗口中启用了“允许级联事务处理”，则将可以在“接收”窗口中使用此功能。如果在“查找接收事务处理”窗口中指定了物料，则将可以在“接收事务处理”窗口中分发物料时使用此级联功能。在行中执行任何人工事务处理将禁用“级联”按钮，并且在您于相应的“查找”窗口中再次选择“查找”按钮之前，此按钮将一直处于禁用状态。&lt;br /&gt;&lt;br /&gt;如果选择“级联”按钮，采购管理系统将显示“级联明细”窗口，您必须在其中输入级联数量和单位。选择“确定”按钮，系统将启动级联流程。&lt;br /&gt;&lt;br /&gt;流程从第一个显示的行开始执行，并按您输入的相应级联数量为该行分配可用于接收/分发的供应。然后，流程将转至下一行继续执行并再次分配可用于接收/分发的数量（依此类推），直至查询到的最后一行或者用尽级联数量。由于这些行按承诺日期/需要日期顺序显示，因此流程的运行过程类似于先进/先出过程。如果输入的级联数量大于可用于接收/分发的数量，采购管理系统将显示一个对话框窗口以说明流程最多只能分配的数量；如果级联数量小于可用于接收/分发的数量，则最后一行分配到的接收/分发数量可能只是部分级联数量。为了明确表示级联数量已用尽，采购管理系统会将剩余行的事务处理数量显示为 0。&lt;br /&gt;&lt;br /&gt;级联功能不会修改任何目的地信息；它使用由接收方式定义的，以及自发运默认的信息。&lt;br /&gt;&lt;br /&gt;如果某发运行包含多项分配并且该行的接收方式默认为直接接收，级联流程将展开该行，并根据各项分配的可用供应将发运行的可用数量在其组成分配之间进行分配。如果超量分配某指定行，采购管理系统会将发运的所有剩余供应分配至最后一项分配；如果超量分发的事务处理先前已具有接收或事务处理，则该流程将使用非期望值来填写这些行；这种情况下，您可以在级联流程完成后进行重新分配。&lt;br /&gt;&lt;br /&gt;在级联流程执行期间，系统会禁用记录验证以加快级联流程的运行；但在保存记录时，系统将对所有记录进行验证。数量将按默认接收方式对行的预期处理方式分配至各行。但您可以人工改写这些值。&lt;br /&gt;&lt;br /&gt;f.        Allow Blind Receiving&lt;br /&gt;&lt;br /&gt;运行Blind接收保证接收的数量和采购的数量精确匹配，从而采购接收录入员没有机会更改接收的数量。接收的数量会显示为0。&lt;br /&gt;Path：Setup (M) -&gt;Organization (M) -&gt;Receiving Options (M)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;采购订单发运行的实际数量为1000。&lt;br /&gt;Path：Purchase Order（M） -&gt; Purchase Order Summary（M）&lt;br /&gt;&lt;br /&gt;针对上述的采购订单发运行进行接收，系统显示的数量为0。&lt;br /&gt;Path：Receiving（M） -&gt; Receipt（M）&lt;br /&gt;&lt;br /&gt;结论：通过这种方式，接收更为死板，不可能考虑分批次接收的情况。但是保证了接收数量与采购数量的一致性。同时一旦设置这个参数。&lt;br /&gt;&lt;br /&gt;问题：现在系统中若进行这种业务，为什么会有错误？&lt;br /&gt;&lt;br /&gt;g.      Enforce Ship-To&lt;br /&gt;&lt;br /&gt;确保接收的地点和采购订单的地点一致性，如果不一致，可以选择警告，拒绝或者忽略。&lt;br /&gt;Path：Setup (M) -&gt;Organization (M) -&gt;Receiving Options (M)&lt;br /&gt;采购接收的时候，发运地点从采购发运行上默认而来。&lt;br /&gt;Path：Receiving（M） -&gt; Receipt（M）&lt;br /&gt;&lt;br /&gt;如果对其进行更改，更改为如下的地点。&lt;br /&gt;Path：Receiving（M） -&gt; Receipt（M）&lt;br /&gt;&lt;br /&gt;保存，系统将会出现如下的警告提示。&lt;br /&gt;Path：Receiving（M） -&gt; Receipt（M）&lt;br /&gt;&lt;br /&gt;结论：只是对于接收时候要确保地点的一致性，如果到了采购入库的步骤，可以更改而不会出现警告。&lt;br /&gt;&lt;br /&gt;h.      ASN Control&lt;br /&gt;没有使用&lt;br /&gt;&lt;br /&gt;i.        Receipt Routing&lt;br /&gt;设定接收的时候是否需要检验，这个选项可以被供应商/地点/物料属性/发运行的属性覆盖。&lt;br /&gt;Path：Setup (M) -&gt;Organization (M) -&gt;Receiving Options (M)&lt;br /&gt;&lt;br /&gt;查询一个客户退货，可以看到Routing字段为“Inspection Required”。&lt;br /&gt;Path：Receiving（M） -&gt; Receipt（M）&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/429266944698350812-9132837986542322253?l=gooply.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gooply.blogspot.com/feeds/9132837986542322253/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=429266944698350812&amp;postID=9132837986542322253' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/429266944698350812/posts/default/9132837986542322253'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/429266944698350812/posts/default/9132837986542322253'/><link rel='alternate' type='text/html' href='http://gooply.blogspot.com/2007/10/2.html' title='采购设置 ——&gt; 2 接收选项'/><author><name>Dreaming Bug</name><uri>http://www.blogger.com/profile/00298973410574940859</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='08937255071733634038'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-429266944698350812.post-7646507082023293817</id><published>2007-10-19T11:56:00.000-07:00</published><updated>2008-11-13T01:57:55.250-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='采购选项'/><category scheme='http://www.blogger.com/atom/ns#' term='Default'/><title type='text'>采购设置 ——&gt; 1采购选项 ——&gt; 1.2 Default/Accrual/Number</title><content type='html'>&lt;span style="font-size:130%;"&gt;Default&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;顾名思义，就是设定采购默认值的设置，这些默认值将会再创建请购单，采购等文档的时候，相关域从这里得到默认值。&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_LVEyZaW7hys/Rxj_0a2Dk-I/AAAAAAAAAO0/Tg2130jPv0g/s1600-h/1.png"&gt;&lt;img id="BLOGGER_PHOTO_ID_5123125852158268386" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; CURSOR: hand" alt="" src="http://3.bp.blogspot.com/_LVEyZaW7hys/Rxj_0a2Dk-I/AAAAAAAAAO0/Tg2130jPv0g/s400/1.png" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;a. Requisition Import Group-By&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;设定从请购接口表导入请购单的时候，请购单的分组规则。存在ALL，Vendor，Buyer，Item，Category等选项。这里的设置会影响到从MRP，WIP以及其他外部系统导入请购单的时候，请购单的分组。下面的例子以Requisition Import报表为例。测试，设置不同的分组，运行这个请求的时候，参数的默认值。&lt;br /&gt;&lt;br /&gt;如果分组值设定为Buyer。&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_LVEyZaW7hys/Rxj_0a2Dk_I/AAAAAAAAAO8/tbjkihnuKGI/s1600-h/0.png"&gt;&lt;img id="BLOGGER_PHOTO_ID_5123125852158268402" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; CURSOR: hand" alt="" src="http://3.bp.blogspot.com/_LVEyZaW7hys/Rxj_0a2Dk_I/AAAAAAAAAO8/tbjkihnuKGI/s400/0.png" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;提交请求的时候，默认分组参数为Buyer。&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_LVEyZaW7hys/Rxj_sq2Dk8I/AAAAAAAAAOk/VP_Co453Wu8/s1600-h/3.png"&gt;&lt;img id="BLOGGER_PHOTO_ID_5123125719014282178" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; CURSOR: hand" alt="" src="http://4.bp.blogspot.com/_LVEyZaW7hys/Rxj_sq2Dk8I/AAAAAAAAAOk/VP_Co453Wu8/s400/3.png" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;如果分组值设定为Vendor。&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_LVEyZaW7hys/Rxj_sq2Dk7I/AAAAAAAAAOc/mx8Su9w9gno/s1600-h/4.png"&gt;&lt;img id="BLOGGER_PHOTO_ID_5123125719014282162" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; CURSOR: hand" alt="" src="http://4.bp.blogspot.com/_LVEyZaW7hys/Rxj_sq2Dk7I/AAAAAAAAAOc/mx8Su9w9gno/s400/4.png" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;提交请求的时候，默认分组参数为Vendor。&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_LVEyZaW7hys/Rxj_sa2Dk6I/AAAAAAAAAOU/cdZ7HjbdoP0/s1600-h/5.png"&gt;&lt;img id="BLOGGER_PHOTO_ID_5123125714719314850" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; CURSOR: hand" alt="" src="http://3.bp.blogspot.com/_LVEyZaW7hys/Rxj_sa2Dk6I/AAAAAAAAAOU/cdZ7HjbdoP0/s400/5.png" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;b. Rate Type:&lt;br /&gt;&lt;/strong&gt;设定Corporate。&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_LVEyZaW7hys/Rxj_sa2Dk5I/AAAAAAAAAOM/d3MlnkNPpMI/s1600-h/6.png"&gt;&lt;img id="BLOGGER_PHOTO_ID_5123125714719314834" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; CURSOR: hand" alt="" src="http://3.bp.blogspot.com/_LVEyZaW7hys/Rxj_sa2Dk5I/AAAAAAAAAOM/d3MlnkNPpMI/s400/6.png" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;请购单一旦设定非本位币，存在汇率转换的时候，可以看到默认汇率类型。&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_LVEyZaW7hys/Rxj_s62Dk9I/AAAAAAAAAOs/j0UV1e9WzvI/s1600-h/2.png"&gt;&lt;/a&gt;&lt;a href="http://4.bp.blogspot.com/_LVEyZaW7hys/Rxj_hq2Dk4I/AAAAAAAAAOE/fHWmS0f8IJE/s1600-h/7.png"&gt;&lt;img id="BLOGGER_PHOTO_ID_5123125530035721090" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; CURSOR: hand" alt="" src="http://4.bp.blogspot.com/_LVEyZaW7hys/Rxj_hq2Dk4I/AAAAAAAAAOE/fHWmS0f8IJE/s400/7.png" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;c. Minimum Release&lt;/strong&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_LVEyZaW7hys/Rxj_hq2Dk3I/AAAAAAAAAN8/d4qWgqs6mfA/s1600-h/8.png"&gt;&lt;img id="BLOGGER_PHOTO_ID_5123125530035721074" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; CURSOR: hand" alt="" src="http://4.bp.blogspot.com/_LVEyZaW7hys/Rxj_hq2Dk3I/AAAAAAAAAN8/d4qWgqs6mfA/s400/8.png" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;在Blanket Purchasing Agreement 中的Term窗口检查默认值。&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_LVEyZaW7hys/Rxj_ha2Dk2I/AAAAAAAAAN0/ovB4yXupZF4/s1600-h/9.png"&gt;&lt;img id="BLOGGER_PHOTO_ID_5123125525740753762" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; CURSOR: hand" alt="" src="http://3.bp.blogspot.com/_LVEyZaW7hys/Rxj_ha2Dk2I/AAAAAAAAAN0/ovB4yXupZF4/s400/9.png" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;d. Price Break Type&lt;/strong&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_LVEyZaW7hys/Rxj_ha2Dk1I/AAAAAAAAANs/_eSYShukD88/s1600-h/10.png"&gt;&lt;img id="BLOGGER_PHOTO_ID_5123125525740753746" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; CURSOR: hand" alt="" src="http://3.bp.blogspot.com/_LVEyZaW7hys/Rxj_ha2Dk1I/AAAAAAAAANs/_eSYShukD88/s400/10.png" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;在Blanket Purchasing Agreement 中的订单行上检查默认值。&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_LVEyZaW7hys/Rxj_hK2Dk0I/AAAAAAAAANk/xTGQMxN3Zms/s1600-h/11.png"&gt;&lt;img id="BLOGGER_PHOTO_ID_5123125521445786434" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; CURSOR: hand" alt="" src="http://2.bp.blogspot.com/_LVEyZaW7hys/Rxj_hK2Dk0I/AAAAAAAAANk/xTGQMxN3Zms/s400/11.png" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;e. Price Type &lt;/strong&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_LVEyZaW7hys/RxkC862DlAI/AAAAAAAAAPE/_yhqoAZlc5Y/s1600-h/Fixrate.PNG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5123129296722039810" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; CURSOR: hand" alt="" src="http://2.bp.blogspot.com/_LVEyZaW7hys/RxkC862DlAI/AAAAAAAAAPE/_yhqoAZlc5Y/s400/Fixrate.PNG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;在请购行的Price Reference页检查默认值。&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_LVEyZaW7hys/RxkC862DlBI/AAAAAAAAAPM/O-UMNOKj2V0/s1600-h/Fixrate1.PNG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5123129296722039826" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; CURSOR: hand" alt="" src="http://2.bp.blogspot.com/_LVEyZaW7hys/RxkC862DlBI/AAAAAAAAAPM/O-UMNOKj2V0/s400/Fixrate1.PNG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_LVEyZaW7hys/Rxj_U62DkxI/AAAAAAAAANM/-lByh-EgUr4/s1600-h/14.png"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;f. Receipt Close/Invoice Close/Line Type/Match Approval Level &lt;/strong&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_LVEyZaW7hys/Rxj_U62DkyI/AAAAAAAAANU/afWc1KXTL9g/s1600-h/13.png"&gt;&lt;img id="BLOGGER_PHOTO_ID_5123125310992388898" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; CURSOR: hand" alt="" src="http://1.bp.blogspot.com/_LVEyZaW7hys/Rxj_U62DkyI/AAAAAAAAANU/afWc1KXTL9g/s400/13.png" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;在请购行/发运行上检查默认值。&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_LVEyZaW7hys/Rxj_U62DkzI/AAAAAAAAANc/nn9uDdTo7Wk/s1600-h/12.png"&gt;&lt;img id="BLOGGER_PHOTO_ID_5123125310992388914" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; CURSOR: hand" alt="" src="http://1.bp.blogspot.com/_LVEyZaW7hys/Rxj_U62DkzI/AAAAAAAAANc/nn9uDdTo7Wk/s400/12.png" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;g. RFQ Required &lt;/strong&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_LVEyZaW7hys/Rxj_U62DkxI/AAAAAAAAANM/-lByh-EgUr4/s1600-h/14.png"&gt;&lt;img id="BLOGGER_PHOTO_ID_5123125310992388882" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; CURSOR: hand" alt="" src="http://1.bp.blogspot.com/_LVEyZaW7hys/Rxj_U62DkxI/AAAAAAAAANM/-lByh-EgUr4/s400/14.png" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;可以在Item层和请购行层覆盖这个选项。&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="font-size:130%;"&gt;Number &lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;编码方式，可以选择自动生成编号或者手工输入。自动只能选择数字，手工可以是字母和数字。 &lt;a href="http://4.bp.blogspot.com/_LVEyZaW7hys/RxkC9a2DlCI/AAAAAAAAAPU/Tt4ZZlf6rCc/s1600-h/number.PNG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5123129305311974434" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; CURSOR: hand" alt="" src="http://4.bp.blogspot.com/_LVEyZaW7hys/RxkC9a2DlCI/AAAAAAAAAPU/Tt4ZZlf6rCc/s400/number.PNG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;Accrual&lt;/span&gt;&lt;br /&gt;应计的时间点，是在接收的时候或者在期末的时候。对于库存，只能选择在接收时应计。对于费用项目，还可以选择在期末应计。&lt;br /&gt;同时设定应计帐户。&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_LVEyZaW7hys/Rxj_Ua2DkvI/AAAAAAAAAM8/FsQlM_qeLhI/s1600-h/16.png"&gt;&lt;img id="BLOGGER_PHOTO_ID_5123125302402454258" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; CURSOR: hand" alt="" src="http://3.bp.blogspot.com/_LVEyZaW7hys/Rxj_Ua2DkvI/AAAAAAAAAM8/FsQlM_qeLhI/s400/16.png" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/429266944698350812-7646507082023293817?l=gooply.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gooply.blogspot.com/feeds/7646507082023293817/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=429266944698350812&amp;postID=7646507082023293817' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/429266944698350812/posts/default/7646507082023293817'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/429266944698350812/posts/default/7646507082023293817'/><link rel='alternate' type='text/html' href='http://gooply.blogspot.com/2007/10/1-12-defaultaccrualnumber.html' title='采购设置 ——&gt; 1采购选项 ——&gt; 1.2 Default/Accrual/Number'/><author><name>Dreaming Bug</name><uri>http://www.blogger.com/profile/00298973410574940859</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='08937255071733634038'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_LVEyZaW7hys/Rxj_0a2Dk-I/AAAAAAAAAO0/Tg2130jPv0g/s72-c/1.png' height='72' width='72'/><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-429266944698350812.post-2996505159475915902</id><published>2007-10-18T19:44:00.000-07:00</published><updated>2008-11-13T01:58:00.089-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Control'/><category scheme='http://www.blogger.com/atom/ns#' term='采购选项'/><title type='text'>采购设置 ——&gt; 1采购选项 ——&gt; 1.1 Control面板</title><content type='html'>最近比较闲，开始学习采购设置。&lt;br /&gt;&lt;br /&gt;采购设置 ——&gt; 采购选项 ——&gt; Control面板&lt;br /&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;br /&gt;&lt;div&gt;&lt;a href="http://2.bp.blogspot.com/_LVEyZaW7hys/Rxgh8K2DkII/AAAAAAAAAIE/9vSM3R5UhQM/s1600-h/1.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5122881893720887426" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; CURSOR: hand" alt="" src="http://2.bp.blogspot.com/_LVEyZaW7hys/Rxgh8K2DkII/AAAAAAAAAIE/9vSM3R5UhQM/s400/1.JPG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;a. Price Tolerance&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;通过Requisition Summary查询，请购行单价.9915。&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_LVEyZaW7hys/Rxgh8K2DkJI/AAAAAAAAAIM/Yh0A9ebXL6E/s1600-h/2.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5122881893720887442" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; CURSOR: hand" alt="" src="http://2.bp.blogspot.com/_LVEyZaW7hys/Rxgh8K2DkJI/AAAAAAAAAIM/Yh0A9ebXL6E/s400/2.JPG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;如果采购选项中采购价格百分比做如下的设定。&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_LVEyZaW7hys/Rxgh8K2DkKI/AAAAAAAAAIU/MWVqybA9hJY/s1600-h/3.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5122881893720887458" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; CURSOR: hand" alt="" src="http://2.bp.blogspot.com/_LVEyZaW7hys/Rxgh8K2DkKI/AAAAAAAAAIU/MWVqybA9hJY/s400/3.JPG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;br /&gt;通过Auto Create将这个请购单创建到标准订单的时候，将价格更改为15（大于20% * .9915，其中.9915为上述请购行的单价），保存，点击Approve按钮提交审批，可以弹出审批界面，证明系统没有因为单价超过容差百分比而限制订单的审批。&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_LVEyZaW7hys/Rxgh8K2DkLI/AAAAAAAAAIc/lvVGEjWq9Us/s1600-h/4.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5122881893720887474" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; CURSOR: hand" alt="" src="http://2.bp.blogspot.com/_LVEyZaW7hys/Rxgh8K2DkLI/AAAAAAAAAIc/lvVGEjWq9Us/s400/4.JPG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;如果采购选项中采购价格百分比做如下的设定。&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_LVEyZaW7hys/Rxgh8a2DkMI/AAAAAAAAAIk/MmSogz9GOhM/s1600-h/5.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5122881898015854786" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; CURSOR: hand" alt="" src="http://3.bp.blogspot.com/_LVEyZaW7hys/Rxgh8a2DkMI/AAAAAAAAAIk/MmSogz9GOhM/s400/5.JPG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;那么将会再通过Approve按钮去访问提交审批界面的时候，将会出现错误提示。&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_LVEyZaW7hys/Rxgin62DkNI/AAAAAAAAAIs/uYyu6DLjxEY/s1600-h/6.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5122882645340164306" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; CURSOR: hand" alt="" src="http://1.bp.blogspot.com/_LVEyZaW7hys/Rxgin62DkNI/AAAAAAAAAIs/uYyu6DLjxEY/s400/6.JPG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;br /&gt;结论：Price Tolerance Percentage和Enforce Price Tolerance Percentage要结合使用。只有Enable了Enforce Price Tolerance Percentage的时候，在Price Tolerance Percentage设定的值才起作用。&lt;br /&gt;&lt;br /&gt;如果将设定Price Tolerance Amount。&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_LVEyZaW7hys/RxgioK2DkOI/AAAAAAAAAI0/G0zBsScb3Ys/s1600-h/7.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5122882649635131618" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; CURSOR: hand" alt="" src="http://2.bp.blogspot.com/_LVEyZaW7hys/RxgioK2DkOI/AAAAAAAAAI0/G0zBsScb3Ys/s400/7.JPG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;br /&gt;针对同样的采购订单，如果单价为1.1（累计Tolerance的金额为(1.1-.9915)*100 &gt; 10 ），点击Approve按钮，出现如下错误。&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_LVEyZaW7hys/RxgioK2DkPI/AAAAAAAAAI8/rdwVOnwoMgs/s1600-h/8.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5122882649635131634" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; CURSOR: hand" alt="" src="http://2.bp.blogspot.com/_LVEyZaW7hys/RxgioK2DkPI/AAAAAAAAAI8/rdwVOnwoMgs/s400/8.JPG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;br /&gt;结论：同Price Tolerance Percentage，只是一个侧重采购金额，一个侧重价格百分比。&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;b. Receipt Close Point&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;设定这个值，决定在什么时候对订单发运行进行Close For Receiving。一共有三个选型值，对应于采购接收的三个步骤——Receipt，Accept，Delivered。&lt;br /&gt;下面测试这个值的设置，对发运行自动关闭的影响。&lt;br /&gt;&lt;br /&gt;在采购选项中设置。&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_LVEyZaW7hys/Rxgioa2DkQI/AAAAAAAAAJE/y3Sd4mYj4Yk/s1600-h/9.PNG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5122882653930098946" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; CURSOR: hand" alt="" src="http://3.bp.blogspot.com/_LVEyZaW7hys/Rxgioa2DkQI/AAAAAAAAAJE/y3Sd4mYj4Yk/s400/9.PNG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;br /&gt;通常和Receipt Close结合使用（这个值在采购选项Default面板设置）。&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_LVEyZaW7hys/Rxgioa2DkRI/AAAAAAAAAJM/LzARdLEMKzc/s1600-h/10.PNG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5122882653930098962" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; CURSOR: hand" alt="" src="http://3.bp.blogspot.com/_LVEyZaW7hys/Rxgioa2DkRI/AAAAAAAAAJM/LzARdLEMKzc/s400/10.PNG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;创建采购订单，检查其发运行，其Closure Status为Open。&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_LVEyZaW7hys/RxgjRK2DkSI/AAAAAAAAAJU/Up4KzCxIsks/s1600-h/11.PNG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5122883354009768226" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; CURSOR: hand" alt="" src="http://2.bp.blogspot.com/_LVEyZaW7hys/RxgjRK2DkSI/AAAAAAAAAJU/Up4KzCxIsks/s400/11.PNG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;采购选项的值被带入发运行。&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_LVEyZaW7hys/RxgjRa2DkTI/AAAAAAAAAJc/BD0u1OIfzf8/s1600-h/12.PNG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5122883358304735538" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; CURSOR: hand" alt="" src="http://3.bp.blogspot.com/_LVEyZaW7hys/RxgjRa2DkTI/AAAAAAAAAJc/BD0u1OIfzf8/s400/12.PNG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;br /&gt;对审批的采购发运行做Receipt，发运行本来的数量为1000。&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_LVEyZaW7hys/RxgjRa2DkUI/AAAAAAAAAJk/WKpfESGbsEg/s1600-h/13.PNG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5122883358304735554" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; CURSOR: hand" alt="" src="http://3.bp.blogspot.com/_LVEyZaW7hys/RxgjRa2DkUI/AAAAAAAAAJk/WKpfESGbsEg/s400/13.PNG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;br /&gt;这里我们接收(1-10%)*1000 = 900数量，保存。&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_LVEyZaW7hys/RxgjRa2DkVI/AAAAAAAAAJs/ccyOGyQPBl0/s1600-h/14.PNG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5122883358304735570" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; CURSOR: hand" alt="" src="http://3.bp.blogspot.com/_LVEyZaW7hys/RxgjRa2DkVI/AAAAAAAAAJs/ccyOGyQPBl0/s400/14.PNG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;再检查发运行状态，已经为Closed For Receiving。&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_LVEyZaW7hys/RxgjRq2DkWI/AAAAAAAAAJ0/wILB4nxTS9s/s1600-h/15.PNG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5122883362599702882" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; CURSOR: hand" alt="" src="http://4.bp.blogspot.com/_LVEyZaW7hys/RxgjRq2DkWI/AAAAAAAAAJ0/wILB4nxTS9s/s400/15.PNG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;结论：这个选项控制在采购接收的什么步骤进行订单的自动关闭，通常需要和Receipt Close选项结合使用。从正常的业务逻辑来讲，设置为Delivery比较合理。&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;c. Cancel Requisition&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;这个选项只应用于通过Auto Create创建的订单的请购单。有三个选项Optionally，Always，Never。&lt;br /&gt;&lt;br /&gt;Path：Purchasing Option（Menu）-&gt;Control（Tab）&lt;br /&gt;设置其值为Optionally。&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_LVEyZaW7hys/RxgkPq2DkXI/AAAAAAAAAJ8/6Ci-X_4RG_0/s1600-h/16.PNG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5122884427751592306" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; CURSOR: hand" alt="" src="http://4.bp.blogspot.com/_LVEyZaW7hys/RxgkPq2DkXI/AAAAAAAAAJ8/6Ci-X_4RG_0/s400/16.PNG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;订单T_ClosePoint1通过Auto Create通过请购单创建而来。&lt;br /&gt;Path：Purchase Order Summary（Window）-&gt; Control （Menu）&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_LVEyZaW7hys/RxgkPq2DkYI/AAAAAAAAAKE/WYEMg3gRPrE/s1600-h/17.PNG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5122884427751592322" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; CURSOR: hand" alt="" src="http://4.bp.blogspot.com/_LVEyZaW7hys/RxgkPq2DkYI/AAAAAAAAAKE/WYEMg3gRPrE/s400/17.PNG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;从弹出的Control窗口中，有取消请购的选项。&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_LVEyZaW7hys/RxgkP62DkZI/AAAAAAAAAKM/d6_ZDC30kOM/s1600-h/18.PNG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5122884432046559634" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; CURSOR: hand" alt="" src="http://1.bp.blogspot.com/_LVEyZaW7hys/RxgkP62DkZI/AAAAAAAAAKM/d6_ZDC30kOM/s400/18.PNG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;如果设置为 Always&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_LVEyZaW7hys/RxgkP62DkaI/AAAAAAAAAKU/VQhT2CePm24/s1600-h/19.PNG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5122884432046559650" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; CURSOR: hand" alt="" src="http://1.bp.blogspot.com/_LVEyZaW7hys/RxgkP62DkaI/AAAAAAAAAKU/VQhT2CePm24/s400/19.PNG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;检查Control窗口，Cancel Requisition默认选择，且不让更改。&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_LVEyZaW7hys/RxgkP62DkbI/AAAAAAAAAKc/us37yVSD6bU/s1600-h/20.PNG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5122884432046559666" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; CURSOR: hand" alt="" src="http://1.bp.blogspot.com/_LVEyZaW7hys/RxgkP62DkbI/AAAAAAAAAKc/us37yVSD6bU/s400/20.PNG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;结论：用户控制在取消采购单的时候，是否取消采购单对应的请购单。&lt;br /&gt;问题：如果取消了请购单，而请购单从MRP创建，对计划的影响（To Do）。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;d. Notify If Blanket PO Exists&lt;/strong&gt; &lt;a href="http://3.bp.blogspot.com/_LVEyZaW7hys/Rxgkda2DkcI/AAAAAAAAAKk/IT0TinrnB-Y/s1600-h/21.PNG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5122884663974793666" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; CURSOR: hand" alt="" src="http://3.bp.blogspot.com/_LVEyZaW7hys/Rxgkda2DkcI/AAAAAAAAAKk/IT0TinrnB-Y/s400/21.PNG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;创建请购单的时候，如果对应Item已经存在BPA，给出提示。&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_LVEyZaW7hys/Rxgkdq2DkdI/AAAAAAAAAKs/byQnhKQlNT8/s1600-h/22.PNG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5122884668269760978" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; CURSOR: hand" alt="" src="http://4.bp.blogspot.com/_LVEyZaW7hys/Rxgkdq2DkdI/AAAAAAAAAKs/byQnhKQlNT8/s400/22.PNG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;e. Allow Item Description Update&lt;br /&gt;&lt;/strong&gt;&lt;br /&gt;是否在请购/采购行上更新Item的描述。&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_LVEyZaW7hys/Rxgkdq2DkeI/AAAAAAAAAK0/jWw5V_4WS0c/s1600-h/23.PNG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5122884668269760994" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; CURSOR: hand" alt="" src="http://4.bp.blogspot.com/_LVEyZaW7hys/Rxgkdq2DkeI/AAAAAAAAAK0/jWw5V_4WS0c/s400/23.PNG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Item层的这个属性会覆盖采购选项的属性，所以必须在Item层上设置之后再测试。&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_LVEyZaW7hys/Rxgkdq2DkfI/AAAAAAAAAK8/o1r_VZ-M1lg/s1600-h/24.PNG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5122884668269761010" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; CURSOR: hand" alt="" src="http://4.bp.blogspot.com/_LVEyZaW7hys/Rxgkdq2DkfI/AAAAAAAAAK8/o1r_VZ-M1lg/s400/24.PNG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;请购行上的描述字段变成可编辑状态了。&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_LVEyZaW7hys/Rxgkd62DkgI/AAAAAAAAALE/mMJpsYlLdoY/s1600-h/25.PNG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5122884672564728322" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; CURSOR: hand" alt="" src="http://1.bp.blogspot.com/_LVEyZaW7hys/Rxgkd62DkgI/AAAAAAAAALE/mMJpsYlLdoY/s400/25.PNG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;结论：采购选项关于Item描述的更新设置通常没有什么用，一般在Item层属性都会覆盖采购选项的设置。在Item层应该设计为下拉框，有三个选项（Yes，No，Null）。其中Null表示在Item层不设置这个属性，从而不会覆盖采购选项层的设置。&lt;br /&gt;&lt;br /&gt;如果Enable这个选项，对新创建的Item，Item层的可更新描述的选项默认也是Enable的。&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_LVEyZaW7hys/Rxgkra2DkhI/AAAAAAAAALM/C73hhXd1dAE/s1600-h/26.PNG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5122884904492962322" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; CURSOR: hand" alt="" src="http://3.bp.blogspot.com/_LVEyZaW7hys/Rxgkra2DkhI/AAAAAAAAALM/C73hhXd1dAE/s400/26.PNG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;f. Enforce Vendor Hold&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_LVEyZaW7hys/Rxgkrq2DkiI/AAAAAAAAALU/G1J6h7JRAxQ/s1600-h/27.PNG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5122884908787929634" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; CURSOR: hand" alt="" src="http://4.bp.blogspot.com/_LVEyZaW7hys/Rxgkrq2DkiI/AAAAAAAAALU/G1J6h7JRAxQ/s400/27.PNG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;同时在Supplier的定义的Purchasing也设置Purchase Order Hold。&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_LVEyZaW7hys/Rxgkrq2DkjI/AAAAAAAAALc/n15VmBpFHJ8/s1600-h/28.PNG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5122884908787929650" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; CURSOR: hand" alt="" src="http://4.bp.blogspot.com/_LVEyZaW7hys/Rxgkrq2DkjI/AAAAAAAAALc/n15VmBpFHJ8/s400/28.PNG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;针对这个Supplier创建采购订单，然后点击提交，系统将会出现如下的提示错误。&lt;a href="http://4.bp.blogspot.com/_LVEyZaW7hys/Rxgkrq2DkkI/AAAAAAAAALk/CNB4Q3VnCak/s1600-h/29.PNG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5122884908787929666" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; CURSOR: hand" alt="" src="http://4.bp.blogspot.com/_LVEyZaW7hys/Rxgkrq2DkkI/AAAAAAAAALk/CNB4Q3VnCak/s400/29.PNG" border="0" /&gt;&lt;/a&gt; &lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/429266944698350812-2996505159475915902?l=gooply.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gooply.blogspot.com/feeds/2996505159475915902/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=429266944698350812&amp;postID=2996505159475915902' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/429266944698350812/posts/default/2996505159475915902'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/429266944698350812/posts/default/2996505159475915902'/><link rel='alternate' type='text/html' href='http://gooply.blogspot.com/2007/10/1-11-control.html' title='采购设置 ——&gt; 1采购选项 ——&gt; 1.1 Control面板'/><author><name>Dreaming Bug</name><uri>http://www.blogger.com/profile/00298973410574940859</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='08937255071733634038'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_LVEyZaW7hys/Rxgh8K2DkII/AAAAAAAAAIE/9vSM3R5UhQM/s72-c/1.JPG' height='72' width='72'/><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-429266944698350812.post-8272108482385265819</id><published>2007-10-15T08:09:00.000-07:00</published><updated>2007-10-15T08:14:08.177-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='远程桌面控制'/><category scheme='http://www.blogger.com/atom/ns#' term='VNC'/><category scheme='http://www.blogger.com/atom/ns#' term='shutdown'/><title type='text'>远程重新启动服务器</title><content type='html'>上周通过远程桌面控制的时候，关闭其中一个窗口，没有响应，我就强行结束任务，没想到系统pending住，桌面蓝屏，远程桌面不能控制，VNC也不能登录了。看到web server等其他服务在正常运行，便回家过周末去了：）&lt;br /&gt;&lt;br /&gt;本来想找系统管理员到机器旁边去看一下，不过看到是自己犯的错误，还是自己先想办法吧。网络真好，通过如下两个命令搞定了：&lt;br /&gt;&lt;br /&gt;net   use   &lt;a href="file://192.168.0.3/admin$"&gt;\\192.168.0.3\admin$&lt;/a&gt;   adminpasswd   /user:administrator &lt;br /&gt;shutdown -r -m &lt;a href="file://192.168.0.3/"&gt;\\192.168.0.3&lt;/a&gt; -t 30 -f&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/429266944698350812-8272108482385265819?l=gooply.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gooply.blogspot.com/feeds/8272108482385265819/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=429266944698350812&amp;postID=8272108482385265819' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/429266944698350812/posts/default/8272108482385265819'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/429266944698350812/posts/default/8272108482385265819'/><link rel='alternate' type='text/html' href='http://gooply.blogspot.com/2007/10/blog-post.html' title='远程重新启动服务器'/><author><name>Dreaming Bug</name><uri>http://www.blogger.com/profile/00298973410574940859</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='08937255071733634038'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-429266944698350812.post-8378768276453203932</id><published>2007-10-10T12:36:00.000-07:00</published><updated>2007-10-10T12:40:15.854-07:00</updated><title type='text'>几个itpub关于采购审批层次的帖子</title><content type='html'>Q:  问个po审批层次的问题&lt;br /&gt;在po中定义了审批层次，我想问一下，在采购订单提交审批的时候，按照什么样的规则提交给不同层次的审批者？比如：一级a，二级b，三级c，b有5000元的最高审批权限，那么c做的采购订单什么情况下会由a来审批呢？超出5000元么？是由b转给a ,还是直接发送到了a？？？？&lt;br /&gt;&lt;br /&gt;A: 没有试验，不知道如下是否满足你的需求&lt;br /&gt;1）首先需要设定两个审批组一个审判GroupB审批的金额1~5000,另外一个组Group审批金额为5001～99999999999999999。&lt;br /&gt;2）审批组分配。将b的职位分配到GroupB，将a的职位分配到GroupA。&lt;br /&gt;3）设置文档类型的Foward Method的属性。如果超过5000，直接到A，那么将Forward Method属性值设为Direct。如果需要B转交，那么将Forward Method属性值设为Hiberarchy&lt;br /&gt;&lt;br /&gt;URL:&lt;a href="http://www.itpub.net/649786.html"&gt;http://www.itpub.net/649786.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Q: 怎样指定审批层次的默认审批人&lt;br /&gt;因为公司同时使用了HR和PO模块。在HR模块中处于同一个position（PA）的有多个人(MA,MB,MC等)，这个position在采购的审批层次中，而这个position的几个人中，只有一个(MB)负责采购审批业务。 问题在于：用户提交单据的时候，发现审批路径上的人默认的时MA，而不是MB，这个用户带来很大的困惑。 请问是否有什么可以预制文件或者设置的地方，将MB设定为默认的审批人呢？&lt;br /&gt;&lt;br /&gt;A:OSS给出回复：&lt;br /&gt;1） 如果是11.5.9版本，没有这个功能，以字母的ascii码顺序默认审批人。&lt;br /&gt;参考Metalink:Note 106596.1&lt;br /&gt;Another method that must be considered is one where the application choosesthe forward-to person when multiple employees are tied to one position. Theapplication will select the forward-to person based on alphabetical nameorder. Here is an example to better clarify how the system chooses the nextapprover name when multiple approvers are assigned to one position:Position: ClerkEmployees Assigned: ManyReports To: Vice President, MaterialsPostion: Vice President, MaterialsEmployees Assigned: Dough, John S.Smith, Bob A.In this example, if a clerk chooses the Approve button without entering aforward-to person, and the next position above the clerk is theVice President of Materials, the document would be routed to John Dough.John Dough is selected because the system will choose the employee assignedto the position in alphabetical order, and since Dough comes before Smith,John Dough is selected. Therefore, unless the clerk selects a specificperson to forward the document to, the document will always be routed to thefirst person alphabetically assigned to the position.&lt;br /&gt;2） 如果是11.5.10版本，安装Oracle Approvals Management (AME) ，可以设定默认审批人。&lt;br /&gt;参考Metalink:Note 229663.1&lt;br /&gt;Oracle Approvals Management (AME) is a web–based application which is integrated with Oracle Workflow and which enables you to define business rules to control your approvals processes. With AME, you use the following components to define your approvals processes. They are associated with a transaction type for a particular application.• Attribute – this is a business variable, for example, a salary amount, user ID, or workflow process name.• Condition – a condition compares an attribute value with a set of allowed attribute values. For example, a condition could look at a salary amount. If the salary is greater than a specified value, a particular approver list is created.• Approval type and approval specifications – these components define the type of approver list that is generated. For example, to generate a supervisor–based approver list with 5 levels, you use the ’supervisory level’ approval type with the ’requires approval up to the first 5 approvers’ approval specification.• Rules – a rule links the other components together by associating one or more conditions with the approval type and approval rule&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.itpub.net/616596,2.html"&gt;http://www.itpub.net/616596,2.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/429266944698350812-8378768276453203932?l=gooply.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gooply.blogspot.com/feeds/8378768276453203932/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=429266944698350812&amp;postID=8378768276453203932' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/429266944698350812/posts/default/8378768276453203932'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/429266944698350812/posts/default/8378768276453203932'/><link rel='alternate' type='text/html' href='http://gooply.blogspot.com/2007/10/itpub.html' title='几个itpub关于采购审批层次的帖子'/><author><name>Dreaming Bug</name><uri>http://www.blogger.com/profile/00298973410574940859</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='08937255071733634038'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-429266944698350812.post-4158897637426716787</id><published>2007-09-02T09:02:00.000-07:00</published><updated>2007-09-02T09:12:50.458-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Jinitiator'/><category scheme='http://www.blogger.com/atom/ns#' term='RPCRT4.dll'/><title type='text'>访问form界面，IE窗口退出</title><content type='html'>今天突然发现访问不了ERP，一旦需要打开Form界面的时候，IE窗口自动退出。同时桌面有一个日志文件，部分内容如下。&lt;br /&gt;&lt;br /&gt;An unexpected exception has been detected in native code outside the VM.Unexpected Signal : EXCEPTION_ACCESS_VIOLATION occurred at PC=0x77ea364eFunction name=NdrRpcSsDefaultAllocateLibrary=C:\WINDOWS\system32\RPCRT4.dll&lt;br /&gt;&lt;br /&gt;通过google查询，发现部分关于vista中怎样使用Jinitiator是用高版本的jvm替换对应的jvm。发现并不能解决问题，卸载掉部分jre的版本也没能够解决问题。最后还是在metalink上找到了解决方法，是msn的插件的问题，想起来前两天还错点了msn的按钮，应该是这个原因吧：&lt;br /&gt;&lt;br /&gt;&lt;a name="FIX"&gt;&lt;/a&gt;Solution&lt;br /&gt;-- To implement the solution, please execute the following steps::Suggest to check if this plug in is installed and enabled. If this is the case disable it using the following actions:1.Tools - Manage Add-ons - Enable or Disable Add-ons&lt;br /&gt;2. In Show option - "Add-ons that have been used by Internet Explorer"Select from the list and check for Name "Windows Live ...."&lt;br /&gt;e.g "Windows Live Messenger", "Windows Live Sing-in Helper" etc.&lt;br /&gt;3. Select "Disable" option4. Close all the Internet explorer browser sessions. Restart the client machine.&lt;br /&gt;5. Retest the issue.&lt;br /&gt;&lt;br /&gt;参考：Note:435562.1&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/429266944698350812-4158897637426716787?l=gooply.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gooply.blogspot.com/feeds/4158897637426716787/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=429266944698350812&amp;postID=4158897637426716787' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/429266944698350812/posts/default/4158897637426716787'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/429266944698350812/posts/default/4158897637426716787'/><link rel='alternate' type='text/html' href='http://gooply.blogspot.com/2007/09/formie.html' title='访问form界面，IE窗口退出'/><author><name>Dreaming Bug</name><uri>http://www.blogger.com/profile/00298973410574940859</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='08937255071733634038'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-429266944698350812.post-6806393679265183133</id><published>2007-08-25T16:17:00.000-07:00</published><updated>2007-08-25T16:37:43.752-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='无线局域网'/><category scheme='http://www.blogger.com/atom/ns#' term='ping'/><category scheme='http://www.blogger.com/atom/ns#' term='IP安全策略'/><title type='text'>2000 servers终于可以通过网络访问了</title><content type='html'>自从在HP dv9207us机器被我从Vista降级安装windows 2000 server之后，问题一直不断。先是硬件驱动器的问题，后来是无限局域网内其他机器不能访问它的问题。所以，又作服务器有做客户端，够辛苦的。网络上有很多关于这种能够Ping通，但是不能通过网上邻居访问的解决方法，主要有：&lt;br /&gt;1、是否添加了“文件和打印共享”&lt;br /&gt;2、组策略中是否禁止了你用来访问的用户？&lt;br /&gt;&lt;br /&gt;发现都不是这些问题所在。无意在组策略的安全设置中，发现“IP安全策略，在本地机器中-〉安全服务器”是选中的，将其去掉就OK。&lt;br /&gt;&lt;br /&gt;现在终于可以从其他两台机器来访问这台服务器了。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/429266944698350812-6806393679265183133?l=gooply.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gooply.blogspot.com/feeds/6806393679265183133/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=429266944698350812&amp;postID=6806393679265183133' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/429266944698350812/posts/default/6806393679265183133'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/429266944698350812/posts/default/6806393679265183133'/><link rel='alternate' type='text/html' href='http://gooply.blogspot.com/2007/08/2000-servers.html' title='2000 servers终于可以通过网络访问了'/><author><name>Dreaming Bug</name><uri>http://www.blogger.com/profile/00298973410574940859</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='08937255071733634038'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-429266944698350812.post-1496150253392009992</id><published>2007-08-17T21:28:00.000-07:00</published><updated>2007-08-17T21:31:04.002-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='乱码'/><category scheme='http://www.blogger.com/atom/ns#' term='imp'/><category scheme='http://www.blogger.com/atom/ns#' term='exp'/><title type='text'>数据库导入导出乱码问题</title><content type='html'>&lt;p&gt;&lt;br /&gt;        项目数据需要清理，DBA将数据按照用户导出发过了。导入数据的时候，发现数据库中文全部变成问号。上网找了一下资料，发现原来是数据库字符集不兼容。导入数据库的字符集WE8ISO8859P9，而导出数据库的字符集为ZHS16GBK。&lt;br /&gt;&lt;br /&gt;        第一个想法就是更改导入数据库的字符集，通过如下语句：ALTER DATABASE CHARACTER SET ZHS16GBK进行更改，系统提示“ORA-12712 new character set must be a superset of old character set”。原来使用这个语句还需要考虑更改的字符集与原来数据库的字符集兼容。Metalink Note:119164.1上定义了不同字符集的兼容关系。&lt;br /&gt;&lt;br /&gt;        只有重新建立一个库，设定字符集为ZHS16GBK/AL16UTF16。Imp的时候，系统显示的日志为：&lt;br /&gt;import done in ZHS16GBK character set and AL16UTF16 NCHAR character set&lt;br /&gt;export client uses ZHS16CGB231280 character set (possible charset conversion)&lt;br /&gt;export server uses ZHS16GBK NCHAR character set (possible ncharset conversion)&lt;br /&gt;&lt;br /&gt;         可以看到DBA导出的时候客户端字符集为“ZHS16CGB231280”，导出的数据库字符集为“ZHS16GBK”，这两个字符集也不完全兼容，以后导出的时候需要注意更改客户端字符集。导入的数据库的字符集为“ZHS16GBK”。导入完成之后，没有发现乱码问题。&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;总结：&lt;/strong&gt;&lt;br /&gt;        1. 导入导出过程中涉及4个字符集，需要保证字符集的兼容性，才可能避免汉字乱码问题。&lt;br /&gt;                源数据库字符集&lt;br /&gt;                Export过程中用户会话字符集（通过NLS_LANG设定）&lt;br /&gt;                Import过程中用户会话字符集（通过NLS_LANG设定）&lt;br /&gt;                目标数据库字符集&lt;br /&gt;       2. 字符集兼容可以通过Metalink Note:119164.1查询。&lt;br /&gt;       3. 同时，在安装数据库的时候，应该根据业务需求选定好字符集，而不是采用安装过程的默认设置。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;参考：&lt;br /&gt;&lt;/strong&gt;网上非常好的一篇文章：http://silverw0396.javaeye.com/blog/90554&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/429266944698350812-1496150253392009992?l=gooply.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gooply.blogspot.com/feeds/1496150253392009992/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=429266944698350812&amp;postID=1496150253392009992' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/429266944698350812/posts/default/1496150253392009992'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/429266944698350812/posts/default/1496150253392009992'/><link rel='alternate' type='text/html' href='http://gooply.blogspot.com/2007/08/blog-post.html' title='数据库导入导出乱码问题'/><author><name>Dreaming Bug</name><uri>http://www.blogger.com/profile/00298973410574940859</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='08937255071733634038'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-429266944698350812.post-3267006862749595801</id><published>2007-08-14T13:36:00.000-07:00</published><updated>2007-08-14T13:37:59.897-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Trace'/><category scheme='http://www.blogger.com/atom/ns#' term='discoverer 4i'/><title type='text'>Trace Discoverer Workbook</title><content type='html'>两种方法：修改注册表，或者通过SQL。&lt;br /&gt;&lt;br /&gt;&lt;a name="_Toc174869036"&gt;&lt;strong&gt;&lt;span style="font-size:130%;"&gt;修改注册表的值&lt;/span&gt;&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;\\HKEY_CURRENT_USER\Software\Oracle\Discoverer\Database\SqlTrace&lt;br /&gt;type DWORD&lt;br /&gt;numeric value 1&lt;br /&gt;&lt;br /&gt;使用这个的前提是需要trace的工作簿查询尚未运行。如果已经运行了，可以通过方法2来完成。&lt;br /&gt;&lt;br /&gt;另，完成trace之后，别忘记更改回去。&lt;br /&gt;&lt;br /&gt;&lt;a name="_Toc174869037"&gt;&lt;span style="font-size:130%;"&gt;&lt;strong&gt;通过SQL&lt;/strong&gt;&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;a.             通过如下SQL定位discoverer的session以及spid。从而可以对对应的session进行跟踪。从而可以通过spid知道trace文件的名称。&lt;br /&gt;&lt;br /&gt;SELECT s.SID, s.serial#, s.username, s.program, p.spid&lt;br /&gt;  FROM v$session s, v$process p&lt;br /&gt; WHERE p.addr = s.paddr&lt;br /&gt;   AND s.program LIKE '%DIS4USR.EXE%'&lt;br /&gt;&lt;br /&gt;得到&lt;br /&gt;&lt;br /&gt;SID:72  serial#49228 SPID:5865&lt;br /&gt;SID:132  serial#56294  SPID:5877 &lt;br /&gt;&lt;br /&gt;b.          ENABLE TRACE&lt;br /&gt;exec dbms_system.set_sql_trace_in_session(72, 49228, TRUE)&lt;br /&gt;exec dbms_system.set_sql_trace_in_session(132, 56294, TRUE)&lt;br /&gt;&lt;br /&gt;c.             执行discoverer相关操作，例如运行工作簿，共享工作簿等。&lt;br /&gt;&lt;br /&gt;d.            从文件菜单中推出discoverer，这一步比较重要，如果是进行性能分析话，保证执行计划相关资源数据的完整性。&lt;br /&gt;&lt;br /&gt;e.             Disable trace.&lt;br /&gt;&lt;br /&gt;f.              通过步骤a得到的spid，从数据库下载对应的trace文件。格式化trace文件，判断哪一个是需要的trace文件，对正确的trace文件进行分析。&lt;br /&gt;&lt;br /&gt;tkprof onidau1_ora_5865.trc 14_2_1.txt sys = no;&lt;br /&gt;tkprof onidau1_ora_5877.trc 14_2_2.txt sys=no;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;参考：metalink.  Note:273928.1&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/429266944698350812-3267006862749595801?l=gooply.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gooply.blogspot.com/feeds/3267006862749595801/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=429266944698350812&amp;postID=3267006862749595801' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/429266944698350812/posts/default/3267006862749595801'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/429266944698350812/posts/default/3267006862749595801'/><link rel='alternate' type='text/html' href='http://gooply.blogspot.com/2007/08/trace-discoverer-workbook.html' title='Trace Discoverer Workbook'/><author><name>Dreaming Bug</name><uri>http://www.blogger.com/profile/00298973410574940859</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='08937255071733634038'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-429266944698350812.post-5500141031735955192</id><published>2007-08-10T13:30:00.000-07:00</published><updated>2007-08-10T13:59:19.332-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Expert one on one Oracle'/><category scheme='http://www.blogger.com/atom/ns#' term='物化视图'/><category scheme='http://www.blogger.com/atom/ns#' term='query rewrite'/><category scheme='http://www.blogger.com/atom/ns#' term='demension'/><title type='text'>《Expert one on one Oracle》- 物化视图 - 笔记</title><content type='html'>物化视图概念类似于discoverer中的summary table。在discoverer的管理端，可以创建不同的summary table。在discoverer进行查询的时候，discoverer首先对查询进行解析，判断查询是否可以使用对应的summary table，如果可以，将会改写查询去查询对应的summary table。&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="font-size:130%;"&gt;一个例子&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;通过如下的例子，对比统计数据需求的情况下，使用物化视图会有更快的访问速度。&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#000099;"&gt;--创建一张大表&lt;/span&gt;&lt;br /&gt;SQL&gt; create table my_all_objects&lt;br /&gt;2 nologging&lt;br /&gt;3 as&lt;br /&gt;4 select * from all_objects&lt;br /&gt;5 union all&lt;br /&gt;6 select * from all_objects&lt;br /&gt;7 union all&lt;br /&gt;8 select * from all_objects&lt;br /&gt;9 /&lt;br /&gt;Table created.&lt;br /&gt;&lt;br /&gt;SQL&gt; insert /*+ APPEND */ into my_all_objects&lt;br /&gt;2 select * from my_all_objects;&lt;br /&gt;87945 rows created.&lt;br /&gt;&lt;br /&gt;SQL&gt; commit;&lt;br /&gt;Commit complete.&lt;br /&gt;&lt;br /&gt;SQL&gt; insert /*+ APPEND */ into my_all_objects&lt;br /&gt;2 select * from my_all_objects;&lt;br /&gt;175890 rows created.&lt;br /&gt;&lt;br /&gt;SQL&gt; commit;&lt;br /&gt;Commit complete.&lt;br /&gt;&lt;br /&gt;SQL&gt; analyze table my_all_objects compute statistics;&lt;br /&gt;Table analyzed.&lt;br /&gt;&lt;br /&gt;SQL&gt; set autotrace traceonly&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#3333ff;"&gt;--通过执行计划可以得知直接对数据进行count计算，需要访问4800数据块&lt;/span&gt;&lt;br /&gt;SQL&gt; select owner, count(*) from my_all_objects group by owner;&lt;br /&gt;28 rows selected.&lt;br /&gt;&lt;br /&gt;Execution Plan&lt;br /&gt;----------------------------------------------------------&lt;br /&gt;0 SELECT STATEMENT Optimizer=CHOOSE (Cost=989 Card=28 Bytes=14&lt;br /&gt;0)&lt;br /&gt;1 0 SORT (GROUP BY) (Cost=989 Card=28 Bytes=140)&lt;br /&gt;2 1 TABLE ACCESS (FULL) OF &lt;span style="color:#ff0000;"&gt;'MY_ALL_OBJECTS'&lt;/span&gt; (Cost=471 Card=3&lt;br /&gt;51780 Bytes=1758900)&lt;br /&gt;&lt;br /&gt;Statistics&lt;br /&gt;----------------------------------------------------------&lt;br /&gt;0 recursive calls&lt;br /&gt;0 db block gets&lt;br /&gt;&lt;span style="color:#ff0000;"&gt;4804 consistent gets&lt;br /&gt;&lt;/span&gt;3004 physical reads&lt;br /&gt;0 redo size&lt;br /&gt;973 bytes sent via SQL*Net to client&lt;br /&gt;510 bytes received via SQL*Net from client&lt;br /&gt;3 SQL*Net roundtrips to/from client&lt;br /&gt;1 sorts (memory)&lt;br /&gt;0 sorts (disk)&lt;br /&gt;28 rows processed&lt;br /&gt;&lt;br /&gt;SQL&gt; set autotrace off&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#3333ff;"&gt;--赋予测试用户query rewrite的权限&lt;/span&gt;&lt;br /&gt;SQL&gt; grant query rewrite to scott;&lt;br /&gt;Grant succeeded.&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#3333ff;"&gt;--更改当前session能够query rewrite&lt;/span&gt;&lt;br /&gt;SQL&gt; alter session set query_rewrite_enabled=true;&lt;br /&gt;Session altered.&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#3333ff;"&gt;--设定query_rewrite_integrity的值为enforced，有三个置可选，enforced，trusted，STALE_TOLERATED&lt;/span&gt;&lt;br /&gt;SQL&gt; alter session set query_rewrite_integrity=enforced;&lt;br /&gt;Session altered.&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#3333ff;"&gt;--创建物化视图&lt;/span&gt;&lt;br /&gt;SQL&gt; create materialized view my_all_objects_aggs&lt;br /&gt;2 build immediate&lt;br /&gt;3 refresh on commit&lt;br /&gt;4 enable query rewrite&lt;br /&gt;5 as&lt;br /&gt;6 select owner, count(*)&lt;br /&gt;7 from my_all_objects&lt;br /&gt;8 group by owner&lt;br /&gt;9 /&lt;br /&gt;Materialized view created.&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#3333ff;"&gt;--分析物化视图&lt;/span&gt;&lt;br /&gt;SQL&gt; analyze table my_all_objects_aggs compute statistics;&lt;br /&gt;Table analyzed.&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#3333ff;"&gt;--通过执行计划可以得知再进行同样的count计算，只需要访问5个数据块。同时，通过执行路径也可以看到，查询是通过物化视图来完成的。如果业务上对于这种count的计算比较频繁的话，采用物化视图将会节省更多的资源。是一种以空间换取时间的方法。&lt;br /&gt;&lt;/span&gt;SQL&gt; set autotrace traceonly&lt;br /&gt;SQL&gt; select owner, count(*)&lt;br /&gt;2 from my_all_objects&lt;br /&gt;3 group by owner;&lt;br /&gt;28 rows selected.&lt;br /&gt;&lt;br /&gt;Execution Plan&lt;br /&gt;----------------------------------------------------------&lt;br /&gt;0 SELECT STATEMENT Optimizer=CHOOSE (Cost=2 Card=28 Bytes=252)&lt;br /&gt;1 0 TABLE ACCESS (FULL) OF &lt;span style="color:#ff0000;"&gt;'MY_ALL_OBJECTS_AGGS'&lt;/span&gt; (Cost=2 Card= 28 Bytes=252)&lt;br /&gt;&lt;br /&gt;Statistics&lt;br /&gt;----------------------------------------------------------&lt;br /&gt;0 recursive calls&lt;br /&gt;0 db block gets&lt;br /&gt;&lt;span style="color:#ff0000;"&gt;5 consistent gets&lt;/span&gt;&lt;br /&gt;0 physical reads&lt;br /&gt;0 redo size&lt;br /&gt;973 bytes sent via SQL*Net to client&lt;br /&gt;510 bytes received via SQL*Net from client&lt;br /&gt;3 SQL*Net roundtrips to/from client&lt;br /&gt;0 sorts (memory)&lt;br /&gt;0 sorts (disk)&lt;br /&gt;28 rows processed&lt;br /&gt;&lt;br /&gt;SQL&gt; set autotrace off&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#3333ff;"&gt;--插入新的纪录&lt;/span&gt;&lt;br /&gt;SQL&gt; insert into my_all_objects&lt;br /&gt;2 ( owner, object_name, object_type, object_id )&lt;br /&gt;3 values&lt;br /&gt;4 ( 'New Owner', 'New Name', 'New Type', 1111111 );&lt;br /&gt;1 row created.&lt;br /&gt;&lt;br /&gt;SQL&gt; commit;&lt;br /&gt;Commit complete.&lt;br /&gt;&lt;br /&gt;SQL&gt; set timing on&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#3333ff;"&gt;--对新纪录的count计算仍然通过物化视图来访问。由于创建物化视图的时候，使用“refresh on commit”语句，表的新增纪录已经刷新到物化视图。&lt;br /&gt;&lt;/span&gt;SQL&gt; select owner, count(*)&lt;br /&gt;2 from my_all_objects&lt;br /&gt;3 where owner = 'New Owner'&lt;br /&gt;4 group by owner;&lt;br /&gt;&lt;br /&gt;OWNER COUNT(*)&lt;br /&gt;------------------------------ ----------&lt;br /&gt;New Owner 1&lt;br /&gt;&lt;br /&gt;Elapsed: 00:00:00.00&lt;br /&gt;SQL&gt; set timing off&lt;br /&gt;SQL&gt;&lt;br /&gt;SQL&gt; set autotrace traceonly&lt;br /&gt;SQL&gt; select owner, count(*)&lt;br /&gt;2 from my_all_objects&lt;br /&gt;3 where owner = 'New Owner'&lt;br /&gt;4 group by owner;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Execution Plan&lt;br /&gt;----------------------------------------------------------&lt;br /&gt;0 SELECT STATEMENT Optimizer=CHOOSE (Cost=2 Card=1 Bytes=9)&lt;br /&gt;1 0 TABLE ACCESS (FULL) OF &lt;span style="color:#ff0000;"&gt;'MY_ALL_OBJECTS_AGGS'&lt;/span&gt; (Cost=2 Card= 1 Bytes=9)&lt;br /&gt;&lt;br /&gt;Statistics&lt;br /&gt;----------------------------------------------------------&lt;br /&gt;0 recursive calls&lt;br /&gt;0 db block gets&lt;br /&gt;4 consistent gets&lt;br /&gt;0 physical reads&lt;br /&gt;0 redo size&lt;br /&gt;442 bytes sent via SQL*Net to client&lt;br /&gt;499 bytes received via SQL*Net from client&lt;br /&gt;2 SQL*Net roundtrips to/from client&lt;br /&gt;0 sorts (memory)&lt;br /&gt;0 sorts (disk)&lt;br /&gt;1 rows processed&lt;br /&gt;&lt;br /&gt;SQL&gt; set autotrace off&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#3333ff;"&gt;--更改sql，不查询owner字段，只count，发现Oracle足够聪明，即使没有创建物化视图的group语句，还是从物化视图来访问&lt;/span&gt;&lt;br /&gt;SQL&gt; set autotrace traceonly&lt;br /&gt;SQL&gt; select count(*)&lt;br /&gt;2 from my_all_objects&lt;br /&gt;3 where owner = 'New Owner';&lt;br /&gt;&lt;br /&gt;Execution Plan&lt;br /&gt;----------------------------------------------------------&lt;br /&gt;0 SELECT STATEMENT Optimizer=CHOOSE (Cost=2 Card=1 Bytes=9)&lt;br /&gt;1 0 SORT (AGGREGATE)&lt;br /&gt;2 1 TABLE ACCESS (FULL) OF &lt;span style="color:#ff0000;"&gt;'MY_ALL_OBJECTS_AGGS'&lt;/span&gt; (Cost=2 Card=1 Bytes=9)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Statistics&lt;br /&gt;----------------------------------------------------------&lt;br /&gt;0 recursive calls&lt;br /&gt;0 db block gets&lt;br /&gt;3 consistent gets&lt;br /&gt;0 physical reads&lt;br /&gt;0 redo size&lt;br /&gt;379 bytes sent via SQL*Net to client&lt;br /&gt;499 bytes received via SQL*Net from client&lt;br /&gt;2 SQL*Net roundtrips to/from client&lt;br /&gt;0 sorts (memory)&lt;br /&gt;0 sorts (disk)&lt;br /&gt;1 rows processed&lt;br /&gt;&lt;br /&gt;SQL&gt; set autotrace off&lt;br /&gt;&lt;br /&gt;对于事物频繁的OLTP系统，尽量少使用物化视图。&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="font-size:130%;"&gt;设置参数&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;如下参数可以在数据库层或者Session层设置QUERY_REWRITE_ENABLED和&lt;br /&gt;QUERY_REWRITE_INTEGRITY值。对于QUERY_REWRITE_INTEGRITY有三种值可设：&lt;br /&gt;Enforced：重写只使用数据库中定义的约束和关系。&lt;br /&gt;Trusted：除了数据库中定义的约束和关系，Oracle还会使用其他我们告知Oracle表的某些关系，从而使得数据库能够重写更多的查询。&lt;br /&gt;Stale_Tolerated：最弱的参数，及时物化视图没有同步更新，也会使用物化视图来重写SQL。&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="font-size:130%;"&gt;查询重写&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;全文精确匹配&lt;/strong&gt;&lt;br /&gt;如果查询的语句与存储在数据词典中物化视图字符串精确匹配，那么将会重写查询。这里的精确匹配相对于共享池的比较而言更友好，它会忽略空格，大小写以及其他的一些格式。&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;部分文本匹配&lt;br /&gt;&lt;/strong&gt;比较From因子后面的文本，即使Select部分的不匹配。例如：&lt;br /&gt;接前面的例子，物化视图的查询部分的SQL：&lt;br /&gt;Select owner, count(*) from my_all_objects group by owner&lt;br /&gt;如下的查询能够被重写：&lt;br /&gt;Select lower(owner) from my_all_objects group by owner&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;一般性重写方法&lt;/strong&gt;&lt;br /&gt;a. 数据满足：查询的数据列在物化视图的查询列中&lt;br /&gt;b. 连接兼容：查询语句中的关联列需要在物化视图的查询列中&lt;br /&gt;c. 分组兼容：查询语句和物化视图都必须有Group by语句，同时物化视图的Group by分组层次应该高于或者等于查询的语句。&lt;br /&gt;d. 聚集兼容：查询语句和物化视图都必须包含聚集语句。如果物化视图包含SUM ()/COUNT () 函数，对于同样列采用AGE () 函数进行计算可以被重写。&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="font-size:130%;"&gt;确保使用物化视图&lt;br /&gt;&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;如下的例子将会说明在怎样的条件下可以确保采用物化视图重写查询，也会比较QUERY_REWRITE_INTEGRITY值Enforced和Trusted的不同。&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#3333ff;"&gt;--这一部分语句验证如果在数据库中相关约束，而这种约束在定义物化视图&lt;br /&gt;--使用。那么，如果查询即使满足其它被重写的条件（数据满足，关联兼容，&lt;br /&gt;--分组兼容等），也不会被重写。&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#3333ff;"&gt;--创建测试表和物化视图&lt;/span&gt;&lt;br /&gt;SQL&gt; create table emp as select * from scott.emp;&lt;br /&gt;Table created.&lt;br /&gt;&lt;br /&gt;SQL&gt; create table dept as select * from scott.dept;&lt;br /&gt;Table created.&lt;br /&gt;&lt;br /&gt;SQL&gt; alter session set query_rewrite_enabled=true;&lt;br /&gt;Session altered.&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#3333ff;"&gt;--注意这里使用的参数值为enforced，只有查询中的约束和关系在物化视图中存在，才会重写查询。&lt;/span&gt;&lt;br /&gt;SQL&gt; alter session set query_rewrite_integrity=enforced;&lt;br /&gt;Session altered.&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#3333ff;"&gt;--创建物化视图，注意这里是“refresh on demand”，需要手动刷新物化视图&lt;/span&gt;&lt;br /&gt;SQL&gt; create materialized view emp_dept&lt;br /&gt;2 build immediate&lt;br /&gt;3 refresh on demand&lt;br /&gt;4 enable query rewrite&lt;br /&gt;5 as&lt;br /&gt;6 select dept.deptno, dept.dname, count (*)&lt;br /&gt;7 from emp, dept&lt;br /&gt;8 where emp.deptno = dept.deptno&lt;br /&gt;9 group by dept.deptno, dept.dname&lt;br /&gt;10 /&lt;br /&gt;Materialized view created.&lt;br /&gt;&lt;br /&gt;SQL&gt; alter session set optimizer_goal=all_rows;&lt;br /&gt;Session altered.&lt;br /&gt;&lt;br /&gt;SQL&gt; set autotrace on&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#3333ff;"&gt;--通过执行计划可以看到这个查询并没有被重写，而是直接访问表“EMP”。这是因为我们并没有定义表emp和dept的之间的主外健之间的关系，这种关系物化视图中使用，例如“emp.deptno = dept.deptno”&lt;/span&gt;&lt;br /&gt;SQL&gt; select count(*) from emp;&lt;br /&gt;&lt;br /&gt;COUNT(*)&lt;br /&gt;----------&lt;br /&gt;14&lt;br /&gt;&lt;br /&gt;Execution Plan&lt;br /&gt;----------------------------------------------------------&lt;br /&gt;0 SELECT STATEMENT Optimizer=ALL_ROWS (Cost=2 Card=1)&lt;br /&gt;1 0 SORT (AGGREGATE)&lt;br /&gt;2 1 TABLE ACCESS (FULL) OF &lt;span style="color:#ff0000;"&gt;'EMP'&lt;/span&gt; (Cost=2 Card=82)&lt;br /&gt;&lt;br /&gt;Statistics&lt;br /&gt;----------------------------------------------------------&lt;br /&gt;….略&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#3333ff;"&gt;--这一部分语句验证增加相关约束后，查询被重写。&lt;br /&gt;&lt;br /&gt;--增加相关的约束和关系&lt;/span&gt;&lt;br /&gt;SQL&gt; alter table dept&lt;br /&gt;2 add constraint dept_pk primary key(deptno);&lt;br /&gt;Table altered.&lt;br /&gt;&lt;br /&gt;SQL&gt; alter table emp&lt;br /&gt;2 add constraint emp_fk_dept&lt;br /&gt;3 foreign key(deptno) references dept(deptno);&lt;br /&gt;Table altered.&lt;br /&gt;&lt;br /&gt;SQL&gt; alter table emp modify deptno not null;&lt;br /&gt;Table altered.&lt;br /&gt;&lt;br /&gt;SQL&gt; set autotrace on&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#3333ff;"&gt;--由于增加了约束，Oracle能够重写查询使其通过物化视图“EMP_DEPT”来访问数据。可以查看下面的highlight部分的执行计划。&lt;/span&gt;&lt;br /&gt;SQL&gt; select count(*) from emp;&lt;br /&gt;&lt;br /&gt;COUNT(*)&lt;br /&gt;----------&lt;br /&gt;14&lt;br /&gt;&lt;br /&gt;Execution Plan&lt;br /&gt;----------------------------------------------------------&lt;br /&gt;0 SELECT STATEMENT Optimizer=ALL_ROWS (Cost=2 Card=1 Bytes=13)&lt;br /&gt;1 0 SORT (AGGREGATE)&lt;br /&gt;2 1 TABLE ACCESS (FULL) OF &lt;span style="color:#ff0000;"&gt;'EMP_DEPT'&lt;/span&gt; (Cost=2 Card=82 Bytes=&lt;br /&gt;1066)&lt;br /&gt;&lt;br /&gt;Statistics&lt;br /&gt;----------------------------------------------------------&lt;br /&gt;略….&lt;br /&gt;&lt;br /&gt;SQL&gt; set autotrace off&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#3333ff;"&gt;--下面这部分SQL将会在比较query_rewrite_integrity在取值为Enforced和&lt;br /&gt;--Trusted情况下，是否被重写。&lt;br /&gt;&lt;br /&gt;--删除上述步骤建立的约束&lt;/span&gt;&lt;br /&gt;SQL&gt; alter table emp drop constraint emp_fk_dept;&lt;br /&gt;Table altered.&lt;br /&gt;&lt;br /&gt;SQL&gt; alter table dept drop constraint dept_pk;&lt;br /&gt;Table altered.&lt;br /&gt;&lt;br /&gt;SQL&gt; alter table emp modify deptno null;&lt;br /&gt;Table altered.&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#3333ff;"&gt;--插入数据&lt;br /&gt;&lt;/span&gt;SQL&gt; insert into emp (empno,deptno) values ( 1, 1 );&lt;br /&gt;1 row created.&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#3333ff;"&gt;--手工刷新物化视图，这是因为物化视图创建的时候使用的是“refresh on demand”&lt;/span&gt;&lt;br /&gt;SQL&gt; exec dbms_mview.refresh( 'EMP_DEPT' );&lt;br /&gt;PL/SQL procedure successfully completed.&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#3333ff;"&gt;--再次增加约束，但是这次增加了NOVALIDATE因子。这样即使数据不符合约束也能够成功创建。&lt;/span&gt;&lt;br /&gt;SQL&gt; alter table dept&lt;br /&gt;2 add constraint dept_pk primary key(deptno)&lt;br /&gt;3 rely enable NOVALIDATE&lt;br /&gt;4 /&lt;br /&gt;Table altered.&lt;br /&gt;&lt;br /&gt;SQL&gt; alter table emp&lt;br /&gt;2 add constraint emp_fk_dept&lt;br /&gt;3 foreign key(deptno) references dept(deptno)&lt;br /&gt;4 rely enable NOVALIDATE&lt;br /&gt;5 /&lt;br /&gt;Table altered.&lt;br /&gt;&lt;br /&gt;SQL&gt; alter table emp modify deptno not null NOVALIDATE;&lt;br /&gt;Table altered.&lt;br /&gt;&lt;br /&gt;SQL&gt; set autotrace on&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#3333ff;"&gt;--设置query_rewrite_integrity值为enforced&lt;/span&gt;&lt;br /&gt;SQL&gt; alter session set query_rewrite_integrity=&lt;span style="color:#ff0000;"&gt;enforced&lt;/span&gt;;&lt;br /&gt;Session altered.&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#3333ff;"&gt;--检查增加约束但数据不满足约束的情况下，如果是query_rewrite_integrity的值为enforcedenforced，那么物化视图不会被利用来重写查询。&lt;/span&gt;&lt;br /&gt;SQL&gt; select count(*) from emp;&lt;br /&gt;COUNT(*)&lt;br /&gt;----------&lt;br /&gt;15&lt;br /&gt;&lt;br /&gt;Execution Plan&lt;br /&gt;----------------------------------------------------------&lt;br /&gt;0 SELECT STATEMENT Optimizer=ALL_ROWS (Cost=2 Card=1)&lt;br /&gt;1 0 SORT (AGGREGATE)&lt;br /&gt;2 1 TABLE ACCESS (FULL) OF &lt;span style="color:#ff0000;"&gt;'EMP'&lt;/span&gt; (Cost=2 Card=164)&lt;br /&gt;&lt;br /&gt;Statistics&lt;br /&gt;----------------------------------------------------------&lt;br /&gt;略….&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#3333ff;"&gt;--设置query_rewrite_integrity值为trusted&lt;/span&gt;&lt;br /&gt;SQL&gt; alter session set query_rewrite_integrity=&lt;span style="color:#ff0000;"&gt;trusted&lt;/span&gt;;&lt;br /&gt;Session altered.&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#3333ff;"&gt;--检查增加约束但数据不满足约束的情况下，如果是query_rewrite_integrity的值为trusted，那么物化视图将会被利用来重写查询&lt;/span&gt;。&lt;br /&gt;SQL&gt; select count(*) from emp;&lt;br /&gt;COUNT(*)&lt;br /&gt;----------&lt;br /&gt;14&lt;br /&gt;&lt;br /&gt;Execution Plan&lt;br /&gt;----------------------------------------------------------&lt;br /&gt;0 SELECT STATEMENT Optimizer=ALL_ROWS (Cost=2 Card=1 Bytes=13)&lt;br /&gt;1 0 SORT (AGGREGATE)&lt;br /&gt;2 1 TABLE ACCESS (FULL) OF &lt;span style="color:#ff0000;"&gt;'EMP_DEPT'&lt;/span&gt; (Cost=2 Card=82 Bytes=&lt;br /&gt;1066)&lt;br /&gt;&lt;br /&gt;Statistics&lt;br /&gt;----------------------------------------------------------&lt;br /&gt;略….&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="font-size:130%;"&gt;Dimension&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;创建纬度映射不同列之间的父子关系，类似于在discoverer中创建的维度，使得在查询的时候根据需求下钻上卷。在这里可以为Oracle提供更多的信息，从而使得重写查询的可能性增大。非常类似discoverer中的hierarchy的概念。&lt;br /&gt;&lt;br /&gt;create dimension sales_dimension&lt;br /&gt;&lt;span style="color:#3333ff;"&gt;--这一部分定义类似于数据库字段的别名&lt;/span&gt;&lt;br /&gt;level cust_id is customer_hierarchy.cust_id&lt;br /&gt;level zip_code is customer_hierarchy.zip_code&lt;br /&gt;level region is customer_hierarchy.region&lt;br /&gt;level day is time_hierarchy.day&lt;br /&gt;level mmyyyy is time_hierarchy.mmyyyy&lt;br /&gt;level qtr_yyyy is time_hierarchy.qtr_yyyy&lt;br /&gt;level yyyy is time_hierarchy.yyyy&lt;br /&gt;&lt;span style="color:#3333ff;"&gt;--定义其中一个层次结构&lt;/span&gt;&lt;br /&gt;hierarchy cust_rollup&lt;br /&gt;(&lt;br /&gt;cust_id child of&lt;br /&gt;zip_code child of&lt;br /&gt;region&lt;br /&gt;)&lt;br /&gt;&lt;span style="color:#3333ff;"&gt;--定义另外一个层次结构&lt;/span&gt;&lt;br /&gt;hierarchy time_rollup&lt;br /&gt;(&lt;br /&gt;day child of&lt;br /&gt;mmyyyy child of&lt;br /&gt;qtr_yyyy child of&lt;br /&gt;yyyy&lt;br /&gt;)&lt;br /&gt;&lt;span style="color:#3333ff;"&gt;--mmyyyy和mon_yyyy是同义词&lt;/span&gt;&lt;br /&gt;attribute mmyyyy&lt;br /&gt;determines mon_yyyy;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="font-size:130%;"&gt;DBMS_OLAP&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;通过DBMS_OLAP，可以完成如下工作：&lt;br /&gt;a. 估算物化视图的大小&lt;br /&gt;b. 验证维度对象是否有效&lt;br /&gt;c. 建议建立起它物化视图，找出需要删除的视图并重命名&lt;br /&gt;d. 评估物化视图的使用状况&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/429266944698350812-5500141031735955192?l=gooply.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gooply.blogspot.com/feeds/5500141031735955192/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=429266944698350812&amp;postID=5500141031735955192' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/429266944698350812/posts/default/5500141031735955192'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/429266944698350812/posts/default/5500141031735955192'/><link rel='alternate' type='text/html' href='http://gooply.blogspot.com/2007/08/expert-one-on-one-oracle.html' title='《Expert one on one Oracle》- 物化视图 - 笔记'/><author><name>Dreaming Bug</name><uri>http://www.blogger.com/profile/00298973410574940859</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='08937255071733634038'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-429266944698350812.post-1791214829285801970</id><published>2007-08-06T11:50:00.000-07:00</published><updated>2007-08-06T11:53:39.083-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='索引'/><category scheme='http://www.blogger.com/atom/ns#' term='Expert one on one Oracle'/><title type='text'>《Expert one on one Oracle》- 索引- 笔记-2</title><content type='html'>&lt;strong&gt;位图索引（略）&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;基于函数的索引（略）&lt;br /&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;使用索引常见问题：&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;a. 能否在视图上创建索引？只能在视图所基于的基表上创建。&lt;br /&gt;&lt;br /&gt;b. B树索引不存储完全为NULL的条目，对于索引至少其中有一列定义为NOT NULL的时候，查询才能使用索引。&lt;br /&gt;&lt;br /&gt;对于表T1，create table t1( x int, y int)，创建索引create unique index t_inx(x,y)之后，如果执行select * from t1 where x is null，执行计划显示不会利用索引。&lt;br /&gt;如果对于表T2，create table t1( x int, y int not null)，创建索引create unique index t_inx(x,y)之后，如果执行select * from t2 where x is null，执行计划显示不会利用索引。&lt;br /&gt;&lt;br /&gt;c. 为何不使用索引&lt;br /&gt;&lt;br /&gt;查询的列超出索引的列的范围。例如，在T(x,y)上创建索引，而实际的查询为Select x, y, z from t where x = 5；那么，由于查询的z列必须访问数据块才能得到，这种情况下，有可能不使用索引而效率更高。&lt;br /&gt;索引的列包含NULL值。执行Select count(*) from T查询，在索引表上建有B树索引。对于NULL值，不在索引中记录，所以不能通过索引来计算count。而会通过全表扫描的方式。&lt;br /&gt;列上建有索引，但是查询的时候在列上使用了函数。例如：select * from t where f(indexed_column)=value&lt;br /&gt;错误的使用条件。例如，对于建有索引的字符列，这列中只包含数字，使用如下查询将不会使用索引，select * from t where indexed_column = 5，将会被转换成select * from t where to_number(indexed_column) = 5。还有，对于这种TRUNC(DATE_COL) = TRUNC(SYSDATE)条件，改写成date_col between trunc(sysdate) and trunc(sysdate)+1‐1/(1*24*60*60)。&lt;br /&gt;表未分析，或者统计数据错误。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/429266944698350812-1791214829285801970?l=gooply.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gooply.blogspot.com/feeds/1791214829285801970/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=429266944698350812&amp;postID=1791214829285801970' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/429266944698350812/posts/default/1791214829285801970'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/429266944698350812/posts/default/1791214829285801970'/><link rel='alternate' type='text/html' href='http://gooply.blogspot.com/2007/08/expert-one-on-one-oracle-2.html' title='《Expert one on one Oracle》- 索引- 笔记-2'/><author><name>Dreaming Bug</name><uri>http://www.blogger.com/profile/00298973410574940859</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='08937255071733634038'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-429266944698350812.post-3570637617092938813</id><published>2007-08-03T12:17:00.000-07:00</published><updated>2007-08-03T12:25:28.196-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Expert one on one Oracle'/><category scheme='http://www.blogger.com/atom/ns#' term='b树索引'/><title type='text'>《Expert one on one Oracle》- 索引- 笔记-1</title><content type='html'>&lt;strong&gt;B树索引&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;对于非唯一性索引，rowid和索引key组成唯一性。唯一性索引，oracle不将rowid加入索引的key。&lt;br /&gt; &lt;br /&gt;&lt;strong&gt;索引压缩&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;可以对索引进行压缩，例如all_objects中有大量重复的owner，object_type的值。增加CPU的时间，减少I/O的时间。&lt;br /&gt;&lt;br /&gt;create index t_idx on all_objects(owner,object_type,object_name);&lt;br /&gt;create index t_idx on all_objects(owner,object_type,object_name) compress 1;&lt;br /&gt;create index t_idx on all_objects(owner,object_type,object_name) compress 2;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Reserve Key indexes&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;对于那些邻近得值，如果对它们创建索引，索引也是序列递增的，非常可能存放在同一个块上，这样增加冲突的可能性。通过反转，可以让索引更好的分布。但是对于条件where X&gt;5，X列上的反转索引就会失效。&lt;br /&gt;&lt;br /&gt;SQL&gt; select 90101, dump(90101,16), dump(reverse(90101),16) from dual&lt;br /&gt;  2  union all&lt;br /&gt;  3  select 90102, dump(90102,16),dump(reverse(90102),16) from dual&lt;br /&gt;  4  union all&lt;br /&gt;  5  select 90103, dump(90103,16),dump(reverse(90103),16) from dual&lt;br /&gt;  6  /&lt;br /&gt;     90101 DUMP(90101,16)        DUMP(REVERSE(90101),1&lt;br /&gt;---------- --------------------- ---------------------&lt;br /&gt;     90101 Typ=2 Len=4: c3,a,2,2 Typ=2 Len=4: 2,2,a,c3&lt;br /&gt;     90102 Typ=2 Len=4: c3,a,2,3 Typ=2 Len=4: 3,2,a,c3&lt;br /&gt;     90103 Typ=2 Len=4: c3,a,2,4 Typ=2 Len=4: 4,2,a,c3&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;降序索引&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;索引创建的时候，是按照索引字段的值升序排列，查询的时候排序因子的字段使用不同的排序方式（例如一个字段升序，一个字段降序），那么通过执行计划可以看到数据库会多执行一个Sort的步骤。这种情况下，可以建立降序索引。感觉类似于基于函数的索引。&lt;br /&gt;&lt;br /&gt;SQL&gt; CREATE TABLE T AS select * from all_objects;&lt;br /&gt;Table created.&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#3333ff;"&gt;--建立多个字段的索引&lt;/span&gt;&lt;br /&gt;SQL&gt; create index t_idx on t(owner,object_type,object_name);&lt;br /&gt;Index created.&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#3333ff;"&gt;--结果升序排列，使用索引，执行计划中无排序步骤&lt;/span&gt;&lt;br /&gt;SQL&gt; select owner, object_type&lt;br /&gt;  2  from t&lt;br /&gt;  3  where owner between 'T' and 'Z'&lt;br /&gt;  4  and object_type is not null&lt;br /&gt;  5  order by owner ASC,object_type ASC;&lt;br /&gt;&lt;br /&gt;Execution Plan&lt;br /&gt;----------------------------------------------------------&lt;br /&gt;   0      SELECT STATEMENT Optimizer=CHOOSE&lt;br /&gt;   1    0   INDEX (RANGE SCAN) OF 'T_IDX' (NON-UNIQUE)&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#3333ff;"&gt;--结果降序排列，使用索引，有排序步骤&lt;/span&gt;&lt;br /&gt;SQL&gt; select owner, object_type&lt;br /&gt;  2  from t&lt;br /&gt;  3  where owner between 'T' and 'Z'&lt;br /&gt;  4  and object_type is not null&lt;br /&gt;  5  order by owner DESC, object_type DESC;&lt;br /&gt;&lt;br /&gt;Execution Plan&lt;br /&gt;----------------------------------------------------------&lt;br /&gt;   0      SELECT STATEMENT Optimizer=CHOOSE&lt;br /&gt;&lt;span style="color:#ff0000;"&gt;   1    0   SORT (ORDER BY)&lt;/span&gt;&lt;br /&gt;   2    1     INDEX (RANGE SCAN) OF 'T_IDX' (NON-UNIQUE)&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#3333ff;"&gt;--分析表&lt;/span&gt;&lt;br /&gt;SQL&gt; exec dbms_stats.gather_TABLE_stats( user, 'T' );&lt;br /&gt;PL/SQL procedure successfully completed.&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#3333ff;"&gt;--分析表之后，结果降序排列，使用索引，无排序步骤&lt;br /&gt;&lt;/span&gt;SQL&gt; select owner, object_type&lt;br /&gt;  2  from t&lt;br /&gt;  3  where owner between 'T' and 'Z'&lt;br /&gt;  4  and object_type is not null&lt;br /&gt;  5  order by owner DESC, object_type DESC;&lt;br /&gt;&lt;br /&gt;Execution Plan&lt;br /&gt;----------------------------------------------------------&lt;br /&gt;   0      SELECT STATEMENT Optimizer=CHOOSE (Cost=7 Card=7018 Bytes=10&lt;br /&gt;          5270)&lt;br /&gt;   1    0   INDEX (RANGE SCAN DESCENDING) OF 'T_IDX' (NON-UNIQUE) (Cos&lt;br /&gt;          t=7 Card=7018 Bytes=105270)&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#3333ff;"&gt;--两个字段排序方式不一致，有排序步骤&lt;/span&gt;&lt;br /&gt;SQL&gt; select owner, object_type&lt;br /&gt;  2  from t&lt;br /&gt;  3  where owner between 'T' and 'Z'&lt;br /&gt;  4  and object_type is not null&lt;br /&gt;  5  &lt;span style="color:#ff0000;"&gt;order by owner ASC,object_type DESC;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;Execution Plan&lt;br /&gt;----------------------------------------------------------&lt;br /&gt;   0      SELECT STATEMENT Optimizer=CHOOSE (Cost=34 Card=7018 Bytes=1&lt;br /&gt;          05270)&lt;br /&gt;&lt;span style="color:#ff0000;"&gt;   1    0   SORT (ORDER BY) (Cost=34 Card=7018 Bytes=105270)&lt;/span&gt;&lt;br /&gt;   2    1     INDEX (FAST FULL SCAN) OF 'T_IDX' (NON-UNIQUE) (Cost=4 C&lt;br /&gt;          ard=7018 Bytes=105270)&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#3333ff;"&gt;--建立降序索引&lt;br /&gt;&lt;/span&gt;SQL&gt; create index desc_t_idx on t(owner ASC,object_type DESC);&lt;br /&gt;Index created.&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#3366ff;"&gt;--根据排序语句建立对应索引后，无排序步骤，使用降序索引&lt;/span&gt;&lt;br /&gt;SQL&gt; select owner, object_type&lt;br /&gt;  2  from t&lt;br /&gt;  3  where owner between 'T' and 'Z'&lt;br /&gt;  4  and object_type is not null&lt;br /&gt;  5  order by owner ASC,object_type DESC;&lt;br /&gt;&lt;br /&gt;Execution Plan&lt;br /&gt;----------------------------------------------------------&lt;br /&gt;   0      SELECT STATEMENT Optimizer=CHOOSE (Cost=7 Card=7018 Bytes=10&lt;br /&gt;          5270)&lt;br /&gt;   1    0   INDEX (RANGE SCAN) OF 'DESC_T_IDX' (NON-UNIQUE) (Cost=7 Ca&lt;br /&gt;          rd=7018 Bytes=105270)&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;使用B树索引的两个原则&lt;br /&gt;&lt;br /&gt;&lt;/strong&gt;a.       如果访问的记录数占整个表纪录数百分比较少。&lt;br /&gt;b.      如果索引包含足够的信息，而查询的时候需要再去查询标的数据块。&lt;br /&gt;继续上面的例子：&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#3366ff;"&gt;--使用T-IDX索引，因为这个查询中多了object_name字段，通过T-IDX索引就不需要访问表的数据块，通过FAST FULL SCAN可以完成&lt;/span&gt;&lt;br /&gt;SQL&gt; select owner, object_type,object_name&lt;br /&gt;  2  from t&lt;br /&gt;  3  where owner between 'T' and 'Z'&lt;br /&gt;  4  and object_type is not null&lt;br /&gt;  5  order by owner ASC,object_type DESC;&lt;br /&gt;&lt;br /&gt;Execution Plan&lt;br /&gt;----------------------------------------------------------&lt;br /&gt;   0      SELECT STATEMENT Optimizer=CHOOSE (Cost=62 Card=7018 Bytes=2&lt;br /&gt;          73702)&lt;br /&gt;&lt;br /&gt;   1    0   SORT (ORDER BY) (Cost=62 Card=7018 Bytes=273702)&lt;br /&gt;   2    1     INDEX (&lt;span style="color:#ff0000;"&gt;FAST FULL SCAN&lt;/span&gt;) OF 'T_IDX' (NON-UNIQUE) (Cost=4 C&lt;br /&gt;          ard=7018 Bytes=273702)&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#3366ff;"&gt;--再增加一个查询字段created，这两个索引中都没有这个字段，所以都需要访问表的数据块。而，查询返回的结果占表纪录行的大部分（owner between 'T' and 'Z'），通过先访问索引再访问数据块，效率更低。Oracle选择全表扫描。&lt;/span&gt;&lt;br /&gt;SQL&gt; select owner, object_type,object_name,created&lt;br /&gt;  2  from t&lt;br /&gt;  3  where owner between 'T' and 'Z'&lt;br /&gt;  4  and object_type is not null&lt;br /&gt;  5  order by owner ASC,object_type DESC;&lt;br /&gt;&lt;br /&gt;Execution Plan&lt;br /&gt;----------------------------------------------------------&lt;br /&gt;   0      SELECT STATEMENT Optimizer=CHOOSE (Cost=108 Card=7018 Bytes=&lt;br /&gt;          329846)&lt;br /&gt;&lt;br /&gt;   1    0   SORT (ORDER BY) (Cost=108 Card=7018 Bytes=329846)&lt;br /&gt;   2    1    &lt;span style="color:#ff0000;"&gt; TABLE ACCESS (FULL)&lt;/span&gt; OF 'T' (Cost=40 Card=7018 Bytes=3298&lt;br /&gt;          46)&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#3366ff;"&gt;--限定只返回少量的纪录，发现又重新开始使用索引。&lt;/span&gt;&lt;br /&gt;SQL&gt; select owner, object_type,object_name,created&lt;br /&gt;  2  from t&lt;br /&gt;  3  where owner = 'T'&lt;br /&gt;  4  and object_type is not null&lt;br /&gt;  5  order by owner ASC,object_type DESC;&lt;br /&gt;&lt;br /&gt;Execution Plan&lt;br /&gt;----------------------------------------------------------&lt;br /&gt;   0      SELECT STATEMENT Optimizer=CHOOSE (Cost=31 Card=1046 Bytes=4&lt;br /&gt;          9162)&lt;br /&gt;&lt;br /&gt;   1    0   TABLE ACCESS (BY INDEX ROWID) OF 'T' (Cost=31 Card=1046 By&lt;br /&gt;          tes=49162)&lt;br /&gt;&lt;br /&gt;   2    1     &lt;span style="color:#ff0000;"&gt;INDEX (RANGE SCAN) OF 'DESC_T_IDX'&lt;/span&gt; (NON-UNIQUE) (Cost=2&lt;br /&gt;          Card=1046)&lt;br /&gt;&lt;br /&gt;当然上述两条原则并不是适用于任何情况，有许多因素影响到执行计划。下面这个例子说明数据的存储对索引的影响。通过建立两张表，一张无序存储，一张有序存储，来比较两种情况下使用索引所消耗的资源和时间。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#3366ff;"&gt;--创建有序存储的表，相邻记录存储在同一个数据块&lt;br /&gt;&lt;/span&gt;SQL&gt; create table colocated ( x int, y varchar2(2000) ) pctfree 0;&lt;br /&gt;Table created.&lt;br /&gt;&lt;br /&gt;SQL&gt; begin&lt;br /&gt;  2     for i in 1 .. 100000&lt;br /&gt;  3     loop&lt;br /&gt;  4             insert into colocated values ( i, rpad(dbms_random.random,75,'*'&lt;br /&gt;) );&lt;br /&gt;  5     end loop;&lt;br /&gt;  6  end;&lt;br /&gt;  7  /&lt;br /&gt;PL/SQL procedure successfully completed.&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#3366ff;"&gt;--同一个数据块储存数据不相邻&lt;/span&gt;&lt;br /&gt;SQL&gt; create table disorganized nologging pctfree 0&lt;br /&gt;  2  as&lt;br /&gt;  3  select x, y from colocated ORDER BY y&lt;br /&gt;  4  /&lt;br /&gt;Table created.&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#3366ff;"&gt;--创建主健，同时也会创建索引&lt;/span&gt;&lt;br /&gt;SQL&gt; alter table colocated    add constraint colocated_pk    primary key(x);&lt;br /&gt;Table altered.&lt;br /&gt;&lt;br /&gt;SQL&gt; alter table disorganized add constraint disorganized_pk primary key(x);&lt;br /&gt;Table altered.&lt;br /&gt;&lt;br /&gt;SQL&gt; commit;&lt;br /&gt;Commit complete.&lt;br /&gt;&lt;br /&gt;SQL&gt; set timing on&lt;br /&gt;SQL&gt; set autotrace traceonly&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#3366ff;"&gt;--对于有序存储的数据，查询的时候只有3000的逻辑I/O，时间为0.03秒&lt;br /&gt;&lt;/span&gt;SQL&gt; select * from COLOCATED where x between 20000 and 40000;&lt;br /&gt;&lt;br /&gt;20001 rows selected.&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#ff0000;"&gt;Elapsed: 00:00:00.03&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Execution Plan&lt;br /&gt;----------------------------------------------------------&lt;br /&gt;   0      SELECT STATEMENT Optimizer=CHOOSE&lt;br /&gt;   1    0   TABLE ACCESS (BY INDEX ROWID) OF 'COLOCATED'&lt;br /&gt;   2    1     INDEX (RANGE SCAN) OF 'COLOCATED_PK' (UNIQUE)&lt;br /&gt;&lt;br /&gt;Statistics&lt;br /&gt;----------------------------------------------------------&lt;br /&gt;        156  recursive calls&lt;br /&gt;          0  db block gets&lt;br /&gt;&lt;span style="color:#ff0000;"&gt;       2908  consistent gets&lt;/span&gt;&lt;br /&gt;         43  physical reads&lt;br /&gt;          0  redo size&lt;br /&gt;    1805701  bytes sent via SQL*Net to client&lt;br /&gt;      15162  bytes received via SQL*Net from client&lt;br /&gt;       1335  SQL*Net roundtrips to/from client&lt;br /&gt;          4  sorts (memory)&lt;br /&gt;          0  sorts (disk)&lt;br /&gt;      20001  rows processed&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#3366ff;"&gt;--对于无序存储的数据，查询的时候只有将近20000的逻辑I/O，时间为8秒。同样的数据和索引，相对而言，无序存储的数据使用索引查询消耗更多的时间。&lt;/span&gt;&lt;br /&gt;SQL&gt; select * from DISORGANIZED where x between 20000 and 40000;&lt;br /&gt;20001 rows selected.&lt;br /&gt;&lt;span style="color:#ff0000;"&gt;Elapsed: 00:00:08.00&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Execution Plan&lt;br /&gt;----------------------------------------------------------&lt;br /&gt;   0      SELECT STATEMENT Optimizer=CHOOSE&lt;br /&gt;   1    0   TABLE ACCESS (BY INDEX ROWID) OF 'DISORGANIZED'&lt;br /&gt;   2    1     INDEX (RANGE SCAN) OF 'DISORGANIZED_PK' (UNIQUE)&lt;br /&gt;&lt;br /&gt;Statistics&lt;br /&gt;----------------------------------------------------------&lt;br /&gt;        156  recursive calls&lt;br /&gt;          0  db block gets&lt;br /&gt;&lt;span style="color:#ff0000;"&gt;      21388  consistent gets&lt;/span&gt;&lt;br /&gt;       1119  physical reads&lt;br /&gt;          0  redo size&lt;br /&gt;    1805701  bytes sent via SQL*Net to client&lt;br /&gt;      15162  bytes received via SQL*Net from client&lt;br /&gt;       1335  SQL*Net roundtrips to/from client&lt;br /&gt;          4  sorts (memory)&lt;br /&gt;          0  sorts (disk)&lt;br /&gt;      20001  rows processed&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#3366ff;"&gt;--对于无序存储的数据，强制用全表扫描只需要0.04秒，说明全表扫描比使用索引更有效。那为什么Oracle执行计划中为什么不使用全表扫描来查询呢？在CBO的优化模式下，因为没有对表进行分析，Oracle并没有足够的信息来选择最优的执行路径。下面对表进行分析&lt;/span&gt;。&lt;br /&gt;SQL&gt; select /*+ FULL(DISORGANIZED) */ * from DISORGANIZED where x between 20000&lt;br /&gt;and 40000;&lt;br /&gt;20001 rows selected.&lt;br /&gt;&lt;span style="color:#ff0000;"&gt;Elapsed: 00:00:00.04&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Execution Plan&lt;br /&gt;----------------------------------------------------------&lt;br /&gt;   0      SELECT STATEMENT Optimizer=CHOOSE (Cost=105 Card=220 Bytes=2&lt;br /&gt;          23300)&lt;br /&gt;&lt;br /&gt;   1    0   TABLE ACCESS (FULL) OF 'DISORGANIZED' (Cost=105 Card=220 B&lt;br /&gt;          ytes=223300)&lt;br /&gt;&lt;br /&gt;Statistics&lt;br /&gt;----------------------------------------------------------&lt;br /&gt;         60  recursive calls&lt;br /&gt;          0  db block gets&lt;br /&gt; &lt;span style="color:#ff0000;"&gt;      2407  consistent gets&lt;/span&gt;&lt;br /&gt;          1  physical reads&lt;br /&gt;          0  redo size&lt;br /&gt;    1805701  bytes sent via SQL*Net to client&lt;br /&gt;      15162  bytes received via SQL*Net from client&lt;br /&gt;       1335  SQL*Net roundtrips to/from client&lt;br /&gt;          2  sorts (memory)&lt;br /&gt;          0  sorts (disk)&lt;br /&gt;      20001  rows processed&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#3366ff;"&gt;--分析表&lt;/span&gt;&lt;br /&gt;SQL&gt; set autotrace off;&lt;br /&gt;SQL&gt; set timing off;&lt;br /&gt;SQL&gt; analyze table colocated&lt;br /&gt;  2  compute statistics&lt;br /&gt;  3  for table&lt;br /&gt;  4  for all indexes&lt;br /&gt;  5  for all indexed columns&lt;br /&gt;  6  /&lt;br /&gt;Table analyzed.&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#3366ff;"&gt;--分析表&lt;/span&gt;&lt;br /&gt;SQL&gt; analyze table disorganized&lt;br /&gt;  2  compute statistics&lt;br /&gt;  3  for table&lt;br /&gt;  4  for all indexes&lt;br /&gt;  5  for all indexed columns&lt;br /&gt;  6  /&lt;br /&gt;Table analyzed.&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#3366ff;"&gt;--一旦分析完成，可以查询user_indexes表中的CLUSTERING_FACTOR字段的值。如果这个值接近数据块的数量，证明这张表是存储相当好。单个索引叶子节点的索引项通常指向同一个数据块。如果这个值接近数据行的数量，说明这张表是随机存储的。单个索引叶子节点的索引项通常不指向同一个数据块。如上的两张表中，表'COLOCATED_PK'的主健的CLUSTERING_FACTOR字段的值为1073，接近块的数量，存储有序。表'DISORGANIZED_PK'的主健CLUSTERING_FACTOR字段的值为99907，接近行的数量，存储无序。&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;SQL&gt; select a.index_name,&lt;br /&gt;  2         b.num_rows,&lt;br /&gt;  3        b.blocks,&lt;br /&gt;  4        a.clustering_factor&lt;br /&gt;  5    from user_indexes a, user_tables b&lt;br /&gt;  6  where index_name in ('COLOCATED_PK', 'DISORGANIZED_PK' )&lt;br /&gt;  7    and a.table_name = b.table_name&lt;br /&gt;  8  /&lt;br /&gt;&lt;br /&gt;INDEX_NAME                       NUM_ROWS     BLOCKS CLUSTERING_FACTOR&lt;br /&gt;------------------------------ ---------- ---------- -----------------&lt;br /&gt;COLOCATED_PK                       100000       1073              &lt;span style="color:#ff0000;"&gt;1073&lt;/span&gt;&lt;br /&gt;DISORGANIZED_PK                    100000       1076             &lt;span style="color:#ff0000;"&gt;99907&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;SQL&gt; set timing on&lt;br /&gt;SQL&gt; set autotrace traceonly&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#3366ff;"&gt;--经过表分析之后，Oracle拥有足够的信息知道通过全表访问更有效，这个时候不用通过增加hint，Oracle会自动选择全表扫描的方式查询。&lt;/span&gt;&lt;br /&gt;SQL&gt; select * from DISORGANIZED where x between 20000 and 30000;&lt;br /&gt;10001 rows selected.&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#ff0000;"&gt;Elapsed: 00:00:00.01&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;Execution Plan&lt;br /&gt;----------------------------------------------------------&lt;br /&gt;   0      SELECT STATEMENT Optimizer=CHOOSE (Cost=105 Card=9995 Bytes=&lt;br /&gt;          839580)&lt;br /&gt;&lt;br /&gt;   1    0   &lt;span style="color:#ff0000;"&gt;TABLE ACCESS (FULL)&lt;/span&gt; OF 'DISORGANIZED' (Cost=105 Card=9995&lt;br /&gt;          Bytes=839580)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Statistics&lt;br /&gt;----------------------------------------------------------&lt;br /&gt;          0  recursive calls&lt;br /&gt;          0  db block gets&lt;br /&gt;&lt;span style="color:#ff0000;"&gt;       1743  consistent gets&lt;/span&gt;&lt;br /&gt;          0  physical reads&lt;br /&gt;          0  redo size&lt;br /&gt;     903094  bytes sent via SQL*Net to client&lt;br /&gt;       7825  bytes received via SQL*Net from client&lt;br /&gt;        668  SQL*Net roundtrips to/from client&lt;br /&gt;          0  sorts (memory)&lt;br /&gt;          0  sorts (disk)&lt;br /&gt;      10001  rows processed&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/429266944698350812-3570637617092938813?l=gooply.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gooply.blogspot.com/feeds/3570637617092938813/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=429266944698350812&amp;postID=3570637617092938813' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/429266944698350812/posts/default/3570637617092938813'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/429266944698350812/posts/default/3570637617092938813'/><link rel='alternate' type='text/html' href='http://gooply.blogspot.com/2007/08/expert-one-on-one-oracle-1.html' title='《Expert one on one Oracle》- 索引- 笔记-1'/><author><name>Dreaming Bug</name><uri>http://www.blogger.com/profile/00298973410574940859</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='08937255071733634038'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-429266944698350812.post-5190745714782948857</id><published>2007-08-01T18:38:00.000-07:00</published><updated>2008-11-13T01:58:02.818-08:00</updated><title type='text'>Personalization: 从并发定义Form打开可执行Form</title><content type='html'>&lt;div&gt;&lt;div&gt;&lt;p&gt;Oracle Form Personalization的Demo， 从用户定义界面的职责列表中，选中某一个职责行然后从Tools菜单中，选中子菜单打开职责定义界面察看职责的详细信息。仿照这个Demo，练习了一个从并发程序定义界面，打开并发可执行界面，察看和这个并发程序关联的可执行的详细信息。&lt;br /&gt;&lt;br /&gt;Personalization分为两部分，一部分是针对并发程序Form的，主要功能是定义打开可执行的菜单，打开可执行的Form。另一部分是针对可执行Form的，主要功能是根据从并发程序传递过来的可执行的参数，进行查询显示。&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:180%;"&gt;&lt;strong&gt;&lt;span style="font-size:130%;"&gt;并发程序Form的Personalization&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="font-size:130%;"&gt;1. 打开Personalization的界面&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;选择“Application Developer”职责，打开“Concurrent-&gt;Program”。然后从Help菜单打开Personalize。&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;img id="BLOGGER_PHOTO_ID_5093916464680716722" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://3.bp.blogspot.com/_LVEyZaW7hys/RrE6CTDOybI/AAAAAAAAAHE/fTwA1IPdx5w/s400/open+menu.JPG" border="0" /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="font-size:130%;"&gt;2. 定义Executable Details的菜单 &lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;设置条件：&lt;/strong&gt;&lt;br /&gt;定义只对职责“Application Developer”有效。&lt;br /&gt;&lt;img id="BLOGGER_PHOTO_ID_5093915352284186786" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://4.bp.blogspot.com/_LVEyZaW7hys/RrE5BjDOyKI/AAAAAAAAAE8/l9Tc3cBZZgE/s400/2.+init+menu+condition.JPG" border="0" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;设置Action：&lt;/strong&gt;&lt;br /&gt;新增一个菜单“Executions”，指定Menu Entry为SPECIAL1，这样菜单会挂在TOOLS下。&lt;br /&gt;&lt;img id="BLOGGER_PHOTO_ID_5093915360874121410" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://2.bp.blogspot.com/_LVEyZaW7hys/RrE5CDDOyMI/AAAAAAAAAFM/C9l0xIeYjr8/s400/3.+init+menu+action.JPG" border="0" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="font-size:130%;"&gt;3. 设置判断逻辑&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;如果当前的Execution Name域没有可执行的名称，那么如果用户这个时候点击“Executions”菜单，提示错误。&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;设置Condition：&lt;/strong&gt;&lt;br /&gt;根据Item项CONC_PROG.EXECUTABLE_ID是否有值来判断。&lt;br /&gt;注意，这里的Trigger为所定义菜单“SPECIAL1”。&lt;br /&gt;&lt;img id="BLOGGER_PHOTO_ID_5093915365169088738" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://3.bp.blogspot.com/_LVEyZaW7hys/RrE5CTDOyOI/AAAAAAAAAFc/0ziBU_ImcNA/s400/4.+Not+selected+condition.JPG" border="0" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;设置Action：&lt;/strong&gt;&lt;br /&gt;通过Message类型的错误，显示提示信息。&lt;br /&gt;&lt;img id="BLOGGER_PHOTO_ID_5093915365169088722" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://3.bp.blogspot.com/_LVEyZaW7hys/RrE5CTDOyNI/AAAAAAAAAFU/ZUUK9DgOQbA/s400/4.+Not+selected+action.JPG" border="0" /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="font-size:130%;"&gt;4. 打开菜单&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;设置Condition：&lt;/strong&gt;&lt;br /&gt;根据Item项CONC_PROG.EXECUTABLE_ID是否有值来判断。&lt;br /&gt;注意，这里的Trigger为所定义菜单“SPECIAL1”。&lt;br /&gt;&lt;img id="BLOGGER_PHOTO_ID_5093915713061439762" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://4.bp.blogspot.com/_LVEyZaW7hys/RrE5WjDOyRI/AAAAAAAAAF0/3MnDaZO5wzU/s400/5.+Entered+execution+condition.JPG" border="0" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;设置Action1：&lt;/strong&gt;&lt;br /&gt;将CONC_PROG.EXECUTABLE_ID值放入全局变量XX_EXECUTION_ID保存起来。&lt;br /&gt;&lt;img id="BLOGGER_PHOTO_ID_5093915700176537842" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://1.bp.blogspot.com/_LVEyZaW7hys/RrE5VzDOyPI/AAAAAAAAAFk/hxBx-mD-6cg/s400/5.+Entered+execution+action1.JPG" border="0" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;设置Action2：&lt;/strong&gt;&lt;br /&gt;通过执行FND_FNDCPMPE，将可执行的界面&lt;br /&gt;&lt;img id="BLOGGER_PHOTO_ID_5093915708766472450" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://3.bp.blogspot.com/_LVEyZaW7hys/RrE5WTDOyQI/AAAAAAAAAFs/q7Czb8SvTn4/s400/5.+Entered+execution+action2.JPG" border="0" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;strong&gt;可执行Form的Personalization：&lt;/strong&gt;&lt;/span&gt; &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;strong&gt;5. 打开Personalization的界面&lt;/strong&gt;&lt;br /&gt;选择“Application Developer”职责，打开“Concurrent-&gt;Executable”。然后从Help菜单打开Personalize。&lt;br /&gt;&lt;img id="BLOGGER_PHOTO_ID_5093915352284186802" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://4.bp.blogspot.com/_LVEyZaW7hys/RrE5BjDOyLI/AAAAAAAAAFE/8Zq5nqkF1pE/s400/2.JPG" border="0" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="font-size:130%;"&gt;6. 初始化查询变量 &lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;设置Condition：&lt;br /&gt;&lt;/strong&gt;&lt;br /&gt;&lt;img id="BLOGGER_PHOTO_ID_5093915721651374386" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://2.bp.blogspot.com/_LVEyZaW7hys/RrE5XDDOyTI/AAAAAAAAAGE/S8ctVzZrFIk/s400/22+init+vairlous+condition.JPG" border="0" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;设置Action：&lt;/strong&gt;&lt;br /&gt;初始化全局变量XX_EXECUTION_ID。这里比较关键的一点是“Property Name”一定要选择“INITIAL VALUE”而不是“VALUE”。选择“INITIAL VALUE”表示，如果原来全局变量XX_EXECUTION_ID已经初始化，那么这里不会对其再次赋值。这种设置适应于从并发程序Form打开可执行Form的情况，因为在并发程序Form中已经对XX_EXECUTION_ID初始化，在可执行的Form中就需要保持这个变量原来值，而不是将其覆盖。如果设置“VALUE”，那么这里的赋值语句将会执行。设置为“VALUE”适应于直接打开可执行Form的情况。&lt;br /&gt;&lt;img id="BLOGGER_PHOTO_ID_5093915717356407074" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://1.bp.blogspot.com/_LVEyZaW7hys/RrE5WzDOySI/AAAAAAAAAF8/3JYTjowSA3A/s400/22+init+vairlous+action.JPG" border="0" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="font-size:130%;"&gt;7. 进入查询界面（类似于按下F11）&lt;/span&gt;&lt;br /&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;设置Condition：&lt;/strong&gt; &lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;img id="BLOGGER_PHOTO_ID_5093916206982678866" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://3.bp.blogspot.com/_LVEyZaW7hys/RrE5zTDOyVI/AAAAAAAAAGU/939qJ5a-0ro/s400/23+Enter+query+mode+condition.JPG" border="0" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;设置Action：&lt;/strong&gt; &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;img id="BLOGGER_PHOTO_ID_5093916202687711554" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://2.bp.blogspot.com/_LVEyZaW7hys/RrE5zDDOyUI/AAAAAAAAAGM/GhA_fmSEk_c/s400/23+Enter+query+mode+action.JPG" border="0" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="font-size:130%;"&gt;8. 设置查询的可执行的ID并执行查询（类似于按下Ctrl + F11）&lt;br /&gt;&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;设置Condition：&lt;/strong&gt;&lt;br /&gt;注意这里的Processing Mode为“Only in Enter-Query Mode”&lt;br /&gt;&lt;br /&gt;&lt;img id="BLOGGER_PHOTO_ID_5093916215572613506" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://1.bp.blogspot.com/_LVEyZaW7hys/RrE5zzDOyYI/AAAAAAAAAGs/icbiyyKajLY/s400/24+Execute+query+condition1.JPG" border="0" /&gt;&lt;br /&gt;&lt;strong&gt;设置Action1：&lt;/strong&gt;&lt;br /&gt;将全局变量XX_EXECUTION_ID的值赋给FND_EXECUTABLES.EXECUTABLE_ID，类似于输入了可执行的名称。&lt;br /&gt;&lt;img id="BLOGGER_PHOTO_ID_5093916206982678882" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://3.bp.blogspot.com/_LVEyZaW7hys/RrE5zTDOyWI/AAAAAAAAAGc/uXL90VqYqiA/s400/24+Execute+query+action1.JPG" border="0" /&gt;&lt;br /&gt;&lt;strong&gt;设置Action2：&lt;br /&gt;&lt;/strong&gt;执行查询，类似于按下Ctrl + F11。&lt;br /&gt;&lt;img id="BLOGGER_PHOTO_ID_5093916211277646194" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://4.bp.blogspot.com/_LVEyZaW7hys/RrE5zjDOyXI/AAAAAAAAAGk/nE2_Ya3lF2A/s400/24+Execute+query+action2.JPG" border="0" /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="font-size:130%;"&gt;9. 重置全局变量&lt;br /&gt;&lt;/span&gt;&lt;/strong&gt;让其他直接打开可执行Form的用户，不至于打开Form的时候就进入已经查询出某个可执行的Form。如果重值变量为Null，当用户直接打开可执行Form的用户，第一个Condition将不会满足，将会显示一个“干净”的可执行Form。&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;设置Condition：&lt;/strong&gt; &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;img id="BLOGGER_PHOTO_ID_5093916460385749410" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://2.bp.blogspot.com/_LVEyZaW7hys/RrE6CDDOyaI/AAAAAAAAAG8/kkNr4NFfyNs/s400/25+null+out+golbal.JPG" border="0" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;设置Action：&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;img id="BLOGGER_PHOTO_ID_5093916460385749394" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://2.bp.blogspot.com/_LVEyZaW7hys/RrE6CDDOyZI/AAAAAAAAAG0/NU6wUJqfF_s/s400/25+null+out+action.JPG" border="0" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/429266944698350812-5190745714782948857?l=gooply.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gooply.blogspot.com/feeds/5190745714782948857/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=429266944698350812&amp;postID=5190745714782948857' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/429266944698350812/posts/default/5190745714782948857'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/429266944698350812/posts/default/5190745714782948857'/><link rel='alternate' type='text/html' href='http://gooply.blogspot.com/2007/08/personalization-formform.html' title='Personalization: 从并发定义Form打开可执行Form'/><author><name>Dreaming Bug</name><uri>http://www.blogger.com/profile/00298973410574940859</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='08937255071733634038'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_LVEyZaW7hys/RrE6CTDOybI/AAAAAAAAAHE/fTwA1IPdx5w/s72-c/open+menu.JPG' height='72' width='72'/><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-429266944698350812.post-5238282429642965054</id><published>2007-08-01T14:52:00.000-07:00</published><updated>2008-11-13T01:58:03.133-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Internal Server Error'/><category scheme='http://www.blogger.com/atom/ns#' term='工作簿'/><category scheme='http://www.blogger.com/atom/ns#' term='discoverer viewer'/><category scheme='http://www.blogger.com/atom/ns#' term='Sheet'/><title type='text'>同名Sheet引起Discoverer Viewer的“Internal Server Error”</title><content type='html'>&lt;div&gt;一个工作簿，以前存入数据库共享给用户。昨天通过Discoverer Viewer打开工作簿查询数据的时候，出现如下拷屏的错误（Internal Server Error）。&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;img id="BLOGGER_PHOTO_ID_5093854101755578498" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://3.bp.blogspot.com/_LVEyZaW7hys/RrEBUTDOyII/AAAAAAAAAEs/IuJeuAGTreM/s400/error+info.PNG" border="0" /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;查询Apache相关日志，只发现“14664 internal servlet error in server”。 &lt;/li&gt;&lt;li&gt;发现只针对这一个工作簿，存在这个问题。 &lt;/li&gt;&lt;li&gt;通过Discoverer Desktop可以打开这个工作簿并且可以查询出结果。 &lt;/li&gt;&lt;li&gt;将工作簿保存到本地然后再重新存入数据库，问题依然存在。 &lt;/li&gt;&lt;/ol&gt;&lt;p&gt;后来发现，这个工作簿竟然有两个同样的名字“Sheet 1”，如果尝试通过手工建立两张同名的Sheets，这是不允许的。一定是Oracle内部发生了什么错误，从而产生两张同样的Sheets。 &lt;/p&gt;&lt;p&gt;&lt;img id="BLOGGER_PHOTO_ID_5093854179064989842" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://1.bp.blogspot.com/_LVEyZaW7hys/RrEBYzDOyJI/AAAAAAAAAE0/8w0wzbNBEk8/s400/same+sheet+name.PNG" border="0" /&gt;&lt;/p&gt;&lt;br /&gt;将其中一个删除或者更名，搞定问题。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/429266944698350812-5238282429642965054?l=gooply.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gooply.blogspot.com/feeds/5238282429642965054/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=429266944698350812&amp;postID=5238282429642965054' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/429266944698350812/posts/default/5238282429642965054'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/429266944698350812/posts/default/5238282429642965054'/><link rel='alternate' type='text/html' href='http://gooply.blogspot.com/2007/08/sheetdiscoverer-viewerinternal-server.html' title='同名Sheet引起Discoverer Viewer的“Internal Server Error”'/><author><name>Dreaming Bug</name><uri>http://www.blogger.com/profile/00298973410574940859</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='08937255071733634038'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_LVEyZaW7hys/RrEBUTDOyII/AAAAAAAAAEs/IuJeuAGTreM/s72-c/error+info.PNG' height='72' width='72'/><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry></feed>