REGARDING alv sUBTOTAL

hi friends,
in alv grid display output on toolbar how to get button of Subtotal,Expand and Colapse
pls,reply...........

hi,
try this.
<b>DATA: gt_subtot TYPE slis_t_sortinfo_alv,
        subtot LIKE LINE OF gt_subtot.</b>
subtot-spos = 1.
  subtot-fieldname = 'NAME1'.
  subtot-tabname = 'ITAB_HEAD'.
  subtot-up = 'X'.
  subtot-group = 'X'.
  subtot-subtot = 'X'.
  subtot-expa = 'X'.
  APPEND subtot TO gt_subtot.
  CALL FUNCTION 'REUSE_ALV_HIERSEQ_LIST_DISPLAY'
    EXPORTING
      i_callback_program = 'ZRAW_COST'
      it_fieldcat        = fcat
     <b> it_sort            = gt_subtot</b>
      it_events          = eve
      i_tabname_header   = 'ITAB_HEAD'
      i_tabname_item     = 'ITAB_ITM'
      is_keyinfo         = alv_keyinfo
    TABLES
      t_outtab_header    = itab_head
      t_outtab_item      = itab_itm
    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.
reward if useful.
this is whole report for better understanding.
REPORT  ZRAW_COST.
TYPE-POOLS:slis.
TABLES:mseg,
       lfa1,
       mkpf,
       ekpo,
       mara,
       j_1iexchdr,
       mbew.
DATA:BEGIN OF itab_vend OCCURS 0,
      lifnr LIKE lfa1-lifnr,                      "Vendor Code
     END OF itab_vend.
DATA:BEGIN OF itab_data OCCURS 0,
      lifnr LIKE mseg-lifnr,                      "Vendor Code
      mblnr LIKE mseg-mblnr,                      "Material Doc.
      charg LIKE mseg-charg,                      "Batch
      matnr LIKE mseg-matnr,                      "Material
      maktx LIKE makt-maktx,                      "Description
      menge LIKE mseg-menge,                      "Quantity
      dmbtr LIKE mseg-dmbtr,                      "Amount
      budat LIKE mkpf-budat,                      "G.R.Date
      xblnr LIKE mkpf-xblnr,                      "Delivery Note(Bill No.)
      frbnr LIKE mkpf-frbnr,                      "Bill of Lading(Bill Date)
      netpr LIKE ekpo-netpr,                      "Basic Rate
      matkl LIKE ekpo-matkl,                      "Material Group
     END OF itab_data.
DATA:BEGIN OF itab_itm OCCURS 0,
      lifnr LIKE mseg-lifnr,                      "Vendor Code
      name1 LIKE lfa1-name1,                      "Vendor Name
      matkl LIKE ekpo-matkl,                      "Material Group
      wgbez LIKE t023t-wgbez,                     "Material Group Name
      mblnr LIKE mseg-mblnr,                      "Material Doc.
      matnr LIKE mseg-matnr,                      "Material
      maktx LIKE makt-maktx,                      "Description
      xblnr LIKE mkpf-xblnr,                      "Delivery Note(Bill No.)
      frbnr LIKE mkpf-frbnr,                      "Bill of lading(Bill Date)
      budat LIKE mkpf-budat,                      "G.R.Date
      exnum LIKE j_1iexchdr-exnum,                "Ex.Bill No.
      exdat LIKE j_1iexchdr-exdat,                "Ex.Bill Date
      charg LIKE mseg-charg,                      "Batch
      menge LIKE mseg-menge,                      "Quantity
      netpr LIKE ekpo-netpr,                      "Basic Rate
      verpr LIKE mbew-verpr,                      "Costing Rate
      dmbtr LIKE mseg-dmbtr,                      "Amount
     END OF itab_itm.
DATA:BEGIN OF itab_head OCCURS 0,
      lifnr LIKE mseg-lifnr,                      "Vendor Code
      name1 LIKE lfa1-name1,                      "Vendor Name
      matkl LIKE ekpo-matkl,                      "Material Group
      wgbez LIKE t023t-wgbez,                     "Material Group Name
     END OF itab_head.
DATA:fcat TYPE slis_t_fieldcat_alv,
     eve TYPE slis_t_event,
     alv_keyinfo  TYPE slis_keyinfo_alv,
     gt_subtot TYPE slis_t_sortinfo_alv,
     subtot LIKE LINE OF gt_subtot.
DATA:ex_doc LIKE j_1iexchdr-exnum,
     ex_dat LIKE j_1iexchdr-exdat,
     mov_pr LIKE mbew-verpr,
     name LIKE lfa1-name1,
     gr_nm LIKE t023t-wgbez,
     t_mblnr LIKE mseg-mblnr,
     yr LIKE mseg-mjahr.
DATA: BEGIN OF record OCCURS 0,
        act(003),
        rfd(003),
        matdoc(010),
        docyr(004),
      END OF record.
DATA: bdcdata LIKE bdcdata OCCURS 0 WITH HEADER LINE.
SELECTION-SCREEN:BEGIN OF BLOCK blk1 WITH FRAME TITLE text-001.
SELECT-OPTIONS:dt FOR mkpf-budat OBLIGATORY,
               vend FOR lfa1-lifnr,
               mat_gr FOR mara-matkl.
SELECTION-SCREEN:END OF BLOCK blk1.
INITIALIZATION.
  PERFORM build_cat USING fcat.
START-OF-SELECTION.
  PERFORM get_data.
  PERFORM dis_data.
*&      Form  build_cat
      text
     -->T_FCAT     text
FORM build_cat USING t_fcat TYPE slis_t_fieldcat_alv.
  DATA:wa_fcat TYPE slis_fieldcat_alv.
  wa_fcat-tabname = 'ITAB_HEAD'.
  wa_fcat-fieldname = 'NAME1'.
  wa_fcat-seltext_m = 'Vendor Name'.
  wa_fcat-outputlen = '30'.
wa_fcat-just = 'C'.
  APPEND wa_fcat TO t_fcat.
  CLEAR wa_fcat.
  wa_fcat-tabname = 'ITAB_HEAD'.
  wa_fcat-fieldname = 'WGBEZ'.
  wa_fcat-seltext_m = 'Material Group Name'.
  wa_fcat-outputlen = '30'.
  wa_fcat-just = 'C'.
  APPEND wa_fcat TO t_fcat.
  CLEAR wa_fcat.
  wa_fcat-tabname = 'ITAB_ITM'.
  wa_fcat-fieldname = 'MBLNR'.
  wa_fcat-seltext_m = 'Material Doc.'.
  wa_fcat-outputlen = '15'.
  APPEND wa_fcat TO t_fcat.
  CLEAR wa_fcat.
  wa_fcat-tabname = 'ITAB_ITM'.
  wa_fcat-fieldname = 'MAKTX'.
  wa_fcat-seltext_m = 'Product Name'.
  wa_fcat-outputlen = '40'.
  wa_fcat-just = 'L'.
  APPEND wa_fcat TO t_fcat.
  CLEAR wa_fcat.
  wa_fcat-tabname = 'ITAB_ITM'.
  wa_fcat-fieldname = 'XBLNR'.
  wa_fcat-seltext_m = 'Bill.No.'.
  wa_fcat-just = 'C'.
  APPEND wa_fcat TO t_fcat.
  CLEAR wa_fcat.
  wa_fcat-tabname = 'ITAB_ITM'.
  wa_fcat-fieldname = 'FRBNR'.
  wa_fcat-seltext_m = 'Bill Date'.
  wa_fcat-just = 'C'.
  APPEND wa_fcat TO t_fcat.
  CLEAR wa_fcat.
  wa_fcat-tabname = 'ITAB_ITM'.
  wa_fcat-fieldname = 'BUDAT'.
  wa_fcat-seltext_m = 'G.R.Date'.
  wa_fcat-outputlen = '10'.
  wa_fcat-just = 'C'.
  APPEND wa_fcat TO t_fcat.
  CLEAR wa_fcat.
  wa_fcat-tabname = 'ITAB_ITM'.
  wa_fcat-fieldname = 'EXNUM'.
  wa_fcat-seltext_m = 'Ex.Bill.No.'.
  wa_fcat-just = 'C'.
  APPEND wa_fcat TO t_fcat.
  CLEAR wa_fcat.
  wa_fcat-tabname = 'ITAB_ITM'.
  wa_fcat-fieldname = 'EXDAT'.
  wa_fcat-seltext_m = 'Ex.Bill Date'.
  wa_fcat-just = 'C'.
  APPEND wa_fcat TO t_fcat.
  CLEAR wa_fcat.
  wa_fcat-tabname = 'ITAB_ITM'.
  wa_fcat-fieldname = 'CHARG'.
  wa_fcat-seltext_m = 'Batch'.
  wa_fcat-outputlen = '15'.
  wa_fcat-just = 'C'.
  APPEND wa_fcat TO t_fcat.
  CLEAR wa_fcat.
  wa_fcat-tabname = 'ITAB_ITM'.
  wa_fcat-fieldname = 'MENGE'.
  wa_fcat-seltext_m = 'Qty'.
  wa_fcat-do_sum = 'Y'.
  wa_fcat-outputlen = '15'.
  APPEND wa_fcat TO t_fcat.
  CLEAR wa_fcat.
  wa_fcat-tabname = 'ITAB_ITM'.
  wa_fcat-fieldname = 'NETPR'.
  wa_fcat-seltext_m = 'Basic Rate'.
  wa_fcat-do_sum = 'Y'.
  wa_fcat-outputlen = '12'.
  APPEND wa_fcat TO t_fcat.
  CLEAR wa_fcat.
  wa_fcat-tabname = 'ITAB_ITM'.
  wa_fcat-fieldname = 'VERPR'.
  wa_fcat-seltext_m = 'Costing Rate'.
  wa_fcat-do_sum = 'Y'.
  wa_fcat-outputlen = '12'.
  APPEND wa_fcat TO t_fcat.
  CLEAR wa_fcat.
  wa_fcat-tabname = 'ITAB_ITM'.
  wa_fcat-fieldname = 'DMBTR'.
  wa_fcat-seltext_m = 'Amount'.
  wa_fcat-do_sum = 'Y'.
  wa_fcat-outputlen = '15'.
  APPEND wa_fcat TO t_fcat.
  CLEAR wa_fcat.
  subtot-spos = 1.
  subtot-fieldname = 'NAME1'.
  subtot-tabname = 'ITAB_HEAD'.
  subtot-up = 'X'.
  subtot-group = 'X'.
  subtot-subtot = 'X'.
  subtot-expa = 'X'.
  APPEND subtot TO gt_subtot.
  subtot-spos = 2.
  subtot-fieldname = 'WGBEZ'.
  subtot-tabname = 'ITAB_HEAD'.
  subtot-up = 'X'.
  subtot-group = 'X'.
  subtot-subtot = 'X'.
  subtot-expa = 'X'.
  APPEND subtot TO gt_subtot.
