Alv grid: editable individaul fields or editable rows

Hi All,
i want to have the individual fields in an ALV or a complete row editable...
Currently i am using the REUSE_ALV_GRID_DISPLAY where in the fieldcatalog if i use the edit=X then the whole column is editable...
But instead i want the particular field or the entire row to be editable...
Also let me know if it is possible using the SALV classes(Alv using classes? if so provide the releavant class and method)
Can anyone provide the solution regarding this...
Thanks
Shiva

Hi,
The fields you want editable just set the fieldcatlog parameter edit = 'X' for that field.
This will make that field only editable .
Below is the sample code where only specific fields are editable .
This code will also help you in many aspects.
REPORT  ZMSTR0022.
CONSTANTS: C_FORM_NAME TYPE TDSFNAME VALUE 'ZMST_PER_APPL'.
TABLES :ZMST_PERMIT.
TYPE-POOLS: SLIS.
TYPE-POOLS :VRM.                           "Value Request Manager
TYPES:BEGIN OF STRU_ZMST_PERMIT,
     CHECKBOX(1) TYPE C,                    " Checkbox
     ZPIDNUM TYPE ZMST_PERMIT-ZPIDNUM,   " Permit ID No.
     ZARBDSC TYPE ZMST_PERMIT-ZARBDSC,   " Arabic description
     ZENGDSC TYPE ZMST_PERMIT-ZENGDSC,   " English description
     ZENQUAN TYPE ZMST_PERMIT-ZENQUAN,   " Qty in English
     ZARQUAN TYPE ZMST_PERMIT-ZARQUAN,   " Qty in Arabic
     ZENUOM  TYPE ZMST_PERMIT-ZENUOM,    " UoM
     ZTARIFF TYPE  ZMST_PERMIT-ZTARIFF,  " Tariff No
     ZARRPRT TYPE ZMST_PERMIT-ZARRPRT,   " Port code
     ZPRT_NAME(60) TYPE C,               " Port name in Arabic
     ZPERNUM TYPE ZMST_PERMIT-ZPERNUM,   " Reference No
     ZEFFDT  TYPE ZMST_PERMIT-ZEFFDT,    " Valid from
     ZEXPDT  TYPE ZMST_PERMIT-ZEXPDT,    " Valid to
     ZARB_DT(15) TYPE C,                 " Arabic Date of letter
     ZNAME_AUTH(50) TYPE C,              " Name of Authority
     ZPERM_MIN(50) TYPE C,               " Permit Ministry
     END OF STRU_ZMST_PERMIT.
TYPES:BEGIN OF STRU_PERMIT,
      ZPIDNUM TYPE ZMST_PERMIT-ZPIDNUM,  " Permit ID No.
      ZENGDSC TYPE ZMST_PERMIT-ZENGDSC,  " English description
      ZARBDSC TYPE ZMST_PERMIT-ZARBDSC,  " Arabic description
      ZTARIFF TYPE  ZMST_PERMIT-ZTARIFF, " Tariff No
      ZPERNUM TYPE ZMST_PERMIT-ZPERNUM,  " Reference No
      ZARRPRT TYPE ZMST_PERMIT-ZARRPRT,  " Port code
      ZEFFDT  TYPE ZMST_PERMIT-ZEFFDT,   " Valid from
      ZEXPDT  TYPE ZMST_PERMIT-ZEXPDT,   " Valid to
      END OF STRU_PERMIT.
TYPES: BEGIN OF STRU_FORM_PERMIT,
       ZARBDSC TYPE ZMST_PERMIT-ZARBDSC,   " Arabic description
       ZENGDSC TYPE ZMST_PERMIT-ZENGDSC,   " English description
       ZENQUAN TYPE ZMST_PERMIT-ZENQUAN,   " Qty in English
       ZARQUAN TYPE ZMST_PERMIT-ZARQUAN,   " Qty in Arabic
       ZENUOM  TYPE ZMST_PERMIT-ZENUOM,    " UoM
       ZTARIFF TYPE  ZMST_PERMIT-ZTARIFF,  " Tariff No
       ZPRT_NAME(60) TYPE C,               " Port name in Arabic
       END OF STRU_FORM_PERMIT.
DATA: IT_PERMIT TYPE TABLE OF STRU_PERMIT.
DATA: IT_ZMST_PERMIT TYPE TABLE OF STRU_ZMST_PERMIT,
      WA_ZMST_PERMIT LIKE LINE OF IT_ZMST_PERMIT,
      IT_FORM_PERMIT TYPE TABLE OF STRU_FORM_PERMIT,
      WA_FORM_PERMIT LIKE LINE OF IT_FORM_PERMIT.
DATA: WA_LAYOUT   TYPE SLIS_LAYOUT_ALV,
      WA_FIELDCAT TYPE SLIS_FIELDCAT_ALV,
      IT_FIELDCAT TYPE TABLE OF SLIS_FIELDCAT_ALV.
DATA: W_FORM TYPE RS38L_FNAM.
DATA: W_NAME_AUTH(50),
      W_ZARBDT(15),
      W_ZENGDT(10),
     W_ZPRT_NAME(70).
DATA: W_PARAM TYPE SSFCTRLOP.
DATA:W_NAME1 TYPE DFIES-FIELDNAME,
      W_NAME2 TYPE HELP_INFO-DYNPROFLD .
SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-023.
SELECT-OPTIONS:S_PIDNUM FOR ZMST_PERMIT-ZPIDNUM ,
               S_ENGDSC FOR ZMST_PERMIT-ZENGDSC NO INTERVALS LOWER CASE,
               S_ARBDSC FOR ZMST_PERMIT-ZARBDSC NO INTERVALS LOWER CASE,
               S_TARIFF FOR ZMST_PERMIT-ZTARIFF NO INTERVALS,
               S_PERNUM FOR ZMST_PERMIT-ZPERNUM NO INTERVALS,
               S_ARRPRT FOR ZMST_PERMIT-ZARRPRT NO INTERVALS MATCHCODE OBJECT ZMST_PORTS.
PARAMETER:P_PERTYP(2) TYPE C AS LISTBOX VISIBLE LENGTH 20.
SELECTION-SCREEN END OF BLOCK B1.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR S_PIDNUM-LOW.
  W_NAME2 = 'S_PIDNUM-LOW'.
  W_NAME1 = 'ZPIDNUM'.
  PERFORM F4_HELP USING W_NAME1 W_NAME2 .         "calling subroutine to provide desired F4 help
AT SELECTION-SCREEN ON VALUE-REQUEST FOR S_PIDNUM-HIGH.
  W_NAME2 = 'S_PIDNUM-HIGH'.
  W_NAME1 = 'ZPIDNUM'.
  PERFORM F4_HELP USING W_NAME1 W_NAME2 .         "calling subroutine to provide desired F4 help
AT SELECTION-SCREEN ON VALUE-REQUEST FOR S_ENGDSC-LOW.
  W_NAME2 = 'S_ENGDSC'.
  W_NAME1 = 'ZENGDSC'.
  PERFORM F4_HELP USING W_NAME1 W_NAME2 .         "calling subroutine to provide desired F4 help
AT SELECTION-SCREEN ON VALUE-REQUEST FOR S_ARBDSC-LOW.
  W_NAME2 = 'S_ARBDSC'.
  W_NAME1 = 'ZARBDSC'.
  PERFORM F4_HELP USING W_NAME1 W_NAME2 .         "calling subroutine to provide desired F4 help
AT SELECTION-SCREEN ON VALUE-REQUEST FOR S_TARIFF-LOW.
  W_NAME2 = 'S_TARIFF'.
  W_NAME1 = 'ZTARIFF'.
  PERFORM F4_HELP USING W_NAME1 W_NAME2 .         "calling subroutine to provide desired F4 help
AT SELECTION-SCREEN ON VALUE-REQUEST FOR S_PERNUM-LOW.
  W_NAME2 = 'S_PERNUM'.
  W_NAME1 = 'ZPERNUM'.
  PERFORM F4_HELP USING W_NAME1 W_NAME2 .         "calling subroutine to provide desired F4 help
