F4IF_INT_TABLE_VALUE_REQUEST value_tab cleared

Hi all,
i'm using the bapi in object.
I use it in a table control.
It runs well when i start it for the first time.
If i open the match code for the second field the value_tab is displayed with initial values:
1st time:    SRVPOS         KTEXT1
                  1                     descr1
                  2                     descr2... ecc
2nd time  KTEXT1         KTEXT1
               0000000            descr1
               0000000            descr2... ecc
The header too is not correct.
Anybody can help me?
Thanks.
MY CODE----
DATA: field_tab LIKE dfies OCCURS 0 WITH HEADER LINE.
  DATA: return_tab TYPE ddshretval OCCURS 0 WITH HEADER LINE.
*  DATA: BEGIN OF value_tab OCCURS 0,
*         srvpos like esll-srvpos,
*         ktext1 like esll-ktext1,
*   END OF value_tab.
  DATA: value_tab LIKE esll OCCURS 0 WITH HEADER LINE.
  CLEAR: value_tab, return_tab.
  REFRESH value_tab[].
  REFRESH field_tab[].
  REFRESH return_tab[].
    field_tab-fieldname = 'SRVPOS'.
    field_tab-tabname = 'ESLL'.
    field_tab-offset = '18'.
    field_tab-position = '1'.
    field_tab-keyflag = 'X'.
    field_tab-intlen = 15.
    field_tab-leng = 15.
    field_tab-outputlen = 15.
    field_tab-scrtext_m = 'Prestazione'.
    APPEND field_tab.
    CLEAR field_tab.
    field_tab-fieldname = 'KTEXT1'.
    field_tab-tabname = 'ESLL'.
    field_tab-position = '2'.
    field_tab-offset = '40'.
    field_tab-intlen = 15.
    field_tab-leng = 15.
    field_tab-outputlen = 15.
    field_tab-scrtext_m = 'Descrizione'.
    APPEND field_tab.
    CLEAR field_tab.
  DATA: check_fieldval LIKE return_tab-fieldval.
    LOOP AT tadd.
      MOVE-CORRESPONDING tadd TO value_tab.
      APPEND value_tab.
      CLEAR value_tab.
    ENDLOOP.
    CLEAR tadd.
  SORT value_tab.
  DELETE ADJACENT DUPLICATES FROM value_tab.
  CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
    EXPORTING
      retfield        = 'SRVPOS'
      value_org       = 'S'
      dynpprog        = sy-repid
      dynpnr          = sy-dynnr
    TABLES
      value_tab       = value_tab
      field_tab       = field_tab
      return_tab      = return_tab
    EXCEPTIONS
      parameter_error = 1
      no_values_found = 2
      OTHERS          = 3.
  IF sy-subrc = 0.
    wins-srvpos = return_tab-fieldval.
  ENDIF.
Edited by: SAPDUMMY on Feb 9, 2011 12:38 PM

Hi,
     Declare another value tab for the second field ...
DATA: value_tab1 LIKE esll OCCURS 0 WITH HEADER LINE.
DATA: value_tab2 LIKE esll OCCURS 0 WITH HEADER LINE.
Also both the times the return field is SRVPOS ... for the second change the return field ....
Regards,
Srini.

