Application Development Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 

editable fieldcatlogue for corresponding columns.

Former Member
0 Kudos

hi,

        I have a table in which a dynamic fieldcatlogue is generated for eg. annual report for each month amount is generated. For those each month actual amount i want to have corressponding planned amount.hence the planned amount column will be the editable column for each month column. How can i achieve this?  its a drill down report.

Thanks

2 REPLIES 2

Former Member
0 Kudos

Hi Friend,

Please execute this code and debugg it.

TYPES: BEGIN OF TY_MARA,

  MATNR TYPE MARA-MATNR,

  MTART TYPE MARA-MTART,

  MBRSH TYPE MARA-MBRSH,

  MATKL TYPE MARA-MATKL,

  MEINS TYPE MARA-MEINS,

  LABOR TYPE MARA-LABOR,

  END OF TY_MARA.

DATA : IT_MARA TYPE TABLE OF TY_MARA,

  WA_MARA TYPE TY_MARA.

DATA : IT_MARACP TYPE STANDARD TABLE OF TY_MARA, "temparary table for MARA

  IT_CHANGES TYPE STANDARD TABLE OF TY_MARA. "changes on grid

DATA : WA_FIELDCAT TYPE SLIS_FIELDCAT_ALV, "Field catalog work area

  IT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV, "field catalog internal table

  IT_LAYOUT TYPE SLIS_LAYOUT_ALV, "ALV layout settings

  FORM_TOP_OF_PAGE TYPE SLIS_FORMNAME VALUE 'FORM_TOP_OF_PAGE', "for avl header.

  FORM_CALLBACK TYPE SLIS_FORMNAME VALUE 'USER_COMMAND'. "For user command

SELECT-OPTIONS: S_MATNR FOR WA_MARA-MATNR. "material no input

START-OF-SELECTION.

  SELECT MATNR

  MTART

  MBRSH

  MATKL

  MEINS

  LABOR FROM MARA INTO TABLE IT_MARA WHERE MATNR IN S_MATNR.

  PERFORM BUILD_FCAT.

  PERFORM DISPLAY_ALV.

FORM BUILD_FCAT .

  WA_FIELDCAT-FIELDNAME = 'MATNR'.

  WA_FIELDCAT-SELTEXT_M = 'Material Value'.

  WA_FIELDCAT-COL_POS = 1.

  WA_FIELDCAT-KEY = 'X'.

  WA_FIELDCAT-HOTSPOT = 'X'.

  APPEND WA_FIELDCAT TO IT_FIELDCAT.

  CLEAR WA_FIELDCAT.

  WA_FIELDCAT-FIELDNAME = 'MTART'.

  WA_FIELDCAT-SELTEXT_M = 'Material Type'.

  WA_FIELDCAT-EDIT = 'X'.

  WA_FIELDCAT-COL_POS = 2.

  APPEND WA_FIELDCAT TO IT_FIELDCAT.

  CLEAR WA_FIELDCAT.

  WA_FIELDCAT-FIELDNAME = 'MBRSH'.

  WA_FIELDCAT-SELTEXT_M = 'Industry Sector'.

  WA_FIELDCAT-EDIT = 'X'.

  WA_FIELDCAT-COL_POS = 3.

  APPEND WA_FIELDCAT TO IT_FIELDCAT.

  CLEAR WA_FIELDCAT.

  WA_FIELDCAT-FIELDNAME = 'MATKL'.

  WA_FIELDCAT-SELTEXT_M = 'Material Group'.

  WA_FIELDCAT-EDIT = 'X'.

  WA_FIELDCAT-COL_POS = 4.

  APPEND WA_FIELDCAT TO IT_FIELDCAT.

  CLEAR WA_FIELDCAT.

  WA_FIELDCAT-FIELDNAME = 'MEINS'.

  WA_FIELDCAT-SELTEXT_M = 'Base UOM'.

  WA_FIELDCAT-ICON = 'X'. " Display the field as ICON

  WA_FIELDCAT-COL_POS = 5.

  APPEND WA_FIELDCAT TO IT_FIELDCAT.

  CLEAR WA_FIELDCAT.

  WA_FIELDCAT-FIELDNAME = 'LABOR'.

  WA_FIELDCAT-SELTEXT_M = 'Lab Office'.

  WA_FIELDCAT-ICON = 'X'. " Display the field as ICON

  WA_FIELDCAT-COL_POS = 6.

  APPEND WA_FIELDCAT TO IT_FIELDCAT.

  CLEAR WA_FIELDCAT.

