Application Development and Automation 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: 
Read only

Populate value in parameter

former_member226419
Contributor
0 Likes
1,585

Hi Gurus,

I have one functionality, there are 2 parameters,when user click F4 search help on 1st parameter , automatically value should be populated in other parameter.

But in my case once I get the value from search help, after pressing enter it is populating value in other parameter.

But I need to populate automatic without entering parameter.

Below is my sample code.

TYPE-POOLS: slis.

TABLES: mara.

TYPES: BEGIN OF t_makt,

        matnr TYPE matnr,

        END OF t_makt.

PARAMETER: p_matnr TYPE makt-matnr,

            p_maktx TYPE makt-maktx." MODIF ID GR1.

DATA: lt_makt TYPE STANDARD TABLE OF t_makt,

       lwa_makt TYPE t_makt.

DATA lt_return LIKE ddshretval OCCURS 0 WITH HEADER LINE .

AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_matnr.

   SELECT matnr FROM mara INTO TABLE lt_makt UP TO 200 ROWS.

   CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'

     EXPORTING

*     DDIC_STRUCTURE         = ' '

       retfield               =  'MATNR'

      value_org               = 'S'

     TABLES

       value_tab              = lt_makt

*      field_tab               = lt_return

     return_tab               = lt_return.

   p_matnr = lt_return-fieldval.

*at SELECTION-SCREEN o

* AT SELECTION-SCREEN ON p_maktx.

   LOOP AT SCREEN.

     IF p_matnr = '10000' AND screen-name = 'P_MAKTX'.

       p_maktx = 'ABC'.

     ENDIF.

     MODIFY SCREEN.

   ENDLOOP.

1 ACCEPTED SOLUTION
Read only

Former Member
0 Likes
1,230

Try this,.

   SELECT matnr FROM mara INTO TABLE lt_makt UP TO 200 ROWS.

   CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'

     EXPORTING

*     DDIC_STRUCTURE         = ' '

       retfield               =  'MATNR'

      value_org               = 'S'

     TABLES

       value_tab              = lt_makt

*      field_tab               = lt_return

     return_tab               = lt_return.

   p_matnr = lt_return-fieldval.

* Populate the other field here itself and call FM to update screen 

  IF p_matnr = '10000' .

       p_maktx = 'ABC'.

     ENDIF.

Check this code.

SELECT matnr FROM mara INTO TABLE lt_makt UP TO 200 ROWS.
    CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
      EXPORTING
*     DDIC_STRUCTURE         = ' '
        retfield               =  'MATNR'
       value_org               = 'S'
      TABLES
        value_tab              = lt_makt
*      field_tab               = lt_return
      return_tab               = lt_return.

     p_matnr = lt_return-fieldval.


   data wa_makt type makt.

   data  : lt_dynpread TYPE STANDARD TABLE OF dynpread,
              ls_dynpread TYPE dynpread.

* Get the value for desc.

CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
   EXPORTING
     input         = p_matnr
  IMPORTING
    OUTPUT        = p_matnr
           .
     select singlefrom makt into wa_makt where matnr = p_matnr and spras = sy-langu.
     p_maktx = wa_makt-maktx.
      
*Update it in field.

ls_dynpread-fieldname  = 'P_MAKTX'..
ls_dynpread-fieldvalue = wa_makt-maktx.
APPEND ls_dynpread TO lt_dynpread.
         CALL FUNCTION 'DYNP_VALUES_UPDATE'
           EXPORTING
              dyname                     = sy-cprog     " prog id
              dynumb                     = sy-dynnr     " screen no
            TABLES
              dynpfields                 = lt_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.

5 REPLIES 5
Read only

Former Member
0 Likes
1,230

Hi Sumeet,

I think you are harcoding the values here which is wrong. You need to use a combination of DYNP_VALUES_READ and F4IF_INT_TABLE_VALUE_REQUEST.

BR.

Read only

0 Likes
1,230

Hi

Try like this

TYPE-POOLS: slis.
TABLES: mara.

TYPES: BEGIN OF t_makt,
         matnr TYPE matnr,
         END OF t_makt.

PARAMETER: p_matnr TYPE makt-matnr,
            p_maktx TYPE makt-maktx.

DATA: lt_makt TYPE STANDARD TABLE OF t_makt,
       lwa_makt TYPE t_makt.

DATA   dyfields LIKE dynpread OCCURS 1 WITH HEADER LINE.
DATA lt_return LIKE ddshretval OCCURS 0 WITH HEADER LINE .

AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_matnr.

   SELECT matnr FROM mara INTO TABLE lt_makt UP TO 200 ROWS.

   CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
     EXPORTING
*     DDIC_STRUCTURE         = ' '
       retfield               'MATNR'
      value_org               = 'S'
     TABLES
       value_tab              = lt_makt
*      field_tab               = lt_return
     return_tab               = lt_return.
   p_matnr = lt_return-fieldval.

   CLEAR: dyfields[], dyfields.
***--- select Material
*  CALL FUNCTION 'HELP_VALUES_GET'
*    EXPORTING
*      fieldname    = 'MATNR'
*      tabname      = 'MAKT'
*    IMPORTING
*      select_value = p_matnr.

   CALL FUNCTION 'CONVERSION_EXIT_MATN1_INPUT'
     EXPORTING
       input              = p_matnr
    IMPORTING
      output             = p_matnr
