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_int_table_value_request

Former Member
0 Likes
1,739

Hi,

I wanted to pass two fields in the value table as well as in return structure two fields can you provide me a structure for this

Regards

p619380

1 ACCEPTED SOLUTION
Read only

Former Member
0 Likes
1,563

Hi

Check the following
" Just Execute this pilot program and verify
PARAMETERS : carrid TYPE spfli-carrid,
             connid TYPE spfli-connid,
             fldate TYPE sflight-fldate.
 
DATA : itab TYPE TABLE OF sflight WITH HEADER LINE.
DATA : fmap TYPE TABLE OF dselc WITH HEADER LINE.
 
 
 
AT SELECTION-SCREEN ON VALUE-REQUEST FOR carrid." If it is a selection Screen
else in PROCESS ON VALUE REQUEST
  SELECT * FROM sflight INTO TABLE itab.
  SORT itab BY carrid connid fldate.
  DELETE ADJACENT DUPLICATES FROM itab
  COMPARING carrid connid fldate.
  fmap-fldname = 'CARRID'.
  fmap-dyfldname = 'CARRID'.
  APPEND fmap.
  fmap-fldname = 'CONNID'.
  fmap-dyfldname = 'CONNID'.
  APPEND fmap.
  fmap-fldname = 'FLDATE'.
  fmap-dyfldname = 'FLDATE'.
  APPEND fmap.
 
  CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
    EXPORTING
     ddic_structure         = 'SFLIGHT'
      retfield               = 'CARIID'
*     PVALKEY                = ' '
     dynpprog               = sy-repid
     dynpnr                 = sy-dynnr
     DYNPROFIELD            = 'CARRID'
*     STEPL                  = 0
*     WINDOW_TITLE           =
*     VALUE                  = ' '
     value_org              = 'S'
*     MULTIPLE_CHOICE        = ' '
*     DISPLAY                = ' '
*     CALLBACK_PROGRAM       = ' '
*     CALLBACK_FORM          = ' '
*     MARK_TAB               =
*   IMPORTING
*     USER_RESET             =
    TABLES
      value_tab              = itab
*     FIELD_TAB              =
*     RETURN_TAB             =
     dynpfld_mapping        = fmap
*   EXCEPTIONS
*     PARAMETER_ERROR        = 1
*     NO_VALUES_FOUND        = 2
*     OTHERS                 = 3
            .
  IF sy-subrc NE  0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  ENDIF.

Cheerz

Ram

6 REPLIES 6
Read only

Former Member
0 Likes
1,563

Hi ,

Try this

DATA: T_RETURN TYPE TABLE OF DDSHRETVAL WITH HEADER LINE.

SELECT SERNR MATNR FROM EQUI INTO TABLE ITAB_EQUI

WHERE MATNR = F4_MATNR.

CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'

EXPORTING

RETFIELD = 'SERNR'

DYNPPROG = SY-REPID

DYNPNR = '0100'

DYNPROFIELD = 'EQUI-SERNR'

VALUE_ORG = 'S'

TABLES

VALUE_TAB = ITAB_EQUI

RETURN_TAB = T_RETURN

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.

CLEAR F4_MATNR .

Regards

Jitendra

Read only

0 Likes
1,563

My question to how to get two fields when f4 is clicked,

any structure to be passed

Read only

0 Likes
1,563

Hi, <li>After F4_int_table_value_request function module call call DYNP_VALUES_UPDATE function module pass second field name and corresponding field name, two fields are update when you select the value from F4 help. <li>Try this way.


 REPORT zvenkat_f4_for_parameters MESSAGE-ID zmsg .
TYPES:BEGIN OF t_t001w,
      werks       TYPE t001w-werks,
      name1       TYPE t001w-name1,
     END OF t_t001w,
     t_return_tab  TYPE ddshretval.
DATA:w_t001w      TYPE t_t001w,
    w_return_tab TYPE t_return_tab.
DATA:i_t001w      TYPE STANDARD TABLE OF t_t001w,
    i_return_tab TYPE STANDARD TABLE OF t_return_tab.
DATA:w_dynpfields TYPE dynpread,
    i_dynpfields LIKE STANDARD TABLE OF dynpread.
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME.
PARAMETERS :p_werks TYPE t001w-werks,
           p_name1 TYPE t001w-name1.
SELECTION-SCREEN END OF BLOCK b1.
"F4 Help for Werks

AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_werks.
  IF i_t001w[] IS INITIAL.
    SELECT werks name1
    FROM t001w
    INTO TABLE i_t001w.
  ENDIF.
  "Function module for F4 help
  CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
    EXPORTING
      retfield    = 'WERKS'   "field name on f4 help window
      dynpprog    = sy-repid
      dynpnr      = sy-dynnr
      dynprofield = 'P_WERKS' "Screen field name
      value_org   = 'S'
    TABLES
      value_tab   = i_t001w
      return_tab  = i_return_tab.
  READ TABLE i_return_tab INTO w_return_tab INDEX 1.
  p_werks = w_return_tab-fieldval.
  READ TABLE i_t001w INTO w_t001w WITH KEY werks = p_werks.
  IF sy-subrc = 0.
    w_dynpfields-fieldname    = 'P_NAME1'.
    w_dynpfields-fieldvalue   = w_t001w-name1.
    APPEND w_dynpfields TO i_dynpfields.
    CLEAR w_dynpfields.
    "DYNP_VALUES_UPDATE
    CALL FUNCTION 'DYNP_VALUES_UPDATE'
      EXPORTING
        dyname     = sy-repid
        dynumb     = sy-dynnr
      TABLES
        dynpfields = i_dynpfields.
  ENDIF. 
