cancel
Showing results for 
Search instead for 
Did you mean: 

Cannot Create Web Dynpro Applications !

Former Member
0 Kudos

Hi All ,

I am able to create the WD component and the views and write code and all .

But the moment I create WD application , It gives me an error :

ICF Node for Web Dynpro Application cannot be created .

Also I got to know :

u2018The problem occurs because for each application, an ICF WebDynpro node must exist if they should be accessible "outside" (i.e. the browser). This is created automatically during the application creation (if permission exists for it). If the permission should not be awarded to enable the development coordinator, specify the respective ICF nodes later in the SICF.u2019

Can anybody guide me how to get past this so that I can Create WD applications ?

regards,

Ambar Patil.

Accepted Solutions (0)

Answers (3)

Answers (3)

Former Member
0 Kudos

Thanks Abhi .

I got access to role S_ICF_ADM .

abhimanyu_lagishetti7
Active Contributor
0 Kudos

You should have S_ICF_ADM authorization object in your role.

Go to the application and choose from the menu goto->HTTP Service Maintenance, if it is not thr it will create a new one.

Abhi

Former Member
0 Kudos

Hi Abhi ,

I went to goto->HTTP Service Maintenance , Tried creating ICF node :

It says : You cannot create ICF node and then takes me directly to SICF .

I am not sure how to create Host / Service ; But I tried Creating one .

It said You are not authorised to use function Create .

Does this mean I do not have enough Authorization / Or is it like I can still find a workaround solution for this

?

Thanks and Regards,

Ambar patil.

Former Member
0 Kudos

Hi Ambar,

I am attaching a source code which helps you to identify the missing SICF code and also enables you to add one.

Hope this would help your need.

REPORT WDY_CHECK_ICF.

constants: C_SICF_PARGUID type ICFPARGUID value '5TEPBZPBOI37B0I5COMIHE82E',

C_SICF_WDY_HANDLER type string value 'CL_WDR_MAIN_TASK',

C_SICF_WEBDYNPRO type string value 'webdynpro'.

parameters: osystem type c as checkbox default 'X',

repair type c as checkbox default space.

data: begin of g_parguid_tab occurs 10,

namespace type string,

guid type ICFPARGUID,

end of g_parguid_tab.

data: begin of g_log_tab occurs 10,

name type wdy_application_name,

devc type devclass,

create_flag type flag,

message type string,

end of g_log_tab.

data: g_tadir_tab type standard table of tadir.

perform initialize.

perform check_nodes.

  • -> G_TADIR_TAB contains all appls without ICF-entry

if lines( g_tadir_tab ) = 0.

write text-s01.

return.

endif.

if repair is initial.

perform write_check_result.

else.

perform create_sicf.

perform write_log.

endif.

*****************************************************************************

form initialize.

data: l_parguid type ICFPARGUID.

if osystem is initial.

select * into corresponding fields of table g_tadir_tab

from tadir as t

inner join wdy_application as a

on a~application_name = t~obj_name

where t~pgmid = 'R3TR' and t~object = 'WDYA' and

t~devclass <> '$TMP'

order by t~obj_name.

else.

select * into corresponding fields of table g_tadir_tab

from tadir as t

inner join wdy_application as a

on aapplication_name = tobj_name

where tpgmid = 'R3TR' and tobject = 'WDYA' and

tdevclass <> '$TMP' and tsrcsystem = sy-sysid

order by tsrcsystem tobj_name.

endif.

CALL FUNCTION 'HTTP_GET_NODEGUID'

EXPORTING

parguid = C_SICF_PARGUID

nodename = 'SAP'

IMPORTING

nodeguid = l_parguid

EXCEPTIONS

OTHERS = 0.

g_parguid_tab-namespace = 'SAP'.

g_parguid_tab-guid = l_parguid.

append g_parguid_tab.

endform. "initialize

*****************************************************************************

form check_nodes.

data: l_tadir type tadir,

l_name type WDY_APPLICATION_NAME,

l_icfname type icfname,

l_parguid type ICFPARGUID.

loop at g_tadir_tab into l_tadir.

l_name = l_tadir-obj_name.

perform GET_SICF_PARENT_GUID changing l_name l_parguid.