Similar Messages

  • F4IF_INT_TABLE_VALUE_REQUEST - how can I return all values from the line?

    Hi,
    I'm using FM F4IF_INT_TABLE_VALUE_REQUEST to show a pop-up with my internal table values.  The internal table has 3 fields, ATINN, ATZHL and a description field ATWTB.  ATINN and ATZHL are needed to complete the unique table key, however this FM will only return the value of one field in any line I select.
    How can I see all the values in the line I select in the return table?
    My code is as follows:
      DATA: tbl_cawnt LIKE cawnt OCCURS 0,
            wa_cawnt LIKE cawnt,
            BEGIN OF tbl_list OCCURS 0,
              atinn LIKE cawnt-atinn,
              atzhl LIKE cawnt-atzhl,
              atwtb LIKE cawnt-atwtb,
            END OF tbl_list,
            wa_list LIKE tbl_list,
            tbl_return LIKE ddshretval OCCURS 0,
            wa_return LIKE ddshretval,
            tbl_fields LIKE dfies OCCURS 0,
            tbl_dynp LIKE dselc OCCURS 0.
      REFRESH: tbl_list, tbl_cawnt.
      SELECT atinn atzhl atwtb
        FROM cawnt
        INTO CORRESPONDING FIELDS OF TABLE tbl_cawnt
        WHERE spras EQ sy-langu.
      LOOP AT tbl_cawnt INTO wa_cawnt.
        CLEAR wa_list.
        MOVE: wa_cawnt-atwtb TO wa_list-atwtb,
              wa_cawnt-atinn TO wa_list-atinn,
              wa_cawnt-atzhl TO wa_list-atzhl.
        APPEND wa_list TO tbl_list.
      ENDLOOP.
      CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
        EXPORTING
          retfield        = 'ATWTB'
          dynpprog        = sy-repid
          dynpnr          = sy-dynnr
          value_org       = 'S'
        TABLES
          value_tab       = tbl_list
          return_tab      = tbl_return
        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.
    Thanks!

    Hi,
      Use the structure DYNPFLD_MAPPING
    With this internal table you can easily define that you want to return
    other columns of the hit list in addition to field RETFIELD to the
    screen.
    In this IT you can MAP the screen fields to the serch help screen fields this has three fields
    FLDNAME this is the field anme from the search help
    FLDINH This has to be blank which would be field with the field value that you want to map
    DYFLDNAME THis is the screen field name.
    So here you can get the values for the other fields that you want which are on the search help just populate the name of the fields in FLDNAME.
    Regards,
    Himanshu

  • F4IF_INT_TABLE_VALUE_REQUEST help

    hi,
    I have a table of 2 values ( WBS and project definition code ) , I used this function F4IF_INT_TABLE_VALUE_REQUEST for F4 on the project definition field. After that I want to return both Project definition and WBS that I've selected . I used value_org = 'S" but I can get only 1 record in the return_table ? Could you please help me?
    Thanks in advance

    Hi,
    Check this Code..
    F4 help is povided on the P_PLNNR field and if any data is selected then P_PLNNR and P_PLNAL is updated in the screen. Both values are shown in the F4 help(P_PLNNR and P_PLNAL ).
    PARAMETES : p_werks type ...
    PARAMETES : p_plnnr type ....
    PARAMETES : p_plnal type....
    AT SELECTION-SCREEN ON P_PLNNR.
      data:
        lg_condition    type string.
      data:
         lwa_ddshretval type ddshretval,
         lwa_dselc      type dselc,
         lwa_dynpread   type dynpread.
      data:
         li_f4_insp     type standard table of t_f4_insp,
         li_ddshretval  type standard table of ddshretval,
         li_dselc       type standard table of dselc,
         li_dynpread    type standard table of dynpread.
      lwa_dynpread-fieldname = 'P_WERKS'.
      append lwa_dynpread to li_dynpread.
      clear lwa_dynpread.
    * Read Screen Field Values.
      call function 'DYNP_VALUES_READ'
        exporting
          dyname     = sy-repid
          dynumb     = sy-dynnr
        tables
          dynpfields = li_dynpread.
    * Read the first record as only one record will be present
      read table li_dynpread into lwa_dynpread index 1.
      p_werks = lwa_dynpread-fieldvalue.
      if p_werks is initial.
        move 'PLNTY EQ ''Q''' to lg_condition.
      else.
        move 'WERKS EQ P_WERKS AND PLNTY EQ ''Q''' to lg_condition.
      endif.
    * Fetch Data
      select werks
             plnnr
             plnal
             plnty
             ktext
        into table li_f4_insp
        from plko
        where (lg_condition).
      lwa_dselc-fldname = 'F0002'.
      lwa_dselc-dyfldname = 'PLNNR'.
      append lwa_dselc to li_dselc.
      clear lwa_dselc.
      lwa_dselc-fldname = 'F0003'.
      lwa_dselc-dyfldname = 'PLNAL'.
      append lwa_dselc to li_dselc.
      clear lwa_dselc.
    * FM For F4 Help
      call function 'F4IF_INT_TABLE_VALUE_REQUEST'
        exporting
          retfield        = 'PLNNR'
          dynpprog        = sy-cprog
          dynpnr          = sy-dynnr
          dynprofield     = 'PLNNR'
          value_org       = 'S'
        tables
          value_tab       = li_f4_insp
          return_tab      = li_ddshretval
          dynpfld_mapping = li_dselc
        exceptions
          parameter_error = 1
          no_values_found = 2
          others          = 3.
      if sy-subrc eq 0.
        refresh li_dynpread.
        read table li_ddshretval into lwa_ddshretval index 1.
        if sy-subrc eq 0.
          move lwa_ddshretval-fieldval to p_plnnr.
          lwa_dynpread-fieldname = 'P_PLNNR'.
          lwa_dynpread-fieldvalue = lwa_ddshretval-fieldval.
          append lwa_dynpread to li_dynpread.
          clear lwa_dynpread.
        endif.                             " IF sy-subrc EQ 0.
        read table li_ddshretval into lwa_ddshretval index 2.
        if sy-subrc eq 0.
          move lwa_ddshretval-fieldval to p_plnal.
          lwa_dynpread-fieldname = 'P_PLNAL'.
          lwa_dynpread-fieldvalue = lwa_ddshretval-fieldval.
          append lwa_dynpread to li_dynpread.
          clear lwa_dynpread.
        endif.                             " IF sy-subrc EQ 0.
      endif.                               " IF sy-subrc EQ 0.
    * Set Screen Field Values.
      call function 'DYNP_VALUES_UPDATE'
        exporting
          dyname               = sy-repid
          dynumb               = sy-dynnr
        tables
          dynpfields           = li_dynpread
        exceptions
          invalid_abapworkarea = 1
          invalid_dynprofield  = 2
          invalid_dynproname   = 3
          invalid_dynpronummer = 4
          invalid_request      = 5
          no_fielddescription  = 6
          undefind_error       = 7
          others               = 8.
      check sy-subrc eq 0.

  • F4IF_INT_TABLE_VALUE_REQUEST and search in fields

    Hi Friends,
    I want to make a search operation with F4IF_INT_TABLE_VALUE_REQUEST. My code is;
      DATA:
      BEGIN OF HELP_LIST OCCURS 0,
             ID LIKE ZLIST-ID,
             NAME LIKE ZLIST-NAME,
            SNAME LIKE ZLIST-SNAME,
      END OF HELP_LIST,
      FIELD_TAB LIKE DFIES OCCURS 0 WITH HEADER LINE.
      CLEAR FIELD_TAB.
      FIELD_TAB-TABNAME = 'HELP_LIST'.
      FIELD_TAB-FIELDNAME = 'ID'.
      FIELD_TAB-POSITION = 0.
      FIELD_TAB-OFFSET = 0.
      FIELD_TAB-REPTEXT =  'ID'.
      FIELD_TAB-INTLEN = 9.
      FIELD_TAB-OUTPUTLEN = 9.
      APPEND FIELD_TAB.
      CLEAR FIELD_TAB.
      FIELD_TAB-TABNAME = 'HELP_LIST'.
      FIELD_TAB-FIELDNAME = 'NAME'.
      FIELD_TAB-POSITION = 1.
      FIELD_TAB-OFFSET = 9.
      FIELD_TAB-REPTEXT =  'Name'.
      FIELD_TAB-INTLEN = 50.
      FIELD_TAB-OUTPUTLEN = 50.
      APPEND FIELD_TAB.
    CLEAR FIELD_TAB.
      FIELD_TAB-TABNAME = 'HELP_LIST'.
      FIELD_TAB-FIELDNAME = 'SNAME'.
      FIELD_TAB-POSITION = 1.
      FIELD_TAB-OFFSET = 9.
      FIELD_TAB-REPTEXT =  'Surname'.
      FIELD_TAB-INTLEN = 50.
      FIELD_TAB-OUTPUTLEN = 50.
      APPEND FIELD_TAB.
      SELECT ID NAME SNAME
      FROM ZLIST
      INTO TABLE HELP_LIST.
      CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
           EXPORTING
                RETFIELD        = 'ID'
                VALUE_ORG       = 'S'
                DYNPPROG        = 'ZPROJECT'
                DYNPNR          = '0202'
                DYNPROFIELD     = 'TMP_ID'
                WINDOW_TITLE    = 'Search'
           TABLES
                VALUE_TAB       = HELP_LIST
                FIELD_TAB       = FIELD_TAB
           EXCEPTIONS
                PARAMETER_ERROR = 1
                NO_VALUES_FOUND = 2
                OTHERS          = 3.
    Respect to above code, I can list my values. And when I want to try 'H*' for Name field, I am getting error as : "Not possible to restrict with search pattern here"
    But, If I don't pass FIELD_TAB table, I don't get error. I need to pass this table for another reason. But also I need to search for name and surname fields.
    How can I do?
    Thanks.

    Hi Uwe,
        Thank you for your response. Yes, that is an option I was thinking of as an alternative.
        I want to display to the user the User_Addrs selection-window, with the names. Once they choose the multiple-selection list of names, I want them to be able to save the user address and the associated first/last names in the variant.
        The selection screen can be cut down to possibly one less selection-field: by combining the first/last name...but the update to screen-fields would likely still be a problem.
      Still working on this one, 
       Dan Perecky

  • F4IF_INT_TABLE_VALUE_REQUEST -Restrictions dialog box

    Hi,
    I am using the function module F4IF_INT_TABLE_VALUE_REQUEST in screens, to implement a search help in my program , but instead of directly displaying the hit list , i want the restrictions screen to be displayed first with some default values, and the list should be displayed only based on the valuies entered in thius restrictions screen. How can i do this using this function module.
    To be more precise,
    i need the restrictions dialog box to be displayed and this will have 6 fields. i have to pass values to 2 fields from my program, the first field need not be filled and teh remaining fields should be left for the user to enter.
    how do i achieve this?
    Please help.

    Check the sample code. Using the Event PROCEE ON VALUE-REQUEST we can get the F4 Help.
    PROGRAM  ztest_duplica.
    DATA: kunnr1(10),
               kunnr2(10).
    *&      Module  USER_COMMAND_0100  INPUT
    *       text
    MODULE user_command_0100 INPUT.
      CASE sy-ucomm.
        WHEN 'BACK'.
          LEAVE TO SCREEN 0.
      ENDCASE.
    ENDMODULE.                 " USER_COMMAND_0200  INPUT
    *&      Module  get_help  INPUT
    *       text
    MODULE get_help INPUT.
      DATA:i_retab TYPE TABLE OF  ddshretval,
           wa_ret TYPE ddshretval.
      TYPES: BEGIN OF x_itab,
      kunnr TYPE kunnr,    "it should be type to some standard data element
      END OF x_itab.
      FIELD-SYMBOLS: <fs> TYPE ANY.
      CLEAR : kunnr1, kunnr2.
      DATA: dynfield  TYPE help_info-dynprofld,
            wa_itab TYPE x_itab,
            i_tab LIKE TABLE OF wa_itab WITH HEADER LINE.
      CLEAR  dynfield.
      IF sy-dynnr = '0100'.
        dynfield = 'KUNNR1'.
      ELSE.
        dynfield = 'KUNNR2'.
      ENDIF.
      SELECT kunnr FROM kna1
          INTO TABLE i_tab
          UP TO 20 ROWS.
      "retfield we will pass the column name we are going to get from f4
      CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
        EXPORTING
          retfield    = 'KUNNR'   "<---Return field column name
          dynpprog    = sy-repid
          dynpnr      = sy-dynnr
          dynprofield = dynfield
          value_org   = 'S'
        TABLES
          value_tab   = i_tab
          return_tab  = i_retab.
      IF sy-subrc EQ 0.
        READ TABLE i_retab INTO wa_ret INDEX 1.
        ASSIGN (dynfield) TO <fs> .
        <fs> = wa_ret-fieldval .
        UNASSIGN <fs>.
      ENDIF.
    ENDMODULE.                 " get_help  INPUT
    Flow logic for 100 screen
    screen consists of Input field pointing to KUNNR1
    PROCESS BEFORE OUTPUT.
    * MODULE STATUS_0100.
    PROCESS AFTER INPUT.
    MODULE USER_COMMAND_0100.
    process on value-request.
    field kunnr1 module get_help.
    Create a Tcode and Intitial screen 100. and check it .
    Regards
    Vijay Babu Dudla

  • F4IF_INT_TABLE_VALUE_REQUEST not returning value with 2 decimals point

    hi all,
    i use function F4IF_INT_TABLE_VALUE_REQUEST to do search help, the master data in table ZINVEST has field ZNO, with field type CURR , 2 decimals point.
    the return table shows 2 decimals point but in display screen it only shows 1 decimal point, pls advice
    here's the coding:
    DATA : BEGIN OF itab OCCURS 0,
              e_value(20),
             END OF itab.
      DATA: BEGIN OF field_tab OCCURS 0.
              INCLUDE STRUCTURE dfies.
      DATA END OF field_tab.
      DATA : return_tab LIKE ddshretval OCCURS 0 .
          CLEAR field_tab.
          field_tab-fieldname = 'E_VALUE'.
          field_tab-intlen = 17.
          field_tab-outputlen = 17.
          field_tab-decimals = 2.
          field_tab-inttype = 'C'.
          field_tab-scrtext_m = 'Investment No'.
          APPEND field_tab.
          SELECT * FROM ZINVEST.
            CLEAR: itab.
            itab-e_value = ZINVEST-ZNO.
            APPEND itab.
          ENDSELECT.
      CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
        EXPORTING
          retfield        = 'E_VALUE'
          dynprofield     = 'A'
          dynpprog        = sy-cprog
          dynpnr          = sy-dynnr
        TABLES
          value_tab       = itab
          field_tab       = field_tab
          return_tab      = return_tab
        EXCEPTIONS
          parameter_error = 1
          no_values_found = 2
          OTHERS          = 3.

    Hi ester,
    You shud try this way. Try to use this code.
    DATA:  BEGIN OF it_help OCCURS 0,
           zuonr TYPE zvinvoice,
           kunnr TYPE kunnr,
           name  TYPE zvcustname,
           END OF it_help.
    SELECT-OPTIONS: p_zuonr FOR bsid-zuonr.
    SELECT DISTINCT
             zuonr
             kunnr
      INTO CORRESPONDING FIELDS OF TABLE it_help
      FROM bsid
      WHERE zuonr <> space.
      SORT it_help BY zuonr kunnr.
      DELETE ADJACENT DUPLICATES FROM it_help
      COMPARING zuonr kunnr.
      IF it_help[] IS NOT INITIAL.
        SELECT kunnr
               name1
               name2
        INTO TABLE it_kna1
        FROM kna1
        FOR ALL ENTRIES IN it_help
        WHERE kunnr = it_help-kunnr.
        SORT it_kna1 BY kunnr.
        CLEAR v_tabix.
        SORT it_help BY kunnr.
        LOOP AT it_help.
          v_tabix = sy-tabix.
          READ TABLE it_kna1 WITH KEY kunnr = it_help-kunnr
                                      BINARY SEARCH.
          IF sy-subrc EQ 0.
            CONCATENATE it_kna1-name1 it_kna1-name2 INTO it_help-name  
            SEPARATED BY space.
            MODIFY it_help FROM it_help INDEX v_tabix
                                        TRANSPORTING name.
          ENDIF.
        ENDLOOP.
    FORM event_selscr_valreq_for_pzuonr .
    ***Function module to display the search help for the assignment filed****
      CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
        EXPORTING
          retfield         = 'ZUONR'
          dynpprog         = sy-cprog
          dynpnr           = sy-dynnr
          dynprofield      = 'P_ZUONR'
          window_title     = text-029
          value_org        = 'S'
          callback_program = sy-repid
        TABLES
          value_tab        = it_help
        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.
    Reward if help ful.
    Regards
    Azad.

  • F4IF_INT_TABLE_VALUE_REQUEST and first selection of mult

    Hi All,
       I am using F4IF_INT_TABLE_VALUE_REQUEST and it works well, except for the first time.This is a regular report type program.
        o If one item/line is selected the first time, nothing is returned to the screen fields.
        o If more than one item is selected, the first one is lost. The second and other lines make it back to the screen field.
           o The actual values are not displayed until I right-click and select the 'multiple selection' option.
        o The next multiple selects always returns correctly- Whatever is chosen makes it to the bottom of the screen field.
        Using StepL or not does not seem to make a difference.
      Call function 'F4IF_INT_TABLE_VALUE_REQUEST'
        EXPORTING
          retfield        = RtField
          dynpprog        = l_prog             
          dynpnr          = l_screen           
          dynprofield     = specifichlpfld
          Value_org       = 'C'       
          WINDOW_TITLE    = WinTitle
          MULTIPLE_CHOICE = 'X'
        TABLES
          field_Tab       = OutField_Tab
          value_tab       = OutUsrAddrs    
          RETURN_TAB      = RETURN_TAB.
       Thanks for any help,
                       Dan P.

    Hi All,
        This is the code that shows the problem. It can be cut/pasted into a program for demostration.
    *& Report  YDMP_TRY2F4IN_INT_TABLE_VAL_RE                              *
    *& Author: Daniel Perecky                                              *
    *& Test prg for function module call F4IF_INT_TABLE_VALUE_REQUEST.     *
    *& Works, kind of.                                                     *
    *& o If one item/line is selected the first time, nothing is           *
    *&   returned to the screen fields.                                    *
    *& o If more than one item is selected, the first one is lost. The     *
    *&   second and other lines make it back to the screen field.          *
    *&      o The actual values are not displayed until I right-click      *
    *&        and select the 'multiple selection' option.                  *
    *& o The next multiple selects always returns correctly- Whatever is   *
    *&   chosen makes it to the bottom of the screen field.                *
    REPORT  YDMP_TRY3F4IN_INT_TABLE_VAL_RE          .
    Tables: User_Addrs.
    Selection-Screen Begin of Block EMAILN.
    Selection-Screen Skip.
    Selection-screen Begin of Line.
    Selection-Screen Comment 1(25) Text-013.
    Selection-screen End of Line.
    Selection-screen Begin of Line.
    Selection-Screen Comment 1(12) Text-015.
    Selection-Screen Position 10.
    Select-Options: GnrlF for USER_ADDRS-Name_First.
    Selection-Screen Position 63.
    Select-Options: GnrlL for USER_ADDRS-NAME_Last.
    Selection-screen End of Line.
    Selection-screen Begin of Line.
    Selection-Screen Position 68.
    Select-Options: GnrlSpMl for User_Addrs-BName.
    Selection-screen End of Line.
    Selection-Screen Skip.
    Selection-Screen End of Block EMAILN.
    Include type pool SSCR
    TYPE-POOLS SSCR.
    Define the object to be passed to the RESTRICTION parameter
    DATA RESTRICT TYPE SSCR_RESTRICT.
    DATA OPT_LIST TYPE SSCR_OPT_LIST.
    DATA ASSRTD   TYPE SSCR_***.
          CLASS CX_RPTERR_EXCEPTION  DEFINITIO
    CLASS CX_RPTERR_EXCEPTION DEFINITION
                            INHERITING FROM CX_STATIC_CHECK.
    ENDCLASS.                    "CX_RPTERR_EXCEPTION  DEFINITIO
    Initialization.
    Used for function module: 'SELECT_OPTIONS_RESTRICT'
      Clear Opt_List.
      Move 'JUST_EQ' to Opt_List-Name.
      Move 'X' to Opt_List-Options-Eq.
      APPEND OPT_LIST TO RESTRICT-OPT_LIST_TAB.
      Clear Opt_List.
      Move 'NOINTERVLS' to Opt_List-Name.
      Move 'X' to: Opt_List-Options-CP,
                   Opt_List-Options-EQ,
                   Opt_List-Options-GE,
                   Opt_List-Options-GT,
                   Opt_List-Options-LE,
                   Opt_List-Options-LT,
                   Opt_List-Options-NE,
                   Opt_List-Options-NP.
      APPEND OPT_LIST TO RESTRICT-OPT_LIST_TAB.
      Clear Opt_List.
      Clear Assrtd.
      Move: 'B' to Assrtd-Kind,
            'EMAILN' to Assrtd-Name,
            'I'      to Assrtd-SG_Main,
           'N'      to Assrtd-SG_Addy,
            'JUST_EQ' to Assrtd-Op_Main,
          'NOINTERVLS' TO Assrtd-OP_ADDY.
      APPEND Assrtd TO RESTRICT-***_TAB.
    Call function module
      CALL FUNCTION 'SELECT_OPTIONS_RESTRICT'
           EXPORTING
                 RESTRICTION                = RESTRICT
              DB                          = ' '
           EXCEPTIONS
                 TOO_LATE                   = 1
                 REPEATED                   = 2
                 NOT_DURING_SUBMIT          = 3
                DB_CALL_AFTER_REPORT_CALL  = 4
                SELOPT_WITHOUT_OPTIONS     = 5
                 SELOPT_WITHOUT_SIGNS       = 6
                 INVALID_SIGN               = 7
                REPORT_CALL_AFTER_DB_ERROR = 8
                  EMPTY_OPTION_LIST          = 9
                 INVALID_KIND               = 10
                 REPEATED_KIND_A            = 11
                 OTHERS                     = 12.
    Exception handling
      IF SY-SUBRC NE 0.
      ENDIF.
    Use same form for all three fields. Update all fields every time.
    At Selection-Screen on Value-Request for GnrlF-Low.
      Perform GetFillUserInfo Tables GnrlF GnrlL GnrlSpMl.
    At Selection-Screen on Value-Request for GnrlL-Low.
      Perform GetFillUserInfo Tables GnrlF GnrlL GnrlSpMl.
    At Selection-Screen on Value-Request for GnrlSpMl-Low.
      Perform GetFillUserInfo Tables GnrlF GnrlL GnrlSpMl.
    Start-of-Selection.
      Try.
    Some regular report code goes here.
        Catch CX_ROOT.
          CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
          Exit.
      EndTry.
    End-of-Selection.
    *=============================================================================================
    *| Form  GetFillUserInfo                                                                       |
    *| Get all user information from SAP tables and fill out Selection-Screen tables.              |
    *| Fill in all fields for user.                                                                |
    *=============================================================================================
    Form GetFillUserInfo Tables NameF Type Standard Table          NameL Type Standard Table
                                             SAPIds Type Standard Table.
      Data: NameFLoc Type Range of User_Addrs-Name_First with header line,
            NameLLoc Type Range of User_Addrs-Name_Last with header line,
           OutlookLoc Type Range of ZXX_Hrid-ZZ_EMail_Address with header line,
            SAPIdLoc Type Range of User_Addrs-BName with header line.
      data: step_line like sy-stepl.
      Types: Begin of UsrAddrsT.
      Types: BNAME Like User_Addrs-BName,
             NAME_LAST Like User_Addrs-Name_Last,
             NAME_FIRST Like User_Addrs-Name_First,
             NAME_TEXT Like User_Addrs-Name_Text,
             DEPARTMENT Like User_Addrs-Department.
      Types: End of UsrAddrsT.
      Data: UsrAddrsInt type standard table of UsrAddrsT with header line.
      Types: Begin of UsrAddrsT2.
      Types: Value(80) Type C.
      Types: End of UsrAddrsT2.
      Data: UsrAddrs type standard table of UsrAddrsT2 with header line.
      Data: Field_Tab type standard table of DFIES with header line.
      DATA: Return_Tab Type Standard table of ddshretval with HEADER LINE.
      Data: RtField Like DFIES-FIELDNAME,
            WinTitle(40) Type C.
    Generic F4 tables
      Data: OutField_Tab Type Standard table of DFIES with header line,
            OutUsrAddrs Type Standard table of UsrAddrsT2 with header line.
      Data: l_prog like syst-cprog,
            l_screen like syst-dynnr,
            specifichlpfld like Help_Info-Dynprofld.
      Data: TblSz Type I.
      l_prog = syst-cprog.
      l_screen = syst-dynnr.
        Select D2BName D2Name_First D2NAME_LAST D2Name_Text D2~Department
            From ( Usr21 as D1
              Inner Join User_Addrs as D2
              On  D1BName = D2BName )
              Appending Corresponding fields of table UsrAddrsInt
           Where D2~BName <> Space.
        Sort UsrAddrsInt by Name_Last Name_First BName.
        Delete UsrAddrsInt Where BName cs 'n/a' or ( BName = 'Z_USER' and Name_Text cs 'USER SAMPLE' ) or BName = 'SAMPLE'.
    Fill value table- one column data per row.
        Loop at UsrAddrsInt.
          If UsrAddrsInt-BName <> Space.
            Write UsrAddrsInt-BName to Usraddrs-Value.
          Else.
            Write space to UsrAddrs-Value.
          Endif.
          Append UsrAddrs.
          If UsrAddrsInt-NAME_TEXT <> Space.
            Write UsrAddrsInt-NAME_TEXT to Usraddrs-Value.
          Else.
            Write space to UsrAddrs-Value.
          Endif.
          Append UsrAddrs.
          If UsrAddrsInt-DEPARTMENT <> Space.
            Write UsrAddrsInt-DEPARTMENT to Usraddrs-Value.
          Else.
            Write space to UsrAddrs-Value.
          Endif.
          Append UsrAddrs.
        EndLoop.
        Select Distinct d1tabname D1fieldname D1Domname d1Datatype D1~position
               D1rollname D1inttype D1intlen D1leng D1Decimals D1outputLen
            From DD03M as D1
            appending corresponding fields of table Field_tab
          where
             DDLanguage = Syst-Langu  and
             d1~tabname = 'USER_ADDRS' and
             D1~fieldname in ('BNAME', 'NAME_TEXT', 'DEPARTMENT').
        Sort Field_Tab by position.
        Loop at Field_Tab.
          Select Single DDText
               Into Field_Tab-FieldText
            From DD03M
          Where Tabname = Field_Tab-Tabname and
             FieldName = Field_Tab-fieldName and
             DDLanguage = Syst-Langu.
            If Syst-Subrc = 0.
              Modify Field_Tab.
            Endif.
        EndLoop.
        RtField = 'BNAME'.
        WinTitle = 'Find Person(s) for SAP E-Mail'.
        specifichlpfld = 'USR21-BNAME'.
        Clear: OutField_Tab, OutUsrAddrs.  Refresh: OutField_Tab, OutUsrAddrs.
        OutField_Tab[] = Field_Tab[].
        OutUsrAddrs[] = UsrAddrs[].
      Call function 'F4IF_INT_TABLE_VALUE_REQUEST'
        EXPORTING
          retfield        = RtField
         stepL           = Step_Line
          dynpprog        = l_prog              " sy-cprog
          dynpnr          = l_screen            " sy-dynnr
          dynprofield     = specifichlpfld
          Value_org       = 'C'        "'S'
          WINDOW_TITLE    = WinTitle
          MULTIPLE_CHOICE = 'X'
        TABLES
          field_Tab       = OutField_Tab
          value_tab       = OutUsrAddrs      "SelFNames
          RETURN_TAB      = RETURN_TAB.
      If SY-SUBRC <> 0.
        If Syst-Batch = ' '.  " Online
          Sy-MsgTy = 'I'.
        Else.
          Sy-MsgTy = 'E'.
        Endif.
        MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
                WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
        If Syst-Batch = ' '.  " Online
          Raise Exception Type CX_RPTERR_EXCEPTION.
        Endif.
      Endif.
      CALL FUNCTION 'DYNP_GET_STEPL'
        IMPORTING
          POVSTEPL        = Step_Line
        EXCEPTIONS
          STEPL_NOT_FOUND = 1
          OTHERS          = 2.
      If SY-SUBRC <> 0.
        If Syst-Batch = ' '.  " Online
          Sy-MsgTy = 'I'.
        Else.
          Sy-MsgTy = 'E'.
        Endif.
        MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
                WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
        If Syst-Batch = ' '.  " Online
          Raise Exception Type CX_RPTERR_EXCEPTION.
        Endif.
      Endif.
          Loop at Return_Tab.
            Clear UsrAddrsInt.
            Read table UsrAddrsInt with key BName = Return_Tab-FIELDVAL.
            If Syst-Subrc = 0.
              NameFLoc-Low = UsrAddrsInt-Name_First.       " should be ok if blank- append anyway.
              NameLLoc-Low = UsrAddrsInt-Name_Last.
              sapIdLoc-Low = UsrAddrsInt-BName.
              Append: NameFLoc, NameLLoc, SapIdLoc.
              Clear: NameFLoc, NameLLoc, SapIdLoc.
            Endif.
          EndLoop.
      Loop at NameFLoc.
        NameFLoc-High = space.   NameFLoc-Sign = 'I'.   NameFLoc-Option = 'EQ'.    Modify NameFLoc.
      EndLoop.
      Loop at NameLLoc.
        NameLLoc-High = space.   NameLLoc-Sign = 'I'.   NameLLoc-Option = 'EQ'.    Modify NameLLoc.
      EndLoop.
      Loop at SapIdLoc.
        SapIdLoc-High = space.   SapIdLoc-Sign = 'I'.   SapIdLoc-Option = 'EQ'.    Modify SapIdLoc.
      EndLoop.
      Loop at NameFLoc.
        Move-Corresponding NameFLoc to NameF.
        Append NameF.
        Add 1 to TblSz.
      EndLoop.
      Refresh NameFLoc. Clear: NameF, NameFLoc.
      Loop at NameLLoc.
        Move-Corresponding NameLLoc to NameL.
        Append NameL.
      EndLoop.
      Refresh NameLLoc. Clear: NameL, NameLLoc.
      Loop at SapIdLoc.
      Move-Corresponding SapIdLoc to SAPIds.
        Append SapIds.
      EndLoop.
      Refresh SapIdLoc.   Clear: SapIds, SapIdLoc.
    EndForm.                    " GetFillUserInfo

  • F4IF_INT_TABLE_VALUE_REQUEST doesn't work

    I want to popup a F4 window for bank name accroding to vendor no.
    *declare internal table for bank
    data: begin of bk occurs 0,
              no like lfbk-bankn,
              curr like lfbk-bkref,
              name like bnka-banka,
              acct like lfbk-koinh,
            end of bk.
    data t_bk like bk occurs 0 with header line.
    process on value-request.
       field IO_BANKNM module BANKNAME_list.
    *&      Module  BANKNAME_list  INPUT
          text
    module bankname_list input.
    call function 'CONVERSION_EXIT_ALPHA_INPUT'
      exporting
           input   = io_vendorno
      importing
          output   = vendorno_long
      exceptions
           others  = 1.
      select abankn abkref bbanka akoinh
          into bk
          from lfbk as a inner join bnka as b
          on abankl = bbankl
          where a~lifnr = vendorno_long.
          append bk to t_bk.
      endselect.
      call function 'F4IF_INT_TABLE_VALUE_REQUEST'
        exporting
        DDIC_STRUCTURE         = ' '
          retfield                            = 'name'
        PVALKEY                      = ' '
          DYNPPROG                   = prog_name
        DYNPNR                        = ' '
          DYNPROFIELD               = 'IO_BANKNM'
        STEPL                           = 0
          WINDOW_TITLE             = 'bank name'
        VALUE                          = ' '
          VALUE_ORG                 = 'C'
        MULTIPLE_CHOICE       = ' '
        DISPLAY                      = ' '
        CALLBACK_PROGRAM  = ' '
        CALLBACK_FORM          = ' '
        tables
          value_tab                          = t_bk
        FIELD_TAB                      =
        RETURN_TAB                  =
        DYNPFLD_MAPPING        =
      EXCEPTIONS
        PARAMETER_ERROR       = 1
        NO_VALUES_FOUND        = 2
        OTHERS                           = 3
    endmodule.                 " BANKNAME_list  INPUT
    I use debug and find there are 3 records in internal table t_bk.
    But there is no F4 window pop up when call 'F4IF_INT_TABLE_VALUE_REQUEST'  and I was told ' No value is found'.
    Can anyone kind to help? Does I use this function wrong?

    Hello  Yimeng Cui         
    Call the FM in the event,
    AT SELECTION-SCREEN FOR VALUE REQUEST FOR <field>.
    e.g.:
    PARAMETERS:
      p_conn TYPE dfies-fieldname.
    DATA:
      BEGIN OF tab OCCURS 0,
        carrid LIKE spfli-carrid,
        connid LIKE spfli-connid,
      END OF tab.
    DATA:
      w_tabix TYPE i,
      w_repid LIKE sy-repid,
      w_dnum LIKE sy-dynnr,
      t_return LIKE TABLE OF ddshretval WITH HEADER LINE.
    AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_conn.
      CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
        EXPORTING
    *    DDIC_STRUCTURE         = ' '
          retfield               = 'P_CONN'
    *    PVALKEY                = ' '
         dynpprog               = w_repid
         dynpnr                 = w_dnum
    *    DYNPROFIELD            = ' '
    *    STEPL                  = 0
    *    WINDOW_TITLE           =
    *    VALUE                  = ' '
         value_org              = 'S'
    *    MULTIPLE_CHOICE        = ' '
    *     DISPLAY                = 'X'
    *    CALLBACK_PROGRAM       = ' '
    *    CALLBACK_FORM          = ' '
    *    MARK_TAB               =
    *  IMPORTING
    *    USER_RESET             =
        TABLES
          value_tab              = tab
    *    FIELD_TAB              = F_RETURN
         return_tab             = t_return
    *    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.
      ELSE.
        READ TABLE t_return INDEX 1 TRANSPORTING fieldval.
        p_conn = t_return-fieldval.
        CLEAR tab.
        SELECT carrid
          FROM spfli
        INTO TABLE tab1
       WHERE connid EQ t_return-fieldval.
    ENDIF.
    Regards
    Indu.

  • F4IF_INT_TABLE_VALUE_REQUEST Functionality

    Hello all,
    How can I return more then one value using the FM F4IF_INT_TABLE_VALUE_REQUEST.
    Example:
    Parameters:
    pernr TYPE pa0001-pernr,
    sname TYPE pa0001-sname.
    When I click "F4" inside the field (parameter) pernr, the following list is showed...
    Number - Name
    ===========
    1234 - Roberto
    5678 - Falk
    When I select the first line, I need to receive both values (Number and Name), no just the Name.

    Hello Roberto
    Yes, you can return multiple values using this function module. All you need to do is to define a <b>CALLBACK </b>routine for modifying the search help.
    Have a look at the following sample report <b>ZUS_SDN_F4IF_INT_TAB_VAL_REQ</b>. If you define two columns on the search help that are return you retrieve two entries in the values itab for each selected F4 entry (in case of muliple select possible).
    *& Report  ZUS_SDN_F4IF_INT_TAB_VAL_REQ
    REPORT  zus_sdn_f4if_int_tab_val_req.
    TYPE-POOLS: shlp.
    DATA:
      gd_repid     TYPE syrepid,
      gt_knb1      TYPE STANDARD TABLE OF knb1,
      gt_values    TYPE STANDARD TABLE OF ddshretval.
    START-OF-SELECTION.
      gd_repid = syst-repid.
      SELECT * FROM knb1 INTO TABLE gt_knb1 UP TO 100 ROWS.
      CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
        EXPORTING
          ddic_structure         = 'KNB1'
          retfield               = 'KUNNR'  " overwritten in callback !!!
    *     PVALKEY                = ' '
    *     DYNPPROG               = ' '
    *     DYNPNR                 = ' '
    *     DYNPROFIELD            = ' '
    *     STEPL                  = 0
    *     WINDOW_TITLE           =
    *     VALUE                  = ' '
          value_org              = 'S'  " structure
    *     MULTIPLE_CHOICE        = ' '
    *     DISPLAY                = ' '
          callback_program       = gd_repid
          callback_form          = 'CALLBACK_F4'
    *     MARK_TAB               =
    *   IMPORTING
    *     USER_RESET             =
        TABLES
          value_tab              = gt_knb1
    *     FIELD_TAB              =
          return_tab             = gt_values
    *     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.
      CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'
        EXPORTING
          i_structure_name = 'DDSHRETVAL'
        TABLES
          t_outtab         = gt_values
        EXCEPTIONS
          program_error    = 1
          OTHERS           = 2.
      IF sy-subrc <> 0.
    * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
    *         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.
    END-OF-SELECTION.
    *&      Form  CALLBACK_F4
    *       text
    *  -->  p1        text
    *  <--  p2        text
    FORM callback_f4
                TABLES record_tab STRUCTURE seahlpres
                CHANGING shlp TYPE shlp_descr
                         callcontrol LIKE ddshf4ctrl.
    * define local data
      DATA:
        ls_intf     LIKE LINE OF shlp-interface,
        ls_prop     LIKE LINE OF shlp-fieldprop.
      " Hide unwanted fields
      CLEAR: ls_prop-shlpselpos,
             ls_prop-shlplispos.
      MODIFY shlp-fieldprop FROM ls_prop
        TRANSPORTING shlpselpos shlplispos
      WHERE ( fieldname NE 'BUKRS'  AND
              fieldname NE 'KUNNR'  AND
              fieldname NE 'PERNR' ).
      " Overwrite selectable fields on search help
      REFRESH: shlp-interface.
      ls_intf-shlpfield = 'BUKRS'.
      ls_intf-valfield  = 'X'.
      APPEND ls_intf TO shlp-interface.
      ls_intf-shlpfield = 'KUNNR'.
      APPEND ls_intf TO shlp-interface.
    ENDFORM.                    " CALLBACK_F4
    Regards
      Uwe

  • F4IF_INT_TABLE_VALUE_REQUEST , problem with return_tab

    hi all,
    i have coded the following:
    CLEAR field_tab.
            field_tab-fieldname = 'E_VALUE'.
            field_tab-intlen = 20.
            field_tab-outputlen = 20.
            field_tab-inttype = 'C'.
            field_tab-scrtext_m = 'Region'.
            APPEND field_tab.
            CLEAR field_tab.
            field_tab-fieldname = 'Region'.
            field_tab-intlen = 20.
            field_tab-outputlen = 20.
            field_tab-inttype = 'C'.
            field_tab-scrtext_m = 'State No'.
            APPEND field_tab.
    itab contains value:
    data   Region    State No
    1       CR              1
    2       CR              2
    CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
        EXPORTING
          retfield        = 'E_VALUE'
          dynprofield     = 'A'
          dynpprog        = sy-cprog
          dynpnr          = sy-dynnr
        TABLES
          value_tab       = itab
          field_tab       = field_tab
          return_tab      = return_tab
        EXCEPTIONS
          parameter_error = 1
          no_values_found = 2
          OTHERS          = 3.
    if i choose data 2, return_tab will give value of
    SHLPNAME       ~
    FIELDNAME      E_VALUE
    RECORDPOS   0001
    FIELDVAL     C      CR
    RETFIELD     C      PRPS-USR01
    how can i know that from itab, the CR value i choose is from data 2 , because return_tab-recordpos returns value of 0001

    Hi,
       check the following code.
    data: lt_retval type standard table of ddshretval,
          ls_retval like ddshretval,
          lt_dynmap type standard table of dselc,
          ls_dynmap type dselc,
          dynp_values type standard table of dynpread ,
          wa_dynp_values type dynpread,
          lt_values type table of seahlpres,
          lt_fields type table of dfies,
          ls_field  type dfies,
          ls_return type ddshretval.
      clear ls_field.
      ls_field-fieldname = 'SKILLS'.
      ls_field-intlen = 15.
      ls_field-leng = 15.
      ls_field-outputlen = 15.
      ls_field-scrtext_m = 'SKILLS AVALIABLE'.
      append ls_field to lt_fields.
      clear ls_field.
      ls_field-fieldname = 'DESCRIPTION'.
      ls_field-intlen = 25.
      ls_field-leng = 25.
      ls_field-outputlen = 25.
      ls_field-scrtext_m = 'DESCRIPTION'.
      append ls_field to lt_fields.
      perform fill_values using 'C' 'C programming'.
      perform fill_values using 'C+' 'C+ Programming'.
      perform fill_values using 'ABAP' 'ABAP Language'.
      perform fill_values using 'JAVA' 'JAVA programming'.
      perform fill_values using 'SAP SCRIPT' 'Working with SAP Scripts'.
      perform fill_values using 'SMART FORMS' 'Smart forms'.
      call function 'F4IF_INT_TABLE_VALUE_REQUEST'
            exporting
              retfield               = 'SKILLS'
             dynpprog               = sy-repid
            tables
              value_tab              = gt_values
              field_tab              = lt_fields
             return_tab             =  lt_retval
           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.
      clear ls_retval.
      read table lt_retval into ls_retval index 1.
      move ls_retval-fieldval to p_skills.
    PS: p_skills is parameter @ selection screen.
    Regards,
    Niyaz

  • How to retrieve the selected value in f4if_int_table_value_request

    hi guys,
    I have created a search help using fm f4if_int_table_value_request,my value table contains several fields including vbeln. When i am selecting a record the return table is capturing the last column of the record but i want to select the vbeln which is in the first column.
    Plz help...

    MODULE F4_ON_VALUE_REQUEST INPUT.
       TYPES : BEGIN OF TYP,
               G_VBELN TYPE VBELN,
               FKDAT TYPE ZCHEQUEIT-FKDAT,
               BASEAMNT TYPE ZCHEQUEIT-AGRV,
               SERVTAX TYPE ZCHEQUEIT-SERVT,
               BALAMNT TYPE ZCHEQUEIT-BALA,
                END OF TYP.
       DATA :  IT_VAL TYPE TABLE OF TYP,
               WA_VAL TYPE TYP,
               IT_RET TYPE TABLE OF DDSHRETVAL,
               WA_RET TYPE DDSHRETVAL,
               IT_DYN TYPE TABLE OF DYNPREAD,
               WA_DYN TYPE DYNPREAD,
               IT_FIELDTAB TYPE TABLE OF DSELC,
               WA_FIELDTAB TYPE DSELC,
               LV_VKORG TYPE VKORG,
               LV_KUNNR TYPE KUNNR,
               INDEX TYPE SY-INDEX.
       TYPES : BEGIN OF TY_VBRK,
                VBELN TYPE VBRK-VBELN,
                KNUMV TYPE VBRK-KNUMV,
                FKDAT TYPE VBRK-FKDAT,
                NETWR TYPE VBRK-NETWR,
                END OF TY_VBRK.
       TYPES : BEGIN OF TY_KONV,
               KNUMV TYPE KONV-KNUMV,
               KSCHL TYPE KONV-KSCHL,
               KWERT TYPE KONV-KWERT,
               END OF TY_KONV.
       DATA : IT_VBRK TYPE STANDARD TABLE OF TY_VBRK,
              WA_VBRK TYPE TY_VBRK,
              IT_KONV TYPE STANDARD TABLE OF TY_KONV,
              WA_KONV TYPE TY_KONV,
              G_BASEAMNT TYPE KWERT,
              G_SERVTAX TYPE KWERT.
       MOVE 'VKORG' TO WA_DYN-FIELDNAME.
       APPEND WA_DYN TO IT_DYN.
       MOVE 'KUNNR' TO WA_DYN-FIELDNAME.
       APPEND WA_DYN TO IT_DYN.
       CALL FUNCTION 'DYNP_VALUES_READ'
         EXPORTING
           DYNAME                               = SY-REPID
           DYNUMB                               = SY-DYNNR
         TABLES
           DYNPFIELDS                           = IT_DYN
       IF SY-SUBRC <> 0.
    * Implement suitable error handling here
       ENDIF.
       CLEAR WA_DYN.
       READ TABLE IT_DYN INTO WA_DYN WITH KEY FIELDNAME = 'VKORG' .
       LV_VKORG = WA_DYN-FIELDVALUE .
       READ TABLE IT_DYN INTO WA_DYN WITH KEY FIELDNAME = 'KUNNR' .
       LV_KUNNR = WA_DYN-FIELDVALUE.
       SELECT XBLNR FROM BSID INTO TABLE IT_VAL WHERE
         BUKRS = LV_VKORG AND KUNNR = LV_KUNNR AND BLART = 'RV'."
       SELECT VBELN KNUMV FKDAT NETWR FROM VBRK INTO TABLE IT_VBRK
         FOR ALL ENTRIES IN IT_VAL WHERE VBELN = IT_VAL-G_VBELN.
       SELECT KNUMV KSCHL KWERT FROM KONV INTO TABLE IT_KONV
         FOR ALL ENTRIES IN IT_VBRK WHERE KNUMV = IT_VBRK-KNUMV.
       CLEAR : WA_KONV.
       LOOP AT IT_VAL INTO WA_VAL.
         READ TABLE IT_VBRK INTO WA_VBRK WITH KEY VBELN = WA_VAL-G_VBELN.
         IF SY-SUBRC = 0.
           WA_VAL-FKDAT  = WA_VBRK-FKDAT.
           WA_VAL-BALAMNT = WA_VBRK-NETWR.
         ENDIF.
         LOOP AT IT_KONV INTO WA_KONV WHERE KNUMV = WA_VBRK-KNUMV.
           IF WA_KONV-KSCHL = 'ZAGV'.
             WA_VAL-BASEAMNT = WA_VAL-BASEAMNT + WA_KONV-KWERT.
           ELSEIF WA_KONV-KSCHL = 'JSRT' OR WA_KONV-KSCHL = 'JEC3' OR WA_KONV-KSCHL = 'JES3'.
             WA_VAL-SERVTAX = WA_VAL-SERVTAX + WA_KONV-KWERT.
           ENDIF.
         ENDLOOP.
         MODIFY IT_VAL FROM WA_VAL TRANSPORTING FKDAT  BALAMNT. "BASEAMNT SERVTAX
         CLEAR : WA_KONV,WA_VBRK,WA_VAL.
       ENDLOOP.
       CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
         EXPORTING
    *       DDIC_STRUCTURE         = 'TYP'
           RETFIELD               = 'VBELN'
    *       PVALKEY                = ' '
          DYNPPROG               = SY-REPID
          DYNPNR                 = SY-DYNNR
          DYNPROFIELD            = 'Invoice No.'
    *     DYNPROFIELD            = 'WA_ZCHEQUEIT-VBELN'
          VALUE_ORG              = 'S'
         TABLES
          VALUE_TAB              = IT_VAL
    *     FIELD_TAB              = IT_FIELDTAB
          RETURN_TAB             = IT_RET
    *     DYNPFLD_MAPPING        = it_fieldtab.
       IF SY-SUBRC <> 0.
    * Implement suitable error handling here
       ENDIF.
    CLEAR : WA_DYN,LV_VKORG,LV_KUNNR.
       REFRESH : IT_DYN,IT_VAL,IT_RET.
    ENDMODULE.                 " F4_ON_VALUE_REQUEST  INPUT

  • F4IF_INT_TABLE_VALUE_REQUEST - return more than 1 field in return_values?

    In a dialog program I"m using the 'on value request' to call a routine that builds a dropdown on a field.  It looks like this:
    PROCESS ON VALUE-REQUEST.
      FIELD ekpo_ci-zzlicnum module build_search.
    Within build_search, I build itab_values with the dropdown values and the function module is called:
    CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
         EXPORTING RETFIELD = 'ZZLICNUM'
                   DYNPPROG = w_progname
                   DYNPNR = w_scr_num
                   DYNPROFIELD = 'ZZLICNUM'
                   VALUE_ORG = 'S'
         TABLES
                   VALUE_TAB = ITAB_VALUES
                   RETURN_TAB = RETURN_VALUES
         EXCEPTIONS
                   PARAMETER_ERROR = 1
                   NO_VALUES_FOUND = 2
                   OTHERS = 3.
    The routine calls F4IF_INT_TABLE_VALUE_REQUEST and in the dropdown, 5 fields are shown in each row (built in an internal table itab_values).  When I select one of the rows, it returns the field value for zzlicnum in return_values.  Is there a way to also return the other values I have in itab_values (other than just zzlicnum) - I need to use the other fields that are associated with zzlicnum in my program for some additional logic.
    I appreciate any help!

    hi,
           refer to these codes:
           you can change something according to your requirement.
    PARAMETERS:
      a TYPE char10,
      b TYPE char10,
      c TYPE char10.
    DATA:
      BEGIN OF tab OCCURS 0,
        field1 TYPE char10,
        field2 TYPE char10,
        field3 TYPE char10,
      END OF tab,
      wa LIKE LINE OF tab,
      DYNPFLD_MAPPING TYPE STANDARD TABLE OF DSELC,
      dyn_wa TYPE DSELC,
      lt_return TYPE TABLE OF DDSHRETVAL,
      lwa_return TYPE ddshretval.
    INITIALIZATION.
      wa-field1 = 'aaaaa'.
      wa-field2 = 'bbbbb'.
      wa-field3 = 'ccccc'.
      APPEND wa to tab.
      wa-field1 = 'aaaaa'.
      wa-field2 = 'bbccc'.
      wa-field3 = 'ddddd'.
      APPEND wa to tab.
      wa-field1 = 'aaaab'.
      wa-field2 = 'bbccc'.
      wa-field3 = 'eeeee'.
      APPEND wa to tab.
      dyn_wa-FLDNAME = 'FIELD1'.
      dyn_wa-DYFLDNAME = 'A'.
      APPEND dyn_wa to DYNPFLD_MAPPING.
      dyn_wa-FLDNAME = 'FIELD2'.
      dyn_wa-DYFLDNAME = 'B'.
      APPEND dyn_wa to DYNPFLD_MAPPING.
      dyn_wa-FLDNAME = 'FIELD3'.
      dyn_wa-DYFLDNAME = 'C'.
      APPEND dyn_wa to DYNPFLD_MAPPING.
    AT SELECTION-SCREEN on VALUE-REQUEST FOR a.
      CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
        EXPORTING
    *     DDIC_STRUCTURE         = ' '
          retfield               = 'FIELD1'
    *     PVALKEY                = ' '
          DYNPPROG               = sy-cprog
          DYNPNR                 = '1000'
          DYNPROFIELD            = 'A'
    *     STEPL                  = 0
    *     WINDOW_TITLE           = WINDOW_TITLE
    *     VALUE                  = ' '
          VALUE_ORG              = 'S'
    *     MULTIPLE_CHOICE        = ' '
    *     DISPLAY                = ' '
         CALLBACK_PROGRAM       = sy-cprog
         CALLBACK_FORM          = 'CALLBACK_F4'
    *     MARK_TAB               = MARK_TAB
    *   IMPORTING
    *     USER_RESET             = USER_RESET
        TABLES
          value_tab              = tab
    *     FIELD_TAB              = FIELD_TAB
          RETURN_TAB             = lt_return
    *      DYNPFLD_MAPPING        = 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.
    form callback_f4 TABLES record_tab STRUCTURE seahlpres
                CHANGING shlp TYPE shlp_descr
                         callcontrol LIKE ddshf4ctrl.
      DATA:
        ls_intf     LIKE LINE OF shlp-interface,
      ls_prop     LIKE LINE OF shlp-fieldprop.
    *Hide unwanted fields
      CLEAR: ls_prop-shlpselpos,
             ls_prop-shlplispos.
    *  MODIFY shlp-fieldprop FROM ls_prop
    *    TRANSPORTING shlpselpos shlplispos
    *  WHERE ( fieldname NE 'F0001'  AND
    *          fieldname NE 'F0002'  AND
    *          fieldname NE 'F0003' ).
    *  " Overwrite selectable fields on search help
      REFRESH: shlp-interface.
      ls_intf-shlpfield = 'F0001'.
      ls_intf-valfield  = 'A'.
      ls_intf-f4field   = 'X'.
      APPEND ls_intf TO shlp-interface.
      ls_intf-shlpfield = 'F0002'.
      ls_intf-valfield  = 'B'.
      ls_intf-f4field   = 'X'.
      APPEND ls_intf TO shlp-interface.
      ls_intf-shlpfield = 'F0003'.
      ls_intf-valfield  = 'C'.
      ls_intf-f4field   = 'X'.
      APPEND ls_intf TO shlp-interface.
    ENDFORM.

  • Return all the column values using the F4IF_INT_TABLE_VALUE_REQUEST

    Hi,
    How to return all the column values using the F4IF_INT_TABLE_VALUE_REQUEST?
    For example : if the row has 3 columns then after selecting the particular row, the RETURN_TAB internal table should contain all the three column values.
    Regards,
    Raghu

    Hi,
       Try the following...
    DATA : it_fields like help_value occurs 1 with header line.
    data: begin of w_vbap,
            vbeln      like vbap-vbeln,    
            posnr      like vbap-posnr,   
            werks      like vbap-werks,  
          end of w_vbap.
    data: i_vbap   like w_vbap   occurs 0 with header line,
             w_fields type help_value,
          i_dfies type table of dfies,
          i_return_tab type table of ddshretval with header line,
          i_field  type dfies.
      select vbeln posnr werks
          from vbap into table i_vbap up to 5 rows.
    if sy-subrc = 0.
       sort i_vbap by vbeln.
    endif.
      clear it_fields[] , it_fields.
      it_fields-tabname = c_vbap.
      it_fields-fieldname = 'VBELN'.
      it_fields-selectflag = c_on.
      append it_fields.
      it_fields-tabname = c_vbap.
      it_fields-fieldname = 'POSNR'.
      it_fields-selectflag = space.
      append it_fields.
      it_fields-tabname = c_vbap.
      it_fields-fieldname = 'WERKS'.
      it_fields-selectflag = space.
      append it_fields.
      loop at it_fields into w_fields.
        i_field-tabname   = w_fields-tabname.
        i_field-fieldname = w_fields-fieldname.
        i_field-keyflag   = w_fields-selectflag.
        append i_field to i_dfies.
      endloop.
      call function 'F4IF_INT_TABLE_VALUE_REQUEST'
        exporting
          retfield               = 'VBELN'
         window_title           = 'Select'
        tables
          value_tab              = i_vbap
          field_tab                = i_dfies
          return_tab             = i_return_tab
       exceptions
         parameter_error        = 1
         no_values_found        = 2
         others                 = 3
      read table i_return_tab into w_return_tab index 1.
      if sy-subrc = 0.
      endif.
    Regards,
    Srini.

  • Problems with FM F4IF_INT_TABLE_VALUE_REQUEST and DYNP_VALUES_UPDATE

    Hi gurus,
    Im making a search help using FM F4IF_INT_TABLE_VALUE_REQUEST with multiple choice and it's working fine, my problem it's passing the values choosed from this FM to the screen...
    I've declare a select option, and what i want it's to pass the choosen values from the search help to the screen but it's not working fine... i already tried the FM DYNP_VALUES_UPDATE to update the screen field but still yhe same...
    Below goes my code, just in case...
      CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
           EXPORTING
                retfield        = 'ZLINHA'
                dynpprog        = sy-repid
                dynpnr          = sy-dynnr
                dynprofield     = 'SO_NUM'
                window_title    = 'Programa'
                value_org       = 'S'
                multiple_choice = 'X'
           TABLES
                value_tab       = it_values
                return_tab      = return_tab.
      IF sy-subrc <> 0.
        MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
                WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
      ELSE.
        LOOP AT return_tab.
    *      CLEAR r_num.
          so_num-option = 'EQ'.
          so_num-sign = 'I'.
          MOVE 'SO_NUM' TO dynpfields-fieldname.
          MOVE return_tab-fieldval TO dynpfields-fieldvalue.
          APPEND dynpfields.
    *      so_num-low = return_tab-fieldval.
    *      APPEND so_num.
        ENDLOOP.
      ENDIF.
      CLEAR dynpfields.
      CALL FUNCTION 'DYNP_VALUES_UPDATE'
           EXPORTING
                dyname     = progname
                dynumb     = dynnum
           TABLES
                dynpfields = dynpfields.
      IF sy-subrc <> 0.
        MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
                WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
      ENDIF.
    If anyone has any idea, feel free to speak
    Thanks in advance,
    Best Regards

    Hi Martins,
    You have used the select options that means you have to use the function module for the <select-option >-low and <select-option>-high.
    I am giving you a code snippet in which the selection screen has select-options and with the help of function module it shows F4 help and pass the values.
    SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-023.
    SELECT-OPTIONS:S_PIDNUM FOR ZMST_PERMIT-ZPIDNUM ,
                   S_ENGDSC FOR ZMST_PERMIT-ZENGDSC NO INTERVALS LOWER CASE,
                   S_ARBDSC FOR ZMST_PERMIT-ZARBDSC NO INTERVALS LOWER CASE,
                   S_TARIFF FOR ZMST_PERMIT-ZTARIFF NO INTERVALS,
                   S_PERNUM FOR ZMST_PERMIT-ZPERNUM NO INTERVALS,
                   S_ARRPRT FOR ZMST_PERMIT-ZARRPRT NO INTERVALS MATCHCODE OBJECT ZMST_PORTS.
    PARAMETER:P_PERTYP(2) TYPE C AS LISTBOX VISIBLE LENGTH 20.
    SELECTION-SCREEN END OF BLOCK B1.
    AT SELECTION-SCREEN ON VALUE-REQUEST FOR S_PIDNUM-LOW.
      W_NAME2 = 'S_PIDNUM-LOW'.
      W_NAME1 = 'ZPIDNUM'.
      PERFORM F4_HELP USING W_NAME1 W_NAME2 .         "calling subroutine to provide desired F4 help
    AT SELECTION-SCREEN ON VALUE-REQUEST FOR S_PIDNUM-HIGH.
      W_NAME2 = 'S_PIDNUM-HIGH'.
      W_NAME1 = 'ZPIDNUM'.
      PERFORM F4_HELP USING W_NAME1 W_NAME2 .         "calling subroutine to provide desired F4 help
    AT SELECTION-SCREEN ON VALUE-REQUEST FOR S_ENGDSC-LOW.
      W_NAME2 = 'S_ENGDSC'.
      W_NAME1 = 'ZENGDSC'.
      PERFORM F4_HELP USING W_NAME1 W_NAME2 .         "calling subroutine to provide desired F4 help
    AT SELECTION-SCREEN ON VALUE-REQUEST FOR S_ARBDSC-LOW.
      W_NAME2 = 'S_ARBDSC'.
      W_NAME1 = 'ZARBDSC'.
      PERFORM F4_HELP USING W_NAME1 W_NAME2 .         "calling subroutine to provide desired F4 help
    AT SELECTION-SCREEN ON VALUE-REQUEST FOR S_TARIFF-LOW.
      W_NAME2 = 'S_TARIFF'.
      W_NAME1 = 'ZTARIFF'.
      PERFORM F4_HELP USING W_NAME1 W_NAME2 .         "calling subroutine to provide desired F4 help
    AT SELECTION-SCREEN ON VALUE-REQUEST FOR S_PERNUM-LOW.
      W_NAME2 = 'S_PERNUM'.
      W_NAME1 = 'ZPERNUM'.
      PERFORM F4_HELP USING W_NAME1 W_NAME2 .         "calling subroutine to provide desired F4 help
    *&      Form  F4_HELP
          text
    -->  p1        text
    <--  p2        text
    FORM F4_HELP USING: W_VAR TYPE DFIES-FIELDNAME
                        W_VAR1 TYPE HELP_INFO-DYNPROFLD .
    Fetching data from zmst_permit for F4 help on PERMIT ID No.--
      IF IT_PERMIT[] IS INITIAL.
        SELECT ZPIDNUM
               ZENGDSC
               ZARBDSC
               ZTARIFF
               ZPERNUM
               ZARRPRT
               ZEFFDT
               ZEXPDT
               FROM ZMST_PERMIT INTO CORRESPONDING FIELDS OF TABLE IT_PERMIT.
      ENDIF.
      CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
        EXPORTING
          RETFIELD        = W_NAME1 " 'ZPIDNUM'
          DYNPPROG        = 'ZMSTR0022'
          DYNPNR          = SY-DYNNR
          DYNPROFIELD     = W_NAME2 "'S_PIDNUM'
          VALUE_ORG       = 'S'
        TABLES
          VALUE_TAB       = IT_PERMIT
        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_HELP
    I hope this will help you.
    Help children of U.N World Food Program by rewarding  points and encourage others to answer your queries.

  • Value getting truncated in display while using F4IF_INT_TABLE_VALUE_REQUEST

    Hi.,
        I am using FM F4IF_INT_TABLE_VALUE_REQUEST to display F4 for a Particular field .
    But while displaying a field(ISBN) with 13 characters is displayed only with value of 8 characters only. kindly advice.
    IT_FT-TABNAME = 'ZC002_ESTNOF4'.
      IT_FT-FIELDNAME = 'ESTNO'.
      APPEND IT_FT.
    IT_FT-TABNAME = 'ZC001_ESTMAST_HD'.
    IT_FT-FIELDNAME = 'VERSN'.
    APPEND IT_FT.
      IT_FT-TABNAME = 'ZC002_ESTNOF4'.
      IT_FT-FIELDNAME = 'VERSN'.
      APPEND IT_FT.
      IT_FT-TABNAME = 'ZC002_ESTNOF4'.
      IT_FT-FIELDNAME = 'SIRNO'.
      APPEND IT_FT.
      IT_FT-TABNAME = 'ZC002_ESTNOF4'.
      IT_FT-FIELDNAME = 'TITNR'.
      APPEND IT_FT.
      IT_FT-TABNAME = 'ZC002_ESTNOF4'.
      IT_FT-FIELDNAME = 'KUNNR'.
      APPEND IT_FT.
      IT_FT-TABNAME = 'ZC002_ESTNOF4'.
      IT_FT-FIELDNAME = 'NAME1'.
      APPEND IT_FT.
      IT_FT-TABNAME = 'ZC002_ESTNOF4'.
      IT_FT-FIELDNAME = 'JBDVN'.
      APPEND IT_FT.
      IT_FT-TABNAME = 'ZC002_ESTNOF4'.
      IT_FT-FIELDNAME = 'MAKTX'.
      APPEND IT_FT.
      IT_FT-TABNAME = 'ZC002_ESTNOF4'.
      IT_FT-FIELDNAME = 'TPWRK'.
      APPEND IT_FT.
      IT_FT-TABNAME = 'ZC002_ESTNOF4'.
      IT_FT-FIELDNAME = 'ISBNO'.
      APPEND IT_FT.
    IT_FT-TABNAME = 'ZC002_ESTNOF4'.
    IT_FT-FIELDNAME = 'ORDDAT'.
    APPEND IT_FT.
      IT_DM-FLDNAME = 'ESTNO'.
      IT_DM-DYFLDNAME = 'IT_ESTMAS-ESTNO'.
      APPEND IT_DM.
      IT_DM-FLDNAME = 'VERSN'.
      IT_DM-DYFLDNAME = 'IT_ESTMAS-VERSN'.
      APPEND IT_DM.
      IT_DM-FLDNAME = 'SIRNO'.
      IT_DM-DYFLDNAME = 'IT_ESTMAS-SIRNO'.
      APPEND IT_DM.
    IT_DM-FLDNAME = 'SERIS'.
    IT_DM-DYFLDNAME = 'ZV001_TITLMAS_HD'.
    APPEND IT_DM.
      CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
        EXPORTING
      DDIC_STRUCTURE         = 'IT_VALUE'
       DDIC_STRUCTURE         = 'ZC002_ESTNOF4'
        RETFIELD               = 'ESTNO'
      PVALKEY                = ' '
        DYNPPROG               = SY-REPID
        DYNPNR                 = SY-DYNNR
        DYNPROFIELD            = 'IT_ESTMAS-ESTNO'
        VALUE_ORG   = 'S'
       STEPL                  = 0
        TABLES
           VALUE_TAB              = IT_MESTNO_F4
           FIELD_TAB              = IT_FT
          RETURN_TAB             = IT_RT
           DYNPFLD_MAPPING        = IT_DM
    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.,
    S.Sivakumar

    Hi.,
        i think i confused u all . i will paste the entire code here .
    DATA : BEGIN OF IT_MESTNO_F4 OCCURS 0,
           MANDT LIKE ZC001_ESTMAST_HD-MANDT,
            ESTNO LIKE ZC001_ESTMAST_HD-ESTNO,
            VERSN LIKE ZC001_ESTMAST_HD-VERSN,
            SIRNO LIKE ZC001_ESTMAST_HD-SIRNO,
            TITNR LIKE ZV001_TITLMAS_HD-TITNR,
            TPWRK LIKE ZV001_TITLMAS_HD-TPWRK,
            KUNNR LIKE ZC001_ESTMAST_HD-KUNNR,
            NAME1 LIKE KNA1-NAME1,
            JBDVN LIKE ZC001_ESTMAST_HD-JBDVN,
            MAKTX LIKE ZV001_TITLMAS_HD-MAKTX,
            ISBNO TYPE ZV001_TITLMAS_HD-ISBNO,
           END OF IT_MESTNO_F4.
      CLEAR: IT_MESTNO_F4[], IT_MESTNO_F4,
               IT_FT[], IT_FT,
               IT_DM[], IT_DM,
               IT_RT[], IT_RT.
    *ORDDAT
    SELECT DISTINCT  ESTNO VERSN SIRNO FROM ZC001_BUDMAS_MAT INTO CORRESPONDING FIELDS OF TABLE IT_MESTNO_F4.
    SELECT ESTNO VERSN SIRNO FROM ZC001_ESTMAST_HD INTO CORRESPONDING FIELDS OF TABLE IT_MESTNO_F4  WHERE ZSAVE EQ 'X'..
      SELECT  DISTINCT A~ESTNO A~VERSN A~SIRNO A~TITNR A~TPWRK A~KUNNR D~NAME1 JBDVN   B~MAKTX   ISBNO
       FROM ZC001_ESTMAST_HD AS A INNER JOIN  ZV001_TITLMAS_HD AS B
      ON A~TITNR = B~TITNR
        INNER JOIN  ZC001_BUDMAS_MAT AS C
      ON A~ESTNO = C~ESTNO AND A~VERSN = C~VERSN AND A~SIRNO = C~SIRNO
        INNER JOIN  KNA1 AS D
      ON A~KUNNR = D~KUNNR
       INTO CORRESPONDING FIELDS OF TABLE IT_MESTNO_F4
       WHERE ZSAVE EQ SPACE AND ZLOCK EQ SPACE.
      SORT IT_MESTNO_F4 BY ESTNO DESCENDING.
      IT_FT-TABNAME = 'ZC002_ESTNOF4'.
      IT_FT-FIELDNAME = 'ESTNO'.
      APPEND IT_FT.
    IT_FT-TABNAME = 'ZC001_ESTMAST_HD'.
    IT_FT-FIELDNAME = 'VERSN'.
    APPEND IT_FT.
      IT_FT-TABNAME = 'ZC002_ESTNOF4'.
      IT_FT-FIELDNAME = 'VERSN'.
      APPEND IT_FT.
      IT_FT-TABNAME = 'ZC002_ESTNOF4'.
      IT_FT-FIELDNAME = 'SIRNO'.
      APPEND IT_FT.
      IT_FT-TABNAME = 'ZC002_ESTNOF4'.
      IT_FT-FIELDNAME = 'TITNR'.
      APPEND IT_FT.
      IT_FT-TABNAME = 'ZC002_ESTNOF4'.
      IT_FT-FIELDNAME = 'KUNNR'.
      APPEND IT_FT.
      IT_FT-TABNAME = 'ZC002_ESTNOF4'.
      IT_FT-FIELDNAME = 'NAME1'.
      APPEND IT_FT.
      IT_FT-TABNAME = 'ZC002_ESTNOF4'.
      IT_FT-FIELDNAME = 'JBDVN'.
      APPEND IT_FT.
      IT_FT-TABNAME = 'ZC002_ESTNOF4'.
      IT_FT-FIELDNAME = 'MAKTX'.
      APPEND IT_FT.
      IT_FT-TABNAME = 'ZC002_ESTNOF4'.
      IT_FT-FIELDNAME = 'TPWRK'.
      APPEND IT_FT.
      IT_FT-TABNAME = 'ZC002_ESTNOF4'.
      IT_FT-FIELDNAME = 'ISBNO'.
      APPEND IT_FT.
    IT_FT-TABNAME = 'ZC002_ESTNOF4'.
    IT_FT-FIELDNAME = 'ORDDAT'.
    APPEND IT_FT.
      IT_DM-FLDNAME = 'ESTNO'.
      IT_DM-DYFLDNAME = 'IT_ESTMAS-ESTNO'.
      APPEND IT_DM.
      IT_DM-FLDNAME = 'VERSN'.
      IT_DM-DYFLDNAME = 'IT_ESTMAS-VERSN'.
      APPEND IT_DM.
      IT_DM-FLDNAME = 'SIRNO'.
      IT_DM-DYFLDNAME = 'IT_ESTMAS-SIRNO'.
      APPEND IT_DM.
    IT_DM-FLDNAME = 'SERIS'.
    IT_DM-DYFLDNAME = 'ZV001_TITLMAS_HD'.
    APPEND IT_DM.
      CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
        EXPORTING
      DDIC_STRUCTURE         = 'IT_VALUE'
       DDIC_STRUCTURE         = 'ZC002_ESTNOF4'
        RETFIELD               = 'ESTNO'
      PVALKEY                = ' '
        DYNPPROG               = SY-REPID
        DYNPNR                 = SY-DYNNR
        DYNPROFIELD            = 'IT_ESTMAS-ESTNO'
        VALUE_ORG   = 'S'
       STEPL                  = 0
        TABLES
           VALUE_TAB              = IT_MESTNO_F4
           FIELD_TAB              = IT_FT
          RETURN_TAB             = IT_RT
           DYNPFLD_MAPPING        = IT_DM
    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.,
    S.Sivakumar

Maybe you are looking for