This is one of those tasks which is fairly simple to do. However, can be very time consuming considering you have to generate a mapping for an entire/multiple repositories. We've all have had to do this at some point, not enjoying it one bit!
Well, here is a code that will save you some time and your sanity :).
The below code generates a screen to Applet, and an Applet to BC mapping which can be then exported to excel.
Screen to Applet -
select scr.name "Screen Name"
,nvl(nvl(ptabi.tab_text, scri.viewbar_text), scr.viewbar_text) "Screen"
,scrv.sequence "View Seq"
,vw.name "View Name"
,vwi.title "View"
,vw.busobj_name "Business Object"
,vwti.item_num "Item Num"
,ap.name "Applet Name"
,api.title "Applet"
,ap.buscomp_name "Business Component"
from siebel.s_repository rep
inner join siebel.s_screen scr on scr.repository_id = rep.row_id
left outer join siebel.s_screen_intl scri on scri.screen_id = scr.row_id and scri.repository_id = rep.row_id and scri.name = 'ENU-STD'
inner join siebel.s_screen_view scrv on scrv.screen_id = scr.row_id and scrv.repository_id = rep.row_id
inner join siebel.s_application appl on rep.row_id = appl.repository_id
left outer join siebel.s_page_tab ptab on ptab.application_id = appl.row_id and ptab.repository_id = rep.row_id and ptab.screen_name = scr.name
left outer join siebel.s_page_tab_intl ptabi on ptabi.page_tab_id = ptab.row_id and ptabi.repository_id = rep.row_id and ptabi.name = 'ENU-STD'
inner join siebel.s_view vw on vw.name = scrv.view_name and vw.repository_id = rep.row_id
left outer join siebel.s_view_intl vwi on vwi.view_id = vw.row_id and vwi.repository_id = rep.row_id and vwi.name = 'ENU-STD'
inner join siebel.s_view_web_tmpl vwt on vwt.view_id = vw.row_id and vwt.repository_id = rep.row_id
left outer join siebel.s_view_wtmpl_it vwti on vwti.view_web_tmpl_id = vwt.row_id and vwti.repository_id = rep.row_id
inner join siebel.s_applet ap on ap.name = vwti.applet_name and ap.repository_id = rep.row_id
left outer join siebel.s_applet_intl api on api.applet_id = ap.row_id and api.repository_id = rep.row_id and api.name = 'ENU-STD'
where rep.name = 'Siebel Repository'
and appl.name = 'Siebel Power Communications'
and nvl(rep.inactive_flg,'N') = 'N'
and nvl(scr.inactive_flg,'N') = 'N'
and nvl(scri.inactive_flg,'N') = 'N'
and nvl(scrv.inactive_flg,'N') = 'N'
and nvl(vw.inactive_flg,'N') = 'N'
and nvl(vwi.inactive_flg,'N') = 'N'
and nvl(vwt.inactive_flg,'N') = 'N'
and nvl(vwti.inactive_flg,'N') = 'N'
and nvl(ap.inactive_flg,'N') = 'N'
and nvl(api.inactive_flg,'N') = 'N'
union
select scr.name "Screen Name"
,nvl(nvl(ptabi.tab_text, scri.viewbar_text), scr.viewbar_text) "Screen"
,scrv.sequence "View Seq"
,vw.name "View Name"
,vwi.title "View"
,vw.busobj_name "Business Object"
,vwti.item_num "Item Num"
,apta.name "Applet Name"
,api.title "Applet"
,apta.buscomp_name "Business Component"
from siebel.s_repository rep
inner join siebel.s_screen scr on scr.repository_id = rep.row_id
left outer join siebel.s_screen_intl scri on scri.screen_id = scr.row_id and scri.repository_id = rep.row_id and scri.name = 'ENU-STD'
inner join siebel.s_screen_view scrv on scrv.screen_id = scr.row_id and scrv.repository_id = rep.row_id
inner join siebel.s_application appl on rep.row_id = appl.repository_id
left outer join siebel.s_page_tab ptab on ptab.application_id = appl.row_id and ptab.repository_id = rep.row_id and ptab.screen_name = scr.name
left outer join siebel.s_page_tab_intl ptabi on ptabi.page_tab_id = ptab.row_id and ptabi.repository_id = rep.row_id and ptabi.name = 'ENU-STD'
inner join siebel.s_view vw on vw.name = scrv.view_name and vw.repository_id = rep.row_id
left outer join siebel.s_view_intl vwi on vwi.view_id = vw.row_id and vwi.repository_id = rep.row_id and vwi.name = 'ENU-STD'
inner join siebel.s_view_web_tmpl vwt on vwt.view_id = vw.row_id and vwt.repository_id = rep.row_id
left outer join siebel.s_view_wtmpl_it vwti on vwti.view_web_tmpl_id = vwt.row_id and vwti.repository_id = rep.row_id
inner join siebel.s_applet ap on ap.name = vwti.applet_name and ap.repository_id = rep.row_id
inner join siebel.s_applet_toggle apt on apt.applet_id = ap.row_id and apt.repository_id = rep.row_id
inner join siebel.s_applet apta on apta.name = apt.applet_name and apta.repository_id = rep.row_id
left outer join siebel.s_applet_intl api on api.applet_id = apta.row_id and apta.repository_id = rep.row_id and api.name = 'ENU-STD'
where rep.name = 'Siebel Repository'
and appl.name = 'Siebel Power Communications'
and nvl(rep.inactive_flg,'N') = 'N'
and nvl(scr.inactive_flg,'N') = 'N'
and nvl(scri.inactive_flg,'N') = 'N'
and nvl(scrv.inactive_flg,'N') = 'N'
and nvl(vw.inactive_flg,'N') = 'N'
and nvl(vwi.inactive_flg,'N') = 'N'
and nvl(vwt.inactive_flg,'N') = 'N'
and nvl(vwti.inactive_flg,'N') = 'N'
and nvl(ap.inactive_flg,'N') = 'N'
and nvl(api.inactive_flg,'N') = 'N'
order by "Screen"
,"View Seq"
,"View Name"
,"Item Num"
,"Applet Name"
Applet to BC mapping -
So there you go...you could later consolidate both to have a full UI to Data level mapping.
Oh! Almost forgot, Your welcome ;)
Cheers!
Well, here is a code that will save you some time and your sanity :).
The below code generates a screen to Applet, and an Applet to BC mapping which can be then exported to excel.
Screen to Applet -
select scr.name "Screen Name"
,nvl(nvl(ptabi.tab_text, scri.viewbar_text), scr.viewbar_text) "Screen"
,scrv.sequence "View Seq"
,vw.name "View Name"
,vwi.title "View"
,vw.busobj_name "Business Object"
,vwti.item_num "Item Num"
,ap.name "Applet Name"
,api.title "Applet"
,ap.buscomp_name "Business Component"
from siebel.s_repository rep
inner join siebel.s_screen scr on scr.repository_id = rep.row_id
left outer join siebel.s_screen_intl scri on scri.screen_id = scr.row_id and scri.repository_id = rep.row_id and scri.name = 'ENU-STD'
inner join siebel.s_screen_view scrv on scrv.screen_id = scr.row_id and scrv.repository_id = rep.row_id
inner join siebel.s_application appl on rep.row_id = appl.repository_id
left outer join siebel.s_page_tab ptab on ptab.application_id = appl.row_id and ptab.repository_id = rep.row_id and ptab.screen_name = scr.name
left outer join siebel.s_page_tab_intl ptabi on ptabi.page_tab_id = ptab.row_id and ptabi.repository_id = rep.row_id and ptabi.name = 'ENU-STD'
inner join siebel.s_view vw on vw.name = scrv.view_name and vw.repository_id = rep.row_id
left outer join siebel.s_view_intl vwi on vwi.view_id = vw.row_id and vwi.repository_id = rep.row_id and vwi.name = 'ENU-STD'
inner join siebel.s_view_web_tmpl vwt on vwt.view_id = vw.row_id and vwt.repository_id = rep.row_id
left outer join siebel.s_view_wtmpl_it vwti on vwti.view_web_tmpl_id = vwt.row_id and vwti.repository_id = rep.row_id
inner join siebel.s_applet ap on ap.name = vwti.applet_name and ap.repository_id = rep.row_id
left outer join siebel.s_applet_intl api on api.applet_id = ap.row_id and api.repository_id = rep.row_id and api.name = 'ENU-STD'
where rep.name = 'Siebel Repository'
and appl.name = 'Siebel Power Communications'
and nvl(rep.inactive_flg,'N') = 'N'
and nvl(scr.inactive_flg,'N') = 'N'
and nvl(scri.inactive_flg,'N') = 'N'
and nvl(scrv.inactive_flg,'N') = 'N'
and nvl(vw.inactive_flg,'N') = 'N'
and nvl(vwi.inactive_flg,'N') = 'N'
and nvl(vwt.inactive_flg,'N') = 'N'
and nvl(vwti.inactive_flg,'N') = 'N'
and nvl(ap.inactive_flg,'N') = 'N'
and nvl(api.inactive_flg,'N') = 'N'
union
select scr.name "Screen Name"
,nvl(nvl(ptabi.tab_text, scri.viewbar_text), scr.viewbar_text) "Screen"
,scrv.sequence "View Seq"
,vw.name "View Name"
,vwi.title "View"
,vw.busobj_name "Business Object"
,vwti.item_num "Item Num"
,apta.name "Applet Name"
,api.title "Applet"
,apta.buscomp_name "Business Component"
from siebel.s_repository rep
inner join siebel.s_screen scr on scr.repository_id = rep.row_id
left outer join siebel.s_screen_intl scri on scri.screen_id = scr.row_id and scri.repository_id = rep.row_id and scri.name = 'ENU-STD'
inner join siebel.s_screen_view scrv on scrv.screen_id = scr.row_id and scrv.repository_id = rep.row_id
inner join siebel.s_application appl on rep.row_id = appl.repository_id
left outer join siebel.s_page_tab ptab on ptab.application_id = appl.row_id and ptab.repository_id = rep.row_id and ptab.screen_name = scr.name
left outer join siebel.s_page_tab_intl ptabi on ptabi.page_tab_id = ptab.row_id and ptabi.repository_id = rep.row_id and ptabi.name = 'ENU-STD'
inner join siebel.s_view vw on vw.name = scrv.view_name and vw.repository_id = rep.row_id
left outer join siebel.s_view_intl vwi on vwi.view_id = vw.row_id and vwi.repository_id = rep.row_id and vwi.name = 'ENU-STD'
inner join siebel.s_view_web_tmpl vwt on vwt.view_id = vw.row_id and vwt.repository_id = rep.row_id
left outer join siebel.s_view_wtmpl_it vwti on vwti.view_web_tmpl_id = vwt.row_id and vwti.repository_id = rep.row_id
inner join siebel.s_applet ap on ap.name = vwti.applet_name and ap.repository_id = rep.row_id
inner join siebel.s_applet_toggle apt on apt.applet_id = ap.row_id and apt.repository_id = rep.row_id
inner join siebel.s_applet apta on apta.name = apt.applet_name and apta.repository_id = rep.row_id
left outer join siebel.s_applet_intl api on api.applet_id = apta.row_id and apta.repository_id = rep.row_id and api.name = 'ENU-STD'
where rep.name = 'Siebel Repository'
and appl.name = 'Siebel Power Communications'
and nvl(rep.inactive_flg,'N') = 'N'
and nvl(scr.inactive_flg,'N') = 'N'
and nvl(scri.inactive_flg,'N') = 'N'
and nvl(scrv.inactive_flg,'N') = 'N'
and nvl(vw.inactive_flg,'N') = 'N'
and nvl(vwi.inactive_flg,'N') = 'N'
and nvl(vwt.inactive_flg,'N') = 'N'
and nvl(vwti.inactive_flg,'N') = 'N'
and nvl(ap.inactive_flg,'N') = 'N'
and nvl(api.inactive_flg,'N') = 'N'
order by "Screen"
,"View Seq"
,"View Name"
,"Item Num"
,"Applet Name"
Output looks like -
Applet to BC mapping -
select "Applet Name"
,"BC Name"
,"BC Field"
,"Required"
,"Calculated"
,"Calculated Value"
,"Join Name"
,"Table"
,"Column"
,"Data Type"
,"Length"
,"Multi-valued"
,"MV Link"
,"Pick List"
,"LOV Name"
,min("Caption") "Caption"
,"Display Order"
from (
select ap.name "Applet Name"
,bc.name "BC Name"
,fld.name "BC Field"
,fld.required "Required"
,fld.calculated "Calculated"
,fld.calcval "Calculated Value"
,fld.join_name "Join Name"
,(case when fld.mvlink_name is null then nvl(nvl(jotab.name, fld.join_name), case when fld.calculated = 'Y' then null else bc.table_name end) else null end) "Table"
,fld.col_name "Column"
,fld.type "Data Type"
,(case when fld.prec_num is null then to_char(fld.textlen)
else to_char(fld.prec_num) || to_char(case when fld.scale is null or fld.scale = 0 then '' else ',' || fld.scale end)
end) "Length"
,fld.multi_valued "Multi-valued"
,fld.mvlink_name "MV Link"
,pl.name "Pick List"
,pl.type_value "LOV Name"
,coi.caption "Caption"
,co.sequence "Display Order"
from siebel.s_control co
inner join siebel.s_control_intl coi on coi.control_id = co.row_id and coi.name = 'ENU-STD'
inner join siebel.s_applet ap on co.applet_id = ap.row_id
inner join siebel.s_buscomp bc on ap.buscomp_name = bc.name
inner join siebel.s_field fld on fld.name = co.field_name and fld.buscomp_id = bc.row_id
inner join siebel.s_repository rep on bc.repository_id = rep.row_id
left outer join siebel.s_join jo on jo.buscomp_id = fld.buscomp_id and fld.join_name = jo.name
left outer join siebel.s_table jotab on jotab.name = jo.dest_tbl_name and jotab.repository_id = rep.row_id
left outer join siebel.s_picklist pl on fld.picklist_name = pl.name and pl.repository_id = rep.row_id
where rep.name = 'Siebel Repository'
and ap.repository_id = rep.row_id
and co.repository_id = rep.row_id
and bc.repository_id = rep.row_id
and fld.repository_id = rep.row_id
and nvl(co.inactive_flg,'N') = 'N'
and nvl(ap.inactive_flg,'N') = 'N'
and nvl(bc.inactive_flg,'N') = 'N'
and nvl(fld.inactive_flg,'N') = 'N'
and nvl(rep.inactive_flg,'N') = 'N'
and nvl(jo.inactive_flg,'N') = 'N'
union all
select ap.name "Applet Name"
,bc.name "BC Name"
,fld.name "BC Field"
,fld.required "Required"
,fld.calculated "Calculated"
,fld.calcval "Calculated Value"
,fld.join_name "Join Name"
,(case when fld.mvlink_name is null then nvl(nvl(jotab.name, fld.join_name), case when fld.calculated = 'Y' then null else bc.table_name end) else null end) "Table"
,fld.col_name "Column"
,fld.type "Data Type"
,(case when fld.prec_num is null then to_char(fld.textlen)
else to_char(fld.prec_num) || to_char(case when fld.scale is null or fld.scale = 0 then '' else ',' || fld.scale end)
end) "Length"
,fld.multi_valued "Multi-valued"
,fld.mvlink_name "MV Link"
,pl.name "Pick List"
,pl.type_value "LOV Name"
,coi.display_name "Caption"
,co.sequence "Display Order"
from siebel.s_list li
inner join siebel.s_applet ap on li.applet_id = ap.row_id
inner join siebel.s_list_column co on co.list_id = li.row_id
left outer join siebel.s_list_col_intl coi on coi.list_column_id = co.row_id and coi.name = 'ENU-STD'
inner join siebel.s_buscomp bc on ap.buscomp_name = bc.name
inner join siebel.s_field fld on fld.name = co.field_name and fld.buscomp_id = bc.row_id
inner join siebel.s_repository rep on bc.repository_id = rep.row_id
left outer join siebel.s_join jo on jo.buscomp_id = fld.buscomp_id and fld.join_name = jo.name
left outer join siebel.s_table jotab on jotab.name = jo.dest_tbl_name and jotab.repository_id = rep.row_id
left outer join siebel.s_picklist pl on fld.picklist_name = pl.name and pl.repository_id = rep.row_id
where rep.name = 'Siebel Repository'
and li.repository_id = rep.row_id
and ap.repository_id = rep.row_id
and co.repository_id = rep.row_id
and bc.repository_id = rep.row_id
and fld.repository_id = rep.row_id
and nvl(li.inactive_flg,'N') = 'N'
and nvl(co.inactive_flg,'N') = 'N'
and nvl(ap.inactive_flg,'N') = 'N'
and nvl(bc.inactive_flg,'N') = 'N'
and nvl(fld.inactive_flg,'N') = 'N'
and nvl(rep.inactive_flg,'N') = 'N'
and nvl(jo.inactive_flg,'N') = 'N'
)
group by "Applet Name"
,"BC Name"
,"BC Field"
,"Required"
,"Calculated"
,"Calculated Value"
,"Join Name"
,"Table"
,"Column"
,"Data Type"
,"Length"
,"Multi-valued"
,"MV Link"
,"Pick List"
,"LOV Name"
,"Display Order"
order by "Applet Name"
,"BC Name"
,"MV Link" desc
,"Table"
,"Display Order"
,"BC Name"
,"BC Field"
,"Required"
,"Calculated"
,"Calculated Value"
,"Join Name"
,"Table"
,"Column"
,"Data Type"
,"Length"
,"Multi-valued"
,"MV Link"
,"Pick List"
,"LOV Name"
,min("Caption") "Caption"
,"Display Order"
from (
select ap.name "Applet Name"
,bc.name "BC Name"
,fld.name "BC Field"
,fld.required "Required"
,fld.calculated "Calculated"
,fld.calcval "Calculated Value"
,fld.join_name "Join Name"
,(case when fld.mvlink_name is null then nvl(nvl(jotab.name, fld.join_name), case when fld.calculated = 'Y' then null else bc.table_name end) else null end) "Table"
,fld.col_name "Column"
,fld.type "Data Type"
,(case when fld.prec_num is null then to_char(fld.textlen)
else to_char(fld.prec_num) || to_char(case when fld.scale is null or fld.scale = 0 then '' else ',' || fld.scale end)
end) "Length"
,fld.multi_valued "Multi-valued"
,fld.mvlink_name "MV Link"
,pl.name "Pick List"
,pl.type_value "LOV Name"
,coi.caption "Caption"
,co.sequence "Display Order"
from siebel.s_control co
inner join siebel.s_control_intl coi on coi.control_id = co.row_id and coi.name = 'ENU-STD'
inner join siebel.s_applet ap on co.applet_id = ap.row_id
inner join siebel.s_buscomp bc on ap.buscomp_name = bc.name
inner join siebel.s_field fld on fld.name = co.field_name and fld.buscomp_id = bc.row_id
inner join siebel.s_repository rep on bc.repository_id = rep.row_id
left outer join siebel.s_join jo on jo.buscomp_id = fld.buscomp_id and fld.join_name = jo.name
left outer join siebel.s_table jotab on jotab.name = jo.dest_tbl_name and jotab.repository_id = rep.row_id
left outer join siebel.s_picklist pl on fld.picklist_name = pl.name and pl.repository_id = rep.row_id
where rep.name = 'Siebel Repository'
and ap.repository_id = rep.row_id
and co.repository_id = rep.row_id
and bc.repository_id = rep.row_id
and fld.repository_id = rep.row_id
and nvl(co.inactive_flg,'N') = 'N'
and nvl(ap.inactive_flg,'N') = 'N'
and nvl(bc.inactive_flg,'N') = 'N'
and nvl(fld.inactive_flg,'N') = 'N'
and nvl(rep.inactive_flg,'N') = 'N'
and nvl(jo.inactive_flg,'N') = 'N'
union all
select ap.name "Applet Name"
,bc.name "BC Name"
,fld.name "BC Field"
,fld.required "Required"
,fld.calculated "Calculated"
,fld.calcval "Calculated Value"
,fld.join_name "Join Name"
,(case when fld.mvlink_name is null then nvl(nvl(jotab.name, fld.join_name), case when fld.calculated = 'Y' then null else bc.table_name end) else null end) "Table"
,fld.col_name "Column"
,fld.type "Data Type"
,(case when fld.prec_num is null then to_char(fld.textlen)
else to_char(fld.prec_num) || to_char(case when fld.scale is null or fld.scale = 0 then '' else ',' || fld.scale end)
end) "Length"
,fld.multi_valued "Multi-valued"
,fld.mvlink_name "MV Link"
,pl.name "Pick List"
,pl.type_value "LOV Name"
,coi.display_name "Caption"
,co.sequence "Display Order"
from siebel.s_list li
inner join siebel.s_applet ap on li.applet_id = ap.row_id
inner join siebel.s_list_column co on co.list_id = li.row_id
left outer join siebel.s_list_col_intl coi on coi.list_column_id = co.row_id and coi.name = 'ENU-STD'
inner join siebel.s_buscomp bc on ap.buscomp_name = bc.name
inner join siebel.s_field fld on fld.name = co.field_name and fld.buscomp_id = bc.row_id
inner join siebel.s_repository rep on bc.repository_id = rep.row_id
left outer join siebel.s_join jo on jo.buscomp_id = fld.buscomp_id and fld.join_name = jo.name
left outer join siebel.s_table jotab on jotab.name = jo.dest_tbl_name and jotab.repository_id = rep.row_id
left outer join siebel.s_picklist pl on fld.picklist_name = pl.name and pl.repository_id = rep.row_id
where rep.name = 'Siebel Repository'
and li.repository_id = rep.row_id
and ap.repository_id = rep.row_id
and co.repository_id = rep.row_id
and bc.repository_id = rep.row_id
and fld.repository_id = rep.row_id
and nvl(li.inactive_flg,'N') = 'N'
and nvl(co.inactive_flg,'N') = 'N'
and nvl(ap.inactive_flg,'N') = 'N'
and nvl(bc.inactive_flg,'N') = 'N'
and nvl(fld.inactive_flg,'N') = 'N'
and nvl(rep.inactive_flg,'N') = 'N'
and nvl(jo.inactive_flg,'N') = 'N'
)
group by "Applet Name"
,"BC Name"
,"BC Field"
,"Required"
,"Calculated"
,"Calculated Value"
,"Join Name"
,"Table"
,"Column"
,"Data Type"
,"Length"
,"Multi-valued"
,"MV Link"
,"Pick List"
,"LOV Name"
,"Display Order"
order by "Applet Name"
,"BC Name"
,"MV Link" desc
,"Table"
,"Display Order"
Output looks like -
So there you go...you could later consolidate both to have a full UI to Data level mapping.
Oh! Almost forgot, Your welcome ;)
Awesome! Thanks a lot Ryan, it was exactly I needed.
ReplyDelete