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

'F4IF_INT_TABLE_VALUE_REQUEST' process on value-request

Former Member
0 Likes
3,572

Dear All,

I' ve some problem during search help using 'F4IF_INT_TABLE_VALUE_REQUEST on my screen.

let's say that i have 2 field , A and B at a screen.

then I have search help for field B, that is using A as a filter for the search help.

the problem is when i replace the value on field A at the screen, the field value on the screen is not directly pass to the one on the program, and then the search help for B shows a wrong help.

is there any function that i can call to pass the value on screen, into the field A, without first passing by PAI section?

Tks & Rgds,

WP.

1 ACCEPTED SOLUTION
Read only

I355602
Product and Topic Expert
Product and Topic Expert
0 Likes
1,251

Hi,

Refer this demo code to get a S.help for BELNR based on user input for BUKRS:-


PARAMETERS : p_belnr TYPE belnr,
             p_bukrs TYPE bukrs.
 
DATA : BEGIN OF itab OCCURS 0,
         belnr TYPE belnr,
       END OF itab.
 
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_belnr.
 
  PERFORM f4_belnr_help USING p_belnr.
 
*&---------------------------------------------------------------------*
*&      Form  f4_belnr_help
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->P_BELNR text
*----------------------------------------------------------------------*
FORM f4_belnr_help USING p_belnr.
 
  DATA : itab TYPE STANDARD TABLE OF it WITH HEADER LINE,
         tb_dynpfields LIKE dynpread OCCURS 0 WITH HEADER LINE,
         v_bukrs TYPE bukrs.
 
  CLEAR:   tb_dynpfields.
  REFRESH: tb_dynpfields.
 
  MOVE 'P_BUKRS' TO tb_dynpfields-fieldname.
  APPEND tb_dynpfields.
 
  CALL FUNCTION 'DYNP_VALUES_READ'
    EXPORTING
      dyname                               = 'Z_F4' "program name
      dynumb                               = '1000' "screen number
    TABLES
      dynpfields                           = tb_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.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
           WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  ENDIF.
 
  READ TABLE tb_dynpfields INDEX 1.
  IF sy-subrc EQ 0.
    v_bukrs = tb_dynpfields-fieldvalue.
  ENDIF.
 
  SELECT belnr from <db_table> INTO TABLE itab WHERE bukrs = v_bukrs.
  CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
    EXPORTING
      retfield               = 'BELNR' "internal table field
      dynpprog               = 'Z_F4' "program name
      dynpnr                 = '1000' "screen number
      dynprofield            = 'P_BELNR' "screen field name
      value_org              = 'S'
    TABLES
      value_tab              = itab "internal table
    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.                    " f4_belnr_help

Hope this helps you.

Regards,

Tarun

5 REPLIES 5
Read only

I355602
Product and Topic Expert
Product and Topic Expert
0 Likes
1,252

Hi,

Refer this demo code to get a S.help for BELNR based on user input for BUKRS:-


PARAMETERS : p_belnr TYPE belnr,
             p_bukrs TYPE bukrs.
 
DATA : BEGIN OF itab OCCURS 0,
         belnr TYPE belnr,
       END OF itab.
 
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_belnr.
 
  PERFORM f4_belnr_help USING p_belnr.
 
*&---------------------------------------------------------------------*
*&      Form  f4_belnr_help
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->P_BELNR text
*----------------------------------------------------------------------*
FORM f4_belnr_help USING p_belnr.
 
  DATA : itab TYPE STANDARD TABLE OF it WITH HEADER LINE,
         tb_dynpfields LIKE dynpread OCCURS 0 WITH HEADER LINE,
         v_bukrs TYPE bukrs.
 
  CLEAR:   tb_dynpfields.
  REFRESH: tb_dynpfields.
 
  MOVE 'P_BUKRS' TO tb_dynpfields-fieldname.
  APPEND tb_dynpfields.
 
  CALL FUNCTION 'DYNP_VALUES_READ'
    EXPORTING
      dyname                               = 'Z_F4' "program name
      dynumb                               = '1000' "screen number
    TABLES
      dynpfields                           = tb_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.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
           WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  ENDIF.
 
  READ TABLE tb_dynpfields INDEX 1.
  IF sy-subrc EQ 0.
    v_bukrs = tb_dynpfields-fieldvalue.
  ENDIF.
 
  SELECT belnr from <db_table> INTO TABLE itab WHERE bukrs = v_bukrs.
  CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
    EXPORTING
      retfield               = 'BELNR' "internal table field
      dynpprog               = 'Z_F4' "program name
      dynpnr                 = '1000' "screen number
      dynprofield            = 'P_BELNR' "screen field name
      value_org              = 'S'
    TABLES
      value_tab              = itab "internal table
    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.                    " f4_belnr_help

