壹佰网|ERP100 - 企业信息化知识门户

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 2176|回复: 30

[其他] [分享知识 原创连载]EBS 学习阶段总结,欢迎给我提出建议也同时希望得到大家的支持

[复制链接]
发表于 2013/7/20 22:45:43 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。如果您注册时有任何问题请联系客服QQ: 83569622  。

您需要 登录 才可以下载或查看,没有帐号?注册

x
各位大哥大姐大家好
       这是我连载的第一篇帖子,希望大家支持。
       首先,说一下我怎么进入这一个行业的吧,我不是很喜欢编程,也许是因为个人不能够一心一意的完成好一件事情,所以大学就是这样平平淡淡的过来,大学没能够学到多少好的东西。也许是自我又不甘心,不愿浑浑噩噩,在大学最后的两学年,自学了一些Linux系统和Oracle数据库基础的东西。但是大学找工作,确不竟如我意,丢失了一些好的机会。下学期最后找到了一个做EBS财务软件的上海公司,由于种种原因,进入了重庆本地一家EBS外包服务公司。说说我对公司的一些评价吧,我觉得我的身边的朋友不管工作怎么样,拿的第一份薪水都比我高4、5成;不知道这是进入这个行业的惯例,还是我的要求有点高,每每想到这里,都有点不能释怀。
       这个星期,我觉得我并没有学习到多少知识,关于自我学习这方面的能力,我也需要再加强吧,同时提高自我的专注度吧。我首先将我学习的方向定为三个方面:
      1、pl/sql 编程能力的加强,加深
      2、学习EBS财务模块
      3、学习ERP理论方面的一些知识
      对于plsql,这个星期,在后三天,我每天早上看一篇itpub上plsql 每日一题,学习到plsql的utl_file读取文件方式,关于这里,我要写一点,就是plsql创建目录CREATE OR REPLACE DIRECTORY DIR_NAME AS 'FILE_PATH',这里的DIR_NAME 必须大写,然后才能在后面的 包体里面使用UTL_FILE.FOPEN(‘DIR_NAME’,para,.....)中使用。还有plsql的nocopy 传递地址方式,在调用子程序里面发生异常,使用nocopy的参数是还回原值而不是改变后的值。还学习了plsql的动态游标的使用问题:定义方式  TYPE REF_C IS REF CURSOR;I_cursor REF_CURSOR;然后使用 OPEN CURSOR FOR 'SELECT STRING'方式调用,然后测试了一下使用动态游标返回结果给客户端。在学习plsql的知识的时候,花费了太多时间,其次是自我进展缓慢。快速学习能力有待提高。
       对于EBS的学习,找不到学习入口,我觉得很是受伤,头大。后来在ERP 100上看到大家说,首先学习财务模块,我也是从这个方向开始学习,参考了网络上EBS 财务培训的目录(吐槽一下:要是给我财务培训的资料,教我一步一步怎样做,那太完美了),首先了解EBS应用基础。了解了技术、功能和管理顾问的职能,好想一下子都达到管理顾问的高度,哈哈!,EBS的应用基础有多个方面:表单与查询、事务处理、并发流程、EBS的文件夹、EBS的弹性域、值集与查找代码、配置文件、单据编号、工作流、预警、应用开放接口这些基本概念,然后了解了一下财务模块总账的GL的一些基本知识,觉得看起来比较吃力,这些领域的一些术语,总账、分类帐、一些会计术语。总之,需要花大力气来学习,应该在学习完总账这个功能之后,再回来看自己的学习,应该比较欣慰和开心吧!
       对于ERP理论方面的知识,就没有学习得那么深入了,刚刚了解了制造资源计划(MRP 2)和准时制生产(JIT)的的一些概念,也要抽出一定的时间来学习这些理论知识。
       今天特别悲剧的一件事情,脑袋落枕睡僵了,希望明天好好的吧.
谢谢!
2013年7月20日


点评

很有价值;宝贵的总结;  发表于 2013/8/14 06:49

本帖被以下淘专辑推荐:

发表于 2013/8/4 07:21:42 | 显示全部楼层
SanFrans 发表于 2013/8/3 15:54
这两周以来,发生了一些事情,让我的心情平复下来了。从一个波澜起伏的心绪不宁的状态,回归到真正 ...

从一个应届生的角度,从事EBS的开发应该还算一份不错的工作;EBS的强大会让你很吃惊的,我也是一路走来;EBS最有价值是其业务,也就是功能,所以在学好技术之余不要放弃对业务功能的学习,建议你把会计好好学学,这个对你的工作会比较有帮助;

点评

把会计学原理学好就行;  发表于 2013/8/8 22:38
对于我们这种在校大学生,没有机会接触到实际业务,可否给些建议?  发表于 2013/8/8 22:34
你的支持是我前进的动力,谢谢你的关注  发表于 2013/8/5 23:22
回复 支持 1 反对 0

