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: 

Screen Fields Not getting Updated with DYNP_VALUES_UPDATE

Former Member
0 Kudos

Hi All,

I am using FM DYNP_VALUES_READ to read the screen field values and then modifying those values and passing the modified table to DYNP_VALUES_UPDATE. But the problem is screen fields are not populated with these values . The values I wish to populate are footer values . I am using OO ALV for this wherein I am handling an event for filter of records and accordingly I need to modify my footer. Any Suggestions??

&----


*& Form footer

&----


  • Caslculate Total items, number of hits/Miss and percent MSP

----


  • --> p1 text

  • <-- p2 text

----


FORM footer .

CLEAR : io_totitems,

io_tothit,

io_totmiss,

io_permiss.

  • IF NOT l_flag EQ 1.

  • Get total items

DESCRIBE TABLE i_outdata LINES io_totitems.

LOOP AT i_outdata INTO wa_outdata.

  • calculate number of hits

IF wa_outdata-hit_miss = 'HIT'.

io_tothit = io_tothit + 1.

ENDIF.

  • calculate number of Miss

IF wa_outdata-hit_miss = 'MISS'.

io_totmiss = io_totmiss + 1.

ENDIF.

CLEAR wa_outdata.

ENDLOOP.

  • calculate percent MSP

io_permiss = ( ( io_totitems - io_totmiss ) / io_totitems ) * 100 .

IF l_flag EQ 1.

wa_dynpread-fieldname = 'IO_TOTITEMS'.

APPEND wa_dynpread TO t_dynpread.

wa_dynpread-fieldname = 'IO_TOTHIT'.

APPEND wa_dynpread TO t_dynpread.

wa_dynpread-fieldname = 'IO_TOTMISS'.

APPEND wa_dynpread TO t_dynpread.

wa_dynpread-fieldname = 'IO_PERMISS'.

APPEND wa_dynpread TO t_dynpread.

CLEAR wa_dynpread.

d020s-prog = sy-repid.

d020s-dnum = sy-dynnr.

CALL FUNCTION 'DYNP_VALUES_READ'

EXPORTING

dyname = d020s-prog

dynumb = d020s-dnum

translate_to_upper = 'X'

  • REQUEST = ' '

TABLES

dynpfields = t_dynpread.

MOVE io_totitems TO io_totitem.

CONDENSE io_totitem NO-GAPS.

MOVE io_tothit TO io_tothits.

CONDENSE io_tothits NO-GAPS.

MOVE io_totmiss TO io_totmis.

CONDENSE io_totmis NO-GAPS.

MOVE io_permiss TO io_permis.

CONDENSE io_permis NO-GAPS.

LOOP AT t_dynpread INTO wa_dynpread.

CASE: wa_dynpread-fieldname.

WHEN 'IO_TOTITEMS'.

wa_dynpread-fieldvalue = io_totitem .

MODIFY t_dynpread FROM wa_dynpread.

WHEN 'IO_TOTHIT'.

wa_dynpread-fieldvalue = io_tothits.

MODIFY t_dynpread FROM wa_dynpread.

WHEN 'IO_TOTMISS'.

wa_dynpread-fieldvalue = io_totmis.

MODIFY t_dynpread FROM wa_dynpread.

WHEN 'IO_PERMISS'.

wa_dynpread-fieldvalue = io_permis .

MODIFY t_dynpread FROM wa_dynpread.

ENDCASE.

CLEAR wa_dynpread.

ENDLOOP.

CALL FUNCTION 'DYNP_VALUES_UPDATE'

EXPORTING

dyname = d020s-prog

dynumb = d020s-dnum

TABLES

dynpfields = t_dynpread

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.

MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno

WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.

ENDIF.

ENDIF.

*

  • Get all fotter details in a internal table

  • this is used to download footer in Excel

wa_footer-fldname = 'Total Items '.

wa_footer-value = io_totitems.

APPEND wa_footer TO i_footer.

wa_footer-fldname = 'Number of HIT'.

wa_footer-value = io_tothit.

APPEND wa_footer TO i_footer.

wa_footer-fldname = 'Number of MISS'.

wa_footer-value = io_totmiss.

APPEND wa_footer TO i_footer.

wa_footer-fldname = 'Percentage MISS '.

wa_footer-value = io_permiss.

APPEND wa_footer TO i_footer.

CLEAR wa_footer.

ENDFORM. " footer

8 REPLIES 8

Former Member
0 Kudos

1.check one

