zoukankan      html  css  js  c++  java
  • srw的总结

    1.在报表触发器BeforeReport中调用用户出口函数 FND SRWINIT 来初始化环境:取得并发程序相关信息和预制文件信息

    clip_image002

    clip_image003

    Parameter:
    ------------
    P_SET_OF_BOOKS_ID='1001'
    P_CHART_OF_ACCOUNTS_ID='50268'
    P_REPORT_TYPE='B'
    P_KIND='L'
    P_CURRENCY_CODE='HKD'
    P_ACTUAL_FLAG='A'
    P_BUD_ENC_TYPE_ID='-100'
    P_START_PERIOD='Adj-12'
    P_END_PERIOD='Adj-12'
    P_MIN_FLEX='22-133208-00-00-0000-000'
    P_MAX_FLEX='22-133211-00-00-0000-000'
    P_ORDER_TYPE='S'
    P_PAGE_SIZE='180'
    ------------
    function BeforeReport return boolean is
    begin
    SRW.USER_EXIT('FND SRWINIT');
    
    --P_COA_ID =  50268
    srw.reference( :P_COA_ID );------------帐套,必须在report和ebs里都定义这个参数不然会报错SRW.REFERENCE 将引用的对象添加到构造依赖列表中,让Report在触发初始化构造的时候对值进行测定
    srw.user_exit('FND FLEXSQL --------------------在报表中调用 FND FLEXIDVAL来动态设置显示的弹性域数据
                          CODE = "GL#" ------‘GL#’是帐户关键性弹性域的代码;code:弹性域编码
                          NUM=":P_COA_ID" ---------包括弹性域结构ID的词义变量
                          APPL_SHORT_NAME = "SQLGL"-----弹性域对应的应用简称
                          OUTPUT=":ACC_SELECT_ALL" -------------output:用来存贮SQL语句的词义变量(Placeholder)
                          TABLEALIAS="CC")--------如果使用表别名,制定弹性域对应表的别名
                          MODE="SELECT" "----SELECT 按照内部的格式取出所有段值
                          DISPLAY="ALL"');---指定有多少段是需要显示的,默认值为 ALL;如果只希望显示其中的一段,可以通过指定段名或者段号码来实现
    
    
    -- GL_CODE_COMBINATIONS  --get values
    SELECT 
             APPLICATION_COLUMN_NAME,
             SEGMENT_NUM
        FROM FND_ID_FLEX_SEGMENTS_VL
       WHERE     (ID_FLEX_NUM = 50268) -- P_COA_ID = 50268
             AND (ID_FLEX_CODE = 'GL#') -- CODE = "GL#"  
             AND (APPLICATION_ID = 101) -- APPL_SHORT_NAME = SQLGL
    ORDER BY application_id,
             id_flex_code,
             id_flex_num,
             DECODE (enabled_flag,  'Y', 1,  'N', 2),
             segment_num
    
    MSG-00100: 
    
    CC.SEGMENT1||'
    '||CC.SEGMENT2||'
    '||CC.SEGMENT3||'
    '||CC.SEGMENT4||'
    '||CC.SEGMENT5||'
    '||CC.SEGMENT6
    
    --****************************************
    
    srw.reference(:P_COA_ID);
    srw.user_exit('FND FLEXSQL 
                          CODE="GL#" 
                          NUM=":P_COA_ID"
                          APPL_SHORT_NAME="SQLGL"
                          OUTPUT=":WHERE_FLEX" 
                          TABLEALIAS="CC"
                          MODE="WHERE" 
                          DISPLAY="ALL"
                          OPERATOR="BETWEEN" 
                          OPERAND1=":P_MIN_FLEX"
                          OPERAND2=":P_MAX_FLEX"');     
    
    
    MSG-00200: CC.SEGMENT1 = '22' AND CC.SEGMENT2 BETWEEN '133208' AND '133211' AND CC.SEGMENT3 = '00' AND CC.SEGMENT4 = '00' AND CC.SEGMENT5 = '0000' AND CC.SEGMENT6 = '000'
    
    --****************************************
    
    srw.reference(:P_COA_ID);
    srw.user_exit('FND FLEXSQL 
                         CODE="GL#" 
                         NUM=":P_COA_ID"
                         APPL_SHORT_NAME="SQLGL"
                         OUTPUT=":ORDERBY_ACCT" 
                         TABLEALIAS="CC"
                         MODE="ORDER BY" 
                         DISPLAY="GL_ACCOUNT"  -- ACCOUNT:  SEGMENT2
                        SHOWDEPSEG="N"'); 
    
    MSG-00300: CC.SEGMENT2
    
     --****************************************
    
    srw.reference(:P_COA_ID);
    srw.user_exit('FND FLEXSQL 
                         CODE="GL#" 
                         NUM=":P_COA_ID"
                         APPL_SHORT_NAME="SQLGL"
                         OUTPUT=":ORDERBY_BAL" 
                         TABLEALIAS="CC"
                         MODE="ORDER BY" 
                         DISPLAY="GL_BALANCING"  -- BALANCING:  SEGMENT1
                         SHOWDEPSEG="N"');
    
     MSG-00500: CC.SEGMENT1
    
    return (TRUE);
    end;

    2.在报表触发器AfterReport中调用用户出口函数 FND SRWEXIT 来释放用户出口函数中使用的内存,USER_EXIT是一个用户出口函数,用于取得帐户段描

    function AfterReport return boolean is
    begin
         SRW.USER_EXIT('FND SRWEXIT');
         return (TRUE);
    end;

    3.在字段内

    设置

    function ACC_flex_dataFormula return VARCHAR2 is
    begin
       srw.reference(:ACC_flex);
       srw.reference( :P_COA_ID );
       srw.user_exit('FND FLEXIDVAL
                      CODE="GL#"
                      NUM=":P_COA_ID"
                      APPL_SHORT_NAME="SQLGL"
                      DATA=":ACC_FLEX"
                      VALUE=":ACC_FLEX_DATA"
                      DISPLAY="ALL"');
      return(:ACC_FLEX_DATA);
    
      --22-133211-00-00-0000-000
    end;
    
    
    function ACC_FLEX_DESCFormula return Char is
    begin
       srw.reference(:ACC_flex);
       srw.reference( :P_COA_ID );
       srw.user_exit('FND FLEXIDVAL
                      CODE="GL#"
                      NUM=":P_COA_ID"
                      APPL_SHORT_NAME="SQLGL"
                      DATA=":ACC_FLEX"
                      FULL_DESCRIPTION=":ACC_FLEX_DESC"
                      DISPLAY="ALL"');
    
       return(REPLACE(REPLACE(REPLACE(:ACC_flex_desc,'南京本部'),'缺省'),''));
    end;


    4.做一个cp acc_select_all

    value is null

    (c.segment1||'n'||c.segment2||'n'||

    c.segment3||'n'||c.segment4||'n'||c.segment5||'n'||

    c.segment6||'n'||c.segment7)

    具体按要选择的段落分类


    .在报表的SqL里写
    select
    &acc_select_all acc_flex,
    
    
    srw.reference(:FLEXDATA);
    srw.reference(:STRUCT_NUM);
    srw.user_exit('FND FLEXIDVAL CODE="GL#"
                   NUM=":STRUCT_NUM"
                   APPL_SHORT_NAME="SQLGL"
                   DATA=":FLEXDATA"
                   VALUE=":FLEXFIELD"
                   PADDED_VALUE=":FLEXFIELD_PAD"
                   DESCRIPTION=":FLEXDESC"
                   DISPLAY="ALL"
                   IDISPLAY="ALL"');
    
    RETURN(:FLEXFIELD);

    增加placeholder (占位符) SELECT_ALL


    (CC.SEGMENT1 || 'n' || SEGMENT2 || 'n' || SEGMENT3 || 'n' || SEGMENT4 || 'n' || SEGMENT5 || 'n' || SEGMENT6 || 'n' || SEGMENT7 || 'n' || SEGMENT8 || 'n' || SEGMENT9 || 'n' || SEGMENT10 || 'n' || SEGMENT11 || 'n' || SEGMENT12 || 'n' || SEGMENT13 || 'n' || SEGMENT14 || 'n' || SEGMENT15 || 'n' || SEGMENT16 || 'n' || SEGMENT17 || 'n' || SEGMENT18 || 'n' || SEGMENT19 || 'n' || SEGMENT20 || 'n' || SEGMENT21 || 'n' || SEGMENT22 || 'n' || SEGMENT23 || 'n' || SEGMENT24 || 'n' || SEGMENT25 || 'n' || SEGMENT26 || 'n' || SEGMENT27 || 'n' || SEGMENT28 || 'n' || SEGMENT29 || 'n' || SEGMENT30)


    其中 FLEXDATA 是查询的各段的组合,就是SELECT_ALL

    STRUCT_NUM COAID

    FLEXDESC 是科目的描述

    FLEXFIELD_PAD ???

  • 相关阅读:
    中山游记
    半僧
    脾气
    当奶猫来敲门
    《易经》初识
    读《动物农庄》
    update layer tree导致页面卡顿
    读《解忧杂货店》
    看小说与写小说
    做程序员的这五年
  • 原文地址:https://www.cnblogs.com/quanweiru/p/2792483.html
Copyright © 2011-2022 走看看