Application Development Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 

Badi on Customer master data - Set/get values in new dynpro

SimoneMilesi
Active Contributor
0 Kudos

   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?

1 REPLY 1

SimoneMilesi
Active Contributor
0 Kudos

After 4hrs of tries, i switched to "old" method