Skip to Main Content

E-Business Suite

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

List of EBS reports for a responsibility (Oracle reports, XML Publisher and BI Publisher)

User_2KH5JApr 27 2020 — edited Feb 9 2021

We are on 12.1.X and needs to give a list of various reports available for a responsibility /application

For Traditional  oracle reports , I can use the  FND_EXECUTABLES_FORM_V and EXECUTION_METHOD_CODE = 'P'

will give the traditional reports. Does any one know the sql for the Bi Publisher/XML report publisher

Thanks

Rajesh Alex

Comments

John Stegeman

Do you have the ability to change the table? Varchar2 is not an appropriate datatype for a duration (which is what I assume you mean by "hours")

Frank Kulash

Hi,

You can't add VARCHAR2s.  You can add NUMBERs, so convert the VARCHAR2s to NUMBERs, add those numbers, and then, if necessary, convert back to VARCHAR2s.

If you'd care to post CREATE TABLE and INSERT statements for your sample data, then I could show you exactly.

As John said, it might make more sense for you to permanently store these times as NUMBERs, or as INTERVAL DAY TO SECONDs.

odie_63
Answer

As others have said, use NUMBER to store durations, or the proper INTERVAL datatype, though the latter cannot be aggregated (using SUM).

In the meantime, this will give you the required output in minutes (it's trivial to convert it back to HH:MM format if you like) :

SQL> with sample_data (id, hours1, hours2, hours3) as (

  2    select 1, '02:45', '00:18', '01:25' from dual union all

  3    select 2, '00:38', '01:45', '00:00' from dual union all

  4    select 3, '02:15', '02:00', '00:15' from dual

  5  )

  6  select id

  7       , sum(h1) h1

  8       , sum(h2) h2

  9       , sum(h3) h3

10       , sum(h1+h2+h3) as total

11  from (

12  select id

13       , to_number(substr(hours1, 1, 2))*60 + to_number(substr(hours1, 4, 2)) as h1

14       , to_number(substr(hours2, 1, 2))*60 + to_number(substr(hours2, 4, 2)) as h2

15       , to_number(substr(hours3, 1, 2))*60 + to_number(substr(hours3, 4, 2)) as h3

16  from sample_data

17  )

18  group by rollup(id) ;

        ID         H1         H2         H3      TOTAL

---------- ---------- ---------- ---------- ----------

         1        165         18         85        268

         2         38        105          0        143

         3        135        120         15        270

                  338        243        100        681

Marked as Answer by Kam__apex · Sep 27 2020
00125

Hi,

            I think this may help u.

SELECT to_char ( to_date (to_number(substr(hours1, 1, instr(hours1, ':', 1) - 1)) * 60 +

        to_number(substr(hours1,

                         instr(hours1, ':', 1) + 1,

                         length(hours1)))

+

to_number(substr(hours2, 1, instr(hours2, ':', 1) - 1)) * 60 +

        to_number(substr(hours2,

                         instr(hours2, ':', 1) + 1,

                         length(hours2)))

+

to_number(substr(hours3, 1, instr(hours3, ':', 1) - 1)) * 60 +

        to_number(substr(hours3,

                         instr(hours3, ':', 1) + 1,

                         length(hours3))) total, 'HH24MI'), 'HH:MI')

  FROM dual;

Thanks

RogerT

as the others said....change your data model, it would be much easier, than doing something like this:

with data (hours1, hours2, hours3) as (select '02:45','00:18','01:25' from dual

                                       union all

                                       select '00:38','01:45','00:00' from dual

                                       union all

                                       select '02:15','02:00','00:15' from dual)

    ,minutes as (select regexp_replace(hours1,'^(\d+):\d+$','\1') * 60 + regexp_replace(hours1,'^\d+:(\d+)$','\1') as minutes1

                       ,regexp_replace(hours2,'^(\d+):\d+$','\1') * 60 + regexp_replace(hours2,'^\d+:(\d+)$','\1') as minutes2

                       ,regexp_replace(hours3,'^(\d+):\d+$','\1') * 60 + regexp_replace(hours3,'^\d+:(\d+)$','\1') as minutes3                      

                   from data)

select minutes1 + minutes2 + minutes3

      ,TO_CHAR(floor((minutes1 + minutes2 + minutes3) / 60 ),'FM99900') || ':' ||

       to_char(mod((minutes1 + minutes2 + minutes3),60 ),'FM00') as hours

  from minutes

/

hth

Kam__apex

Thanks Odie. Solved. Very specific and easy. once again thanks.

1 - 6

Post Details

Added on Apr 27 2020
1 comment
86 views