on 09-15-2010 12:06 PM
Hi,
I am new to web dynpro abap, i m facing problem with reflection of data in the alv table.
I am doing one application in which one form is there in which 3 input fields are there and one ALV Table .
If i entered entries in the form and press save button then those entries have to reflect in the database table and alv table.
Now, i am able to modify database table with the entries in the form, but i am not able to reflect the data in the alv table.
Can any one help me on this issue.
Thanks,
Radhika
hi,
In which method are you populating the context that is binded to the ALV from the values from DB??
Try writing this code in WDMODIFY method .
cheers,
Aditya.
Edited by: Aditya Karanth on Sep 15, 2010 1:29 PM
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hi Aditya,
Thanks for your quick reply.
If i place the logic in modify view i am not able to select the row for any other user defined functions.
If i put that logic in on action save event handler, logic will not trigger first time, so first time it will not display alv table only.
So, i put that logic in doinit method.
Thanks,
Radhika
Hi,
I wrote alv table logic in doinit.
In On action save event handler, after modifying the database table, I wrote the below logic to bind the context node .
SELECT * FROM ZBESTSYSTEMS_C INTO
CORRESPONDING FIELDS OF TABLE LT_SYSTEMS
WHERE COMPHASHID = LS_WA_SYSTEMS-COMPHASHID.
LO_ND_SYSTEMS->BIND_TABLE( LT_SYSTEMS ).
But it is going to dump saying that 'Access via null object reference is not possible'.
Hi,
If this is the code you wrote , obviously u r bound to get dump , coz LO_ND_SYSTEMS is initial.
So before binding the node with internal table , you will have to get the node reference with somthing like this.
lo_nd_systems = wd_context->get_child_node( name = wd_this->wdctx_systems ).
You can get the code from code wizard.
cheers,
aditya.
Hi Madhu,
Thanks for your reply.
I have written the below code, but its not working.
DATA L_REF_INTERFACECONTROLLER TYPE REF TO IWCI_SALV_WD_TABLE.
LO_ND_SYSTEMS = WD_CONTEXT->GET_CHILD_NODE( NAME = WD_THIS->WDCTX_SYSTEMS ).
LO_ND_SYSTEMS->BIND_TABLE( LT_SYSTEMS ).
L_REF_INTERFACECONTROLLER = WD_THIS->WD_CPIFC_ALV( ).
L_REF_INTERFACECONTROLLER->SET_DATA( LO_ND_SYSTEMS ).
Now, LT_SYSTEMS is having my updated data, which has to reflected back in the ALV Table.
Still any suggestions plzzz?
Thanks,
Radhika
Hi ,
I am not sure if this will work ,
Where have you written the code to create alv component usage and also make all the table configurations?
If it is in WDDOINIT , may be you can try writing it in WDDOMODIFY , because , WDDOINIT will not be called on click of save button where as WDDOMODIFY will be called.( basically , try putting all the code(those related to ALV only ) in WDDOINIT to WDDOMODIFY )
I doubt if this will work , just try it out once.
Other than this , I dont know what to say..:(
Cheers,
Aditya.
Hi,
Please find the doint code below:
LO_ND_TAB1 = WD_CONTEXT->GET_CHILD_NODE( NAME = WD_THIS->WDCTX_TAB1 ).
LO_ND_LOGON = LO_ND_TAB1->GET_CHILD_NODE( NAME = WD_THIS->WDCTX_LOGON ).
LO_ND_ACCOUNT = LO_ND_LOGON->GET_CHILD_NODE( NAME = WD_THIS->WDCTX_ACCOUNT ).
LO_EL_ACCOUNT = LO_ND_ACCOUNT->GET_ELEMENT( ).
LO_ND_SYSTEMS = WD_CONTEXT->GET_CHILD_NODE( NAME = WD_THIS->WDCTX_SYSTEMS ).
get single attribute
LO_EL_ACCOUNT->GET_ATTRIBUTE(
EXPORTING
NAME = `USR`
IMPORTING
VALUE = LV_USR ).
SELECT SINGLE DHASH FROM ZBESTUSER_C INTO V_DHASH WHERE USR = LV_USR.
SELECT * FROM ZBESTSYSTEMS_C INTO
CORRESPONDING FIELDS OF TABLE LT_SYSTEMS
WHERE COMPHASHID = V_DHASH.
LO_ND_SYSTEMS->BIND_TABLE( LT_SYSTEMS ).
Initialize ALV Component Usage
L_REF_CMP_USAGE = WD_THIS->WD_CPUSE_ALV( ).
IF L_REF_CMP_USAGE->HAS_ACTIVE_COMPONENT( ) IS INITIAL.
L_REF_CMP_USAGE->CREATE_COMPONENT( ).
ENDIF.
L_REF_INTERFACECONTROLLER = WD_THIS->WD_CPIFC_ALV( ).
L_REF_INTERFACECONTROLLER->SET_DATA( LO_ND_SYSTEMS ).
L_VALUE = L_REF_INTERFACECONTROLLER->GET_MODEL( ).
L_VALUE->IF_SALV_WD_TABLE_SETTINGS~SET_DISPLAY_TYPE(
IF_SALV_WD_C_TABLE_SETTINGS=>DISPLAY_TYPE_TABLE ).
L_VALUE->IF_SALV_WD_TABLE_SETTINGS~SET_READ_ONLY( ABAP_FALSE ).
L_VALUE->IF_SALV_WD_STD_FUNCTIONS~SET_EDIT_INSERT_ROW_ALLOWED( ABAP_FALSE ).
L_VALUE->IF_SALV_WD_TABLE_SETTINGS~SET_DATA_CHECK( IF_SALV_WD_C_TABLE_SETTINGS=>DATA_CHECK_ON_CELL_EVENT ).
L_VALUE->IF_SALV_WD_STD_FUNCTIONS~SET_EDIT_CHECK_AVAILABLE( ABAP_FALSE ).
L_VALUE->IF_SALV_WD_STD_FUNCTIONS~SET_EDIT_APPEND_ROW_ALLOWED( ABAP_FALSE ).
LR_COLUMN = L_VALUE->IF_SALV_WD_COLUMN_SETTINGS~GET_COLUMN( 'COMPHASHID' ) .
LR_COLUMN->SET_VISIBLE( IF_WDL_CORE=>VISIBILITY_NONE ).
LR_COLUMN = L_VALUE->IF_SALV_WD_COLUMN_SETTINGS~GET_COLUMN( 'SHASH' ) .
LR_COLUMN->SET_VISIBLE( IF_WDL_CORE=>VISIBILITY_NONE ).
Now first time i am getting ALV table, I have one form, in which if i enter any values in form those values have to reflect back in al table. that logic is written in 'On Action Save' method
Please find the code in 'On Action Save' method below:
LO_ND_WA_SYSTEMS = WD_CONTEXT->GET_CHILD_NODE( NAME = WD_THIS->WDCTX_WA_SYSTEMS ).
LO_EL_WA_SYSTEMS = LO_ND_WA_SYSTEMS->GET_ELEMENT( ).
get all declared attributes
LO_EL_WA_SYSTEMS->GET_STATIC_ATTRIBUTES(
IMPORTING
STATIC_ATTRIBUTES = LS_WA_SYSTEMS ).
LO_ND_TAB1 = WD_CONTEXT->GET_CHILD_NODE( NAME = WD_THIS->WDCTX_TAB1 ).
LO_ND_LOGON = LO_ND_TAB1->GET_CHILD_NODE( NAME = WD_THIS->WDCTX_LOGON ).
LO_ND_ACCOUNT = LO_ND_LOGON->GET_CHILD_NODE( NAME = WD_THIS->WDCTX_ACCOUNT ).
LO_EL_ACCOUNT = LO_ND_ACCOUNT->GET_ELEMENT( ).
get single attribute
LO_EL_ACCOUNT->GET_ATTRIBUTE(
EXPORTING
NAME = `USR`
IMPORTING
VALUE = LV_USR ).
SELECT SINGLE DHASH FROM ZBESTUSER_C INTO LS_WA_SYSTEMS-COMPHASHID
WHERE USR = LV_USR.
CONCATENATE LS_WA_SYSTEMS-COMPHASHID LS_WA_SYSTEMS-INSTALL_NO INTO
V_SYSHASH.
CALL FUNCTION 'CALCULATE_HASH_FOR_CHAR'
EXPORTING
DATA = V_SYSHASH
IMPORTING
HASH = V_HASH
EXCEPTIONS
UNKNOWN_ALG = 1
PARAM_ERROR = 2
INTERNAL_ERROR = 3
OTHERS = 4.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ELSE.
LS_WA_SYSTEMS-SHASH = V_HASH .
ENDIF.
MODIFY ZBESTSYSTEMS_C FROM LS_WA_SYSTEMS.
IF SY-SUBRC = 0.
SUCCESS_MESSAGE 'System details are successfully saved'.
ELSE.
ERROR_MESSAGE: 'System details are not saved, Please contact Intelligroup with Error code:EDITUSR01'.
ENDIF.
COMMIT WORK.
SELECT * FROM ZBESTSYSTEMS_C INTO
CORRESPONDING FIELDS OF TABLE LT_SYSTEMS
WHERE COMPHASHID = LS_WA_SYSTEMS-COMPHASHID.
DATA LO_ND_SYSTEMS TYPE REF TO IF_WD_CONTEXT_NODE.
DATA LO_EL_SYSTEMS TYPE REF TO IF_WD_CONTEXT_ELEMENT.
DATA LS_SYSTEMS TYPE WD_THIS->ELEMENT_SYSTEMS.
DATA L_REF_INTERFACECONTROLLER TYPE REF TO IWCI_SALV_WD_TABLE.
DATA L_VALUE TYPE REF TO CL_SALV_WD_CONFIG_TABLE.
DATA LR_FIELD TYPE REF TO CL_SALV_WD_FIELD.
DATA LR_COLUMN TYPE REF TO CL_SALV_WD_COLUMN.
LO_ND_SYSTEMS = WD_CONTEXT->GET_CHILD_NODE( NAME = WD_THIS->WDCTX_SYSTEMS ).
LO_ND_SYSTEMS->BIND_TABLE( LT_SYSTEMS ).
L_REF_INTERFACECONTROLLER = WD_THIS->WD_CPIFC_ALV( ).
L_REF_INTERFACECONTROLLER->SET_DATA( LO_ND_SYSTEMS ).
But, i am not able to reflect the updated data i.e LT_SYSTEMS Internal table data back into the alv table.
Can any one plz help me.
Thanks,
Radhika
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.