ENDFORM. " BUILD_FCAT

FORM DISPLAY_ALV .

  IT_MARACP[] = IT_MARA[].

  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'

  EXPORTING

  I_CALLBACK_PROGRAM = SY-REPID "program name

  I_CALLBACK_USER_COMMAND = FORM_CALLBACK "user command subroutine name

  I_CALLBACK_TOP_OF_PAGE = FORM_TOP_OF_PAGE "sub routine for top of page

  IS_LAYOUT = IT_LAYOUT

  IT_FIELDCAT = IT_FIELDCAT

  TABLES

  T_OUTTAB = 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. " DISPLAY_ALV

FORM FORM_TOP_OF_PAGE.

  DATA: IT_HEADER TYPE SLIS_T_LISTHEADER,

  WA_HEADER TYPE SLIS_LISTHEADER,

  LV_LINE LIKE WA_HEADER-INFO,

  LD_LINES TYPE I,

  LD_LINESC(10) TYPE C.

* Title

  WA_HEADER-TYP = 'H'.

  WA_HEADER-INFO = 'MARA Master Report'.

  APPEND WA_HEADER TO IT_HEADER.

  CLEAR WA_HEADER.

* Date

  WA_HEADER-TYP = 'S'.

  WA_HEADER-KEY = 'Date: '.

  CONCATENATE SY-DATUM+6(2) '.'

  SY-DATUM+4(2) '.'

  SY-DATUM(4) INTO WA_HEADER-INFO. "todays date

  APPEND WA_HEADER TO IT_HEADER.

  CLEAR: WA_HEADER.

* Date

  WA_HEADER-TYP = 'S'.

  WA_HEADER-KEY = 'User: '.

  CONCATENATE SY-UNAME ' ' INTO WA_HEADER-INFO. "Logged in user

  APPEND WA_HEADER TO IT_HEADER.

  CLEAR: WA_HEADER.

* Total No. of Records Selected

  DESCRIBE TABLE IT_MARA LINES LD_LINES.

  LD_LINESC = LD_LINES.

  CONCATENATE 'Total No. of Records Selected: ' LD_LINESC

  INTO LV_LINE SEPARATED BY SPACE.

  WA_HEADER-TYP = 'A'.

  WA_HEADER-INFO = LV_LINE.

  APPEND WA_HEADER TO IT_HEADER.

  CLEAR: WA_HEADER, LV_LINE.

  CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'

  EXPORTING

  IT_LIST_COMMENTARY = IT_HEADER.

  .

  CLEAR IT_HEADER.

ENDFORM. "TOP-OF-PAGE

FORM F_SAVE_DATA.

  DATA : WA_MARACP TYPE TY_MARA.

  DATA : WA_MARA_TMP TYPE MARA.

  CLEAR IT_CHANGES[].

  LOOP AT IT_MARA INTO WA_MARA.

  READ TABLE IT_MARACP INTO WA_MARACP INDEX SY-TABIX.

  IF WA_MARACP NE WA_MARA.

  APPEND WA_MARA TO IT_CHANGES.

  MOVE-CORRESPONDING WA_MARA TO WA_MARA_TMP.

  MODIFY MARA FROM WA_MARA_TMP .

  IF SY-SUBRC EQ 0.

  MESSAGE 'Data Updated' TYPE 'I'.

  ENDIF.

  ENDIF.

  CLEAR WA_MARACP.

  ENDLOOP.

ENDFORM. "f_save_data