LOOP AT t_dynpread INTO wa_dynpread.
CASE: wa_dynpread-fieldname.
WHEN 'IO_TOTITEMS'.
wa_dynpread-fieldvalue =  '12'."io_totitem .
MODIFY t_dynpread FROM wa_dynpread.
WHEN 'IO_TOTHIT'.
wa_dynpread-fieldvalue =   '13'."io_tothits.
MODIFY t_dynpread FROM wa_dynpread.
WHEN 'IO_TOTMISS'.
wa_dynpread-fieldvalue =  '20'   . "io_totmis.
MODIFY t_dynpread FROM wa_dynpread.
WHEN 'IO_PERMISS'.
wa_dynpread-fieldvalue =  '32'."io_permis .
MODIFY t_dynpread FROM wa_dynpread.
ENDCASE.
CLEAR wa_dynpread.
ENDLOOP.

Pass some hard quoted values for check here and see in debugging all the fields are present in t_dynpread.

2.

CALL FUNCTION 'DYNP_VALUES_UPDATE'

EXPORTING

dyname = sy-cprog

dynumb = sy-dynnr

TABLES

dynpfields = t_dynpread

check these .

regards,

vijay

0 Kudos

Hi Vijay,

I have debugged the program and the values are getting stored in the table.

0 Kudos

Did you perform check 2 .

please use sy-cprog instead of sy-repid for this fm.

Cause i see no problem with the code .

regards,

vijay

0 Kudos

I tried the same but its not working

Former Member
0 Kudos

Refer this code sample

AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_path.

  DATA : i_scrfields  LIKE  dynpread OCCURS 1 WITH HEADER LINE.

  DATA : v_prog  LIKE  sy-repid.

  i_scrfields-fieldname = 'P_DLOAD'.
  APPEND i_scrfields.

  v_prog = sy-repid.

  CALL FUNCTION 'DYNP_VALUES_READ'
       EXPORTING
            dyname               = v_prog
            dynumb               = sy-dynnr
       TABLES
            dynpfields           = i_scrfields
       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.

  CASE sy-subrc.
    WHEN OTHERS.
  ENDCASE.

  READ TABLE i_scrfields INDEX 1.

Former Member
0 Kudos

data: t_dynfields1 type table of dynpread with header line.

CALL FUNCTION 'DYNP_VALUES_READ'

EXPORTING

dyname = d020s-prog

dynumb = d020s-dnum

translate_to_upper = 'X'

  • REQUEST = ' '

TABLES

dynpfields = t_dynfields1.

<b>read table t_dynfields1 index 1</b> “ I hope this is missing

I will be selecting from a list .

Because once the value is read we need to update the screen field with that value .

Here the selected value will be in the first place

Now

Your operation is to populate the fields with some variables .

In the same when I do this there is only one value then

Im expecting only one entry here …

/*

LOOP AT t_dynpread INTO wa_dynpread.

CASE: wa_dynpread-fieldname.

WHEN 'IO_TOTITEMS'.

wa_dynpread-fieldvalue = io_totitem .

MODIFY t_dynpread FROM wa_dynpread.

WHEN 'IO_TOTHIT'.

wa_dynpread-fieldvalue = io_tothits.

MODIFY t_dynpread FROM wa_dynpread.

WHEN 'IO_TOTMISS'.

wa_dynpread-fieldvalue = io_totmis.

MODIFY t_dynpread FROM wa_dynpread.

WHEN 'IO_PERMISS'.

wa_dynpread-fieldvalue = io_permis .

MODIFY t_dynpread FROM wa_dynpread.

ENDCASE.

CLEAR wa_dynpread.

ENDLOOP. */

Comment this for a while and

Change the code as

t_dynfields1-fieldname = ' '. "<--- header name

t_dynfields1-fieldvalue = ' '."<----val

append t_dynfields1.

t_dynfields1-fieldname = ' '.

t_dynfields1-fieldvalue = ' '.

append t_dynfields1.

t_dynfields1-fieldname = ' '.

t_dynfields1-fieldvalue = ' '.

append t_dynfields1.

And check .

CALL FUNCTION 'DYNP_VALUES_UPDATE'

EXPORTING

dyname = d020s-prog

dynumb = d020s-dnum

TABLES

dynpfields = t_dynfields1.

regards,

vijay

0 Kudos

Hi Vijay,

I changed the code according to your code but still the value is not getting updated

Former Member
0 Kudos

Hi,

Try using 'DYNP_UPDATE_FIELDS' function module instead of 'DYNP_VALUES_UPDATE' function module to update the screen fields.. Its working

Regards,

Dhana