Solved

Connection between View and GUI

  • 15 January 2020
  • 14 replies
  • 858 views

Userlevel 4
Badge +7

Hi everybody,

to gain information about underlying structures in IFS is quiet simple!
Just Debug or use systeminfos and - voilá - the view(name) is clear.

But imagine you lay hands on a QuickReport with - let’s say - 3 Views and you want to go the other way.

Is there an easy way to see where a structure (Oracle View) is used?

There must be some connection because, if we enhance IFS with customized fields and use
_CFT and _CFV structures instead the original structures, there must be a certain point where to tell IFS: “now use View X instead of Y”

Looking forward to hear from you.

 

All the best.

 

Michael

 

PS:
By the way:
The navigation tree must be stored somewhere as well.
So my idea is some sort of documentation like the following:

  1. Application Base Setup

 ..    5. Sales

       5.8. Invoicing

       5.8.1. Customer Invoice                 

                  View: CUST_ORDER_INV_HEAD_UIV_ALL



 

icon

Best answer by NickPorter 16 January 2020, 16:44

View original

14 replies

Userlevel 5
Badge +11

Hi Michael,

If I understand your question correctly, there isn’t a way to change the views used for a quick report. Once the quick report is created, you can’t change the view dynamically. You have to edit the quick report an provide a new view, which is more similar to creating a new quick report.

When you are using custom fields in a window, that window fetches data from the _CFV and it is not fetching data from the base view. And also you can’t dynamically change the view that the window is using.

Userlevel 4
Badge +7

Hi Binura,

thanks for your answer and you are right: :-)
I now about the strict way creating a QR! To change it, you must replace the view(s).
I don’t have any problem with that.

No quiet simply:
Somebody shows me a ORACLE SQL script (could be a QR script but could be something else)
What I’m asking for, is an elegant way to “know” from the given view which is the correspondig GUI mask.

e.g: (rechercherd by debug console)

CUST_ORDER_INV_HEAD_UIV_ALL → CustomerInvoice (single mask)

CUSTOMER_ORDER_INV_JOIN        → CustomerInvoiceLines (Overview mask)

 

 

To go this way is very simple but boring and a lot of work to do.
To get a list of all mask with the underlying structures “fetched” by the application is just
days and days of stupid work. 
So because I’m thinking about a “compendium” for BI experts where you just enter the VIEW-Name and the documentation gives you information in which masks this view is used therefore I’m asking for “the other way around” :-)

best regards

Michael

Userlevel 6
Badge +18

I honestly don’t think you’ll be able to query the DB directly to gather information about which screen(s) use each view.  The application layer calls the database views, and as far as I know there is no connection at the DB table or view level as to which screens will use it.

If this is correct, then the only option you have is to generate a list of all DB views used by all screens (which is what you were talking about doing manually) from the application side somehow - not the database side - and then compile that into a tool for your reference.  

Apart from being hard to do, another drawback with this approach is that it will only identify Views currently in use by IFS.  i.e. it would not reveal any ‘staging’ views or underlying tables that you might also want to use for BI. 

One last thought… you commented:

“There must be some connection because, if we enhance IFS with customized fields and use
_CFT and _CFV structures instead the original structures, there must be a certain point where to tell IFS: “now use View X instead of Y””

… but this referencing is handled from the app pointing to the custom DB structures, not the DB choosing to use something different.  Adding custom fields doesn’t replace the standard IFS fields.  They are additional.  For example, you cannot change a standard IFS field to use a different view, you can only create new fields and call them from custom fields.

Hope this help clarify,

Nick

 

Userlevel 2
Badge +6

Hi Michael,

 

with that Statement you will get the Windows that are using a special view.

Replace   yvvda_print_reports with the view you are looking  for 

SELECT * FROM pres_object_security WHERE LOWER(sec_object) = LOWER('yvvda_print_reports') AND pres_object_sec_sub_type_db = 3

 

Is this what you need?

 

Best regards 

Darius 

Userlevel 6
Badge +18

That’s awesome Darius, I very gladly stand corrected!

Given that @Michael Kaiser was looking for a complete list of screens to views, the result could be simplified by the following

SELECT PO_ID, SEC_OBJECT FROM pres_object_security WHERE pres_object_sec_sub_type_db = 3

I think it still has the limitation that it will only identify Views directly in use by IFS screens.  i.e. it will not reveal any ‘staging’ views or underlying tables that you might also want to use for BI or other development, but that should not be a big deal in general. 

Nick

Userlevel 4
Badge +7

Hi Nick,

brilliant!
Yes, this is the “missing link”.
 

 

 

But you know, there is a saying in german:
“Der Appetit kommt beim Essen!” ( Appetite comes with eating )

Now I know the connection between View and “Frame”.

Is there a connection between navigation tree and Frame / GUI visible in ORACLE as well?

 

What I’m planning to do:
A compendium with all the navigation tree parts down to the last level with single data mask like customer or inventorypart or multi data “masks” like customerinvoicelines.

