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

AT SELECTION-SCREEN ON VALUE-REQUEST FOR not input value in input field

Former Member
0 Likes
6,465

Dear All,

I make search help for field ARBPL in selection screen are not excepted selected value.

Code is

----------------------------------------------------------------------------------------

SELECT-OPTIONS:  p_arbpl FOR zdmde-arbpl MODIF ID two.






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

REFRESH sh_arbpl.

SELECT * from crhd into CORRESPONDING FIELDS OF TABLE sh_arbpl.

CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'

   EXPORTING

     RETFIELD               = 'P_ARBPL'

     DYNPROFIELD            = 'P_ARBPL'

     VALUE_ORG              = 'S'

   TABLES

     VALUE_TAB              = sh_arbpl.

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

REFRESH sh_arbpl.

SELECT * from crhd into CORRESPONDING FIELDS OF TABLE sh_arbpl.

CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'

   EXPORTING

     RETFIELD               = 'P_ARBPL'

     DYNPROFIELD            = 'P_ARBPL'

     VALUE_ORG              = 'S'

   TABLES

     VALUE_TAB              = sh_arbpl.

Please tell how to input selected field from search help into input field in both low and high.

Would appreciate your reply .


Regards,

Pooja

1 ACCEPTED SOLUTION
Read only

Former Member
0 Likes
1,719

Hi Pooja,

Your parameter value in FM for RETFIELD seems to be wrong.

DATA: it_ret TYPE ddshretval OCCURS 0 WITH HEADER LINE.

DATA: wa_fieldname TYPE fieldname.



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

wa_fieldname = 'ARBPL'

CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
     EXPORTING
       retfield   =   wa_fieldname  "field name in your value tab i.e
sh_arbpl.
       value_org  = 'S'
     TABLES
       value_tab  =
sh_arbpl[]
       return_tab = it_ret[].


IF sy-subrc EQ 0.
     READ TABLE it_ret INDEX 1.
     p_arbpl-low = it_ret-fieldval.
   ENDIF.



Here wa_fieldname should be the name of the field in the value table sh_arbpl corresponding to p_arbpl.


Then you need to give the return table it_ret also in the FM and pass the value in this to the screen.


Else, another option would be to give the program name and screen number also in the FM.


wa_fieldname = 'ARBPL'

CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
     EXPORTING
       retfield   =   wa_fieldname  "field name in your value tab i.e
sh_arbpl.

       DYNPROFIELD  = 'P_ARBPL'
        DYNPPROG    = SY-CPROG
       DYNPNR      = SY-DYNNR
     

   value_org  = 'S'
     TABLES
       value_tab  =
sh_arbpl[].


Similarly, do the same for p_arbpl-high.






7 REPLIES 7
Read only

SyambabuAllu
Contributor
0 Likes
1,719

This message was moderated.

Read only

Former Member
0 Likes
1,720

Hi Pooja,

Your parameter value in FM for RETFIELD seems to be wrong.

DATA: it_ret TYPE ddshretval OCCURS 0 WITH HEADER LINE.

DATA: wa_fieldname TYPE fieldname.



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

wa_fieldname = 'ARBPL'

CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
     EXPORTING
       retfield   =   wa_fieldname  "field name in your value tab i.e
sh_arbpl.
       value_org  = 'S'
     TABLES
       value_tab  =
sh_arbpl[]
       return_tab = it_ret[].


IF sy-subrc EQ 0.
     READ TABLE it_ret INDEX 1.
     p_arbpl-low = it_ret-fieldval.
   ENDIF.



Here wa_fieldname should be the name of the field in the value table sh_arbpl corresponding to p_arbpl.


Then you need to give the return table it_ret also in the FM and pass the value in this to the screen.


Else, another option would be to give the program name and screen number also in the FM.


wa_fieldname = 'ARBPL'

CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
     EXPORTING
       retfield   =   wa_fieldname  "field name in your value tab i.e