AT SELECTION-SCREEN.
  IF SY-UCOMM = 'ONLI'.
    PERFORM CHECK_INPUT.                            "calling subroutine to check inputs on selection screen
  ENDIF.
INITIALIZATION.
  PERFORM VAL_PERTYP.
START-OF-SELECTION.
  PERFORM FILL_FIELDCAT.                          "calling subroutine for filling fieldcatalog
If Permit ministry is blank then fetch data from ZMST_PERMIT otherwise from ZMST_PERMITHI--
  IF P_PERTYP IS INITIAL.
    PERFORM FETCH_PERMIT.                         "calling subroutine to fetch data from ZMST_PERMIT
  ELSE.
    PERFORM FETCH_PERMITHI.                       "calling subroutine to fetch data from ZMST_PERMITHI
  ENDIF.
END-OF-SELECTION.
*&      Form  fill_fieldcat
      text
-->  p1        text
<--  p2        text
FORM FILL_FIELDCAT .
-passing the parameters of layout--
  WA_LAYOUT-ZEBRA = 'X'.
  WA_LAYOUT-COLWIDTH_OPTIMIZE = 'X'.
  WA_LAYOUT-BOX_FIELDNAME = 'CHECKBOX'.
  WA_LAYOUT-BOX_TABNAME = 'IT_ZMST_PERMIT'.
-Passing the parameters of fieldcatalog--
  WA_FIELDCAT-FIELDNAME = 'ZPIDNUM'.
  WA_FIELDCAT-TABNAME = 'IT_ZMST_PERMIT'.
  WA_FIELDCAT-SELTEXT_M = TEXT-001.
  APPEND WA_FIELDCAT TO IT_FIELDCAT.
  CLEAR WA_FIELDCAT.
  WA_FIELDCAT-FIELDNAME = 'ZARBDSC'.
  WA_FIELDCAT-TABNAME = 'IT_ZMST_PERMIT'.
  WA_FIELDCAT-SELTEXT_M = TEXT-002.
  WA_FIELDCAT-EDIT = 'X'.
  WA_FIELDCAT-LOWERCASE = 'X'.
  WA_FIELDCAT-OUTPUTLEN = 120.
  APPEND WA_FIELDCAT TO IT_FIELDCAT.
  CLEAR WA_FIELDCAT.
  WA_FIELDCAT-FIELDNAME = 'ZENGDSC'.
  WA_FIELDCAT-TABNAME = 'IT_ZMST_PERMIT'.
  WA_FIELDCAT-SELTEXT_M = TEXT-003.
  WA_FIELDCAT-EDIT = 'X'.
  WA_FIELDCAT-LOWERCASE = 'X'.
  WA_FIELDCAT-OUTPUTLEN = 120.
  APPEND WA_FIELDCAT TO IT_FIELDCAT.
  CLEAR WA_FIELDCAT.
  WA_FIELDCAT-FIELDNAME = 'ZENQUAN'.
  WA_FIELDCAT-TABNAME = 'IT_ZMST_PERMIT'.
  WA_FIELDCAT-SELTEXT_M = TEXT-004.
  WA_FIELDCAT-EDIT = 'X'.
  WA_FIELDCAT-LOWERCASE = 'X'.
  APPEND WA_FIELDCAT TO IT_FIELDCAT.
  CLEAR WA_FIELDCAT.
  WA_FIELDCAT-FIELDNAME = 'ZARQUAN'.
  WA_FIELDCAT-TABNAME = 'IT_ZMST_PERMIT'.
  WA_FIELDCAT-SELTEXT_M = TEXT-005.
  WA_FIELDCAT-EDIT = 'X'.
  WA_FIELDCAT-LOWERCASE = 'X'.
  APPEND WA_FIELDCAT TO IT_FIELDCAT.
  CLEAR WA_FIELDCAT.
  WA_FIELDCAT-FIELDNAME = 'ZENUOM'.
  WA_FIELDCAT-TABNAME = 'IT_ZMST_PERMIT'.
  WA_FIELDCAT-SELTEXT_M = TEXT-006.
  WA_FIELDCAT-EDIT = 'X'.
  WA_FIELDCAT-LOWERCASE = 'X'.
  APPEND WA_FIELDCAT TO IT_FIELDCAT.
  CLEAR WA_FIELDCAT.
  WA_FIELDCAT-FIELDNAME = 'ZTARIFF'.
  WA_FIELDCAT-TABNAME = 'IT_ZMST_PERMIT'.
  WA_FIELDCAT-SELTEXT_M = TEXT-007.
  WA_FIELDCAT-EDIT = 'X'.
  WA_FIELDCAT-OUTPUTLEN = 15.
  WA_FIELDCAT-LOWERCASE = 'X'.
  APPEND WA_FIELDCAT TO IT_FIELDCAT.
  CLEAR WA_FIELDCAT.
  WA_FIELDCAT-FIELDNAME = 'ZARB_DT'.
  WA_FIELDCAT-TABNAME = 'IT_ZMST_PERMIT'.
  WA_FIELDCAT-SELTEXT_L = TEXT-013.
  WA_FIELDCAT-EDIT = 'X'.
  WA_FIELDCAT-LOWERCASE = 'X'.
  APPEND WA_FIELDCAT TO IT_FIELDCAT.
  CLEAR WA_FIELDCAT.
  WA_FIELDCAT-FIELDNAME = 'ZNAME_AUTH'.
  WA_FIELDCAT-TABNAME = 'IT_ZMST_PERMIT'.
  WA_FIELDCAT-SELTEXT_M = TEXT-014.
  WA_FIELDCAT-EDIT = 'X'.
  WA_FIELDCAT-OUTPUTLEN = 50.
  WA_FIELDCAT-LOWERCASE = 'X'.
  APPEND WA_FIELDCAT TO IT_FIELDCAT.
  CLEAR WA_FIELDCAT.
  WA_FIELDCAT-FIELDNAME = 'ZPRT_NAME'.
  WA_FIELDCAT-TABNAME = 'IT_ZMST_PERMIT'.
  WA_FIELDCAT-SELTEXT_M = TEXT-009.
  WA_FIELDCAT-EDIT = 'X'.
  WA_FIELDCAT-OUTPUTLEN = 60.
  WA_FIELDCAT-LOWERCASE = 'X'.
  APPEND WA_FIELDCAT TO IT_FIELDCAT.
  CLEAR WA_FIELDCAT.
  WA_FIELDCAT-FIELDNAME = 'ZARRPRT'.
  WA_FIELDCAT-TABNAME = 'IT_ZMST_PERMIT'.
  WA_FIELDCAT-SELTEXT_M = TEXT-008.
  APPEND WA_FIELDCAT TO IT_FIELDCAT.
  CLEAR WA_FIELDCAT.
  WA_FIELDCAT-FIELDNAME = 'ZPERNUM'.
  WA_FIELDCAT-TABNAME = 'IT_ZMST_PERMIT'.
  WA_FIELDCAT-SELTEXT_M = TEXT-010.
  APPEND WA_FIELDCAT TO IT_FIELDCAT.
  CLEAR WA_FIELDCAT.
  WA_FIELDCAT-FIELDNAME = 'ZEFFDT'.
  WA_FIELDCAT-TABNAME = 'IT_ZMST_PERMIT'.
  WA_FIELDCAT-SELTEXT_M = TEXT-011.
  APPEND WA_FIELDCAT TO IT_FIELDCAT.
  CLEAR WA_FIELDCAT.
  WA_FIELDCAT-FIELDNAME = 'ZEXPDT'.
  WA_FIELDCAT-TABNAME = 'IT_ZMST_PERMIT'.
  WA_FIELDCAT-SELTEXT_M = TEXT-012.
  APPEND WA_FIELDCAT TO IT_FIELDCAT.
  CLEAR WA_FIELDCAT.
  WA_FIELDCAT-FIELDNAME = 'ZPERM_MIN'.
  WA_FIELDCAT-TABNAME = 'IT_ZMST_PERMIT'.
  WA_FIELDCAT-SELTEXT_M = TEXT-019.
  WA_FIELDCAT-OUTPUTLEN = 50.
  WA_FIELDCAT-LOWERCASE = 'X'.
  APPEND WA_FIELDCAT TO IT_FIELDCAT.
  CLEAR WA_FIELDCAT.
