‎2006 Nov 21 11:48 AM
Hello all,
I have a report program. What I want is that when the user presses F4 for a particular selection screen parameter, a list of values should be displayed. This list is taken from a table skb1.
One concern is that all entries should not be displayed. Only those entries which specify a certain criterion ( eg. a field should be 'X' in the db table ) should be displayed.
Ravi
‎2006 Nov 21 11:50 AM
Hi ravi,
1. sample code (just copy paste)
2.
REPORT ABC.
*----
DATA : BEGIN OF ITAB OCCURS 0,
UNAME LIKE USR01-BNAME,
END OF ITAB.
data : RETURN_TAB LIKE DDSHRETVAL occurs 0 .
data : RETURN_wa LIKE DDSHRETVAL .
*----
PARAMETERS : A(12) TYPE C.
*----
AT SELECTION-SCREEN ON VALUE-REQUEST FOR A.
ITAB-UNAME = 'U01'. APPEND ITAB.
ITAB-UNAME = 'U02'. APPEND ITAB.
ITAB-UNAME = 'U03'. APPEND ITAB.
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
DDIC_STRUCTURE = ' '
retfield = 'ITAB-UNAME'
PVALKEY = ' '
DYNPPROG = SY-REPID
DYNPNR = SY-DYNNR
DYNPROFIELD = 'A'
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 = FTAB
RETURN_TAB = return_tab
DYNPFLD_MAPPING =
EXCEPTIONS
PARAMETER_ERROR = 1
NO_VALUES_FOUND = 2
OTHERS = 3
.
break-point.
regards,
amit m.
‎2006 Nov 21 11:50 AM
Hi ravi,
1. sample code (just copy paste)
2.
REPORT ABC.
*----
DATA : BEGIN OF ITAB OCCURS 0,
UNAME LIKE USR01-BNAME,
END OF ITAB.
data : RETURN_TAB LIKE DDSHRETVAL occurs 0 .
data : RETURN_wa LIKE DDSHRETVAL .
*----
PARAMETERS : A(12) TYPE C.
*----
AT SELECTION-SCREEN ON VALUE-REQUEST FOR A.
ITAB-UNAME = 'U01'. APPEND ITAB.
ITAB-UNAME = 'U02'. APPEND ITAB.
ITAB-UNAME = 'U03'. APPEND ITAB.
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
DDIC_STRUCTURE = ' '
retfield = 'ITAB-UNAME'
PVALKEY = ' '
DYNPPROG = SY-REPID
DYNPNR = SY-DYNNR
DYNPROFIELD = 'A'
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 = FTAB
RETURN_TAB = return_tab
DYNPFLD_MAPPING =
EXCEPTIONS
PARAMETER_ERROR = 1
NO_VALUES_FOUND = 2
OTHERS = 3
.
break-point.
regards,
amit m.
‎2006 Nov 21 11:57 AM
hi,
in order to display only the selected entries you have to create a matchcode object and match code id in SE11 and asssign to parameter or select option.
Regards
srinivas
‎2006 Nov 21 11:57 AM
‎2006 Nov 21 11:59 AM
create a match code object and assign it in the program for that selection field.
‎2006 Nov 21 12:03 PM
HI,
Check this standard program which will help u to solev ur issue.
REPORT demo_dynpro_f4_help_module .
TYPES: BEGIN OF values,
carrid TYPE spfli-carrid,
connid TYPE spfli-connid,
END OF values.
DATA: carrier(3) TYPE c,
connection(4) TYPE c.
DATA: progname TYPE sy-repid,
dynnum TYPE sy-dynnr,
dynpro_values TYPE TABLE OF dynpread,
field_value LIKE LINE OF dynpro_values,
values_tab TYPE TABLE OF values.
CALL SCREEN 100.
MODULE init OUTPUT.
progname = sy-repid.
dynnum = sy-dynnr.
CLEAR: field_value, dynpro_values.
field_value-fieldname = 'CARRIER'.
APPEND field_value TO dynpro_values.
ENDMODULE.
MODULE cancel INPUT.
LEAVE PROGRAM.
ENDMODULE.
MODULE value_carrier INPUT.
CALL FUNCTION 'F4IF_FIELD_VALUE_REQUEST'
EXPORTING
tabname = 'DEMOF4HELP'
fieldname = 'CARRIER1'
dynpprog = progname
dynpnr = dynnum
dynprofield = 'CARRIER'.
ENDMODULE.
MODULE value_connection INPUT.
CALL FUNCTION 'DYNP_VALUES_READ'
EXPORTING
dyname = sy-repid
dynumb = '1000'
translate_to_upper = 'X'
TABLES
dynpfields = dynpro_values.
READ TABLE dynpro_values INDEX 1 INTO field_value.
SELECT chect
FROM <table>
INTO CORRESPONDING FIELDS OF TABLE values_tab
WHERE carrid = field_value-fieldvalue.
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
retfield = 'CONNID'
dynpprog = progname
dynpnr = dynnum
dynprofield = 'CONNECTION'
value_org = 'S'
TABLES
value_tab = values_tab.
ENDMODULE.Regards
Anver
pls mark poinst if hlepd
‎2006 Nov 21 12:13 PM
‎2006 Nov 21 12:22 PM
Hi,
try using the below code...
parameters : p_saknr like skb1-saknr obligatory.
----
At Selection-Screen On Value Request
----
at selection-screen on value-request for p_saknr.
*-- perform to give possible values for tables
perform f4_table.
*-- fecth valid records
select fld1
fld2
from skb1
into table t_tables
where fld = 'X'.
if sy-subrc = 0.
sort t_tables by saknr.
delete adjacent duplicates from t_tables comparing saknr..
else.
message e999(zi) with 'No entries found'(007).
exit.
endif.
*-- F4 help also returning the value to be displayed in internal table
call function 'F4IF_INT_TABLE_VALUE_REQUEST'
exporting
DDIC_STRUCTURE = ' '
retfield = 'TABNAME'
PVALKEY = ' '
dynpprog = 'TEST'
dynpnr = '1000'
dynprofield = 'P_SAKNR'
STEPL = 0
window_title = 'Tables'(008)
VALUE = ' '
value_org = 'S'
MULTIPLE_CHOICE = ' '
DISPLAY = ' '
CALLBACK_PROGRAM = ' '
CALLBACK_FORM = ' '
tables
value_tab = t_tables
FIELD_TAB =
return_tab = t_return
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.
else.
message s999(zi) with 'No entries found'(007).
endif.
Madhavi