sh_arbpl.

       DYNPROFIELD  = 'P_ARBPL'
        DYNPPROG    = SY-CPROG
       DYNPNR      = SY-DYNNR
     

   value_org  = 'S'
     TABLES
       value_tab  =
sh_arbpl[].


Similarly, do the same for p_arbpl-high.






Read only

rosenberg_eitan
Active Contributor
0 Likes
1,719

Hi,

Some code that use F4IF_INT_TABLE_VALUE_REQUEST:


REPORT  y_r_eitan_test_30_07.



TYPE-POOLS: abap .



TABLES: sflight .



SELECT-OPTIONS: s_carrid FOR sflight-carrid NO-EXTENSION NO INTERVALS OBLIGATORY .

SELECT-OPTIONS: s_connid FOR sflight-connid NO-EXTENSION NO INTERVALS OBLIGATORY .

SELECT-OPTIONS: s_fldate FOR sflight-fldate .



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

  PERFORM at_value_request_for_fldate USING 'S_FLDATE-LOW' CHANGING s_fldate-low  .



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

  PERFORM at_value_request_for_fldate USING 'S_FLDATE-HIGH' CHANGING s_fldate-high  .



FORM at_value_request_for_fldate

  USING

    fieldname  TYPE dynpread-fieldname

  CHANGING

    fldate     TYPE sflight-fldate .



  DATA: it_dynfields TYPE TABLE OF dynpread ,

        st_dynfields LIKE LINE OF it_dynfields .



*  GET CURSOR FIELD st_dynfields-fieldname  .

*  APPEND st_dynfields TO it_dynfields .



  st_dynfields-fieldname = 'S_CARRID-LOW'.

  APPEND st_dynfields TO it_dynfields.

  st_dynfields-fieldname = 'S_CONNID-LOW'.

  APPEND st_dynfields TO it_dynfields.

  st_dynfields-fieldname = fieldname .

  APPEND st_dynfields TO it_dynfields.



  CALL FUNCTION 'DYNP_VALUES_READ'

    EXPORTING

      dyname               = sy-cprog

      dynumb               = sy-dynnr

      translate_to_upper   = abap_true

    TABLES

      dynpfields           = it_dynfields

    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.



  DATA: st_sflight TYPE sflight .



  FIELD-SYMBOLS: <st_dynfields> LIKE LINE OF it_dynfields .



  LOOP AT it_dynfields ASSIGNING <st_dynfields> .

    CASE <st_dynfields>-fieldname .

      WHEN 'S_CARRID-LOW' .

        st_sflight-carrid = <st_dynfields>-fieldvalue .

      WHEN 'S_CONNID-LOW' .

        st_sflight-connid = <st_dynfields>-fieldvalue .

      WHEN OTHERS.

    ENDCASE.



  ENDLOOP.



  DATA: it_sflight TYPE TABLE OF sflight WITH HEADER LINE .



  SELECT * INTO TABLE it_sflight

  FROM sflight

  WHERE

    carrid EQ st_sflight-carrid AND

    connid EQ st_sflight-connid .



  DATA: it_return TYPE TABLE OF ddshretval WITH HEADER LINE .



  CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'

    EXPORTING

      retfield        = 'FLDATE'

      value_org       = 'S'

    TABLES

      value_tab       = it_sflight

      return_tab      = it_return

    EXCEPTIONS

      parameter_error = 1

      no_values_found = 2

      OTHERS          = 3.



  READ TABLE it_return INDEX 1 .



  CHECK sy-subrc EQ 0 .



  LOOP AT it_dynfields ASSIGNING <st_dynfields> .

    CASE <st_dynfields>-fieldname .

      WHEN fieldname .

        <st_dynfields>-fieldvalue = it_return-fieldval .

      WHEN OTHERS.

    ENDCASE.

  ENDLOOP .



  CALL FUNCTION 'DYNP_VALUES_UPDATE'

    EXPORTING

      dyname               = sy-cprog

      dynumb               = sy-dynnr

    TABLES

      dynpfields           = it_dynfields

    EXCEPTIONS

      invalid_abapworkarea = 1

      invalid_dynprofield  = 2

      invalid_dynproname   = 3

      invalid_dynpronummer = 4

      invalid_request      = 5

      no_fielddescription  = 6

      undefind_error       = 7

      OTHERS               = 8.



