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: 

How to create a f4 help using function module.

Former Member
0 Kudos

Hi,

I want to create an f4 help with out using match code objects.How can i do it ? . Is there any function code for it ?.

1 ACCEPTED SOLUTION

Former Member

Hi,

Can you search with F4IF_INT*

I think there are two function module like F4IF_INT_FIELD_VALUE_REQUEST is for directly assing values to a field.

Another one F4IF_INT_TABLE_VALUE_REQUEST to get f4 help values from a data base table.

8 REPLIES 8

I355602
Advisor
Advisor
0 Kudos

Hi,

Please search on SCN before posting...

Refer FM F4IF_INT_TABLE_VALUE_REQUEST

Refer this demo code to get a S.help for BELNR based on user input for BUKRS:-


PARAMETERS : p_belnr TYPE belnr,
             p_bukrs TYPE bukrs.
 
DATA : BEGIN OF itab OCCURS 0,
         belnr TYPE belnr,
       END OF itab.
 
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_belnr.
 
  PERFORM f4_belnr_help USING p_belnr.
 
*&---------------------------------------------------------------------*
*&      Form  f4_belnr_help
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->P_BELNR text
*----------------------------------------------------------------------*
FORM f4_belnr_help USING p_belnr.
 
  DATA : itab TYPE STANDARD TABLE OF it WITH HEADER LINE,
         tb_dynpfields LIKE dynpread OCCURS 0 WITH HEADER LINE,
         v_bukrs TYPE bukrs.
 
  CLEAR:   tb_dynpfields.
  REFRESH: tb_dynpfields.
 
  MOVE 'P_BUKRS' TO tb_dynpfields-fieldname.
  APPEND tb_dynpfields.
 
  CALL FUNCTION 'DYNP_VALUES_READ'
    EXPORTING
      dyname                               = 'Z_F4' "program name
      dynumb                               = '1000' "screen number
    TABLES
      dynpfields                           = tb_dynpfields
    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.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
           WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  ENDIF.
 
  READ TABLE tb_dynpfields INDEX 1.
  IF sy-subrc EQ 0.
    v_bukrs = tb_dynpfields-fieldvalue.
  ENDIF.
 
  SELECT belnr from <db_table> INTO TABLE itab WHERE bukrs = v_bukrs.
  CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
    EXPORTING
      retfield               = 'BELNR' "internal table field
      dynpprog               = 'Z_F4' "program name
      dynpnr                 = '1000' "screen number
      dynprofield            = 'P_BELNR' "screen field name
      value_org              = 'S'
    TABLES
      value_tab              = itab "internal table
    EXCEPTIONS
      PARAMETER_ERROR        = 1
      NO_VALUES_FOUND        = 2
      OTHERS                 = 3.
 
  IF sy-subrc  0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  ENDIF.
 
ENDFORM.                    " f4_belnr_help

Hope this helps you.

Regards,

Tarun

Edited by: Tarun Gambhir on Mar 26, 2009 11:29 AM

Mohamed_Mukhtar
Active Contributor
0 Kudos

hi,

Below pseudo code is F4 help.

DATA : fld(18).
SELECT-OPTIONS s_matnr FOR fld.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR s_matnr-low.
  PERFORM f_f4help.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR s_matnr-high.
 PERFORM f_f4help.

*&---------------------------------------------------------------------*
*&      Form  f_f4help
*&---------------------------------------------------------------------*
*       text
FORM f_f4help .
DATA : BEGIN OF it_itab OCCURS 1,
         matnr TYPE mara-matnr,
         meins TYPE mara-meins,
         END OF it_itab.

  SELECT matnr
         meins FROM mara INTO TABLE it_itab UP TO 10 ROWS.

  CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
    EXPORTING
      retfield        = 'MATNR'
      dynpprog        = sy-repid
      dynpnr          = sy-dynnr
      dynprofield     = 'S_MATNR'
      value_org       = 'S'
    TABLES
      value_tab       = it_itab[]
    EXCEPTIONS
      parameter_error = 1
      no_values_found = 2
      OTHERS          = 3.
  IF sy-subrc <> 0.
*   MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*           WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  ENDIF.

Thanks & Regards

0 Kudos

I need to get first value(matnr) but second value(meins) only fetching in selection screen parameter..!!

kindly help me to get first value from f4 help window.,

Thank you..

0 Kudos

Hi there,

You have a question and need help by the community? Instead of posting into an old question thread, it is more helpful for you, if you create your own question. Here is how to get started:

  1. Learn about asking and answering questions in SAP Community with this tutorial: https://developers.sap.com/tutorials/community-qa.html
  2. Ask your detailed question here: https://answers.sap.com/questions/ask.html
  3. Wait for a response.

That's it. Thank you!

Best regards

Jennifer

Your SAP Community moderator

Former Member
0 Kudos

Hi,

Check this FM ..

SELECT-OPTIONS : s_year  FOR tfacd-vjahr NO INTERVALS OBLIGATORY.
 
AT SELECTION-SCREEN ON VALUE-REQUEST FOR s_year-low.
  PERFORM f4_year CHANGING s_year-low.
 
AT SELECTION-SCREEN ON VALUE-REQUEST FOR s_year-high.
  PERFORM f4_year CHANGING s_year-high.
 
FORM f4_year CHANGING p_year TYPE any.
 
  DATA:
    lt_select_values  LIKE STANDARD TABLE OF ddshretval,
    l_select_values  LIKE  ddshretval.
 
  CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
    EXPORTING
      retfield        = 'VJAHR'
      dynpprog        = sy-repid
      dynpnr          = sy-dynnr
      window_title    = 'Year'                              "#EC NOTEXT
      value_org       = 'S'
    TABLES
      value_tab       = i_year_tab
      return_tab      = lt_select_values
    EXCEPTIONS
      parameter_error = 1
      no_values_found = 2
      OTHERS          = 3.
  IF sy-subrc EQ 0.
    CLEAR l_select_values.
    READ TABLE lt_select_values INTO l_select_values INDEX 1.
    IF sy-subrc EQ 0.
      p_year = l_select_values-fieldval.
    ENDIF.
  ENDIF.
 
ENDFORM.                                                    " F4_YEAR

Former Member

Hi,

Can you search with F4IF_INT*

I think there are two function module like F4IF_INT_FIELD_VALUE_REQUEST is for directly assing values to a field.

Another one F4IF_INT_TABLE_VALUE_REQUEST to get f4 help values from a data base table.

Former Member
0 Kudos

Hi,

You can also try to use FM 'F4_FIELD_ON_VALUE_REQUEST'.

Former Member
0 Kudos

hi,

thanks for your response my problem is solved.