Hope this helps you.

Regards,

Tarun

Read only

Former Member
0 Likes
1,251

Hi William,

This is very simple you need to call another FM 'DYNP_VALUES_READ' before calling 'F4IF_INT_TABLE_VALUE_REQUEST' to actualy read the value selected for field A and pass this selected value to field B in this second FM.

Code snippet given above help you more how to use above 2 FM module and what all to pass as aruments.

Hope now you will able to solve the problem.

Pooja

Read only

Former Member
0 Likes
1,251

EXAMPLE:-


MODULE module_help INPUT.
  DATA: w_progname LIKE sy-repid,
  w_scr_num LIKE sy-dynnr .
  DATA: return_values LIKE ddshretval OCCURS 0 WITH HEADER LINE.
  DATA: itab_dynpfields LIKE dynpread OCCURS 0 WITH HEADER LINE,
  t_dynpfields LIKE dynpread.
  DATA: t_dyname LIKE d020s-prog,
  t_dynumb LIKE d020s-dnum.
  DATA : fd_name LIKE help_info-dynprofld.
  DATA: BEGIN OF int_f4 OCCURS 0,
         kunnr TYPE kna1-kunnr,
         name1 TYPE kna1-name1,
         land1 TYPE kna1-land1,
         regio TYPE kna1-regio,
         adrnr TYPE kna1-adrnr,
        END OF int_f4.

****GETTING RECORDS IN THE INTERNAL TABLE FOR F4 DISPLAY

  SELECT kunnr name1 land1 regio adrnr
   INTO  TABLE int_f4
   FROM kna1
   UP TO 10 ROWS.

  CLEAR int_f4.
****function module to get pop-up window of f4.
  CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
       EXPORTING
            retfield        = 'KUNNR'
            dynpprog        = w_progname
            dynpnr          = w_scr_num
            dynprofield     = 'TB_WA-KUNNR'
            value_org       = 'S'
       TABLES
            value_tab       = int_f4
            return_tab      = return_values
       EXCEPTIONS
            parameter_error = 1
            no_values_found = 2
            OTHERS          = 3.

  IF sy-subrc <> 0.
    MESSAGE s000(zsn) WITH 'could not find the  values'.
*    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*    WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  ELSE .
    kunnr = return_values-fieldval.
  ENDIF.

  REFRESH itab_dynpfields.
  CLEAR: itab_dynpfields.
  t_dynpfields-fieldname = 'TB_WA-KUNNR'.
  APPEND t_dynpfields TO itab_dynpfields.
  t_dynumb = sy-dynnr.
  t_dyname = sy-repid.

* This function module must have the values added to
* the internal table that you need t oread.
  CALL FUNCTION 'DYNP_VALUES_READ'
       EXPORTING
            dyname               = t_dyname
            dynumb               = t_dynumb
       TABLES
            dynpfields           = itab_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.
*    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*    WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  ENDIF.
  break developer.
  LOOP AT itab_dynpfields.
    CASE itab_dynpfields-fieldname.
      WHEN 'TB_WA-KUNNR'.
        itab_dynpfields-fieldvalue = kunnr.
        MODIFY itab_dynpfields.
    ENDCASE.
  ENDLOOP.
  CALL FUNCTION 'DYNP_VALUES_UPDATE'
       EXPORTING
            dyname               = t_dyname
            dynumb               = t_dynumb
       TABLES
            dynpfields           = itab_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.

  IF sy-subrc <> 0.
*    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*    WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  ENDIF.

  REFRESH int_f4.
  CLEAR int_f4.
ENDMODULE. " SOURCE_HELP INPUT

Read only

Former Member
0 Likes
1,251

Hi,

This function module it self fatches value. I am sending some code in my object. check with this.

Select BSTKD KUNNR KUNNR1 ZZBIRFLAG VBELN into table LT_HELP from T903740.

IF P-BSTKD = 'S-BSTKD-LOW'.

CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'

EXPORTING

Retfield = 'BSTKD'

Dynpprog = SY-REPID

Dynpnr = sy-dynnr

Dynprofield = 'S_BSTKD_LOW'

TABLES

Value-Tab = LT_Help

Return-Tab = Lt_return

Exceptions.

If Sy-subrc <> 0

Clear Cv_BSTKD.

Else

Read table LT_Return Index 1.

It sy-subrc = 0.

Cv_BSTKD = LT_Return-Fieldval

endif.

endif.

Regards

Md.MahaboobKhan

Read only

Former Member
0 Likes
1,251

Dear Tarun Gambhir , Pooja Gupta , Krupa Jani, Md.MahaboobKhan.

Thanks for the answer.

It solved my problem.

Regards,

WP.