ENDFORM .                    "at_value_request_for_fldate

*----------------------------------------------------------------------*


Regards.

Read only

Former Member
0 Likes
1,719

Hello Pooja,

As Susmitha Susan Thomas suggested please pass values from the return table to input field.

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

REFRESH sh_arbpl.

SELECT * from crhd into CORRESPONDING FIELDS OF TABLE sh_arbpl.

CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'

EXPORTING

      RETFIELD = 'P_ARBPL'

      DYNPROFIELD = 'P_ARBPL'

      VALUE_ORG = 'S'

  TABLES

     VALUE_TAB = sh_arbpl.

Write sh_arbpl-FIELDVAL TO p_arbpl-low.

Same applies to p_arbpl-high field also.

Read only

sivaganesh_krishnan
Contributor
0 Likes
1,719

Hi Pooja,

For getting the response back from the user selection , please get the return code too. Before that instead of directly using the table crhd structure.. please do create a type declaration of that table , make sure that the field that you wanted to get using search help be specified at last of declaration type like this


TYPES: BEGIN OF ty,

   OBJTY TYPE CR_OBJTY,

        ARBPL TYPE ARBPL,

END OF ty.

this is because the return parameter t_rtn will holds the last value of type which been selected by user.

CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'

    EXPORTING

      RETFIELD               = 'P_ARBPL'

      DYNPROFIELD            = 'P_ARBPL'

      VALUE_ORG              = 'S'

    TABLES

      VALUE_TAB              = sh_arbpl

      return_tab             = t_rtn.

LOOP AT  t_rtn INTO x_rtn .

   ENDLOOP.


try executing this code.

TABLES crhd.

TYPES: BEGIN OF ty,

   OBJTY TYPE CR_OBJTY,

        ARBPL TYPE ARBPL,

   END OF ty.

DATA: sh_arbpl TYPE TABLE OF ty.

       DATA: dynpfields TYPE TABLE OF DYNPREAD,

x_dynpfields TYPE dynpread,

t_rtn TYPE STANDARD TABLE OF DDSHRETVAL ,

x_rtn TYPE  DDSHRETVAL.

SELECT-OPTIONSp_arbpl FOR crhd-ARBPL MODIF ID two.

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

REFRESH sh_arbpl.

SELECT  * from crhd into CORRESPONDING FIELDS OF TABLE sh_arbpl WHERE werks eq '1000'.

CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'

    EXPORTING

      RETFIELD               = 'P_ARBPL'

      DYNPROFIELD            = 'P_ARBPL'

      VALUE_ORG              = 'S'

    TABLES

      VALUE_TAB              = sh_arbpl

      return_tab             = t_rtn.

LOOP AT  t_rtn INTO x_rtn .

   ENDLOOP.

x_dynpfields-fieldname = 'P_ARBPL-LOW' .

   x_dynpfields-fieldvalue = x_rtn-fieldval.

   APPEND x_dynpfields TO dynpfields.

   CALL FUNCTION 'DYNP_VALUES_UPDATE'

     EXPORTING

       dyname                     = sy-cprog

       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

*     UNDEFIND_ERROR             = 7

*     OTHERS                     = 8

             .


Regards,

Sivaganesh





Read only

thirus11
Participant
0 Likes
1,719

This message was moderated.

Read only

Former Member
0 Likes
1,719

Hi Pooja,

Pass two more exporting parameters like below.

  CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'

    EXPORTING

      RETFIELD    = 'P_ARBPL'

      DYNPROFIELD = 'P_ARBPL'

      DYNPPROG    = SY-REPID

      DYNPNR      = SY-DYNNR

      VALUE_ORG   = 'S'

    TABLES

      VALUE_TAB   = LT.

Check this. now it'll work.

Regards,

jack.