if not l_parguid is initial.

if strlen( l_name ) > 15.

select single icf_name from icfservice into l_icfname

where ICFPARGUID = l_parguid and

ICFALTNME = l_name. "#EC *

else.

select single icf_name from icfservice into l_icfname

where icf_name = l_name and

ICFPARGUID = l_parguid.

endif.

if sy-subrc = 0. "node found

delete g_tadir_tab.

endif.

endif.

endloop.

endform. "check_nodes

*******************************************************************************************

form write_check_result.

data: l_tadir type tadir.

write:/(30) text-t01, (15) text-t02, (10) text-t05, text-t03.

uline.

loop at g_tadir_tab into l_tadir.

write:/(30) l_tadir-obj_name, (15) l_tadir-author, (10) l_tadir-srcsystem, l_tadir-devclass.

endloop.

endform. "write_check_result

*******************************************************************************************

form write_log.

if lines( g_log_tab ) = 0.

write text-r02.

else.

read table g_log_tab with key create_flag = 'X'.

if sy-subrc = 0.

write:/ text-r01.

write:/(30) text-t01, text-t03.

uline.

loop at g_log_tab where create_flag = 'X'.

write:/(30) g_log_tab-name, g_log_tab-devc.

delete g_log_tab.

endloop.

endif.

if lines( g_log_tab ) > 0. "entries with create_flag = ' '

skip 2.

write:/ text-r03.

write:/(30) text-t01, (30) text-t03, text-t06.

uline.

loop at g_log_tab.

write:/(30) g_log_tab-name, (30) g_log_tab-devc, g_log_tab-message.

endloop.

endif.

endif.

endform. "write_log

*******************************************************************************************

form create_sicf.

data: l_tadir type tadir,

l_object_name type o2applname,

l_npace_upper type string,

l_namespace type string,

l_applname type string,

l_url type string,

l_suffix type icfredurl,

l_icfhost type icfhostnum,

l_icfguid type icfnodguid,

l_wdy_name type wdy_application_name,

l_descript type wdy_md_description,

l_text(80) type c,

l_answer type c.

loop at g_tadir_tab into l_tadir.

l_object_name = l_tadir-obj_name.

CALL METHOD cl_o2_helper=>split_applname

EXPORTING p_applname = l_object_name

IMPORTING p_namespace = l_namespace

p_mod_applname = l_applname.

l_npace_upper = l_namespace.

translate l_npace_upper to upper case. "#EC SYNTCHAR

read table g_parguid_tab with key namespace = l_npace_upper.

if g_parguid_tab-guid is initial. "missing parent ICF

clear g_log_tab.

g_log_tab-name = l_tadir-obj_name.

g_log_tab-devc = l_tadir-devclass.

g_log_tab-message = text-e02.

replace '&' in g_log_tab-message with l_namespace.

append g_log_tab.

continue.

endif.

if l_namespace = 'SAP'.

translate l_namespace to lower case. "#EC SYNTCHAR

endif.

CALL METHOD CL_WD_UTILITIES=>CONSTRUCT_WD_URL

EXPORTING

APPLICATION_NAME = l_applname

NAMESPACE = l_namespace

IMPORTING

OUT_LOCAL_URL = l_url.

  • get guid of the last defined icf node

call method cl_icf_tree=>if_icf_tree~service_from_url

exporting

url = l_url

hostnumber = l_icfhost

importing

urlsuffix = l_suffix

icfnodguid = l_icfguid

exceptions

WRONG_APPLICATION = 1

NO_APPLICATION = 2

NOT_ALLOW_APPLICATION = 3

WRONG_URL = 4

NO_AUTHORITY = 5

others = 6.

if sy-subrc = 5.

MESSAGE ID SY-MSGID TYPE 'I' NUMBER SY-MSGNO

WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

return.

elseif sy-subrc <> 0.

clear g_log_tab.

g_log_tab-name = l_tadir-obj_name.

g_log_tab-devc = l_tadir-devclass.

MESSAGE ID SY-MSGID TYPE 'I' NUMBER SY-MSGNO

WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4 into g_log_tab-message.

append g_log_tab.

continue.

endif.

translate l_suffix to upper case. "#EC SYNTCHAR