ENDFORM.                    "build_cat
*&      Form  get_data
      text
FORM get_data.
  SELECT DISTINCT mseg~lifnr INTO CORRESPONDING FIELDS OF TABLE itab_vend
  FROM mseg INNER JOIN mkpf
  ON msegmblnr = mkpfmblnr
  WHERE mkpfbudat IN dt AND mseglifnr IN vend.
  LOOP AT itab_vend.
    SELECT mseglifnr msegmblnr msegmatnr maktmaktx msegcharg msegmenge msegdmbtr mkpfbudat  mkpfxblnr mkpffrbnr ekponetpr ekpomatkl
    INTO CORRESPONDING FIELDS OF TABLE itab_data
    FROM mseg INNER JOIN mkpf ON
    msegmblnr = mkpfmblnr
    INNER JOIN ekpo ON
    msegebeln = ekpoebeln AND msegmatnr = ekpomatnr
    INNER JOIN makt ON
    msegmatnr = maktmatnr
    WHERE mkpfbudat IN dt AND mseglifnr IN vend AND msegbwart = '101' AND msegebeln <> '' AND ekpo~matkl IN mat_gr.
  ENDLOOP.
  SORT itab_data BY lifnr matkl matnr mblnr.
  LOOP AT itab_data.
    CLEAR: ex_doc,ex_dat,mov_pr,name,gr_nm.
    MOVE-CORRESPONDING itab_data TO itab_itm.
    SELECT SINGLE name1 FROM lfa1 INTO name WHERE lifnr = itab_data-lifnr.
    SELECT SINGLE wgbez FROM t023t INTO gr_nm WHERE matkl = itab_data-matkl.
    SELECT SINGLE exnum exdat FROM j_1iexchdr INTO (ex_doc,ex_dat) WHERE rdoc = itab_data-mblnr.
    SELECT SINGLE verpr INTO mov_pr FROM mbew WHERE matnr = itab_data-matnr AND bwtar = itab_data-charg.
    itab_itm-exnum = ex_doc.
    itab_itm-exdat = ex_dat.
    itab_itm-verpr = mov_pr.
    itab_itm-name1 = name.
    itab_itm-wgbez = gr_nm.
    APPEND itab_itm.
  ENDLOOP.
  SORT itab_itm .  "BY lifnr matkl mblnr matnr charg.
  DELETE ADJACENT DUPLICATES FROM itab_itm.
ENDFORM.                    "get_data
*&      Form  dis_data
      text
FORM dis_data.
  alv_keyinfo-header01 = 'LIFNR'.
  alv_keyinfo-item01   = 'LIFNR'.
  alv_keyinfo-header02 = 'MATKL'.
  alv_keyinfo-item02   = 'MATKL'.
  REFRESH itab_head.
  LOOP AT itab_itm.
    ON CHANGE OF itab_itm-lifnr OR itab_itm-matkl .
      MOVE-CORRESPONDING itab_itm TO itab_head.
      APPEND itab_head.
    ENDON.
  ENDLOOP.
  CALL FUNCTION 'REUSE_ALV_HIERSEQ_LIST_DISPLAY'
    EXPORTING
      i_callback_program = 'ZRAW_COST'
      it_fieldcat        = fcat
      it_sort            = gt_subtot
      i_tabname_header   = 'ITAB_HEAD'
      i_tabname_item     = 'ITAB_ITM'
      is_keyinfo         = alv_keyinfo
    TABLES
      t_outtab_header    = itab_head
      t_outtab_item      = itab_itm
    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.                    "dis_data

