cancel
Showing results for 
Search instead for 
Did you mean: 

Shut-dump in ABAP WebDynpro

Former Member
0 Kudos

Hi Guys,

I'm new to ABAP Webdynpro. I'm trying to display data in from table VBAP in webdynpro ALV and I get the following runtime error. Neither I'm able to debug the error (external break-point doesn't stop in my action event, may be it's dumping before that) nor able to get any clue waht exactly it means. Can somebody please help.

I get the error "Lower-Level Node with Name INPUT_VIEW.T_VBAP Does Not Exist".

I have 2 view in my application, INPUT_VIEW and OUTPUT_VIEW. My Input VIEW consists of node T_VBAK (wit 2 fields VBELN and ERDAT), and OUTPUT_VIEW with T_VBAP (with 4 fields VBELN, POSNR, MATNR, MATKL).

Thanks,

Satyaki.

Accepted Solutions (1)

Accepted Solutions (1)

thomas_jung
Developer Advocate
Developer Advocate
0 Kudos

T_VBAP - does it have a parent node? What is its cardinality?. It sounds like you have a node that doesn't have any elements. This can easily happen if you have a 0:n or 1:n node, but you didn't initialize an empty element into the context node. If you are going to have input fields bound to this node, you must have at least an empty element.

Former Member
0 Kudos

Hi Thomas and Lekha,

Thanks for quick response. Let me explain you what I'm trying to do. I have two context nodes, T_VBAK (cardinality 1:1) and T_VBAP (cardinality 0:1) with 2 and 4 fields (elements) respectively that I mentioned in my first mail. T_VBAK node is mapped to INPUT_VIEW's context node where as T_VBAP is mapped to OUTPUT_VIEW's context node to display data in ALV. None of these nodes are empty; they have elements there. I have custom code for an event (for a button on INPUT_VIEW) to fetch the data from VBAK/VBAP based on the inputs in INPUT_VIEW for the elements vbeln and erdat and send the same to OUTPUT_VIEW to display the data in ALV.

Both INPUT_VIEW and OUTPUT_VIEW are embedded in MAIN widnow of webdynpro component and linked to handle the data flow between them.

I really don't understand how the application is looking for the node T_VBAP in NPUT_VIEW when I don't have it there nor I need it to be there.

Thanks,

Satyaki.

Former Member
0 Kudos

Hi,

I guess there is an Input field for VBELN and erdat right. User enters the data on clikc on button you are getting the table into table from VBAP Is that so.

Where are you actually geting the data and binding the table to node.

As per you VBAP node cardinality(0:1) it have have atmost one record right. that needs to be shown uin 2nd view.

Regards,

Lekha.

Former Member
0 Kudos

Hi

You are right, VBELN and ERDAT are input fields and when user press the button following event triggers ONACTIONGET_DATA (button is associated to event GET_DATA). Inside this event, I have the following code. I was trying to debug this code if something wrong here with external debugger but systems dumps the error before it reaches here.

I'm copy pasting the code here... Can you please tell me - what is wrong with the code OR if you can guide me how to debug to check if select fails on VBAP.

DATA: condition(72) TYPE c,

itab_where LIKE TABLE OF condition,

node_vbakinfo TYPE REF TO if_wd_context_node,

elem_vbakinfo TYPE REF TO if_wd_context_element,

stru_vbakinfo TYPE if_input_view=>element_t_vbak ,

item_vbak TYPE ypat_vbak,

node_vbapinfo TYPE REF TO if_wd_context_node,

elem_vbapinfo TYPE REF TO if_wd_context_element,

itab_vbap TYPE STANDARD TABLE OF ypat_vbap.

  • navigate from <CONTEXT> to <T_VBAK> via lead selection

node_vbakinfo = wd_context->get_child_node( name = `T_VBAK` ).

  • get element via lead selection

elem_vbakinfo = node_vbakinfo->get_element( ).

  • get single attribute

elem_vbakinfo->get_static_attributes(

IMPORTING

static_attributes = item_vbak ).

  • create where condition

IF NOT item_vbak-vbeln EQ ''.