使用道具 举报

发表于 2013/7/20 23:00:20 | 显示全部楼层
两个字,坚持
发表于 2013/7/20 23:03:29 | 显示全部楼层
最开始的半年都会很迷茫的,因为你还没有掌握Oracle EBS的整体功能架构;如果你的大学没有学会计学原理,那么我建议你买一本最薄的会计学原理好好研究一下,借贷事项的确认以及财务报表是最重要的,这个是作财务顾问必须要掌握的;

PL/SQL是必须要学习的,因为Oracle EBS的核心代码都是用PL/SQL实现的;

祝愿你学习进步;如果你能够坚持将每天的学习进展记录下来,我相信你会进步神速;

关于Oracle EBS的功能你可以参考:
http://bbs.erp100.com/forum.php? ... n=view&ctid=269



发表于 2013/7/20 23:52:23 | 显示全部楼层
财务模块,我以前传过一些小视频,希望可以帮助你!
 楼主| 发表于 2013/7/21 07:58:15 | 显示全部楼层
青松 发表于 2013/7/20 23:52
财务模块,我以前传过一些小视频,希望可以帮助你!

谢谢你的帮助!{:soso_e113:},找到了这些视频,谢谢,真心不错
发表于 2013/7/21 17:23:45 | 显示全部楼层
{:soso__5255944374545425445_4:}{:soso__6711180897349768234_6:}{:soso__18326414239360973529_3:}!!!1
发表于 2013/7/21 17:24:44 | 显示全部楼层
{:soso__16480538895144135354_1:}    come    {:soso__18326414239360973529_3:} on !!!!
发表于 2013/7/21 17:25:26 | 显示全部楼层
{:soso__18326414239360973529_3:}
发表于 2013/7/27 00:30:24 | 显示全部楼层
SanFrans 发表于 2013/7/21 07:58
谢谢你的帮助!,找到了这些视频,谢谢,真心不错

不客气,资源共享嘛!
发表于 2013/7/30 08:38:34 | 显示全部楼层
不错的,我这也是入门阶段。

点评

关注你,大家可以相互帮助  发表于 2013/8/5 23:13
 楼主| 发表于 2013/8/3 15:54:42 | 显示全部楼层
       这两周以来,发生了一些事情,让我的心情平复下来了。从一个波澜起伏的心绪不宁的状态,回归到真正体会到一份工作对我意味着什么;
       EBS现在对于我来说,是唯一的出路,我没有其他的选择,不能回到还是一个应届生的状态,我没有机会再去重新选择一次。我也不在后悔进入这家公司,抱怨有些事情让我不顺心。生活本来就不是一帆风顺的走过,当我面前只有一条路可以走下去的时候,我要做的只是拿出自己的勇气和精神面对每一天,山高路远,总有尽头!
      我选择的道路我是清楚了,我的心情也就平复了。接下来该是怎样行动了,现在真的体会到EBS是我的衣食父母的感觉,应该抓住它,努力努力再努力。

点评

四海也介绍一下你的ebs学习之路吧  发表于 2013/8/4 21:19
从一个应届生的角度,从事EBS的开发应该还算一份不错的工作;EBS的强大会让你很吃惊的,我也是一路走来;EBS最有价值是其业务,也就是功能,所以在学好技术之余不要放弃对业务功能的学习,建议你把会计好好学学;  发表于 2013/8/4 07:21
 楼主| 发表于 2013/8/3 17:15:47 | 显示全部楼层
Time:2013/8/03
        这两周主要学到的知识,系统的梳理一下:
#1.1、plsql 的分析函数
        plsql 分析函数的使用范围经常存在于OLAP 联机分析系统中,数据量大,对实时响应的要求不高或者根本不关注这方面的要求,以查询、统计操作为主的系统。常常应用的方向:
          ①需要对同样的数据进行不同级别的聚合操作
          ②需要在表内将多条数据和同一条数据进行多次的比较
          ③需要在排序完的结果集上进行额外的过滤操作
       语法:FUNCTION_NAME(<argument>,<argument>...) OVER (<artition-Clause><Order-by-Clause><Windowing Clause>)
      1、 分析函数分类:
  • 等级(ranking)函数:用于寻找前N种查询
  • 开窗(windowing)函数:用于计算不同的累计,如SUM,COUNT,AVG,MIN,MAX等,作用于数据的一个窗口上
  • 制表(reporting)函数:与开窗函数同名,作用于一个分区或一组上的所有列
