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: 

F4 help issue

former_member821147
Participant
0 Kudos

Hi All,

I have below issue:

there are two fields on the selection screen p_matnr & p_mtart

when i selected f4 help for p_matnr  then corresponding value will be populate on p_mtart without pressing ENTER or any input action.

Thanks in advance,

Pradeep

3 REPLIES 3

Former Member
0 Kudos

Hi Pradeep,

  You have to use the FM 'DYNP_VALUES_UPDATE' to update the selection-screen parameter values dynamically without triggering POB event. Means that, when you call F4 on MATNR and returned with selection of perticular material number, then u can read the MTART and update the screen field P_MTART with the derived value using the above FM.

Hope this helps...

Best Regards

VS Naidu.

gouravkumar64
Active Contributor
0 Kudos

Hi,

In one of my program i have done that by this way,

DATA : it_return1 LIKE ddshretval OCCURS 0 WITH HEADER LINE,
        it_return2 LIKE ddshretval OCCURS 0 WITH HEADER LINE.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_id.
   PERFORM show_f4_help.

*&---------------------------------------------------------------------*
*&      Form  SHOW_F4_HELP
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM show_f4_help .

   DATA: BEGIN OF it_person_id OCCURS 0,
               person_id TYPE t7ehs00_mappernr-person_id,
END OF it_person_id.

   DATA : wa_person_id LIKE LINE OF it_person_id.

   SELECT DISTINCT person_id FROM t7ehs00_mappernr
     INTO CORRESPONDING FIELDS OF TABLE it_person_id.

   CLEAR it_person_id .

   SORT it_person_id BY person_id.

   CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
     EXPORTING
       retfield        = 'P_ID'
       dynpprog        = sy-cprog
       dynpnr          = sy-dynnr
       dynprofield     = 'P_ID'
       value_org       = 'S'
       display         = 'F'
     TABLES
       value_tab       = it_person_id
*     FIELD_TAB       =
       return_tab      = it_return1
*     DYNPFLD_MAPPING =
     EXCEPTIONS
       parameter_error = 1
       no_values_found = 2
       OTHERS          = 3.
   IF sy-subrc <> 0.
* Implement suitable error handling here
   ENDIF.
   p_id = it_return1-fieldval.

ENDFORM.                    " SHOW_F4_HELP



AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_number.
   PERFORM show_f4_help1.

*&---------------------------------------------------------------------*
*&      Form  SHOW_F4_HELP1
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM show_f4_help1 .

   DATA : BEGIN OF it_srv_number OCCURS 0,
                srv_number TYPE t7ehs00_service-srv_number,
   END OF it_srv_number.

   DATA: it_srv_number1 LIKE TABLE OF it_srv_number.

   DATA: BEGIN OF it_intpernr OCCURS 0,
                 intpernr TYPE t7ehs00_mappernr-intpernr,
                 person_id TYPE t7ehs00_mappernr-person_id,
   END OF it_intpernr.

   DATA : wa_intpernr LIKE LINE OF it_intpernr.
   DATA : lv_fieldvalue TYPE dynfieldvalue,
         lwa_dynpread TYPE dynpread,
         lt_dynpread TYPE TABLE OF dynpread.

   lwa_dynpread-fieldname = 'FORMO'.

   APPEND lwa_dynpread TO lt_dynpread.

   lwa_dynpread-fieldname = 'VISION'.
   APPEND lwa_dynpread TO lt_dynpread.

   lwa_dynpread-fieldname = 'STOOL'.
   APPEND lwa_dynpread TO lt_dynpread.

   lwa_dynpread-fieldname = 'P_ID'.
   APPEND lwa_dynpread TO lt_dynpread.

   CALL FUNCTION 'DYNP_VALUES_READ'
     EXPORTING
       dyname               = sy-repid
       dynumb               = sy-dynnr
     TABLES
       dynpfields           = lt_dynpread
     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 IS INITIAL.
     CLEAR : lwa_dynpread.
     READ TABLE lt_dynpread INTO lwa_dynpread WITH KEY fieldname = 'P_ID'.
     p_id = lwa_dynpread-fieldvalue.

     READ TABLE lt_dynpread INTO lwa_dynpread WITH KEY fieldname = 'FORMO'.
     formo = lwa_dynpread-fieldvalue.
     IF formo NE 'X'.
       READ TABLE lt_dynpread INTO lwa_dynpread WITH KEY fieldname = 'VISION'.
       vision = lwa_dynpread-fieldvalue.
       IF vision NE 'X'.
         READ TABLE lt_dynpread INTO lwa_dynpread WITH KEY fieldname = 'STOOL'.
         stool = lwa_dynpread-fieldvalue.
       ENDIF.
     ENDIF.
   ENDIF.

U can try like this

Regards

Gourav.

former_member212854
Participant
0 Kudos

Hi Pradeep,

Try this code...

   DATA: lt_dselc TYPE STANDARD TABLE OF dselc,
      ls_dselc TYPE dselc.

DATA: lt_returntab   TYPE TABLE OF ddshretval,
      ls_returntab TYPE ddshretval.

TYPES:BEGIN OF ty_mara,
      matnr TYPE mara-matnr,
      mtart TYPE mara-mtart,
      END OF ty_mara.

TYPES: tt_mara TYPE STANDARD TABLE OF ty_mara.

DATA: lt_mara TYPE tt_mara,
      ls_mara TYPE ty_mara.

PARAMETERS: p_matnr TYPE mara-matnr,
            p_mtart TYPE mara-mtart.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_matnr.

  CLEAR lt_dselc[].
  ls_dselc-fldname   = 'F0002'.
  ls_dselc-dyfldname = 'P_MTART'.
  APPEND ls_dselc TO lt_dselc.
  CLEAR ls_dselc.

  DATA: lwa_dynpread TYPE dynpread,
        lt_dynpread TYPE TABLE OF dynpread.

  lwa_dynpread-fieldname = 'P_MATNR'.
  APPEND lwa_dynpread TO lt_dynpread.

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

  READ TABLE lt_dynpread INTO lwa_dynpread INDEX 1.

  CONCATENATE '%' lwa_dynpread-FIELDVALUE '%' INTO p_matnr.

  SELECT * FROM mara INTO CORRESPONDING FIELDS OF TABLE lt_mara WHERE matnr LIKE p_matnr.

  CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
    EXPORTING
      retfield        = 'MATNR'
      dynpprog        = sy-repid
      dynpnr          = sy-dynnr
      dynprofield     = 'P_MATNR'"QC_PARENT'
      value_org       = 'S'
    TABLES
      value_tab       = lt_mara
      return_tab      = lt_returntab
      dynpfld_mapping = lt_dselc
    EXCEPTIONS
      parameter_error = 1
      no_values_found = 2
      OTHERS          = 3.

  READ TABLE lt_returntab INTO ls_returntab INDEX 1.

  IF sy-subrc = 0.

    READ TABLE lt_mara INTO ls_mara WITH KEY matnr = ls_returntab-fieldval.

    p_mtart = ls_mara-mtart.
  ENDIF.