if l_suffix = l_applname.

  • corresponding service does not exist, try to create it

l_text = text-q01.

replace '&' in l_text with l_object_name.

CALL FUNCTION 'POPUP_TO_CONFIRM'

EXPORTING

TITLEBAR = text-t04

text_question = l_text

IMPORTING

ANSWER = l_answer

EXCEPTIONS

OTHERS = 1.

IF sy-subrc <> 0 or l_answer = 'A'.

message s003(swdp_wb_tool).

return.

ENDIF.

if l_answer = '1'. "create

clear g_log_tab.

g_log_tab-name = l_tadir-obj_name.

g_log_tab-devc = l_tadir-devclass.

concatenate 'Web-Dynpro' l_object_name into l_descript separated by space. "#EC NOTEXT

clear l_wdy_name.

select single display_name from wdy_application into l_wdy_name

where application_name = l_object_name.

if l_wdy_name is initial.

l_wdy_name = l_object_name.

endif.

CL_WDY_MD_APPLICATION=>GENERATE_SICF(

EXPORTING

P_APPLNAME = l_wdy_name

P_DESCRIPT = l_descript

P_DEVCLASS = l_tadir-devclass

EXCEPTIONS

INVALID_NAME = 1

PARENT_NOT_EXISTING = 2

ENQUEUE_ERROR = 3

NODE_ALREADY_EXISTING = 4

TRANSPORT_ERROR = 5

TADIR_ERROR = 6

PACKAGE_NOT_FOUND = 7

ALTERNATE_NAME_EXIST = 8

ERROR_OCCURED = 9

others = 10 ).

IF sy-subrc = 0. "ok

g_log_tab-create_flag = 'X'.

else.

MESSAGE ID SY-MSGID TYPE 'I' NUMBER SY-MSGNO

WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4 into g_log_tab-message.

endif.

append g_log_tab.

endif.

endif.

endloop.

endform. "create_sicf

*******************************************************************************************

form GET_SICF_PARENT_GUID changing p_applname type WDY_APPLICATION_NAME

p_parguid type icfparguid.

DATA: l_applname type string,

l_namespace TYPE string,

l_nodename type ICFNAME,

l_urls type TIHTTPURLS2,

l_url type IHTTPURLS2,

l_icf_parent type string.

clear p_parguid.

CALL METHOD cl_o2_helper=>split_applname

EXPORTING

p_applname = p_applname

IMPORTING

p_namespace = l_namespace

p_mod_applname = l_applname.

p_applname = l_applname.

translate p_applname to upper case. "#EC SYNTCHAR

translate l_namespace to upper case. "#EC SYNTCHAR

read table g_parguid_tab with key namespace = l_namespace.

if sy-subrc = 0.

p_parguid = g_parguid_tab-guid.

else. "look for namespace in SICF-Tree

clear g_parguid_tab.

call method cl_http_server=>get_extension_info

EXPORTING extension_class = C_SICF_WDY_HANDLER

IMPORTING urls = l_urls.

concatenate '/' l_namespace '/' c_sicf_webdynpro

into l_icf_parent.

loop at l_urls into l_url where url CS l_icf_parent.

call method CL_ICF_TREE=>IF_ICF_TREE~SERVICE_FROM_URL

EXPORTING

URL = l_url-url

  • APPLICATION =

HOSTNUMBER = 0

AUTHORITY_CHECK = ' '

IMPORTING

ICFNODGUID = p_parguid

EXCEPTIONS

others = 1.

exit.

endloop.

if p_parguid is initial. " use /SAP/BC/WEBDYNPRO/-Branch

l_nodename = l_namespace.

CALL FUNCTION 'HTTP_GET_NODEGUID'

EXPORTING

parguid = C_SICF_PARGUID

nodename = l_nodename "namespace (uppercase style)

IMPORTING

nodeguid = p_parguid

EXCEPTIONS

OTHERS = 1.

endif.

g_parguid_tab-namespace = l_namespace.

g_parguid_tab-guid = p_parguid.

append g_parguid_tab.

endif.

endform.

Regards,

Mathew

Former Member
0 Kudos

Ambar,

Do you have necessary authorisations to create applications.go to sicf and try to create a service and check

Thanks

Bala Duvvuri