Skip to Content
author's profile photo Former Member
Former Member

ALV report editable to enter text and print with including the text?

Hi all,

I have to display output of a report in ALV format and i have to make two fileds can be editable to enter texts by user and able to print the list with that texts .

Is it possible using standard Function modules or I have to go for OO methods? Please give the sample code ?

Thanks,

Vamshi

Edited by: VAMSHI KRISHNA on Oct 31, 2008 4:25 PM

Add a comment
10|10000 characters needed characters exceeded

Assigned Tags

Related questions

3 Answers

  • Best Answer
    author's profile photo Former Member
    Former Member
    Posted on Oct 31, 2008 at 08:42 AM

    Hi

    use wa_fieldcat-edit = 'X' in the fieldcat.

    regards

    Ramya

    Add a comment
    10|10000 characters needed characters exceeded

  • Posted on Oct 31, 2008 at 08:28 AM

    Hi Vamshi,

    Check out the Below sample code for the editable ALV.

    *&---------------------------------------------------------------------*
    *& Report  Z7CC_OOPS_ALV_EDITABLE
    *&
    *&---------------------------------------------------------------------*
    *&
    *&
    *&---------------------------------------------------------------------*
    
    report  z7cc_oops_alv_editable.
    
    tables sflight.
    data: begin of gt_outtab occurs 0.     "with header line
            include structure sflight.
    data: celltab type lvc_t_styl.
    data: end of gt_outtab.
    data: gt_fieldcat type lvc_t_fcat.
    data: g_carrid like sflight-carrid,
          g_connid like sflight-connid.
    data: gs_spfli type spfli.                                  "#EC NEEDED
    
    data: g_custom_container type ref to cl_gui_custom_container.
    data:  g_container type scrfname value 'BCALV_GRID_DEMO_0100_CONT1'.
    data: g_grid  type ref to cl_gui_alv_grid.
    data: wa_outtab like gt_outtab.
    
    *---------------------------------------------------------------------*
    *       CLASS lcl_event_receiver DEFINITION
    *---------------------------------------------------------------------*
    *       ........                                                      *
    *---------------------------------------------------------------------*
    class lcl_event_receiver definition.
    
    *.............
    
      public section.
    
        types: begin of sflight_key.
        types:   carrid type s_carr_id.
        types:   connid type s_conn_id.
        types:   fldate type s_date.
        types: end of sflight_key.
    
        types: sflight_keys type standard table of sflight_key,
               sflight_table type standard table of sflight.
    
        methods:
          handle_data_changed
             for event data_changed of cl_gui_alv_grid
                 importing er_data_changed.
    
        methods:
          get_inserted_rows
               exporting
                  inserted_rows type sflight_keys.
    
        methods:
          get_deleted_rows
              exporting
                  deleted_rows type sflight_table.
    
        methods:
           refresh_delta_tables.
    
        methods: set_table_is_initial.
    
        methods: set_table_is_not_initial.
    
        methods: table_is_initial
                    returning value(initial) type char01.
    
    *..............
    
      private section.
    
    * §4.Define internal tables to remember inserted and deleted lines,
    *    thus the delta between input made after the last saving.
    
        data: inserted_rows type sflight_keys,
              deleted_rows type standard table of sflight.
    
    
    * This flag is set if any error occured in one of the
    * following methods:
        data: error_in_data type c.
    
    * This flag signals that no records were read for the flight
    * table initially:
        data: initial_table type c.
    ** Methods to modularize event handler method HANDLE_DATA_CHANGED:
    *
        methods:
          check_double_entries
             importing
                pr_data_changed type ref to cl_alv_changed_data_protocol.
    
        methods:
          update_delta_tables
             importing
                pr_data_changed type ref to cl_alv_changed_data_protocol.
    
        methods:
          perform_semantic_checks
             importing
                pr_data_changed type ref to cl_alv_changed_data_protocol.
    
        methods:
          get_cell_values
               importing
                 row_id          type int4
                 pr_data_changed type ref to cl_alv_changed_data_protocol
               exporting
                 key             type sflight_key.
    
    
    
    endclass.                    "lcl_event_receiver DEFINITION
    **---------------------------------------------------------
    class lcl_event_receiver implementation.
      method handle_data_changed.
    *
    *    data: ls_good type lvc_s_modi,
    *          l_price type s_price,
    *          ls_new type lvc_s_moce.
    *
    *    error_in_data = space.
    *
    ** check if there exist double entries
    *    call method check_double_entries( er_data_changed ).
    *
    ** remember new or deleted lines for saving
    *    call method update_delta_tables( er_data_changed ).
    *
    ** check mt_good_cells semantically
    *    call method perform_semantic_checks( er_data_changed ).
    *
    *    if error_in_data = 'X'.
    *      call method er_data_changed->display_protocol.
    *    endif.
    
      endmethod.                    "handle_data_changed
    
    *-----------------------------------------------------------------------
      method check_double_entries.
        data: lt_good_cells type lvc_t_modi,
              ls_good type lvc_s_modi,
              ls_key type sflight_key,
              ls_sflight type sflight,
              l_flightdate like gt_outtab-fldate,
              l_del_row type lvc_s_moce,
              ls_outtab like line of gt_outtab,
              l_reentered type c.
    
    
    
    * §5.Check if there exist already other records with equal key fields.
    
    *.............................................
    * Check if the user has entered two new lines where the key fields
    * are equal.
    *.............................................
    * Since CARRID and CONNID are read only, the check is restrained
    * to field FLDATE.
    *
    * Algorithm: Copy all entries in MT_GOOD_CELLS to a dummy table.
    *            During the copying procedure check if there exists
    *            already a line with the same Flight date.
    *
    *    loop at pr_data_changed->mt_good_cells into ls_good.
    *      case ls_good-fieldname.
    *        when 'FLDATE'.
    *
    *          call method pr_data_changed->get_cell_value
    *                      exporting
    *                            i_row_id = ls_good-row_id
    *                            i_fieldname = ls_good-fieldname
    *                      importing e_value = l_flightdate.
    *
    *          read table lt_good_cells with key
    *                            value = l_flightdate
    *                            transporting no fields.
    *          if sy-subrc = 0.
    ** There exists already a line with the same flight date!
    *            call method pr_data_changed->add_protocol_entry
    *                         exporting
    *              i_msgid = '0K' i_msgno = '000'  i_msgty = 'E'
    *              i_msgv1 = text-m01
    *              i_fieldname = ls_good-fieldname
    *              i_row_id = ls_good-row_id.
    *
    *            error_in_data = 'X'.
    *          else.
    *            ls_good-value = l_flightdate.
    *            append ls_good to lt_good_cells.
    *          endif.
    *      endcase.
    *
    *    endloop.
    *
    **.........................
    ** Check if any new entries already exist in gt_outtab.
    ** At this point, lt_good_cells contains only lines with
    ** FIELDNAME = 'FLDATE'.
    **........................
    *    loop at lt_good_cells into ls_good.
    *      l_flightdate = ls_good-value.      "flightdate, see above
    *      read table gt_outtab with key
    *                    carrid = g_carrid
    *                    connid = g_connid
    *                    fldate = l_flightdate
    *                    transporting no fields.
    *
    *      if sy-subrc = 0.
    ** Check if this entry was deleted before, i.e. it is in the table
    ** of deleted rows. If so, the entry does not exist twice. The user
    ** has deleted a line and then reentered it.
    *        l_reentered = space.
    *
    *        loop at pr_data_changed->mt_deleted_rows into l_del_row.
    *          read table gt_outtab into ls_outtab index l_del_row-row_id.
    *          if sy-subrc ne 0.
    *            message i000(0k) with text-e01."Fehler beim Löschen
    *          elseif
    *                    ls_outtab-carrid eq g_carrid
    *                and ls_outtab-connid eq g_connid
    *                and ls_outtab-fldate eq ls_good-value.
    *            l_reentered = 'X'.
    *          endif.
    *        endloop.
    *
    *        if l_reentered ne 'X'.
    *          call method pr_data_changed->add_protocol_entry
    *                         exporting
    *              i_msgid = '0K' i_msgno = '000'  i_msgty = 'E'
    *              i_msgv1 = text-m01
    *              i_fieldname = ls_good-fieldname
    *              i_row_id = ls_good-row_id.
    *
    *          error_in_data = 'X'.
    *        endif.
    *      endif.
    *    endloop.
    *
    ** In this demo report you may prevent the selection
    ** of data by setting parameter 'p_ds'.
    ** If this is done, the next check is required:
    *    if me->table_is_initial( ) eq 'X'.
    *      call method get_cell_values
    *           exporting row_id          = 1
    *                     pr_data_changed = pr_data_changed
    *           importing key             = ls_key.
    *
    *      select single * from sflight into ls_sflight
    *                where carrid = ls_key-carrid
    *                  and connid = ls_key-connid
    *                  and fldate = ls_key-fldate.
    *
    *      if sy-subrc = 0.
    *        call method pr_data_changed->add_protocol_entry
    *                       exporting
    *            i_msgid = '0K' i_msgno = '000'  i_msgty = 'E'
    *            i_msgv1 = text-m01
    *            i_fieldname = 'FLDATE'
    *            i_row_id = 1.
    *
    *        error_in_data = 'X'.
    *      endif.
    ** flag initial_table is reset in method 'update_delta_tables'
    *    endif.
    
      endmethod.                    "check_double_entries
    *-------------------------------------------------------
      method update_delta_tables.
    *    data: l_ins_row type lvc_s_moce,
    *          l_del_row type lvc_s_moce,
    *          ls_key type sflight_key,
    *          ls_sflight type sflight,
    *          ls_outtab like line of gt_outtab.
    *
    ** §6.Use protocol attributes MT_DELETED_ROWS and MT_INSERTED_ROWS
    **    to remember which lines where deleted or inserted. Save this
    **    information in your internal tables.
    *
    **..........
    ** deleted rows
    **.............
    *    loop at pr_data_changed->mt_deleted_rows into l_del_row.
    *      read table gt_outtab into ls_outtab index l_del_row-row_id.
    *      if sy-subrc ne 0.
    *        message i000(0k) with text-e01."Fehler beim Löschen
    *      else.
    *        move-corresponding ls_outtab to ls_sflight.
    ** It should no be possible that the same line is deleted twice,
    ** so we just add the new key line to 'deleted_rows'.
    *        append ls_sflight to deleted_rows.
    ** If this line was inserted just before it is deleted:
    *        delete me->inserted_rows
    *             where carrid = ls_outtab-carrid
    *             and   connid = ls_outtab-connid
    *             and   fldate = ls_outtab-fldate.
    *      endif.
    *    endloop.
    *
    **..........
    ** inserted rows
    ** At this point ALV has not added new lines
    ** to gt_outtab, so you can not access their values
    ** by reading gt_outtab.
    ** Table MT_GOOD_CELLS holds new values that can be
    ** referenced using the ROW_ID.
    **..........
    *    if me->table_is_initial( ) eq 'X'.
    ** No flights were selected initially. This is the first new line.
    *      call method get_cell_values
    *            exporting row_id          = 1
    *                      pr_data_changed = pr_data_changed
    *            importing key             = ls_key.
    *
    *      append ls_key to inserted_rows.
    *      call method me->set_table_is_not_initial.
    *    endif.
    *
    *    loop at pr_data_changed->mt_inserted_rows into l_ins_row.
    *      call method get_cell_values
    *              exporting row_id          = l_ins_row-row_id
    *                        pr_data_changed = pr_data_changed
    *              importing key             = ls_key.
    **      READ TABLE gt_outtab INTO ls_outtab INDEX l_ins_row-row_id.
    *
    ** Just insert the new row regardless if the input is wrong
    *      append ls_key to inserted_rows.
    *    endloop.
    *
      endmethod.                    "update_delta_tables
    *---------------------------------------------------------
      method get_cell_values.
    * get values of key cells of row ROW_ID
    
    ** CARRIER
    *    call method pr_data_changed->get_cell_value
    *          exporting
    *                 i_row_id    = row_id
    *                 i_fieldname = 'CARRID'
    *               importing
    *                 e_value = key-carrid.
    *
    *    if sy-subrc ne 0.
    *      message i000(0k) with text-e02.  "Fehler beim Einfügen
    *    endif.
    ** CONNID
    *    call method pr_data_changed->get_cell_value
    *          exporting
    *                 i_row_id    = row_id
    *                 i_fieldname = 'CONNID'
    *               importing
    *                 e_value = key-connid.
    *
    *    if sy-subrc ne 0.
    *      message i000(0k) with text-e02.  "Fehler beim Einfügen
    *    endif.
    *
    ** FLDATE
    *    call method pr_data_changed->get_cell_value
    *          exporting
    *                 i_row_id    = row_id
    *                 i_fieldname = 'FLDATE'
    *               importing
    *                 e_value = key-fldate.
    *
    *    if sy-subrc ne 0.
    *      message i000(0k) with text-e02.  "Fehler beim Einfügen
    *    endif.
    
    
    
      endmethod.                    "get_cell_values
    
    *---------------------------------------------------------
      method perform_semantic_checks.
    *    data: ls_good type lvc_s_modi,
    *          l_planetype type s_planetye,
    *          l_seatsmax type s_seatsmax.
    *
    *    loop at pr_data_changed->mt_good_cells into ls_good.
    *      case ls_good-fieldname.
    *        when 'PLANETYPE'.
    *          call method pr_data_changed->get_cell_value
    *             exporting
    *               i_row_id = ls_good-row_id
    *               i_fieldname = ls_good-fieldname
    *             importing
    *               e_value = l_planetype.
    *
    *          select single seatsmax from saplane into l_seatsmax
    *                        where planetype = l_planetype.
    *
    *          if sy-subrc ne 0.
    *            call method pr_data_changed->add_protocol_entry
    *                            exporting
    *                 i_msgid = '0K' i_msgno = '000'  i_msgty = 'E'
    *                 i_msgv1 = text-m02
    *                 i_fieldname = ls_good-fieldname
    *                 i_row_id = ls_good-row_id.
    *
    *            error_in_data = 'X'.
    *          else.
    *
    *
    *            call method pr_data_changed->modify_cell
    *              exporting i_row_id    = ls_good-row_id
    *                        i_fieldname = 'SEATSMAX'
    *                        i_value     = l_seatsmax.
    *          endif.
    *      endcase.
    *    endloop.
      endmethod.                    "perform_semantic_checks
    
    *------------------------------------------------------
    
      method get_inserted_rows.
    *    inserted_rows = me->inserted_rows.
      endmethod.                    "get_inserted_rows
    *------------------------------------------------------
    
      method get_deleted_rows.
    *    deleted_rows = me->deleted_rows.
      endmethod.                    "get_deleted_rows
    *------------------------------------------------------
      method refresh_delta_tables.
    *    clear me->inserted_rows[].
    *    clear me->deleted_rows[].
      endmethod.                    "refresh_delta_tables
    *------------------------------------------------------
      method set_table_is_initial.
    *    initial_table = 'X'.
      endmethod.                    "set_table_is_initial
    *------------------------------------------------------
      method set_table_is_not_initial.
    *    initial_table = space.
      endmethod.                    "set_table_is_not_initial
    *------------------------------------------------------
      method table_is_initial.
    *    if initial_table = 'X'.
    *      initial = 'X'.
    *    else.
    *      initial = space.
    *    endif.
      endmethod.                    "table_is_initial
    
    
    endclass.                    "lcl_event_receiver IMPLEMENTATION
    
    
    data: g_verifier type ref to lcl_event_receiver.
    data: g_max type i value 100.
    
    data: gs_layout type lvc_s_layo.
    data: ok_code like sy-ucomm,
          save_ok like sy-ucomm.
    
    parameters: p_ds type c as checkbox.   "delete selection
    
    select-options s_carrid for sflight-carrid
                                no intervals no-extension default 'LH'.
    select-options s_connid for sflight-connid
                               no intervals no-extension default '0400'.
    
    start-of-selection.
    
      g_carrid = s_carrid-low.
      g_connid = s_connid-low.
    
    * first check airline and connection
      select single * from spfli into gs_spfli
                         where carrid = g_carrid
                         and connid = g_connid.
    
      call screen 100.
    *&---------------------------------------------------------------------*
    *&      Module  STATUS_0100  OUTPUT
    *&---------------------------------------------------------------------*
    *       text
    *----------------------------------------------------------------------*
    module status_0100 output.
      set pf-status 'MAIN100'.
      set titlebar 'MAIN100'.
      if g_custom_container is initial.
        perform create_and_init_alv changing gt_outtab[]
                                             gt_fieldcat.
      endif.
    endmodule.                 " STATUS_0100  OUTPUT
    *&---------------------------------------------------------------------*
    *&      Form  create_and_init_alv
    *&---------------------------------------------------------------------*
    *       text
    *----------------------------------------------------------------------*
    *      <--P_GT_OUTTAB[]  text
    *      <--P_GT_FIELDCAT  text
    *----------------------------------------------------------------------*
    form create_and_init_alv changing pt_outtab like gt_outtab[]
                                      pt_fieldcat type lvc_t_fcat.
      data: lt_exclude type ui_functions.
    
      create object g_custom_container
             exporting container_name = g_container.
      create object g_grid
             exporting i_parent = g_custom_container.
    * Create Objekt to verify input values.
    * (This object is already needed in form SELECT_DATA).
      create object g_verifier.
    *  SET HANDLER g_verifier->handle_data_changed FOR g_grid.
      perform select_data changing pt_outtab[].
      perform build_fieldcat changing pt_fieldcat.
      perform exclude_tb_functions changing lt_exclude.
      gs_layout-stylefname = 'CELLTAB'.
    
      call method g_grid->set_table_for_first_display
        exporting
          it_toolbar_excluding = lt_exclude
          is_layout            = gs_layout
        changing
          it_fieldcatalog      = pt_fieldcat
          it_outtab            = pt_outtab[].
    
    * Set editable cells to ready for input initially
      call method g_grid->set_ready_for_input
        exporting
          i_ready_for_input = 1.
    
    endform.                    " create_and_init_alv
    
    *&---------------------------------------------------------------------*
    *&      Form  select_data
    *&---------------------------------------------------------------------*
    *       text
    *----------------------------------------------------------------------*
    *      <--P_GT_OUTTAB  text
    *----------------------------------------------------------------------*
    form select_data changing pt_outtab like gt_outtab[].
      data: lt_sflight type table of sflight,
            ls_sflight type sflight,
            ls_outtab like line of gt_outtab,
            l_index type i,
            ls_spfli type spfli,                                "#EC NEEDED
            lt_celltab type lvc_t_styl.
    
    
    
    * Check parameter 'p_ds'=>optionally select no data
      if p_ds is initial.
    * Select data from sflight
        select * from sflight into table lt_sflight up to g_max rows
                         where carrid = g_carrid
                           and connid = g_connid.
      endif.
    
      if sy-subrc ne 0 or not p_ds is initial.
    * no flights were found!
    * We provide some default values for the first line that is entered:
        ls_outtab-carrid = g_carrid.
        ls_outtab-connid = g_connid.
        case g_carrid.
          when 'LH'.
            ls_outtab-currency = 'DEM'.
          when others.
            ls_outtab-currency = 'US'.
        endcase.
        ls_outtab-seatsocc = 0.
        ls_outtab-paymentsum = 0.
    
    * set fields FLDATE, PRICE and PLANETYPE to editable
        perform fill_celltab using 'RW'
                             changing lt_celltab.
        insert lines of lt_celltab into table ls_outtab-celltab.
        append ls_outtab to pt_outtab.
    
    * Tell Verify-Objekt that the table was initial
        call method g_verifier->set_table_is_initial.
      else.
        call method g_verifier->set_table_is_not_initial.
    * move corresponding fields from lt_sflight to gt_outtab
        loop at lt_sflight into ls_sflight.
          move-corresponding ls_sflight to ls_outtab.
          append ls_outtab to pt_outtab.
        endloop.
    
    * §3.Set all cells of the table non-editable by using the style table.
    
        loop at pt_outtab into ls_outtab.
          l_index = sy-tabix.
          refresh lt_celltab.
          perform fill_celltab using 'RO'
                            changing lt_celltab.
    * Copy your celltab to the celltab of the current row of gt_outtab.
          insert lines of lt_celltab into table ls_outtab-celltab.
          modify pt_outtab from ls_outtab index l_index.
        endloop.
      endif.
    
    endform.                               " select_data
    *&---------------------------------------------------------------------*
    *&      Form  fill_celltab
    *&---------------------------------------------------------------------*
    *       text
    *----------------------------------------------------------------------*
    *      -->VALUE(P_MODE)  text
    *      -->PT_CELLTAB     text
    *----------------------------------------------------------------------*
    form fill_celltab using value(p_mode)
                      changing pt_celltab type lvc_t_styl.
      data: ls_celltab type lvc_s_styl,
            l_mode type raw4.
    * This forms sets the style of columns 'PRICE', FLDATE and PLANETYPE
    * editable
    
      if p_mode eq 'RW'.
        l_mode = cl_gui_alv_grid=>mc_style_enabled.
      else.                                "p_mode eq 'RO'
        l_mode = cl_gui_alv_grid=>mc_style_disabled.
      endif.
    
      ls_celltab-fieldname = 'FLDATE'.
      ls_celltab-style = l_mode.
      insert ls_celltab into table pt_celltab.
      ls_celltab-fieldname = 'PRICE'.
      ls_celltab-style = l_mode.
      insert ls_celltab into table pt_celltab.
      ls_celltab-fieldname = 'PLANETYPE'.
      ls_celltab-style = l_mode.
      insert ls_celltab into table pt_celltab.
    
    endform.                               " FILL_CELLTAB
    *&---------------------------------------------------------------------*
    *&      Form  BUILD_FIELDCAT
    *&---------------------------------------------------------------------*
    *       text
    *----------------------------------------------------------------------*
    *      <--P_GT_FIELDCAT  text
    *----------------------------------------------------------------------*
    form build_fieldcat changing pt_fieldcat type lvc_t_fcat.
    
      data ls_fcat type lvc_s_fcat.
    
      call function 'LVC_FIELDCATALOG_MERGE'
        exporting
          i_structure_name = 'SFLIGHT'
        changing
          ct_fieldcat      = pt_fieldcat.
    
      loop at pt_fieldcat into ls_fcat.
        if    ls_fcat-fieldname eq 'PRICE'
           or ls_fcat-fieldname eq 'PLANETYPE'
           or ls_fcat-fieldname eq 'FLDATE'.
    
    * §1.Set status of columns FLDATA, PRICE and PLANETYPE to editable.
    *    Since all cells are set to non-editable (see step 3) the cells
    *    of this columns will only be editable for new lines.
    
          ls_fcat-edit = 'X'.
    
    * Field 'checktable' is set to avoid shortdumps that are caused
    * by inconsistend data in check tables. You may comment this out
    * when the test data of the flight model is consistent in your system.
          ls_fcat-checktable = '!'.        "do not check foreign keys
    
          modify pt_fieldcat from ls_fcat.
        elseif ls_fcat-fieldname = 'CARRID'
           or ls_fcat-fieldname = 'CONNID'
           or ls_fcat-fieldname = 'CURRENCY'.
    
    * §2.Use field AUTO_VALUE of the fieldcatalog to preset values when new
    *    lines are added.
    
          ls_fcat-auto_value = 'X'.
          ls_fcat-checktable = '!'.   "do not check foreign key relations
    
          modify pt_fieldcat from ls_fcat.
        endif.
    
      endloop.
    
    endform.                    "build_fieldcat
    *&---------------------------------------------------------------------*
    *&      Form  exclude_tb_functions
    *&---------------------------------------------------------------------*
    *       text
    *----------------------------------------------------------------------*
    *      <--P_LT_EXCLUDE  text
    *----------------------------------------------------------------------*
    *---------------------------------------------
    form exclude_tb_functions changing pt_exclude type ui_functions.
    *
      data ls_exclude type ui_func.
    
      ls_exclude = cl_gui_alv_grid=>mc_fc_loc_insert_row.
      append ls_exclude to pt_exclude.
      ls_exclude = cl_gui_alv_grid=>mc_fc_loc_undo.
      append ls_exclude to pt_exclude.
      ls_exclude = cl_gui_alv_grid=>mc_fc_loc_copy_row.
      append ls_exclude to pt_exclude.
    
    endform.                               " EXCLUDE_TB_FUNCTIONS
    *&---------------------------------------------------------------------*
    *&      Module  USER_COMMAND_0100  INPUT
    *&---------------------------------------------------------------------*
    *       text
    *----------------------------------------------------------------------*
    module user_command_0100 input.
      save_ok = sy-ucomm.
      clear ok_code.
      case save_ok.
        when 'SAVE'.
    *      perform save_data.
        when 'BACK'.
    * §10.Unlock your database table.
    *      perform unlock_sflight.
          leave to screen 0.
        when 'EXIT'.
          perform exit_program.
        when 'ADD'.
          perform add_line_item.
        when others.
    *     do nothing
      endcase.
    endmodule.                 " USER_COMMAND_0100  INPUT
    *---------------------------------------------------------------------*
    *       FORM EXIT_PROGRAM                                             *
    *---------------------------------------------------------------------*
    form exit_program.
      leave program.
    endform.                    "exit_program
    *&---------------------------------------------------------------------*
    *&      Form  ADD_LINE_ITEM
    *&---------------------------------------------------------------------*
    *       text
    *----------------------------------------------------------------------*
    *  -->  p1        text
    *  <--  p2        text
    *----------------------------------------------------------------------*
    form add_line_item .
    data: lt_rows type lvc_t_row.
    data: wa_rows type lvc_t_row with header line.
    data: tabix type sy-tabix.
    *&Find the  row ( index ) number
     call method g_grid->get_selected_rows
              importing et_index_rows = lt_rows.
     call method cl_gui_cfw=>flush.
     read table lt_rows into wa_rows index 1.
    
     tabix = wa_rows-index .
    
    insert gt_outtab  index tabix.
    *REFRESH_TABLE_DISPLAY
    
    call method g_grid->refresh_table_display
    *  EXPORTING
    *    IS_STABLE      =
    *    I_SOFT_REFRESH =
    *  EXCEPTIONS
    *    FINISHED       = 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.
    
    endform.                    " ADD_LINE_ITEM
    

    Thanks,

    Chidanand

    Add a comment
    10|10000 characters needed characters exceeded

  • author's profile photo Former Member
    Former Member
    Posted on Oct 31, 2008 at 08:40 AM

    Hi,

    U can do it using REUSE_ALV_GRID_DISPLAY

    Just do like this...

    1. Fieldcatalog.
    is_fieldcat-col_pos = 1.
    is_fieldcat-edit = 'X'.
    is_fieldcat-tabname = 'T_MARA'.
    is_fieldcat-fieldname = 'MATNR'.
    is_fieldcat-seltext_l = 'Material Number'.
    is_fieldcat-outputlen = 20.
    

    2. Display ALV.
    CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
     EXPORTING
    *   I_INTERFACE_CHECK                 = ' '
    *   I_BYPASSING_BUFFER                = ' '
    *   I_BUFFER_ACTIVE                   = ' '
       i_callback_program                = sy-repid
    *   I_CALLBACK_PF_STATUS_SET          = ' '
       i_callback_user_command           = 'USER_COMMAND'
    *   I_CALLBACK_TOP_OF_PAGE            = ' '
    *   I_CALLBACK_HTML_TOP_OF_PAGE       = ' '
    *   I_CALLBACK_HTML_END_OF_LIST       = ' '
    *   I_STRUCTURE_NAME                  =
    *   I_BACKGROUND_ID                   = ' '
    *   I_GRID_TITLE                      =
    *   I_GRID_SETTINGS                   =
       is_layout                         = is_layout
       it_fieldcat                       = it_fieldcat
    *   IT_EXCLUDING                      =
    *   IT_SPECIAL_GROUPS                 =
    *   IT_SORT                           =
    *   IT_FILTER                         =
    *   IS_SEL_HIDE                       =
    *   I_DEFAULT                         = 'X'
    *   I_SAVE                            = ' '
    *   IS_VARIANT                        =
    *   it_events                         = 
    *   it_event_exit                     = 
    *   IS_PRINT                          =
    *   IS_REPREP_ID                      =
    *   I_SCREEN_START_COLUMN             = 0
    *   I_SCREEN_START_LINE               = 0
    *   I_SCREEN_END_COLUMN               = 0
    *   I_SCREEN_END_LINE                 = 0
    *   I_HTML_HEIGHT_TOP                 = 0
    *   I_HTML_HEIGHT_END                 = 0
    *   IT_ALV_GRAPHICS                   =
    *   IT_HYPERLINK                      =
    *   IT_ADD_FIELDCAT                   =
    *   IT_EXCEPT_QINFO                   =
    *   IR_SALV_FULLSCREEN_ADAPTER        =
    * IMPORTING
    *   E_EXIT_CAUSED_BY_CALLER           =
    *   ES_EXIT_CAUSED_BY_USER            =
    TABLES
      t_outtab                          = t_mara
    EXCEPTIONS
     program_error                     = 1
     OTHERS                            = 2
    

    I think this will work for u....

    Add a comment
    10|10000 characters needed characters exceeded

Before answering

You should only submit an answer when you are proposing a solution to the poster's problem. If you want the poster to clarify the question or provide more information, please leave a comment instead, requesting additional details. When answering, please include specifics, such as step-by-step instructions, context for the solution, and links to useful resources. Also, please make sure that you answer complies with our Rules of Engagement.
You must be Logged in to submit an answer.

Up to 10 attachments (including images) can be used with a maximum of 1.0 MB each and 10.5 MB total.