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
890

Hi ,

I have two fields in Selection screen.

Entry is made in first field of selection screen, Based on the entry in the

first field , the second field should have f4 help which brings the value from

table based on the first field entry.

How to do this.Help me to solve thid issue.

Thanks.

7 REPLIES 7
Read only

Former Member
0 Likes
843

In these type of situations it is better to choose a drop down facility in the second input field based on the condition of the first field.

It is possible in MPP using Type pools VRM and the internal table VRM_SET_VALUES.

Cheers.

Read only

Former Member
0 Likes
843

HI

Check this....

TABLES: mara, makt.

DATA mat LIKE mara-matnr.

DATA: BEGIN OF itab OCCURS 0,

matnr LIKE mara-matnr,

END OF itab.

DATA : BEGIN OF btab OCCURS 0,

maktx LIKE makt-maktx,

END OF btab.

DATA : return LIKE ddshretval OCCURS 0 WITH HEADER LINE.

SELECT-OPTIONS: so_matnr FOR mara-matnr,

so_maktx FOR makt-maktx.

INITIALIZATION.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR so_matnr-low.

PERFORM matnr.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR so_matnr-high.

PERFORM matnr.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR so_maktx-low.

PERFORM maktx.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR so_maktx-high.

PERFORM maktx.

&----


*& Form matnr

&----


  • text

----


FORM matnr.

REFRESH itab.

SELECT matnr FROM mara INTO TABLE itab.

CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'

EXPORTING

retfield = 'MATNR '

dynprofield = 'P_MATNR '

dynpprog = sy-repid

dynpnr = sy-dynnr

value_org = 'S'

TABLES

value_tab = itab

return_tab = return.

mat = return-fieldval.

UNPACK mat TO mat.

so_matnr = return-fieldval.

REFRESH return.

CLEAR return.

ENDFORM. "matnr

&----


*& Form maktx

&----


  • text

----


FORM maktx.

REFRESH btab.

SELECT maktx FROM makt INTO TABLE btab WHERE matnr = mat AND spras =

sy-langu.

CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'

EXPORTING

retfield = 'MAKTX'

dynprofield = 'SO_MAKTX '

dynpprog = sy-repid

dynpnr = sy-dynnr

value_org = 'S'

TABLES

value_tab = btab

return_tab = return.

so_maktx = return-fieldval.

REFRESH return.

CLEAR return.

ENDFORM. "maktx

Regards

SAB

Read only

rahulkavuri
Active Contributor
0 Likes
843

hi for this u need to dynamic read of selection screens,

This populates based on user selection for F4 help

check this sample code bolded part...

DATA: PROGNAME TYPE SY-REPID,

DYNNUM TYPE SY-DYNNR,

DYNPRO_VALUES TYPE TABLE OF DYNPREAD,

FIELD_VALUE LIKE LINE OF DYNPRO_VALUES.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR ST_NAME.

CLEAR: FIELD_VALUE, DYNPRO_VALUES.

REFRESH DYNPRO_VALUES.

FIELD_VALUE-FIELDNAME = 'EXCH'.

APPEND FIELD_VALUE TO DYNPRO_VALUES.

<b>

CALL FUNCTION 'DYNP_VALUES_READ'

EXPORTING

DYNAME = SY-CPROG

DYNUMB = SY-DYNNR

TRANSLATE_TO_UPPER = 'X'

TABLES

DYNPFIELDS = DYNPRO_VALUES.

</b>

READ TABLE DYNPRO_VALUES INDEX 1 INTO FIELD_VALUE.

IF FIELD_VALUE-FIELDVALUE IS NOT INITIAL.

IF SY-SUBRC = 0 AND FIELD_VALUE-FIELDVALUE = 1.

FIELD_VALUE-FIELDVALUE = 'BSE'.

ELSEIF SY-SUBRC = 0 AND FIELD_VALUE-FIELDVALUE = 2.

FIELD_VALUE-FIELDVALUE = 'NSE'.

ENDIF.

SELECT STOCK ST_NAME

CURRPR

FROM

ZEXCH

INTO TABLE TEMP_ITAB

WHERE EXCH = FIELD_VALUE-FIELDVALUE.

  • SEARCH FOR REQUESTED VALUE FROM TABLE ZEXCH AND DISPLAY VALUES OF STOCK * * * * AVAILABLE IN THE SELECTED STOCK EXCHANGE

<b>

CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'

EXPORTING

RETFIELD = 'ST_NAME'

DYNPPROG = SY-CPROG

DYNPNR = SY-DYNNR

DYNPROFIELD = 'ST_NAME'

VALUE_ORG = 'S'

TABLES

VALUE_TAB = TEMP_ITAB

RETURN_TAB = RETURN.

</b>

  • DYNAMIC POPULATION OF SCREEN VALUES STOCK CODE AND LAST TRADED PRICE

SELECT STOCK CURRPR

FROM ZEXCH

INTO (T_CODE, T_CURRPR)

WHERE ST_NAME = RETURN-FIELDVAL.