Similar Messages

  • Alv subtotal

    HI all,
    I need subtotal based on 2 fields one is matnr and the other one is vben but i am getting subtotals based on only matnr but not on vbeln what could be the problem?
    it_sort-fieldname = 'VBELN'.
    IT_SORT-TABNAME = 'GI_FINAL'.
    IT-SORT-SPOS = '1'.
    IT_SORT-SUBTOT = 'X'.
    IT-SORT-UP = 'X'.
    APPEND IT-SORT.
    it_sort-fieldname = 'MATNR'.
    IT_SORT-TABNAME = 'GI_FINAL'.
    IT-SORT-SPOS = '1'.
    IT_SORT-SUBTOT = 'X'.
    IT-SORT-UP = 'X'.
    APPEND IT-SORT.
    Please refer the above code and suggest me
    what exact purpose of spos here?
    Thanks&Regards
    mahsh

    Hi,
    Herewith i am sending the sample coding for the ALV SUBTOTAL report.
    REPORT  YMS_ALVSUBTOTAL.
    *REPORT z_alv_sub_totals .
    TYPE-POOLS: slis.
    DATA: BEGIN OF it_output OCCURS 0,
              var1(8) TYPE n,
              var2(10),
              var3 TYPE I,
          END OF it_output.
    DATA: it_fieldcat TYPE slis_t_fieldcat_alv,
           t_fieldcat TYPE slis_fieldcat_alv,
          it_sort TYPE slis_t_sortinfo_alv,
          t_sort TYPE slis_sortinfo_alv,
          v_repid LIKE sy-repid.
    INITIALIZATION.
      v_repid = sy-repid.
    START-OF-SELECTION.
      PERFORM get_data.
      PERFORM sort_fields.
      PERFORM fill_fieldcat.
      PERFORM list_display.
    *&      Form  GET_DATA
          text
    -->  p1        text
    <--  p2        text
    FORM get_data.
      it_output-var1 = 1000.
      it_output-var2 = 'anupama'.
      it_output-var3 = '10000'.
      APPEND it_output.
      CLEAR it_output.
      it_output-var1 = 1000.
      it_output-var2 = 'siddhu'.
      it_output-var3 = '20000'.
      APPEND it_output.
      CLEAR it_output.
      it_output-var1 = 1000.
      it_output-var2 = 'chinni'.
      it_output-var3 = '100000'.
      APPEND it_output.
      CLEAR it_output.
      it_output-var1 = 2000.
      it_output-var2 = 'chicchu'.
      it_output-var3 = '10000'.
      APPEND it_output.
      CLEAR it_output.
      it_output-var1 = 2000.
      it_output-var2 = 'candy'.
      it_output-var3 = '10000'.
      APPEND it_output.
      CLEAR it_output.
      it_output-var1 = 1000.
      it_output-var2 = 'anupama'.
      it_output-var3 = '10000'.
      APPEND it_output.
      CLEAR it_output.
      it_output-var1 = 4000.
      it_output-var2 = 'anupama'.
      it_output-var3 = '10000'.
      APPEND it_output.
      CLEAR it_output.
    ENDFORM.                    " GET_DATA
    *&      Form  fill_fieldcat
          text
    -->  p1        text
    <--  p2        text
    FORM fill_fieldcat.
      PERFORM fill_fields USING: 'IT_OUTPUT' 'VAR1' 'Variable 1' ' ',
                                 'IT_OUTPUT' 'VAR2' 'Variable 2' ' ',
                                 'IT_OUTPUT' 'VAR3' 'Variable 3' 'X'.
    ENDFORM.                    " fill_fieldcat
    *&      Form  fill_fields
          text
         -->P_0146   text
         -->P_0147   text
         -->P_0148   text
         -->P_0149   text
    FORM fill_fields USING    value(tabname) TYPE slis_tabname
                              value(fieldname) TYPE slis_fieldname
                              value(seltext_m) LIKE dd03p-scrtext_m
                              value(do_sum) TYPE c.
      t_fieldcat-tabname = tabname.
      t_fieldcat-fieldname = fieldname.
      t_fieldcat-seltext_m  = seltext_m.
      IF do_sum = 'X'.
        t_fieldcat-datatype = 'CURR'.
      ENDIF.
      t_fieldcat-do_sum = do_sum.
      APPEND t_fieldcat TO it_fieldcat.
      CLEAR t_fieldcat.
    ENDFORM.                    " fill_fields
    *&      Form  list_display
          text
    -->  p1        text
    <--  p2        text
    FORM list_display.
      CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
       EXPORTING
         i_callback_program             = v_repid
         it_fieldcat                    = it_fieldcat
         it_sort                        = it_sort[]
       TABLES
          t_outtab                       = it_output
       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  sort_fields
          text
    -->  p1        text
    <--  p2        text
    FORM sort_fields.
      t_sort-fieldname = 'VAR1'.
      t_sort-tabname = 'IT_OUTPUT'.
      t_sort-spos = 1.
      t_sort-up = 'X'.
      t_sort-subtot = 'X'.
      APPEND t_sort TO it_sort.
      CLEAR t_sort.
      t_sort-fieldname = 'VAR3'.
      t_sort-tabname = 'IT_OUTPUT'.
      t_sort-spos = 2.
      t_sort-up = 'X'.
      APPEND t_sort TO it_sort.
      CLEAR t_sort.
    ENDFORM.                    " sort_fields
    Hope it will helps to u.
    Thanks,
    Shankar

  • A question about ALV subtotal

    Hello Expert,
    I have a question about ALV subtotal
    In my ALV output, there are three columns: SalesOrder, Item, Sales Volumn. Suppose there are following data in the ALV output
    SalesOrder   Item   Volumn
    123              10      100.00
    123              20      300.00
    456              10      200.00
    456              20      500.00
    What I want in the ALV outpu is as below:
    SalesOrder   Item   Volumn
    123              10      100.00
    123              20      300.00
                     subtotal  400.00
    456              10      200.00
    456              20      500.00
                     Subtotal 700.00
    Total                       1100.00
    Is this possible, and how can I achieve that result?
    Thanks & Regards, Johnny

    You can use sortinfo structure of ALV.
      Data:GT_SORT TYPE slis_t_sortinfo_alv.
      GTT_SORT-FIELDNAME = 'VBELN'.
      GTT_SORT-UP = 'X'.
      GTT_SORT-SUBTOT = 'X'.
      APPEND GTT_SORT TO GT_SORT.

  • Help needed regarding ALV report

    Hi,
    I have a query regarding ALV report.
    The requirement is as follows:-
    When the user executes the ALV report and if he sums one numeric field column values and filters out some of the field columns ( for example there r 5 columns in the report and the user has filtered out 2 of them and viewing only 3 columns)
    and now the requirements is that when the user runs the report later he should see the modified report ( i mean only 3 cloumns and the total value of the column which he has made) but not the original output which was there when the report was developed.
    First of all i wanna know is it possible to do r not. If yes then how
    Hope u have got what i want.
    eagerly waiting for ur reply.
    regards,
    maqsood

    Hi
    Yes you can! You have to manage the layout variant.
    So when you call your ALV you have to set the parameter I_SAVE = 'A'.
    In this way you'll allow the user to save the variants for layout.
    After you has to have a chance to choose the variant in selection-screen.
    See the demo program BCALV_GRID_11 to manage the variant in selection-screen.
    Max

  • Regarding ALV GRID

    Hi all,
    i am having one issue regarding ALV GRID.
    my issue is after executin  report O/P in grid format is ok,
    but the same format i want to display when u click print preview or when u execute it in back ground,
    it is displaying as same as ALV LIST,

    hi use the coding like this,
    here i am calling hirarchial from list check this....
    *& Report  ZZZ00
    REPORT  ZPR_02.
    TYPE-POOLS: SLIS.
    TABLES:pa0002,pa0008.
    data:begin of it_pa0002 occurs 0,
         checkbox,
         pernr like pa0002-pernr,
         begda like pa0002-begda,
         endda like pa0002-endda,
         vorna like pa0002-vorna,
         nachn like pa0002-nachn,
         end of it_pa0002.
    data:begin of it_pa00021 occurs 0,
         pernr like pa0002-pernr,
         begda like pa0002-begda,
         endda like pa0002-endda,
         vorna like pa0002-vorna,
         nachn like pa0002-nachn,
         expand TYPE xfeld value 'X',
         end of it_pa00021.
    data:begin of it_pa0008 occurs 0,
         pernr like pa0008-pernr,
         begda like pa0008-begda,
         endda like pa0008-endda,
         ANSAL like pa0008-ANSAL,
         LGA01 like pa0008-LGA01,
         BET01 LIKE PA0008-BET01,
         end of it_pa0008.
    DATA: IT_FIELD_CAT TYPE SLIS_T_FIELDCAT_ALV,
          IT_FIELD_CAT1 TYPE SLIS_T_FIELDCAT_ALV,
          IT_LAYOUT1 TYPE SLIS_LAYOUT_ALV,
          WA_FIELD_CAT TYPE SLIS_FIELDCAT_ALV,
          WA_FIELD_CAT1 TYPE SLIS_FIELDCAT_ALV,
          IT_LAYOUT TYPE SLIS_LAYOUT_ALV,
          IT_EVENTS TYPE SLIS_T_EVENT,
          WA_EVENTS TYPE SLIS_ALV_EVENT,
          IT_HEADER TYPE SLIS_T_LISTHEADER,
          WA_HEADER TYPE SLIS_LISTHEADER,
          wa_keyinfo TYPE slis_keyinfo_alv.
    CONSTANTS:c VALUE 'X'.
    SELECT-OPTIONS: S_pernr FOR pa0002-pernr.
    START-OF-SELECTION.
      SET PF-STATUS 'DATA' .
      PERFORM GET_DATA.
      PERFORM BUILD_FIELD_CAT.
      PERFORM GET_EVENTS.
      PERFORM DISPLAY_DATA.
    *&      Form  get_data
          text
    FORM GET_DATA .
      SELECT pernr
             begda
             endda
             vorna
             nachn
             FROM pa0002
             INTO CORRESPONDING FIELDS OF TABLE IT_pa0002
             WHERE pernr IN S_pernr.
    ENDFORM.                    " get_data
    *&      Form  build_field_cat
          text
    FORM BUILD_FIELD_CAT .
        wa_field_cat-tabname = 'PA0002'.
      WA_FIELD_CAT-FIELDNAME = 'CHECKBOX'.
      wa_field_cat-ref_tabname = 'IT_PA0002'.
      WA_FIELD_CAT-REPTEXT_DDIC = 'Check Box'.
      APPEND WA_FIELD_CAT TO IT_FIELD_CAT.
      CLEAR WA_FIELD_CAT.
        wa_field_cat-tabname = 'PA0002'.
      WA_FIELD_CAT-FIELDNAME = 'PERNR'.
        wa_field_cat-ref_tabname = 'IT_PA0002'.
      WA_FIELD_CAT-REPTEXT_DDIC = 'Personnel no'.
      APPEND WA_FIELD_CAT TO IT_FIELD_CAT.
      CLEAR WA_FIELD_CAT.
        wa_field_cat-tabname = 'PA0002'.
      WA_FIELD_CAT-FIELDNAME = 'BEGDA'.
      wa_field_cat-ref_tabname = 'IT_PA0002'.
      WA_FIELD_CAT-REPTEXT_DDIC = 'Start date'.
      APPEND WA_FIELD_CAT TO IT_FIELD_CAT.
      CLEAR WA_FIELD_CAT.
        wa_field_cat-tabname = 'PA0002'.
      WA_FIELD_CAT-FIELDNAME = 'ENDDA'.
      wa_field_cat-ref_tabname = 'IT_PA0002'.
      WA_FIELD_CAT-REPTEXT_DDIC = 'End date'.
      APPEND WA_FIELD_CAT TO IT_FIELD_CAT.
      CLEAR WA_FIELD_CAT.
        wa_field_cat-tabname = 'PA0002'.
      WA_FIELD_CAT-FIELDNAME = 'VORNA'.
      wa_field_cat-ref_tabname = 'IT_PA0002'.
      WA_FIELD_CAT-REPTEXT_DDIC = 'First name'.
      APPEND WA_FIELD_CAT TO IT_FIELD_CAT.
      CLEAR WA_FIELD_CAT.
        wa_field_cat-tabname = 'PA0002'.
      WA_FIELD_CAT-FIELDNAME = 'NACHN'.
        wa_field_cat-ref_tabname = 'IT_PA0002'.
      WA_FIELD_CAT-REPTEXT_DDIC = 'Last name'.
      APPEND WA_FIELD_CAT TO IT_FIELD_CAT.
      CLEAR WA_FIELD_CAT.
        wa_field_cat1-tabname = 'PA0002'.
      WA_FIELD_CAT1-FIELDNAME = 'PERNR'.
        wa_field_cat1-ref_tabname = 'IT_PA00021'.
      WA_FIELD_CAT1-REPTEXT_DDIC = 'Personnel no'.
      APPEND WA_FIELD_CAT1 TO IT_FIELD_CAT1.
      CLEAR WA_FIELD_CAT1.
        wa_field_cat1-tabname = 'PA0002'.
      WA_FIELD_CAT1-FIELDNAME = 'BEGDA'.
        wa_field_cat1-ref_tabname = 'IT_PA00021'.
      WA_FIELD_CAT1-REPTEXT_DDIC = 'Start date'.
      APPEND WA_FIELD_CAT1 TO IT_FIELD_CAT1.
      CLEAR WA_FIELD_CAT1.
        wa_field_cat1-tabname = 'PA0002'.
      WA_FIELD_CAT1-FIELDNAME = 'ENDDA'.
        wa_field_cat1-ref_tabname = 'IT_PA00021'.
      WA_FIELD_CAT1-REPTEXT_DDIC = 'End date'.
      APPEND WA_FIELD_CAT1 TO IT_FIELD_CAT1.
      CLEAR WA_FIELD_CAT1.
        wa_field_cat1-tabname = 'PA0002'.
      WA_FIELD_CAT1-FIELDNAME = 'VORNA'.
        wa_field_cat1-ref_tabname = 'IT_PA00021'.
      WA_FIELD_CAT1-REPTEXT_DDIC = 'First name'.
      APPEND WA_FIELD_CAT1 TO IT_FIELD_CAT1.
      CLEAR WA_FIELD_CAT.
        wa_field_cat1-tabname = 'PA0002'.
      WA_FIELD_CAT1-FIELDNAME = 'NACHN'.
        wa_field_cat1-ref_tabname = 'IT_PA00021'.
      WA_FIELD_CAT1-REPTEXT_DDIC = 'Last name'.
      APPEND WA_FIELD_CAT1 TO IT_FIELD_CAT1.
      CLEAR WA_FIELD_CAT1.
        wa_field_cat1-tabname = 'PA0008'.
        wa_field_cat1-fieldname = 'PERNR'.
          wa_field_cat-ref_tabname = 'IT_PA0008'.
        wa_field_cat1-REPTEXT_DDIC = 'personnelno'.
        APPEND wa_field_cat1 TO it_field_cat1.
       CLEAR WA_FIELD_CAT1.
        wa_field_cat1-tabname = 'PA0008'.
        wa_field_cat1-fieldname = 'BEGDA'.
          wa_field_cat-ref_tabname = 'IT_PA0008'.
        wa_field_cat1-REPTEXT_DDIC = 'begindate'.
        APPEND wa_field_cat1 TO it_field_cat1.
        CLEAR WA_FIELD_CAT1.
        wa_field_cat1-tabname = 'PA0008'.
        wa_field_cat1-fieldname = 'ENDDA'.
          wa_field_cat-ref_tabname = 'IT_PA0008'.
        wa_field_cat1-REPTEXT_DDIC = 'enddate'.
        APPEND wa_field_cat1 TO it_field_cat1.
        CLEAR WA_FIELD_CAT1.
        wa_field_cat1-tabname = 'PA0008'.
        wa_field_cat1-fieldname = 'ANSAL'.
          wa_field_cat-ref_tabname = 'IT_PA0008'.
        wa_field_cat1-REPTEXT_DDIC = 'annualsalary'.
        APPEND wa_field_cat1 TO it_field_cat1.
        CLEAR WA_FIELD_CAT1.
        wa_field_cat1-tabname = 'PA0008'.
        wa_field_cat1-fieldname = 'LGA01'.
          wa_field_cat-ref_tabname = 'IT_PA0008'.
        wa_field_cat1-REPTEXT_DDIC = 'wagetype'.
        APPEND wa_field_cat1 TO it_field_cat1.
        CLEAR WA_FIELD_CAT1.
        wa_field_cat1-tabname = 'PA0008'.
        wa_field_cat1-fieldname = 'BET01'.
          wa_field_cat-ref_tabname = 'IT_PA0008'.
        wa_field_cat1-REPTEXT_DDIC = 'Amount'.
        APPEND wa_field_cat1 TO it_field_cat1.
        CLEAR WA_FIELD_CAT1.
    ENDFORM.                    " build_field_cat
    *&      Form  display_data
          text
    FORM DISPLAY_DATA .
    it_layout-box_fieldname = 'CHECKBOX'.
    it_layout-EDIT = 'X'.
      CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
        EXPORTING
          I_CALLBACK_PROGRAM             = SY-REPID
          I_CALLBACK_PF_STATUS_SET       = 'PF_STATUS'
          I_CALLBACK_USER_COMMAND        = 'USER_COMMAND'
          IT_FIELDCAT                    = IT_FIELD_CAT
          IS_LAYOUT                      = IT_LAYOUT
          IT_EVENTS                      = IT_EVENTS
        TABLES
          T_OUTTAB           = IT_pa0002.
    ENDFORM.                    " display_data
    *&      Form  get_events
          text
    FORM GET_EVENTS .
      CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
       IMPORTING
         ET_EVENTS             = IT_EVENTS .
      READ TABLE IT_EVENTS INTO WA_EVENTS
                           WITH KEY NAME = SLIS_EV_TOP_OF_PAGE.
      IF SY-SUBRC = 0.
        WA_EVENTS-FORM = 'TOP_OF_PAGE'.
        MODIFY IT_EVENTS FROM WA_EVENTS INDEX SY-TABIX.
      ENDIF.
    ENDFORM.                    " get_events
    *&      Form  top_of_page
          text
    FORM TOP_OF_PAGE.
      WA_HEADER-TYP = 'H'.
      WA_HEADER-INFO = 'EMPLOYEE DATA'.
      APPEND WA_HEADER TO IT_HEADER.
      CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
        EXPORTING
          IT_LIST_COMMENTARY       = IT_HEADER
    ENDFORM. "top_of_page
    *&      Form  GUI_SET
    FORM GUI_SET USING RT_EXTAB TYPE SLIS_T_EXTAB .
      SET PF-STATUS 'DATA' .
    ENDFORM.                    "GUI_SET
    *&      Form  USER_COMMAND
    FORM USER_COMMAND USING R_UCOMM LIKE SY-UCOMM
                            R_SELFIELD TYPE SLIS_SELFIELD.
    DATA:V_PERNR LIKE PA0002-PERNR.
      CASE R_UCOMM.
        WHEN 'DET'.
    DATA: V_FLAG.
      clear : v_flag.
    LOOP AT IT_PA0002.
         if it_PA0002-checkbox =  'X'.
                   v_flag = 'X'.
              v_pernr = IT_PA0002-PERNR.
    SELECT  PERNR
            BEGDA
            ENDDA
            VORNA
            NACHN
            FROM PA0002
            INTO CORRESPONDING FIELDS OF TABLE IT_PA00021
            WHERE PERNR = V_PERNR.
    SORT IT_PA00021 BY PERNR.
    DELETE ADJACENT DUPLICATES FROM IT_PA00021 COMPARING PERNR.
    READ TABLE IT_PA00021 INDEX 1.
    SELECT PERNR
           BEGDA
           ENDDA
           ANSAL
           LGA01
           BET01
           FROM PA0008
           INTO TABLE IT_PA0008
           FOR ALL ENTRIES IN IT_PA00021
           WHERE PERNR = IT_PA00021-PERNR.
              if not it_PA0008[] Is initial.
              SORT IT_PA0008 BY PERNR.
             delete adjacent duplicates from  it_PA0008 comparing pernr.
              READ TABLE IT_PA0008 INDEX 1.
              endif.
            endif.
         enddo.
      it_layout1-group_change_edit = c.
      it_layout1-colwidth_optimize = c.
      it_layout1-zebra             = c.
      it_layout1-detail_popup      = c.
      it_layout1-get_selinfos      = c.
      it_layout-expand_fieldname  = 'EXPAND'.
      wa_keyinfo-header01 = 'PERNR'.
      wa_keyinfo-item01 = 'PERNR'.
    IF NOT V_FLAG IS INITIAL.
    CALL FUNCTION 'REUSE_ALV_HIERSEQ_LIST_DISPLAY'
      EXPORTING
       I_CALLBACK_PROGRAM             = SY-REPID
        IS_LAYOUT                      = IT_LAYOUT1
       IT_FIELDCAT                    =  IT_FIELD_CAT1
        I_TABNAME_HEADER               = 'PA0002'
        I_TABNAME_ITEM                 = 'PA0008'
        IS_KEYINFO                     = wa_keyinfo
        TABLES
        T_OUTTAB_HEADER                = IT_PA00021
        T_OUTTAB_ITEM                  = IT_PA0008.
    ENDIF.
    CLEAR: IT_PA00021,IT_PA0002,IT_PA0008.
    ENDLOOP.
    WHEN 'BACK'.
    EXIT.
    ENDCASE.
    ENDFORM.                    "USER_COMMAND
    reward points if useful,
    venkat.

  • Regarding ALV Header

    Hi Abapers,
    I am having one Problem regarding ALV Header on the report. Requirement is to get the data it into this order on ALV Header using Simple ABAP.
    Summary
    "Building No       Room No          Comments
    111                   AA                   Over Allocated.
    545                   XX                    Space Free
    787                   YY                   No Space
    I have Tried to enter it into the header table but the data is not coming correctly.
    Problem is It is coming in this way which is wrong..
    Summary
    "Building No  Room No  Comments
    111   AA   Over Allocated.
    545   XX    Space Free
    787   YY   No Space
    Can Any body solve my Problem to get the header information it into the below .
    Summary
    "Building No       Room No          Comments
    111                   AA                   Over Allocated.
    545                   XX                    Space Free
    787                   YY                   No Space

    Hi ,
    I have tried but couldn't succeded. Can you Please provide me the solution.

  • Regarding ALV display

    Hi ,
    I am making ALV Report. I am displaying 4  similar ALV grids in a screen.
    I would like to know how to give them some names so that they can be distinguished from each other by there name.
    Pls help .

    Hi Jaison,
    the easiest way to achive this, is to do the subtotaling with or without detailed lines by changing the ALV variant when in display.
    When you save the ALV layout(variant), in the popup you have a "Save with" tab. There is "Breakdwn to totals lvl:" entry. You ca select the level of sum displayed.
    After saving layout variant, you can pass it depending on  users input in structured parameter IS_VARIANT. Yo need to fill report field with report name and variant with layout name.
    Best is, to have a layout selection parameter. In Initialization, fill it using FM REUSE_ALV_VARIANT_DEFAULT_GET, AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_layout, use REUSE_ALV_VARIANT_F4.
    This makes your report far more flexible.
    Regards,
    Clemens

  • Regarding ALV REPORTS.

    Hi gurus,
    How to calculate page wise totals and print in  ALV grid diplay.
    Thanks,
    Jhon

    Hi Jhon,
      1. Add a field 'PAGENUM' put table and populate the same.
    2. Populate the sum field of fieldcat with 'X' for the totals to be   calculated.
    For ex for field 'PRICE' you want total then
    ls_fcat-do_sum = 'X'.
    3.  populate the sort table as below.
       ls_Sort-fieldname = 'PAGENUM'.
      ls_sort-tabname = 'IT_SFLIGHT'.
      ls_sort-up = 'X'.
       ls_sort-subtot = 'X'.
       append ls_sort to it_sort.
    Regards,
    Neelima

  • Calculation in ALV subtotal field

    Hi,
    I have a requirement to display the percentage field in the subtotal and total field in ALV display.
    ie, I have 3 fields, say, A, B and percent. (percent = A/B * 100)
    A              B                     percent
    10             10                     100
    5               10                     50
    15              20                     75
    Currently I am getting like below:-
    A              B                     percent
    10             10                     100
    5               10                     50
    15              20                     150
    Is there any way to display the proper percentage in subtotal field in ALV?
    Thanks in advance.
    Regards,
    Arun Mohan

    Hi,
    As you have mentioned in the question
    A B percent
    10 10 100
    5 10 50
    15 20 75
    Here you can divide the percentage field by the number of rows you have in the report. E.g here you have 2 rows, so sum is 150/2 = 75
    HTH
    Regards,
    Dhruv Shah

  • In ALV Subtotal line with Color

    Hi,
    I am working on ALV Grid and the output and all are ok.
    Only the problem is User expecting Subtotal in row should be in color.
    Can you pls advise me.
    Thank You,
    Sri.

    Hi,
    plz refer this link.
    Color the sub-total row in an alv-grid
    saptechnical/Tutorials/ALV/Subtotals/Define.htm
    sap.niraj.tripod.com/id64.html
    Regards,
    Pravin

  • Regarding ALV sort & summation

    Hi
       I want to do sort & summation in ALV programatically.
    Can anyone provide me the sample code.
    Ponits are assured for helpful answers.
    Regards,
    kumar

    Hi,
    chk thi:
    report  zkeerthi_alv2                           .
    tables: vbak.
    type-pools : slis.
    data: begin of it_vbak occurs 0,
          icon type icon-id,
          vbeln like vbak-vbeln,
          audat like vbak-audat,
          vbtyp like vbak-vbtyp,
          auart like vbak-auart,
          augru like vbak-augru,
          netwr like vbak-netwr,
          waerk like vbak-waerk,
          end of it_vbak.
    data: g_repid like sy-repid,
          wa_sort type slis_sortinfo_alv,
          it_sort type slis_t_sortinfo_alv,
          wa_layout type slis_layout_alv,
          it_fieldtab type slis_t_fieldcat_alv,
          wa_fieldcat type slis_fieldcat_alv.
    selection-screen begin of block b1 with frame.
    select-options:s_vbeln for vbak-vbeln,
                   s_vbtyp for vbak-vbtyp default 'C'.
    selection-screen end of block b1 .
    selection-screen begin of block b2 with frame.
    parameters: list radiobutton group rad1,
                grid radiobutton group rad1.
    selection-screen end of block b2.
    initialization.
      g_repid = sy-repid.
    start-of-selection.
      select vbeln
             audat
             vbtyp
             auart
             augru
             netwr
             waerk into corresponding fields of table it_vbak
             from vbak where audat > '01/01/2004' and
             netwr > 0 and
             vbeln in s_vbeln and
             vbtyp in s_vbtyp.
      loop at it_vbak.
        if it_vbak-netwr < 10000.
          it_vbak-icon = '@08@'.
        elseif it_vbak-netwr > 10000 and it_vbak-netwr < 100000.
          it_vbak-icon = '@09@'.
        elseif it_vbak-netwr > 100000.
          it_vbak-icon = '@0A@'.
        endif.
        modify it_vbak index sy-tabix.
      endloop.
    end-of-selection.
      perform sort_list.
      perform modify_fieldcat.
      perform layout_list.
    *&      Form  sort_list
          text
    -->  p1        text
    <--  p2        text
    form sort_list .
      clear wa_sort.
      wa_sort-fieldname = 'AUART'.
      wa_sort-spos = '1'.
      wa_sort-up = 'X'.
      append wa_sort to it_sort.
      clear wa_sort.
      wa_sort-fieldname = 'VBTYP'.
      wa_sort-spos = '2'.
      wa_sort-up = 'X'.
      append wa_sort to it_sort.
      clear wa_sort.
      wa_sort-fieldname = 'WAERK'.
      wa_sort-spos = '3'.
      wa_sort-up = 'X'.
      wa_sort-subtot = 'X'.
      append wa_sort to it_sort.
    endform.                    " sort_list
    *&      Form  layout_list
          text
    -->  p1        text
    <--  p2        text
    form layout_list .
      clear wa_layout.
      if list = 'X'.
        wa_layout-zebra = 'X'.
        wa_layout-window_titlebar = 'LIST DISPLAY'.
        wa_layout-subtotals_text = 'SUBTOTAL'.
        wa_layout-totals_text = 'TOTAL'.
        call function 'REUSE_ALV_LIST_DISPLAY'
         exporting
      I_INTERFACE_CHECK              = ' '
      I_BYPASSING_BUFFER             =
      I_BUFFER_ACTIVE                = ' '
           i_callback_program             = g_repid
      I_CALLBACK_PF_STATUS_SET       = ' '
      I_CALLBACK_USER_COMMAND        = ' '
      I_STRUCTURE_NAME               =
           is_layout                      = wa_layout
           it_fieldcat                    = it_fieldtab[]
      IT_EXCLUDING                   =
      IT_SPECIAL_GROUPS              =
           it_sort                        = it_sort[]
      IT_FILTER                      =
      IS_SEL_HIDE                    =
      I_DEFAULT                      = 'X'
      I_SAVE                         = ' '
      IS_VARIANT                     =
      IT_EVENTS                      =
      IT_EVENT_EXIT                  =
      IS_PRINT                       =
      IS_REPREP_ID                   =
      I_SCREEN_START_COLUMN          = 0
      I_SCREEN_START_LINE            = 0
      I_SCREEN_END_COLUMN            = 0
      I_SCREEN_END_LINE              = 0
    IMPORTING
      E_EXIT_CAUSED_BY_CALLER        =
      ES_EXIT_CAUSED_BY_USER         =
          tables
            t_outtab                       = it_vbak
    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.
      elseif grid = 'X'.
        wa_layout-zebra = 'X'.
        wa_layout-window_titlebar = 'GRID DISPLAY'.
        wa_layout-subtotals_text = 'SUBTOTAL'.
        wa_layout-totals_text = 'TOTAL'.
        call function 'REUSE_ALV_GRID_DISPLAY'
         exporting
      I_INTERFACE_CHECK                 = ' '
      I_BYPASSING_BUFFER                = ' '
      I_BUFFER_ACTIVE                   = ' '
           i_callback_program                =  g_repid
      I_CALLBACK_PF_STATUS_SET          = ' '
      I_CALLBACK_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
           it_fieldcat                       = it_fieldtab
      IT_EXCLUDING                      =
      IT_SPECIAL_GROUPS                 =
           it_sort                           = it_sort
      IT_FILTER                         =
      IS_SEL_HIDE                       =
      I_DEFAULT                         = 'X'
      I_SAVE                            = ' '
      IS_VARIANT                        =
      IT_EVENTS                         =
      IT_EVENT_EXIT                     =
      IS_PRINT                          =
      IS_REPREP_ID                      =
      I_SCREEN_START_COLUMN             = 0
      I_SCREEN_START_LINE               = 0
      I_SCREEN_END_COLUMN               = 0
      I_SCREEN_END_LINE                 = 0
      IT_ALV_GRAPHICS                   =
      IT_HYPERLINK                      =
      IT_ADD_FIELDCAT                   =
      IT_EXCEPT_QINFO                   =
      I_HTML_HEIGHT_TOP                 =
      I_HTML_HEIGHT_END                 =
    IMPORTING
      E_EXIT_CAUSED_BY_CALLER           =
      ES_EXIT_CAUSED_BY_USER            =
          tables
            t_outtab                          = it_vbak
    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.
      endif.
    endform.                    " layout_list
    *&      Form  modify_fieldcat
          text
    -->  p1        text
    <--  p2        text
    form modify_fieldcat .
      clear wa_fieldcat.
      wa_fieldcat-tabname   = 'IT_VBAK'.
      wa_fieldcat-fieldname = 'ICON'.
      wa_fieldcat-seltext_l  = 'LIGHTS'.
      wa_fieldcat-icon = 'X'.
    WA_FIELDCAT-ddictxt = 'l'.
      wa_fieldcat-col_pos = 1.
      wa_fieldcat-outputlen = 10.
      append wa_fieldcat to it_fieldtab.
      clear wa_fieldcat .
      wa_fieldcat-tabname   = 'IT_VBAK'.
      wa_fieldcat-fieldname = 'VBELN'.
      wa_fieldcat-seltext_l  = 'SALES DOCUMENT'.
    WA_FIELDCAT-ddictxt = 'l'.
      wa_fieldcat-col_pos = 2.
      wa_fieldcat-outputlen = 10.
      append wa_fieldcat to it_fieldtab.
      clear wa_fieldcat .
    when 'maktx'.
      wa_fieldcat-tabname   = 'IT_VBAK'.
      wa_fieldcat-fieldname = 'AUDAT'.
      wa_fieldcat-seltext_l  = 'DATE'.
    WA_FIELDCAT-ddictxt = 'l'.
      wa_fieldcat-col_pos = 3.
      wa_fieldcat-outputlen = 15.
      append wa_fieldcat to it_fieldtab.
      clear wa_fieldcat .
      wa_fieldcat-tabname   = 'IT_VBAK'.
      wa_fieldcat-fieldname = 'VBTYP'.
      wa_fieldcat-seltext_l  = 'SALES CATEGORY'.
      wa_fieldcat-col_pos = 4.
      wa_fieldcat-outputlen = 10.
      append wa_fieldcat to it_fieldtab.
      clear wa_fieldcat .
      wa_fieldcat-tabname   = 'IT_VBAK'.
      wa_fieldcat-fieldname = 'AUART'.
      wa_fieldcat-seltext_l  = 'SALES DOCUMENT TYPE'.
      wa_fieldcat-col_pos = 5.
      wa_fieldcat-outputlen = 10.
      append wa_fieldcat to it_fieldtab.
      clear wa_fieldcat .
      wa_fieldcat-tabname   = 'IT_VBAK'.
      wa_fieldcat-fieldname = 'AUGRU'.
      wa_fieldcat-seltext_l  = 'ORDER REASON'.
    WA_FIELDCAT-ddictxt = 'l'.
      wa_fieldcat-col_pos = 6.
      wa_fieldcat-outputlen = 10.
      append wa_fieldcat to it_fieldtab.
      clear wa_fieldcat .
      wa_fieldcat-tabname   = 'IT_VBAK'.
      wa_fieldcat-fieldname = 'NETWR'.
      wa_fieldcat-seltext_l  = 'QUANTITY'.
      wa_fieldcat-do_sum = 'X'.
    WA_FIELDCAT-ddictxt = 'l'.
      wa_fieldcat-col_pos = 7.
      wa_fieldcat-outputlen = 25.
      append wa_fieldcat to it_fieldtab.
      clear wa_fieldcat .
      wa_fieldcat-tabname   = 'IT_VBAK'.
      wa_fieldcat-fieldname = 'WAERK'.
      wa_fieldcat-seltext_l  = 'CURRENCY'.
    WA_FIELDCAT-ddictxt = 'l'.
      wa_fieldcat-col_pos = 8.
      wa_fieldcat-outputlen = 10.
      append wa_fieldcat to it_fieldtab.
      clear wa_fieldcat .
    endform.                    " modify_fieldcat
    regards,
    keerthi

  • Regarding alv field catalog!

    hi.  iam new to ALV. my query is,
    iam building the fieldcatalog manualy by populating the internal table fields individually and then appending the rows. This method is most time consuming.
    Can anyone suggest alternate method with an example? points will be rewarded.!!

    Hi Padamshree,
    you can use MACRO to build field catalog.
    like i used here for building and
    then call FM "'REUSE_ALV_GRID_DISPLAY' for ALV grid.
    DEFINE m_fieldcat.
        add 1 to ls_fieldcat-col_pos.
        ls_fieldcat-fieldname   = &1.
        ls_fieldcat-ref_tabname = 'BSIK'.
        ls_fieldcat-do_sum      = &2.
        ls_fieldcat-cfieldname  = &3.
        append ls_fieldcat to lt_fieldcat.
      END-OF-DEFINITION.
      DEFINE m_sort.
        add 1 to ls_sort-spos.
        ls_sort-fieldname = &1.
        ls_sort-up        = 'X'.
        ls_sort-subtot    = &2.
        append ls_sort to lt_sort.
      END-OF-DEFINITION.
      DATA:
        ls_fieldcat TYPE slis_fieldcat_alv,
        lt_fieldcat TYPE slis_t_fieldcat_alv,
        lt_sort     TYPE slis_t_sortinfo_alv,
        ls_sort     TYPE slis_sortinfo_alv,
        ls_layout   TYPE slis_layout_alv.
      m_fieldcat 'BUKRS' ''  ''.
      m_fieldcat 'LIFNR' ''  ''.
      m_fieldcat 'GJAHR' ''  ''.
      m_fieldcat 'BELNR' ''  ''.
      m_fieldcat 'HKONT' ''  ''.
      m_fieldcat 'WRBTR' ''  ''.
      m_fieldcat 'WAERS' ''  ''.
      m_fieldcat 'SHKZG' ''  ''.
      m_sort 'BUKRS' 'X'.
      m_sort 'LIFNR' 'X'.
      m_sort 'GJAHR' ''.
      m_sort 'BELNR' ''.
    m_sort 'BUDAT' ''.
      ls_layout-cell_merge = 'X'.
      CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
           EXPORTING
                is_layout   = ls_layout
                it_fieldcat = lt_fieldcat
                it_sort     = lt_sort
           TABLES
                t_outtab    = ITAB1.
    ENDFORM.                    " DISPLAY_DATA
    Regards,
    Sachin.

  • Regarding ALV subtotals

    Hi experts,
    I defined a Alv program ..called orders list .
    In the output i have <b>QUANTITY</b> field , Now i have to define a subtotal of QUANtity field, i.e <b>KWMENGE</b>. Plz let me know
    Regards,
    Reddy

    Hi experts,
    I defined a Alv program ..called orders list .
    In the output i have <b>QUANTITY</b> field , Now i have to define a subtotal of QUANtity field, i.e <b>KWMENGE</b>. Plz let me know
    Regards,
    Reddy

  • URGENT: - REGARDING ALV REPORT

    hi,
        i had made dis report in ALV and i want to display d heading format as follows:-
            NAME:- TEST PROGRAM
            date: - 21.05.2007
            time:- 1:30:23 am
    moreover i want to see the print perview of it but it is giving runtime error.
    plz help me in solving dis problem and he or she will be definately rewarded..
    *& Report  ZMFTEST5
    REPORT  ZMFTEST5 no standard page heading LINE-SIZE 310.
    TABLES : VBAK,ABAP,VBEP,VBKD,MARA,KNA1,MAKT.
    *Varriable declaration.
    TYPE-POOLS SLIS.
    DATA : POS TYPE I.
    DATA REPID LIKE SY-REPID.
    DATA : F1 TYPE SLIS_T_FIELDCAT_ALV,
    F2 TYPE SLIS_FIELDCAT_ALV,
    L_LAYOUT TYPE SLIS_LAYOUT_ALV.
    DATA L_POS TYPE I VALUE 1. "position of the column
    DATA GT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV.
    DATA: GT_EVENTS TYPE SLIS_T_EVENT,
    FS_EVENTCAT LIKE LINE OF GT_EVENTs.
    DATA : T_HEADING TYPE slis_t_listheader.
    INTERNAL TABLE FOR SALES ORDER *****************
    DATA : BEGIN OF ITSO OCCURS 0,
    VBELN LIKE VBAK-VBELN,
    ERDAT LIKE VBAK-ERDAT,
    BSTNK LIKE VBAK-BSTNK,
    KUNNR LIKE VBAK-KUNNR,
    MATNR LIKE VBAP-MATNR,
    POSNR LIKE VBAP-POSNR,
    WMENG LIKE VBEP-WMENG,
    NTGEW LIKE MARA-NTGEW,
    BRGEW LIKE MARA-BRGEW,
    GEWEI LIKE MARA-GEWEI,
    SPART LIKE VBAK-SPART,
    BMENG LIKE VBEP-BMENG,
    EDATU LIKE VBEP-EDATU,
    BSTKD LIKE VBKD-BSTKD,
    WERKS LIKE VBAP-WERKS,
    MEINS LIKE MARA-MEINS,
    KWMENG LIKE VBAP-KWMENG,
    KLMENG LIKE VBAP-KLMENG,
    BALQTY LIKE VBAP-KLMENG,
    SOGWT LIKE MARA-BRGEW,
    SONWT LIKE MARA-BRGEW,
    SINWT LIKE MARA-BRGEW,
    BALGWT LIKE MARA-BRGEW,
    BALNWT LIKE MARA-BRGEW,
    DISPNWT LIKE MARA-BRGEW,
    PARTYNAME LIKE KNA1-NAME1,
    ITEMDESC LIKE MAKT-MAKTX,
    STATUS TYPE C,
    END OF ITSO.
    DATA:B_QTY TYPE P LENGTH 7 DECIMALS 3.
    ***********PARAMETERS***************
    PARAMETERS : PLANT LIKE VBAP-WERKS OBLIGATORY.
    *********SELECTION SCREEN OPTIONS*********
    SELECT-OPTIONS : SO_ORD FOR VBAK-VBELN,
    SO_PARTY FOR VBAK-KUNNR,
    IT_M FOR MARA-MATNR,
    DIV FOR VBAK-SPART,
    SO_DATE FOR VBAK-ERDAT,
    S_DATE FOR VBEP-EDATU.
    START-OF-SELECTION.
    SELECT DISTINCT A~VBELN A~ERDAT A~BSTNK A~KUNNR B~SPART B~MATNR B~POSNR B~WERKS B~KWMENG B~KBMENG C~NTGEW C~BRGEW C~GEWEI D~WMENG D~BMENG D~EDATU D~VBELN
    FROM VBAK AS A INNER JOIN VBAP AS B ON B~VBELN = A~VBELN
    INNER JOIN MARA AS C ON C~MATNR = B~MATNR
    INNER JOIN VBEP AS D ON D~WMENG > 0 AND D~VBELN = A~VBELN AND D~POSNR = B~POSNR
    INTO CORRESPONDING FIELDS OF TABLE ITSO
    WHERE A~VBELN IN SO_ORD AND A~KUNNR IN SO_PARTY AND B~SPART IN DIV AND A~ERDAT IN SO_DATE AND D~EDATU IN S_DATE AND B~MATNR IN IT_M AND B~WERKS = PLANT.
    IF SY-SUBRC <> 0.
    MESSAGE E899(M3) WITH 'No records'.
    ENDIF.
    DATA : V_NETWT LIKE MARA-NTGEW,
           V_GRWT LIKE MARA-NTGEW,
           V_SOSTAT TYPE C.
    LOOP AT ITSO.
      if ITSO-bmeng = 0.
        V_SOSTAT = 'A'.
      ELSEIF ITSO-WMENG <> ITSO-BMENG.
        V_SOSTAT = 'B'.
      ELSE.
        V_SOSTAT = 'C'.
      ENDIF.
      IF ITSO-GEWEI = 'G'.
        V_NETWT = ITSO-NTGEW / 1000.
        V_GRWT = ITSO-BRGEW / 1000.
      ELSEIF ITSO-GEWEI = 'KG'.
        V_NETWT = ITSO-NTGEW.
        V_GRWT = ITSO-BRGEW.
      ELSEIF ITSO-GEWEI = 'TO'.
        V_NETWT = ITSO-NTGEW * 1000.
        V_GRWT = ITSO-BRGEW * 1000.
      ENDIF.
      ITSO-STATUS = V_SOSTAT.
      ITSO-SOGWT = V_GRWT * ITSO-WMENG / 1000.
      ITSO-SONWT = V_NETWT * ITSO-WMENG / 1000.
      ITSO-SINWT = V_GRWT * ITSO-BMENG / 1000.
      ITSO-BALGWT = V_GRWT * ( ITSO-WMENG - ITSO-BMENG )  / 1000.
      ITSO-BALNWT = V_NETWT * ( ITSO-WMENG - ITSO-BMENG )  / 1000.
      ITSO-DISPNWT = V_NETWT * ITSO-BMENG  / 1000.
      ITSO-BALQTY = ITSO-WMENG - ITSO-BMENG.
      SELECT SINGLE NAME1 FROM KNA1 INTO ITSO-PARTYNAME WHERE KUNNR = ITSO-KUNNR.
      SELECT SINGLE MAKTX FROM MAKT INTO ITSO-ITEMDESC WHERE MATNR = ITSO-MATNR.
      MODIFY ITSO.
    ENDLOOP.
    perform f_build_eventcat.
    PERFORM LAYOUT using t_heading.
    END-OF-SELECTION.
    FORM LAYOUT using t_heading  type slis_t_listheader.
    data : t_event    type slis_t_event.
    PERFORM FCAT USING 'WERKS'     'ITSO' '' 'PLANT '               'WERKS'     'VBAP' ''.
    PERFORM FCAT USING 'VBELN'     'ITSO' '' 'SO NO. '              'VBELN'     'VBAK' ''.
    PERFORM FCAT USING 'ERDAT'     'ITSO' '' 'S.O.DATE'             'ERDAT'     'VBAK' ''.
    PERFORM FCAT USING 'BSTNK'     'ITSO' '' 'P.O.N.O.'             'BSTNK'     'VBAK' ''.
    PERFORM FCAT USING 'KUNNR'     'ITSO' '' 'PARTY '               'KUNNR'     'VBAP' ''.
    PERFORM FCAT USING 'PARTYNAME' 'ITSO' '' 'PARTY DESCRIPTION'    'PARTYNAME' ''     ''.
    PERFORM FCAT USING 'ITEMDESC'  'ITSO' '' 'MATERIAL DESCRIPTION' 'ITEMDESC'  ''     ''.
    PERFORM FCAT USING 'MATNR'     'ITSO' '' 'MAT.NO. '             'MATNR'     'MARA' ''.
    PERFORM FCAT USING 'POSNR'     'ITSO' '' 'LINE.ITEM'            'POSNR'     'VBAP' ''.
    PERFORM FCAT USING 'WMENG'     'ITSO' '' 'S.O.QTY'              'WMENG'     'VBEP' '' .
    PERFORM FCAT USING 'EDATU'     'ITSO' '' 'SCH.DATE'             'EDATU'     'VBEP' ''.
    PERFORM FCAT USING 'SONWT'     'ITSO' '' 'S.O.NWT '             'P'         ''     ''.
    PERFORM FCAT USING 'SOGWT'     'ITSO' '' 'S.O.GWT '             'P'         ''     ''.
    PERFORM FCAT USING 'SPART'     'ITSO' '' 'DIV    '              'SPART'     'VBAP' ''.
    PERFORM FCAT USING 'BMENG'     'ITSO' '' 'DISP.QTY'             'BMENG'     'VBEP' ''.
    PERFORM FCAT USING 'DISPNWT'   'ITSO' '' 'DISP.NT.WT '          'P'         ''     ''.
    PERFORM FCAT USING 'BALQTY'    'ITSO' '' 'BAL.QTY.'             'P'         ''     ''.
    PERFORM FCAT USING 'BALNWT'    'ITSO' '' 'BAL.NT.WT '           'P'         ''     ''.
    PERFORM FCAT USING 'BALGWT'    'ITSO' '' 'BAL.GR.WT '           'P'         ''     ''.
    PERFORM FCAT USING 'STATUS'    'ITSO' '' 'STATUS'               'STATUS'    ''     ''.
    refresh t_event.
    *perform set_top_page_heading using t_heading t_event.
    REPID = SY-REPID.
    CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    EXPORTING
      I_INTERFACE_CHECK                 = ' '
      I_BYPASSING_BUFFER                =
      I_BUFFER_ACTIVE                   = ' '
       I_CALLBACK_PROGRAM                = REPID
      I_CALLBACK_PF_STATUS_SET          = ' '
      I_CALLBACK_USER_COMMAND           = ' '
       I_CALLBACK_TOP_OF_PAGE            = ' '
      I_CALLBACK
      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                         =
      IT_FIELDCAT                       = F1
      IT_EXCLUDING                      =
      IT_SPECIAL_GROUPS                 =
      IT_SORT                           =
      IT_FILTER                         =
      IS_SEL_HIDE                       =
      I_DEFAULT                         = 'X'
      I_SAVE                            = ' '
      IS_VARIANT                        =
      IT_EVENTS                         = GT_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
      IT_ALV_GRAPHICS                   =
      IT_ADD_FIELDCAT                   =
      IT_HYPERLINK                      =
      I_HTML_HEIGHT_TOP                 =
      I_HTML_HEIGHT_END                 =
      IT_EXCEPT_QINFO                   =
    IMPORTING
      E_EXIT_CAUSED_BY_CALLER           =
      ES_EXIT_CAUSED_BY_USER            =
    TABLES
       T_OUTTAB                          = ITSO
    EXCEPTIONS
      PROGRAM_ERROR                     = 1
      OTHERS                            = 2
    ENDFORM. " LAYOUT
    *& Form FCAT
    FORM FCAT USING P_FIELD P_TABLE P_SUM P_TEXT P_RFIELD P_RTABLE P_DISP.
    ADD 1 TO POS.
    F2-COL_POS = POS.
    F2-FIELDNAME = P_FIELD.
    F2-TABNAME = P_TABLE.
    F2-SELTEXT_L = P_TEXT.
    F2-REF_FIELDNAME = P_RFIELD.
    F2-REF_TABNAME = P_RTABLE.
    F2-DO_SUM = P_SUM.
    F2-NO_OUT = P_DISP.
    APPEND F2 TO F1.
    CLEAR F2.
    ENDFORM. " FCAT
    FORM F_BUILD_EVENTCAT .
    CLEAR: GT_EVENTS. REFRESH: GT_EVENTS.
    CLEAR: FS_EVENTCAT.
    FS_EVENTCAT-NAME = 'TOP_OF_PAGE'.
    FS_EVENTCAT-FORM = 'F_REPORT_HEADER_ALV'.
    APPEND FS_EVENTCAT TO GT_EVENTS.
    CLEAR: FS_EVENTCAT.
    FS_EVENTCAT-NAME = 'END_OF_LIST'.
    FS_EVENTCAT-FORM = 'F_WRITE_SUMMARY'.
    APPEND FS_EVENTCAT TO GT_EVENTS.
    ENDFORM.
    *FORM F_REPORT_HEADER_ALV.
    *CALL FUNCTION 'Z_HEAD_PRINT'
    EXPORTING
    WRITE: / TITLE1 = 'XYZ Limited'
    TITLE2 = 'Sales Order Report'
    TITLE3 = 'Created on '
    COLOR = 'X'.
    *ENDFORM.
    FORM F_WRITE_SUMMARY .
    write:/ 'Welcome to XYZ Limited'.
    write:/ 'This is a test program to display Report in ALV Format'.
    ENDFORM.
    *&      Form  set_top_page_heading
          text
         -->P_T_HEADING  text
    *form set_top_page_heading  using    t_heading
                                       t_events  type slis_t_event.
    *data: x_heading type slis_listheader,
         x_event   type line of slis_t_event.
    Report title
    clear t_heading[].
    clear x_heading.
    x_heading-typ = 'H'.
    x_heading-info = ''(001).
    append x_heading to t_heading.
    t_heading-info = 'TEST'.
    t_heading-typ = 'H'.
    Program name
    clear x_heading.
    x_heading-typ = 'S'.
    x_heading-key = 'Program: '.
    x_heading-info = sy-repid.
    append x_heading to t_heading.
    User who is running the report
    clear x_heading.
    x_heading-typ = 'S'.
    x_heading-key = 'User: '.
    x_heading-info = sy-uname.
    append x_heading to t_heading.
    Date of execution
    clear x_heading.
    x_heading-typ = 'S'.
    x_heading-key = 'Date: '.
    write sy-datum to x_heading-info.
    append x_heading to t_heading.
    Time of execution
    clear x_heading.
    x_heading-typ = 'S'.
    x_heading-key = 'Time: '.
    write sy-uzeit to x_heading-info.
    append x_heading to t_heading.
    Top of page event
    x_event-name = slis_ev_top_of_page.
    x_event-form = 'TOP_OF_PAGE'.
    append x_event to t_events.
    *endform.                    " set_top_page_heading

    Hi,
    i had change ur code just copy this and try,i hope it will work.
    REPORT ZMFTEST5 no standard page heading LINE-SIZE 310.
    TABLES : VBAK,ABAP,VBEP,VBKD,MARA,KNA1,MAKT.
    *Varriable declaration.
    TYPE-POOLS SLIS.
    DATA : POS TYPE I.
    DATA REPID LIKE SY-REPID.
    ****************CHANGES**************
    DATA : FDATE TYPE STRING,
           FTIME TYPE STRING,
           FNAME TYPE STRING.
    ****************CHANGES**************
    DATA : F1 TYPE SLIS_T_FIELDCAT_ALV,
    F2 TYPE SLIS_FIELDCAT_ALV,
    L_LAYOUT TYPE SLIS_LAYOUT_ALV.
    DATA L_POS TYPE I VALUE 1. "position of the column
    DATA GT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV.
    DATA: GT_EVENTS TYPE SLIS_T_EVENT,
    FS_EVENTCAT LIKE LINE OF GT_EVENTs.
    DATA : T_HEADING TYPE slis_t_listheader.
    INTERNAL TABLE FOR SALES ORDER *****************
    DATA : BEGIN OF ITSO OCCURS 0,
    VBELN LIKE VBAK-VBELN,
    ERDAT LIKE VBAK-ERDAT,
    BSTNK LIKE VBAK-BSTNK,
    KUNNR LIKE VBAK-KUNNR,
    MATNR LIKE VBAP-MATNR,
    POSNR LIKE VBAP-POSNR,
    WMENG LIKE VBEP-WMENG,
    NTGEW LIKE MARA-NTGEW,
    BRGEW LIKE MARA-BRGEW,
    GEWEI LIKE MARA-GEWEI,
    SPART LIKE VBAK-SPART,
    BMENG LIKE VBEP-BMENG,
    EDATU LIKE VBEP-EDATU,
    BSTKD LIKE VBKD-BSTKD,
    WERKS LIKE VBAP-WERKS,
    MEINS LIKE MARA-MEINS,
    KWMENG LIKE VBAP-KWMENG,
    KLMENG LIKE VBAP-KLMENG,
    BALQTY LIKE VBAP-KLMENG,
    SOGWT LIKE MARA-BRGEW,
    SONWT LIKE MARA-BRGEW,
    SINWT LIKE MARA-BRGEW,
    BALGWT LIKE MARA-BRGEW,
    BALNWT LIKE MARA-BRGEW,
    DISPNWT LIKE MARA-BRGEW,
    PARTYNAME LIKE KNA1-NAME1,
    ITEMDESC LIKE MAKT-MAKTX,
    STATUS TYPE C,
    END OF ITSO.
    DATA:B_QTY TYPE P LENGTH 7 DECIMALS 3.
    ***********PARAMETERS***************
    PARAMETERS : PLANT LIKE VBAP-WERKS OBLIGATORY.
    *********SELECTION SCREEN OPTIONS*********
    SELECT-OPTIONS : SO_ORD FOR VBAK-VBELN,
    SO_PARTY FOR VBAK-KUNNR,
    IT_M FOR MARA-MATNR,
    DIV FOR VBAK-SPART,
    SO_DATE FOR VBAK-ERDAT,
    S_DATE FOR VBEP-EDATU.
    START-OF-SELECTION.
    SELECT DISTINCT A~VBELN A~ERDAT A~BSTNK A~KUNNR B~SPART B~MATNR B~POSNR B~WERKS B~KWMENG B~KBMENG C~NTGEW C~BRGEW C~GEWEI D~WMENG D~BMENG D~EDATU D~VBELN
    FROM VBAK AS A INNER JOIN VBAP AS B ON B~VBELN = A~VBELN
    INNER JOIN MARA AS C ON C~MATNR = B~MATNR
    INNER JOIN VBEP AS D ON D~WMENG > 0 AND D~VBELN = A~VBELN AND D~POSNR = B~POSNR
    INTO CORRESPONDING FIELDS OF TABLE ITSO
    WHERE A~VBELN IN SO_ORD AND A~KUNNR IN SO_PARTY AND B~SPART IN DIV AND A~ERDAT IN SO_DATE AND D~EDATU IN S_DATE AND B~MATNR IN IT_M AND B~WERKS = PLANT.
    IF SY-SUBRC <> 0.
    MESSAGE E899(M3) WITH 'No records'.
    ENDIF.
    DATA : V_NETWT LIKE MARA-NTGEW,
    V_GRWT LIKE MARA-NTGEW,
    V_SOSTAT TYPE C.
    LOOP AT ITSO.
    if ITSO-bmeng = 0.
    V_SOSTAT = 'A'.
    ELSEIF ITSO-WMENG <> ITSO-BMENG.
    V_SOSTAT = 'B'.
    ELSE.
    V_SOSTAT = 'C'.
    ENDIF.
    IF ITSO-GEWEI = 'G'.
    V_NETWT = ITSO-NTGEW / 1000.
    V_GRWT = ITSO-BRGEW / 1000.
    ELSEIF ITSO-GEWEI = 'KG'.
    V_NETWT = ITSO-NTGEW.
    V_GRWT = ITSO-BRGEW.
    ELSEIF ITSO-GEWEI = 'TO'.
    V_NETWT = ITSO-NTGEW * 1000.
    V_GRWT = ITSO-BRGEW * 1000.
    ENDIF.
    ITSO-STATUS = V_SOSTAT.
    ITSO-SOGWT = V_GRWT * ITSO-WMENG / 1000.
    ITSO-SONWT = V_NETWT * ITSO-WMENG / 1000.
    ITSO-SINWT = V_GRWT * ITSO-BMENG / 1000.
    ITSO-BALGWT = V_GRWT * ( ITSO-WMENG - ITSO-BMENG ) / 1000.
    ITSO-BALNWT = V_NETWT * ( ITSO-WMENG - ITSO-BMENG ) / 1000.
    ITSO-DISPNWT = V_NETWT * ITSO-BMENG / 1000.
    ITSO-BALQTY = ITSO-WMENG - ITSO-BMENG.
    SELECT SINGLE NAME1 FROM KNA1 INTO ITSO-PARTYNAME WHERE KUNNR = ITSO-KUNNR.
    SELECT SINGLE MAKTX FROM MAKT INTO ITSO-ITEMDESC WHERE MATNR = ITSO-MATNR.
    MODIFY ITSO.
    ENDLOOP.
    perform f_build_eventcat.
    PERFORM LAYOUT using t_heading.
    END-OF-SELECTION.
    FORM LAYOUT using t_heading type slis_t_listheader.
    data : t_event type slis_t_event.
    PERFORM FCAT USING 'WERKS' 'ITSO' '' 'PLANT ' 'WERKS' 'VBAP' ''.
    PERFORM FCAT USING 'VBELN' 'ITSO' '' 'SO NO. ' 'VBELN' 'VBAK' ''.
    PERFORM FCAT USING 'ERDAT' 'ITSO' '' 'S.O.DATE' 'ERDAT' 'VBAK' ''.
    PERFORM FCAT USING 'BSTNK' 'ITSO' '' 'P.O.N.O.' 'BSTNK' 'VBAK' ''.
    PERFORM FCAT USING 'KUNNR' 'ITSO' '' 'PARTY ' 'KUNNR' 'VBAP' ''.
    PERFORM FCAT USING 'PARTYNAME' 'ITSO' '' 'PARTY DESCRIPTION' 'PARTYNAME' '' ''.
    PERFORM FCAT USING 'ITEMDESC' 'ITSO' '' 'MATERIAL DESCRIPTION' 'ITEMDESC' '' ''.
    PERFORM FCAT USING 'MATNR' 'ITSO' '' 'MAT.NO. ' 'MATNR' 'MARA' ''.
    PERFORM FCAT USING 'POSNR' 'ITSO' '' 'LINE.ITEM' 'POSNR' 'VBAP' ''.
    PERFORM FCAT USING 'WMENG' 'ITSO' '' 'S.O.QTY' 'WMENG' 'VBEP' '' .
    PERFORM FCAT USING 'EDATU' 'ITSO' '' 'SCH.DATE' 'EDATU' 'VBEP' ''.
    PERFORM FCAT USING 'SONWT' 'ITSO' '' 'S.O.NWT ' 'P' '' ''.
    PERFORM FCAT USING 'SOGWT' 'ITSO' '' 'S.O.GWT ' 'P' '' ''.
    PERFORM FCAT USING 'SPART' 'ITSO' '' 'DIV ' 'SPART' 'VBAP' ''.
    PERFORM FCAT USING 'BMENG' 'ITSO' '' 'DISP.QTY' 'BMENG' 'VBEP' ''.
    PERFORM FCAT USING 'DISPNWT' 'ITSO' '' 'DISP.NT.WT ' 'P' '' ''.
    PERFORM FCAT USING 'BALQTY' 'ITSO' '' 'BAL.QTY.' 'P' '' ''.
    PERFORM FCAT USING 'BALNWT' 'ITSO' '' 'BAL.NT.WT ' 'P' '' ''.
    PERFORM FCAT USING 'BALGWT' 'ITSO' '' 'BAL.GR.WT ' 'P' '' ''.
    PERFORM FCAT USING 'STATUS' 'ITSO' '' 'STATUS' 'STATUS' '' ''.
    refresh t_event.
    *perform set_top_page_heading using t_heading t_event.
    REPID = SY-REPID.
    CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    EXPORTING
    I_INTERFACE_CHECK = ' '
    I_BYPASSING_BUFFER =
    I_BUFFER_ACTIVE = ' '
    I_CALLBACK_PROGRAM = REPID
    I_CALLBACK_PF_STATUS_SET = ' '
    I_CALLBACK_USER_COMMAND = ' '
    I_CALLBACK_TOP_OF_PAGE = ' '
    I_CALLBACK
    I_CALLBACK_HTML_TOP_OF_PAGE = 'TOP'
    I_CALLBACK_HTML_END_OF_LIST = ' '
    I_STRUCTURE_NAME =
    I_BACKGROUND_ID = ' '
    I_GRID_TITLE =
    I_GRID_SETTINGS =
    IS_LAYOUT =
    IT_FIELDCAT = F1
    IT_EXCLUDING =
    IT_SPECIAL_GROUPS =
    IT_SORT =
    IT_FILTER =
    IS_SEL_HIDE =
    I_DEFAULT = 'X'
    I_SAVE = ' '
    IS_VARIANT =
    IT_EVENTS = GT_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
    IT_ALV_GRAPHICS =
    IT_ADD_FIELDCAT =
    IT_HYPERLINK =
    I_HTML_HEIGHT_TOP =
    I_HTML_HEIGHT_END =
    IT_EXCEPT_QINFO =
    IMPORTING
    E_EXIT_CAUSED_BY_CALLER =
    ES_EXIT_CAUSED_BY_USER =
    TABLES
    T_OUTTAB = ITSO
    EXCEPTIONS
    PROGRAM_ERROR = 1
    OTHERS = 2
    ENDFORM. " LAYOUT
    *& Form FCAT
    FORM FCAT USING P_FIELD P_TABLE P_SUM P_TEXT P_RFIELD P_RTABLE P_DISP.
    ADD 1 TO POS.
    F2-COL_POS = POS.
    F2-FIELDNAME = P_FIELD.
    F2-TABNAME = P_TABLE.
    F2-SELTEXT_L = P_TEXT.
    F2-REF_FIELDNAME = P_RFIELD.
    F2-REF_TABNAME = P_RTABLE.
    F2-DO_SUM = P_SUM.
    F2-NO_OUT = P_DISP.
    APPEND F2 TO F1.
    CLEAR F2.
    ENDFORM. " FCAT
    FORM F_BUILD_EVENTCAT .
    CLEAR: GT_EVENTS. REFRESH: GT_EVENTS.
    CLEAR: FS_EVENTCAT.
    FS_EVENTCAT-NAME = 'TOP_OF_PAGE'.
    FS_EVENTCAT-FORM = 'F_REPORT_HEADER_ALV'.
    APPEND FS_EVENTCAT TO GT_EVENTS.
    CLEAR: FS_EVENTCAT.
    FS_EVENTCAT-NAME = 'END_OF_LIST'.
    FS_EVENTCAT-FORM = 'F_WRITE_SUMMARY'.
    APPEND FS_EVENTCAT TO GT_EVENTS.
    ENDFORM.
    *FORM F_REPORT_HEADER_ALV.
    *CALL FUNCTION 'Z_HEAD_PRINT'
    EXPORTING
    WRITE: / TITLE1 = 'XYZ Limited'
    TITLE2 = 'Sales Order Report'
    TITLE3 = 'Created on '
    COLOR = 'X'.
    *ENDFORM.
    FORM F_WRITE_SUMMARY .
    write:/ 'Welcome to XYZ Limited'.
    write:/ 'This is a test program to display Report in ALV Format'.
    ENDFORM.
    FORM TOP.
      DATA: WT_HEADER TYPE SLIS_T_LISTHEADER,
            WA_HEADER TYPE SLIS_LISTHEADER.
    CONCATENATE 'DATE:-' SY-DATUM INTO FDATE.
    CONCATENATE 'TIME:-' SY-UZEIT INTO FTIME.
    FNAME = 'NAME:- TEST'.
      WA_HEADER-TYP = HEADER.
      WA_HEADER-INFO = FNAME.
      APPEND WA_HEADER TO WT_HEADER.
      CLEAR WA_HEADER.
      WA_HEADER-TYP = HEADER.
      WA_HEADER-INFO = FDATE.
      APPEND WA_HEADER TO WT_HEADER.
      CLEAR WA_HEADER.
      WA_HEADER-TYP = HEADER.
      WA_HEADER-INFO = FTIME.
      APPEND WA_HEADER TO WT_HEADER.
      CLEAR WA_HEADER.
    ENDFORM.                   
    *& Form set_top_page_heading
    text
    -->P_T_HEADING text
    *form set_top_page_heading using t_heading
    t_events type slis_t_event.
    *data: x_heading type slis_listheader,
    x_event type line of slis_t_event.
    Report title
    clear t_heading[].
    clear x_heading.
    x_heading-typ = 'H'.
    x_heading-info = ''(001).
    append x_heading to t_heading.
    t_heading-info = 'TEST'.
    t_heading-typ = 'H'.
    Program name
    clear x_heading.
    x_heading-typ = 'S'.
    x_heading-key = 'Program: '.
    x_heading-info = sy-repid.
    append x_heading to t_heading.
    User who is running the report
    clear x_heading.
    x_heading-typ = 'S'.
    x_heading-key = 'User: '.
    x_heading-info = sy-uname.
    append x_heading to t_heading.
    Date of execution
    clear x_heading.
    x_heading-typ = 'S'.
    x_heading-key = 'Date: '.
    write sy-datum to x_heading-info.
    append x_heading to t_heading.
    Time of execution
    clear x_heading.
    x_heading-typ = 'S'.
    x_heading-key = 'Time: '.
    write sy-uzeit to x_heading-info.
    append x_heading to t_heading.
    Top of page event
    x_event-name = slis_ev_top_of_page.
    x_event-form = 'TOP_OF_PAGE'.
    append x_event to t_events.
    *endform. " set_top_page_heading
    *please do reward points if helpful
    Thanks and Regards,
    S.N.Venkatesh

  • Issue regarding ALV report

    Hi all,
             I've created an ALV report which is having a editable checkbox box field and some more fields that are not editable.
    My requirement is that when i check any checkbox, some of the fields in that particular row should become editable.
    In table control it can be done easily but can it be done in ALV.
    Note: I have created the ALV through container as it was required.
    Thanks in Advance.
    Regards
    Dheeraj

    Hi,
    Basically you will have to first register the data change event after you display the grid as follows:-
        CALL METHOD y_lobj_grid->register_edit_event
          EXPORTING
            i_event_id = cl_gui_alv_grid=>MC_EVT_MODIFIED
          EXCEPTIONS
            error      = 1
            OTHERS     = 2.
    Here Y_LOBJ_GRID is my grid object of type CL_GUI_ALV_GRID.
    Then you will have to set a handler method for this.
       SET HANDLER y_obj_evt_handler->y_m_handle_cell_modified
        FOR Y_LOBJ_GRID.
    Here y_obj_evt_handler is a local class in your program and y_m_handle_cell_modified is the method of that class.
    In this method you can change the fields to make then editable or non editable.
    Regards,
    Ankur Parab

Maybe you are looking for