Can we edit alv output list.

hi happy new year to everybody ......
can anybody tell me that can we create aditable alv list ...
how can we.....

Hi,
Yes you can create an Editable ALV.
I am giving you an example of Editable ALV in OOPs.
Example:
Take a Custom container in Screen 100 and name it "LIST_AREA".
REPORT  ZSB_ALV_EDITABLE_SAMPLE.
TABLES: SFLIGHT.
DATA: gc_container TYPE scrfname VALUE 'LIST_AREA',
      gc_custom_container TYPE REF TO CL_GUI_CUSTOM_CONTAINER,
      gc_grid      TYPE REF TO CL_GUI_ALV_GRID,
      gs_layout    TYPE LVC_S_LAYO,
      gt_fieldcat  TYPE LVC_T_FCAT.
DATA: ok_code TYPE SY-UCOMM.
DATA: gt_outtab TYPE TABLE OF SFLIGHT.
*DYNPRO
CALL SCREEN 100.
*&      Module  STATUS_0100  OUTPUT
MODULE STATUS_0100 OUTPUT.
  SET PF-STATUS '100'.
  CREATE OBJECT gc_custom_container
      EXPORTING
        container_name              = gc_container
      EXCEPTIONS
        cntl_error                  = 1
        cntl_system_error           = 2
        create_error                = 3
        lifetime_error              = 4
        lifetime_dynpro_dynpro_link = 5
        OTHERS                      = 6.
  CREATE OBJECT gc_grid
      EXPORTING
        i_parent          = gc_custom_container
      EXCEPTIONS
        error_cntl_create = 1
        error_cntl_init   = 2
        error_cntl_link   = 3
        error_dp_create   = 4
        OTHERS            = 5 .
PERFORM prepare_field_catalog CHANGING gt_fieldcat .
PERFORM prepare_layout CHANGING gs_layout .
PERFORM get_alv_display.
ENDMODULE.
*&      Module  USER_COMMAND_0100  INPUT
MODULE USER_COMMAND_0100 INPUT.
  OK_CODE = SY-UCOMM.
  IF OK_CODE = 'BACK'.
    SET SCREEN 0.
    LEAVE SCREEN.
    CLEAR OK_CODE.
  ENDIF.
ENDMODULE.
FORM prepare_field_catalog CHANGING gt_fieldcat TYPE LVC_T_FCAT.
  CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'
   EXPORTING
    I_BUFFER_ACTIVE              =
     I_STRUCTURE_NAME             = 'SFLIGHT'
    I_CLIENT_NEVER_DISPLAY       = 'X'
    I_BYPASSING_BUFFER           =
    I_INTERNAL_TABNAME           =
    CHANGING
      ct_fieldcat                  = gt_fieldcat[].
ENDFORM.
FORM prepare_layout  changing p_gs_layout TYPE lvc_s_layo.
  p_gs_layout-zebra = 'X'.
  p_gs_layout-edit = 'X'.
ENDFORM.                    " prepare_layout
FORM get_alv_display .
SELECT * FROM sflight INTO TABLE gt_outtab UP TO 10 ROWS.
CALL METHOD gc_grid->set_table_for_first_display
EXPORTING
    I_STRUCTURE_NAME              = 'SFLIGHT'
    IS_LAYOUT                     = gs_layout
  CHANGING
    it_outtab                     = gt_outtab
    IT_FIELDCATALOG               = gt_fieldcat
ENDFORM.                    " get_alv_display
Regards,
Sachin