ENDSELECT.

CLEAR DYNPRO_VALUES[].

FIELD_VALUE-FIELDNAME = 'ST_NAME'.

FIELD_VALUE-FIELDVALUE = RETURN-FIELDVAL.

APPEND FIELD_VALUE TO DYNPRO_VALUES .

  • UPDATE THE DYNPRO VALUES.

<b>

CALL FUNCTION 'DYNP_VALUES_UPDATE'

EXPORTING

DYNAME = SY-CPROG

DYNUMB = SY-DYNNR

TABLES

DYNPFIELDS = DYNPRO_VALUES.

</b>

ENDIF.

Read only

Former Member
0 Likes
843

Hi,

Look at the SAP DEMO program <b>DEMO_SELECTION_SCREEN_F4</b>

Also, the below are the F4 help examples for Dailog Screens

DEMO_DYNPRO_F4_HELP_DICTIONARY

DEMO_DYNPRO_F4_HELP_DYNPRO

DEMO_DYNPRO_F4_HELP_MODULE

Regards

Sudheer

Read only

Former Member
0 Likes
843

Hi,

You can use following method.

Here firstly populate the all the data regarding first field into local internal table

Let us assme first field is plant and second is material.Then first populate the

all the materials regarding plant which is given on the selection screeen into one local internal table.then use following field.

Itab contains two fields plant and material

AT SELECTION-SCREEN ON VALUE-REQUEST FOR field2.

CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'

EXPORTING

  • DDIC_STRUCTURE = 'ZWBPASS '

RETFIELD = 'field1' "field1 name in our internal table

  • PVALKEY = ' '

DYNPPROG = sy-repid

DYNPNR = sy-dynnr

DYNPROFIELD = v_field "second field which comes from selection screen.

  • STEPL = 0

  • WINDOW_TITLE =

  • VALUE = ' '

VALUE_ORG = 'S'

  • MULTIPLE_CHOICE = ' '

  • DISPLAY = ' '

  • CALLBACK_PROGRAM = ' '

  • CALLBACK_FORM = ' '

  • MARK_TAB =

  • IMPORTING

  • USER_RESET =

TABLES

VALUE_TAB = it_tab "local table

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

endif.

Read only

Former Member
0 Likes
843

report zabc.

parameters: p_bukrs type t001-bukrs,

p_butxt type t001-butxt,

p_ort01 type t001-ort01,

p_land1 type t001-land1.

data: dynfields type table of dynpread with header line.

data: return type table of ddshretval with header line.

at selection-screen on value-request for p_bukrs.

call function 'F4IF_FIELD_VALUE_REQUEST'

exporting

tabname = 'T001'

fieldname = 'BUKRS'

dynpprog = sy-cprog

dynpnr = sy-dynnr

dynprofield = 'P_BUKRS'

tables

return_tab = return

exceptions

field_not_found = 1

no_help_for_field = 2

inconsistent_help = 3

no_values_found = 4

others = 5.

break-point.

refresh dynfields.

read table return with key fieldname = 'P_BUKRS'.

  • Add it back to the dynpro.

dynfields-fieldname = return-retfield.

dynfields-fieldvalue = return-fieldval.

append dynfields.

  • Get the company code from db and add to dynpro

data: xt001 type t001.

clear xt001.

select single * into xt001

from t001

where bukrs = return-fieldval.

dynfields-fieldname = 'P_BUTXT'.

dynfields-fieldvalue = xt001-butxt.

append dynfields.

dynfields-fieldname = 'P_ORT01'.

dynfields-fieldvalue = xt001-ort01.

append dynfields.

dynfields-fieldname = 'P_LAND1'.

dynfields-fieldvalue = xt001-land1.

append dynfields.

  • Update the dynpro values.

call function 'DYNP_VALUES_UPDATE'

exporting

dyname = sy-cprog

dynumb = sy-dynnr

tables

dynpfields = dynfields

exceptions

others = 8.

start-of-selection.

Read only

Former Member
0 Likes
843

You'll need to dynamically read the value for the field you are depending on, then you could build your F4 help using that value. Say for example we have a select option s_pernr-low that depends on the value input for s_kunnr-low.

In order to read the value:

-


at selection-screen on value-request for s_pernr-low.

DATA: BEGIN OF DYNPFIELDS OCCURS 1.

INCLUDE STRUCTURE DYNPREAD.

DATA: END OF DYNPFIELDS.

CLEAR DYNPFIELDS.

REFRESH DYNPFIELDS.

DYNPFIELDS-FIELDNAME = 'S_KUNNR-LOW'.

APPEND DYNPFIELDS.

    • DYNPFIELDS table will hold your field name and the value.

CALL FUNCTION 'DYNP_VALUES_READ'

EXPORTING

DYNAME = SY-REPID

DYNUMB = SY-DYNNR

TRANSLATE_TO_UPPER = 'X'

TABLES

DYNPFIELDS = DYNPFIELDS

EXCEPTIONS

OTHERS = 11.