Hi all!
i'm implementing a new sub-dynpro on Customer master data (XD...) using the BAdIs CUSTOMER_ADD_DATA_CS and CUSTOMER_ADD_DATA
i also created a new function group with its nice dynpro and i see all in my XD02 transaction.
Now, i've to implement the logic for SET and GET data in the custom dynpro.
For getting the data i'm using DYNP_VALUES_READ FM and it works great.
i implemented also SET method with DYNP_VALUES_UPDATE FM and, dumbly enough, i thought it would works. WRONG! Data are not displayed at all.
In a previous implementation i used some ZSET.. and ZGET... function in the same function group of our dynpro but since BAdI are Object Oriented i was trying to avoid it.
Any suggestion?
A snippet of my code
class ZCL_IM_ADD_DATA_CS (for badi CUSTOMER_ADD_DATA_CS)
Method GET_DATA (and it works)
DATA: lt_dynvals TYPE dynpread_tabtype,
ls_dynvals TYPE dynpread.
CLEAR: ls_dynvals, lt_dynvals[], e_value.
ls_dynvals-fieldname = 'KNVV-ZZCUST1'.
APPEND ls_dynvals TO lt_dynvals.
CALL FUNCTION 'DYNP_VALUES_READ'
EXPORTING
dyname = 'SAPLZKNVV'
dynumb = '0900'
TABLES
dynpfields = lt_dynvals
EXCEPTIONS
invalid_abapworkarea = 1
invalid_dynprofield = 2
invalid_dynproname = 3
invalid_dynpronummer = 4
invalid_request = 5
no_fielddescription = 6
invalid_parameter = 7
undefind_error = 8
double_conversion = 9
stepl_not_found = 10
OTHERS = 11.
IF sy-subrc <> 0.
ENDIF.
CLEAR ls_dynvals.
READ TABLE lt_dynvals INTO ls_dynvals WITH KEY fieldname = i_field.
IF sy-subrc = 0.SHIFT ls_dynvals-fieldvalue LEFT DELETING LEADING space.
s_knvv-zzcust1 = ls_dynvals-fieldvalue
ENDIF.
Method SET_DATA (and NOT works)
DATA: lt_dynvals TYPE dynpread_tabtype,
ls_dynvals TYPE dynpread.
CLEAR: ls_dynvals, lt_dynvals[], e_value.
ls_dynvals-fieldname = 'KNVV-ZZCUST1'.ls_dynvals-fieldvalue = s_knvv-zzcust1
APPEND ls_dynvals TO lt_dynvals.
CALL FUNCTION 'DYNP_VALUES_UPDATE'
EXPORTING
dyname = 'SAPLZKNVV'
dynumb = '0900'
TABLES
dynpfields = lt_dynvals
EXCEPTIONS
invalid_abapworkarea = 1
invalid_dynprofield = 2
invalid_dynproname = 3
invalid_dynpronummer = 4
invalid_request = 5
no_fielddescription = 6
undefind_error = 7
OTHERS = 8.
IF sy-subrc <> 0.
ENDIF.
Any suggestion?