一个Oracle 报表的PL/SQL代码

PL/SQL数据包:

create or replace package CUX_GL_REP_LISTPKG is

  -- Author  : LIJINQIAN
  -- Created : 2005-7-12 9:50:00
  -- Purpose : 总帐科目列表
 
    -- 总帐汇总
  Procedure cuxgllistgath(
    errbuf      Out Varchar2,
    retcode     Out Varchar2,
    p_start_date    Varchar2,
    p_end_date      Varchar2,
    p_set_of_gl_id  Number,
    p_org_id        Number,
    p_report_type   Number);   
   
    --总帐明细
  Procedure cuxgllistgathmx(
    errbuf      Out Varchar2,
    retcode     Out Varchar2,
    p_start_date    Varchar2,
    p_end_date      Varchar2,
    Chart_of_Accounts_ID number,
    p_Account_From  varchar2,
    p_Account_to    varchar2,  
    p_to_gl         varchar2,
    p_je_source     Varchar2, 
    p_set_of_gl_id  Number,
    p_org_id        Number,
    p_report_type   Number);
   
end CUX_GL_REP_LISTPKG;

包体:

create or replace package body CUX_GL_REP_LISTPKG is

  --=======================================
  --   总帐科目汇总
  --=======================================
  Procedure cuxgllistgath(
    errbuf      Out Varchar2,
    retcode     Out Varchar2,
    p_start_date    Varchar2,
    p_end_date      Varchar2,
    p_set_of_gl_id  Number,
    p_org_id        Number,
    p_report_type   Number
  ) Is
    l_show          Varchar2(2000);
    l_org_name      Varchar2(2000);
   
    p_sign          Varchar2(200);
    p_account_type  Number:=0;
   
    l_start_dr    number:=0;
    l_start_cr    number:=0;
    l_now_dr      number:=0;
    l_now_cr      number:=0;
    l_year_dr     number:=0;
    l_year_cr     number:=0;
   
    l_qm_dr       Number:=0;
    l_qm_cr       Number:=0;
   
    l_start_dr_t    number:=0;
    l_start_cr_t    number:=0;
    l_now_dr_t      number:=0;
    l_now_cr_t      number:=0;
    l_year_dr_t     number:=0;
    l_year_cr_t     number:=0;
    l_end_dr_t      Number:=0;
    l_end_cr_t      Number:=0;
   
    l_total         Number:=0;
   
    Cursor cr1 Is
       select Distinct 
           gccv.Code_Combination_Id accid,
           gccv.segment1||'.'||'T'||'.'||SUBSTR(gccv.segment3,1,4)||'.'||'T'||'.'||'T'||'.'||'T'||'.'||'T'||'.'||'T' A2,
           fvl1.Description||'.'||fvl2.Description||'.'||fvl3.Description||'.'||fvl4.Description||'.'||fvl5.Description||'.'||fvl6.Description||'.'||fvl7.Description||'.'||fvl8.Description A3
       from
           gl_balances gl_ba                    -- 总帐表
           ,Gl_Code_Combinations gccv
           ,fnd_flex_values_vl fvl1
           ,fnd_flex_values_vl fvl2
           ,fnd_flex_values_vl fvl3
           ,fnd_flex_values_vl fvl4
           ,fnd_flex_values_vl fvl5
           ,fnd_flex_values_vl fvl6
           ,fnd_flex_values_vl fvl7
           ,fnd_flex_values_vl fvl8
       where gl_ba.code_combination_id=gccv.CODE_COMBINATION_ID
         And (fvl1.flex_value=gccv.segment1 And fvl1.FLEX_VALUE_SET_ID='1007720')              -- 公司段
         And (fvl2.flex_value='T' And fvl2.FLEX_VALUE_SET_ID='1007721')                        -- 部门段
         And (fvl3.flex_value=substr(gccv.segment3,1,4) And fvl3.FLEX_VALUE_SET_ID='1007722')  -- 科目段
         And (fvl4.flex_value='T' And fvl4.FLEX_VALUE_SET_ID='1007723')                        -- 子科目段
         And (fvl5.flex_value='T' And fvl5.FLEX_VALUE_SET_ID='1007724')                        -- 公司间段
         And (fvl6.flex_value='T' And fvl6.FLEX_VALUE_SET_ID='1007725')                        -- 产品段
         And (fvl7.flex_value='T' And fvl7.FLEX_VALUE_SET_ID='1007726')                        -- 项目段
         And (fvl8.flex_value='T' And fvl8.FLEX_VALUE_SET_ID='1007727')                        -- 备用段
         And to_number(substr(gl_ba.Period_Name,4,4)||substr(gl_ba.Period_Name,1,2)) between to_number(substr(p_start_date,4,4)||substr(p_start_date,1,2)) and to_number(substr(p_end_date,4,4)||substr(p_end_date,1,2))
         And gl_ba.Actual_Flag='A'                  --  取实际数
         And gccv.Summary_Flag='Y'                  --  取汇总科目
         And gl_ba.Template_Id='75'                 --  一级科目汇总
         And gccv.segment1=( Select Distinct
                                  gcc.Segment1
                             From  gl_je_lines lines
                                  ,gl_je_headers h
                                  ,gl_je_batches b
                                  ,Gl_Code_Combinations gcc
                             Where b.je_batch_id = h.je_batch_id
                               And h.je_header_id = lines.je_header_id
                               And lines.Code_Combination_Id=gcc.Code_Combination_Id
                               And b.org_id=p_org_id)
       Order By gccv.segment1||'.'||'T'||'.'||SUBSTR(gccv.segment3,1,4)||'.'||'T'||'.'||'T'||'.'||'T'||'.'||'T'||'.'||'T';   
  Begin
      -- 取得单位名称
      select a.name into l_org_name from hr_organization_units a
      where a.organization_id=p_org_id; 
     
      -- 输出报表头
      l_SHOW := lpad('客户化 总帐科目余额列表', 100, ' ');
      cux_my_public_pkg.OUT(l_SHOW);
      cux_my_public_pkg.OUT(' '); 
   
      l_SHOW := rpad('会计日期', 10, ' ') || rpad(p_start_date, 10, ' ')|| rpad('至'|| p_end_date, 30, ' ');
      cux_my_public_pkg.OUT(l_SHOW);
      cux_my_public_pkg.OUT(' ');
   
      --帐户名称
      l_SHOW := rpad('单位名称', 20, ' ') || rpad(l_org_name, 100, ' ');
      cux_my_public_pkg.OUT(l_SHOW);
      cux_my_public_pkg.Out(' ');
      
      l_SHOW := rpad('来源', 20, ' ') || rpad('科目', 30, ' ') ||rpad('科目说明', 100, ' ') ||
      rpad('过帐状态', 10, ' ') ||
      rpad('期初余额借方', 20, ' ') || rpad('期初余额贷方', 20, ' ') ||
      rpad('本期发生借方', 20, ' ') || rpad('本期发生贷方', 20, ' ') ||
      rpad('本年累计借方', 20, ' ') || rpad('本年累计贷方', 20, ' ') ||
      rpad('期末余额借方', 20, ' ') || rpad('期末余额贷方', 20, ' ');
      cux_my_public_pkg.OUT(l_SHOW);
     
      l_SHOW := lpad(' ', 20, '-') || lpad(' ', 30, '-') ||
              lpad(' ', 100, '-') ||
              lpad(' ', 10, '-') ||
              lpad(' ', 20, '-') || lpad(' ', 20, '-') ||
              lpad(' ', 20, '-') || lpad(' ', 20, '-') ||
              lpad(' ', 20, '-') || lpad(' ', 20, '-') ||
              lpad(' ', 20, '-') || lpad(' ', 20, '-');
      cux_my_public_pkg.OUT(l_SHOW);
  
      -- 汇总科目
      If p_report_type=1 Then
        
         -- 汇总init
         l_start_dr_t:=0;
         l_start_cr_t:=0

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值