on 02-24-2011 7:21 AM
I am having table and i have to delete the record from that table........when i click that delete button the popup to be displayed.....
for the generation of the popup i have used the below coding.........
DATA: LR_API_COMP_CONTRL TYPE REF TO IF_WD_COMPONENT,
LR_WINDOW_MANAGER TYPE REF TO IF_WD_WINDOW_MANAGER,
LR_POPUP_WINDOW TYPE REF TO IF_WD_WINDOW,
LR_VIEW_CONTROLLER TYPE REF TO IF_WD_VIEW_CONTROLLER,
POPUP_MSG TYPE STRING_TABLE.
LR_API_COMP_CONTRL = WD_COMP_CONTROLLER->WD_GET_API( ).
LR_WINDOW_MANAGER = LR_API_COMP_CONTRL->GET_WINDOW_MANAGER( ).
clear POPUP_MSG[].
APPEND 'Are You Sure to Delete The Records?' TO POPUP_MSG.
CALL METHOD LR_WINDOW_MANAGER->CREATE_POPUP_TO_CONFIRM
EXPORTING
TEXT = POPUP_MSG
BUTTON_KIND = IF_WD_WINDOW=>CO_BUTTONS_YESNO
MESSAGE_TYPE = IF_WD_WINDOW=>CO_MSG_TYPE_QUESTION
CLOSE_BUTTON = ABAP_TRUE
WINDOW_TITLE = 'Message Box'
WINDOW_LEFT_POSITION =
WINDOW_TOP_POSITION =
WINDOW_POSITION =
WINDOW_WIDTH =
WINDOW_HEIGHT =
RECEIVING
RESULT = LR_POPUP_WINDOW
.
LR_VIEW_CONTROLLER = WD_THIS->WD_GET_API( ).
CALL METHOD LR_POPUP_WINDOW->SUBSCRIBE_TO_BUTTON_EVENT
EXPORTING
BUTTON = IF_WD_WINDOW=>CO_BUTTON_YES
BUTTON_TEXT =
TOOLTIP =
ACTION_NAME = 'YES'
ACTION_VIEW = LR_VIEW_CONTROLLER
IS_DEFAULT_BUTTON = ABAP_FALSE
.
LR_POPUP_WINDOW->OPEN( ).
And on action YES (For the popup's Yes button) I have written the code for deleting the record.........
DATA:
NODE_MODULE TYPE REF TO IF_WD_CONTEXT_NODE,
ELEM_MODULE TYPE REF TO IF_WD_CONTEXT_ELEMENT,
STRU_MODULE TYPE IF_V_MODULE=>ELEMENT_MODULE .
DATA id TYPE ZAC_MODULES-ZMODULE_id.
navigate from <CONTEXT> to <MODULE> via lead selection
NODE_MODULE = WD_CONTEXT->GET_CHILD_NODE( NAME = `MODULE` ).
ELEM_MODULE = WDEVENT->GET_CONTEXT_ELEMENT( 'CONTEXT_ELEMENT' ).
CALL METHOD ELEM_MODULE->GET_ATTRIBUTE
EXPORTING
NAME = 'ZMODULE_ID'
IMPORTING
VALUE = id.
NODE_MODULE->REMOVE_ELEMENT( ELEM_MODULE ).
delete FROM zac_modules WHERE zmodule_id = id.
wd_comp_controller->filltablemodule( ).
get message manager
DATA: L_CURRENT_CONTROLLER TYPE REF TO IF_WD_CONTROLLER,
L_MESSAGE_MANAGER TYPE REF TO IF_WD_MESSAGE_MANAGER.
L_CURRENT_CONTROLLER ?= WD_THIS->WD_GET_API( ).
CALL METHOD L_CURRENT_CONTROLLER->GET_MESSAGE_MANAGER
RECEIVING
MESSAGE_MANAGER = L_MESSAGE_MANAGER
.
report message
CALL METHOD L_MESSAGE_MANAGER->REPORT_SUCCESS
EXPORTING
MESSAGE_TEXT = 'Record Deleted Successfully'
PARAMS =
MSG_USER_DATA =
.
While clicking on the YES button of that popup "Null Object Reference error has occured". The above coding works fine without popup..........plz help me regarding with this.............
THANKS IN ADVANCE
ALAGAPPAN.S
Hello
you need to modify the code little bit to get the index number of the row or element to be deleted.
for this
1. create one context attribute say name 'INDX' of type i.
2. then the code for generating the popup should be like
data el type ref to if_wd_context_element.
el = wdevent->get_context_element( 'CONTEXT_ELEMENT' ).
data indx type i.
indx = el->get_index( ).
wd_context->set_attribute(
name = 'INDX'
value = INDX
).
DATA: LR_API_COMP_CONTRL TYPE REF TO IF_WD_COMPONENT,
LR_WINDOW_MANAGER TYPE REF TO IF_WD_WINDOW_MANAGER,
LR_POPUP_WINDOW TYPE REF TO IF_WD_WINDOW,
LR_VIEW_CONTROLLER TYPE REF TO IF_WD_VIEW_CONTROLLER,
POPUP_MSG TYPE STRING_TABLE.
LR_API_COMP_CONTRL = WD_COMP_CONTROLLER->WD_GET_API( ).
LR_WINDOW_MANAGER = LR_API_COMP_CONTRL->GET_WINDOW_MANAGER( ).
clear POPUP_MSG[].
APPEND 'Are You Sure to Delete The Records?' TO POPUP_MSG.
CALL METHOD LR_WINDOW_MANAGER->CREATE_POPUP_TO_CONFIRM
EXPORTING
TEXT = POPUP_MSG
BUTTON_KIND = IF_WD_WINDOW=>CO_BUTTONS_YESNO
MESSAGE_TYPE = IF_WD_WINDOW=>CO_MSG_TYPE_QUESTION
* CLOSE_BUTTON = ABAP_TRUE
WINDOW_TITLE = 'Message Box'
* WINDOW_LEFT_POSITION =
* WINDOW_TOP_POSITION =
* WINDOW_POSITION =
* WINDOW_WIDTH =
* WINDOW_HEIGHT =
RECEIVING
RESULT = LR_POPUP_WINDOW
.
LR_VIEW_CONTROLLER = WD_THIS->WD_GET_API( ).
CALL METHOD LR_POPUP_WINDOW->SUBSCRIBE_TO_BUTTON_EVENT
EXPORTING
BUTTON = IF_WD_WINDOW=>CO_BUTTON_YES
* BUTTON_TEXT =
* TOOLTIP =
ACTION_NAME = 'YES'
ACTION_VIEW = LR_VIEW_CONTROLLER
* IS_DEFAULT_BUTTON = ABAP_FALSE
.
LR_POPUP_WINDOW->OPEN( ).
3. modify the code for yes action event handler also like below
DATA:
NODE_MODULE TYPE REF TO IF_WD_CONTEXT_NODE,
ELEM_MODULE TYPE REF TO IF_WD_CONTEXT_ELEMENT
*STRU_MODULE TYPE IF_V_MODULE=>ELEMENT_MODULE
.
DATA id TYPE ZAC_MODULES-ZMODULE_id.
** navigate from <CONTEXT> to <MODULE> via lead selection
NODE_MODULE = WD_CONTEXT->GET_CHILD_NODE( NAME = `MODULE` ).
DATA IND TYPE I.
WD_cONTEXT->GET_ATTRIBUTE(
EXPORTING
NAME = 'INDX'
IMPORTING
VALUE = IND
).
ELEM_MODULE = NODE_MODULE->GET_ELEMENT( INDEX = IND ).
CALL METHOD ELEM_MODULE->GET_ATTRIBUTE
EXPORTING
NAME = 'ZMODULE_ID'
IMPORTING
VALUE = id.
NODE_MODULE->REMOVE_ELEMENT( ELEM_MODULE ).
delete FROM zac_modules WHERE zmodule_id = id.
wd_comp_controller->filltablemodule( ).
* get message manager
DATA: L_CURRENT_CONTROLLER TYPE REF TO IF_WD_CONTROLLER,
L_MESSAGE_MANAGER TYPE REF TO IF_WD_MESSAGE_MANAGER.
L_CURRENT_CONTROLLER ?= WD_THIS->WD_GET_API( ).
CALL METHOD L_CURRENT_CONTROLLER->GET_MESSAGE_MANAGER
RECEIVING
MESSAGE_MANAGER = L_MESSAGE_MANAGER
.
* report message
CALL METHOD L_MESSAGE_MANAGER->REPORT_SUCCESS
EXPORTING
MESSAGE_TEXT = 'Record Deleted Successfully'
* PARAMS =
* MSG_USER_DATA =
.
thanks
sarbjeet singh
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hi,
Are you getting error in this line
ELEM_MODULE = WDEVENT->GET_CONTEXT_ELEMENT( 'CONTEXT_ELEMENT' ).
When you click yes, there is no context element is attached to the event object. So you have to either explicitly define a parameter for this action and pass the value or store the context element somewhere and retrieve on action yes handler
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
User | Count |
---|---|
84 | |
23 | |
11 | |
9 | |
8 | |
5 | |
5 | |
5 | |
5 | |
4 |
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.