* EXCEPTIONS
*   LENGTH_ERROR       = 1
*   OTHERS             = 2
             .
   IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
   ENDIF.

*--- get long text for the selected material
   SELECT SINGLE maktx FROM makt
     INTO dyfields-fieldvalue
     WHERE spras = sy-langu
     AND   matnr = p_matnr.
   IF sy-subrc <> 0.
     CLEAR dyfields-fieldvalue.
   ENDIF.
*--- update another field
   dyfields-fieldname = 'P_MAKTX'.
   APPEND dyfields.
   CALL FUNCTION 'DYNP_VALUES_UPDATE'
     EXPORTING
       dyname     = sy-cprog
       dynumb     = sy-dynnr
     TABLES
       dynpfields = dyfields.

Read only

former_member220538
Active Participant
0 Likes
1,230

Hi,

In the FM F4IF_INT_TABLE_VALUE_REQUEST pass the field_tab,value_tab and dynprofield_mapping.

Field_tab is an internal table of type dfies which is used for displaying fields on search help.append required tabname and fieldname to it.

Dynprofield_mapping is an internal table of type dselc used for mapping the values to the fields,append the required  fldname and dyfldname to it.

DATA: t_itab TYPE STANDARD TABLE OF sflight.

DATA :dd TYPE TABLE OF dselc WITH HEADER LINE,

          ft TYPE TABLE OF dfies WITH HEADER LINE.

SELECTION-SCREEN BEGIN OF BLOCK b.

PARAMETERS : p_conn TYPE S_CONN_ID ,

             p_car TYPE S_CARR_ID,

             p_dte TYPE S_DATE.

SELECTION-SCREEN END OF BLOCK b.

"Attaching Search Help

AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_conn.

  IF t_itab IS INITIAL.

    SELECT *

    FROM sflight

    INTO TABLE t_itab.

    "Specifing The Populating Fields

    REFRESH dd.

    dd-fldname = 'CARRID'.

    dd-dyfldname = 'P_CAR'.

    APPEND dd.

    dd-fldname = 'FLDATE'.

    dd-dyfldname = 'P_DTE'.

    APPEND dd.

    "Specifing Fields Dispayed on Search Help

    REFRESH ft.

    ft-tabname = 'SFLIGHT'.

    ft-fieldname = 'CARRID'.

    APPEND ft.

    ft-tabname = 'SFLIGHT'.

    ft-fieldname = 'CONNID'.

    APPEND ft.

  ENDIF.

  "Displaying Search Help

  CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'

    EXPORTING

      retfield        = 'CONNID'

      dynpprog        = sy-repid

      dynpnr          = sy-dynnr

      dynprofield     = 'P_CONN'

      value_org       = 'S'

    TABLES

      field_tab       = ft

      value_tab       = t_itab

      dynpfld_mapping = dd

    EXCEPTIONS

      parameter_error = 1

      no_values_found = 2

      OTHERS          = 3.

Regards,

Jeffin

Read only

Former Member
0 Likes
1,231

Try this,.

   SELECT matnr FROM mara INTO TABLE lt_makt UP TO 200 ROWS.

   CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'

     EXPORTING

*     DDIC_STRUCTURE         = ' '

       retfield               =  'MATNR'

      value_org               = 'S'

     TABLES

       value_tab              = lt_makt

*      field_tab               = lt_return

     return_tab               = lt_return.

   p_matnr = lt_return-fieldval.

* Populate the other field here itself and call FM to update screen 

  IF p_matnr = '10000' .

       p_maktx = 'ABC'.

     ENDIF.

Check this code.

SELECT matnr FROM mara INTO TABLE lt_makt UP TO 200 ROWS.
    CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
      EXPORTING
*     DDIC_STRUCTURE         = ' '
        retfield               =  'MATNR'
       value_org               = 'S'
      TABLES
        value_tab              = lt_makt
*      field_tab               = lt_return
      return_tab               = lt_return.

     p_matnr = lt_return-fieldval.


   data wa_makt type makt.

   data  : lt_dynpread TYPE STANDARD TABLE OF dynpread,
              ls_dynpread TYPE dynpread.

* Get the value for desc.

CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
   EXPORTING
     input         = p_matnr
  IMPORTING
    OUTPUT        = p_matnr
           .
     select singlefrom makt into wa_makt where matnr = p_matnr and spras = sy-langu.
     p_maktx = wa_makt-maktx.
      
*Update it in field.

ls_dynpread-fieldname  = 'P_MAKTX'..
ls_dynpread-fieldvalue = wa_makt-maktx.
APPEND ls_dynpread TO lt_dynpread.
         CALL FUNCTION 'DYNP_VALUES_UPDATE'
           EXPORTING
              dyname                     = sy-cprog     " prog id
              dynumb                     = sy-dynnr     " screen no
            TABLES
              dynpfields                 = lt_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.

Read only

nabheetscn
SAP Champion
SAP Champion
0 Likes
1,230

Hi Sumeet

Do as follow. Once your F4 help function module is called and it has returned value. Call FM DYNPRO_VALUE_UPDATE to update the other screen field

Nabheet