Thanks Venkat

Read only

Former Member
0 Likes
1,564

Hi

Check the following
" Just Execute this pilot program and verify
PARAMETERS : carrid TYPE spfli-carrid,
             connid TYPE spfli-connid,
             fldate TYPE sflight-fldate.
 
DATA : itab TYPE TABLE OF sflight WITH HEADER LINE.
DATA : fmap TYPE TABLE OF dselc WITH HEADER LINE.
 
 
 
AT SELECTION-SCREEN ON VALUE-REQUEST FOR carrid." If it is a selection Screen
else in PROCESS ON VALUE REQUEST
  SELECT * FROM sflight INTO TABLE itab.
  SORT itab BY carrid connid fldate.
  DELETE ADJACENT DUPLICATES FROM itab
  COMPARING carrid connid fldate.
  fmap-fldname = 'CARRID'.
  fmap-dyfldname = 'CARRID'.
  APPEND fmap.
  fmap-fldname = 'CONNID'.
  fmap-dyfldname = 'CONNID'.
  APPEND fmap.
  fmap-fldname = 'FLDATE'.
  fmap-dyfldname = 'FLDATE'.
  APPEND fmap.
 
  CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
    EXPORTING
     ddic_structure         = 'SFLIGHT'
      retfield               = 'CARIID'
*     PVALKEY                = ' '
     dynpprog               = sy-repid
     dynpnr                 = sy-dynnr
     DYNPROFIELD            = 'CARRID'
*     STEPL                  = 0
*     WINDOW_TITLE           =
*     VALUE                  = ' '
     value_org              = 'S'
*     MULTIPLE_CHOICE        = ' '
*     DISPLAY                = ' '
*     CALLBACK_PROGRAM       = ' '
*     CALLBACK_FORM          = ' '
*     MARK_TAB               =
*   IMPORTING
*     USER_RESET             =
    TABLES
      value_tab              = itab
*     FIELD_TAB              =
*     RETURN_TAB             =
     dynpfld_mapping        = fmap
*   EXCEPTIONS
*     PARAMETER_ERROR        = 1
*     NO_VALUES_FOUND        = 2
*     OTHERS                 = 3
            .
  IF sy-subrc NE  0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  ENDIF.

Cheerz

Ram

Read only

Former Member
0 Likes
1,563

Try this code.

This may help you.

DATA : BEGIN OF WA_EKPO,

WERKS TYPE EKPO-WERKS, "Plant

END OF WA_EKPO.

give number of fields u want in this structure.

DATA: IT_RETURN LIKE DDSHRETVAL OCCURS 0 WITH HEADER LINE.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_BUKRS.

CALL FUNCTION 'HELP_VALUES_GET'

EXPORTING

FIELDNAME = 'BUKRS'

TABNAME = 'EKPO'

IMPORTING

SELECT_VALUE = P_BUKRS.

CLEAR : WA_EKPO, IT_EKPO[].

SELECT DISTINCT WERKS FROM EKPO

INTO TABLE IT_EKPO

WHERE BUKRS = P_BUKRS.

DELETE IT_EKPO WHERE WERKS EQ ''.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_WERKS.

CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'

EXPORTING

RETFIELD = 'WERKS'

VALUE_ORG = 'S'

TABLES

VALUE_TAB = IT_EKPO

RETURN_TAB = IT_RETURN.

WRITE IT_RETURN-FIELDVAL TO P_WERKS.

If you want to write two fields, use this write statement for your second field also.

Regards,

Prabu S

Read only

SuhaSaha
Product and Topic Expert
Product and Topic Expert
0 Likes
1,563

Hello Jansi,

You can use this code:

PARAMETERS:
         p_carrid   TYPE spfli-carrid,
         p_cname    TYPE scarr-carrname.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_carrid.

  TYPES: t_return_tab  TYPE ddshretval.

  TYPES: BEGIN OF ty_line,
           carrid   TYPE spfli-carrid,
           carrname TYPE scarr-carrname,
         END OF ty_line.

  DATA: it_list TYPE STANDARD TABLE OF ty_line,
        w_return_tab TYPE t_return_tab,
        i_return_tab TYPE STANDARD TABLE OF t_return_tab,
        v_repid TYPE sy-repid,
        v_dynnr TYPE sy-dynnr.

  DATA:
        it_map TYPE STANDARD TABLE OF dselc,
        wa_map TYPE dselc.

  v_repid = sy-repid.
  v_dynnr = sy-dynnr.

  SELECT carrid carrname
              FROM scarr
              INTO TABLE it_list.

  IF sy-subrc = 0.

    wa_map-fldname = 'F0001'. "Field for Position 1
    wa_map-dyfldname = 'P_CARRID'.
    APPEND wa_map TO it_map.

    wa_map-fldname = 'F0002'. "Field for Position 2
    wa_map-dyfldname = 'P_CNAME'.
    APPEND wa_map TO it_map.

    CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
      EXPORTING
        retfield               = 'CARRID'
       dynpprog               = v_repid
       dynpnr                 = v_dynnr
       dynprofield            = 'P_CARRID'
       value_org              = 'S'
      TABLES
       value_tab              = it_list
       dynpfld_mapping        = it_map
     EXCEPTIONS
       parameter_error        = 1
       no_values_found        = 2
       OTHERS                 = 3.
    IF sy-subrc = 0.
*     Do nothing
    ENDIF.

  ENDIF.

Cheers,

Suhas

PS: The code suggested by Ram will work if you have used an DDIC_STRUCTURE. But if you are using a local internal table as VALUE_TAB i think you cannot implement that logic.

Edited by: Suhas Saha on Mar 8, 2010 1:05 PM