CONCATENATE 'VBELN = ''' item_vbak-vbeln '''' INTO condition.

APPEND condition TO itab_where.

IF NOT item_vbak-erdat EQ ''.

CONCATENATE 'ERDAT = ''' item_vbak-erdat '''' INTO condition.

CONCATENATE 'AND' condition INTO condition SEPARATED BY space.

APPEND condition TO itab_where.

ENDIF.

ENDIF.

*--- select data

SELECT vbeln posnr matnr matkl FROM vbap

INTO TABLE itab_vbap

WHERE (itab_where).

  • navigate to <T_VBAP>

node_vbapinfo = wd_context->get_child_node( name = `T_VBAP` ).

  • Bind table to context node <T_VBAP>

node_vbapinfo->bind_table( itab_vbap ).

wd_this->fire_to_output_view_plg( ).

Thanks,

Satyaki.

thomas_jung
Developer Advocate
Developer Advocate
0 Kudos

In your component controller context is T_VBAP a child node of T_VBAK? The code you have posted here, is it from your view controller or your component controller?

You have line:

node_vbapinfo = wd_context->get_child_node( name = `T_VBAP` ).

Yet you said you didn't map T_VBAP to the first view. If this code is executing within the first view, then you would get this error. T_VBAP isn't visible within your first view if you have mapped as you described earlier.

Also on a totally unrelated note, you might want to research the use of `` instead of '' as a text literal identifier. It makes it much simplier to process the character '. Instead of :

CONCATENATE 'VBELN = ''' item_vbak-vbeln '''' INTO condition.

you could code:

CONCATENATE `VBELN = ` `'` item_vbak-vbeln `'` INTO condition.

Former Member
0 Kudos

Thanks Thomas and Lekha for all your help. Now I understand why it dumps. I wrote my code in INPUT_VIEW controller, that's why it fails to find T_VBAP. I think I have to spend little more time to understand where to write the code. I was just going through a tutorial from internet where the author wrote the example code in this way... so I just copied without much understanding.

But I still don't understand why my debugger doesn't work. Do I need to something special like putting an infinite loop in code and then debugging the process from SM50? or it'll work with just external debugger set in code? am I missing something?

Thanks,

Satyaki.

thomas_jung
Developer Advocate
Developer Advocate
0 Kudos

I would suggest that you put such code in a method in the component controller. That way you have easy access to both context nodes. You can call component controller method from the action handler of the view.

thomas_jung
Developer Advocate
Developer Advocate
0 Kudos

>ut I still don't understand why my debugger doesn't work. Do I need to something special like putting an infinite loop in code and then debugging the process from SM50? or it'll work with just external debugger set in code? am I missing something?

It should just work with the external breakpoint. Nothing special needed. Make sure that when you run the application you are using the same user that you set the external breakpoint with. Sometimes when run applications from the portal, user mapping is in place causing the backend user account to be different.

Former Member
0 Kudos

Thomas - thanks for the reply.

1. I'll try writing the code in component controller. The other way to address the issue I had is to create the node T_VBAP in INPUT_VIEW even if I don't use the elements of that there (I just tried this and it worked).

2. my external debugger was inactive and I had to activate that for my user ID from SICF; now it works. it also works with infinite loop debugging from SM50.

following might be a question for a different thread/forum... I would appreciate if you know the answer and can help me. I work in couple of other SAP applications such as Biller Direct and BPC (BI 7.0 envr.) where external id is a fixed system id not specific to the user who runs the application from front-end. To debug the issues I always write temp infinite loop and debug the same from SM50. But this makes my life difficult to debug any issue in QA or production system. i have to always re-create the scenario in D. External debugging doesn't work for these applications even if I change the user name to system user id in debugger settings. Do I need to activate the external debugging somewhere for such IDs. I tried SICF but it doesn't select anything for external system ids like BDADMIN or BW_USER.

Thanks a lot!

Satyaki.

thomas_jung
Developer Advocate
Developer Advocate
0 Kudos

>I tried SICF but it doesn't select anything for external system ids like BDADMIN or BW_USER.

My guess, those users are not dialog users. They are system users. They can't spawn the debugger because that would be a dialog session. In NetWeaver 7.02 we have the concept of terminal breakpoints. The breakpoints are tied to your unique terminal ID instead of any particular user. They allow you to launch the debugger regardless of what user is currently running the transaction. This solves the problem you describe.

Answers (2)

Answers (2)

Former Member
0 Kudos

Thomas's answer helped me to understand why it dumps. Thanks to both Lekha and Thomas for their time for helping me out.

Former Member
0 Kudos

Hi,

"Lower-Level Node with Name INPUT_VIEW.T_VBAP Does Not Exist".

I think the INPUT_VIEW does not have T_VBAP node.But some where in the methiods, you are trying to access the code.

Regards,

Lekha.