ebs学习笔记

一、创建form

1、基本步骤

建表——》建序列——》建同义词——》建视图——》建触发器

注:一般情况下,在cux下建表,其余的在apps下建立

建立序列

 

建立同义词

 

创建视图

 

创建触发器

(注:当点击一个属性要弹出另一个窗口时需要建触发器)

触发器名规范:视图名+_t

CREATE OR REPLACE TRIGGER 触发器名称
  INSTEAD OF INSERT OR UPDATE OR DELETE ON 视图名
  FOR EACH ROW
DECLARE

CREATE OF REPLACE TRIGGER YY_YXD_TRX_V_T

       INSTEAD OF INSERT OR UPDATE OR DELETE ON YY_YXD_TRX_V

       FOR EACH ROW

       

DECLARE

BEGIN

  if inserting then

     INSERT INTO YY_YXD_TRX

       (TRX_ID,

        PERSON_ID,

        TRX_DATE,

        TRX_TYPE,

        TRX_AMOUNT,

        CREATION_DATE,

        CREATED_BY,

        LAST_UPDATE_DATE,

        LAST_UPDATED_BY,

        LAST_UPDATE_LOGIN)

     VALUES

       (:NEW.TRX_ID,

        :NEW.PERSON_ID,

        :NEW.TRX_DATE,

        :NEW.TRX_TYPE,

        :NEW.TRX_AMOUNT,

        :NEW.CREATION_DATE,

        :NEW.CREATED_BY,

        :NEW.LAST_UPDATE_DATE,

        :NEW.LAST_UPDATED_BY,

        :NEW.LAST_UPDATE_LOGIN);

  end if;

  if updating then

      UPDATE YY_YXD_TRX

         SET TRX_ID            = :NEW.TRX_ID,

             PERSON_ID         = :NEW.PERSON_ID,

             TRX_DATE          = :NEW.TRX_DATE,

             TRX_TYPE          = :NEW.TRX_TYPE,

             TRX_AMOUNT        = :NEW.TRX_AMOUNT,

             CREATION_DATE     = :NEW.CREATION_DATE,

             CREATED_BY        = :NEW.CREATED_BY,

             LAST_UPDATE_DATE  = :NEW.LAST_UPDATE_DATE,

             LAST_UPDATED_BY   = :NEW.LAST_UPDATED_BY,

             LAST_UPDATE_LOGIN = :NEW.LAST_UPDATE_LOGIN

       WHERE TRX_ID = :OLD.TRX_ID;

  end if;

  if deleting then

     DELETE FROM YY_YXD_TRX WHERE TRX_ID = :OLD.TRX_ID;

  end if;

END;

Oracle Forms Builder中的操作

 

 


 




 


 



 


二、建立folder