Similar Messages

  • How can we modify alv output list

    Hi
    this is fazil.
    Please tell me any body How can we modify alv output list.
    Thanks & Regards
    Fazil
    [email protected]

    Fazil,
    check the program,
    You can find the code in this program 'BCALV_FIELDCAT_TEST'
    *& Report  BCALV_FIELDCAT_TEST                                         *
    This report allows to modify the fieldcatalog of a corresponding
    output table and to view the effects of your changes directly.
    Note that for some changes you need to newly display the whole
    ALV Grid Control, e.g., DDIC-Fields are read only the first time
    you call SET_READY_FOR_FIRST_DISPLAY.
    Note also that not all scenarios can be tested since the output
    table does not comprise all fields to test available features
    of the fieldcatalog. Copy this program and extend the output
    table accordingly if you want to test such a special feature.
    (The field CARRNAME in 'gt_sflight' was added to test field REF_FIELD
    and TXT_FIELD of the fieldcatalog - see what happens if you
    calculate subtotals by carrier-id).
    report  bcalvt_fieldcatalog           .
    data: ok_code               type sy-ucomm,
          save_ok_code          type sy-ucomm,
    fieldcatalog for output table
          gt_fieldcat           type lvc_t_fcat,
    fieldcatalog for fieldcatalog itself:
          gt_fcatfcat           type lvc_t_fcat,
          gs_fcatlayo           type lvc_s_layo.
    Output table
    data: begin of gt_sflight occurs 0.
    data: carrname type s_carrname.
            include structure sflight.
    data: end of gt_sflight.
    data: g_max type i value 100.
    data: g_all type c value SPACE.
    Controls to display gt_sflight and corresponding fieldcatalog
    data: g_docking type ref to cl_gui_docking_container,
          g_alv     type ref to cl_gui_alv_grid.
    data: g_custom_container type ref to cl_gui_custom_container,
          g_editable_alv     type ref to cl_gui_alv_grid.
    LOCAL CLASS Definition
    class lcl_event_receiver definition.
      public section.
        methods handle_data_changed
          for event data_changed of cl_gui_alv_grid
          importing er_data_changed.
    endclass.
    class lcl_event_receiver implementation.
      method handle_data_changed.
    at the time being, no checks are made...
      endmethod.
    endclass.
    data: event_receiver type ref to lcl_event_receiver.
    end-of-selection.
      set screen 100.
    *&      Module  STATUS_0100  OUTPUT
          text
    module status_0100 output.
      set pf-status 'BASIC'.
      set titlebar 'BASICTITLE'.
    create ALV Grid Control in the first run
      if g_docking is initial.
        perform create_and_init_controls.
      endif.
    endmodule.                             " STATUS_0100  OUTPUT
    *&      Module  USER_COMMAND_0100  INPUT
          text
    module user_command_0100 input.
      save_ok_code = ok_code.
      clear ok_code.
      case save_ok_code.
        when 'SUBMIT'.
    set the frontend fieldcatalog
    ATTENTION: DDIC-Fields are not updated using this method!
    (see 'RESTART')
          call method g_alv->set_frontend_fieldcatalog
               exporting
                 it_fieldcatalog = gt_fieldcat.
          call method g_alv->refresh_table_display.
          call method cl_gui_cfw=>flush.
        when 'RESTART'.
    Destroy the control currently visible and display it again
    using the changed fieldcatalog.
          perform restart_sflight.
        when '&ALL'.
          perform switch_visibility.
      endcase.
    endmodule.                             " USER_COMMAND_0100  INPUT
    *&      Form  CREATE_AND_INIT_CONTROLS
          text
    -->  p1        text
    <--  p2        text
    form create_and_init_controls.
      create object g_docking
          exporting
               dynnr = '100'
               extension = 150
               side = cl_gui_docking_container=>dock_at_bottom.
      create object g_alv
          exporting
               i_parent = g_docking.
      create object g_custom_container
          exporting
               container_name = 'CC_0100_FIELDCAT'.
      create object g_editable_alv
          exporting
               i_parent = g_custom_container.
    register events
      create object event_receiver.
      set handler event_receiver->handle_data_changed for g_editable_alv.
      call method g_editable_alv->register_edit_event
                    exporting
                       i_event_id = cl_gui_alv_grid=>mc_evt_modified.
      perform build_fieldcatalogs changing gt_fieldcat gt_fcatfcat.
      perform modify_fieldcatalog changing gt_fcatfcat.
      perform select_data.                 "CHANGING gt_sflight
      call method g_alv->set_table_for_first_display
              changing
                   it_outtab       = gt_sflight[]
                   it_fieldcatalog = gt_fieldcat[].
    optimize column width of grid displaying fieldcatalog
      gs_fcatlayo-cwidth_opt = 'X'.
    Get fieldcatalog of table sflight - alv might have
    modified it after passing.
      call method g_alv->get_frontend_fieldcatalog
                importing et_fieldcatalog = gt_fieldcat[].
      call method cl_gui_cfw=>flush.
    Display fieldcatalog of table sflight:
      call method g_editable_alv->set_table_for_first_display
              exporting
                   is_layout       = gs_fcatlayo
              changing
                   it_outtab       = gt_fieldcat[]
                   it_fieldcatalog = gt_fcatfcat[].
    register events
      create object event_receiver.
      set handler event_receiver->handle_data_changed for g_editable_alv.
    endform.                               " CREATE_AND_INIT_CONTROLS
    *&      Form  restart_sflight
          text
    -->  p1        text
    <--  p2        text
    form restart_sflight.
      data: ls_fieldcat type lvc_s_fcat.
    free g_docking and thus g_alv
      call method g_docking->free.
      clear g_docking.
      clear g_alv.
    create new instances
      create object g_docking
          exporting
               dynnr = '100'
               extension = 150
               side = cl_gui_docking_container=>dock_at_bottom.
      create object g_alv
          exporting
               i_parent = g_docking.
    This is an internal method to invalidate all fields in the fieldcat
      loop at gt_fieldcat into ls_fieldcat.
        clear ls_fieldcat-tech_comp.
        modify gt_fieldcat from ls_fieldcat.
      endloop.
    Newly display the list with current fieldcatalog.
      call method g_alv->set_table_for_first_display
              changing
                   it_outtab       = gt_sflight[]
                   it_fieldcatalog = gt_fieldcat.
    Get fieldcatalog - it might be changed by ALV in the last call
      call method g_alv->get_frontend_fieldcatalog
              importing
                   et_fieldcatalog = gt_fieldcat[].
      call method g_editable_alv->refresh_table_display.
      call method cl_gui_cfw=>flush.
    endform.                               " restart_sflight
    *&      Form  select_data
          text
    -->  p1        text
    <--  p2        text
    form select_data.
      data: lt_sflight type table of sflight with header line,
            ls_scarr type scarr.
    select data of sflight
      select * from sflight into table lt_sflight up to g_max rows.
    copy data to gt_sflight and update CARRNAME
      loop at lt_sflight.
        move-corresponding lt_sflight to gt_sflight.
        select single * from scarr into ls_scarr
           where carrid = gt_sflight-carrid.
        gt_sflight-carrname = ls_scarr-carrname.
        append gt_sflight.
      endloop.
    endform.                               " select_data
    *&      Form  BUILD_FIELDCATALOGS
          text
         <--P_GT_FIELDCAT  text
         <--P_GT_FCATFCAT  text
    form build_fieldcatalogs changing p_fieldcat type lvc_t_fcat
                                      p_fcatfcat type lvc_t_fcat.
      data: ls_fcat     type lvc_s_fcat.
    Fieldcatalog for table SFLIGHT: p_fieldcat
    generate fieldcatalog automatically
      call function 'LVC_FIELDCATALOG_MERGE'
          exporting
               i_structure_name       = 'SFLIGHT'
            I_CLIENT_NEVER_DISPLAY = 'X'
           changing
                ct_fieldcat            = p_fieldcat[]
       EXCEPTIONS
            INCONSISTENT_INTERFACE = 1
            PROGRAM_ERROR          = 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.
    shift all column positions to the right except for MANDT
      loop at p_fieldcat into ls_fcat.
        if ls_fcat-fieldname ne 'MANDT'.
          add 1 to ls_fcat-col_pos.
          if ls_fcat-fieldname = 'CARRID'.
            ls_fcat-txt_field = 'CARRNAME'."link CARRNAME to CARRID
          endif.
          modify p_fieldcat from ls_fcat.
        endif.
      endloop.
    create a new line for CARRNAME in p_fieldcat
      clear ls_fcat.
      ls_fcat-fieldname = 'CARRNAME'.
      ls_fcat-ref_table = 'SCARR'.
      ls_fcat-col_pos = 1.
    insert new line before CARRID (do not forget MANDT!).
      insert ls_fcat into p_fieldcat index 1.
    Fieldcatalog for table LVC_T_FCAT:p_fcatfcat
    Generate fieldcatalog of fieldcatalog structure.
    This fieldcatalog is used to display fieldcatalog 'p_fieldcat'
    on the top of the screen.
      call function 'LVC_FIELDCATALOG_MERGE'
          exporting
               i_structure_name       = 'LVC_S_FCAT'
            I_CLIENT_NEVER_DISPLAY = 'X'
           changing
                ct_fieldcat            = p_fcatfcat[]
       EXCEPTIONS
            INCONSISTENT_INTERFACE = 1
            PROGRAM_ERROR          = 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.
    Hide all fields that are not documented (valid for release 4.6A)
      perform hide_fields changing p_fcatfcat.
    endform.                               " BUILD_FIELDCATALOGS
    *&      Module  EXIT_PROGRAM  INPUT
          text
    module exit_program input.
      leave program.
    endmodule.                             " EXIT_PROGRAM  INPUT
    *&      Form  MODIFY_FIELDCATALOG
          text
         <--P_GT_FCATFCAT  text
    form modify_fieldcatalog changing p_fcatfcat type lvc_t_fcat.
      data ls_fcat type lvc_s_fcat.
      loop at p_fcatfcat into ls_fcat.
        ls_fcat-coltext = ls_fcat-fieldname.
        ls_fcat-edit = 'X'.
        if ls_fcat-fieldname = 'COL_POS' or ls_fcat-fieldname = 'FIELDNAME'.
          ls_fcat-key = 'X'.
        endif.
        modify p_fcatfcat from ls_fcat.
      endloop.
    endform.                               " MODIFY_FIELDCATALOG
    form hide_fields changing p_fieldcat type lvc_t_fcat.
      data: ls_fcat type lvc_s_fcat.
    Only show documented fields of fieldcatalog.
    For a documentation choose "Help->Application Help" in the menu.
      loop at p_fieldcat into ls_fcat.
        if not (
             ls_fcat-fieldname eq 'CFIELDNAME'
        or   ls_fcat-fieldname eq 'COL_POS'
        or   ls_fcat-fieldname eq 'COLDDICTXT'
        or   ls_fcat-fieldname eq 'COLTEXT'
        or   ls_fcat-fieldname eq 'CURRENCY'
        or   ls_fcat-fieldname eq 'DD_OUTLEN'
        or   ls_fcat-fieldname eq 'DECIMALS_O'
        or   ls_fcat-fieldname eq 'DECMLFIELD'
        or   ls_fcat-fieldname eq 'DO_SUM'
        or   ls_fcat-fieldname eq 'DRAGDROPID'
        or   ls_fcat-fieldname eq 'EDIT_MASK'
        or   ls_fcat-fieldname eq 'EMPHASIZE'
        or   ls_fcat-fieldname eq 'EXPONENT'
        or   ls_fcat-fieldname eq 'FIELDNAME'
        or   ls_fcat-fieldname eq 'HOTSPOT'
        or   ls_fcat-fieldname eq 'ICON'
        or   ls_fcat-fieldname eq 'INTLEN'
        or   ls_fcat-fieldname eq 'INTTYPE'
        or   ls_fcat-fieldname eq 'JUST'
        or   ls_fcat-fieldname eq 'KEY'
        or   ls_fcat-fieldname eq 'LOWERCASE'
        or   ls_fcat-fieldname eq 'LZERO'
        or   ls_fcat-fieldname eq 'NO_OUT'
        or   ls_fcat-fieldname eq 'NO_SIGN'
        or   ls_fcat-fieldname eq 'NO_SUM'
        or   ls_fcat-fieldname eq 'NO_ZERO'
        or   ls_fcat-fieldname eq 'OUTPUTLEN'
        or   ls_fcat-fieldname eq 'QFIELDNAME'
        or   ls_fcat-fieldname eq 'QUANTITY'
        or   ls_fcat-fieldname eq 'REF_FIELD'
        or   ls_fcat-fieldname eq 'REF_TABLE'
        or   ls_fcat-fieldname eq 'REPREP'
        or   ls_fcat-fieldname eq 'REPTEXT'
        or   ls_fcat-fieldname eq 'ROLLNAME'
        or   ls_fcat-fieldname eq 'ROUND'
        or   ls_fcat-fieldname eq 'ROUNDFIELD'
        or   ls_fcat-fieldname eq 'SCRTEXT_L'
        or   ls_fcat-fieldname eq 'SCRTEXT_M'
        or   ls_fcat-fieldname eq 'SCRTEXT_S'
        or   ls_fcat-fieldname eq 'SELDDICTXT'
        or   ls_fcat-fieldname eq 'SELTEXT'
        or   ls_fcat-fieldname eq 'SP_GROUP'
        or   ls_fcat-fieldname eq 'SYMBOL'
        or   ls_fcat-fieldname eq 'TECH'
        or   ls_fcat-fieldname eq 'TIPDDICTXT'
        or   ls_fcat-fieldname eq 'TOOLTIP'
        or   ls_fcat-fieldname eq 'TXT_FIELD' ).
          ls_fcat-tech = 'X'.
        endif.
        modify p_fieldcat from ls_fcat.
      endloop.
    endform.
    form switch_visibility.
    data:  lt_fcatfcat type lvc_t_fcat,
            ls_fcat type lvc_s_fcat.
    call method g_editable_alv->get_frontend_fieldcatalog
                 importing ET_FIELDCATALOG = lt_fcatfcat.
    if not g_all is initial.
         perform hide_fields changing lt_fcatfcat.
         g_all = SPACE.
    else.
        loop at lt_fcatfcat into ls_fcat.
           if ls_fcat-tech eq 'X'.
               ls_fcat-tech = SPACE.
               ls_fcat-no_out = 'X'.
               modify lt_fcatfcat from ls_fcat.
           endif.
        endloop.
        g_all = 'X'.
    endif.
    call method g_editable_alv->set_frontend_fieldcatalog
                exporting it_fieldcatalog = lt_fcatfcat.
    call method g_editable_alv->refresh_table_display.
    endform.
    Don't forget to rewaard if useful..

  • How can we edit alv report output.

    hi all,
    how can we edit alv report output

    \[removed by moderator as it was just a copy and paste answer of someone else's work without giving a source\]
    Edited by: Jan Stallkamp on Aug 25, 2008 4:35 PM

  • How to create 2 ALV output lists in a single output?

    Hi guys...
    My clients requirement is to create 2 ALV output lists in a single output list.how can i do this?i mean which function module i can use for this requirement?please help me out...
    Regards..

    *& Report  ZLCL_ALV_INT_INVOICE                                        *
    REPORT  ZLCL_ALV_INT_INVOICE                    .
    DATA: O_CONT1 TYPE REF TO CL_GUI_CUSTOM_CONTAINER,
          O_CONT2 TYPE REF TO CL_GUI_CUSTOM_CONTAINER,
          O_GRID1 TYPE REF TO CL_GUI_ALV_GRID,
          O_GRID2 TYPE REF TO CL_GUI_ALV_GRID.
    DATA: IT_VBRK LIKE VBRK OCCURS 1 WITH HEADER LINE.
    DATA: IT_VBRP LIKE VBRP OCCURS 1 WITH HEADER LINE.
    DATA: WA_VBRK LIKE VBRK.
    *--Layout
    DATA: WA_LAYO TYPE LVC_S_LAYO.
          CLASS LCL_BILLING DEFINITION
    CLASS LCL_BILLING DEFINITION.
      PUBLIC SECTION.
        CLASS-METHODS: HANDLE_HOTSPOT_CLICK
                 FOR EVENT HOTSPOT_CLICK
                 OF CL_GUI_ALV_GRID
                 IMPORTING E_ROW_ID.
    ENDCLASS.                    "LCL_BILLING DEFINITION
          CLASS LCL_BILLING IMPLEMENTATION
    CLASS LCL_BILLING IMPLEMENTATION.
      METHOD HANDLE_HOTSPOT_CLICK.
        IF NOT E_ROW_ID IS INITIAL.
    *--Reading selected billing docno
          READ TABLE IT_VBRK INTO WA_VBRK INDEX E_ROW_ID-INDEX.
    *--GETTING BILLING DOC ITEMS
          REFRESH IT_VBRP.
          SELECT *
            FROM VBRP
            INTO TABLE IT_VBRP
            WHERE VBELN = WA_VBRK-VBELN.
          CALL SCREEN 200.
        ENDIF.
      ENDMETHOD.                    "HANDLE_HOTSPOT_CLICK
    ENDCLASS.                    "LCL_BILLING IMPLEMENTATION
    SELECT-OPTIONS: S_VBELN FOR IT_VBRK-VBELN.
    START-OF-SELECTION.
      PERFORM GET_DATA.
      SET SCREEN 100.
    *&      Form  GET_DATA
          text
    FORM GET_DATA .
    *--billing header data
      SELECT *
        FROM VBRK
        INTO TABLE IT_VBRK
        WHERE VBELN IN S_VBELN.
      IF SY-SUBRC <> 0.
        MESSAGE I000(Z00) WITH 'No Data Found'.
      ENDIF.
      EXIT.
    ENDFORM.                    " GET_DATA
    *&      Module  STATUS_0100  OUTPUT
          text
    MODULE STATUS_0100 OUTPUT.
      SET PF-STATUS 'MENU'.
    ENDMODULE.                 " STATUS_0100  OUTPUT
    *&      Module  USER_COMMAND_0100  INPUT
          text
    MODULE USER_COMMAND_0100 INPUT.
      CASE SY-UCOMM.
        WHEN 'BACK'.
          PERFORM EXIT_PROGRAM.
      ENDCASE.
    ENDMODULE.                 " USER_COMMAND_0100  INPUT
    *&      Module  PBO_100  OUTPUT
          text
    MODULE PBO_100 OUTPUT.
      IF O_CONT1 IS INITIAL.
        CREATE OBJECT O_CONT1
          EXPORTING
            CONTAINER_NAME              = 'VBRK_CONT'
          EXCEPTIONS
            CNTL_ERROR                  = 1
            CNTL_SYSTEM_ERROR           = 2
            CREATE_ERROR                = 3
            LIFETIME_ERROR              = 4
            LIFETIME_DYNPRO_DYNPRO_LINK = 5
            OTHERS                      = 6
        IF SY-SUBRC <> 0.
          MESSAGE I000(Z00) WITH 'Error in container'.
          EXIT.
        ENDIF.
        CREATE OBJECT O_GRID1
          EXPORTING
             I_PARENT          = O_CONT1
          EXCEPTIONS
            ERROR_CNTL_CREATE = 1
            ERROR_CNTL_INIT   = 2
            ERROR_CNTL_LINK   = 3
            ERROR_DP_CREATE   = 4
            OTHERS            = 5
        IF SY-SUBRC <> 0.
          MESSAGE I000(Z00) WITH 'Error in Grid'.
          EXIT.
        ENDIF.
      ENDIF.
    *--Layout for 1st grid
      WA_LAYO-KEYHOT = 'X'.
      WA_LAYO-GRID_TITLE = 'Billing Document Header Data'.
      CALL METHOD O_GRID1->SET_TABLE_FOR_FIRST_DISPLAY
        EXPORTING
          I_STRUCTURE_NAME              = 'VBRK'
          IS_LAYOUT                     = WA_LAYO
        CHANGING
          IT_OUTTAB                     = IT_VBRK[]
        EXCEPTIONS
          INVALID_PARAMETER_COMBINATION = 1
          PROGRAM_ERROR                 = 2
          TOO_MANY_LINES                = 3
          OTHERS                        = 4.
      IF SY-SUBRC <> 0.
        MESSAGE I000(Z00) WITH 'Error in showing grid'.
        EXIT.
      ENDIF.
    *-Setting the focus on the grid
      CALL METHOD CL_GUI_CONTROL=>SET_FOCUS
        EXPORTING
          CONTROL           = O_GRID1 "Grid control object
        EXCEPTIONS
          CNTL_ERROR        = 1
          CNTL_SYSTEM_ERROR = 2
          OTHERS            = 3.
      IF SY-SUBRC <> 0.
        MESSAGE I000(Z00) WITH 'Error in setting focus'.
      ENDIF.
    *--Event handler registration
      SET HANDLER LCL_BILLING=>HANDLE_HOTSPOT_CLICK FOR O_GRID1.
    ENDMODULE.                 " PBO_100  OUTPUT
    *&      Module  STATUS_0200  OUTPUT
          text
    MODULE STATUS_0200 OUTPUT.
      SET PF-STATUS 'MENU'.
    ENDMODULE.                 " STATUS_0200  OUTPUT
    *&      Module  USER_COMMAND_0200  INPUT
          text
    MODULE USER_COMMAND_0200 INPUT.
      CASE SY-UCOMM.
        WHEN 'BACK'.
          LEAVE TO SCREEN 100.
      ENDCASE.
    ENDMODULE.                 " USER_COMMAND_0200  INPUT
    *&      Module  PBO_200  OUTPUT
          text
    MODULE PBO_200 OUTPUT.
      IF O_CONT2 IS INITIAL.
        CREATE OBJECT O_CONT2
            EXPORTING
            CONTAINER_NAME              = 'VBRP_CONT'
        EXCEPTIONS
          CNTL_ERROR                  = 1
          CNTL_SYSTEM_ERROR           = 2
          CREATE_ERROR                = 3
          LIFETIME_ERROR              = 4
          LIFETIME_DYNPRO_DYNPRO_LINK = 5
          OTHERS                      = 6
        IF SY-SUBRC <> 0.
          MESSAGE I000(Z00) WITH 'Error in container'.
          EXIT.
        ENDIF.
        CREATE OBJECT O_GRID2
          EXPORTING
            I_PARENT          = O_CONT2
          EXCEPTIONS
            ERROR_CNTL_CREATE = 1
            ERROR_CNTL_INIT   = 2
            ERROR_CNTL_LINK   = 3
            ERROR_DP_CREATE   = 4
            OTHERS            = 5.
        IF SY-SUBRC <> 0.
          MESSAGE I000(Z00) WITH 'Error in grid linking'.
          EXIT.
        ENDIF.
        CALL METHOD O_GRID2->SET_TABLE_FOR_FIRST_DISPLAY
          EXPORTING
            I_STRUCTURE_NAME              = 'VBRP'
          CHANGING
            IT_OUTTAB                     = IT_VBRP[]
          EXCEPTIONS
            INVALID_PARAMETER_COMBINATION = 1
            PROGRAM_ERROR                 = 2
            TOO_MANY_LINES                = 3
            OTHERS                        = 4.
        IF SY-SUBRC <> 0.
          MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
                     WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
        ENDIF.
      ELSE.
    *--refreshing the alv grid with the latest content of the internal table
    *--which is linked
        CALL METHOD O_GRID2->REFRESH_TABLE_DISPLAY
          EXCEPTIONS
            FINISHED = 1
            OTHERS   = 2.
        IF SY-SUBRC <> 0.
          MESSAGE I000(Z00) WITH 'Error in Refreshing gird'.
        ENDIF.
      ENDIF.
    ENDMODULE.                 " PBO_200  OUTPUT
    *&      Form  EXIT_PROGRAM
          text
    FORM EXIT_PROGRAM .
    *--Deallocating the memory
      IF NOT O_CONT2 IS INITIAL.
        CALL METHOD O_CONT2->FREE
          EXCEPTIONS
            CNTL_ERROR        = 1
            CNTL_SYSTEM_ERROR = 2
            OTHERS            = 3.
        IF SY-SUBRC <> 0.
          MESSAGE I000(Z00) WITH 'Error in deallocating memory'.
          EXIT.
        ENDIF.
        CLEAR: IT_VBRP,
               IT_VBRP[].
        FREE:  IT_VBRP,
               IT_VBRP[].
      ENDIF.
      IF NOT O_CONT1 IS INITIAL.
        CALL METHOD O_CONT1->FREE
          EXCEPTIONS
            CNTL_ERROR        = 1
            CNTL_SYSTEM_ERROR = 2
            OTHERS            = 3.
        IF SY-SUBRC <> 0.
          MESSAGE I000(Z00) WITH 'Error in deallocating memory'.
          EXIT.
        ENDIF.
        CLEAR: IT_VBRK,
               IT_VBRK[].
        FREE:  IT_VBRK,
               IT_VBRK[].
      ENDIF.
    *--Cearing the buffered content
      CALL METHOD CL_GUI_CFW=>FLUSH
        EXCEPTIONS
          CNTL_SYSTEM_ERROR = 1
          CNTL_ERROR        = 2
          OTHERS            = 3.
      IF SY-SUBRC <> 0.
        MESSAGE I000(Z00) WITH 'Error in clearing Buffer'.
        EXIT.
      ENDIF.
      LEAVE PROGRAM.
    ENDFORM.                    " EXIT_PROGRAM
    SCREEN 100
    PROCESS BEFORE OUTPUT.
      MODULE STATUS_0100.
      MODULE PBO_100.
    PROCESS AFTER INPUT.
      MODULE USER_COMMAND_0100.
    SCREEN200
    PROCESS BEFORE OUTPUT.
      MODULE STATUS_0200.
      MODULE PBO_200.
    PROCESS AFTER INPUT.
      MODULE USER_COMMAND_0200.

  • How to create editable ALV grid/list

    Hi,
    I want to create editable ALV grid/list so that user can modify the data in the ALV.
    And when user presses save button data will get saved in Z table.
    I dont know how to create editable ALV so could anybody please help me regarding this?
    Thanks & regards,
    Sameer Dhuke

    HI
    check the demo programs BCALV_FULLSCREEN_GRID_EDIT
    BCALV_GRID_EDIT
    BCALV_TEST_GRID_EDIT_01
    BCALV_TEST_GRID_EDITABLE
    REUSE_ALV_GRID EDITABLE
    ALV Grid editable fields
    Just to make things a bit easy
    In the layout,there is a property called edit, make it 'X' for the particular field whichever you want to make editable.
    Hope this helps,
    Suruchi
    Message was edited by:
            Suruchi Mahajan

  • Add button to QA33 ALV output list

    Hi, SAP experts:
    I need to add a custom button to the ALV output list display in QA33 transaction.
    I´ve only found the BAdi ALV_SWITCH_GRID_LIST, but it doesn´t fit my requirements at all.
    Any idea?
    Thank you very much!

    Hi,
        Please check if this explanation helps you,
    Custom Butoon in REUSE_ALV_GRID_DISPLAY_LVC
    Regards
    Ram

  • Add check box in alv  output list in web dynpro

    Dear Friends,
    I want to Add check box in begining  of  each row  of alv output list for WEB DYNPRO  Program.
    ISHA

    Lalsha - you need an attribute (I will named check_box) in your context node to be in the 1st position of your ALV context node
    Data: lv_check_box          type ref to cl_salv_wd_uie_checkbox,
             lr_table_settigns      type ref to if_salv_wd_table_settings,
             l_value                     type ref to cl_salv_wd_config_table,
             lt_columns               type salv_wd_t_column_ref,
             ls_column                type salv_wd_s_column_ref,
             l_col_name              type string.
    if l_value is not initial.
    lr_table_settings ?= l_value.
    lt_columns = l_value->if_salv_wd_column_settings~get_columns( ).
    Loop AT lt_columns into ls_column.
    l_col_name = ls_column-r_column->get_id( ).
    IF l_col_name = 'check_box'   *your attribute name*
    CREATE OBJECT lv_check_box
    EXPORTING
    checked_fieldname = l_col_name.
    ls_column-r-column->set_cell_editor( value = lv_check_box ).
    endif.
    endloop
    Hope this help
    Jason P-V

  • Editing Alv Output

    Hi all ,
    Iam Generating ALV Grid using OOPs method, In the output list Iam editing some of the entries , now i need to store the edited output in a custom table.
    Can anyubody tell me how to capture these changes into an internal table.
    Early replies would be rewarded points.
    Thanks In advance,
    Neha

    Hi Neha,
    check this code
    *& Report  ZLAXMI_REPORT6                                              *
    REPORT  ZLAXMI_REPORT6     NO STANDARD PAGE HEADING
                               MESSAGE-ID ZZ
                               LINE-SIZE 132
                               LINE-COUNT 65 .
    TABLES: MARA.
    TYPE-POOLS: SLIS.
    TYPES: BEGIN OF T_MARA,
            MATNR TYPE MARA-MATNR, "Material Number
            ERSDA TYPE MARA-ERSDA, "Creation date
            BRGEW TYPE MARA-BRGEW, "Gross weight
            NTGEW TYPE MARA-NTGEW, "Net weight
            MTART TYPE MARA-MTART, "Material type
            MBRSH TYPE MARA-MBRSH, "Industry Sector
            REC_SEL   TYPE C , "checkbox
          END OF T_MARA.
                   V A R I A B L E S
    DATA: V_REPID LIKE SY-REPID,
          V_FLAG(1) TYPE C.
    CONSTANTS :
           C_X(1) TYPE C VALUE 'X',
           C_PF_STATUS TYPE SLIS_FORMNAME VALUE 'F_SET_PF_STATUS',
           C_FC_DELETE(6) TYPE C VALUE 'DELETE',
           C_FC_MODIFY(6) TYPE C VALUE 'MODIFY',
           C_USER_COMMAND TYPE SLIS_FORMNAME VALUE 'F_USER_COMMAND',
           C_USER_COMMAND_MODIFY TYPE SLIS_FORMNAME
                                      VALUE 'F_USER_COMMAND_MODIFY',
           C_ICON_DELETE TYPE ICON-NAME VALUE 'ICON_DELETE', " Icon,Delete'
           C_ICON_CANCEL TYPE ICON-NAME VALUE 'ICON_CANCEL', " Icon,Cancel'
           C_FC_SAVE(4)  TYPE C VALUE 'SAVE'.
    *internal table declarations.
    DATA: IT_MARA TYPE STANDARD TABLE OF T_MARA WITH HEADER LINE,
          IT_MODIFY TYPE STANDARD TABLE OF T_MARA WITH HEADER LINE,
          IT_TEMP TYPE STANDARD TABLE OF MARA WITH HEADER LINE,
    *-ALV Internal Tables.
    *--Field Catalog
           IT_FIELDCAT TYPE STANDARD TABLE OF
                            SLIS_FIELDCAT_ALV WITH HEADER LINE,
    *--Layout
           WA_LAYOUT TYPE SLIS_LAYOUT_ALV,
    *--Sort
           IT_SORT TYPE SLIS_T_SORTINFO_ALV,
           WA_SORT TYPE SLIS_SORTINFO_ALV  ,
    **-Structure for excluding function codes
           WA_EXTAB TYPE SLIS_EXTAB,
    **-To hold function codes to be excluded in ALV toolbar
           IT_EXTAB TYPE SLIS_T_EXTAB.
    *selection screen.
    SELECTION-SCREEN: BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001.
    SELECT-OPTIONS: S_MATNR FOR MARA-MATNR,
                    S_ERSDA FOR MARA-ERSDA.
    SELECTION-SCREEN: END OF BLOCK B1.
    *--Radio buttons to select either Display/Delete/Modify
    SELECTION-SCREEN BEGIN OF BLOCK B2 WITH FRAME
                    TITLE TEXT-002.
    SELECTION-SCREEN : BEGIN OF LINE.
    SELECTION-SCREEN  COMMENT 1(20) TEXT-003.
    PARAMETERS: P_DISP RADIOBUTTON GROUP RAD1 DEFAULT 'X'.
    SELECTION-SCREEN : END OF LINE.
    SELECTION-SCREEN : BEGIN OF LINE.
    SELECTION-SCREEN COMMENT 1(20) TEXT-005.
    PARAMETERS: P_UPD RADIOBUTTON GROUP RAD1.
    SELECTION-SCREEN : END OF LINE.
    SELECTION-SCREEN : BEGIN OF LINE.
    SELECTION-SCREEN COMMENT 1(20) TEXT-004.
    PARAMETERS: P_DEL RADIOBUTTON GROUP RAD1.
    SELECTION-SCREEN : END OF LINE.
    SELECTION-SCREEN END OF BLOCK B2 .
    AT SELECTION-SCREEN.
      PERFORM VALIDATE_SCREEN.
    *start of selection
    START-OF-SELECTION.
    *clear the internal tables to be used.
      CLEAR: IT_MARA,IT_MARA[],
             V_FLAG.
    *get the data
      PERFORM GET_DATA.
    *end of selection
    END-OF-SELECTION.
      IF IT_MARA[] IS INITIAL.
        MESSAGE I000 WITH
              'No Records found for the given Selection Criteria'(012).
      ELSE.
    *do alv process
        V_REPID = SY-REPID.
    *--Sort the Output Fields
        PERFORM SORT_FIELDS.
    *--Build Field catalog for the Output fields
        PERFORM BUILD_FIELDCAT.
    *--Set the Layout for ALV
        PERFORM SET_LAYOUT.
        IF P_DISP = C_X.
    *--Exclude any Buttons on the Appn tool bar
       perform change_default_pf_status.
          MOVE C_FC_DELETE TO WA_EXTAB-FCODE.    " DELETE button on ALV
          APPEND WA_EXTAB TO IT_EXTAB.
          MOVE C_FC_MODIFY TO WA_EXTAB-FCODE.    " MODIFY button on ALV
          APPEND WA_EXTAB TO IT_EXTAB.
        ELSEIF P_UPD = C_X.
    *--Exclude DELETE Button on the appn tool bar
          MOVE C_FC_DELETE TO WA_EXTAB-FCODE.    " DELETE button on ALV
          APPEND WA_EXTAB TO IT_EXTAB.
        ELSEIF P_DEL = C_X.
    *--Exclude MODIFY button on appn tool bar
          MOVE C_FC_MODIFY TO WA_EXTAB-FCODE.    " MODIFY button on ALV
          APPEND WA_EXTAB TO IT_EXTAB.
        ENDIF.
    *--Exclude SAVE button for all options
        MOVE 'SAVE' TO WA_EXTAB-FCODE.    " SAVE button on ALV
        APPEND WA_EXTAB TO IT_EXTAB.
    *--Display ALV output
        PERFORM LIST_DISPLAY TABLES IT_MARA
                             USING  C_USER_COMMAND.
      ENDIF.
    *&      Form  get_data
          text
    -->  p1        text
    <--  p2        text
    FORM GET_DATA .
      SELECT MATNR
             ERSDA
             BRGEW
             NTGEW
             MTART
             MBRSH
             FROM MARA
             INTO TABLE IT_MARA
             WHERE MATNR IN S_MATNR
             AND ERSDA IN S_ERSDA.
      IF SY-SUBRC <> 0.
    *no records selected leave processing
        STOP.
      ENDIF.
      SORT IT_MARA.
    ENDFORM.                    " get_data
    *&      Form  sort_fields
          text
    -->  p1        text
    <--  p2        text
    FORM SORT_FIELDS .
      CLEAR WA_SORT.
      WA_SORT-FIELDNAME = 'MATNR'.
      WA_SORT-SPOS = '1'.
      WA_SORT-UP = 'X'.
      APPEND WA_SORT TO IT_SORT.
      CLEAR WA_SORT.
      WA_SORT-FIELDNAME = 'ERSDA'.
      WA_SORT-SPOS = '2'.
      WA_SORT-UP = 'X'.
      APPEND WA_SORT TO IT_SORT.
    ENDFORM.                    " sort_fields
    *&      Form  build_fieldcat
          text
    -->  p1        text
    <--  p2        text
    FORM BUILD_FIELDCAT .
      IT_FIELDCAT-COL_POS    = '1'.
      IT_FIELDCAT-FIELDNAME  = 'MATNR'.
      IT_FIELDCAT-KEY        = 'X'.
      IT_FIELDCAT-OUTPUTLEN  = '15'.
      IT_FIELDCAT-SELTEXT_L  = 'Material number'(022).
      APPEND IT_FIELDCAT.
      CLEAR  IT_FIELDCAT.
      IT_FIELDCAT-COL_POS    = '2'.
      IT_FIELDCAT-FIELDNAME  = 'ERSDA'.
      IT_FIELDCAT-KEY        = 'X'.
      IT_FIELDCAT-OUTPUTLEN  = '10'.
      IT_FIELDCAT-SELTEXT_L  = 'Created on'(023).
      APPEND IT_FIELDCAT.
      CLEAR  IT_FIELDCAT.
      IT_FIELDCAT-COL_POS    = '3'.
      IT_FIELDCAT-FIELDNAME  = 'BRGEW'.
      IT_FIELDCAT-OUTPUTLEN  = '10'.
      IT_FIELDCAT-SELTEXT_L  = 'GROSS WEIGHT'(024).
      APPEND IT_FIELDCAT.
      CLEAR  IT_FIELDCAT.
      IT_FIELDCAT-COL_POS    = '4'.
      IT_FIELDCAT-FIELDNAME  = 'NTGEW'.
      IT_FIELDCAT-OUTPUTLEN  = '15'.
      IT_FIELDCAT-SELTEXT_L  = 'NET WEIGHT'(025).
      APPEND IT_FIELDCAT.
      CLEAR  IT_FIELDCAT.
      IT_FIELDCAT-COL_POS    = '5'.
      IT_FIELDCAT-FIELDNAME  = 'MTART'.
      IT_FIELDCAT-OUTPUTLEN  = '3'.
      IT_FIELDCAT-SELTEXT_L  = 'Material type'(026).
      APPEND IT_FIELDCAT.
      CLEAR  IT_FIELDCAT.
      IT_FIELDCAT-COL_POS    = '6'.
      IT_FIELDCAT-FIELDNAME  = 'MBRSH'.
      IT_FIELDCAT-OUTPUTLEN  = '25'.
      IT_FIELDCAT-SELTEXT_L  = 'Industry sector'(027).
      APPEND IT_FIELDCAT.
      CLEAR  IT_FIELDCAT.
      IT_FIELDCAT-FIELDNAME  = 'REC_SEL'.
      IT_FIELDCAT-NO_OUT = C_X.
      APPEND IT_FIELDCAT.
      CLEAR  IT_FIELDCAT.
    ENDFORM.                    " build_fieldcat
    *&      Form  list_display
          text
         -->P_IT_MARA  text
         -->P_C_USER_COMMAND  text
    FORM LIST_DISPLAY  TABLES   P_IT_MARA
                       USING    P_USER_COMMAND TYPE SLIS_FORMNAME.
      CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
        EXPORTING
          I_CALLBACK_PROGRAM       = V_REPID
          I_CALLBACK_PF_STATUS_SET = C_PF_STATUS
          I_CALLBACK_USER_COMMAND  = P_USER_COMMAND
          IS_LAYOUT                = WA_LAYOUT
          IT_FIELDCAT              = IT_FIELDCAT[]
          IT_EXCLUDING             = IT_EXTAB[]
          IT_SORT                  = IT_SORT[]
        TABLES
          T_OUTTAB                 = P_IT_MARA
        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.
    ENDFORM.                    " list_display
    *&      Form  F_SET_PF_STATUS
          Set PF_STATUS STANDARD modifying the standard toolbar
          by excluding some buttons
         -->P_IT_EXTAB  -- TABLE OF EXCLUDING FUNCTIONS
    FORM F_SET_PF_STATUS USING RT_EXTAB TYPE SLIS_T_EXTAB.
      CLEAR : WA_EXTAB,
              IT_EXTAB.
    *--Set the Modified PF status for the ALV.
      SET PF-STATUS 'ALV_STATUS_01' EXCLUDING RT_EXTAB.
    ENDFORM.                               " SET_PF_STATUS
    *&      Form  f_user_command
          Handle user action on ALV toolbar
    FORM F_USER_COMMAND USING R_UCOMM LIKE SY-UCOMM
                              RS_SELFIELD TYPE SLIS_SELFIELD.
      RS_SELFIELD-REFRESH = C_X.
      IF R_UCOMM = C_FC_DELETE.
    *--User Selected DELETE button.
        PERFORM DELETE_SELECTED_RECORDS.
      ELSEIF R_UCOMM = C_FC_MODIFY.
    *--If user selects MODIFY button.
        PERFORM CHANGE_RECORDS.
      ENDIF.
    ENDFORM.                    "F_USER_COMMAND
    *&      Form  POP_UP_CONFIRMATION
          text
         <--P_ANSWER  text
    FORM POP_UP_CONFIRMATION
                                CHANGING P_ANSWER TYPE C.
      DATA:
         L_TITLE(14) TYPE C,               " Title of pop-up
         L_TXT_QUESTION(52) TYPE C,        " Text displayed in pop-up
        L_DISP_CANCEL TYPE C,             " Display 'Cancel' button?
         L_BTN1 TYPE ICON-NAME,            " Icon on button 1
         L_BTN2 TYPE ICON-NAME.            " Icon on button 2
      L_TITLE        = 'Delete'(017).                   " delete
      L_TXT_QUESTION = 'Are you sure to delete?'(018).
      L_BTN1         = C_ICON_DELETE.
      L_BTN2         = C_ICON_CANCEL.
    **-Display pop-up asking user for confirmation
      CALL FUNCTION 'POPUP_TO_CONFIRM'
        EXPORTING
          TITLEBAR              = L_TITLE
          TEXT_QUESTION         = L_TXT_QUESTION
          TEXT_BUTTON_1         = 'Yes'
          ICON_BUTTON_1         = L_BTN1
          TEXT_BUTTON_2         = 'No'
          ICON_BUTTON_2         = L_BTN2
          DEFAULT_BUTTON        = '2'
          DISPLAY_CANCEL_BUTTON = 'X'
        IMPORTING
          ANSWER                = P_ANSWER
        EXCEPTIONS
          TEXT_NOT_FOUND        = 1
          OTHERS                = 2.
      IF SY-SUBRC <> 0.
        MESSAGE E000 WITH 'Error executing function module:'(019)
                                 'POPUP_TO_CONFIRM'.
      ENDIF.
    ENDFORM.                    "pop_up_confirmation
    *&      Form  set_layout
          text
    -->  p1        text
    <--  p2        text
    FORM SET_LAYOUT .
      IF P_DEL = C_X OR P_UPD = C_X.
    *--Allow Input only if user choose 'UPDATE'/ 'DELETE' radio buttons
        WA_LAYOUT-BOX_FIELDNAME = 'REC_SEL'.
        WA_LAYOUT-BOX_TABNAME = 'IT_MARA'.
      ENDIF.
    *--Display Header based on the user selection
      IF P_DISP = C_X.
        WA_LAYOUT-WINDOW_TITLEBAR =
                              'Display '(036).
      ELSEIF P_DEL = C_X.
        WA_LAYOUT-WINDOW_TITLEBAR =
                     'Delete '(037).
      ELSEIF P_UPD = C_X.
        WA_LAYOUT-WINDOW_TITLEBAR =
                     'Change '(038).
      ENDIF.
    ENDFORM.                    " set_layout
    *&      Form  change_default_pf_status
          text
    -->  p1        text
    <--  p2        text
    FORM CHANGE_DEFAULT_PF_STATUS .
      MOVE C_FC_DELETE TO WA_EXTAB-FCODE.    " DELETE button on ALV
      APPEND WA_EXTAB TO IT_EXTAB.
      MOVE C_FC_MODIFY TO WA_EXTAB-FCODE.    " MODIFY button on ALV
      APPEND WA_EXTAB TO IT_EXTAB.
    ENDFORM.                    " change_default_pf_status
    *&      Form  f_user_command
          Handle user action on ALV toolbar
    FORM F_USER_COMMAND_MODIFY USING R_UCOMM LIKE SY-UCOMM      "#EC *
                              RS_SELFIELD TYPE SLIS_SELFIELD.
      DATA :     L_ANSWER TYPE C.                               "#EC *
      IF R_UCOMM = C_FC_SAVE.
    *user selected save button
        READ TABLE IT_MODIFY WITH KEY REC_SEL = 'X'.
    *check if user selected atleast one line.
        IF SY-SUBRC <> 0.
          MESSAGE I000 WITH 'No record(s) Selected to Modify'(016).
          EXIT.
        ENDIF.
        LOOP AT IT_MODIFY WHERE REC_SEL = 'X'.
    *--Check the entered values are valid or not.
         IF NOT ( it_modify-status = 'A' OR
                  it_modify-status = 'C' OR
                  it_modify-status = 'E' ).
    *--User Entered invalid value for STATUS field,so Display Error Msg
          CLEAR R_UCOMM.
           MESSAGE e000 WITH 'Invalid value '''(031)
                            '' for Status in the Record # '(032)
                            sy-tabix.
         ENDIF.
        ENDLOOP.
        CLEAR: IT_TEMP,
               IT_TEMP[].
        LOOP AT IT_MODIFY WHERE REC_SEL = 'X'.
          MOVE-CORRESPONDING IT_MODIFY TO IT_TEMP.
          APPEND IT_TEMP.
          CLEAR IT_TEMP.
        ENDLOOP.
    *--start new code
        DATA : IT_TEMP2 LIKE STANDARD TABLE OF MARA WITH HEADER LINE.
        SELECT * FROM MARA
                  INTO TABLE IT_TEMP2
                  FOR ALL ENTRIES IN IT_TEMP
                  WHERE MATNR = IT_TEMP-MATNR.
        IF SY-SUBRC = 0.
          LOOP AT IT_MODIFY WHERE REC_SEL = 'X'.
            READ TABLE IT_TEMP2 WITH KEY MATNR = IT_MODIFY-MATNR.
            IF SY-SUBRC = 0.
              IT_TEMP2-NTGEW = IT_MODIFY-NTGEW.
              IT_TEMP2-BRGEW = IT_MODIFY-BRGEW.
              MODIFY IT_TEMP2 INDEX SY-TABIX.
            ENDIF.
          ENDLOOP.
        ENDIF.
    *modify mara table with the changed values
        MODIFY MARA FROM TABLE IT_TEMP2 .
    *--end new code
        IF SY-SUBRC = 0.
          COMMIT WORK AND WAIT.
    *--Display message with Success in Updating database
          MESSAGE I000 WITH SY-DBCNT
                            ' Record(s) has been Updated'(020).
          CLEAR :
                 IT_MARA,
                 IT_MARA[].
    *get-data again from database.
          PERFORM GET_DATA.
            RS_SELFIELD-REFRESH = C_X.
        ELSE.
    *--Error occurred
          MESSAGE I000 WITH 'Error occured in Modifying the database'(021).
        ENDIF.
      ENDIF.
    ENDFORM.                    "f_user_command_modify
    *&      Form  validate_screen
          text
    -->  p1        text
    <--  p2        text
    FORM VALIDATE_SCREEN .
      DATA  : LV_MATNR LIKE MARA-MATNR.
    *--validate product
       IF NOT S_MATNR[] IS INITIAL.
      SELECT MATNR
             INTO MARA-MATNR
             FROM MARA
             WHERE MATNR IN S_MATNR.
      ENDSELECT.
      IF SY-SUBRC <> 0.
    *--Error
        MESSAGE E000 WITH 'Invalid Material'(034).
      ENDIF.
    ENDIF.
    ENDFORM.                    " validate_screen
    *&      Form  delete_records
          text
    -->  p1        text
    <--  p2        text
    FORM DELETE_RECORDS .
      LOOP AT IT_MARA.
        MOVE-CORRESPONDING IT_MARA TO IT_TEMP.
        APPEND IT_TEMP.
        CLEAR IT_TEMP.
      ENDLOOP.
      DELETE MARA FROM TABLE IT_TEMP.
      IF SY-SUBRC = 0.
    *--Successfully selected records Deleted.
        COMMIT WORK AND WAIT.
    *--Display Success Message to the user
        MESSAGE I000  WITH SY-DBCNT
                          ' Record(s) deleted Successfully'(010).
      ELSE.
    *--Error occured in deletion
        MESSAGE I000 WITH 'Error occured in Deleting the Record(s)'(011).
      ENDIF.
      CLEAR: IT_MARA,
             IT_MARA[],
             IT_TEMP,
             IT_TEMP[].
      V_FLAG = C_X.
      STOP.
    ENDFORM.                    " delete_records
    *&      Form  delete_selected_records
          text
    -->  p1        text
    <--  p2        text
    FORM DELETE_SELECTED_RECORDS .
      DATA  : L_ANSWER(1) TYPE C.
      READ TABLE IT_MARA WITH KEY REC_SEL = C_X.
      IF SY-SUBRC <> 0.
        MESSAGE I000 WITH 'No record(s) Selected to Delete'(013).
        EXIT.
      ELSE.
    *--Ask for delete confirmation
        PERFORM POP_UP_CONFIRMATION
                                    CHANGING L_ANSWER.
        IF L_ANSWER = '1'.             " 'Yes'
          CLEAR: IT_TEMP,
                 IT_TEMP[].
          LOOP AT IT_MARA WHERE REC_SEL = 'X'.
            MOVE-CORRESPONDING IT_MARA TO IT_TEMP.
            APPEND IT_TEMP.
            CLEAR IT_TEMP.
          ENDLOOP.
          DELETE MARA FROM TABLE IT_TEMP.
          IF SY-SUBRC = 0.
    *--Successfully selected records Deleted.
            COMMIT WORK AND WAIT.
    *--Display completed work information to the user
            MESSAGE I000  WITH SY-DBCNT
                              ' Record(s) deleted Successfully'(014).
    *--Clear the Internal tables
            CLEAR: IT_MARA,
                   IT_MARA[].
    *--Reselects entries from Database again & display in ALV
            PERFORM GET_DATA.
          ELSE.
    *--Error occured
            MESSAGE I000 WITH
                        'Error occured in Deleting the Record(s)'(015).
          ENDIF.
        ENDIF.
      ENDIF.
    ENDFORM.                    " delete_selected_records
    *&      Form  change_records
          text
    -->  p1        text
    <--  p2        text
    FORM CHANGE_RECORDS .
      READ TABLE IT_MARA WITH KEY REC_SEL = 'X'.
    *--check user selected at least 1 record to MODIFY or not
      IF SY-SUBRC <> 0.
        MESSAGE I000 WITH 'No record(s) Selected to Modify'(016).
        EXIT.
      ELSE.
        CLEAR : IT_MODIFY,
                IT_MODIFY[].
        LOOP AT IT_MARA WHERE REC_SEL = 'X'.
          IT_MODIFY = IT_MARA.
          APPEND IT_MODIFY.
          CLEAR IT_MODIFY.
        ENDLOOP.
    *--Change PF status for this new ALV list.
        PERFORM CHANGE_PF_STATUS_AGAIN.
    *--Change Field Catalog to make INPUT enabled.
        READ TABLE IT_FIELDCAT WITH KEY FIELDNAME = 'NTGEW'.
        IT_FIELDCAT-INPUT = C_X.
        MODIFY IT_FIELDCAT INDEX SY-TABIX.
    *--Call ALV LIST DISPLAY with this new values.
        PERFORM  LIST_DISPLAY TABLES IT_MODIFY
                              USING C_USER_COMMAND_MODIFY.
      ENDIF.
    ENDFORM.                    " change_records
    *&      Form  change_pf_status_again
          text
    -->  p1        text
    <--  p2        text
    FORM CHANGE_PF_STATUS_AGAIN .
      MOVE C_FC_DELETE TO WA_EXTAB-FCODE.    " DELETE button on ALV
      APPEND WA_EXTAB TO IT_EXTAB.
      MOVE C_FC_MODIFY TO WA_EXTAB-FCODE.    " MODIFY button on ALV
      APPEND WA_EXTAB TO IT_EXTAB.
    ENDFORM.                    " change_pf_status_again
    Regards,
    Laxmi.

  • How to capture row selection in ALV output List

    Hi experts,
    I am displaying some output using ALV function module. My requirement is i have to capture how much rows user has selected in the output list, based on this information i have to perform some actions.
    Please help me
    Regards,
    Sachin

    Hi Sachin,
    For this first you have to define a variable in your internal table of type c with length 1 and then while building the layout of the ALV, you have to pass this variable name to the layout field BOX_FIELDNAME.
    Now when you select a particular row, then the corresponding field in your internal table willl be marked with X. So, for further processing, you can just loop through the table where 'BOX = 'X' and proceed.
    For Example:
    *      Structure for output details
    TYPES: BEGIN OF gs_output.
            INCLUDE STRUCTURE zas_water_qlty_rep.
    TYPES: selected(1) TYPE c,
           END OF gs_output.
    DATA: object_tab            TYPE STANDARD TABLE OF gs_output.
    CONSTANTS: lc_selected(8)             TYPE c VALUE 'SELECTED'.
    lw_layout-box_fieldname     =   lc_selected.    "Field for checkbox
    * Local workarea
      DATA: lw_layout  TYPE slis_layout_alv.
    CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
           EXPORTING
                i_buffer_active          = gc_x
                i_bypassing_buffer       = gc_x
                i_callback_program       = lv_repid
                i_callback_pf_status_set = g_form_set_pf_stat
                i_callback_user_command  = lc_uform
                i_structure_name         = lv_zas_water_qlty_rep
                is_layout                = lw_layout
                it_fieldcat              = g_fieldcat_tab[]
                it_events                = g_events_tab[]
                it_event_exit            = g_event_exit_tab[]
           TABLES
                t_outtab                 = p_object_tab
           EXCEPTIONS
                program_error            = 1
                OTHERS                   = 2.
    Hope this helps.
    Regards,
    Phani.

  • Running BDC from my Editable ALV output

    Hi All,
         I want to run a bdc for my ALV output. Here the problem is the layout is editable so the values can be changed. I want to pick the values which is modified in my ALV output then using that i should run my BDC Program.
    How to catch the input given in my ALV output.
    Thank in advance.
    Arun.

    Hi, check following link:
    [https://wiki.sdn.sap.com/wiki/display/ABAP/Editable%20ALV%20through%20OOPS|https://wiki.sdn.sap.com/wiki/display/ABAP/Editable%20ALV%20through%20OOPS]

  • Compare editable alv output with database fields

    I generated 1 editable alv report with attaching flat file data,
    but i want to change the wrong fields in alv output and compare with database filds for validation.
    but when i do this . it takes previous entries of flat file.
    how can i solve it?

    Your title is much better than in the first post, however your problem description hasn't changed.
    Let me guess, you are importing a flat file, present the contents in an editable ALV grid, some values are being changed, and now the changed values do not reflect in the internal table, instead you are seeing the values as imported from the file?
    If yes -> FAQ, please search for the many previous discussions of this topic.
    Thomas

  • Adding fields to ALV output list in Tcode S_ALR_87012357

    Hi,
    I need your help to insert new fields in output at standard t-code S_ALR_87012357 for GST Report.
    Report name is RFUMSV00.
    The add/insert columns are
    1)Vendor Description,
    2)SGD Gross Amt(100% tax Reporting  curr)
    3)SGD Tax Base Amt(100% Tax Reporting curr),
    4)SGD Input Tax(7% Tax Reporting curr) and
    5) Value(100%Vendor Curr)
    Could anyone help me how to do this.
    Thanks,
    Shabareesh

    Changing the field catalog should not add the new fields required in internal table (e.g. structure RFUMS_TAX_ITEM for items)
    You could try to append a structure to those, and fill its value with FI_TAX_BADI_011 ?
    Regards,
    Raymond
    PS: List of BAdI for this report
    FI_TAX_BADI_010
    RFUMSV00: Events for List Output Using ALV
    FI_TAX_BADI_011
    RFUMSV00: Event 'APPEND' for Line Item Lists
    FI_TAX_BADI_012
    RFUMSV00: Event 'GET bkpf LATE' during Selection
    FI_TAX_BADI_013
    RFUMSV00: Set Parameters for DME Tool (Tree Type UMS1)
    FI_TAX_BADI_014
    RFUMSV00: Field Catalog of Output Lists for ALV
    FI_TAX_BADI_015
    RFUMSV00: Event "END-OF-SELECTION" before Data File Creation
    FI_TAX_BADI_016
    RFUMSV00: Transfer of All Tax Data

  • I can't edit my contact list

    i cant even add contact!

    I'm having the same problem -- can't edit or add contacts, can't assign them ringtones, either. What happened? I could do this with my old 3GS.

  • From ALV output list to selection screen

    Hi,
    I created one ALV report.
    After executing the program, it displays an ALV list.
    When I click on the back/exit/cancel buttons on the screen, it should take me to the selection screen.
    But that is not happening. it is taking to one screen which shows the report heading. IF i click back/cancel/exit buttons in this screen, it is taking me to the selection screen.
    I checked the program for any write statement, but therre are no write statements.
    Even i tried to remove the end-of-selection event in the program. but not working.
    Can any one help me on this how to overcome this issue.
    Thank you.
    Kumar

    hi check this example...
    REPORT zalv_sel_screen .TABLES: mara.DATA: BEGIN OF i_alv OCCURS 0,
          matnr TYPE mara-matnr,
          mtart TYPE mara-mtart,
          matkl TYPE mara-matkl,
          groes TYPE mara-groes,
          maktx TYPE makt-maktx,
          END OF i_alv.DATA: alv_container  TYPE REF TO cl_gui_docking_container.
    DATA: alv_grid       TYPE REF TO cl_gui_alv_grid.
    DATA: layout    TYPE lvc_s_layo.
    DATA: fieldcat  TYPE lvc_t_fcat.PARAMETERS: p_check.INITIALIZATION.  PERFORM get_data.AT SELECTION-SCREEN OUTPUT.  DATA: variant TYPE  disvariant.
      DATA: repid TYPE sy-repid.  repid = sy-repid.  variant-report = sy-repid.
      variant-username = sy-uname.  layout-zebra = 'X'.
      layout-edit_mode = 'X'.  CHECK alv_container IS INITIAL.  CREATE OBJECT alv_container
                  EXPORTING repid     = repid
                            dynnr     = sy-dynnr
                            side      = alv_container->dock_at_left
                            extension = 1500.  CREATE OBJECT alv_grid
             EXPORTING
                   i_parent          =  alv_container.*  ALV Specific. Data selection.
    Populate Field Catalog
      PERFORM get_fieldcatalog.  CALL METHOD alv_grid->set_table_for_first_display
        EXPORTING
          is_layout        = layout
          is_variant       = variant
          i_save           = 'U'
          i_structure_name = 'I_ALV'
        CHANGING
          it_outtab        = i_alv[]
          it_fieldcatalog  = fieldcat[].
    START-OF-SELECTION.
    FORM GET_DATA
    FORM get_data.  SELECT * INTO CORRESPONDING FIELDS OF TABLE i_alv
            FROM mara
              INNER JOIN makt
                ON maramatnr = maktmatnr
                       UP TO 100 ROWS
                   WHERE makt~spras = sy-langu.  SORT i_alv ASCENDING BY matnr.ENDFORM.                    "get_data***************************************************************
         Form  Get_Fieldcatalog - Set Up Columns/Headers
    FORM get_fieldcatalog.  DATA: ls_fcat TYPE lvc_s_fcat.
      REFRESH: fieldcat.  CLEAR: ls_fcat.
      ls_fcat-reptext    = 'Material Number'.
      ls_fcat-fieldname  = 'MATNR'.
      ls_fcat-ref_table  = 'I_ALV'.
      ls_fcat-outputlen  = '18'.
      ls_fcat-fix_column = 'X'.
      ls_fcat-key        = 'X'.
      ls_fcat-col_pos    = '1'.
      APPEND ls_fcat TO fieldcat.  CLEAR: ls_fcat.
      ls_fcat-reptext    = 'Material Type'.
      ls_fcat-fieldname  = 'MTART'.
      ls_fcat-ref_table  = 'I_ALV'.
      ls_fcat-outputlen  = '10'.
      ls_fcat-fix_column = 'X'.
      ls_fcat-key        = 'X'.
      ls_fcat-col_pos    = '2'.
      APPEND ls_fcat TO fieldcat.  CLEAR: ls_fcat.
      ls_fcat-reptext    = 'Material Group'.
      ls_fcat-fieldname  = 'MATKL'.
      ls_fcat-ref_table  = 'I_ALV'.
      ls_fcat-outputlen  = '12'.
      ls_fcat-col_pos    = '3'.
      APPEND ls_fcat TO fieldcat.  CLEAR: ls_fcat.
      ls_fcat-reptext    = 'Size'.
      ls_fcat-fieldname  = 'GROES'.
      ls_fcat-ref_table  = 'I_ALV'.
      ls_fcat-outputlen  = '30'.  ls_fcat-col_pos    = '4'.
      APPEND ls_fcat TO fieldcat.  CLEAR: ls_fcat.
      ls_fcat-reptext    = 'Material Description'.
      ls_fcat-fieldname  = 'MAKTX'.
      ls_fcat-ref_table  = 'I_ALV'.
      ls_fcat-outputlen  = '40'.  ls_fcat-col_pos    = '5'.
      APPEND ls_fcat TO fieldcat.ENDFORM.                    "get_fieldcatalog
    regards,
    venkat

  • Multiple selection of rows in alv output list

    experts,
    using 'REUSE_ALV_GRID_DISPLAY'
    the following is the sample code ,without using ctrl or shift key i am unable to select multiple rows .
    any resolvable answers.
    REPORT zpushbutton1.
    type-pools : slis.
    *structure declarations
    types : begin of ty_mara,
    matnr type matnr,
    ernam type ernam,
    mbrsh type mbrsh,
    CHKBOX TYPE CHAR1,
    end oF ty_mara.
    types : begin of ty_marc,
    matnr type matnr,
    werks type werks_d,
    pstat type pstat_d,
    end of ty_marc.
    *internal table declarations
    DATA : gi_mara TYPE STANDARD TABLE OF TY_MARA INITIAL SIZE 0.
    data : gi_fieldcat type slis_t_fieldcat_alv.
    *workarea declarations
    DATA : gs_mara TYPE TY_MARA,
    gs_fieldcat type slis_fieldcat_alv.
    SELECT matnr
    ernam
    mbrsh
    FROM mara
    INTO TABLE gi_mara
    UP TO 10 ROWS.
    perform build_fieldcat using :
    '1' 'CHKBOX' 'GI_MARA' 'SELECT' 'X' ,
    '2' 'MATNR' 'GI_MARA' 'MATEIRALNO' ' ',
    '3' 'ERNAM' 'GI_MARA' 'PERSON CREAT' ' ',
    '4' 'MBRSH' 'GI_MARA' 'INDUSTRY' ' '.
    CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    EXPORTING
    I_CALLBACK_PROGRAM = SY-REPID
    IT_FIELDCAT = GI_FIELDCAT
    TABLES
    t_outtab = GI_MARA
    *& Form BUILD_FIELDCAT
    form BUILD_FIELDCAT using
    PCOL TYPE CHAR2
    PFLDNAME TYPE CHAR10
    PTABNAME TYPE CHAR10
    PSELTEXT TYPE CHAR15
    PINPUT TYPE CHAR1.
    GS_FIELDCAT-COL_POS = PCOL.
    GS_FIELDCAT-FIELDNAME = PFLDNAME.
    GS_FIELDCAT-TABNAME = PTABNAME.
    GS_FIELDCAT-SELTEXT_M = PSELTEXT.
    GS_FIELDCAT-EDIT = PINPUT.
    APPEND GS_FIELDCAT TO GI_FIELDCAT.
    CLEAR GS_FIELDCAT.
    endform. " BUILD_FIELDCAT
    thanks and regards

    experts,
    can we set cursor properties during the output display
    ex : i have used function module reuse_alv_grid_display to display a list of records with passing parameter
    is_layout-box_fieldname and is_layout-box_tabname to list the first column as pushbutton.
    when i select a row ,gets selected now when i move the
    cursor (mouse) to the other row and select the row, the row previously selected will be deselected.
      solution to the above problem is to hold the ctrl or shift key for
    multiple selections.
    is there any other alternative procedure so that without holding
    ctrl or shift key multiple rows get selected.
    thks and rgrds

Maybe you are looking for