2009 Sep 15 7:31 AM
Dear forumers,
I'm trying to implement a search help function in my selection screen but it's not working (for program name, TADIR-OBJ_NAME).
What could possibly be wrong and how can I fix the problem (kindly refer to the codes below - I_TADIR is always empty without any records, so it is impossible to have data for search help)?
Please help.
REPORT ydt_abap.
TABLES: tadir.
TYPES: BEGIN OF t_tadir,
obj_name TYPE tadir-obj_name,
END OF t_tadir.
CONSTANTS: c_program(4) TYPE c VALUE 'PROG'.
DATA: i_tadir TYPE STANDARD TABLE OF t_tadir.
DATA: i_f4_result TYPE STANDARD TABLE OF ddshretval.
DATA: w_f4_result TYPE ddshretval.
PARAMETERS: p_dclass TYPE tadir-devclass.
PARAMETERS: p_author TYPE tadir-author.
PARAMETERS: p_prog TYPE tadir-obj_name OBLIGATORY.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_prog.
CLEAR: i_tadir,
i_f4_result,
w_f4_result.
" Retrieve program names
SELECT obj_name
FROM tadir
INTO TABLE i_tadir
WHERE object = c_program
AND author = p_author " Debug mode: P_AUTHOR is always empty eventho a valid value has been entered
AND devclass = p_dclass. " Debug mode: P_DCLASS is always empty eventho a valid value has been entered
IF i_tadir IS NOT INITIAL. " Debug mode: I_TADIR is always empty here
" Customize search help
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
retfield = 'P_PROG'
value_org = 'S'
TABLES
value_tab = i_tadir
return_tab = i_f4_result
EXCEPTIONS
parameter_error = 1
no_values_found = 2
OTHERS = 3.
" Check return code
IF sy-subrc EQ 0.
READ TABLE i_f4_result INTO w_f4_result INDEX 1.
IF sy-subrc EQ 0.
p_prog = w_f4_result-fieldval.
ENDIF.
ELSE.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
ENDIF.
START-OF-SELECTION.
...
2009 Sep 15 8:00 AM
Hi,
insert this:
DATA: BEGIN OF DYNPFIELDS OCCURS 0.
INCLUDE STRUCTURE DYNPREAD.
DATA: END OF DYNPFIELDS.
*
DYNPFIELDS-FIELDNAME = 'P_AUTHOR'. APPEND DYNPFIELDS.
*
CALL FUNCTION 'DYNP_VALUES_READ'
EXPORTING
DYNAME = SY-REPID
DYNUMB = SY-DYNNR
TABLES
DYNPFIELDS = DYNPFIELDS
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.
*
IF SY-SUBRC = 0.
READ TABLE DYNPFIELDS WITH KEY FIELDNAME = 'P_AUTHOR'.
P_AUTHOR = DYNPFIELDS-FIELDVALUE.
ELSE.
EXIT.
ENDIF.
*
befor SELECT obj_name
Regards, Dieter
Dear forumers,
I'm trying to implement a search help function in my selection screen but it's not working (for program name, TADIR-OBJ_NAME).
What could possibly be wrong and how can I fix the problem (kindly refer to the codes below - I_TADIR is always empty without any records, so it is impossible to have data for search help)?
Please help.
REPORT ydt_abap.
TABLES: tadir.
TYPES: BEGIN OF t_tadir,
obj_name TYPE tadir-obj_name,
END OF t_tadir.
CONSTANTS: c_program(4) TYPE c VALUE 'PROG'.
DATA: i_tadir TYPE STANDARD TABLE OF t_tadir.
DATA: i_f4_result TYPE STANDARD TABLE OF ddshretval.
DATA: w_f4_result TYPE ddshretval.
PARAMETERS: p_dclass TYPE tadir-devclass.
PARAMETERS: p_author TYPE tadir-author.
PARAMETERS: p_prog TYPE tadir-obj_name OBLIGATORY.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_prog.
CLEAR: i_tadir,
i_f4_result,
w_f4_result.
" Retrieve program names
SELECT obj_name
FROM tadir
INTO TABLE i_tadir
WHERE object = c_program
AND author = p_author " Debug mode: P_AUTHOR is always empty eventho a valid value has been entered
AND devclass = p_dclass. " Debug mode: P_DCLASS is always empty eventho a valid value has been entered
IF i_tadir IS NOT INITIAL. " Debug mode: I_TADIR is always empty here
" Customize search help
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
retfield = 'P_PROG'
value_org = 'S'
TABLES
value_tab = i_tadir
return_tab = i_f4_result
EXCEPTIONS
parameter_error = 1
no_values_found = 2
OTHERS = 3.
" Check return code
IF sy-subrc EQ 0.
READ TABLE i_f4_result INTO w_f4_result INDEX 1.
IF sy-subrc EQ 0.
p_prog = w_f4_result-fieldval.
ENDIF.
ELSE.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
ENDIF.
START-OF-SELECTION.
...
2009 Sep 15 8:00 AM
Hi,
insert this:
DATA: BEGIN OF DYNPFIELDS OCCURS 0.
INCLUDE STRUCTURE DYNPREAD.
DATA: END OF DYNPFIELDS.
*
DYNPFIELDS-FIELDNAME = 'P_AUTHOR'. APPEND DYNPFIELDS.
*
CALL FUNCTION 'DYNP_VALUES_READ'
EXPORTING
DYNAME = SY-REPID
DYNUMB = SY-DYNNR
TABLES
DYNPFIELDS = DYNPFIELDS
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.
*
IF SY-SUBRC = 0.
READ TABLE DYNPFIELDS WITH KEY FIELDNAME = 'P_AUTHOR'.
P_AUTHOR = DYNPFIELDS-FIELDVALUE.
ELSE.
EXIT.
ENDIF.
*
befor SELECT obj_name
Regards, Dieter
2009 Sep 15 8:48 AM
Thanks a lot, Dieter. I've tried this and the FM works perfectly.
| User | Count |
|---|---|
| 6 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 |