在之前创建的form的主画布上构建一个堆叠画布,然后设置堆叠画布的名称和子类信息(子类信息为 CANVAS_STACKED,将“物理的”栏下的 显示水平滚动条 改为 是

手动创建一个数据块,将之前数据块中要显示的属性复制到当前数据块下,

将当前数据块下的项的子类信息设为FOLDER_PROMPT_MULTIROW,将画布设为堆叠画布,x轴坐标设为0y轴坐标也设为0   设置各项的初始值(如果有date类型的项,必须取消格式掩码) 复制这五个项:ORDER_BY1~3FOLDER_OPEN,FOLDER_DUMMY到当前数据块下,更改画布  ORDER_BY1~3为堆叠画布,FOLDER_OPEN,FOLDER_DUMMY为主画布

将原先数据块下要显示的项的画布改为堆叠画布,x轴坐标设为0y轴坐标设为.25  引入12个数据块级的触发器

加入三个表单级的触发器:FOLDER_ACTION , FOLDER_RETURN_ACTION ,  WHEN-WINDOW-RESIZED ,

修改名为WHEN-NEW-FORM-INSTANCE的触发器,在GO_BLOCK(‘数据块名’); 前加入如下语句:

app_folder.define_folder_block(

      object_name =>' 表单名',

      folder_block_name =>'前个数据块名',

      prompt_block_name=>'新数据块名',

      folder_canvas_name=>'堆叠画布名',

      folder_window_name=>'窗口名',

      disabled_functions=> 'disabled',

      tab_canvas_name => '',

fixed_canvas_name =>'');

EXECUTE_QUERY;后,另起一行输入:app_folder.event('INSTANTIATE');

三、收入管理

如果不想让用户修改某一项,就打开这项,找到数据库栏下的“允许插入”、“允许更新”两项,并改为否。

CURRENT_RECORD_INDICATOR(名称及子类信息)找到数据库--数据库项 为否

建立LOV

当两张表关联时需要建立LOV

使用LOV向导---->基于查询的新纪录组------->加入另一张表的SQL查询语句,并检查语法-----

----->选择要使用的记录组列添加到LOV------->设置标题和列宽,然后逐列点中根据“查看返回项”选择返回的值------->设置名称

双击新建的LOV更改名称,子类信息改为LOV,更改与之相对应的记录组名

SELECT a.person_id,

       a.person_name,

       a.person_level,

       a.birthday

  FROM yy_yxd_persons a

四、支出管理

 

declare

  lv_where varchar2(2000);

begin

lv_where := '1=1';

if :bloquery.person_name is not null then

lv_where := lv_where || ' and person_name=''' || :bloquery.person_name || '''';

end if;

  set_block_property('YY_YXD_TRX_V',default_where,lv_where);

  go_block('YY_YXD_TRX_V');

  execute_query;

End

找到表单级的触发器 QUERY_FIND,在原先的语句前加--   ,然后在上一行输入go_block('新数据块名');

按条件查询          

查询按钮所建的触发器写法

declare

lv_where varchar2(2000);

begin

lv_where:='1=1';

if:bloquery.person_name is not null then

lv_where:=lv_where||'and person_name='''||:bloquery.person_name||'''';

end if;

if:bloquery.pay_type is not null then

lv_where:=lv_where||'and pay_type='''||:bloquery.pay_type||'''';

end if;

if:BLOQUERY.PAY_DATE_FROM is not null then

lv_where:=lv_where||'and PAY_DATE >= to_date(''' || to_char(:BLOQUERY.PAY_DATE_FROM,'yyyymmdd') || ''',''yyyymmdd'')';

end if;

if:bloquery.pay_date_to is not null then

lv_where:=lv_where||'and PAY_DATE <= to_date(''' || to_char(:bloquery.pay_date_to,'yyyymmdd') || ''',''yyyymmdd'')';

end if;

set_block_property('YY_YXD_PAYMENTS_V',default_where,lv_where);

go_block('YY_YXD_PAYMENTS_V');

execute_query;

hide_window('WINQUERY');

end;

and PAY_DATE >= to_date('20180401', 'yyyymmdd')

   and PAY_DATE <= to_date('20180430', 'yyyymmdd')

五、订单管理

订单表

订单编号 ORDER_ID NUMBER   N

采购员 BUYER VARCHAR2(50) N

供应商 SUPPLIER VARCHAR2(50) N

订单状态 ORDER_STATE VARCHAR2(50) N

审核日期 ORDER_AUDIT_DATE DATE N

订单详情表order_details

行号 ID NUMBER             N

订单编号 ORDER_ID NUMBER   N

商品编号 GOODS_SNUM VARCHAR2(50) N

商品名称 GOODS_NAME VARCHAR5(50) N

商品类型 GOODS_TYPE VARCHAR5(50) N

商品数量 GOODS_NUM NUMBER      N

单价 UNIT_PRICE NUMBER N

金额 money NUMBER             N

CREATION_DATE     DATE         Y                         

CREATED_BY        NUMBER       Y                         

LAST_UPDATE_DATE  DATE         Y                         

LAST_UPDATED_BY   NUMBER       Y                         

LAST_UPDATE_LOGIN NUMBER       Y  

点击上图中最左侧的空白按钮时跳转到新的form,如下图所示:

注:一般主键不显示在页面上

方法:先在主form上设置空白按钮,项类型为 按钮,不设子类信息(建议:宽度设为 . 167;高度设为.25,然后设置一个触发器(右击找到便捷触发器下的WHEN-BUTTON-PRESSED,并写入:

fnd_function.EXECUTE(function_name=>功能名,

                     open_flag=>'C',

                     session_flag=>'SESSION',                     

                     other_params=>'form中设的参数名='||:当前数据块名 . 主键名,

                     activate_flag=>'ACTIVATE',

                     browser_target=>'');

),

在子form中参数一栏下设置一个参数,参数数据类型为number,然后找到表单级别的触发器WHEN-NEW-FORM-INSTANCE,并往其中加入

declare

lv_where varchar2(100):='1=1';

begin

if :parameter.参数名 is not null then

 lv_where:=lv_where||'and 所对应的项名='||:parameter.参数名;

end if;

set_block_property('所对应的数据块名',default_where,lv_where);

end;

传过来的是主键,具有唯一性,并且不在页面上显示

先要达到上图效果

六、制作EBS报表

1.分析报表格式;

2.根据分析的结果创建xml文件;

3.word创建RTF模板;

4. 创建PI/SQL存储过程(包)

create or replace package cux_xml_yxd_persons_rpt_pkg is

 

  PROCEDURE persons_info(errbuf  OUT NOCOPY VARCHAR2,

                         retcode OUT NOCOPY VARCHAR2);

 

end cux_xml_yxd_persons_rpt_pkg;

create or replace package body cux_xml_yxd_persons_rpt_pkg is

 

       PROCEDURE print(p_content VARCHAR2) IS

  BEGIN

    dbms_output.put_line(p_content);

    fnd_file.put_line(fnd_file.output, p_content);

  END print;

 

  PROCEDURE print_xml(p_element_name IN VARCHAR2, p_content VARCHAR2) IS

  BEGIN

    PRINT('<' || p_element_name || '><![CDATA[' || p_content || ']]></' ||

          p_element_name || '>');

  END print_xml;

 

  PROCEDURE persons_info(errbuf  OUT NOCOPY VARCHAR2,

                         retcode OUT NOCOPY VARCHAR2) IS

    CURSOR personsinfo IS

      SELECT yp.person_name,

             yp.person_level,

             yp.salary,

             yp.birthday

        FROM yy_yxd_persons yp

       ORDER BY yp.person_name

       ;

     lv_person_info personsinfo%rowtype;

  BEGIN

    print('<?xml version="1.0" encoding="UTF-8"?>');

    print('<G_ALL>');

      for lv_person_info in personsinfo loop

         print('<G_LINE>');

         print_xml('person_name',lv_person_info.person_name);        

         print_xml('person_level',lv_person_info.person_level);

         print_xml('salary',lv_person_info.salary);        

         print_xml('birthday',to_char(lv_person_info.birthday,'yyyy-mm-dd'));

         print('</G_LINE>');

      end loop;

    print('</G_ALL>');

  END persons_info;  

 

end cux_xml_yxd_persons_rpt_pkg;

5. 注册可执行

6. 注册请求

当有查询条件时设置参数

设置值集

7. 注册xml publisher数据定义

切换职责为Oracle xml publisher

8. 注册xml publisher模板

数据定义一栏也要填,与名称一致

9.将请求添加到相应的请求组里

9. FORM如何直接打开链接

首先应切换职责为  CUX:客户化开发

点击查看,找到请求,

七、EBS财务管理

1、应付管理

流程:输入供应商-→创建发票-→检验发票-→付款(核销发票)-→创建会计科目-→将信息传入总账

所涉及的表

供应商po_vendors(是表也是视图)存头信息、po_vendor_site_all(两张表通过vendor_id进行关联)  

发票管理(建头、建行、建分配行)验证(点左下的活动,找到验证打钩)

ap_invoices_all

付款

2种方式,一种是完全支付,另一种是分批支付

管理供应商,银行,发票和付款。应付账款是供应链管理系统的最终环节,它允许企业支付供应商的货物和服务成本。供应链管理的目标是保持低库存,而库存足够满足需求,库存就是资金,因此,应付账款管理系统的目标是尽可能推迟付款,同时确保及时付款。

创建供应商

点击左侧 地址簿

其中付款管理,将支票一栏打钩

创建发票批和发票

2、应收管理

流程:创建客户-→创建发票(事务处理)-→付款-→创建会计科目-→汇入总账

表:

客户

hz_parties(客户名称:party_name)

hz_cust_accounts(客户编号:Account_number)

发票:

ra_customer_trx_all(主键:customer_trx_id、编号:trx_number

(发票行)ra_customer_trx_lines_all

(分配行)ra_customer_trx_line_gl_dist_all

一般:一个分配行对应一个发票行

总账:gl_code_combinations

收款:ar_cash_receipts_all  ( cash_receipt_id)

核销:ar_receivable_applications_all ( status ,display )

根据收款单如何得出收款客户名称

SELECT hsite.cust_account_id, hca.account_number, hp.party_name
  FROM hz_cust_site_uses_all  huse,
       hz_cust_acct_sites_all hsite,
       hz_cust_accounts       hca,
       hz_parties             hp
 WHERE huse.site_use_id = 1163
   AND huse.cust_acct_site_id = hsite.cust_acct_site_id
   AND hsite.cust_account_id = hca.cust_account_id
   AND hca.party_id = hp.party_id;

    

创建客户

首先将职责切换为“应收账款经理”

创建收款发票(事务管理)

“工具”一栏下,找到创建会计科目

创建收款

然后,回到前一图,且图中右上角“余额”模块中原先未核销的金额转为已核销,

之后,再次创建会计科目

接口开发

1、首先获取数据,三种数据传输的方式:dblink、数据文件、web Service

2、将数据传入临时表(客户化表)中

3进行校验,校验通过以后,将数据放入标准接口表中,然后调用标准API或者标准的接口请求。

4、最后,无论对错都生成log日志文件,如果有错误,文件应写明错误信息

3、总账

总账:gl_sets_of_books(视图)

 

科目余额表:gl_balances



在此说明一下,本次的笔记不是本人所写,我的笔记写的比较乱,由于我的时间已经不多了,在此,先借用别人的笔记吧,见谅。

猜你喜欢

转载自blog.csdn.net/silence_xj/article/details/80494184