ENDFORM.                    " fill_fieldcat
*&      Form  alv_disp
      text
-->  p1        text
<--  p2        text
FORM ALV_DISP .
  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    EXPORTING
      I_CALLBACK_PROGRAM       = 'ZMSTR0022'
      I_CALLBACK_PF_STATUS_SET = 'PF_STATUS'
      I_CALLBACK_USER_COMMAND  = 'USER_COMMAND'
      I_GRID_TITLE             = TEXT-015
      IS_LAYOUT                = WA_LAYOUT
      IT_FIELDCAT              = IT_FIELDCAT
      I_SAVE                   = 'A'
    TABLES
      T_OUTTAB                 = IT_ZMST_PERMIT
    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.                    " alv_disp
*&      Form  PF_STATUS
      text
  This subroutine sets the GUI status
FORM PF_STATUS USING RT_EXTAB TYPE SLIS_T_EXTAB.
  SET PF-STATUS 'ZSTANDARD_FULLSCREEN'.
ENDFORM.                    "PF_STATUS
*&      Form  USER_COMMAND
FORM USER_COMMAND USING R_UCOMM TYPE SY-UCOMM  RS_SELFIELD TYPE SLIS_SELFIELD.
*For Printing Smartform
  IF R_UCOMM = 'PRT'.
    CLEAR WA_FORM_PERMIT.
    REFRESH IT_FORM_PERMIT.
    LOOP AT IT_ZMST_PERMIT INTO WA_ZMST_PERMIT WHERE CHECKBOX = 'X'.
      MOVE-CORRESPONDING WA_ZMST_PERMIT TO WA_FORM_PERMIT.
      APPEND WA_FORM_PERMIT TO IT_FORM_PERMIT .
*Check for First occurence of Name of authority
      IF WA_ZMST_PERMIT-ZNAME_AUTH NE SPACE.
        IF W_NAME_AUTH = ' '.
          W_NAME_AUTH = WA_ZMST_PERMIT-ZNAME_AUTH.
        ENDIF.
      ENDIF.
*Check for First occurence of Arabic date
      IF WA_ZMST_PERMIT-ZARB_DT NE SPACE.
        IF W_ZARBDT = ' '.
          W_ZARBDT = WA_ZMST_PERMIT-ZARB_DT.
        ENDIF.
      ENDIF.
      IF WA_ZMST_PERMIT-ZPRT_NAME NE SPACE.
        IF W_ZPRT_NAME = ' '.
          MOVE WA_ZMST_PERMIT-ZPRT_NAME TO W_ZPRT_NAME.
          CONDENSE W_ZPRT_NAME.
        ENDIF.
      ENDIF.
      CLEAR : WA_FORM_PERMIT, WA_ZMST_PERMIT.
    ENDLOOP.
    CONCATENATE SY-DATUM0(4) '/' SY-DATUM4(2) '/' SY-DATUM+6(2) INTO W_ZENGDT.
*Printing    Subroutine
    IF NOT IT_FORM_PERMIT[] IS INITIAL.
      PERFORM PRINT_FORM.
    ELSE.
      MESSAGE TEXT-018 TYPE 'I'.
    ENDIF.
  ENDIF.
ENDFORM.                    "user_command
*&      Form  F4_HELP
      text
-->  p1        text
<--  p2        text
FORM F4_HELP USING: W_VAR TYPE DFIES-FIELDNAME
                    W_VAR1 TYPE HELP_INFO-DYNPROFLD .
Fetching data from zmst_permit for F4 help on PERMIT ID No.--
  IF IT_PERMIT[] IS INITIAL.
    SELECT ZPIDNUM
           ZENGDSC
           ZARBDSC
           ZTARIFF
           ZPERNUM
           ZARRPRT
           ZEFFDT
           ZEXPDT
           FROM ZMST_PERMIT INTO CORRESPONDING FIELDS OF TABLE IT_PERMIT.
  ENDIF.
  CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
    EXPORTING
      RETFIELD        = W_NAME1 " 'ZPIDNUM'
      DYNPPROG        = 'ZMSTR0022'
      DYNPNR          = SY-DYNNR
      DYNPROFIELD     = W_NAME2 "'S_PIDNUM'
      VALUE_ORG       = 'S'
    TABLES
      VALUE_TAB       = IT_PERMIT
    EXCEPTIONS
      PARAMETER_ERROR = 1
      NO_VALUES_FOUND = 2
      OTHERS          = 3.
  IF SY-SUBRC <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  ENDIF.
ENDFORM.                                                    " F4_HELP
*&      Form  check_input
      text
-->  p1        text
<--  p2        text
FORM CHECK_INPUT .
  IF S_PIDNUM[] IS INITIAL AND
     S_ENGDSC[] IS INITIAL AND
     S_ARBDSC[] IS INITIAL AND
     S_TARIFF[] IS INITIAL AND
     S_PERNUM[] IS INITIAL AND
     S_ARRPRT[] IS INITIAL .
    MESSAGE TEXT-016 TYPE 'E'.
    LEAVE TO TRANSACTION 'ZMSTR022'.
  ENDIF.
ENDFORM.                    " check_input
*&      Form  print_form
      text
-->  p1        text
<--  p2        text
FORM PRINT_FORM .
  CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'
    EXPORTING
      FORMNAME           = C_FORM_NAME
    IMPORTING
      FM_NAME            = W_FORM
    EXCEPTIONS
      NO_FORM            = 1
      NO_FUNCTION_MODULE = 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.
  W_PARAM-LANGU ='AR'.
  CALL FUNCTION W_FORM
    EXPORTING
      CONTROL_PARAMETERS = W_PARAM
      W_NAME_AUTH        = W_NAME_AUTH
      W_ZARBDT           = W_ZARBDT
      W_ZENGDT           = W_ZENGDT
      W_ZPRT_NAME        = W_ZPRT_NAME
    TABLES
      IT_FORM_PERMIT     = IT_FORM_PERMIT
    EXCEPTIONS
      FORMATTING_ERROR   = 1
      INTERNAL_ERROR     = 2
      SEND_ERROR         = 3
      USER_CANCELED      = 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.
ENDFORM.                    " print_form
*&      Form  fetch_Permit
      text
-->  p1        text
<--  p2        text
FORM FETCH_PERMIT .
-Fetching data from zmst_permit based on the inputs on selection screen--
  SELECT
       ZPIDNUM
       ZARBDSC
       ZENGDSC
       ZENQUAN
       ZARQUAN
       ZENUOM
       ZTARIFF
       ZARRPRT
       ZPERNUM
       ZEFFDT
       ZEXPDT
       FROM ZMST_PERMIT INTO CORRESPONDING FIELDS OF TABLE IT_ZMST_PERMIT
       WHERE ZPIDNUM IN S_PIDNUM
       AND   ZENGDSC IN S_ENGDSC
       AND   ZARBDSC IN S_ARBDSC
       AND   ZTARIFF IN S_TARIFF
       AND   ZPERNUM IN S_PERNUM
       AND   ZARRPRT IN S_ARRPRT.
  IF SY-SUBRC <> 0.
    MESSAGE TEXT-017 TYPE 'I'.
    LEAVE TO TRANSACTION 'ZMSTR022'.
  ELSE.
    LOOP AT IT_ZMST_PERMIT INTO WA_ZMST_PERMIT.
      WA_ZMST_PERMIT-ZPERM_MIN = TEXT-020.
      MODIFY IT_ZMST_PERMIT INDEX SY-TABIX FROM WA_ZMST_PERMIT TRANSPORTING ZPERM_MIN .
    ENDLOOP.
    PERFORM ALV_DISP.        " calling subroutine for ALV display
  ENDIF.