FORM USER_COMMAND USING P_UCOMM LIKE SY-UCOMM

  P_SELFIELD TYPE SLIS_SELFIELD.

  "p_ucomm will hold user action like double click, save click

  CASE P_UCOMM.

  WHEN '&IC1'. " SAP standard code for double-clicking

  READ TABLE IT_MARA INTO WA_MARA INDEX P_SELFIELD-TABINDEX. " Getting Row data

  CASE P_SELFIELD-FIELDNAME.

  WHEN 'MATNR'. " Column data

  SET PARAMETER ID: 'MAT' FIELD P_SELFIELD-VALUE.

  CALL TRANSACTION 'MM03' AND SKIP FIRST SCREEN.

  WHEN 'MTART'.

  MESSAGE P_SELFIELD-VALUE TYPE 'S'.

  ENDCASE.

  WHEN '&DATA_SAVE'.

  MESSAGE 'Trying to save' TYPE 'S'.

  PERFORM F_SAVE_DATA.

  "It_changes hold all the change made in the ALV

  ENDCASE.

ENDFORM.

Former Member
0 Kudos

You can use this this code is working and easy to understand..

TYPE-POOLS : slis.
DATA : ok_code TYPE sy-ucomm.
TYPES : BEGIN OF ty_sflight,
        carrid TYPE sflight-carrid,
        connid TYPE sflight-connid,
        fldate TYPE sflight-fldate,
        price TYPE sflight-price,
        END OF ty_sflight.

DATA : it_sflight TYPE TABLE OF ty_sflight,
       wa_sflight TYPE ty_sflight.

DATA : wa_sflight1 TYPE sflight.

DATA : it_fieldcat TYPE slis_t_fieldcat_alv,
       wa_fieldcat TYPE slis_fieldcat_alv.
SELECT-OPTIONS s_carrid FOR wa_sflight-carrid.

SELECT carrid connid fldate price FROM sflight INTO TABLE it_sflight
WHERE carrid IN s_carrid.

wa_fieldcat-col_pos = 1.
wa_fieldcat-fieldname = 'CARRID'.
wa_fieldcat-tabname = 'IT_SFLIGHT'.
wa_fieldcat-emphasize = 'C100'.
wa_fieldcat-key = 'X'.
wa_fieldcat-seltext_m = 'CARRID NO.'.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.

wa_fieldcat-col_pos = 2.
wa_fieldcat-fieldname = 'CONNID'.
wa_fieldcat-tabname = 'IT_SFLIGHT'.
wa_fieldcat-emphasize = 'C100'.
wa_fieldcat-key = 'X'.
wa_fieldcat-seltext_m = 'FLIGHT  NO.'.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.

wa_fieldcat-col_pos = 3.
wa_fieldcat-fieldname = 'FLDATE'.
wa_fieldcat-tabname = 'IT_SFLIGHT'.
wa_fieldcat-emphasize = 'C100'.
wa_fieldcat-key = 'X'.
wa_fieldcat-seltext_m = 'FLIGHT DATE.'.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.


wa_fieldcat-col_pos = 4.
wa_fieldcat-fieldname = 'PRICE'.
wa_fieldcat-tabname = 'IT_SFLIGHT'.
wa_fieldcat-DO_SUM = 'X'.
wa_fieldcat-edit = 'X'.
wa_fieldcat-seltext_m = 'PRICE'.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.


CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING

   i_callback_program                = sy-cprog
   i_callback_user_command           = 'VALIDATE_COMMAND'

   it_fieldcat                       = it_fieldcat


  TABLES
    t_outtab                          = it_sflight .



*&--------------------------------------------------------------------*
*&      Form  VALIDATE_COMMAND
*&--------------------------------------------------------------------*
*       text
*---------------------------------------------------------------------*
*      -->R_UCOMM    text
*      -->SEL_FIELD  text
*---------------------------------------------------------------------*
FORM validate_command USING r_ucomm TYPE sy-ucomm
                            sel_field TYPE slis_selfield.

  DATA :it_grid TYPE REF TO cl_gui_alv_grid.
  DATA : is_valid.

  CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
   IMPORTING

     e_grid                   = it_grid.
        

  CALL METHOD it_grid->check_changed_data
    IMPORTING
      e_valid   = is_valid .

  CASE r_ucomm.
    WHEN '&DATA_SAVE'.
      IF is_valid = 'X'.
        LOOP AT it_sflight INTO wa_sflight.
          MOVE-CORRESPONDING wa_sflight TO wa_sflight1.
          MODIFY sflight FROM wa_sflight1.
        ENDLOOP.
      ENDIF.
  ENDCASE.
ENDFORM.