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

f4 HELP

Former Member
0 Likes
1,191

HI,

i have table of employee name and number and i wont to

do in screen that when user push f4 in name it open

all the names that i have in the table emp_tab

i new in this topic

what is the best way to do that?

this is my code

Regards

<REMOVED BY MODERATOR>

TYPES: BEGIN OF 1_tab,

pernr TYPE pernr_d,

nachn TYPE pad_nachn,

vorna TYPE pad_vorna,

END OF 1_tab.

DATA: emp_tab TYPE TABLE OF 1_tab WITH HEADER LINE.

SELECT-OPTIONS: fir_name FOR emp_tab-vorna.

SELECT *
FROM pa0002
INTO CORRESPONDING FIELDS OF TABLE  emp_tab
WHERE begda LE sy-datum
AND endda GE sy-datum.

Edited by: Alvaro Tejada Galindo on Feb 18, 2008 2:16 PM

1 ACCEPTED SOLUTION
Read only

Former Member
0 Likes
1,173

Hi,

Im not getting ur exact req.........but this code might help...

PARAMETERS : p_state TYPE char20,
             p_city  TYPE char18.

DATA       : BEGIN   OF   t_state OCCURS 0,
             state   TYPE char20,
             END     OF   t_state,
             BEGIN   OF   t_city  OCCURS 0,
             city    TYPE char18,
             END     OF   t_city.

DATA       : r_state TYPE TABLE OF ddshretval WITH HEADER LINE.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_state.
  REFRESH t_state.
  APPEND 'Tamil nadu' TO t_state.
  APPEND 'Kerala'     TO t_state.

  CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
    EXPORTING
      retfield        = 'STATE'
      dynpprog        = sy-repid
      dynpnr          = '1000'
      dynprofield     = 'P_STATE'
      window_title    = 'State'
      value_org       = 'S'
    TABLES
      value_tab       = t_state[]
      RETURN_TAB      = r_state[]
    EXCEPTIONS
      parameter_error = 1
      no_values_found = 2
      OTHERS          = 3.
  IF sy-subrc <> 0.
  ENDIF.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_city.
  REFRESH t_city.
  LOOP AT r_state.
    CASE    r_state-fieldval.
      WHEN  'TAMIL NADU'.
        APPEND 'Chennai'    TO t_city.
        APPEND 'Madurai'    TO t_city.
      WHEN  'KERALA'.
        APPEND 'Trivandrum' TO t_city.
        APPEND 'Kochi'      TO t_city.
    ENDCASE.
  ENDLOOP.

  CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
    EXPORTING
      retfield        = 'CITY'
      dynpprog        = sy-repid
      dynpnr          = '1000'
      dynprofield     = 'P_CITY'
      window_title    = 'City'
      value_org       = 'S'
    TABLES
      value_tab       = t_city[]
    EXCEPTIONS
      parameter_error = 1
      no_values_found = 2
      OTHERS          = 3.
  IF sy-subrc <> 0.
  ENDIF.

Cheers,

jose.

10 REPLIES 10
Read only

Former Member
0 Likes
1,173

Hello,

Make use of the FM F4IF_INT_TABLE_VALUE_REQUEST


" Sample code
REPORT ZV_F4_TABLE .
PARAMETERS P_TABLE LIKE DD02T-TABNAME." occurs 0 with header line.
DATA: ITAB LIKE  DD02T OCCURS 0 WITH HEADER LINE.

AT SELECTION-SCREEN ON P_TABLE.

  SELECT * FROM DD02T INTO TABLE ITAB

  WHERE TABNAME LIKE 'Z*'.

  CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
    EXPORTING
*     DDIC_STRUCTURE         = ' '
      RETFIELD               = 'TABNAME'
*     PVALKEY                = ' '
     DYNPPROG               = 'ZV_F4_TABLE'
     DYNPNR                 = '1000'
     DYNPROFIELD            = 'P_MATNR'
*     STEPL                  = 0
*     WINDOW_TITLE           =
*     VALUE                  = ' '
*     VALUE_ORG              = 'C'
*     MULTIPLE_CHOICE        = ' '
*     DISPLAY                = ' '
*     CALLBACK_PROGRAM       = ' '
*     CALLBACK_FORM          = ' '
    TABLES
      VALUE_TAB              = ITAB
*     FIELD_TAB              =
*     RETURN_TAB             =
*     DYNPFLD_MAPPING        =
*   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.

Cheers,

Vasanth

Read only

0 Likes
1,173

HI ,

i try like u write but nothing happen.

what i miss?

aT SELECTION-SCREEN ON P_TABLE.

SELECT *
FROM pa0002
INTO CORRESPONDING FIELDS OF TABLE  emp_tab
WHERE begda LE sy-datum
AND endda GE sy-datum.

CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'

EXPORTING
*     DDIC_STRUCTURE         = ' '

RETFIELD               = 'EMP_TAB'
*     PVALKEY                = ' '

DYNPPROG               = 'ZV_F4_TABLE'

DYNPNR                 = '1000'

DYNPROFIELD            = 'P_MATNR'
*     STEPL                  = 0
*     WINDOW_TITLE           =
*     VALUE                  = ' '
*     VALUE_ORG              = 'C'
*     MULTIPLE_CHOICE        = ' '
*     DISPLAY                = ' '
*     CALLBACK_PROGRAM       = ' '
*     CALLBACK_FORM          = ' '

TABLES

VALUE_TAB              = emp_tab
*     FIELD_TAB              =
*     RETURN_TAB             =
*     DYNPFLD_MAPPING        =
*   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.

Read only

0 Likes
1,173

u have used p_matnr in place of ur field name p_table

and 'S' in place of 'C'.

Regards...........

Edited by: Dayakar Chirivella on Feb 18, 2008 12:49 PM

Read only

0 Likes
1,173

Hello,

Change the values like this:


CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'



EXPORTING



*     DDIC_STRUCTURE         = ' '



RETFIELD               = 'EMP_TAB'



*     PVALKEY                = ' '



DYNPPROG               = 'ZV_F4_TABLE'   " Here the report name



DYNPNR                 = '1000'



DYNPROFIELD            = 'P_MATNR'  " Here give your the screen field name


Cheers,

Vasanth

Read only

0 Likes
1,173

hi

thanks

i try like u tell and i check that emp_tab is not empty and i still dont get any data ,

when i push on f4 nothing happen .

what i miss?

this is my new code:

TYPES: BEGIN OF 1_tab,

pernr TYPE pernr_d,

nachn TYPE pad_nachn,

vorna TYPE pad_vorna,

END OF 1_tab.

DATA: emp_tab TYPE TABLE OF 1_tab WITH HEADER LINE.

PARAMETERS P_TABLE LIKE emp_tab." occurs 0 with header line.

SELECT *

FROM pa0002

INTO CORRESPONDING FIELDS OF TABLE emp_tab

WHERE begda LE sy-datum

AND endda GE sy-datum.

CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'

EXPORTING

  • DDIC_STRUCTURE = ' '

RETFIELD = 'EMP_TAB'

  • PVALKEY = ' '

DYNPPROG = 'ZTEST10'

DYNPNR = '1000'

DYNPROFIELD = 'P_TABLE'

  • STEPL = 0

  • WINDOW_TITLE =

  • VALUE = ' '

  • VALUE_ORG = 'C'

  • MULTIPLE_CHOICE = ' '

  • DISPLAY = ' '

  • CALLBACK_PROGRAM = ' '

  • CALLBACK_FORM = ' '

TABLES

VALUE_TAB = emp_tab

  • FIELD_TAB =

  • RETURN_TAB =

  • DYNPFLD_MAPPING =

  • 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.

Read only

0 Likes
1,173

tHIS IS THE CORRECTED CODE...

TYPES: BEGIN OF 1_tab,

pernr TYPE pernr_d,

nachn TYPE pad_nachn,

vorna TYPE pad_vorna,

END OF 1_tab.

DATA: emp_tab TYPE TABLE OF 1_tab WITH HEADER LINE.

PARAMETERS p_table LIKE emp_tab." occurs 0 with header line.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_table.

SELECT *

FROM pa0002

INTO CORRESPONDING FIELDS OF TABLE emp_tab

WHERE begda LE sy-datum

AND endda GE sy-datum.

CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'

EXPORTING

  • DDIC_STRUCTURE = ' '

retfield = 'PERNR'

  • PVALKEY = ' '

dynpprog = 'ZDAYATEST1'

dynpnr = '1000'

dynprofield = 'P_TABLE'

  • STEPL = 0

  • WINDOW_TITLE =

  • VALUE = ' '

value_org = 'S'

  • MULTIPLE_CHOICE = ' '

  • DISPLAY = ' '

  • CALLBACK_PROGRAM = ' '

  • CALLBACK_FORM = ' '

  • MARK_TAB =

  • IMPORTING

  • USER_RESET =

TABLES

value_tab = emp_tab

  • FIELD_TAB =

  • RETURN_TAB =

  • DYNPFLD_MAPPING =

  • 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.

Read only

Former Member
0 Likes
1,173

Hi,

Use the function module F4IF_INT_TABLE_VALUE_REQUEST in the AT SELECTION-SCREEN ON VALUE-REQUEST event

regards,

theja

Read only

Former Member
0 Likes
1,174

Hi,

Im not getting ur exact req.........but this code might help...

PARAMETERS : p_state TYPE char20,
             p_city  TYPE char18.