ENDFORM.                    " fetch_Permit
*&      Form  fetch_permithi
      text
-->  p1        text
<--  p2        text
FORM FETCH_PERMITHI .
-Fetching data from zmst_permit based on the inputs on selection screen--
  SELECT
       ZPIDNUM
       ZARBDSC
       ZENGDSC
       ZENQUAN
       ZARQUAN
       ZENUOM
       ZTARIFF
       ZARRPRT
       ZPERNUM
       ZEFFDT
       ZEXPDT
       FROM ZMST_PERMITHI INTO CORRESPONDING FIELDS OF TABLE IT_ZMST_PERMIT
       WHERE ZPIDNUM IN S_PIDNUM
       AND   ZENGDSC IN S_ENGDSC
       AND   ZARBDSC IN S_ARBDSC
       AND   ZTARIFF IN S_TARIFF
       AND   ZPERNUM IN S_PERNUM
       AND   ZARRPRT IN S_ARRPRT
       AND  ZPERTYP  = P_PERTYP.
  IF SY-SUBRC <> 0.
    MESSAGE TEXT-017 TYPE 'I'.
    LEAVE TO TRANSACTION 'ZMSTR022'.
  ELSE.
    LOOP AT IT_ZMST_PERMIT INTO WA_ZMST_PERMIT.
      CASE P_PERTYP.
        WHEN 'I'.
          WA_ZMST_PERMIT-ZPERM_MIN = TEXT-021.
          MODIFY IT_ZMST_PERMIT INDEX SY-TABIX FROM WA_ZMST_PERMIT TRANSPORTING ZPERM_MIN .
        WHEN 'H'.
          WA_ZMST_PERMIT-ZPERM_MIN = TEXT-022.
          MODIFY IT_ZMST_PERMIT INDEX SY-TABIX FROM WA_ZMST_PERMIT TRANSPORTING ZPERM_MIN .
      ENDCASE.
    ENDLOOP.
    PERFORM ALV_DISP.        " calling subroutine for ALV display
  ENDIF.
ENDFORM.                    " fetch_permithi
*&      Form  val_PERTYP
      text
-->  p1        text
<--  p2        text
FORM VAL_PERTYP .
  DATA: W_NAME TYPE VRM_ID,
        IT_LIST TYPE VRM_VALUES,
        WA_VALUE LIKE LINE OF IT_LIST.
  WA_VALUE-KEY = ' '.
  WA_VALUE-TEXT = TEXT-020.
  APPEND WA_VALUE TO IT_LIST.
  CLEAR WA_VALUE.
  WA_VALUE-KEY = 'I'.
  WA_VALUE-TEXT = TEXT-021.
  APPEND WA_VALUE TO IT_LIST.
  CLEAR WA_VALUE.
  WA_VALUE-KEY = 'H'.
  WA_VALUE-TEXT = TEXT-022.
  APPEND WA_VALUE TO IT_LIST.
  CLEAR WA_VALUE.
  W_NAME = 'P_PERTYP'.
  P_PERTYP = ' '.
  CALL FUNCTION 'VRM_SET_VALUES'
    EXPORTING
      ID              = W_NAME
      VALUES          = IT_LIST
    EXCEPTIONS
      ID_ILLEGAL_NAME = 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.                    " val_PERTYP

