cancel
Showing results for 
Search instead for 
Did you mean: 

How to hide columns with webdynpro in standard tab item on quot (bus2202 )

Former Member
0 Kudos

Hi Experts,

I am working on srm 7.0-portal.

I need to hide a column ( price ) in quot with a condition that i evaluate on runtime, and i think that with webdynpro i will be able to do that. But i do not the way.

Could anyone help me?

Thanks

Manuel

Accepted Solutions (0)

Answers (2)

Answers (2)

Former Member
0 Kudos

Hi Manuel,

Please scrape my answers above. The approach I mentioned was overly complicated.

SRM 7.0 provides excellent facility, i.e. metadata framework, to configure UI fields/buttons to minimize manual alteration. What you were requesting can be done through the following two steps:

1) Observe in transaction SPRO: go to SRM->SRM server->Cross application setting->extension and field control (personalization) -> configure field control -> display standard metadata tables for item details. Double click on "Display Delivered Metadata Table for Item Fields". Here you can locate the relevant entry of your interest:

PRICE BUS2202 X Yes X Yes No /SAPSRM/CL_PDO_DYN_MDF_IT_QTE PRICE

2) Go to transaction SE24 and locate the

Class - /SAPSRM/CL_PDO_DYN_MDF_IT_QTE

Method - PRICE

and put your cursor on the method.

Go to menu Class -> Enhance and create your enhancement if you don't have one.

Go to menu Edit -> Enhancement Operations -> Insert Post Method.

Now you would see a button appearing in the column of the PRICE method under the name "Post-Exit". Click that button and implement your logic there. You should see the interface in the comment when you are in the coding area. Use them.

Save and activate your enhancement implementation.

There is a chance you would need to go to transaction SHMM and remove the entry /SAPSRM/CL_PDO_META_CONF_AREA before you can see the effect.

Let me know.

Former Member
0 Kudos

Hi Jay, thank you so much for your anwers.

I know that SRM 7.0 provides excellent facility, in fact many fileds i control with this way. But some one field does not appear in that views. Then, a sap-note indicates if the field does not appear in that views, i must control him with webdynpro. That the reason because i need use webdynpro.

In post Dec 4, 2009 2:54 PM I told you that i had problem when i tried create a new context node, therefore I send you a attach at your e-mail with step by step with the enhancement implementation. The problem is after to create the new context node and modify the atributte, because when i enter again to the enhancement the atributte modified was delete ( the atribute was delete, not the enhancement ). See the attach please.

Do you know what is the problem?

Is really necessary create a new context node to insert my logic, or the methods "Pre-exit" and "Post-exit" solve my problem?

Remember that, my original problem is i want to control the view/hide of a field under a condition.

Thanks a lot

Manuel

Former Member
0 Kudos

Hi MAnuel,

Have you found a solution to your problem.

I am also facing a similar problem. My requirement was to change the label of the context element.

Through enhancement point I was able to make the changebut once I come out of SE80 transaction and go back the changes are lost. Not sure what the problem is.

Let me know if you have found a solution to your problem.

Thanks

Manju

Former Member
0 Kudos

hi,

any one has sollution to the problem

Former Member
0 Kudos

First, you would need to locate the WD view for this:

package: /SAPSRM/CH_WD_UI_BO_QTE

WD component: /SAPSRM/WDC_DOTC_QTE_I_D

View: V_QTE_DOTC_BASIC

Then you would need to create a new context node under comp_context -> items, e.g. price_visible with type boolean (or XFELD). You would then bind the "visible" property of ITEMS_TABLE_PRICE column in the layout of the ITEMS_TABLE of this view, to this new context node.

Then in the mapper class /SAPSRM/CL_CH_WD_DODM_QTE_I_D, method /SAPSRM/IF_CLL_MAPPER~REFRESH, write your logic to set this context node's value.

Hope this helps.

Former Member
0 Kudos

Hi Jay,

We were in touch when i send you a document .pdf a few days ago. How are you?

I applied the first part of your mail, and it is all ok, but in the second part, i had a problem because:

I put the break point in method /SAPSRM/IF_CLL_MAPPER~REFRESH of the class /SAPSRM/CL_CH_WD_DODM_QTE_I_D and the program does not stop when load tab item, but the program stop when load tab item and click DETAILS.

I need the program stop when load tab item because my field "total value" appears in this tab. Then, must i use another method??

Finally when you say:

"Then in the mapper class /SAPSRM/CL_CH_WD_DODM_QTE_I_D, method /SAPSRM/IF_CLL_MAPPER~REFRESH, write your logic to set this context node's value."

How can i do that? Because i can not put my code in standard method /SAPSRM/IF_CLL_MAPPER~REFRESH. Do i need copy to z method? Can you be more specific?

Thanks a lot,

Manuel

Former Member
0 Kudos

Hi Jay,

I have a problem with the first part of your original mail, because i created an enhancement to create a new context node under comp_context. After that i bind the "visible" property of ITEMS_TABLE_PRICE column in the layout of the ITEMS_TABLE of this view, to the new context node.

Then, i active the enhancement and go out, but when i try to modify the enhacement again the changes to the new context node was delete. Is that normal?

Thanks a lot Jay

Manuel

Former Member
0 Kudos

First of all, your enhancement's disappearance is not normal. You might have done something that you shouldn't have. Let me know exactly what you did trying to update the enhancement implementation. (Normally, you would go to menu <object> -> Enhance and then the object would go into change mode already.)

For any methods of a class, you would see "Pre-exit" and "Post-exit" columns for enhancement. You would need to insert your logic in one of those "exits" as per your requirement (to be executed before or after the method). I would guess the Post-Exit would be the one that you should choose to write your logic.

I must admit that I haven't done this myself. But this would be the theoretical approach that I would be after. Let me know if you are successful. If you are hit with roadblock, let me know exactly what steps you took.

Former Member
0 Kudos

Sorry, I forgot to answer this part of your question:

==

"Then in the mapper class /SAPSRM/CL_CH_WD_DODM_QTE_I_D, method /SAPSRM/IF_CLL_MAPPER~REFRESH, write your logic to set this context node's value."

How can i do that? Because i can not put my code in standard method /SAPSRM/IF_CLL_MAPPER~REFRESH. Do i need copy to z method? Can you be more specific?

==

You would need to implement an enhancement. Display the class via SE24 and method tab. You should see to the right of your screen different columns for enhancement purpose: "Pre-Exit", "Post-Exit", etc. Go to menu Class -> Enhance and create one (if you don't have one already). You should see buttons for those Exits. These two exits indicate that they would be executed before or after the original method respectively. Implement your logic in one of these Exits.

Former Member
0 Kudos

Hmm... Not stopping there. Put a breakpoint here:

Class - /SAPSRM/CL_CH_WD_DODM_QTE_I_BD

Method - /SAPSRM/IF_CLL_MAPPER~REFRESH

And see if it stops when you click on Item tab. If so, enhance this method instead. Let me know.

Former Member
0 Kudos

I put the break point in method /SAPSRM/IF_CLL_MAPPER~REFRESH of the class /SAPSRM/CL_CH_WD_DODM_QTE_I_D and the program does not stop when load tab item, but the program stop when load tab item and click DETAILS.

I need the program stop when load tab item because my field "total value" appears in this tab. Then, must i use another method??

It should be this class/method :

/SAPSRM/CL_CH_WD_DOTM_QTE_I_BD

/SAPSRM/IF_CLL_MAPPER~REFRESH