‎2008 Oct 31 5:23 AM
Hi
when using F4IF_INT_TABLE_VALUE_REQUEST function module...i am not able to get values in f4 help.
my requirement is i wil give the table name in selection screen and there is a select-options in which i need to get the feilds of the table which i gave earlier.
for this i am using the below code.....
PARAMETERS : p_table TYPE tabname .
SELECT-OPTIONS s_field FOR v_field1.
INITIALIZATION.
CALL FUNCTION 'DDIF_FIELDINFO_GET'
EXPORTING
tabname = p_table
TABLES
dfies_tab = it_return.
LOOP AT it_return INTO wa_return.
wa_return1-fieldname = wa_return-fieldname.
APPEND wa_return1 TO it_return1.
WRITE:/ wa_return1-fieldname.
ENDLOOP.
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
retfield = 'FIELDNAME'
DYNPPROG = sy-repid
DYNPNR = sy-dynnr
VALUE_ORG = 'S'
TABLES
value_tab = IT_RETURN1
EXCEPTIONS
PARAMETER_ERROR = 1 NO_VALUES_FOUND = 2.
i am geting the exception NO_VALUES_FOUND when i click on f4 help.
but there are values in it_return1(in debugging) before the function module is executed but after that there is no data in internal table.
‎2008 Oct 31 6:08 AM
Hi,
Try with this code.
TABLES: dfies.
PARAMETERS : p_table TYPE tabname .
SELECT-OPTIONS s_field FOR dfies-fieldname.
DATA : it_return TYPE TABLE OF dfies.
DATA : wa_return TYPE dfies.
TYPES: BEGIN OF ty_data,
fieldname TYPE dfies-fieldname,
END OF ty_data.
DATA: wa_return1 TYPE ty_data,
it_return1 TYPE TABLE OF ty_data.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR s_field-low.
DATA : lt_tabfile TYPE filetable,
l_subrc TYPE sy-subrc,
lt_fields TYPE TABLE OF dynpread WITH HEADER LINE,
lv_value TYPE char30.
lt_fields-fieldname = 'P_TABLE'.
APPEND lt_fields.
CLEAR lt_fields.
CALL FUNCTION 'DYNP_VALUES_READ'
EXPORTING
dyname = sy-cprog
dynumb = sy-dynnr
TABLES
dynpfields = lt_fields
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.
READ TABLE lt_fields WITH KEY fieldname = 'P_TABLE'.
MOVE lt_fields-fieldvalue TO lv_value.
CLEAR: wa_return1,
wa_return.
REFRESH: it_return,
it_return1.
CALL FUNCTION 'DDIF_FIELDINFO_GET'
EXPORTING
tabname = lv_value
TABLES
dfies_tab = it_return.
LOOP AT it_return INTO wa_return.
wa_return1-fieldname = wa_return-fieldname.
APPEND wa_return1 TO it_return1.
ENDLOOP.
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
retfield = 'FIELDNAME'
dynpprog = sy-repid
dynpnr = sy-dynnr
dynprofield = 'S_field-LOW'
value_org = 'S'
TABLES
value_tab = it_return1
EXCEPTIONS
parameter_error = 1
no_values_found = 2.
Regards,
Suresh
‎2008 Oct 31 5:28 AM
Hi,
Call the function module "F4IF_INT_TABLE_VALUE_REQUEST"
under the event
at selection-screen on value-request for p_table.
Thanks & Regards,
Navneeth K.
‎2008 Oct 31 5:29 AM
‎2008 Oct 31 5:30 AM
Hi,
Did you add the internal table in tEh F4 help.
DATA: I_RETURN TYPE DDHSRETVAL OCCURS 0 WITH HEADER LINE.
Add this parameter in your FM for F4.
RETURN_TAB = I_RETURN.
Thanks,
Chidanand
‎2008 Oct 31 5:34 AM
Try giving the import parameter dynprofield for the FM F4IF_INT_TABLE_VALUE_REQUEST
~Berry
‎2008 Oct 31 5:42 AM
anil,
if i remove the quotes it is giving error.
Chidanand
i have given the return_tab stil it is giving same exception.
Berry,
i have given dynprofield but stil same exception.
‎2008 Oct 31 5:34 AM
Hi,
use this code
pass dynpro field.
PARAMETERS : PT_NAME TYPE CRMT_LOCNO.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR PT_NAME.
PERFORM PT_NAME.
FORM PT_NAME.
CLEAR : T_VTAB.
SELECT PLANT FROM ZTABLENAME INTO CORRESPONDING FIELDS OF TABLE T_VTAB.
SORT T_VTAB BY PLANT.
DELETE ADJACENT DUPLICATES FROM T_VTAB COMPARING PLANT.
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
RETFIELD = 'PT_NAME'
DYNPPROG = SY-REPID
DYNPNR = SY-DYNNR
DYNPROFIELD = 'pt_name'
CALLBACK_PROGRAM = SY-REPID
VALUE_ORG = 'S'
TABLES
VALUE_TAB = T_VTAB
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.
Edited by: kk on Oct 31, 2008 11:05 AM
‎2008 Oct 31 5:42 AM
Hi
Try this code for S_field-low .
PARAMETERS : p_table TYPE tabname .
SELECT-OPTIONS s_field FOR sy-datum.
DATA : it_return TYPE TABLE OF dfies.
DATA : wa_return TYPE dfies.
TYPES: BEGIN OF ty_data,
fieldname TYPE dfies-fieldname,
END OF ty_data.
DATA: wa_return1 TYPE ty_data,
it_return1 TYPE TABLE OF ty_data.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR s_field-low.
CALL FUNCTION 'DDIF_FIELDINFO_GET'
EXPORTING
tabname = p_table
TABLES
dfies_tab = it_return.
LOOP AT it_return INTO wa_return.
wa_return1-fieldname = wa_return-fieldname.
APPEND wa_return1 TO it_return1.
WRITE:/ wa_return1-fieldname.
ENDLOOP.
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
retfield = 'FIELDNAME'
dynpprog = sy-repid
dynpnr = sy-dynnr
dynprofield = 'S_field-LOW'
value_org = 'S'
TABLES
value_tab = it_return1
EXCEPTIONS
parameter_error = 1
no_values_found = 2.
Regards,
Suresh.
‎2008 Oct 31 5:45 AM
Hi suresh,
it is giving dump if we call the FM 'DDIF_FIELDINFO_GET' after at selection screen on value request event.
‎2008 Oct 31 5:48 AM
‎2008 Oct 31 5:58 AM
Hi,
You can also try this way....
suppose 's' is the selection options where you want the f4 to get the fields of the table you entered in 's1'.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR s-low.
PERFORM getvalue_comp.
in this perform do like this.....
DATA it_dynfield TYPE STANDARD TABLE OF dynpread WITH HEADER LINE.
DATA : s_comp1 LIKE zhist_card_t-area1. (''s_comp1 like the field where you enter the table name)
CALL FUNCTION 'DYNP_VALUES_READ'
EXPORTING
dyname = sy-repid
dynumb = sy-dynnr
request = 'A'
translate_to_upper = 'X'
TABLES
dynpfields = it_dynfield
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.
READ TABLE it_dynfield WITH KEY fieldname = 'S_EQUIP-LOW'.
"s_equip-low is the field name in selection screen for the field where you enter table name....
s_comp1 = it_dynfield-fieldvalue. " the the table name you entered...
REFRESH it_comp[].
IF it_comp[] IS INITIAL.
<fill this table with the values of the table field name>
ENDIF.
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
* DDIC_STRUCTURE = ' '
retfield = 'S1'
* PVALKEY = ' '
dynpprog = sy-repid
dynpnr = sy-dynnr
dynprofield = 'S-LOW'
stepl = 0
* WINDOW_TITLE =
* VALUE = ' '
value_org = 'S'
* MULTIPLE_CHOICE = ' '
* DISPLAY = ' '
* CALLBACK_PROGRAM = ' '
* CALLBACK_FORM = ' '
* MARK_TAB =
* IMPORTING
* USER_RESET =
TABLES
value_tab = it_comp
* 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.
" similarly do for AT SELECTION-SCREEN ON VALUE-REQUEST FOR s-high.
Hope this will solve your problem....
Regards
Debarshi
‎2008 Oct 31 6:05 AM
Hi Jyoshna,
Try Like this
Using at selection-screen on value-request for FIELDNAME.
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
retfield = 'FIELDNAME'
DYNPPROG = sy-repid
DYNPNR = sy-dynnr
DYNPROFIELD = 'FILEDNAME'
VALUE_ORG = 'S'
tables
value_tab = IT_RETURN1
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.
Regards
ranga
‎2008 Oct 31 6:08 AM
Hi,
Try with this code.
TABLES: dfies.
PARAMETERS : p_table TYPE tabname .
SELECT-OPTIONS s_field FOR dfies-fieldname.
DATA : it_return TYPE TABLE OF dfies.
DATA : wa_return TYPE dfies.
TYPES: BEGIN OF ty_data,
fieldname TYPE dfies-fieldname,
END OF ty_data.
DATA: wa_return1 TYPE ty_data,
it_return1 TYPE TABLE OF ty_data.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR s_field-low.
DATA : lt_tabfile TYPE filetable,
l_subrc TYPE sy-subrc,
lt_fields TYPE TABLE OF dynpread WITH HEADER LINE,
lv_value TYPE char30.
lt_fields-fieldname = 'P_TABLE'.
APPEND lt_fields.
CLEAR lt_fields.
CALL FUNCTION 'DYNP_VALUES_READ'
EXPORTING
dyname = sy-cprog
dynumb = sy-dynnr
TABLES
dynpfields = lt_fields
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.
READ TABLE lt_fields WITH KEY fieldname = 'P_TABLE'.
MOVE lt_fields-fieldvalue TO lv_value.
CLEAR: wa_return1,
wa_return.
REFRESH: it_return,
it_return1.
CALL FUNCTION 'DDIF_FIELDINFO_GET'
EXPORTING
tabname = lv_value
TABLES
dfies_tab = it_return.
LOOP AT it_return INTO wa_return.
wa_return1-fieldname = wa_return-fieldname.
APPEND wa_return1 TO it_return1.
ENDLOOP.
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
retfield = 'FIELDNAME'
dynpprog = sy-repid
dynpnr = sy-dynnr
dynprofield = 'S_field-LOW'
value_org = 'S'
TABLES
value_tab = it_return1
EXCEPTIONS
parameter_error = 1
no_values_found = 2.
Regards,
Suresh