Similar Messages

  • How to download alv grid output(with field catalog) into excel file format

    Hi all,
    How to download alv grid output(with field catalogs) into excel file format and same file has to download to application server.
    Please help.
    Regards,
    Satya.

    Hi,
    On list where alv is displayed, select export icon( green color -> ),select spread sheet.
    This will display records in Excel sheet.

  • ALV Grid OO : Set Field editable for  selected rows

    Hello ABAPers,
    I used object  cl_gui_alv_grid to created ALV grid and i succed to set an editable
    field for all rows. However my request is to set it for and only for selected rows
    I could get the row index but i didn't know how to use it
    Thanks in advance
    Amine

    Hi Amine,
    I think the standard SAP sample program might help you, BCALV_EDIT_02.
    I will tell the procedure to make the selected rows editable on ALV.
    1. Add a additional field of type LVC_T_STYL in the internal table that you are displaying in the ALV. LVC_T_STYL is a actually a table type.
    2. Place a button on the ALV toolbar for EDIT/DISPLAY.
    3. Once you press the EDIT button after selecting the rows, loop through the records which you have selected (you have already said that you have the index of selected records).
    4. The table type LVC_T_STYL has fields for FIELDNAME and STYLE.
       If you have 10 fields in the internal table, then all these ten fields name should be appended to the newly added field in the internal table (LVC_T_STYL) and their style should be populated with value cl_gui_alv_grid=>mc_style_enabled.
    Regards,
    Rahul MB

  • RE:ALV grid (oops concept)-to make selected row editable

    Hi,
    I have an object oriented alv which is having 5 rows of data.I have a pushbutton to make any row in editable mode.My requirement is i will select any row in oops alv grid and press
    the button to make the row editable.How can i do this in oops alv.
    thanks,
    Alex

    Hi,
    Use the Link [http://www.sapdev.co.uk/reporting/alv/alvgrid_editable.htm]
    Check demo pgm BCALV_EDIT_05.
    *& Report ZUS_SDN_ALVGRID_EDITABLE_8
    *& Description: editable ALV -> ENTER jumps to next row
    *& Dynpro flow logic: no screen elements, ok_code = GD_OKCODE
    PROCESS BEFORE OUTPUT.
    MODULE STATUS_0100.
    PROCESS AFTER INPUT.
    MODULE USER_COMMAND_0100.
    REPORT zus_sdn_alvgrid_editable_8.
    DATA:
    gd_repid TYPE syst-repid,
    gd_okcode TYPE ui_func,
    gt_fcat TYPE lvc_t_fcat,
    go_docking TYPE REF TO cl_gui_docking_container,
    go_grid TYPE REF TO cl_gui_alv_grid.
    DATA:
    gt_knb1 TYPE STANDARD TABLE OF knb1.
    CLASS lcl_eventhandler DEFINITION
    CLASS lcl_eventhandler DEFINITION.
    PUBLIC SECTION.
    CLASS-METHODS:
    handle_data_changed
    FOR EVENT data_changed OF cl_gui_alv_grid
    IMPORTING
    er_data_changed
    e_onf4
    e_onf4_before
    e_onf4_after
    e_ucomm
    sender.
    ENDCLASS. "lcl_eventhandler DEFINITION
    CLASS lcl_eventhandler IMPLEMENTATION
    CLASS lcl_eventhandler IMPLEMENTATION.
    METHOD handle_data_changed.
    define local data
    cl_gui_cfw=>set_new_ok_code( 'NEXT_ROW' ). " not possible on 4.6c
    CALL METHOD cl_gui_cfw=>set_new_ok_code
    EXPORTING
    new_code = 'NEXT_ROW'
    IMPORTING
    RC =
    " Triggers PAI of dynpro with ok_code = 'NEXT_ROW'
    ENDMETHOD. "handle_data_changed
    ENDCLASS. "lcl_eventhandler IMPLEMENTATION
    PARAMETERS:
    p_bukrs TYPE bukrs DEFAULT '2000' OBLIGATORY.
    START-OF-SELECTION.
    SELECT * FROM knb1 INTO TABLE gt_knb1
    WHERE bukrs = p_bukrs.
    Create docking container
    CREATE OBJECT go_docking
    EXPORTING
    parent = cl_gui_container=>screen0
    ratio = 90
    EXCEPTIONS
    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.
    Create ALV grid
    CREATE OBJECT go_grid
    EXPORTING
    i_parent = go_docking
    EXCEPTIONS
    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.
    " Triggers event DATA_CHANGED when ENTER is pushed
    CALL METHOD go_grid->register_edit_event
    EXPORTING
    i_event_id = cl_gui_alv_grid=>mc_evt_enter
    EXCEPTIONS
    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.
    SET HANDLER:
    lcl_eventhandler=>handle_data_changed FOR go_grid.
    Build fieldcatalog and set hotspot for field KUNNR
    PERFORM build_fieldcatalog_knb1.
    Display data
    CALL METHOD go_grid->set_table_for_first_display
    CHANGING
    it_outtab = gt_knb1
    it_fieldcatalog = gt_fcat
    EXCEPTIONS
    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.
    Link the docking container to the target dynpro
    gd_repid = syst-repid.
    CALL METHOD go_docking->link
    EXPORTING
    repid = gd_repid
    dynnr = '0100'
    CONTAINER =
    EXCEPTIONS
    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.
    ok-code field = GD_OKCODE
    CALL SCREEN '0100'.
    END-OF-SELECTION.
    *& Module STATUS_0100 OUTPUT
    text
    MODULE status_0100 OUTPUT.
    SET PF-STATUS 'STATUS_0100'.
    SET TITLEBAR 'xxx'.
    CALL METHOD go_grid1->refresh_table_display
    EXPORTING
    IS_STABLE =
    I_SOFT_REFRESH =
    EXCEPTIONS
    FINISHED = 1
    others = 2
    IF sy-subrc 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
    WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    ENDIF.
    ENDMODULE. " STATUS_0100 OUTPUT
    *& Module USER_COMMAND_0100 INPUT
    text
    MODULE user_command_0100 INPUT.
    go_grid->check_changed_data( ).
    CASE gd_okcode.
    WHEN 'BACK' OR
    'END' OR
    'CANC'.
    SET SCREEN 0. LEAVE SCREEN.
    " NOTE: ENTER button alone works apparently only if the cursor
    " is placed within the command window (left-upper corner)
    WHEN 'ENTER' OR
    'NEXT_ROW'.
    PERFORM set_cursor_next_row.
    WHEN OTHERS.
    ENDCASE.
    CLEAR: gd_okcode.
    ENDMODULE. " USER_COMMAND_0100 INPUT
    *& Form BUILD_FIELDCATALOG_KNB1
    text
    --> p1 text
    <-- p2 text FORM build_fieldcatalog_knb1 .
    define local data
    DATA:
    ls_fcat TYPE lvc_s_fcat.
    CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'
    EXPORTING
    I_BUFFER_ACTIVE =
    i_structure_name = 'KNB1'
    I_CLIENT_NEVER_DISPLAY = 'X'
    I_BYPASSING_BUFFER =
    I_INTERNAL_TABNAME =
    CHANGING
    ct_fieldcat = gt_fcat
    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.
    LOOP AT gt_fcat INTO ls_fcat
    WHERE ( fieldname = 'ZUAWA' ).
    ls_fcat-edit = abap_true.
    ls_fcat-col_opt = abap_true.
    MODIFY gt_fcat FROM ls_fcat.
    ENDLOOP.
    ENDFORM. " BUILD_FIELDCATALOG_KNB1
    *& Form SET_CURSOR_NEXT_ROW
    text
    --> p1 text
    <-- p2 text FORM set_cursor_next_row .
    define local data
    DATA:
    ls_row TYPE lvc_s_row,
    ls_col TYPE lvc_s_col.
    CALL METHOD go_grid->get_current_cell
    IMPORTING
    E_ROW =
    E_VALUE =
    E_COL =
    es_row_id = ls_row
    es_col_id = ls_col
    ES_ROW_NO =
    ADD 1 TO ls_row-index. " next row
    CALL METHOD go_grid->set_current_cell_via_id
    EXPORTING
    is_row_id = ls_row
    is_column_id = ls_col
    IS_ROW_NO =
    ENDFORM. " SET_CURSOR_NEXT_ROW
    HTH
    Regards,
    Dhruv Shah

  • ALV Grid with out data in editable mode

    Hi,
    I need an ALV Grid , which only contains empty cells. User should be able to enter data in the cells later.
    Thanks
    Satya

    REPORT sapmz_hf_alv_grid .
       TABLES: zsflight.
    G L O B A L   I N T E R N  A L   T A B L E S
       DATA: gi_sflight TYPE STANDARD TABLE OF sflight.
    G L O B A L   D A T A
       DATA: ok_code LIKE sy-ucomm,
             g_wa_sflight LIKE sflight.
    Declare reference variables to the ALV grid and the container
       DATA:
         go_grid             TYPE REF TO cl_gui_alv_grid,
         go_custom_container TYPE REF TO cl_gui_custom_container.
    S T A R T - O F - S E L E C T I O N.
       START-OF-SELECTION.
         SET SCREEN '100'.
       *&      Module  USER_COMMAND_0100  INPUT
       MODULE user_command_0100 INPUT.
         CASE ok_code.
           WHEN 'EXIT'.
             LEAVE TO SCREEN 0.
         ENDCASE.
       ENDMODULE.                 " USER_COMMAND_0100  INPUT
       *&      Module  STATUS_0100  OUTPUT
       MODULE status_0100 OUTPUT.
    Create objects
         IF go_custom_container IS INITIAL.
           CREATE OBJECT go_custom_container
             EXPORTING container_name = 'ALV_CONTAINER'.
           CREATE OBJECT go_grid
             EXPORTING
               i_parent = go_custom_container.
           PERFORM load_data_into_grid.
         ENDIF.
       ENDMODULE.                 " STATUS_0100  OUTPUT
       *&      Form  load_data_into_grid
       FORM load_data_into_grid.
    Read data from table SFLIGHT
         SELECT *
           FROM zsflight
           INTO TABLE gi_sflight.
    Load data into the grid and display them
         CALL METHOD go_grid->set_table_for_first_display
           EXPORTING i_structure_name = 'SFLIGHT'
           CHANGING  it_outtab        = gi_sflight.
       ENDFORM.                    " load_data_into_grid

  • ALV GRID with icon fields. When exports to Excel, icon fields are emtpy.

    Hi all,
    In our SAP system (6.0 ECC) we've noticed the following behaviour:
    In ALV GRID with icons (color lights for example...) when we export the list to Excel format with the standard button bat, the icon column is always empty.
    We think that in previous SAP version (4.7), the code corresponding to the icon appeared (For example @08@ for green light).
    It's possible to have tha same functionality in this new version like in 4.7?
    Regards.
    Edited by: Ole ES on Nov 17, 2010 6:05 PM

    Hi,
    Check the format in which you export to Excel (MHTML, XML, ...) and try antoher one.
    http://help.sap.com/saphelp_erp60_sp/helpdata/en/66/79ad48157f11d2953700a0c930328a/content.htm
    I think the integrated Excel mode shows '@08@'.
    Best regards,
    Guillaume

  • How can i show details in ALV GRID with double click in a row?

    Hello, ich try to show the details of a row with double click in the line,
    but it doesn't work!?
    I have a eventhandler for doubleclick and the program run this code, but what i have to do, to show the details!?
    I try it with some methods like cl_gui_cfw=>set_new_ok_code, ...
    i think about the methods cl_gui_alv_grid->show_detail, but this method is private,
    i can create a class with inheritance of the cl_gui_alv_grid class and try this method!?
    Have anybody any ideas!?

    Hello Lars
    The following sample reports shows an ALV list with company codes. Double-clicking on any company code will open a second ALV list displaying all customers.
    *& Report  ZUS_SDN_ALVGRID_EVENTS_1
    REPORT  zus_sdn_alvgrid_events_1.
    DATA:
      gd_okcode        TYPE ui_func,
      gt_fcat          TYPE lvc_t_fcat,
      go_docking       TYPE REF TO cl_gui_docking_container,
      go_docking2      TYPE REF TO cl_gui_docking_container,
      go_grid1         TYPE REF TO cl_gui_alv_grid,
      go_grid2         TYPE REF TO cl_gui_alv_grid.
    DATA:
      gt_t001          TYPE STANDARD TABLE OF t001,
      gt_knb1          TYPE STANDARD TABLE OF knb1.
    *       CLASS lcl_eventhandler DEFINITION
    CLASS lcl_eventhandler DEFINITION.
      PUBLIC SECTION.
        CLASS-METHODS:
          handle_double_click FOR EVENT double_click OF cl_gui_alv_grid
            IMPORTING
              e_row
              e_column
              es_row_no
              sender.
    ENDCLASS.                    "lcl_eventhandler DEFINITION
    *       CLASS lcl_eventhandler IMPLEMENTATION
    CLASS lcl_eventhandler IMPLEMENTATION.
      METHOD handle_double_click.
    *   define local data
        DATA:
          ls_t001     TYPE t001,
          ls_col_id   TYPE lvc_s_col.
        CHECK ( sender = go_grid1 ).
        READ TABLE gt_t001 INTO ls_t001 INDEX e_row-index.
        CHECK ( ls_t001-bukrs IS NOT INITIAL ).
        SELECT * FROM knb1 INTO TABLE gt_knb1
          WHERE bukrs = ls_t001-bukrs.
        IF ( syst-subrc NE 0 ).
          MESSAGE 'No customers found' TYPE 'S'.
        ELSE.
    *     Trigger PAI of dynpro '0100' and set new ok-code
          CALL METHOD cl_gui_cfw=>set_new_ok_code( 'CALL_SCREEN_0200' ).
        ENDIF.
      ENDMETHOD.                    "handle_hotspot_click
    ENDCLASS.                    "lcl_eventhandler IMPLEMENTATION
    START-OF-SELECTION.
      SELECT * FROM t001 INTO TABLE gt_t001.
      REFRESH: gt_knb1.
    * Create docking container
      CREATE OBJECT go_docking
        EXPORTING
          parent                      = cl_gui_container=>screen0
          ratio                       = 90
        EXCEPTIONS
          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.
      CREATE OBJECT go_docking2
        EXPORTING
          parent                      = cl_gui_container=>screen0
          ratio                       = 90
        EXCEPTIONS
          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.
    * Create ALV grid
      CREATE OBJECT go_grid1
        EXPORTING
          i_parent          = go_docking
        EXCEPTIONS
          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.
      CREATE OBJECT go_grid2
        EXPORTING
          i_parent          = go_docking2
        EXCEPTIONS
          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.
    * Set event handler
      SET HANDLER:
        lcl_eventhandler=>handle_double_click FOR go_grid1.
    * Display data
      CALL METHOD go_grid1->set_table_for_first_display
        EXPORTING
          i_structure_name = 'T001'
        CHANGING
          it_outtab        = gt_t001
        EXCEPTIONS
          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.
      CALL METHOD go_grid2->set_table_for_first_display
        EXPORTING
          i_structure_name = 'KNB1'
        CHANGING
          it_outtab        = gt_knb1
        EXCEPTIONS
          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.
    * Link the docking container to the target dynpro
      CALL METHOD go_docking->link
        EXPORTING
          repid                       = syst-repid
          dynnr                       = '0100'
    *      CONTAINER                   =
        EXCEPTIONS
          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.
      CALL METHOD go_docking2->link
        EXPORTING
          repid                       = syst-repid
          dynnr                       = '0200'
    *      CONTAINER                   =
        EXCEPTIONS
          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.
    * ok-code field = GD_OKCODE
      CALL SCREEN '0100'.
    END-OF-SELECTION.
    *&      Module  STATUS_0100  OUTPUT
    *       text
    MODULE status_0100 OUTPUT.
      SET PF-STATUS 'STATUS_0100'.
    *  SET TITLEBAR 'xxx'.
    ENDMODULE.                 " STATUS_0100  OUTPUT
    *&      Module  USER_COMMAND_0100  INPUT
    *       text
    MODULE user_command_0100 INPUT.
      CASE gd_okcode.
        WHEN 'BACK' OR
             'END'  OR
             'CANC'.
          SET SCREEN 0. LEAVE SCREEN.
        WHEN 'CALL_SCREEN_0200'.
          go_grid2->refresh_table_display( ).  " necessary
          CALL SCREEN '0200'.
        WHEN OTHERS.
      ENDCASE.
      CLEAR: gd_okcode.
    ENDMODULE.                 " USER_COMMAND_0100  INPUT
    Regards
      Uwe

  • Add row to ALV grid highlighting mandatory fields

    hello experts,
    I am using grid object of cl_gui_alv_grid to display output table. Rows can be added to grid using Insert Row button of ALV toolbar (No custom button added here). The requirement is to highlight the mandatory input cells either with border or display them in different color.
    This needs to be done immediatly after pressing the Insert row button, but before the row is displayed on the screen as ready for input ( NOT as a part of data validation on save or enter button).
    I tried following method:
    - I SET HANDLER event_receiver->handle_user_command FOR obj_grid.
    - I am handling EVENT before_user_command OF cl_gui_alv_grid
    - I thought of modifying CELLTAB of inserted row in this event to set display properties of required entry fields
    However, the problem I am facing here is, Insert_Row button directly populates a row on display screen without triggering before_user_command event.
    Is there any way I can highlight the cells of inserted row when it's populated on screen?

    Hi,
    Indeed this event is not triggered for some standard function. Anyhow you could do some trick:
    - hide standard insert row button
    - add custom button with same icon on in
    - then once you press it, you will be able to hanlde it in before_user_commnad event
    If you want to stick to standard solution. maybe there is some flag which must be set with some SET.. or REGISTER... method. Unfortunatelly I am not aware of such switch.
    Regards
    Marcin

  • ALV Grid table output field label length

    Hi,
    I have a requirement to display output label with 60 char length. But as per the class -  cl_salv_column_table, it is of maximum 40 char it is accepting. Please help me in displaying morethen 40 in the output label.
    Note: Method :- set_long_text, is taking maximum of 40 char.
    For your reference:
    DATA: fr_column  TYPE REF TO cl_salv_column_table.
    ldf_scrtext_l = text-t15.
      fr_column ?= lr_columns->get_column( 'MAKTX' ).
      fr_column->set_short_text( ldf_scrtext_s ).
      fr_column->set_medium_text( ldf_scrtext_m ).
      fr_column->set_long_text( ldf_scrtext_l ).
    Thanks,
    Raman Reddy.

    Hi Raman,
    Why is it that you need to use that class only, you can use any other class or user defined. if you must use this class, please describe in what scenario you are using this class, so we can see the other options for your requirement.
    Thanks
    Srini.

  • ALV grid case-sensitive edit field

    Hello,
    i've a editable field on a alv grid.
    The field is case-sensitive in the domain.
    But when i enter a field an click rturn, the letters get uppercase.
    What's the problem?
    Best regards,
    TomSd

    Hi,
    Add the attribute  lowercase = 'X'  while preapring field catalog for this field.
    Regards,
    Gopi.
    Reward points if helpfull.

  • ALV  issue - capturing user changes in editable fields using custom button?

    Hi,
    I created a custom button in ALV tool bar.   And also in my ALV grid I have couple of fields Editable option. User can change values for these 2 fields.
    My question is -
    After changing values for these editable fields(more than 1 record)  , user will click on custom button and then I have to update all the user changed values in to my internal table(lt_tab)  and then I have to process logic.
    Problem is when user click on Custom button in ALV tool bar it is not having the changed values in lt_tab table.
    Only when user clicks  some thing on ALV grid records or fields then it is getting all the changed values in to lt_tab.
    Can any one tell me how I can get changed values when user clicks on custom button?
    1. Can we place custom button in ALV Grid? instead of ALV tool bar? 
    or
    How I can capture user changes when they click on custom button?
    CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    TABLES
          T_OUTTAB                          = lt_tab
    Please check this logic-
    CASE r_ucomm.
        WHEN '&IC1'.
    - It_tab  having all changed field values
      WHEN 'custom button'.
          lt_tab  - not having any changed values - showing all initial lt_tab values.
    I highly appreciate your answers on this.
    Thanks.
    Rajesh.

    Hi,
    Use this code, its working:-
    *&      Form  ALV_DISPLAY
    *       SUB-ROUTINE ALV_DISPLAY IS USED TO SET THE PARAMETERS
    *       FOR THE FUNCTION MODULE REUSE_ALV_GRID_DISPLAY
    *       AND PASS THE INTERNAL TABLE EXISTING THE RECORDS TO BE
    *       DISPLAYED IN THE GRID FORMAT
    FORM alv_display .
      CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
       EXPORTING
    *     I_INTERFACE_CHECK                 = ' '
    *     I_BYPASSING_BUFFER                = ' '
    *     I_BUFFER_ACTIVE                   = ' '
         i_callback_program                = v_rep_id       " report id
         i_callback_pf_status_set          = 'PF'           " for PF-STATUS
         i_callback_user_command           = 'USER_COMMAND' " for User-Command
    *     I_CALLBACK_TOP_OF_PAGE            = ' '
    *     I_CALLBACK_HTML_TOP_OF_PAGE       = ' '
    *     I_CALLBACK_HTML_END_OF_LIST       = ' '
    *     I_STRUCTURE_NAME                  =
    *     I_BACKGROUND_ID                   = ' '
    *     I_GRID_TITLE                      =
    *     I_GRID_SETTINGS                   =
         is_layout                         = wa_layout      " for layout
         it_fieldcat                       = it_field       " field catalog
    *     IT_EXCLUDING                      =
    *     IT_SPECIAL_GROUPS                 =
         it_sort                           = it_sort        " sort info
    *     IT_FILTER                         =
    *     IS_SEL_HIDE                       =
    *     I_DEFAULT                         = 'X'
         i_save                            = 'A'
         is_variant                        = wa_variant     " variant name
    *     IT_EVENTS                         =
    *     IT_EVENT_EXIT                     =
    *     IS_PRINT                          =
    *     IS_REPREP_ID                      =
    *     I_SCREEN_START_COLUMN             = 0
    *     I_SCREEN_START_LINE               = 0
    *     I_SCREEN_END_COLUMN               = 0
    *     I_SCREEN_END_LINE                 = 0
    *     I_HTML_HEIGHT_TOP                 = 0
    *     I_HTML_HEIGHT_END                 = 0
    *     IT_ALV_GRAPHICS                   =
    *     IT_HYPERLINK                      =
    *     IT_ADD_FIELDCAT                   =
    *     IT_EXCEPT_QINFO                   =
    *     IR_SALV_FULLSCREEN_ADAPTER        =
    *   IMPORTING
    *     E_EXIT_CAUSED_BY_CALLER           =
    *     ES_EXIT_CAUSED_BY_USER            =
        TABLES
          t_outtab                          = it_final      " internal table
       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.                    " ALV_DISPLAY
    *&      Form  USER_COMMAND
    *       SUB-ROUTINE USER_COMMAND IS USED TO HANDLE THE USER ACTION
    *       AND EXECUTE THE APPROPIATE CODE
    *      -->LV_OKCODE   used to capture the function code
    *                     of the user-defined push-buttons
    *      -->L_SELFIELD   text
    FORM user_command USING lv_okcode LIKE sy-ucomm l_selfield TYPE slis_selfield.
    * assign the function code to variable v_okcode
      lv_okcode = sy-ucomm.
    * handle the code execution based on the function code encountered
      CASE lv_okcode.
    * when the function code is EXECUTE then process the selected records
        WHEN 'EXECUTE'. "user-defined button
    * to reflect the data changed into internal table
          DATA : ref_grid TYPE REF TO cl_gui_alv_grid. "new
          IF ref_grid IS INITIAL.
            CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
              IMPORTING
                e_grid = ref_grid.
          ENDIF.
          IF NOT ref_grid IS INITIAL.
            CALL METHOD ref_grid->check_changed_data.
          ENDIF.
    * refresh the ALV Grid output from internal table
          l_selfield-refresh = c_check.
      ENDCASE.
    ENDFORM.
    This will reflect all the changes in the internal table. Now you can include your logic as per your requirement.
    Hope this solves your problem.
    Thanks & Regards,
    Tarun Gambhir

  • To have a list in a field of a row in ALV Grid

    Dear Colleagues,
    My question is that in an ALV Grid we have a number of rows.
    Now in the row suppose i want one field as a drop down list with definite values is it possible..??
    If so is there a function module to do this..??
    Thanks and Regards
    Varun

    That was very helpful, But unfortunately that only allows only a pre defined list to be displayed....
    I want a new drop down list for each record..??
    Would that be possible..???
    Is there any module for that...????

  • Selecting a row in the output of alv grid

    hi,
    how do i select a row in the output of alv grid?plz help...
    regards,
    sheeba.

    Hi,
    Please refer the code below:
    *& Report  ZDEMO_ALVGRID_SELROW                                        *
    *& Example of a simple ALV Grid Report                                 *
    *& The basic ALV grid, Enhanced to display capture each row a user has *
    *& selected                                                            *
    REPORT  zdemo_alvgrid_selrow                 .
    TABLES:     ekko.
    type-pools: slis.                                 "ALV Declarations
    *Data Declaration
    TYPES: BEGIN OF t_ekko,
      SEl,                         "stores which row user has selected
      ebeln TYPE ekpo-ebeln,
      ebelp TYPE ekpo-ebelp,
      statu TYPE ekpo-statu,
      aedat TYPE ekpo-aedat,
      matnr TYPE ekpo-matnr,
      menge TYPE ekpo-menge,
      meins TYPE ekpo-meins,
      netpr TYPE ekpo-netpr,
      peinh TYPE ekpo-peinh,
    END OF t_ekko.
    DATA: it_ekko TYPE STANDARD TABLE OF t_ekko INITIAL SIZE 0,
          wa_ekko TYPE t_ekko.
    *ALV data declarations
    data: fieldcatalog type slis_t_fieldcat_alv with header line,
          gd_tab_group type slis_t_sp_group_alv,
          gd_layout    type slis_layout_alv,
          gd_repid     like sy-repid.
    *Start-of-selection.
    START-OF-SELECTION.
    perform data_retrieval.
    perform build_fieldcatalog.
    perform build_layout.
    perform display_alv_report.
    *&      Form  BUILD_FIELDCATALOG
    *       Build Fieldcatalog for ALV Report
    form build_fieldcatalog.
    * There are a number of ways to create a fieldcat.
    * For the purpose of this example i will build the fieldcatalog manualy
    * by populating the internal table fields individually and then
    * appending the rows. This method can be the most time consuming but can
    * also allow you  more control of the final product.
    * Beware though, you need to ensure that all fields required are
    * populated. When using some of functionality available via ALV, such as
    * total. You may need to provide more information than if you were
    * simply displaying the result
    *               I.e. Field type may be required in-order for
    *                    the 'TOTAL' function to work.
      fieldcatalog-fieldname   = 'EBELN'.
      fieldcatalog-seltext_m   = 'Purchase Order'.
      fieldcatalog-col_pos     = 0.
      fieldcatalog-outputlen   = 10.
      fieldcatalog-emphasize   = 'X'.
      fieldcatalog-key         = 'X'.
    *  fieldcatalog-do_sum      = 'X'.
    *  fieldcatalog-no_zero     = 'X'.
      append fieldcatalog to fieldcatalog.
      clear  fieldcatalog.
      fieldcatalog-fieldname   = 'EBELP'.
      fieldcatalog-seltext_m   = 'PO Item'.
      fieldcatalog-col_pos     = 1.
      append fieldcatalog to fieldcatalog.
      clear  fieldcatalog.
      fieldcatalog-fieldname   = 'STATU'.
      fieldcatalog-seltext_m   = 'Status'.
      fieldcatalog-col_pos     = 2.
      append fieldcatalog to fieldcatalog.
      clear  fieldcatalog.
      fieldcatalog-fieldname   = 'AEDAT'.
      fieldcatalog-seltext_m   = 'Item change date'.
      fieldcatalog-col_pos     = 3.
      append fieldcatalog to fieldcatalog.
      clear  fieldcatalog.
      fieldcatalog-fieldname   = 'MATNR'.
      fieldcatalog-seltext_m   = 'Material Number'.
      fieldcatalog-col_pos     = 4.
      append fieldcatalog to fieldcatalog.
      clear  fieldcatalog.
      fieldcatalog-fieldname   = 'MENGE'.
      fieldcatalog-seltext_m   = 'PO quantity'.
      fieldcatalog-col_pos     = 5.
      append fieldcatalog to fieldcatalog.
      clear  fieldcatalog.
      fieldcatalog-fieldname   = 'MEINS'.
      fieldcatalog-seltext_m   = 'Order Unit'.
      fieldcatalog-col_pos     = 6.
      append fieldcatalog to fieldcatalog.
      clear  fieldcatalog.
      fieldcatalog-fieldname   = 'NETPR'.
      fieldcatalog-seltext_m   = 'Net Price'.
      fieldcatalog-col_pos     = 7.
      fieldcatalog-outputlen   = 15.
      fieldcatalog-do_sum      = 'X'.        "Display column total
      fieldcatalog-datatype     = 'CURR'.
      append fieldcatalog to fieldcatalog.
      clear  fieldcatalog.
      fieldcatalog-fieldname   = 'PEINH'.
      fieldcatalog-seltext_m   = 'Price Unit'.
      fieldcatalog-col_pos     = 8.
      append fieldcatalog to fieldcatalog.
      clear  fieldcatalog.
    endform.                    " BUILD_FIELDCATALOG
    *&      Form  BUILD_LAYOUT
    *       Build layout for ALV grid report
    form build_layout.
      gd_layout-box_fieldname     = 'SEL'.
                                     "set field name to store row selection
      gd_layout-edit              = 'X'. "makes whole ALV table editable
      gd_layout-zebra             = 'X'.
    endform.                    " BUILD_LAYOUT
    *&      Form  DISPLAY_ALV_REPORT
    *       Display report using ALV grid
    form display_alv_report.
      gd_repid = sy-repid.
      call function 'REUSE_ALV_GRID_DISPLAY'
           exporting
                i_callback_program      = gd_repid
    *            i_callback_top_of_page   = 'TOP-OF-PAGE'  "see FORM
                i_callback_user_command = 'USER_COMMAND'
    *            i_grid_title           = outtext
                is_layout               = gd_layout
                it_fieldcat             = fieldcatalog[]
    *            it_special_groups       = gd_tabgroup
    *            IT_EVENTS                = GT_XEVENTS
                i_save                  = 'X'
    *            is_variant              = z_template
           tables
                t_outtab                = it_ekko
           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.                    " DISPLAY_ALV_REPORT
    *&      Form  DATA_RETRIEVAL
    *       Retrieve data form EKPO table and populate itab it_ekko
    form data_retrieval.
    select ebeln ebelp statu aedat matnr menge meins netpr peinh
    up to 10 rows
      from ekpo
      into corresponding fields of table it_ekko.
    endform.                    " DATA_RETRIEVAL
    *       FORM USER_COMMAND                                          *
    *       --> R_UCOMM                                                *
    *       --> RS_SELFIELD                                            *
    FORM user_command USING r_ucomm LIKE sy-ucomm
                      rs_selfield TYPE slis_selfield.
    * Check function code
      CASE r_ucomm.
        WHEN '&IC1'.
    *   Check field clicked on within ALVgrid report
        IF rs_selfield-fieldname = 'EBELN'.
    *     Read data table, using index of row user clicked on
          READ TABLE it_ekko INTO wa_ekko INDEX rs_selfield-tabindex.
    *     Set parameter ID for transaction screen field
          SET PARAMETER ID 'BES' FIELD wa_ekko-ebeln.
    *     Sxecute transaction ME23N, and skip initial data entry screen
          CALL TRANSACTION 'ME23N' AND SKIP FIRST SCREEN.
        ENDIF.
        WHEN '&DATA_SAVE'.  "user presses SAVE
        loop at it_ekko into wa_ekko.
          if wa_ekko-sel EQ 'X'.
    *       Process records that have been selected
          endif.
        endloop.
      ENDCASE.
    ENDFORM.
    Thanks,
    Sriram Ponna.

  • Default 10 rows in ALV grid

    Hi Group,
    My requirement is to show 10 default rows in ALV grid (with 4 fields in ALV grid), whenever Create radio button is selected in Selection Screen.
    Please could you help me with this.
    Thanks and Regards,
    Kumar.

    Thanks for your reply.
    Sorry I forgot to mention earlier.
    I have to show default 10 empty rows (editable) whenever the Create radio button is selected on the Sel Screen.
    Kindly assist with this regard.
    Thanks and Regards,
    Kumar.

  • Input Field in ALV Grid

    Hi All,
    I have a requirement to display one field in the ALV grid as input field,so that  the user can enter value in that field when the ALV is displayed.I need to use this entered user value later in th eprg for further processing.
    My worry is that i do not see any parameter such as "INPUT " or "EDIT " in the field catalog structure lvc_s_fcat for the ALV.
    How can i acheive having editable input field in the ALV grid?
    Please suggest.
    Thanks,
    Swati

    EDIT field in field catalog is there, you must have ommited it.
    ls_fieldcat-edit = 'X'.   "set your desired column to be edited
    Now you need to get entered value for further processing.
    Define a class as a event receiver for data_changed or data_changed_finished events. Here is how to implement the latter method:
    CLASS cl_alv_event_receiver DEFINITION.
      PUBLIC SECTION.
        METHODS:
          cell_changed FOR EVENT data_changed_finished OF cl_gui_alv_grid
                              IMPORTING e_modified et_good_cells.
    ENDCLASS.
    CLASS cl_alv_event_receiver IMPLEMENTATION.
       METHOD cell_changed.
          check e_modified = 'X'. "if content of cell was changed
           "here you check et_good_cells table, it will contain new values
           "it is of type lvc_t_modi
       ENDMETHOD.
    ENDCLASS.
    CREATE OBJECT cl_alv_event_receiver.
    "now just indicate the handler for this event
    SET HANDLER cl_avl_event_receiver->cell_changed FOR cl_gui_alv_grid.
    Each time some action was perfomed on edit field, the method will be invoked and you can check inside what was changed and what is the new value.
    Additionally after displaying your output table in alv, you need to register this event
    "register edit events
          CALL METHOD W_ROGRID->register_edit_event
            EXPORTING
              i_event_id = cl_gui_alv_grid=>mc_evt_modified.
    Now all you need is to update appropraite records to your internal table in your METHOD cell_changed.

Maybe you are looking for

  • Trouble exporting from Premiere Pro 2.0 to FLV

    Just installed Premiere Pro 2.0.  I imported a sample clip (24p HDV from Canon HV20) and am trying to export as FLV.  I did not have Quicktime installed when I installed Premiere, but have since installed QT 7.0 and upgraded to Pro (Probably a waste

  • MQSeries and getJMSTimestamp method

    I have a Foreign JMS configuration pointing to a MQSeries Q. When I call the getJMSTimestamp method in my MDB that is listening to the MQ Q, I can retrieve the timestamp down to the milliseconds.           I was able to do this quite nicely in one en

  • DB adapter throws error while inserting ORABPEL-11616

    Hi, I am using SOA suite 10.1.3.5. I have configured the BPEL DB adapter to insert into table AP_INVOICES_INTERFACE and i am getting the following error. I tried inserting record manually to the table and it is getting inserted. Any help in this rega

  • Cost allocation without a fixed %

    Hi SAP Gurus, I have a peculiar query. My client would like to allocate costs (in Controlling) on varying percentages every period. For example on the basis of the % of COGS to Sales of the products. Though the method of calculating this % will stay

  • How to buy movie from iTune store if I am living in Vietnam?

    I just got an Apple TV. But when I tried to buy a movie from iTune store (USA) it say "Your iTune account only allow to buy from iTune store Vietnam" But iTune store Vietnam do not sell movie? How can I buy movie from iTune store (USA) if I am living