DATA       : BEGIN   OF   t_state OCCURS 0,
             state   TYPE char20,
             END     OF   t_state,
             BEGIN   OF   t_city  OCCURS 0,
             city    TYPE char18,
             END     OF   t_city.

DATA       : r_state TYPE TABLE OF ddshretval WITH HEADER LINE.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_state.
  REFRESH t_state.
  APPEND 'Tamil nadu' TO t_state.
  APPEND 'Kerala'     TO t_state.

  CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
    EXPORTING
      retfield        = 'STATE'
      dynpprog        = sy-repid
      dynpnr          = '1000'
      dynprofield     = 'P_STATE'
      window_title    = 'State'
      value_org       = 'S'
    TABLES
      value_tab       = t_state[]
      RETURN_TAB      = r_state[]
    EXCEPTIONS
      parameter_error = 1
      no_values_found = 2
      OTHERS          = 3.
  IF sy-subrc <> 0.
  ENDIF.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_city.
  REFRESH t_city.
  LOOP AT r_state.
    CASE    r_state-fieldval.
      WHEN  'TAMIL NADU'.
        APPEND 'Chennai'    TO t_city.
        APPEND 'Madurai'    TO t_city.
      WHEN  'KERALA'.
        APPEND 'Trivandrum' TO t_city.
        APPEND 'Kochi'      TO t_city.
    ENDCASE.
  ENDLOOP.

  CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
    EXPORTING
      retfield        = 'CITY'
      dynpprog        = sy-repid
      dynpnr          = '1000'
      dynprofield     = 'P_CITY'
      window_title    = 'City'
      value_org       = 'S'
    TABLES
      value_tab       = t_city[]
    EXCEPTIONS
      parameter_error = 1
      no_values_found = 2
      OTHERS          = 3.
  IF sy-subrc <> 0.
  ENDIF.

Cheers,

jose.

Read only

Former Member
0 Likes
1,173

Hi,

See the standard program DEMO_DYNPRO_F4_HELP_MODULE in SE38

see this sample code you can understand very easily


TYPES : BEGIN OF ST_OBJID_SH,
OTYPE TYPE HRP1000-OTYPE,
OBJID TYPE HRP1000-OBJID,
END OF ST_OBJID_SH.

DATA : IT_OBJID_SH TYPE STANDARD TABLE OF ST_OBJID_SH.
DATA : WA_OBJID_SH TYPE ST_OBJID_SH.

************SELECTION SCREEN DESIGN************************

SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001.

*SELECT-OPTIONS : S_OTYPE FOR HRP1001-OTYPE NO INTERVALS .
SELECT-OPTIONS : S_OBJID FOR HRP1001-OBJID NO INTERVALS .
SELECT-OPTIONS : DATE FOR SY-DATUM NO-EXTENSION OBLIGATORY.

SELECTION-SCREEN END OF BLOCK B1.

***********END OF SELECTION SCREEN DESIGN******************

**********VALIDATION FOR SCREEN FIELDS*********************

AT SELECTION-SCREEN ON VALUE-REQUEST FOR S_OBJID-LOW.


IF S_OBJID IS NOT INITIAL. 

SELECT OTYPE OBJID FROM HRP1000
INTO TABLE IT_OBJID_SH
WHERE OTYPE = 'D'.

IF SY-SUBRC EQ 0.


SEARCH HELP FOR QUALIFICATION. 

CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING

DDIC_STRUCTURE = ' ' 
RETFIELD = 'OBJID'

PVALKEY = ' ' 
DYNPPROG = SY-REPID
DYNPNR = SY-DYNNR
DYNPROFIELD = 'S_OBJID'

STEPL = 0 
WINDOW_TITLE = 
VALUE = ' ' 
VALUE_ORG = 'S'

MULTIPLE_CHOICE = ' ' 
DISPLAY = ' ' 
CALLBACK_PROGRAM = ' ' 
CALLBACK_FORM = ' ' 
MARK_TAB = 
IMPORTING 
USER_RESET = 
TABLES
VALUE_TAB = IT_OBJID_SH

FIELD_TAB = 
RETURN_TAB = RETURN_TAB 
DYNPFLD_MAPPING = 
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.
ENDIF.

Just check this link.

http://help.sap.com/saphelp_nw04/helpdata/en/9f/dbaac935c111d1829f0000e829fbfe/content.htm.

This will surely help u understand the function module F4IF_INT_TABLE_VALUE_REQUEST.

Regards,

Chandru

Read only

Former Member
0 Likes
1,173

while defining structure

use the table filed as reference.

See this

TYPES: BEGIN OF 1_tab,

pernr TYPE pernr_d,

nachn TYPE pad_nachn,

vorna TYPE emp_tab-vorna,

END OF 1_tab.