天天看點

通過CCID獲得各個段的描述的方法

gl_code_combination 是存放會計科目組合的鍵彈性域的表單。

該表單中沒有字段的描述,一個段一個段的加描述太麻煩了。

我通常都是通過以下的方法來獲得描述

sql語句上:

SELECT gl_flexfields_pkg.get_description_sql(&char_of_account_id,1,gcc.segment1) seg1,

       gl_flexfields_pkg.get_description_sql(&char_of_account_id,2,gcc.segment2) seg2,

       gl_flexfields_pkg.get_description_sql(&char_of_account_id,3,gcc.segment3) seg3,

       gl_flexfields_pkg.get_description_sql(&char_of_account_id,4,gcc.segment4) seg4,

       gl_flexfields_pkg.get_description_sql(&char_of_account_id,5,gcc.segment5) seg5,

       gl_flexfields_pkg.get_description_sql(&char_of_account_id,6,gcc.segment6) seg6

FROM gl_code_combinations gcc

WHERE gcc.code_combination_id = &code_combination_id;

form上:

  declare

          l_char_id number;

          l_account varchar2(300);

          l_desc varchar2(500);

          l_flex_return varchar2(480);

          l_num number;

  begin

       dbms_application_info.set_client_info(122);

        --==Get structure_number

            select gl.chart_of_accounts_id

              into l_char_id

              from gl_sets_of_books gl,            

                   fnd_currencies fnd,                   

                   ap_system_parameters asp,

                   gl_daily_conversion_types gdct,

                   financials_system_parameters fsp,

                   ap_terms  apt

             WHERE gl.set_of_books_id = asp.set_of_books_id

                   AND gl.currency_Code = fnd.currency_code

                   AND asp.default_exchange_rate_type = gdct.conversion_type(+)

                   AND asp.prepayment_terms_id = apt.term_id(+);

        --==Get the CCID

          l_account := '11.000000.212101.0000.0000.0000';

          l_num :=fnd_flex_ext.get_ccid(

                                        application_short_name => 'SQLGL',

                                        key_flex_code => 'GL#',

                                        structure_number => 101,

                                        validation_date => to_char(sysdate,'YYYY-MM-DD'),

                                        concatenated_segments => l_account

                                       );

          dbms_output.put_line(l_num);

       --==Get segment conbination

           l_flex_return := FND_FLEX_EXT.GET_SEGS(

                                       APPLICATION_SHORT_NAME => 'SQLGL',

                                      KEY_FLEX_CODE          => 'GL#',

                                      STRUCTURE_NUMBER       => l_char_id,

                                      COMBINATION_ID         => l_num);

          dbms_output.put_line(l_flex_return);

       --==Get segment description

           if (FND_FLEX_KEYVAL.validate_ccid(

                appl_short_name => 'SQLGL',

                key_flex_code => 'GL#',

                structure_number => l_char_id,

                                                    combination_id => l_num,

                                                    displayable         => 'ALL',

                                                    data_set        => NULL,

                                                    vrule                => NULL,

                                                    --security        => 'IGNORE',

                                                    get_columns        => NULL,

                                                    resp_appl_id        => NULL,

                                                    resp_id                => NULL,

                                                    user_id                => NULL)

               ) Then       

               l_desc := FND_FLEX_KEYVAL.concatenated_descriptions;

           end if;

          dbms_output.put_line(l_desc);

  end;

繼續閱讀