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

Failure in implementing search help

former_member367551
Participant
0 Likes
512

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.

...

1 ACCEPTED SOLUTION
Read only

Former Member
0 Likes
467

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.

...

2 REPLIES 2
Read only

Former Member
0 Likes
468

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

Read only

0 Likes
467

Thanks a lot, Dieter. I've tried this and the FM works perfectly.