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.

Similar Messages

  • 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

  • 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

  • Edit ALV GRID

    hi,
    I have successfully displayed data in the ALV GRID(in Read-ONLY mode) by using the function of class "CL_GUI_ALV_GRID"  . But I have not been able to display the data in the edit mode .I want that the user should be able to edit the data displayed in the ALV GRID (and final data should be stored in the transparent table), but I have not been able to add that functionality . Can anyone please tell me how to do the same (any function that I need to call ??)  .
    Thanx
    sagar

    Hi Sagar,
    there was a similar question in this forum and Vijay Babu Dudla wrote a nice sample report:
    editing alv output
    Best Regards,
    Stefan

  • Reg editing alv in output mode

    Hi,
    Cud any one let me know how to edit alv ?
    im using fcat-edit = 'x' option in function module approach....but even then im not able to edit columns/fields....?
    how to edit columns/rows using function modules and OOPs methos in alv????
    Thanks
    Jay

    Hi
    i am sending you a code where the output field is edtable in the ALV oop
    you can understand very easily
    reward if usefull
    *& Report  ZAMIT_ALV_OOP_EDITABLE
    REPORT  ZAMIT_ALV_OOP_EDITABLE.
    *data declaration
    DATA: G_CONTROL TYPE REF TO CL_GUI_CUSTOM_CONTAINER,
          G_ALV     TYPE REF TO CL_GUI_ALV_GRID.
    DATA: T_FCAT TYPE LVC_T_FCAT,
          WA_FCAT TYPE LVC_S_FCAT.
    DATA: I_ZAMIT TYPE TABLE OF ZAMIT_SHIP_TAB WITH HEADER LINE.
    DATA: I_INDEX TYPE I.
    DATA: G_OK_CODE TYPE SY-UCOMM.
    DATA: G_OK_CODE1 TYPE SY-UCOMM.
    SELECT * FROM ZAMIT_SHIP_TAB INTO TABLE I_ZAMIT.
    CALL SCREEN 9000.
    SCREEN FORMS>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
    *&      Module  STATUS_9000  OUTPUT
          text
    MODULE STATUS_9000 OUTPUT.
      SET PF-STATUS 'PF9001'.
    SET TITLEBAR 'xxx'.
    ENDMODULE.                 " STATUS_9000  OUTPUT
    *&      Module  CREATE_CONTROL  OUTPUT
          text
    MODULE CREATE_CONTROL OUTPUT.
      CREATE OBJECT G_CONTROL
        EXPORTING
       PARENT                      =
          CONTAINER_NAME               = 'G_CUSTOM_CONTROL'
       STYLE                       =
       LIFETIME                    = lifetime_default
       REPID                       =
       DYNNR                       =
       NO_AUTODEF_PROGID_DYNNR     =
    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 ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
               WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.
    ENDMODULE.                 " CREATE_CONTROL  OUTPUT
    *&      Module  CREATE_ALV  OUTPUT
          text
    MODULE CREATE_ALV OUTPUT.
      CREATE OBJECT G_ALV
        EXPORTING
       I_SHELLSTYLE      = 0
       I_LIFETIME        =
          I_PARENT          = G_CONTROL
       I_APPL_EVENTS     = space
       I_PARENTDBG       =
       I_APPLOGPARENT    =
       I_GRAPHICSPARENT  =
       I_NAME            =
       I_FCAT_COMPLETE   = SPACE
    EXCEPTIONS
       ERROR_CNTL_CREATE = 1
       ERROR_CNTL_INIT   = 2
       ERROR_CNTL_LINK   = 3
       ERROR_DP_CREATE   = 4
       others            = 5
      IF SY-SUBRC <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
               WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.
    ENDMODULE.                 " CREATE_ALV  OUTPUT
    *&      Module  DISPLAY_ALV  OUTPUT
          text
    MODULE DISPLAY_ALV OUTPUT.
      PERFORM PREPARE_FIELD_CATALOG.
      CALL METHOD G_ALV->SET_TABLE_FOR_FIRST_DISPLAY
        EXPORTING
       I_BUFFER_ACTIVE               =
       I_BYPASSING_BUFFER            =
       I_CONSISTENCY_CHECK           =
       I_STRUCTURE_NAME              = 'SFLIGHT'
       IS_VARIANT                    =
          I_SAVE                        = 'X'
       I_DEFAULT                     = 'X'
       IS_LAYOUT                     =
       IS_PRINT                      =
       IT_SPECIAL_GROUPS             =
       IT_TOOLBAR_EXCLUDING          = T_TOOLBAR[]
       IT_HYPERLINK                  =
       IT_ALV_GRAPHICS               =
       IT_EXCEPT_QINFO               =
       IR_SALV_ADAPTER               =
          CHANGING
            IT_OUTTAB                     = I_ZAMIT[]
            IT_FIELDCATALOG               = T_FCAT
       IT_SORT                       =
       IT_FILTER                     =
    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.
    ENDMODULE.                 " DISPLAY_ALV  OUTPUT
    *&      Form  PREPARE_FIELD_CATALOG
          text
    -->  p1        text
    <--  p2        text
    FORM PREPARE_FIELD_CATALOG .
      REFRESH T_FCAT.
      CLEAR WA_FCAT.
    <b>  WA_FCAT-COL_POS = 1.
      WA_FCAT-COLTEXT = 'SHIPMENT NO.'.
      WA_FCAT-FIELDNAME = 'ZSHIP_NO'.
      WA_FCAT-REF_TABLE = 'I_ZAMIT'.
      WA_FCAT-edit       = 'X'.</b>
      APPEND WA_FCAT TO T_FCAT.
      CLEAR WA_FCAT.
      WA_FCAT-COL_POS = 2.
      WA_FCAT-COLTEXT = 'DOC TYPE'.
      WA_FCAT-FIELDNAME = 'ZDOC_TYP'.
      WA_FCAT-REF_TABLE = 'I_ZAMIT'.
    WA_FCAT-KEY       = 'X'.
      APPEND WA_FCAT TO T_FCAT.
      CLEAR WA_FCAT.
      WA_FCAT-COL_POS = 3.
      WA_FCAT-COLTEXT = 'NAME_CR'.
      WA_FCAT-FIELDNAME = 'ZNAME_CR'.
      WA_FCAT-REF_TABLE = 'I_ZAMIT'.
    WA_FCAT-KEY       = 'X'.
      APPEND WA_FCAT TO T_FCAT.
      CLEAR WA_FCAT.
      WA_FCAT-COL_POS = 4.
      WA_FCAT-COLTEXT = 'SHIP_TYP'.
      WA_FCAT-FIELDNAME = 'ZSHIP_TYP'.
      WA_FCAT-REF_TABLE = 'I_ZAMIT'.
    WA_FCAT-KEY       = 'X'.
      APPEND WA_FCAT TO T_FCAT.
      CLEAR WA_FCAT.
      WA_FCAT-COL_POS = 5.
      WA_FCAT-COLTEXT = 'LEG_IND'.
      WA_FCAT-FIELDNAME = 'ZLEG_IND'.
      WA_FCAT-REF_TABLE = 'I_ZAMIT'.
    WA_FCAT-KEY       = 'X'.
      APPEND WA_FCAT TO T_FCAT.
      CLEAR WA_FCAT.
    ENDFORM.                    " PREPARE_FIELD_CATALOG
    *&      Module  LEAVE  INPUT
          text
    MODULE LEAVE INPUT.
      LEAVE PROGRAM.
    ENDMODULE.                 " LEAVE  INPUT
    *&      Module  USER_COMMAND_9000  INPUT
          text
    MODULE USER_COMMAND_9000 INPUT.
      IF G_OK_CODE = 'CHANGE'.
        DATA: VALUE TYPE C,
              COL TYPE I ,
              ROW TYPE LVC_S_ROW,
              COLNO TYPE LVC_S_COL,
              ROWNO TYPE LVC_S_ROID.
        CALL METHOD G_ALV->GET_CURRENT_CELL
         IMPORTING
              E_ROW = I_INDEX
         CALL METHOD G_ALV->GET_CURRENT_CELL
           IMPORTING
             E_ROW     =
                  E_VALUE   = VALUE
                  E_COL     = COL
                  ES_ROW_ID = ROW
                  ES_COL_ID = COLNO
                  ES_ROW_NO = ROWNO.
        READ TABLE I_ZAMIT  INDEX I_INDEX.
        CALL SCREEN 9001 STARTING AT 10 10 .
      ENDIF.
    ENDMODULE.                 " USER_COMMAND_9000  INPUT
    *&      Module  STATUS_9001  OUTPUT
          text
    MODULE STATUS_9001 OUTPUT.
      SET PF-STATUS 'PF9002'.
    SET TITLEBAR 'xxx'.
    ENDMODULE.                 " STATUS_9001  OUTPUT
    *&      Module  USER_COMMAND_9001  INPUT
          text
    MODULE USER_COMMAND_9001 INPUT.
      IF G_OK_CODE1 = 'SAVE'.
        MODIFY ZAMIT_SHIP_TAB FROM I_ZAMIT.
        SELECT * FROM ZAMIT_SHIP_TAB INTO TABLE I_ZAMIT.
        CALL METHOD G_ALV->REFRESH_TABLE_DISPLAY.
        CALL SCREEN 9000.
      ENDIF.
    ENDMODULE.                 " USER_COMMAND_9001  INPUT

  • How to make an checkbox editable and uneditable within a single alv output.

    Hi,
    How to make an checkbox editable and uneditable within a single alv output depending on condition.
    I have used Reuse_alv_grid_display.
    In my output every checkbox is editable. i have used edit = 'X'.
    I want editable checkbox for correct value and uneditable checkbox for incorrect value in a single alv

    >
    Mukilansap wrote:
    > I want editable checkbox for correct value and uneditable checkbox for incorrect value in a single alv
    Use alv styles to achieve this, set the style for each record before displaying the ALV. Structure LVC_S_STYL.
    Take a look at the example BCALV_EDIT_02, it is OOPS based, but check how the style table is filled.
    regards,
    Advait

  • 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

  • Function Module to edit the ALV Output

    Hi,
      I have an ALV report output.I need the edit values based on some conditions in the ALV output and 
      save the changes. Is there any function module to edit the output and proceed further.
      Thanks in advance.
    Regards,
    Navas

    First create the field catalog of the field that you want to edit in this way
    WA_fieldcat-fieldname  = 'MENGE'.
      WA_fieldcat-qfieldname = 'MEINS'.
      WA_fieldcat-seltext_m  = 'PO Quan.'
      WA_fieldcat-edit = 'X' .
    Secondly you keep a custom button like 'SAVE' in the toolbar and  also try to keep a checkbox in your ALV.
    for checkbox you have to keep a following code snippet in your finallly displayed interanal table:
    chk(1)    TYPE c, and in the fieldcatalog you have to write following piece of code
      WA_fieldcat-fieldname = 'CHK'.
      WA_fieldcat-seltext_m = 'CheckBox'.
      WA_fieldcat-checkbox = 'X'.
      WA_fieldcat-edit = 'X' .
      WA_fieldcat-input = 'X'.
      WA_fieldcat-tabname = 'IT_FINAL'.
      WA_fieldcat-col_pos = 1.
    then you have to set the parameter i_callback_user_command           = 'USER_COMMAND'
    of FM REUSE_ALV_GRID_DISPLAY.
    Then write a subroutine like the following one to handle the SAVE operation
    FORM user_command USING I_r_ucomm LIKE sy-ucomm
                      rs_selfield TYPE slis_selfield.
    DATA:l_cntr TYPE i.
    CASE I_r_ucomm.
    WHEN '&ZXZ'.
          CLEAR l_cntr.
          CLEAR WA_final.
          LOOP AT IT_final INTO WA_final.
            IF WA_final-chk = 'X'.
              l_cntr = l_cntr + 1.
            ENDIF.
          ENDLOOP.
          IF l_cntr GT 1.
            MESSAGE i011.
          ELSEIF l_cntr = 1.
               READ TABLE IT_final INTO WA_final WITH KEY chk = 'X'.
               MODIFY IT_final FROM WA_final TRANSPORTING menge
              WHERE chk = 'X'.
              CLEAR WA_final.
              PERFORM disp_alv. <<<This is to display the refreshed alv after saving your data
         endif.
    ENDCASE.
    ENDFORM.

  • How to make all the rows editable in webdynpro alv output

    Hi,
    How to make all the rows editable in webdynpro alv output.
    Thanks
    Rakshar

    Hi Rakshar,
    Check this wiki:
    http://wiki.sdn.sap.com/wiki/display/WDABAP/HowtoeditconditionallyrowofaALVtableinWebDynprofor+ABAP
    Regards

  • Editable Checkbox and select the checked line in ALV output

    HI,
    I am looking for an ALV output using LIST_DISPLAY with an editable check box in each item in the output.It should be editable and also the line which is checked should be selected for further action.
    Can you please help...
    Thanks in Advance
    Regards,
    Gangolu

    Hi
    1) Declare your intertable with a field named <CHECK>.
    For example:
    data: begin of i_sales occurs 0,
                 matnr like vbap-matnr,
                 erdat like vbak-erdat,
                 check type c, "checkbox
    end of i_sales.
    2) In your field catalog, put the first column as check box like below:
    v_fieldcat-col_pos = 1.
    v_fieldcat-fieldname = 'CHECK'.
    v_fieldcat-seltext_m = 'check'.
    v_fieldcat-checkbox = 'X'.
    v_fieldcat-input = 'X'.
    v_fieldcat-edit = 'X'.
    append v_fieldcat to gt_fieldcat.
    3) Call function 'REUSE_ALV_GRID_DISPLAY'
        FUNCTION 'REUSE_ALV_GRID_DISPLAY'
            EXPORTING
                I_CALLBACK_PROGRAM = sy-repid
                I_CALLBACK_PF_STATUS_SET = 'GUI_SET'
               I_CALLBACK_USER_COMMAND = 'USER_COMMAND'
    4) You must have a form called <USER_COMMAND> if you want to select that line and perform some action on it
    Example:
    FORM USER_COMMAND USING R_UCOMM LIKE SY-UCOMM R_SELFIELD TYPE SLIS_SELFIELD.
    Case R_UCOMM.
    endcase
    Regards
    Dean Q.

  • Validation of data in editable ALV report output for particular field

    Hi Experts,
    I have one input enabled field in ALV output. How to validate the data once user enters  in that field and press enter? Is it possible to capture the value, hit the enter after user enters the data?
    Thanks,
    Surya Prakash

    Halo Prakash,
    1 First you should registeer the ENTER Event.
    call method g_grid->register_edit_event
                   exporting
                      i_event_id = cl_gui_alv_grid=>mc_evt_enter.
    2 Declare event handler method for Event data_changed of cl_gui_alv_grid.
    handle_data_changed
             for event data_changed of cl_gui_alv_grid
                 importing er_data_changed.
    3 Inside the Event handler method , you get the event parameter er_data_changed type ref to CL_ALV_CHANGED_DATA_PROTOCOL.
    loop at er_data_changed->mt_good_cells into ls_good.
          case ls_good-fieldname.
            when 'FIELD1'.
              call method check_FIELD1.
            when 'FIELD2 '.
              call method check_FIELD2
          endcase.
        endloop.
    4 Inside the Method check_FIELD1 and check_FIELD2 you can do the validation check .
    call method er_data_changed->get_cell_value( Passing the row no and field name).
    if the check  fails you can use add_protocol_entry to write the error.
    5 Finally call
    er_data_changed->display_protocol.
    Regards
    Arshad

  • Update the Billing orders after display/ modifiy in the Editable ALV

    Hi Experts,
    I have created one Editable ALV to display theBilling order with BP details,
    Once user get the ALV output he can modify the content and same will be updated once he hits UPDATE button.
    my requirement is after user hits the UPDATE button a background should be created and update of BO should happen also user user should able to see the status by checking the SPOOL.
    currently i am using the FM crm_order_maintain to update, kindly guide me how to process this step in background for all the entries which are selected in ALV by user.
    i think i can use SUBMIT with JOB_OPEN and JOB_CLOSE, but i need some same code & guidance.
    Thanks in Advance.
    Regards,
    Pradeep

    problem solved

  • Newly added field not getting displayed in ALV output

    Hi All,
       I'm adding one more field/column to be displayed in an old existing program that uses REUSE_ALV_FIELDCATALOG_MERGE to generate the ALV fieldcat.
    DATA: BEGIN OF it_salary OCCURS 0,
            pernr LIKE pa0000-pernr,
            ename LIKE pa0001-ename,
            rtext like lv_rtext, -
    added field
            waers LIKE pa0008-waers
      CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
        EXPORTING
          i_program_name         = driver
          i_internal_tabname     = 'IT_SALARY'
          i_client_never_display = 'X'
          i_inclname             = driver
        CHANGING
          ct_fieldcat            = lv_fieldcat[]
        EXCEPTIONS
          inconsistent_interface = 1
          program_error          = 2
          OTHERS                 = 3.
      CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
        EXPORTING
          i_callback_program      = driver
          it_fieldcat             = lv_fieldcat[]
          i_default               = 'X'
          i_save                  = 'A'
          is_variant              = lv_tmplt
          is_layout               = lv_ls_layout
         i_callback_user_command = 'USER_COMMAND'
        TABLES
          t_outtab                = it_salary
        EXCEPTIONS
          program_error           = 1
          OTHERS                  = 2.
    The newly added field is not getting populated in the lv_fieldcat table. Tried running programs BALVBUFDEL,
    BCALV_BUFFER_DEL_SHARED then logging off and logging in but of no help.
    Please provide suggestion for this issue.
    Regards,
    Sridevi S

    Hi,
    Fieldcat is buffered - so use
    I_BYPASSING_BUFFER = 'X'
    Since a while CL_GUI_ALV_GRID is available which does NOT need any fieldcat (is determined internally using RTTI). It is worth playing around whith this class if you have some time. This class is recommended for ALV Output by SAP (but no edit is possible - was never supported officially).
    A simple use would be:
    data: gt_output type standard table of (adjust!).
    *simple ALV output
    data go_alv type ref to cl_salv_table.
    data go_functions type ref to cl_salv_functions_list.
    data go_columns type ref to cl_salv_columns_table.
    data go_column type ref to cl_salv_column_table.
    *Exceprion handlig
    data: go_exception  type ref to cx_root,
          gv_errortext   type string.
    ** fill table gt_output ...
    ** ALV output
    if not gt_output is initial.
        try.
            call method cl_salv_table=>factory
              importing
                r_salv_table = go_alv
              changing
                t_table      = gt_output.
          catch cx_salv_msg into go_exception.
            gv_errortext = go_exception->get_text( ).
            message gv_errortext type 'A'.
        endtry.
    * enable all standard ALV functions
        go_functions =  go_alv->get_functions( ).
        go_functions->set_all( ).
    * hide MANDT
        go_columns = go_alv->get_columns( ).
        go_column ?=  go_columns->get_column( columnname = 'MANDT' ).
        go_column->set_technical( ).
        go_alv->display( ).
    Kind regards,
    Holger

  • Negative sign for DMBTR field in ALV output

    Hi Experts,
    Before posting I have searched for more than 3 hours in the forums to get a solution for this.
    I did not get any solution so I am posting this problem which I need to resolve.
    I have to display the DMBTR field in ALV output for which a grand total will have to be displayed.
    Here for all the values in DMBTR which are negative are getting displayed as '-        6673.56','-       289956.23' as I am using the edit mask 'V_____________.__'.
    I have to get the value shown as '-6673.56', '-289956.23'.
    I tried to use convert this DMBTR to String and have successfully displayed the negative sign correctly in front of the value but I am not getting the totals which I need to have
    PLease check and suggest for a solution.
    Regards
    Kishore

    Hi,
      If this is the case, then you can use character field to display the sign on the left. Sum up the total and use the event end of list to display the same. Remember to set the TECH and NO_OUT in the field catalog.
    Hope this helps.
    Regards,
    Siva

Maybe you are looking for