制表函数与开窗函数的关键不同之处在于OVER语句上缺少一个ORDER BY子句!
    2、PARTITION子句
        按照表达式分区(就是分组),如果省略了分区子句,则全部的结果集被看作是一个单一的组
    3、ORDER BY子句
         分析函数中ORDER BY的存在将添加一个默认的开窗子句,这意味着计算中所使用的行的集合是当前分区中当前行和前面所有行,没有ORDER BY时,默认的窗口是全部的分区在Order by 子句后可以添加nulls last,如rder by comm desc nulls last 表示排序时忽略comm列为空的行.
    4、WINDOWING子句
       用于定义分析函数将在其上操作的行的集合Windowing子句给出了一个定义变化或固定的数据窗口的方法,分析函数将对这些数据进行操作
    5、Rang窗口
      Range 5 preceding:将产生一个滑动窗口,他在组中拥有当前行以前5行的集合ANGE窗口仅对NUMBERS和DATES起作用,因为不可能从VARCHAR2中增加或减去N个单元
    6、Row窗口
     利用ROW分区,就没有RANGE分区那样的限制了,数据可以是任何类型,且ORDER BY 可以包括很多列
    7、Specifying窗口
    UNBOUNDED PRECEDING:这个窗口从当前分区的每一行开始,并结束于正在处理的当前行CURRENT ROW:该窗口从当前行开始(并结束)
#1.2、xml 层次结构查询
       首先要创建的是结构化数组:
  1. 1、CREATE OR REPLACE TYPE typ_xml_secondary AS TABLE OF typ_o_xml_secondary

  2. 2、CREATE OR REPLACE TYPE typ_o_xml_primary AS OBJECT(
  3. p_id NUMBER,
  4. p_name VARCHAR2(20),
  5. s_data typ_xml_secondary)
复制代码
然后要使用CAST(MULTISET())将相应结果转换成一维结构(本人理解),
  1. /*SELECT Typ_o_Xml_Primary(p_Id,
  2.                          p_Name,
  3.                          CAST(MULTISET (SELECT s_Id, s_Name, p_Id
  4.                                  FROM Xml_Secondary
  5.                                 WHERE p_Id = Xml_Primary.p_Id) AS
  6.                               Typ_Xml_Secondary)) AS Xml_Primary
  7.   FROM Xml_Primary*/