Then imagine a list of known Quickreports organised within this compendium!

I can imagine this must be some tool for all colleages creating QRs.

But nevertheless: great answer and fun trying out.
Thanks again!!!

 

All the best


Michael

Userlevel 6
Badge +15

To go that extra level...

 

select
a.description "Navigator Description",
b.sec_object "DB Object",
b.po_id "Presentation Object",
case when substr(b.po_id, 0, 3) = 'frm' then 'Form (Single)'
when substr(b.po_id, 0, 3) = 'tbw' then 'Table (Overview)'
when substr(b.po_id, 0, 3) = 'dlg' then 'Dialog Box'
when substr(b.po_id, 0, 3) = 'glo' then 'Global'
end as "Type"
from pres_object a, pres_object_security b
where a.pres_object_type_db = 'WIN' and a.po_id = b.po_id and b.pres_object_sec_sub_type_db = 3
and upper(b.sec_object) = upper('CUSTOMER_INFO')

 

 

Userlevel 4
Badge +7

Hi Callum,

you’re a genius!!!

Thanks for that brilliant script.
It is exactly I was looking for.

 

If you need information about BI, QR just let me know.

 

Have a nice weekend.

Michael

 

 

Userlevel 4
Badge +7

Hi Callum,

long time now, since I first used your script and it is still of great use.

Now I came along an issue I cannot understand.

Example:
When you look for “Purchasing Analysis” you get the following window:

 

When using your script I get:

This looks quite (!) the same but not exactly!

When I put in “Analysis - Purchase” into the IFS navigator it will not find a window.

On the other hand if I search for the Text (and translation) every thing looks fine.


The PROG_TEXT and the german translation will do fine when I search them in the navigator line.

What I don’t understand:
Why is the presentation objects (pres_object and pres_object_security) giving me a “Analysis - Purchasing” when the navigator is listening to “Purchasing Analysis”?

Is there a “translation” in between?

All the best to you and thank you for sharing.

 

Michael

 

Userlevel 4
Badge +7

Hi folks,

I stumbled over some more interesting issues last weekend.
Looked into FND_NAVIGATOR and found the a classical parent-child-connection and all the information I need to “tag” a screenshot for - say -  “Sales Quotation Lines”

So with the script above I get the following information:

Not only the underlying View but also the objects below the view.
Now I can combine the presentation object (what the user is familiar with), the navigation “path” and the technical information (view + underlying tables).
Because I have a metadata-analysis-tool which fetch all metadata from all (table) objects and store them in an excel-datadictionary, the documentation is quite enhanced and “round”.

This datadictionary is the “interface” between me and the customer.
All field “taged” as relevant are copied into the DWH and transformed to a Star-Schema and (if wanted) to a microsoft AS cube. (since last winter I work with an algorithm to decide which fields to select and excel macros doing the colouring (green for numeric/measures, blue for date, orange for char, lilac for (additional) joins).


Meanwhile I’m looking for a good imaging archive system to follow my powerpoint based documentation.
My vision: A database with all screenshots as base to do workshops, trainings, discuss open questions, and so on.
Even if I’m not the typical IFS consultant, I can imagine that with that structure we all have better discussions with partners, IFS, colleages, etc. because we can exactly refer to a screen.

By the way:
Now I’m able to document (with a structure and strategy) most of the masks in IFS.
The next step is to document the RMB-Menues. Again, I’m no consultant but when I image a IFS training it must go like this:
First you have to….
then RMB - choose xyz - then ….
I’ve seen plenty of this “work process” when we discuss measures and dimensions in IFS.
My customer very often show me, how they do their work within IFS.

I’m looking forward to screenshot them as well and - perhaps - create own (simple) training material.

Will keep you informed and looking forward to have more input about this issues.

Feedback and ideas are very wellcome!!!

All the best to all of you wonderful people.
Let’s make the world a better place.

Michael

 


 

Userlevel 5
Badge +11

Hello,
The script does not seem to be possible for IFS Cloud.
Has anyone been able to update the script for IFS Cloud yet?
Thanks in advance

Userlevel 4
Badge +7

Bonjour Théo,

 

do you have an error message?

Last week I got an order from a new customer. iFS cloud!

So hopefully I will do my own tests the coming days.

Au revoir 

 

Michael

Userlevel 5
Badge +11

Hi @Michael Kaiser ,
When executing this request :

SELECT PO_ID, SEC_OBJECT FROM pres_object_security WHERE pres_object_sec_sub_type_db = 3

I get very few records (about twenty).
Perhaps there's another query/view to use?

Thanks a lot! 

Userlevel 4
Badge +7

Hi Théo,
so you only got 20 presentationobjects in the IFS cloud? :-)
No kidding….
I hope that tomorrow we will be a step ahead on the CH customer site and I can do some tests by myself.

So you don’t get an error message but very few result rows?

Less than expected.
When I do the query against a customer system (on Prem) I see the following.
 

I will come back with more infos the moment I can test against IFS Cloud.

CU

Michael

PS:
 

 

Reply