on 11-21-2013 7:39 PM
Hi All,
Please answer if worked on WD POWL
I have requirement to enhance standard WD component which is using POWL concept.
Requirement: Need to add button “ BUTTON1” I std .
When button is pressed call one custom screen (WD) with some fields.
I have some idea of webdynpro but how to achieve this in feeder class of POWL concept.
My question is:
1) can I call normal WD in feeder class when button "BUTTON1" pressed if yes how .
2) Or I need to build WD component using POWL_UI_COMPONET like FPM (OIF component) .
OIF concept link
I searched many sites but did not get full idea how to build a POWL end to end.
Powl sites i have visited the below sites.
http://scn.sap.com/docs/DOC-36037
http://scn.sap.com/thread/3282712
http://scn.sap.com/thread/1245628
http://wiki.scn.sap.com/wiki/display/WDABAP/POWL
http://help.sap.com/saphelp_nw73ehp1/helpdata/en/a1/de054179214c4593a3b129ecf57f3d/content.htm
http://www.consolut.com/en/s/sap-ides-access/d/s/doc/N-CL_POWL_EASY_FEEDER
IF any one worked in the issue kindly guide me how to proceed.
My main question is how to call the WD component in feeder class or any suggestions.
help full answers will be rewarded.
Thanks
GOPAL
Hi Gopal,
In LPD_CUST, create a launchpad for the WD application which you want to call on click on button.
In your POWL feeder class enhance method 'GET_ACTIONS' and write code in Post-Exit of the method to add your custom button.
In Post-Exit of method 'HANDLE_ACTION' check if the action id is of the button you have added and
then launch WD by calling method 'NAVIGATE' of class 'CL_HR_NAVIGATION_SERVICES'.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
HI Hitesh,
when I used lpd_cust t-code
enter the values of the new launchpad.
Role
Instance
namespace
launchpad type
form where i can get the above details can you please help me out, as i have not worked on them and i new in this area.one more question can we call normal webdynpro component feeder class.
Take help of a portal consultant for lpd_cust.
Role - Same Role from which your POWL application gets called.
Instance - NAVIGATION
NameSpace - sap
Launchtype type - Are you trying to call a WD?if yes then Webdynpro ABAP.
In LPD_CUST first check if the required role and instance as NAVIGATION are already present.
If found then create launchpad inside it.
I have never created a launchpad,its always created by our portal consultant thats why I advised to take help.
I not understood what exactly you mean normal webdynpro component feeder class?is that a FPM application having feeder classes?
Hi Hitesh thanks very much for your suggestion it’s worked out and very sorry for late remarks.
Just one more step to meet the requirement.
1)created Role with WD component and OBN type with a method order num ,when I press custom button in NWBC screen action is triggered and opend ZWD component in new "TAB" all fine .
2) Under ZWD component (implemented interfaces)
Added : POWL_DETAIL_COMP_IF and re-implemented.
Now the problem is I need to carry order num form STD NWBC to my custom ZWD component which is not happening , can please suggest me how to get order num .
Hello Gopal,
You might have solved it by now. But here is the simple way to achieve this:
1. In feeder class implement method GET_DETAIL_COMP. here provide the WD component name.
2. In the WD component, implement WD interface POWL_DETAIL_COMP_IF. In the COMPONENTCONTROLLER you will have the method UPDATE_DETAIL_DATA. you have the POWL lead selection here.
Thanks & Regards
Deepankar
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hi Gopal,
Incase if you still looking for solution then you can refer the below thread.
http://scn.sap.com/thread/3459258
At the end has mentioned how after getting the url of the wd application he opened
it without using LPD_CUST.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
HI Hitesh,
Thanks for suggestion,
I will explain my problem in detail.
I have developed and wd component :ZWD_MFGRITS , Application: ZWD_MFGRITS_APP which need to be called when user clicks on BUTTON (tech name B1) of std feeder class of POWL.
In ZWD_RITS I have 8 fields where business logic is dependent on order num which comes from powl ( ALV lead selection)
Feeder class: CL_RPLM_QIMT_POWL_ORDER_PM
Copied to ZCL_RPLM_QIMT_POWL_ORDER_PM
Changes made as below.
I have created BUTTON (tech name B1 ) in method method get_actions_order_pm
working as expected.
Under Method IF_POWL_FEEDER~HANDLE_ACTION.
I_USERNAME
I_APPLID
I_TYPE
I_ACTIONID
I_CHANGED
I_ACTION_INDEX
I_ACTION_CONF
I_LANGU
I_ADDITIONAL_DATA
I_VISIBLE_FIELDS
E_PORTAL_ACTIONS
E_MESSAGES
E_DO_REFRESH
E_RESULT_LINES_CHANGED
E_CHANGES_PROCESSED
E_SELECTED_CHANGED
E_ACTIONS_CHANGED
C_SELECTED
C_RESULT_TAB
C_WORKFLOW_RESULT_COUNT
C_ACTION_DEFS
C_FIRST_VISIBLE_ROW
C_FIRST_VISIBLE_SCROLL_COL
Now I have written code.
If i_actionid = 'B1'.
READ TABLE c_selected INTO ls_index INDEX 1.
READ TABLE c_result_tab INTO ls_result INDEX ls_index-tabix.
I got the lead selected data in variable l_ordernum = ls_result-aufnr.
l_ordernum
Now problem is here-----------------------------
until every thing is working fine I got the order num.
how to pass l_ordernum to ZWD_MFGRITS compoenet and call the ZWD_MFGRITS in new screen or window.
Endmethod.
I found some useful link, It would be grateful if you could help me in finding the solution.
In the above link .
We can sent the selected data to portal through e_portal_actions-parameters.
ls_parameter-key = field name
ls_parameter-value = value
append to e_portal_actions
Now to how to call my custom wd ZWD_MFGRITS component and import the value from e_portal_actions.
can you suggest me how to Proceed.
Thanks gopal.
In the link which you have provided, POWL has been embeded inside WD Comp.
If you are going for a standalone POWL class then you can proceed as follows.
In your WD appl 'ZWD_MFGRITS_APP' add one parameter as 'ORDER_NUM'.
Use method 'CONSTRUCT_WD_URL' of class 'CL_WD_UTILITIES'
Pass 'ORDER_NUM' and value of order number in parameter 'IN_PARAMETERS' of the above method.
You will get url in 'OUT_ABSOLUTE_URL'
After getting the url you can use the code which was provided in the thread I had mentioned earlier.
CALL METHOD cl_powl_runtime_services=>get_powl_controller
IMPORTING
e_powl_int_controller = lv_wdcomp.
CHECK NOT lv_wdcomp IS INITIAL.
CALL METHOD lv_wdcomp->wd_get_api
RECEIVING
result = lv_wdcontr.
CHECK NOT lv_wdcontr IS INITIAL.
lr_api_component ?= lv_wdcontr.
l_wnd = lr_api_component->get_window_manager( ).
l_result = l_wnd->create_external_window(
url = l_url ). "----->pass your url here in l_url.
l_result->open( ).
This code should open your WD application in new window.
Inside your WD you can get the value of order num as below:
LV_ORDERNUM = WDR_TASK=>CLIENT_WINDOW->GET_PARAMETER( 'ORDER_NUM ).
Let me know if you need help.
Hi Hitesh,
thanks for your suggestion, when I implement the code it’s throwing an error
Error:"Method get_powl_controller does not exist .There is, however, a method with similar name set_powl_controller."
when i see get_powl_controller of CL_POWL_RUNTIME_SERVICES (final class) it is in protected mode . so its throwing the above error as of my knowledge we cannot access "get_powl_controller " out side the class.
Hi Gopal,
You can use the interface IF_FPM_NAVIGATE_TO to navigate to any another webdynpro application.
To get an instance, use this coding:
lo_fpm = cl_fpm_factory=>get_instance( ).
lo_navigate_to = lo_fpm->get_navigate_to( ).
Then call the LAUNCH_WEBDYNPRO_ABAP method and provide the details of your application to navigate to it.
Please note that the launched WD application is launched in a new window. But I believe that is conform requirement if I understand your question correctly.
Good luck!
Kind regards,
Rudy.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
User | Count |
---|---|
87 | |
10 | |
10 | |
9 | |
7 | |
7 | |
6 | |
5 | |
4 | |
4 |
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.