复制代码
最后调用dbms_xmlgen.newcontext()和getxml()功能将其数据输出:
  1. QRYCTX := DBMS_XMLGEN.NEWCONTEXT('
  2.                   SELECT Typ_o_Xml_Primary(p_Id,
  3.                          p_Name,
  4.                          CAST(MULTISET (SELECT s_Id, s_Name, p_Id
  5.                                  FROM Xml_Secondary
  6.                                 WHERE p_Id = Xml_Primary.p_Id) AS
  7.                               Typ_Xml_Secondary)) AS Xml_Primary
  8.                     FROM Xml_Primary
  9.             ');
  10.   RESULT := DBMS_XMLGEN.GETXML(QRYCTX);
复制代码
#1.3、财务功能学习
          在总账功能模块下,使用模拟的方式,从总账超级用户职责创建用户,授权用户,定义值集,设置会计弹性域,定义会计期间、日历期间等一系列操作。
使用总账表结构查询学习相应表GL_JE_BATCHES 日记账批、GL_SETS_OF_BOOKS 帐套、org_acct_periods 会计期间定义表等
          学习了会计基础里面关于会计要素的定义 资产=负债+所有者权益;
会计的六个要素:资产+(收入-费用)=负债+所有者权益+利润(分配前);
账户的基本结构、复式借贷记帐和借贷原理,过账结账等。
        写了一个关于订单批发信息查询的报表,感觉我写这个报表的效率不是太高,因为涉及订单头行的关系,我的做法是首先把所有订单号的信息查询出来,然后再取出每一个订单号的信息;这样我需要两次使用游标,但是两次使用的游标结构都差不多,关联表也差不多,还没有想出有什么更好的方法能够使用一次查询,输出想要的效果。

#1.4、XML 报表的开发
      使用xml publisher 的报表功能,我们的做法是,首先在plsql developer 中根据取数逻辑,将数据取出来,使用定义的全局变量,一方面用来在标准输出XML文件的结构(输出信息改成英文之后,才能用bi publisher 插件加载到word 文档中),另一方面,作为fnd_file()方式输出;然后在EBS环境中注册应用程序和并发程序,然后使用XML publisher administer 功能在环境中定义模版,功能名称等,特别开心的是,在编写这个报表中间,学会了在plsql developer 环境下的测试功能,以前都不知道,每次都要将form 挂载到环境上去测试自己的代码,测试功能帮了我的大忙。


#1.5、其他
  •     这个月底,要去南京,那边的发动机项目,刚刚了解了一些库存管理功能的学习,学习企业架构:业务组织-法人-帐套-库存组织,然后需要学习库存的仓位、管理,表结构,只有在学习库存的同时学习财务方面的内容了。
  • 我在一些论坛上看到一些帖子,这些帖子的内容就是,我们毕业生与这些老顾问的共同语言问题,因为他们的生活经验和我们不太一样,他们一般都有房有车有小孩的人了,我们这些毕业生什么都没有,聊得东西共同语言也不多,这个问题怎么破,自己也存在这方面问题,不知道怎么破。



思考了很久,送给自己一句话:
路在脚下


oracle分析函数.pdf

764.91 KB, 下载次数: 10, 下载积分: 努力值 -5 点

点评

写得不错;知识在于总结  发表于 2013/8/12 06:48
发表于 2013/8/3 23:59:56 | 显示全部楼层
坚持,几乎和作者同样的处境。。。

点评

你也来写写噢  发表于 2013/8/12 06:49
我们可以经常交流交流,我也是从财务模块入手,听说财务模块是最好入门的  发表于 2013/8/5 23:21
发表于 2013/8/6 12:36:59 | 显示全部楼层
charles_liu 发表于 2013/8/3 23:59
坚持,几乎和作者同样的处境。。。

嗯,可以的哇,你现在进行到那一步了哇,我还在ERP和会计基础扫盲,大学学的网络的路过。。。
 楼主| 发表于 2013/8/16 11:43:11 | 显示全部楼层
TIME 2013/8/16

上个月报表开发总结


  最近我上个月开发的几个报表要收工,描述一下在开发过程中,遇到的主要问题:
1、前期不熟悉环境,要向老技术顾问咨询数据来源取数,我咨询的方向出了问题,他的技术不是最好的,到开发后期有很多问题做不了主,不能提供最优的建议,所以报表开发的时候最好咨询公司最厉害的技术,最有话语权的技术
2、报表选择参考模版也要选择公司最厉害的技术开发的模版,他开发的报表已经成为公司的参考模型,后期最省事,不然到后期验收的时候,很有可能会重新改版
     报表开发的技术问题
1、业务实体ou和组织ID
在FORM 里面获取业务实体OU 的org_id 方式是 fnd_profile.value(‘ORG_ID’)
获取组织ID organization_id 方式是 fnd_org.choose_org 这种方式弹出一个组织选择框,在登录form的时候,注意这里的organization_id 是库存组织ID ,在企业组织架构中是比业务实体OU 小一级的,所以可以通过一个表来转换到OU的id;实际上就是多个库存组织对应一个业务实体的关系
SELECT T.OPERATING_UNIT
      FROM ORG_ORGANIZATION_DEFINITIONS T
     WHERE T.ORGANIZATION_ID = 83;
2、用户信息的获取:FND_GLOBAL.USER_ID
3、用HTML 打印报表的时候,一定要注意表结构中的 COLSPAN,ROWSPAN;比较保险的做法是将打印好的报表复制到EXCEL 中观察其格式
4、左右连接:连接实际上就是取两个表的集合的操作,默认是内连接,即连接条件相同的记录的集合;左连接就是取内连接的结合与左边表剩余的记录(右表字段全为空),这里有点搅,实际上可以这么看,(+)在那个表,对应表剩余记录全都要取

SELECT e.empno,e.ename,d.deptno,d.dname,d.loc       FROM scott.emp e , scott.dept dWHERE e.deptno(+)=d.deptno;
  • NO1 经销商票据报表
主要涉及的表:应收票据 AR_CASH_RECEIPTS_ALL ,应收方法 AR_RECEIPT_METHODS
AR_PAYMENT_SCHEDULES_ALL 应收事务表   AR_CASH_RECEIPT_HISTORY_ALL  应收历史记录表(记录状态)
SELECT AC.ATTRIBUTE10 CPYH, --出票银行
       AC.ATTRIBUTE13 PJLX, --票据类型
       AC.RECEIPT_NUMBER, --收款编号
      
       AC.ATTRIBUTE9 PH, --票号
       TO_CHAR(FND_DATE.CANONICAL_TO_DATE(AC.ATTRIBUTE11), 'YYYY-MM-DD') CP_DATE, --出票日
       TO_CHAR(APS.DUE_DATE, 'YYYY-MM-DD') DUE_DATE, --到期日
       AC.AMOUNT AMOUNT, --金额
       TO_CHAR(ACH.GL_DATE, 'YYYY-MM-DD') GL_DATE, --财务日期
       TO_CHAR(AC.RECEIPT_DATE, 'YYYY-MM-DD') CREATION_DATE --登记日期
  FROM AR_CASH_RECEIPTS_ALL        AC,
       AR_RECEIPT_METHODS          ARM,
       AR_CASH_RECEIPT_HISTORY_ALL ACH,
       AR_PAYMENT_SCHEDULES_ALL    APS
WHERE AC.ATTRIBUTE13 IN ('电子承兑', '纸质承兑')
   AND AC.RECEIPT_METHOD_ID = ARM.RECEIPT_METHOD_ID
   AND ARM.NAME IN ('商业承兑汇票', '银行承兑汇票')
   AND ACH.CASH_RECEIPT_ID(+) = AC.CASH_RECEIPT_ID
   AND ACH.ORG_ID(+) = AC.ORG_ID
   AND ACH.FIRST_POSTED_RECORD_FLAG(+) = 'Y'
   AND APS.CASH_RECEIPT_ID(+) = AC.CASH_RECEIPT_ID
   AND APS.ORG_ID(+) = AC.ORG_ID
      --      AND AC.PAY_FROM_CUSTOMER = 5078
   AND AC.ORG_ID = 81
--       AND AC.CUSTOMER_SITE_USE_ID = 1450

经销商账户和其公司地点目的之间的关系
SELECT ACNT.GLOBAL_ATTRIBUTE7 AREA, --大区
       DECODE(ACNT.GLOBAL_ATTRIBUTE8, '', '', ACNT.GLOBAL_ATTRIBUTE8) PROVINCE, --省份
       ACNT.ACCOUNT_NUMBER DEALER_CODE, --经销商代码
       HP.PARTY_NAME DEALER_NAME, --经销商名称
       USES.LOCATION,
       USES.SITE_USE_ID
  FROM HZ_CUST_ACCOUNTS       ACNT,
             hz_parties hp,
       HZ_CUST_ACCT_SITES_ALL SITE,
       HZ_CUST_SITE_USES_ALL  USES
WHERE ACNT.PARTY_ID = HP.PARTY_ID(+)
   AND ACNT.CUST_ACCOUNT_ID = SITE.CUST_ACCOUNT_ID
   AND USES.CUST_ACCT_SITE_ID = SITE.CUST_ACCT_SITE_ID
   AND USES.GLOBAL_ATTRIBUTE10 BETWEEN '01' AND '09'
   AND USES.SITE_USE_CODE = 'BILL_TO'


  • NO2 批发信息报表(销售)
       批发信息也就是订单信息,主要涉及到订单和应收票据关系
挑选出所有符合要求的订单行
SELECT DISTINCT RCTL.SALES_ORDER SALES_ORDER,
                ac.CUSTOMER_NUMBER,
                AC.CUSTOMER_NAME PARTY_NAME,
                TO_CHAR(RCTL.SALES_ORDER_DATE, 'yyyy-mm-dd') SALES_ORDER_DATE,
                OOH.ATTRIBUTE2 REMARK
  FROM RA_CUSTOMER_TRX_ALL       RCT,
       RA_CUSTOMER_TRX_LINES_ALL RCTL,
       MTL_SYSTEM_ITEMS_B        M,
       OE_ORDER_HEADERS_ALL      OOH,
       AR_CUSTOMERS              AC
WHERE RCT.CUSTOMER_TRX_ID = RCTL.CUSTOMER_TRX_ID
   AND RCTL.INVENTORY_ITEM_ID = M.INVENTORY_ITEM_ID
   AND RCT.BILL_TO_CUSTOMER_ID = AC.CUSTOMER_ID
   AND RCTL.SALES_ORDER = OOH.ORDER_NUMBER
   AND M.ORGANIZATION_ID = 83

主要涉及到发票头行和客户行之间的关系,然后再用相应的订单查找出相应的信息
CURSOR C_LINE(x_SALES_ORDER in varchar2) IS
     SELECT RCTL.SALES_ORDER ORDER_NUMBER,
            M.SEGMENT1,
            DECODE(RCTL.DESCRIPTION, '折扣', '折扣', M.DESCRIPTION) ITEM_DESC,
            DECODE(RCTL.QUANTITY_INVOICED,
                   NULL,
                   RCTL.QUANTITY_CREDITED,
                   RCTL.QUANTITY_INVOICED) QUANTITY,
            RCTL.UNIT_SELLING_PRICE UNIT_SELLING_PRICE
       FROM RA_CUSTOMER_TRX_LINES_ALL RCTL, MTL_SYSTEM_ITEMS_B M
      WHERE RCTL.INVENTORY_ITEM_ID = M.INVENTORY_ITEM_ID
        AND M.ORGANIZATION_ID = 83
        AND RCTL.SALES_ORDER = X_SALES_ORDER
        AND EXISTS
      (SELECT 1
               FROM CUX_PF_DATA_T C
              WHERE C.CUSTOMER_TRX_LINE_ID = RCTL.CUSTOMER_TRX_LINE_ID)


  • NO3 订单报表
查询订单弹性域(值集与值集合)
SELECT T.FLEX_VALUE, T.DESCRIPTION
                FROM FND_FLEX_VALUES_VL T, FND_FLEX_VALUE_SETS FFVS
               WHERE T.FLEX_VALUE_SET_ID = FFVS.FLEX_VALUE_SET_ID
                 AND FFVS.FLEX_VALUE_SET_NAME LIKE 'LM_ORDER_TYPE%'
                 AND T.FLEX_VALUE IN ('1', '2', '3', '4', '5')

这个报表中最重要的是统计发票数,首先讲符合条件的订单统计出来(里面最重要的地方是库存物料的类别,通过类别与价目表里面的类别条件相同,最后取出价格)
SELECT DISTINCT CEO.ORDER_NUMBER ORDER_NUMBER,
                     TO_CHAR(CEO.ORDER_DATE, 'YYYY-MM-DD') ORDER_DATE,
                     FFVV.DESCRIPTION DESCRIPTION_STR,
                     HCA.ACCOUNT_NUMBER SHIP_TO_ORG_ID,
                     HP.PARTY_NAME PARTY_NAME
       FROM CUX_ERP_ORDERS_DELIVER CEO,
            HZ_CUST_ACCOUNTS HCA,
            HZ_PARTIES HP,
            QP_LIST_LINES_V KK,
            CUX_DMS_INVOICE_DETAIL CDID,
            (SELECT T.FLEX_VALUE, T.DESCRIPTION
               FROM FND_FLEX_VALUES_VL T, FND_FLEX_VALUE_SETS FFVS
              WHERE T.FLEX_VALUE_SET_ID = FFVS.FLEX_VALUE_SET_ID
                AND FFVS.FLEX_VALUE_SET_NAME LIKE 'LM_ORDER_TYPE%'
                AND T.FLEX_VALUE IN ('1', '2', '3', '4', '5')) FFVV,
            MTL_SYSTEM_ITEMS_B MSIB,
            MTL_ITEM_CATEGORIES_V MIC
      WHERE CEO.ORDER_TYPE = FFVV.FLEX_VALUE
        AND (CEO.ATTRIBUTE7 IS NULL OR CEO.ATTRIBUTE7 = 'ORDER')
        AND HCA.ACCOUNT_NUMBER = CEO.CUSTOMER_NUMBER
        AND HP.PARTY_ID(+) = HCA.PARTY_ID
        AND CEO.PRICE_LIST_ID <> 0
        AND CEO.PRICE_LIST_ID = KK.LIST_HEADER_ID
           /*
           AND CEO.ITEM_CODE = KK.PRODUCT_ATTR_VAL_DISP
           AND CEO.ORDER_NUMBER = CDID.DELIVERY_CODE
           */
        AND CEO.ORDER_NUMBER = CDID.DELIVERY_CODE(+)
        AND CEO.ITEM_CODE = MSIB.SEGMENT1
        AND MSIB.INVENTORY_ITEM_ID = MIC.INVENTORY_ITEM_ID
        AND MSIB.ORGANIZATION_ID = MIC.ORGANIZATION_ID
        AND MIC.CATEGORY_SET_NAME = '市场营销管理系统'
        AND MSIB.ORGANIZATION_ID = P_ORG_ID
        AND KK.PRODUCT_ATTR_VAL_DISP = MIC.CATEGORY_CONCAT_SEGS
      ORDER BY CEO.ORDER_NUMBER;


  • 建立临时表
当我们使用的表的数据太复杂或者处理量太大,我们就建立一个临时表来处理数据
INSERT INTO CUX_PF_DATA_T
  (CUSTOMER_TRX_LINE_ID,
   AREA,
   CUSTOMER_NUM,
   PROVINCE,
   CAR_MODULE,
   QUANTITY,
   GL_DATE,
   ORDER_TYPE)
  SELECT RCTL.CUSTOMER_TRX_LINE_ID,
         HCA.GLOBAL_ATTRIBUTE7 AREA,
         HCA.ACCOUNT_NUMBER CUSTOMER_CODE,
         HCA.GLOBAL_ATTRIBUTE8 PROVINCE,
         FFVV.FLEX_VALUE MODULE_CODE,
         DECODE(RCTL.QUANTITY_INVOICED,
                NULL,
                RCTL.QUANTITY_CREDITED,
                RCTL.QUANTITY_INVOICED) QUANTITY,
         TO_CHAR(NVL(RCT.TRX_DATE, GD.GL_DATE), 'yyyy-mm-dd') GL_DATE,
         OTT.ATTRIBUTE1
    FROM RA_CUSTOMER_TRX_ALL          RCT,
         RA_CUSTOMER_TRX_LINES_ALL    RCTL,
         RA_CUST_TRX_LINE_GL_DIST_ALL GD,
         OE_ORDER_HEADERS_ALL         OOH,
         OE_TRANSACTION_TYPES_ALL     OTT,
         HZ_CUST_ACCOUNTS             HCA,
         MTL_ITEM_CATEGORIES_V        MICV,
         FND_FLEX_VALUES_VL           FFVV,
         FND_FLEX_VALUE_SETS          FFVS
   WHERE RCTL.CUSTOMER_TRX_ID = GD.CUSTOMER_TRX_ID
     AND RCT.CUSTOMER_TRX_ID = RCTL.CUSTOMER_TRX_ID
     AND RCT.BATCH_SOURCE_ID = 1002 --销售订单导入
     AND GD.ACCOUNT_CLASS = 'REC'
     AND GD.LATEST_REC_FLAG = 'Y'
     AND RCTL.SALES_ORDER IS NOT NULL
     AND RCTL.DESCRIPTION <> '折扣'
     AND RCTL.SALES_ORDER = OOH.ORDER_NUMBER
     AND OOH.ORDER_TYPE_ID = OTT.TRANSACTION_TYPE_ID
     AND HCA.CUST_ACCOUNT_ID = RCT.BILL_TO_CUSTOMER_ID
     AND RCTL.INVENTORY_ITEM_ID = MICV.INVENTORY_ITEM_ID
     AND MICV.ORGANIZATION_ID = G_ORGANIZATION_ID
     AND MICV.CATEGORY_SET_NAME = '市场营销管理系统'
     AND MICV.SEGMENT1 = FFVV.FLEX_VALUE
     AND FFVV.FLEX_VALUE_SET_ID = FFVS.FLEX_VALUE_SET_ID
     AND FFVS.FLEX_VALUE_SET_NAME = 'LM_OM_CATEGORY_1'
     AND TRUNC(NVL(FFVV.START_DATE_ACTIVE, SYSDATE)) <= TRUNC(SYSDATE)
     AND TRUNC(NVL(FFVV.END_DATE_ACTIVE, SYSDATE)) >= TRUNC(SYSDATE)
     AND RCT.ATTRIBUTE11 IS NULL
     AND EXISTS (SELECT 1
            FROM MTL_SYSTEM_ITEMS_B M
           WHERE M.ORGANIZATION_ID = G_ORGANIZATION_ID
             AND M.INVENTORY_ITEM_ID = RCTL.INVENTORY_ITEM_ID
             AND M.ITEM_TYPE = 'FG')
     AND EXISTS (SELECT 1
            FROM AR_GTA_GT_HEADERS_V AGH
           WHERE AGH.RA_TRX_ID = RCTL.CUSTOMER_TRX_ID)
     AND NOT EXISTS
   (SELECT 1
            FROM CUX_PF_DATA_T R
           WHERE RCTL.CUSTOMER_TRX_LINE_ID = R.CUSTOMER_TRX_LINE_ID)
  UNION ALL
  ---手工
  SELECT RCTL.CUSTOMER_TRX_LINE_ID,
         HCA.GLOBAL_ATTRIBUTE7 AREA,
         HCA.ACCOUNT_NUMBER CUSTOMER_CODE,
         HCA.GLOBAL_ATTRIBUTE8 PROVINCE,
         FFVV.FLEX_VALUE MODULE_CODE,
         DECODE(RCTL.QUANTITY_INVOICED,
                NULL,
                RCTL.QUANTITY_CREDITED,
                RCTL.QUANTITY_INVOICED) QUANTITY,
         TO_CHAR(NVL(RCT.TRX_DATE, GD.GL_DATE), 'yyyy-mm-dd') GL_DATE,
         OTT.ATTRIBUTE1
    FROM RA_CUSTOMER_TRX_ALL          RCT,
         RA_CUSTOMER_TRX_LINES_ALL    RCTL,
         RA_CUST_TRX_LINE_GL_DIST_ALL GD,
         OE_ORDER_HEADERS_ALL         OOH,
         OE_TRANSACTION_TYPES_ALL     OTT,
         HZ_CUST_ACCOUNTS             HCA,
         MTL_ITEM_CATEGORIES_V        MICV,
         FND_FLEX_VALUES_VL           FFVV,
         FND_FLEX_VALUE_SETS          FFVS
   WHERE RCTL.CUSTOMER_TRX_ID = GD.CUSTOMER_TRX_ID
     AND RCT.CUSTOMER_TRX_ID = RCTL.CUSTOMER_TRX_ID
     AND RCT.BATCH_SOURCE_ID = 1002 --销售订单导入
     AND GD.ACCOUNT_CLASS = 'REC'
     AND GD.LATEST_REC_FLAG = 'Y'
     AND RCTL.SALES_ORDER IS NOT NULL
     AND RCTL.DESCRIPTION <> '折扣'
     AND RCTL.SALES_ORDER = OOH.ORDER_NUMBER
     AND OOH.ORDER_TYPE_ID = OTT.TRANSACTION_TYPE_ID
     AND HCA.CUST_ACCOUNT_ID = RCT.BILL_TO_CUSTOMER_ID
     AND RCTL.INVENTORY_ITEM_ID = MICV.INVENTORY_ITEM_ID
     AND MICV.ORGANIZATION_ID = G_ORGANIZATION_ID
     AND MICV.CATEGORY_SET_NAME = '市场营销管理系统'
     AND MICV.SEGMENT1 = FFVV.FLEX_VALUE
     AND FFVV.FLEX_VALUE_SET_ID = FFVS.FLEX_VALUE_SET_ID
     AND FFVS.FLEX_VALUE_SET_NAME = 'LM_OM_CATEGORY_1'
     AND TRUNC(NVL(FFVV.START_DATE_ACTIVE, SYSDATE)) <= TRUNC(SYSDATE)
     AND TRUNC(NVL(FFVV.END_DATE_ACTIVE, SYSDATE)) >= TRUNC(SYSDATE)
     AND RCT.ATTRIBUTE11 IS NOT NULL
     AND EXISTS (SELECT 1
            FROM MTL_SYSTEM_ITEMS_B M
           WHERE M.ORGANIZATION_ID = G_ORGANIZATION_ID
             AND M.INVENTORY_ITEM_ID = RCTL.INVENTORY_ITEM_ID
             AND M.ITEM_TYPE = 'FG')
     AND NOT EXISTS
   (SELECT 1
            FROM CUX_PF_DATA_T R
           WHERE RCTL.CUSTOMER_TRX_LINE_ID = R.CUSTOMER_TRX_LINE_ID);


其中分为两段,第一段为系统自动开票,第二段为手动开票
  

发现用Windows Live writer 写的东西基本上可以全部复制过来,不错,哈哈

点评

都是干货  发表于 2013/8/16 12:00
 楼主| 发表于 2013/8/28 21:04:47 | 显示全部楼层
Time 2013/08/28
        最近项目上线,我们的技术大神病倒了,我也跟着感冒,屋漏偏风连夜雨呀,我的工作暂时还是不多,写报表,其次就是写写程序;
上次写那个工单统计和现有量、随货票数据统计的报表,一开始项目总监说用Form写,想了大半天,发现两层嵌套的Form我还是从来没见过,问技术,技术估计也是太慢,招惹不起的样子;思考了N久,换成了用报表做,因为涉及到嵌套中的嵌套,最后用table框架中间再加了一个table框架做出来了
        之后,最令人烦心的一个问题就是无论怎么样工单中的数据取出来与随货票、现有量两者中的数据查不到;这事儿让我挺揪心的,后来还好制造方面的功能顾问对这方面熟,给我理了一下工单中的组件与其产品的关系,原来我的问题就出在这里,物料层次对应不对,所以数据查不到。
        经过项目上各个人员的举止行为,我进一步感觉到技术越来越作为苦逼的角色在项目中存在;当客户意识上很容易解决的东西,其实技术上就不是那么一回事儿,经常性的需求更改或者追求便利性的做法,随便改动生产计划,我们这位技术大神经常性凌晨12点以后还在加班,让我不得不想自己以后的出路,坚定了自己往财务方向靠的想法。
       这周以来,除了完成技术上的事情,闲余时间,我就在学习财务方面的知识;理清楚了财务中借贷公式中何种业务在什么时候什么东西应该填在借方什么东西应该填在贷方,对财务中的资金、账款、票据、汇票等概念有了了解。
       然后在操作学习总账中的业务,我以前的学习过于停留在入门阶段,这次学习的时候放弃了那种从第一步设置开始学习的方式;反而,通过自己在电脑上操作业务,虽然要花一点时间来理解,效果还是不多的。主要了解了日记账、日记账凭证、经常性凭证、定义经常性凭证及其公式、定义凭证批等步骤。
     总的说来,自己以后不会花很多时间停留在技术层面上的研究,如果说对大家造成负面上的影响就当我没说,吃饱了撑的;花时间去学习业务和ERP系统(整个制造系统很多东西需要了解概念,大概知道他在ERP系统中有什么用)。

点评

应该先学操作再学设置,要不然也不知道设置的项目有什么用。  发表于 2013/8/28 22:12
多学业务对你有好处;  发表于 2013/8/28 21:14
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|Archiver|小黑屋|手机版|壹佰网 ERP100 ( 京ICP备19053597号-2 )

Copyright © 2005-2012 北京海之大网络技术有限责任公司 服务器托管由互联互通
手机:13911575376
网站技术点击发送消息给对方83569622   广告&合作 点击发送消息给对方27675401   点击发送消息给对方634043306   咨询及人才点击发送消息给对方138011526

GMT+8, 2025/11/29 07:27 , Processed in 0.042141 second(s), 21 queries , File On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表