Issue with top of page event

Hi All,
     In my Report i am printing both interactive and alv grid display in same report.means i have one check box it is then report print as a alv format otherwise classical format.
    But here i have small problem  i am trying  print in alv format its automatically trigger the top of page event thatsway a blank screen is generated so please tell how to skip the Top of page event.
Regards,
Venkatesh

END-OF-SELECTION.
  SORT tab1 BY ebeln ebelp.
  DESCRIBE TABLE tab1 LINES tabln.
  IF tabln = 0.
    MESSAGE ID 'ME' TYPE 'I' NUMBER '260'.
    EXIT.
  ENDIF.
  SORT tab1 BY sortkey knttp ebeln ebelp.
if P_ALV = 'X'.
  LOOP AT tab1.
    IF tab1-knttp = '1'.
          gs_final-str = text-k01.
          gs_final-kont1 = tab1-kont1.
          gs_final-kont2 = tab1-kont2.
      ELSEIF tab1-knttp = '2'.
          gs_final-str = text-k02.
          gs_final-kont1 = tab1-kont1.
          gs_final-kont2 = tab1-kont2.
      ELSEIF tab1-knttp = '3'.
       gs_final-str = text-k03.
          gs_final-kont1 = tab1-kont1.
          gs_final-kont2 = tab1-kont2.
      ELSEIF tab1-knttp = '4'.
          gs_final-str = text-k04.
          gs_final-kont1 = tab1-kont1.
          gs_final-kont2 = tab1-kont2.
      ELSEIF tab1-knttp = '5'.
          gs_final-str = text-k05.
          gs_final-kont1 = tab1-kont1.
          gs_final-kont2 = tab1-kont2.
      ELSEIF tab1-knttp = '6'.
          gs_final-str = text-k04.
          gs_final-kont1 = tab1-kont1.
      ELSEIF tab1-knttp IS INITIAL.
        gs_final-str = 'Stock without Account Assignment'.
      ENDIF.
       gs_final-ebeln = tab1-ebeln.
       gs_final-lifnr = tab1-lifnr.
       gs_final-name1 = tab1-name1.
       gs_final-aedat = tab1-aedat.
       gs_final-udate = tab1-udate.
       gs_final-inco1 = tab1-inco1.
       gs_final-inco2 = tab1-inco2.
       gs_final-ebelp = tab1-ebelp.
       gs_final-matnr = tab1-matnr.
       gs_final-txz01 = tab1-txz01.
       gs_final-paedt = tab1-paedt.
       gs_final-eindt = tab1-eindt.
       gs_final-eindt1 = tab1-eindt1.
       gs_final-labnr = tab1-labnr.                  "NWC-29042005
       gs_final-budat = tab1-budat.
       gs_final-menge = tab1-menge.
       gs_final-wemng = tab1-wemng.
       gs_final-meins = tab1-meins.
       gs_final-vbeln = tab1-vbeln.
       gs_final-tddat = tab1-tddat.
     IF NOT tab1-vbeln IS INITIAL.
      FORMAT COLOR 4 INTENSIFIED OFF.
      WRITE:/3 wa_tab1-vbeln.
      READ TABLE lines INDEX 1.
      MOVE lines-tdline TO l_text.
      CLEAR lines.
      READ TABLE lines INDEX 2.
      CONCATENATE l_text lines-tdline INTO l_text SEPARATED BY ' '.
      FORMAT COLOR 5 INTENSIFIED OFF.
      gs_final-l_text = l_text.
      SKIP.                                  "NWC-16092003
    ENDAT.
    APPEND gs_final to gt_final.
  ENDLOOP.
  PERFORM maintain_fieldcatlog.
  PERFORM Display_data.
ELSE.
  LOOP AT tab1.
    MOVE tab1 TO wa_tab1.
    AT NEW kont1.
      RESERVE 5 LINES.
      FORMAT COLOR 3 INTENSIFIED.
      IF tab1-knttp = '1'.
        WRITE:/(20) text-k01, 20 ':  ', 22(30) tab1-kont1 NO-ZERO,
                                        60(74) tab1-kont2.
      ELSEIF tab1-knttp = '2'.
        WRITE:/(20) text-k02, 20 ':  ', 22(30) tab1-kont1 NO-ZERO,
                                        60(74) tab1-kont2.
      ELSEIF tab1-knttp = '3'.
        WRITE:/(20) text-k03, 20 ':  ', 22(30) tab1-kont1 NO-ZERO,
                                        60(74) tab1-kont2.
      ELSEIF tab1-knttp = '4'.
        WRITE:/(20) text-k04, 20 ':  ', 22(30) tab1-kont1 NO-ZERO,
                                        60(74) tab1-kont2.
      ELSEIF tab1-knttp = '5'.
        WRITE:/(20) text-k05, 20 ':  ', 22(30) tab1-kont1 NO-ZERO,
                                        60(74) tab1-kont2.
      ELSEIF tab1-knttp = '6'.
        WRITE:/(20) text-k04, 20 ':  ', 22(30) wa_tab1-kont1 NO-ZERO,
                60  text-k02, 75 ':  ', 77(57) wa_tab1-kont2 NO-ZERO.
      ELSEIF tab1-knttp IS INITIAL.
        WRITE:/ 'Stock without Account Assignment'.
      ENDIF.
      WRITE 170 ' '.
      FORMAT COLOR INTENSIFIED OFF.
    ENDAT.
    AT NEW ebeln.
      RESERVE 4 LINES.
      FORMAT COLOR 1 INTENSIFIED OFF.
      WRITE:/ wa_tab1-ebeln,
            11 '  ',
            13 wa_tab1-lifnr,
            23 wa_tab1-name1,
            60 wa_tab1-aedat NO-ZERO,
            73 wa_tab1-udate NO-ZERO,
            86 wa_tab1-inco1,
            91(37) wa_tab1-inco2,
           170 ' '.
    ENDAT.
    AT NEW ebelp.
      RESERVE 3 LINES.
      FORMAT COLOR 2 INTENSIFIED OFF.
      WRITE:/2 wa_tab1-ebelp,
             9 wa_tab1-matnr,
            30(40) wa_tab1-txz01,
            73(10) wa_tab1-paedt,
            84(10) wa_tab1-eindt,
            95(10) wa_tab1-eindt1 NO-ZERO,
            106(15) wa_tab1-labnr,                  "NWC-29042005
            122(10) wa_tab1-budat NO-ZERO,
            133(16) wa_tab1-menge NO-ZERO,
            150(16) wa_tab1-wemng NO-ZERO,
            167(3)  wa_tab1-meins,
            170 ' '.
    ENDAT.
    HIDE: tab1-ebeln, tab1-ebelp.
    I
      READ TABLE lines INDEX 1.
      MOVE lines-tdline TO l_text.
      CLEAR lines.
      READ TABLE lines INDEX 2.
      CONCATENATE l_text lines-tdline INTO l_text SEPARATED BY ' '.
      FORMAT COLOR 5 INTENSIFIED OFF.
      WRITE: /3(132) l_text,
              170 ' '.
      SKIP.                                  "NWC-16092003
    ENDAT.
  ENDLOOP.
ENDIF.
AT LINE-SELECTION.
  CHECK NOT tab1-ebeln IS INITIAL.
  SET PARAMETER ID 'BES' FIELD tab1-ebeln.
  CALL TRANSACTION 'ME23N' AND SKIP FIRST SCREEN.
  CLEAR tab1.
TOP-OF-PAGE.
if P_ALV ne 'X'.
  IF sy-pagno = 1.
    DETAIL.
    WRITE: /2 text-a01.
    RESERVE 1 LINES.
    SUMMARY.
    IF lifnr IS INITIAL.
      WRITE: /4 text-a02, 26 'All'.
    ELSE.
      LOOP AT lifnr WHERE sign = 'I'.
        IF lifnr-option = 'EQ'.
          WRITE : /4 text-a02, 26 lifnr-low.
        ELSE.
          WRITE: /4 text-a02, 26 'From', 32 lifnr-low,
                               44 'to', 48 lifnr-high.
        ENDIF.
      ENDLOOP.
    ENDIF.
    IF matnr IS INITIAL.
      WRITE: /4 text-a14, 26 'All'.
    ELSE.
      LOOP AT matnr WHERE sign = 'I'.
        IF matnr-option = 'EQ'.
          WRITE : /4 text-a14, 26 matnr-low.
        ELSE.
          WRITE: /4 text-a14, 26 'From', 32 matnr-low,
                               44 'to', 48 matnr-high.
        ENDIF.
      ENDLOOP.
    ENDIF.
    IF ebeln IS INITIAL.
      WRITE: /4 text-a03, 26 'All'.
    ELSE.
      LOOP AT ebeln WHERE sign = 'I'.
        IF ebeln-option = 'EQ'.
          WRITE : /4 text-a03, 26 ebeln-low.
        ELSE.
          WRITE: /4 text-a03, 26 'From', 32 ebeln-low,
                               44 'to', 48 ebeln-high.
        ENDIF.
      ENDLOOP.
    ENDIF.
    IF aedat IS INITIAL.
      WRITE: /4 text-a04, 26 'All'.
    ELSE.
      LOOP AT aedat WHERE sign = 'I'.
        IF aedat-option = 'EQ'.
          WRITE : /4 text-a04, 26 aedat-low.
        ELSE.
          WRITE: /4 text-a04, 26 'From', 32 aedat-low,
                               44 'to', 48 aedat-high.
        ENDIF.
      ENDLOOP.
    ENDIF.
    IF eindt IS INITIAL.
      WRITE: /4 text-a13, 26 'All'.
    ELSE.
      LOOP AT eindt WHERE sign = 'I'.
        IF eindt-option = 'EQ'.
          WRITE : /4 text-a13, 26 eindt-low.
        ELSE.
          WRITE: /4 text-a13, 26 'From', 32 eindt-low,
                               44 'to', 48 eindt-high.
        ENDIF.
      ENDLOOP.
    ENDIF.
    IF bednr IS INITIAL.
      WRITE: /4 text-a15, 26 'All'.
    ELSE.
      LOOP AT bednr WHERE sign = 'I'.
        IF bednr-option = 'EQ'.
          WRITE : /4 text-a15, 26 bednr-low.
        ELSE.
          WRITE: /4 text-a15, 26 'From', 32 bednr-low,
                               44 'to', 48 bednr-high.
        ENDIF.
      ENDLOOP.
    ENDIF.
    linno = sy-linno + 1.
    BACK.
    IF ekorg IS INITIAL.
      WRITE: /70 text-a11, 92 'All'.
    ELSE.
      LOOP AT ekorg WHERE sign = 'I'.
        IF ekorg-option = 'EQ'.
          WRITE : /70 text-a11, 92 ekorg-low.
        ELSE.
          WRITE: /70 text-a11, 92 'From', 98 ekorg-low,
                               104 'to', 108 ekorg-high.
        ENDIF.
      ENDLOOP.
    ENDIF.
    IF ekgrp IS INITIAL.
      WRITE: /70 text-a12, 92 'All'.
    ELSE.
      LOOP AT ekgrp WHERE sign = 'I'.
        IF ekgrp-option = 'EQ'.
          WRITE : /70 text-a12, 92 ekgrp-low.
        ELSE.
          WRITE: /70 text-a12, 92 'From', 98 ekgrp-low,
                               104 'to', 108 ekgrp-high.
        ENDIF.
      ENDLOOP.
    ENDIF.
    IF werks IS INITIAL.
      WRITE: /70 text-a05, 92 'All'.
    ELSE.
      LOOP AT werks WHERE sign = 'I'.
        IF werks-option = 'EQ'.
          WRITE : /70 text-a05, 92 werks-low.
        ELSE.
          WRITE: /70 text-a05, 92 'From', 98 werks-low,
                               104 'to', 108 werks-high.
        ENDIF.
      ENDLOOP.
    ENDIF.
    IF pspid IS INITIAL.
      WRITE: /70 text-a06, 92 'All'.
    ELSE.
      LOOP AT pspid WHERE sign = 'I'.
        WRITE:/70 text-a06, 92 pspid-low.
      ENDLOOP.
    ENDIF.
    IF pspnr1 IS INITIAL.
      WRITE: /70 text-a07, 92 'All'.
    ELSE.
      LOOP AT pspnr1 WHERE sign = 'I'.
        WRITE:/70 text-a07, 92 pspnr1-low.
      ENDLOOP.
    ENDIF.
    IF elikz EQ 'X'.
      WRITE: /70 text-a08, 92 'Open PO only'.
    ELSEIF elikz IS INITIAL.
      WRITE: /70 text-a08, 92 'All PO'.
    ENDIF.
    IF stock EQ 'X'.
      WRITE: ', Common Stock Items'.
    ELSEIF pspnr IS INITIAL.
      WRITE: ', All Stock'.
    ENDIF.
    IF sy-linno >= linno.
      linno = sy-linno + 1.
    ENDIF.
    SKIP TO LINE linno.
    ULINE.
ENDIF.
  FORMAT COLOR 1 INTENSIFIED OFF.
  WRITE:/ 'PO',
        12 'Vendor no.',
        25 'Company',
        60 'PO Crt dt',
        73 'Approved dt',
        86 'Incoterm',
       170 ' '.
  FORMAT COLOR 2 INTENSIFIED OFF.
  WRITE:/2 'Item',
         9 'Material',
        30 'Description',
        73 'Chged date',
        84 'Delv date',
        95 'OA date',
       106 'OA Number',                              "NWC-29042005
       122 'GR date',
       138 'Order Qty',
       158 'GR Qty',
       167 'UoM',
       170 ' '.
  FORMAT COLOR 4 INTENSIFIED OFF.
  WRITE:/2 'Ship notf #',
         15 'ETD.',
         26 'ETA',
         44 'Shipped Qty',
         57 'UoM',
        170 ' '.
  FORMAT COLOR 5 INTENSIFIED OFF.
  WRITE:/2 'Remarks',
       170 ' '.
  ULINE.
ENDIF.
form MAINTAIN_FIELDCATLOG .
REFRESH gt_fieldcat.
CLEAR gs_fieldcat.
PERFORM fill_fieldcatlog USING:
        '01' '01' 'STR' 'GT_FINAL' 'Account Assignment',
        '01' '02' 'KONT1' 'GT_FINAL' 'Kont1',
        '01' '03' 'KONT2' 'GT_FINAL' 'Kont2',
        '01' '04' 'EBELN' 'GT_FINAL' 'PO',
        '01' '05' 'LIFNR' 'GT_FINAL' 'Vendor no',
        '01' '06' 'NAME1' 'GT_FINAL' 'Company',
        '01' '07' 'AEDAT' 'GT_FINAL' 'PO Crt dt',
        '01' '08' 'UDATE' 'GT_FINAL' 'Approved dt' ,
        '01' '09' 'INCO1' 'GT_FINAL' 'Incoterm Code',
        '01' '10' 'INCO2' 'GT_FINAL' 'Incoterm Text',
        '01' '11' 'EBELP' 'GT_FINAL' 'Item',
        '01' '12' 'MATNR' 'GT_FINAL' 'Material',
        '01' '13' 'TXZ01' 'GT_FINAL' 'Description',
        '01' '14' 'PAEDT' 'GT_FINAL' 'Chged date',
        '01' '15' 'EINDT' 'GT_FINAL' 'Delv date',
        '01' '16' 'EINDT1' 'GT_FINAL' 'OA date',
        '01' '17' 'LABNR' 'GT_FINAL' 'OA Number',
        '01' '18' 'BUDAT' 'GT_FINAL' 'GR date',
        '01' '19' 'MENGE' 'GT_FINAL' 'Order Qty',
        '01' '20' 'WEMNG' 'GT_FINAL' 'GR Qty',
        '01' '21' 'MEINS' 'GT_FINAL' 'UoM',
        '01' '22' 'VBELN' 'GT_FINAL' 'Ship notf #',
        '01' '23' 'TDDAT' 'GT_FINAL' 'ETD',
        '01' '24' 'LFDAT' 'GT_FINAL' 'ETA',
        '01' '25' 'LFIMG' 'GT_FINAL' 'Shipped Qty',
        '01' '26' 'VRKME' 'GT_FINAL' 'UoM',
        '01' '27' 'L_TEXT' 'GT_FINAL' 'Remarks'.
endform.                    " MAINTAIN_FIELDCATLOG
form FILL_FIELDCATLOG  using   lv_rowpos    TYPE sycurow
                               lv_colpos    TYPE sycucol
                               lv_fldnam    TYPE fieldname
                               lv_tabnam    TYPE tabname
                               lv_seltext   TYPE dd03p-scrtext_l.
  gs_fieldcat-row_pos   = lv_rowpos.
  gs_fieldcat-col_pos   = lv_colpos.
  gs_fieldcat-fieldname = lv_fldnam.
  gs_fieldcat-tabname   = lv_tabnam.
  gs_fieldcat-seltext_l = lv_seltext.
  APPEND gs_fieldcat TO gt_fieldcat.
  CLEAR gs_fieldcat.
endform.                    " FILL_FIELDCATLOG
form DISPLAY_DATA .
DATA : lv_repid TYPE syrepid.
  lv_repid = sy-repid.
  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
   EXPORTING
     i_callback_program                = lv_repid
     it_fieldcat                       = gt_fieldcat
    TABLES
     t_outtab                          = gt_final
   EXCEPTIONS
     program_error                     = 1
     OTHERS                            = 2.
  IF sy-subrc <> 0.                              "#EC NEEDED
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
        WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  ENDIF.
endform.                    " DISPLAY_DATA

Similar Messages

  • Top-of-page event is not triggered

    Hi,
    I have a problem with top-of-page event. I have a report that shows the results in ALV grid display. But I use "REUSE_ALV_GRID_DISPLAY" not OO alv and there is only one screen with number 1000. On the menu toolbar there is a button that prints the data of ALV in a list using "write" statement. While writing , "top of page" event is not triggered. I expect that it is triggered at the first "write" statement but isn't. Is there anyone who knows the cause of this problem?
    The code is below.
    Thanks.
    Tables ...
    TABLES : mara , makt , ekko , ekpo , zzith_yukh , lfa1 , t001w  , lips ,
             eket .
    global variables
    DATA : BEGIN OF list OCCURS 1,
           zztahsk LIKE ekko-zztahsk ,
           zterm LIKE ekko-zterm ,
           txz01 LIKE ekpo-txz01 ,
           name1 LIKE lfa1-name1 ,
           menge LIKE ekpo-menge ,
           meins LIKE ekpo-meins ,
           fyukl LIKE zzith_yukh-zzdel_flag ,
                             " Yüklenmi&#351; miktar var göstergesi ...
           inco1 LIKE ekko-inco1 ,
           netwr LIKE ekpo-netwr ,
           waers LIKE ekko-waers ,
           bedat LIKE ekko-bedat ,
           zzontar LIKE ekko-zzontar ,
           slfdt LIKE eket-slfdt ,
           tname1 LIKE t001w-name1 ,
           banfn LIKE ekpo-banfn ,
           ebeln LIKE ekko-ebeln ,
           ebelp LIKE ekpo-ebelp ,
           lifnr LIKE ekko-lifnr ,
           mtart LIKE mara-mtart ,
           matkl LIKE mara-matkl ,
           ekgrp LIKE ekko-ekgrp ,
           matnr LIKE mara-matnr ,
           eknam  LIKE t024-eknam,
           bukrs  LIKE ekko-bukrs,
           zzbltur LIKE ekko-zzbltur,
           END   OF list         .
    DATA temp  LIKE list OCCURS 1 WITH HEADER LINE .
    DATA total LIKE list OCCURS 1 WITH HEADER LINE .
    ALV fields
    TYPE-POOLS : slis.
    DATA : gt_fields TYPE  slis_fieldcat_alv OCCURS 1 WITH HEADER LINE .
    DATA : gt_events TYPE  slis_t_event.
    DATA : gs_layout TYPE  slis_layout_alv.
    DATA : gv_title  TYPE lvc_title VALUE 'Günlük Depo Say&#305;m Miktarlar&#305;'.
    DATA : gt_top_of_page TYPE slis_t_listheader.
    selection screen
    SELECTION-SCREEN BEGIN OF BLOCK a WITH FRAME TITLE text-001 .
    *Sat&#305;nalma organizasyonu
    *Sat&#305;nalma grubu
    *Sat&#305;c&#305;
    *Tarih
    *SAS no
    *Dosya no
    SELECT-OPTIONS:
    s_bukrs FOR ekko-bukrs .
    SELECTION-SCREEN SKIP .
    SELECT-OPTIONS:
    s_ekorg FOR  ekko-ekorg OBLIGATORY MEMORY ID eko ,
    s_ekgrp FOR  ekko-ekgrp ,
    s_lifnr FOR  ekko-lifnr ,
    s_ebeln FOR  ekko-ebeln .
    SELECTION-SCREEN END  OF BLOCK a        .
    Define Katalog
    DEFINE fill_catalog .
      gt_fields-fieldname  = &1.
      gt_fields-tabname    = &2.
      gt_fields-seltext_l  = &3.
      gt_fields-seltext_m  = &3.
      gt_fields-seltext_s  = &3.
      gt_fields-checkbox   = &4.
      gt_fields-cfieldname = &5.
      gt_fields-ref_tabname  = &6.
      gt_fields-ref_fieldname  = &7.
      gt_fields-edit       = &8.
      append gt_fields .
      clear gt_fields .
    END-OF-DEFINITION.
    Modify Catalog
    DEFINE modify_catalog .
      gt_fields-seltext_m = &1 .
      modify gt_fields  transporting seltext_m where fieldname = &2 .
    END-OF-DEFINITION     .
    TOP-OF-PAGE.
      write 'top of page'.
      PERFORM top-of-page.
    start-of-selection
    START-OF-SELECTION .
      PERFORM get_data.
      PERFORM listele .
    *&      Form  listele .
    FORM listele .
      PERFORM get_events .
      PERFORM alv_list_header.
      PERFORM get_field_catalog USING 'LIST' .
      PERFORM display_alv    .
    ENDFORM.                    " listele.
    *&      Form  getfield_Catalog
    FORM get_field_catalog  USING p_tabname .
      fill_catalog :
    'EBELN'   'LIST' '' '' '' 'EKPO' 'EBELN'   '' ,
    'ZZTAHSK' 'LIST' '' '' '' 'EKKO' 'ZZTAHSK' '' ,
    'ZZBLTUR' 'LIST' '' '' '' 'EKKO' 'ZZBLTUR' '' ,
    'MATNR'   'LIST' '' '' '' 'MARA' 'MATNR'   '' ,
    'MATKL'   'LIST' '' '' '' 'MARA' 'MATKL'   '' ,
    'TXZ01'   'LIST' '' '' '' 'EKPO' 'TXZ01'   '' ,
    'NAME1'   'LIST' '' '' '' 'LFA1' 'NAME1'   '' ,
    'MENGE'   'LIST' '' '' '' 'EKPO' 'MENGE'   '' ,
    'MEINS'   'LIST' '' '' '' 'EKPO' 'MENGE'   '' ,
    'FYUKL'   'LIST' '' '' '' 'ZZITH_YUKH' 'ZZDEL_FLAG'   '' ,
    'INCO1'   'LIST' '' '' '' 'EKKO' 'INCO1'   '' ,
    'NETWR'   'LIST' '' '' '' 'EKPO' 'NETWR'   '' ,
    'WAERS'   'LIST' '' '' '' 'EKKO' 'WAERS'   '' ,
    'BEDAT'   'LIST' '' '' '' 'EKKO' 'BEDAT'   '' ,
    'ZZONTAR' 'LIST' '' '' '' 'EKKO' 'ZZONTAR' '' ,
    'SLFDT'   'LIST' '' '' '' 'EKET' 'SLFDT'   '' ,
    'TNAME1'  'LIST' '' '' '' 'T001W' 'NAME1'  '' ,
    'BANFN'   'LIST' '' '' '' 'EKPO' 'BANFN'   '' ,
    'EKNAM'   'LIST' '' '' '' 'T024' 'EKNAM'   '' .
      gt_fields-ddictxt = 'M' .
      MODIFY gt_fields  TRANSPORTING ddictxt WHERE fieldname NE space.
      modify_catalog 'Yükleme No'            'VBELN'   .
      modify_catalog 'Malzeme Türü'          'ZZBLTUR' .
      modify_catalog 'Malzeme Tan&#305;m&#305;'        'TXZ01'   .
      modify_catalog 'Sat&#305;c&#305;'                'NAME1'   .
      modify_catalog 'Teslim &#350;ekli'          'INCO1'   .
      modify_catalog 'Döviz Tutar&#305;'          'ZZTOPLAM'.
      modify_catalog 'Döviz Kodu'            'WAERS'   .
      modify_catalog 'Sipari&#351;i Veren'        'TNAME1'  .
      modify_catalog 'Tahmini &#304;thalat Trh.'  'SLFDT'   .
      modify_catalog '&#304;thalata &#304;ntikal Trh.' 'BEDAT'   .
      modify_catalog 'Dosya Onay Tarihi'     'ZZONTAR' .
      modify_catalog 'Talep No'              'BANFN'   .
      modify_catalog 'Dosya Sorumlusu'       'EKNAM'   .
      modify_catalog 'Yük.Göstergesi'        'FYUKL'   .
    ENDFORM.                    " getfield_Catalog
    *&      Form  display_alv
          text
    -->  p1        text
    <--  p2        text
    FORM display_alv .
      DATA lv_repid LIKE sy-repid .
      lv_repid = sy-repid .
      CLEAR gs_layout.
      gs_layout-zebra                 = 'X'.
      gs_layout-colwidth_optimize     = 'X'.
      CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
        EXPORTING
          i_callback_program       = lv_repid
          i_callback_pf_status_set = 'SET_PF_STATUS'
          i_callback_user_command  = 'USER_COMMAND'
          is_layout                = gs_layout
          it_fieldcat              = gt_fields[]
          it_events                = gt_events[]
        TABLES
          t_outtab                 = list[].
    ENDFORM.                    " display_alv
    FORM set_pf_status USING  iv_nodisplay TYPE slis_t_extab.
      SET PF-STATUS 'STANDARD' ."excluding iv_nodisplay.
    ENDFORM.                    " SET_PF_STATUS
    FORM user_command  USING iv_ucomm LIKE sy-ucomm
                      rs_selfield TYPE slis_selfield.
      CASE iv_ucomm .
        WHEN 'PRINT'  . PERFORM print_data .
      ENDCASE       .
    ENDFORM.                    "USER_COMMAND
    FORM get_events .
      DATA: ls_event TYPE slis_alv_event.
      CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
        EXPORTING
          i_list_type = 0
        IMPORTING
          et_events   = gt_events.
      READ TABLE gt_events WITH KEY name = slis_ev_top_of_page
                               INTO ls_event.
      IF sy-subrc = 0.
        MOVE 'ALV_TOP_OF_PAGE' TO ls_event-form.
        APPEND ls_event TO gt_events.
      ENDIF.
    ENDFORM.                    " getevents
    FORM alv_list_header .
      DATA: ls_line TYPE slis_listheader.
      CLEAR ls_line.
      ls_line-typ  = 'S'.
      ls_line-key  = 'Sat&#305;nalma Org.:'.
      CONCATENATE s_ekorg-low s_ekorg-high
      INTO ls_line-info SEPARATED BY '/'.
      APPEND ls_line TO gt_top_of_page.
      ls_line-key  = 'Sat&#305;nalma Grubu.:'.
      CONCATENATE s_ekgrp-low s_ekgrp-high
      INTO ls_line-info SEPARATED BY '/'.
      APPEND ls_line TO gt_top_of_page.
      ls_line-key  = 'Sat&#305;c&#305;.:'.
      CONCATENATE s_lifnr-low s_lifnr-high
      INTO ls_line-info SEPARATED BY '/'.
      APPEND ls_line TO gt_top_of_page.
      ls_line-key  = 'SAS No.:'.
      CONCATENATE s_ebeln-low s_ebeln-high
      INTO ls_line-info SEPARATED BY '/'.
      APPEND ls_line TO gt_top_of_page.
    ENDFORM.                    " alv_list_header
    FORM alv_top_of_page.
      CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
        EXPORTING
          it_list_commentary = gt_top_of_page.
    ENDFORM.                    "TOP_OF_PAGE
    FORM get_data .
      DATA : BEGIN OF tr ,
              menge LIKE eket-menge ,
              dabmg LIKE eket-dabmg ,
             END OF tr ,
             zzfiilytar LIKE zzith_yukh-zzfiilytar  .
    *- Get data ...
      SELECT *
        INTO CORRESPONDING FIELDS OF TABLE list
        FROM ekpo AS a
       INNER JOIN ekko AS b ON bebeln = aebeln
      WHERE b~ebeln IN s_ebeln AND
            b~bukrs IN s_bukrs AND
            b~loekz EQ space   AND
            b~lifnr IN s_lifnr AND
            b~ekorg IN s_ekorg AND
            b~ekgrp IN s_ekgrp AND
            a~loekz EQ space   AND
            a~elikz EQ space .
      LOOP AT list .
        CLEAR tr .
        SELECT menge dabmg
          INTO tr
          FROM eket
         WHERE ebeln = list-ebeln AND
               ebelp = list-ebelp.
          tr-menge = tr-menge - tr-dabmg .
        ENDSELECT.
        IF tr-menge LE 0 .
          DELETE list .
        ELSE .
          list-menge = tr-menge .
          IF tr-dabmg GT 0 .
            list-fyukl = '*' .
          ENDIF .
          SELECT SINGLE butxt INTO list-tname1 FROM t001
            WHERE bukrs = list-bukrs .
          SELECT SINGLE slfdt INTO list-slfdt FROM eket
          WHERE ebeln = list-ebeln AND
                ebelp = list-ebelp .
          SELECT SINGLE name1 INTO list-name1 FROM lfa1 WHERE lifnr = list-lifnr.
          SELECT SINGLE mtart matkl INTO (list-mtart,list-matkl)
          FROM mara WHERE matnr = list-matnr .
          SELECT SINGLE eknam INTO list-eknam FROM t024 WHERE ekgrp = list-ekgrp .
          MODIFY list .
        ENDIF .
      ENDLOOP      .
    ENDFORM.                    " get_data
    FORM print_data .
      LEAVE TO LIST-PROCESSING .
      NEW-PAGE NO-HEADING NO-TITLE LINE-SIZE 229 .
      SET PF-STATUS SPACE .
    PERFORM top-of-page .
    malzeme türü 1005 ler yazd&#305;r&#305;l&#305;r
      PERFORM yazdir_1005 .
    malzeme türü 1005 olmayanlar yazd&#305;r&#305;l&#305;r
      PERFORM yazdir_ne_1005 .
    Sat&#305;nalama gruplar&#305; bilgisi yazd&#305;r&#305;l&#305;r
      PERFORM yazdir_ekgrp .
    ENDFORM.                    " print_data
    FORM top-of-page .
      WRITE : 'ÜLKER GRUBU KONSOL&#304;DE' .
      WRITE AT 40 'Sevkiyat Bekleyen Malzemeler' COLOR COL_HEADING .
      WRITE :  180 sy-uname , sy-datum , sy-uzeit.
      NEW-LINE .
      ULINE 0(229) .
      WRITE :/2 'Rapor Kodu..............:' , (10) sy-tcode .
      WRITE :/2 'Sat&#305;nalma Organizasyonu.:' , (10) s_ekorg-low, '/', (10) s_ekorg-high .
      WRITE :/2 'Sat&#305;nalma Grubu.........:' , (10) s_ekgrp-low, '/', (10) s_ekgrp-high .
      WRITE :/2 'Sat&#305;c&#305;..................:' , (10) s_lifnr-low, '/', (10) s_lifnr-high .
      WRITE :/2 'Sat&#305;nalma Sipari&#351; No....:' , (10) s_ebeln-low, '/', (10) s_ebeln-high .
      NEW-LINE .
      ULINE 0(229) .
    Ba&#351;l&#305;klar yaz&#305;l&#305;r
      FORMAT COLOR COL_HEADING .
      WRITE :
      /(10) 'SAS NO.' CENTERED,
      (6)  'TAHS&#304;S'  CENTERED,
      (5)  'ÖDEME'   CENTERED,
      (5)  'Bel.T'   CENTERED,
      (25) 'MALZEME' CENTERED,
      (25) 'SATICI' CENTERED,
      (12) 'M&#304;KTAR' CENTERED,
      (3)  'BRM' CENTERED,
      (3)  'G' ,
      (7) 'TES.&#350;K.' CENTERED,
      (16) 'DÖV&#304;Z TUTARI' CENTERED,
      (3)  'DB.' CENTERED,
      (13) '&#304;TH.&#304;NTK.TRH.' CENTERED,
      (13) 'DOSYA ON.TRH.' CENTERED,
      (10) 'TAHM&#304;N.&#304;TH.TRH.' CENTERED,
      (20) 'S&#304;PAR&#304;&#350; VEREN' CENTERED,
      (10) 'TALEP NO.' CENTERED,
      (18) 'DOSYA SORUMLUSU' CENTERED.
      ULINE 0(229) .
      FORMAT RESET .
    ENDFORM.                    " top-of-page
    FORM yazdir_1005 .
      DATA ebeln LIKE list-ebeln  .
      SORT list BY zzbltur matnr .
      temp[] = list[] .
      DELETE temp WHERE mtart <> '1005' .
      LOOP AT list WHERE mtart = '1005' .
        CLEAR list-netwr .
        IF ebeln NE list-ebeln OR ebeln EQ space .
          REFRESH total . CLEAR total .
          ebeln = list-ebeln .
          LOOP AT temp WHERE ebeln = list-ebeln .
            list-netwr = list-netwr + temp-netwr  .
            CLEAR total .
            total-txz01 = '*** TKNK.MLZ. TOPLAMI ****' .
            total-meins = temp-meins .
            total-menge = temp-menge .
            COLLECT total .
          ENDLOOP                               .
          PERFORM write_list USING '1'  .
          LOOP AT total .
            PERFORM write_list USING '2'  .
          ENDLOOP .
          AT END OF zzbltur .
            ULINE 0(229) .
          ENDAT .
        ENDIF .
      ENDLOOP .
    ENDFORM.                    " yazdir_1005
    FORM write_list  USING    flag .
    flag 1 1005 için yazd&#305;rma
    flag 2 ise ara toplam
      IF flag = '1' .
       FORMAT COLOR COL_NORMAL .
        WRITE :
        /(10) list-ebeln ,
         (6)  list-zztahsk,
         (5)  list-zterm,
         (5)  list-zzbltur ,
         (25) list-txz01,
         (25) list-name1,
         (12) list-menge,
         (3)  list-meins,
         (3)  list-fyukl,
         (7)  list-inco1,
         (16) list-netwr,
         (3)  list-waers,
         (13) list-bedat,
         (13) list-zzontar,
         (10) list-slfdt ,
         (20) list-tname1,
         (10) list-banfn ,
         (18) list-eknam .
        FORMAT RESET .
      ELSEIF flag = '2'  .
       FORMAT COLOR COL_TOTAL .
        WRITE :
        /(10) '' ,
         (6)  '' ,
         (5)  '' ,
         (5)  '' ,
         (25) total-txz01,
         (25) '' ,
         (12) total-menge,
         (3)  total-meins,
         (3)  '' ,
         (7)  '' ,
         (16) '' ,
         (3)  '' ,
         (13) '' ,
         (13) '' ,
         (10) '' ,
         (20) '' ,
         (10) '' ,
         (18) '' .
        FORMAT RESET .
      ELSEIF flag = '3'  .
       FORMAT COLOR COL_TOTAL .
        WRITE :
       /(10) '' ,
        (6)  '' ,
        (5)  '' ,
        (5)  '' ,
        (25) total-txz01,
        (25) '' ,
        (12) total-menge,
        (3)  '' ,
        (3)  '' ,
        (7)  '' ,
        (16) total-netwr ,
        (3)  '' ,
        (13) '' ,
        (13) '' ,
        (10) '' ,
        (20) '' ,
        (10) '' ,
        (18) '' .
        FORMAT RESET .
      ENDIF .
    ENDFORM.                    " write_list
    FORM yazdir_ne_1005 .
      DATA matnr LIKE list-matnr .
      SORT list BY zzbltur matkl matnr .
      temp[] = list[] .
      DELETE temp WHERE mtart = '1005' .
      LOOP AT list WHERE mtart <> '1005' .
    Her yeni Malzeme için ara toplam yaz&#305;l&#305;r
        IF matnr NE list-matnr AND matnr NE space .
           REFRESH total . CLEAR total .
    Toplamlar al&#305;n&#305;r
          LOOP AT temp WHERE matnr = matnr .
            CLEAR total .
            total-netwr = temp-netwr  .
            total-menge = temp-menge  .
            total-txz01 =  '***     TOPLAM        ****' .
            COLLECT total .
          ENDLOOP                          .
          LOOP AT total .               .
            PERFORM write_list USING '3'  .
          ENDLOOP                       .
          ULINE 0(229) .
        ENDIF                      .
        PERFORM write_list USING '1'  .
        matnr = list-matnr            .
      ENDLOOP                           .
    Toplamlar al&#305;n&#305;r
      LOOP AT temp WHERE matnr = matnr .
        REFRESH total . CLEAR total .
        total-netwr = temp-netwr  .
        total-menge = temp-menge  .
        total-txz01 =  '***     TOPLAM        ****' .
        COLLECT total .
      ENDLOOP .
      LOOP AT total .
        PERFORM write_list USING '3'  .
      ENDLOOP       .
      ULINE 0(229)  .
    ENDFORM.                    " yazdir_ne_1005
    FORM yazdir_ekgrp .
      DATA: BEGIN OF total OCCURS 1 ,
            eknam LIKE list-eknam   ,
            zzbltur LIKE list-zzbltur ,
            sayi TYPE i ,
            END  OF  total          .
      DATA: BEGIN OF gtotal OCCURS 1 ,
            eknam LIKE list-eknam   ,
            zzbltur LIKE list-zzbltur ,
            sayi TYPE i ,
            END  OF  gtotal          .
      DATA: bltur LIKE zzith_bltur OCCURS 1 WITH HEADER LINE .
      DATA: len TYPE i  .
      DATA: wa LIKE total.
      REFRESH temp .
      SELECT * INTO TABLE bltur FROM zzith_bltur .
      CLEAR bltur .
      MOVE : 'ZZZZ'   TO bltur-zzbltur ,  " Sat&#305;r toplam&#305; için ...
             text-002 TO bltur-zztanim .
      APPEND bltur .
      CLEAR list   .
      SORT list BY eknam ebeln .
      DELETE ADJACENT DUPLICATES FROM list COMPARING eknam ebeln .
      LOOP AT list .
        CLEAR : total, gtotal .
        total-eknam = list-eknam .
        total-zzbltur = list-zzbltur .
        total-sayi  = 1 .
        COLLECT total   .
        total-eknam   = list-eknam .
        total-zzbltur = 'ZZZZ' .
        total-sayi  = 1 .
        COLLECT total   .
        gtotal-eknam = text-001 .
        gtotal-zzbltur = list-zzbltur .
        gtotal-sayi  = 1 .
        COLLECT gtotal   .
        gtotal-eknam = text-001 .
        gtotal-zzbltur = 'ZZZZ' .
        gtotal-sayi  = 1 .
        COLLECT gtotal   .
      ENDLOOP      .
      FORMAT COLOR COL_HEADING.
      ULINE AT /1(145).
      WRITE :/
      sy-vline , (15) 'Dosya Sorumlusu' , sy-vline .
      LOOP AT bltur .
        WRITE :(15) bltur-zztanim  , sy-vline .
      ENDLOOP  .
      ULINE AT /1(145).
      FORMAT RESET   .
      total-zzbltur = '0001' .
      MODIFY total TRANSPORTING zzbltur WHERE zzbltur = space .
      gtotal-zzbltur = '0001' .
      MODIFY gtotal TRANSPORTING zzbltur WHERE zzbltur = space .
      SORT total BY eknam .
      LOOP AT total  .
        AT NEW eknam .
          WRITE :/
          sy-vline , (15) total-eknam COLOR COL_HEADING ,
          sy-vline .
          LOOP AT bltur   .
            len = sy-tabix * 18 .
            len = len + 3 .
            CLEAR wa .
            READ TABLE total INTO wa WITH KEY zzbltur = bltur-zzbltur
                                              eknam   = total-eknam .
            WRITE AT len(15) wa-sayi NO-ZERO.
            WRITE sy-vline .
          ENDLOOP    .
        ENDAT      .
      ENDLOOP .
      LOOP AT gtotal  .
        AT NEW eknam .
          FORMAT COLOR COL_TOTAL .
          WRITE :/
          sy-vline , (15) gtotal-eknam ,
          sy-vline .
          LOOP AT bltur   .
            len = sy-tabix * 18 .
            len = len + 3 .
            CLEAR wa .
            READ TABLE gtotal INTO wa WITH KEY zzbltur = bltur-zzbltur
                                               eknam   = text-001    .
            WRITE AT len(15) wa-sayi NO-ZERO.
            WRITE sy-vline .
          ENDLOOP    .
        ENDAT      .
      ENDLOOP .
      ULINE AT /1(145).
      FORMAT RESET .
    ENDFORM.                    " yazdir_ekgrp

    Hi,
    In the function  use the top-of-page event as follows:
    CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
            EXPORTING
                    I_BYPASSING_BUFFER          =
                    I_BUFFER_ACTIVE             =
                    I_INTERFACE_CHECK           = ' '
                 I_CALLBACK_PROGRAM          = 'ZRPMSLM'
                    I_CALLBACK_PF_STATUS_SET    = ' '
                    I_CALLBACK_USER_COMMAND     = ' '
               <b>  I_CALLBACK_TOP_OF_PAGE      = 'TOP'</b>
    Define whatever to appear in top-of page in a subroutine named TOP.
    Hope this helps.
    Reward if helpful.
    Regards,
    Sipra

  • Problem in ALV top of page event

    Hi,
    Have created a report in ALV and used top of page event to display the header details, where i am doing some calculations and the value is appearing in top of page, but when i take print out (or see print preview), the top of page contents are not visible, is there any way so that i can print the top of page also.
    Thanks in Advance
    Santosh

    Hi this might help u.
    *&      Form  BUILD_LAYOUT
          Build layout for ALV grid report
    form build_layout.
      gd_layout-no_input          = 'X'.
      gd_layout-colwidth_optimize = 'X'.
      gd_layout-totals_text       = 'Totals'(201).
    gd_layout-totals_only        = 'X'.
    gd_layout-f2code            = 'DISP'.  "Sets fcode for when double
                                            "click(press f2)
    gd_layout-zebra             = 'X'.
    gd_layout-group_change_edit = 'X'.
    gd_layout-header_text       = 'helllllo'.
    endform.                    " BUILD_LAYOUT
    with regards,
    Hema Sundara.
    pls give points if u find it helpful.

  • ALV print issue in top-of-page

    Hi,
    I have developed a alv report using REUSE_ALV_GRID_DISPLAY function module. I am using top-of-page event in events table to output top-of-page details. It is showing output correctly on screen but when I do a print preview, it is showing only the grid details and no header info from top-of-page. Please advise what can be the issue? I might be missing some parameter somewhere..I am creating my field catalog manually w/o reference to a structure or internal table..can this be a issue..
    Thanks in advance

    Have you passed the program name in parameter I_CALLBACK_PROGRAM
    DATA:f_repid TYPE sy-repid.
    f_repid = sy-repid.
    CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
       EXPORTING
         i_callback_program      = f_repid  "  Program name

  • AVL report - top of page event code ?

    Hi,
    I want to print TOP-OF_PAGE event code in ALV reprot.
    START-OF-SELECTION.
    Perform ALV_REPORT.
    TOP-OF-PAGE.
    PERFORM top_of_page.
    in the ALV function module(form alv_report) I have given like this.
    but its not printing any thing in top of ALV report, but its leaving blank space.
    CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    EXPORTING
       I_CALLBACK_TOP_OF_PAGE            = 'TOP-OF-PAGE'
    Can any one tell me how to write the code?
    thanks.
    Kavitha.

    hi,
    use like this..
    *&      Form  get_event
          text
         -->P_IT_EVENT  text
    FORM get_event  USING    P_IT_EVENT    TYPE  slis_t_event.
       DATA : wa_event TYPE slis_alv_event.
       CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
        EXPORTING
          I_LIST_TYPE           = 0
        IMPORTING
          ET_EVENTS             = it_event.
          READ TABLE it_event WITH KEY name = slis_ev_top_of_page INTO wa_event.
           IF SY-SUBRC = 0.
           MOVE 'TOP_OF_PAGE' to wa_event-form.
           APPEND  wa_event to it_event.
       ENDIF.
    ENDFORM.                    " get_event
    *FORM FOR TOP_OF_PAGE(to assign form for the top-of-page event)
    FORM top_of_page.
      CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
        EXPORTING
          it_list_commentary = it_listheader.
    ENDFORM.                    "top_of_page
    *&      Form  fill_listheader
          text
         -->P_IT_LISTHEADER  text
    FORM fill_listheader  USING    P_IT_LISTHEADER  TYPE   slis_t_listheader.
    DATA : wa_listheader TYPE slis_listheader.
      CLEAR wa_listheader.
      wa_listheader-typ  = 'S'.
      wa_listheader-info ='S.T.O REPORT  '.
      APPEND wa_listheader TO it_listheader.
    ENDFORM.                    " fill_listheader
    *&      Form  call_alv_function
          text
    -->  p1        text
    <--  p2        text
    FORM call_alv_function .
    CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
       EXPORTING
        I_INTERFACE_CHECK              = ' '
        I_BYPASSING_BUFFER             =
        I_BUFFER_ACTIVE                = ' '
          I_CALLBACK_PROGRAM             = sy-repid
        I_CALLBACK_PF_STATUS_SET       = ' '
         I_CALLBACK_USER_COMMAND        = 'CALL_TCODE'
        I_STRUCTURE_NAME               =
         IS_LAYOUT                      = st_layout
         IT_FIELDCAT                    = it_fieldcat[]
        IT_EXCLUDING                   =
        IT_SPECIAL_GROUPS              =
         IT_SORT                        = lt_sort
        IT_FILTER                      =
        IS_SEL_HIDE                    =
        I_DEFAULT                      = 'X'
        I_SAVE                         = ' '
        IS_VARIANT                     =
         IT_EVENTS                      = it_event[]
        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_EKBE
      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.                    " call_alv_function
    Regards,

  • How to supress TOP-OF-PAGE event

    Hi,
    I am calling Report2 using SUBMIT..and RETURN from Report1 based on the selection criteria of Report1. When I exit from Report2, I want control to come back to the selection screen of Report1 but in my case the TOP_OF_PAGE event in Report1 is getting triggered when I exit from Report2. Is there any way to suppress the call to TOP-OF-PAGE event. I tried EXIT / RETURN / STOP but nth is working.
    Regards,
    Deepti

    Hii Deepti ,
    Top of page event is triggered with first WRITE statement or whenever new page is triggered.
    after submit statement
    use SET SCREEN 0.
    otherwsie check the selection screen number and use
    <b>SET SCREEN 'SCREEN NUMBER'.</b>
    use LEAVE PROGRAM.
    or
    LEAVE SCREEN.
    SET SCREEN.
    - by default in screen attributes you have defined what will be the next screen, but if you want to change the next screen dynamically we use the statement SET SCREEN.
    for ex: SET SCREEN 100.
    LEAVE SCREEN.
    - if you want to quit from the current screen, you use this option. so by default the next screen from attributes will be picked but if you have defined the next screen using SET SCREEN that it will overwrite.
    ex: SET SCREEN 100.
    LEAVE SCREEN.
    LEAVE TO SCREEN.
    - Leave to screen is combination of above two statements.
    OTHERWISE USE
    <b>LEAVE TO LIST-PROCESSING AND RETURN TO SCREEN <No>.
    SET PF-STATUS space.
    SUPPRESS DIALOG.</b>

  • Problem with top of page in interactive ALV

    Hello all,
    I am displaying 2 level ALV list.
    If List heading for the first page is 'First level' and for Second level list is 'Second level'.
    but when I come back to first level list from second level using back button first level list shows me top of page as 'Second page'.
    How to resolve this?
    I am using function module approach.
    Thanks and Regards,
    Anup

    Hello Clemens,
    I've only one top of page event. what I am doing is for the first list I am populating  a internal table (say A), slis_listheader with 'First level' and passing this to top-of-page event and outputting using REUSE_ALV_COMMENTARY_WRITE.display using REUSE_ALV_GRID_DISPLAY_LVC.
    for the second list (at user command 'Double click' ) I am populating another internal table (say B), and slis_listheader with 'Second level'. display using REUSE_ALV_GRID_DISPLAY_LVC.
    It works fine till this point. Problem is when i click back button on second level list I get 'Second level' again in top of page for the first level.
    where do i set ps_selfield-refresh = 'X'?
    Regards,
    Anup

  • OOP's ALV with top of page

    Hi,
    Does any one have code or pointers for creating a ALV with top of page using OOPS.
    I need to create a top of page with variables like :
    Report Name : ZABC
    User Name : Z234ASD
    Date : System Date
    Time : System Time
    Transaction : ZXYZ
    Thanks
    Khan.

    The code i used to implement top of page for OO ALV is as below but when you proceed to print out the report, it doesn't print out the header as the list output doesn't show the header.
    codeREPORT ZTEST1234_ALV_TOP MESSAGE-ID ZZ .
    DATA: G_GRID TYPE REF TO CL_GUI_ALV_GRID.
    DATA: L_VALID TYPE C,
    V_FLAG,
    V_DATA_CHANGE,
    V_ROW TYPE LVC_S_ROW,
    V_COLUMN TYPE LVC_S_COL,
    V_ROW_NUM TYPE LVC_S_ROID.
    "The Below Definitions Must.....
    DATA:
    Reference to document
    DG_DYNDOC_ID TYPE REF TO CL_DD_DOCUMENT,
    Reference to split container
    DG_SPLITTER TYPE REF TO CL_GUI_SPLITTER_CONTAINER,
    Reference to grid container
    DG_PARENT_GRID TYPE REF TO CL_GUI_CONTAINER,
    Reference to html container
    DG_HTML_CNTRL TYPE REF TO CL_GUI_HTML_VIEWER,
    Reference to html container
    DG_PARENT_HTML TYPE REF TO CL_GUI_CONTAINER.
    "up to here
    CLASS lcl_event_handler DEFINITION
    CLASS LCL_EVENT_HANDLER DEFINITION .
    PUBLIC SECTION .
    METHODS:
    **Hot spot Handler
    HANDLE_HOTSPOT_CLICK FOR EVENT HOTSPOT_CLICK OF CL_GUI_ALV_GRID
    IMPORTING E_ROW_ID E_COLUMN_ID ES_ROW_NO,
    **Double Click Handler
    HANDLE_DOUBLE_CLICK FOR EVENT DOUBLE_CLICK OF CL_GUI_ALV_GRID
    IMPORTING E_ROW E_COLUMN ES_ROW_NO,
    TOP_OF_PAGE FOR EVENT TOP_OF_PAGE "event handler
    OF CL_GUI_ALV_GRID
    IMPORTING E_DYNDOC_ID.
    ENDCLASS. "lcl_event_handler DEFINITION
    CLASS lcl_event_handler IMPLEMENTATION
    CLASS LCL_EVENT_HANDLER IMPLEMENTATION.
    *Handle Hotspot Click
    METHOD HANDLE_HOTSPOT_CLICK .
    CLEAR: V_ROW,V_COLUMN,V_ROW_NUM.
    V_ROW = E_ROW_ID.
    V_COLUMN = E_COLUMN_ID.
    V_ROW_NUM = ES_ROW_NO.
    MESSAGE I000 WITH V_ROW 'clicked'.
    ENDMETHOD. "lcl_event_handler
    *Handle Double Click
    METHOD HANDLE_DOUBLE_CLICK.
    ENDMETHOD. "handle_double_click
    METHOD TOP_OF_PAGE. "implementation
    Top-of-page event
    PERFORM EVENT_TOP_OF_PAGE USING DG_DYNDOC_ID.
    ENDMETHOD. "top_of_page
    ENDCLASS. "LCL_EVENT_HANDLER IMPLEMENTATION
    *& Global Definitions
    DATA: G_CUSTOM_CONTAINER TYPE REF TO CL_GUI_CUSTOM_CONTAINER,"Container1
    G_HANDLER TYPE REF TO LCL_EVENT_HANDLER. "handler
    DATA: OK_CODE LIKE SY-UCOMM,
    SAVE_OK LIKE SY-UCOMM,
    G_CONTAINER1 TYPE SCRFNAME VALUE 'TEST',
    GS_LAYOUT TYPE LVC_S_LAYO.
    Fieldcatalog for First and second Report
    DATA: IT_FIELDCAT TYPE LVC_T_FCAT,
    X_FIELDCAT TYPE LVC_S_FCAT,
    LS_VARI TYPE DISVARIANT.
    START-OF_SELECTION
    START-OF-SELECTION.
    DATA:BEGIN OF ITAB OCCURS 0,
    VBELN LIKE LIKP-VBELN,
    POSNR LIKE LIPS-POSNR,
    CELLCOLOR TYPE LVC_T_SCOL, "required for color
    DROP(10),
    END OF ITAB.
    SELECT VBELN
    POSNR
    FROM LIPS
    UP TO 20 ROWS
    INTO CORRESPONDING FIELDS OF TABLE ITAB.
    END-OF-SELECTION.
    IF NOT ITAB[] IS INITIAL.
    CALL SCREEN 100.
    ELSE.
    MESSAGE I002 WITH 'NO DATA FOR THE SELECTION'(004).
    ENDIF.
    *& Form CREATE_AND_INIT_ALV
    text
    FORM CREATE_AND_INIT_ALV .
    DATA: LT_EXCLUDE TYPE UI_FUNCTIONS.
    "attention.....from here
    "split your container here...into two parts
    "create the container
    CREATE OBJECT G_CUSTOM_CONTAINER
    EXPORTING CONTAINER_NAME = G_CONTAINER1.
    "this is for top of page
    Create TOP-Document
    CREATE OBJECT DG_DYNDOC_ID
    EXPORTING STYLE = 'ALV_GRID'.
    Create Splitter for custom_container
    CREATE OBJECT DG_SPLITTER
    EXPORTING PARENT = G_CUSTOM_CONTAINER
    ROWS = 2
    COLUMNS = 1.
    Split the custom_container to two containers and move the reference
    to receiving containers g_parent_html and g_parent_grid
    "i am allocating the space for grid and top of page
    CALL METHOD DG_SPLITTER->GET_CONTAINER
    EXPORTING
    ROW = 1
    COLUMN = 1
    RECEIVING
    CONTAINER = DG_PARENT_HTML.
    CALL METHOD DG_SPLITTER->GET_CONTAINER
    EXPORTING
    ROW = 2
    COLUMN = 1
    RECEIVING
    CONTAINER = DG_PARENT_GRID.
    "you can set the height of it
    Set height for g_parent_html
    CALL METHOD DG_SPLITTER->SET_ROW_HEIGHT
    EXPORTING
    ID = 1
    HEIGHT = 5.
    "from here as usual..you need to specify parent as splitter part
    "which we alloted for grid
    CREATE OBJECT G_GRID
    EXPORTING I_PARENT = DG_PARENT_GRID.
    Set a titlebar for the grid control
    CLEAR GS_LAYOUT.
    GS_LAYOUT-GRID_TITLE = TEXT-003.
    GS_LAYOUT-ZEBRA = SPACE.
    GS_LAYOUT-CWIDTH_OPT = 'X'.
    GS_LAYOUT-NO_ROWMARK = 'X'.
    GS_LAYOUT-CTAB_FNAME = 'CELLCOLOR'.
    CALL METHOD G_GRID->REGISTER_EDIT_EVENT
    EXPORTING
    I_EVENT_ID = CL_GUI_ALV_GRID=>MC_EVT_ENTER.
    CREATE OBJECT G_HANDLER.
    SET HANDLER G_HANDLER->HANDLE_DOUBLE_CLICK FOR G_GRID.
    SET HANDLER G_HANDLER->HANDLE_HOTSPOT_CLICK FOR G_GRID.
    SET HANDLER G_HANDLER->TOP_OF_PAGE FOR G_GRID.
    DATA: LS_CELLCOLOR TYPE LVC_S_SCOL. "required for color
    DATA: L_INDEX TYPE SY-TABIX.
    "Here i am changing the color of line 1,5,10...
    "so you can change the color of font conditionally
    LOOP AT ITAB.
    L_INDEX = SY-TABIX.
    IF L_INDEX = 1 OR L_INDEX = 5 OR L_INDEX = 10.
    LS_CELLCOLOR-FNAME = 'VBELN'.
    LS_CELLCOLOR-COLOR-COL = '6'.
    LS_CELLCOLOR-COLOR-INT = '0'.
    LS_CELLCOLOR-COLOR-INV = '1'.
    APPEND LS_CELLCOLOR TO ITAB-CELLCOLOR.
    MODIFY ITAB INDEX L_INDEX TRANSPORTING CELLCOLOR.
    LS_CELLCOLOR-FNAME = 'POSNR'.
    LS_CELLCOLOR-COLOR-COL = '6'.
    LS_CELLCOLOR-COLOR-INT = '0'.
    LS_CELLCOLOR-COLOR-INV = '1'.
    APPEND LS_CELLCOLOR TO ITAB-CELLCOLOR.
    MODIFY ITAB INDEX L_INDEX TRANSPORTING CELLCOLOR.
    ENDIF.
    ENDLOOP.
    setting focus for created grid control
    CALL METHOD CL_GUI_CONTROL=>SET_FOCUS
    EXPORTING
    CONTROL = G_GRID.
    Build fieldcat and set editable for date and reason code
    edit enabled. Assign a handle for the dropdown listbox.
    PERFORM BUILD_FIELDCAT.
    PERFORM SET_DRDN_TABLE.
    Optionally restrict generic functions to 'change only'.
    (The user shall not be able to add new lines).
    PERFORM EXCLUDE_TB_FUNCTIONS CHANGING LT_EXCLUDE.
    **Vaiant to save the layout
    LS_VARI-REPORT = SY-REPID.
    LS_VARI-HANDLE = SPACE.
    LS_VARI-LOG_GROUP = SPACE.
    LS_VARI-USERNAME = SPACE.
    LS_VARI-VARIANT = SPACE.
    LS_VARI-TEXT = SPACE.
    LS_VARI-DEPENDVARS = SPACE.
    **Calling the Method for ALV output
    CALL METHOD G_GRID->SET_TABLE_FOR_FIRST_DISPLAY
    EXPORTING
    IT_TOOLBAR_EXCLUDING = LT_EXCLUDE
    IS_VARIANT = LS_VARI
    IS_LAYOUT = GS_LAYOUT
    I_SAVE = 'A'
    CHANGING
    IT_FIELDCATALOG = IT_FIELDCAT
    IT_OUTTAB = ITAB[].
    "do these..{
    Initializing document
    CALL METHOD DG_DYNDOC_ID->INITIALIZE_DOCUMENT.
    Processing events
    CALL METHOD G_GRID->LIST_PROCESSING_EVENTS
    EXPORTING
    I_EVENT_NAME = 'TOP_OF_PAGE'
    I_DYNDOC_ID = DG_DYNDOC_ID.
    "end }
    Set editable cells to ready for input initially
    CALL METHOD G_GRID->SET_READY_FOR_INPUT
    EXPORTING
    I_READY_FOR_INPUT = 1.
    ENDFORM. "CREATE_AND_INIT_ALV
    *& Form EXCLUDE_TB_FUNCTIONS
    text
    -->PT_EXCLUDE text
    FORM EXCLUDE_TB_FUNCTIONS CHANGING PT_EXCLUDE TYPE UI_FUNCTIONS.
    Only allow to change data not to create new entries (exclude
    generic functions).
    DATA LS_EXCLUDE TYPE UI_FUNC.
    LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_LOC_COPY_ROW.
    APPEND LS_EXCLUDE TO PT_EXCLUDE.
    LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_LOC_DELETE_ROW.
    APPEND LS_EXCLUDE TO PT_EXCLUDE.
    LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_LOC_APPEND_ROW.
    APPEND LS_EXCLUDE TO PT_EXCLUDE.
    LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_LOC_INSERT_ROW.
    APPEND LS_EXCLUDE TO PT_EXCLUDE.
    LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_LOC_MOVE_ROW.
    APPEND LS_EXCLUDE TO PT_EXCLUDE.
    LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_LOC_COPY.
    APPEND LS_EXCLUDE TO PT_EXCLUDE.
    LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_LOC_CUT.
    APPEND LS_EXCLUDE TO PT_EXCLUDE.
    LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_LOC_PASTE.
    APPEND LS_EXCLUDE TO PT_EXCLUDE.
    LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_LOC_PASTE_NEW_ROW.
    APPEND LS_EXCLUDE TO PT_EXCLUDE.
    LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_LOC_UNDO.
    APPEND LS_EXCLUDE TO PT_EXCLUDE.
    ENDFORM. " EXCLUDE_TB_FUNCTIONS
    *& Form build_fieldcat
    Fieldcatalog
    FORM BUILD_FIELDCAT .
    DATA: L_POS TYPE I.
    L_POS = L_POS + 1.
    X_FIELDCAT-SCRTEXT_M = 'Delivery'(024).
    X_FIELDCAT-FIELDNAME = 'VBELN'.
    X_FIELDCAT-TABNAME = 'IT_FINAL'.
    X_FIELDCAT-COL_POS = L_POS.
    X_FIELDCAT-NO_ZERO = 'X'.
    X_FIELDCAT-OUTPUTLEN = '10'.
    X_FIELDCAT-HOTSPOT = 'X'.
    APPEND X_FIELDCAT TO IT_FIELDCAT.
    CLEAR X_FIELDCAT.
    L_POS = L_POS + 1.
    X_FIELDCAT-SCRTEXT_M = 'Item'(025).
    X_FIELDCAT-FIELDNAME = 'POSNR'.
    X_FIELDCAT-TABNAME = 'IT_FINAL'.
    X_FIELDCAT-COL_POS = L_POS.
    X_FIELDCAT-OUTPUTLEN = '5'.
    APPEND X_FIELDCAT TO IT_FIELDCAT.
    CLEAR X_FIELDCAT.
    L_POS = L_POS + 1.
    X_FIELDCAT-SCRTEXT_M = 'Drop'(025).
    X_FIELDCAT-FIELDNAME = 'DROP'.
    X_FIELDCAT-TABNAME = 'IT_FINAL'.
    X_FIELDCAT-COL_POS = L_POS.
    X_FIELDCAT-OUTPUTLEN = '5'.
    X_FIELDCAT-EDIT = 'X'.
    X_FIELDCAT-DRDN_HNDL = '1'.
    X_FIELDCAT-DRDN_ALIAS = 'X'.
    APPEND X_FIELDCAT TO IT_FIELDCAT.
    CLEAR X_FIELDCAT.
    ENDFORM. " build_fieldcat
    *& Module STATUS_0100 OUTPUT
    text
    MODULE STATUS_0100 OUTPUT.
    SET PF-STATUS 'MAIN100'.
    SET TITLEBAR 'MAIN100'.
    IF G_CUSTOM_CONTAINER IS INITIAL.
    **Initializing the grid and calling the fm to Display the O/P
    PERFORM CREATE_AND_INIT_ALV.
    ENDIF.
    ENDMODULE. " STATUS_0100 OUTPUT
    *& Module USER_COMMAND_0100 INPUT
    text
    MODULE USER_COMMAND_0100 INPUT.
    CASE SY-UCOMM.
    WHEN 'BACK'.
    LEAVE TO SCREEN 0.
    ENDCASE.
    ENDMODULE. " USER_COMMAND_0100 INPUT
    *& Form SET_DRDN_TABLE
    text
    FORM SET_DRDN_TABLE.
    DATA:LT_DRAL TYPE LVC_T_DRAL,
    LS_DRAL TYPE LVC_S_DRAL.
    LOOP AT ITAB .
    First listbox (handle '1').
    IF SY-INDEX = 1.
    LS_DRAL-HANDLE = '1'.
    LS_DRAL-VALUE = ' '.
    LS_DRAL-INT_VALUE = ' '.
    ELSE.
    LS_DRAL-HANDLE = '1'.
    LS_DRAL-VALUE = ITAB-POSNR.
    LS_DRAL-INT_VALUE = ITAB-POSNR.
    ENDIF.
    APPEND LS_DRAL TO LT_DRAL.
    ENDLOOP.
    **Setting the Drop down table for Reason Code
    CALL METHOD G_GRID->SET_DROP_DOWN_TABLE
    EXPORTING
    IT_DROP_DOWN_ALIAS = LT_DRAL.
    ENDFORM. " set_drdn_table
    *& Form EVENT_TOP_OF_PAGE
    text
    -->DG_DYNDOC_ID text
    FORM EVENT_TOP_OF_PAGE USING DG_DYNDOC_ID TYPE REF TO CL_DD_DOCUMENT.
    "this is more clear.....check it
    "first add text, then pass it to comentry write fm
    DATA : DL_TEXT(255) TYPE C. "Text
    Populating header to top-of-page
    CALL METHOD DG_DYNDOC_ID->ADD_TEXT
    EXPORTING
    TEXT = 'Test Report'
    SAP_STYLE = CL_DD_AREA=>HEADING.
    Add new-line
    CALL METHOD DG_DYNDOC_ID->NEW_LINE.
    CLEAR : DL_TEXT.
    Move program ID
    CONCATENATE 'Program Name :' SY-REPID
    INTO DL_TEXT SEPARATED BY SPACE.
    Add Program Name to Document
    PERFORM ADD_TEXT USING DL_TEXT.
    Add new-line
    CALL METHOD DG_DYNDOC_ID->NEW_LINE.
    CLEAR : DL_TEXT.
    Move User ID
    CONCATENATE 'User ID :' SY-UNAME INTO DL_TEXT SEPARATED BY SPACE
    Add User ID to Document
    PERFORM ADD_TEXT USING DL_TEXT.
    Add new-line
    CALL METHOD DG_DYNDOC_ID->NEW_LINE.
    CLEAR : DL_TEXT.
    Move Client
    CONCATENATE 'Client :' SY-MANDT INTO DL_TEXT SEPARATED BY SPACE.
    Add Client to Document
    PERFORM ADD_TEXT USING DL_TEXT.
    Add new-line
    CALL METHOD DG_DYNDOC_ID->NEW_LINE.
    CLEAR : DL_TEXT.
    Move date
    WRITE SY-DATUM TO DL_TEXT.
    CONCATENATE 'Date :' DL_TEXT INTO DL_TEXT SEPARATED BY SPACE.
    Add Date to Document
    PERFORM ADD_TEXT USING DL_TEXT.
    Add new-line
    CALL METHOD DG_DYNDOC_ID->NEW_LINE.
    CLEAR : DL_TEXT.
    Move time
    WRITE SY-UZEIT TO DL_TEXT.
    CONCATENATE 'Time :' DL_TEXT INTO DL_TEXT SEPARATED BY SPACE.
    Add Time to Document
    PERFORM ADD_TEXT USING DL_TEXT.
    Add new-line
    CALL METHOD DG_DYNDOC_ID->NEW_LINE.
    Populating data to html control
    PERFORM HTML.
    ENDFORM. " EVENT_TOP_OF_PAGE
    *& Form ADD_TEXT
    To add Text
    FORM ADD_TEXT USING P_TEXT TYPE SDYDO_TEXT_ELEMENT.
    Adding text
    CALL METHOD DG_DYNDOC_ID->ADD_TEXT
    EXPORTING
    TEXT = P_TEXT
    SAP_EMPHASIS = CL_DD_AREA=>HEADING.
    ENDFORM. " ADD_TEXT
    *& Form HTML
    text
    FORM HTML.
    DATA : DL_LENGTH TYPE I, " Length
    DL_BACKGROUND_ID TYPE SDYDO_KEY VALUE SPACE. " Background_id
    Creating html control
    IF DG_HTML_CNTRL IS INITIAL.
    CREATE OBJECT DG_HTML_CNTRL
    EXPORTING
    PARENT = DG_PARENT_HTML.
    ENDIF.
    Reuse_alv_grid_commentary_set
    CALL FUNCTION 'REUSE_ALV_GRID_COMMENTARY_SET'
    EXPORTING
    DOCUMENT = DG_DYNDOC_ID
    BOTTOM = SPACE
    IMPORTING
    LENGTH = DL_LENGTH.
    Get TOP->HTML_TABLE ready
    CALL METHOD DG_DYNDOC_ID->MERGE_DOCUMENT.
    Set wallpaper
    CALL METHOD DG_DYNDOC_ID->SET_DOCUMENT_BACKGROUND
    EXPORTING
    PICTURE_ID = DL_BACKGROUND_ID.
    Connect TOP document to HTML-Control
    DG_DYNDOC_ID->HTML_CONTROL = DG_HTML_CNTRL.
    Display TOP document
    CALL METHOD DG_DYNDOC_ID->DISPLAY_DOCUMENT
    EXPORTING
    REUSE_CONTROL = 'X'
    PARENT = DG_PARENT_HTML
    EXCEPTIONS
    HTML_DISPLAY_ERROR = 1.
    IF SY-SUBRC NE 0.
    MESSAGE I999 WITH 'Error in displaying top-of-page'(036).
    ENDIF.
    ENDFORM. " HTML
    [/code]

  • ALV Grid - Alignment Issues in TOP OF PAGE.

    Hi,
    We have a requirement to right align text in the report header.
    We are using REUSE ALV GRID DISPLAY, but using TOP-OF-PAGE event - the whole text is left aligned.
    I tried using Class CL_DD_DOCUMENT which solved the alignment issue, but I am not able to see the header while printing/downloading to excel.
    I want the header to be available while downloading/printing the list. Any suggestions?
    Thanks in advance,
    Harveen.

    Hi
    The ALV download only the grid into the file, so not the data you're writing in TOP_OF_PAGE event.
    If you need to do that, you should create an your own buttom to download the file.
    Max

  • To display the typ, key field,info in the top-of -page event in OO ALV

    Hi all,
    I need to display the heading and the other select option details in the top-of-page  event in ooalv.How can the key ,typ and the info of top of event  in alv grid be passed in ooalv grid display.
    Regards,
    Arpita

    Check the blog.
    TOP_OF_PAGE in ALV  Using CL_GUI_ALV_GRID
    Now you have to use the method ADD_TEXT to populate the Select options details.
    I hope you know the Function to get the selection details
    RS_REFRESH_FROM_SELECTOPTIONS,. it will give into a table. so use that table and populate the TOP_OF_PAGE uisng the class CL_DD_DOCUMENT.

  • How to capture the current info in the top-of-page event in Reuse block dis

    How to capture the current info in the top-of-page event in Reuse block dis

    Hi Geetha,
         If you don't have any information to pass the Heading Block, then why you are using this event ?
         please comment/ remove that TOP_OF_PAGE code. and use subtotal code in field catalog block.
          you can use below code for subtotal. 
          FORM field_catalog .
                    gs_fcat-do_sum = &2.
              fcat : 'WRBTR' '15' 'X' ' ' ' ' 'WRBTR' 'Amount',
           ENDFORM.
           Regards,
           Kunjan

  • Problem with top of page in alv

    Hi
    i gotta probelm with my alv report in this , in the first level i am displaying the purchase order header details,in the secod level i am displaying the purchase order item detials..
    I am getting the top of page contents properly in the header level. but when i double click it for item level i am getting the same top of page header instead of displaying the item level what i have mentioned..
    Can any one suggest me some ways to get the item level top of page contents??
    Here is my code.
    REPORT  ZZ_22038_22098_002 NO STANDARD PAGE HEADING LINE-SIZE 650
    MESSAGE-ID ZZ_9838                      .
    TYPE-POOLS: SLIS.
    *type declaration for values from ekko
    TYPES: BEGIN OF I_EKKO,
           EBELN LIKE EKKO-EBELN,
           AEDAT LIKE EKKO-AEDAT,
           BUKRS LIKE EKKO-BUKRS,
           BSART LIKE EKKO-BSART,
           LIFNR LIKE EKKO-LIFNR,
           END OF I_EKKO.
    DATA: IT_EKKO TYPE STANDARD TABLE OF I_EKKO INITIAL SIZE 0,
          WA_EKKO TYPE I_EKKO.
    *type declaration for values from ekpo
    TYPES: BEGIN OF I_EKPO,
           EBELN LIKE EKPO-EBELN,
           EBELP LIKE EKPO-EBELP,
           MATNR LIKE EKPO-MATNR,
           MENGE LIKE EKPO-MENGE,
           MEINS LIKE EKPO-MEINS,
           NETPR LIKE EKPO-NETPR,
           END OF I_EKPO.
    DATA: IT_EKPO TYPE STANDARD TABLE OF I_EKPO INITIAL SIZE 0,
          WA_EKPO TYPE I_EKPO .
    *variable for Report ID
    DATA: V_REPID LIKE SY-REPID .
    *declaration for fieldcatalog
    DATA: I_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV,
          WA_FIELDCAT TYPE SLIS_FIELDCAT_ALV.
    DATA: X_I_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV,
          X_WA_FIELDCAT TYPE SLIS_FIELDCAT_ALV.
    DATA: IT_LISTHEADER TYPE SLIS_T_LISTHEADER,
          X_IT_LISTHEADER TYPE SLIS_T_LISTHEADER.
    declaration for events table where user comand or set PF status will
    be defined
    DATA: V_EVENTS TYPE SLIS_T_EVENT,
          WA_EVENT TYPE SLIS_ALV_EVENT.
    declartion for layout
    DATA: ALV_LAYOUT TYPE SLIS_LAYOUT_ALV.
    declaration for variant(type of display we want)
    DATA: I_VARIANT TYPE DISVARIANT,
          I_VARIANT1 TYPE DISVARIANT,
          I_SAVE(1) TYPE C.
    *PARAMETERS : p_var TYPE disvariant-variant.
    *Title displayed when the alv list is displayed
    DATA:  I_TITLE_EKKO TYPE LVC_TITLE VALUE 'FIRST LIST DISPLAYED'.
    DATA:  I_TITLE_EKPO TYPE LVC_TITLE VALUE 'SECONDRY LIST DISPLAYED'.
    INITIALIZATION.
      V_REPID = SY-REPID.
      PERFORM BUILD_FIELDCATLOG.
      PERFORM EVENT_CALL.
      PERFORM POPULATE_EVENT.
    START-OF-SELECTION.
      PERFORM DATA_RETRIEVAL.
      PERFORM BUILD_LISTHEADER USING IT_LISTHEADER.
      PERFORM DISPLAY_ALV_REPORT.
    *&      Form  BUILD_FIELDCATLOG
          Fieldcatalog has all the field details from ekko
    FORM BUILD_FIELDCATLOG.
      WA_FIELDCAT-TABNAME = 'IT_EKKO'.
      WA_FIELDCAT-FIELDNAME = 'EBELN'.
      WA_FIELDCAT-SELTEXT_M = 'PO NO.'.
      APPEND WA_FIELDCAT TO I_FIELDCAT.
      CLEAR WA_FIELDCAT.
      WA_FIELDCAT-TABNAME = 'IT_EKKO'.
      WA_FIELDCAT-FIELDNAME = 'AEDAT'.
      WA_FIELDCAT-SELTEXT_M = 'DATE.'.
      APPEND WA_FIELDCAT TO I_FIELDCAT.
      CLEAR WA_FIELDCAT.
      WA_FIELDCAT-TABNAME = 'IT_EKKO'.
      WA_FIELDCAT-FIELDNAME = 'BUKRS'.
      WA_FIELDCAT-SELTEXT_M = 'COMPANY CODE'.
      APPEND WA_FIELDCAT TO I_FIELDCAT.
      CLEAR WA_FIELDCAT.
    WA_FIELDCAT-TABNAME = 'IT_EKKO'.
      WA_FIELDCAT-FIELDNAME = 'BUKRS'.
      WA_FIELDCAT-SELTEXT_M = 'DOCMENT TYPE'.
      APPEND WA_FIELDCAT TO I_FIELDCAT.
      CLEAR WA_FIELDCAT.
    WA_FIELDCAT-TABNAME = 'IT_EKKO'.
      WA_FIELDCAT-FIELDNAME = 'LIFNR'.
      WA_FIELDCAT-NO_OUT    = 'X'.
      WA_FIELDCAT-SELTEXT_M = 'VENDOR CODE'.
      APPEND WA_FIELDCAT TO I_FIELDCAT.
      CLEAR WA_FIELDCAT.
    ENDFORM.                    "BUILD_FIELDCATLOG
    *&      Form  EVENT_CALL
      we get all events - TOP OF PAGE or USER COMMAND in table v_events
    FORM EVENT_CALL.
      CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
       EXPORTING
         I_LIST_TYPE           = 0
       IMPORTING
         ET_EVENTS             = V_EVENTS
      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.                    "EVENT_CALL
    *&      Form  POPULATE_EVENT
         Events populated for TOP OF PAGE & USER COMAND
    FORM POPULATE_EVENT.
      READ TABLE V_EVENTS INTO WA_EVENT WITH KEY NAME = 'TOP_OF_PAGE'.
      IF SY-SUBRC EQ 0.
        WA_EVENT-FORM = 'TOP_OF_PAGE'.
        MODIFY V_EVENTS FROM WA_EVENT TRANSPORTING FORM WHERE NAME =
    WA_EVENT-FORM.
      ENDIF.
      READ TABLE V_EVENTS INTO WA_EVENT WITH KEY NAME = 'USER_COMMAND'.
      IF SY-SUBRC EQ 0.
        WA_EVENT-FORM = 'USER_COMMAND'.
        MODIFY V_EVENTS FROM WA_EVENT TRANSPORTING FORM WHERE NAME =
    WA_EVENT-NAME.
      ENDIF.
    ENDFORM.                    "POPULATE_EVENT
    *&      Form  data_retrieval
      retreiving values from the database table ekko
    FORM DATA_RETRIEVAL.
      SELECT EBELN AEDAT BUKRS BSART LIFNR FROM EKKO INTO TABLE IT_EKKO.
    ENDFORM.                    "data_retrieval
    *&      Form  bUild_listheader
          text
         -->I_LISTHEADEtext
    FORM BUILD_LISTHEADER USING IT_LISTHEADER TYPE SLIS_T_LISTHEADER.
      DATA HLINE TYPE SLIS_LISTHEADER.
      HLINE-INFO = 'Purchase Order Header Details'.
      HLINE-TYP = 'H'.
      APPEND HLINE TO IT_LISTHEADER.
    ENDFORM.                    "build_listheader
    *&      Form  display_alv_report
          text
    FORM DISPLAY_ALV_REPORT.
      V_REPID = SY-REPID.
      CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
       EXPORTING
         I_CALLBACK_PROGRAM                = V_REPID
         I_CALLBACK_USER_COMMAND           = 'USER_COMMAND'
         I_CALLBACK_TOP_OF_PAGE            = 'TOP_OF_PAGE'
         I_GRID_TITLE                      = I_TITLE_EKKO
         IT_FIELDCAT                       = I_FIELDCAT[]
         I_SAVE                            = 'A'
         IT_EVENTS                         = V_EVENTS
        TABLES
          T_OUTTAB                          = IT_EKKO
      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  TOP_OF_PAGE
          text
    FORM TOP_OF_PAGE.
      CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
        EXPORTING
          IT_LIST_COMMENTARY       = IT_LISTHEADER
    ENDFORM.                    "TOP_OF_PAGE
    *&      Form  USER_COMMAND
          text
         -->R_UCOMM    text
         -->,          text
         -->RS_SLEFIELDtext
    FORM USER_COMMAND USING R_UCOMM LIKE SY-UCOMM
    RS_SELFIELD TYPE SLIS_SELFIELD.
      CASE R_UCOMM.
        WHEN '&IC1'.
          READ TABLE IT_EKKO INTO WA_EKKO INDEX RS_SELFIELD-TABINDEX.
          PERFORM BUILD_FIELDCATLOG_EKPO.
          PERFORM EVENT_CALL_EKPO.
          PERFORM POPULATE_EVENT_EKPO.
          PERFORM DATA_RETRIEVAL_EKPO.
          PERFORM BUILD_LISTHEADER_EKPO USING X_IT_LISTHEADER.
          PERFORM DISPLAY_ALV_EKPO.
      ENDCASE.
    ENDFORM.                    "user_command
    *&      Form  BUILD_FIELDCATLOG_EKPO
          text
    FORM BUILD_FIELDCATLOG_EKPO.
      X_WA_FIELDCAT-TABNAME = 'IT_EKPO'.
      X_WA_FIELDCAT-FIELDNAME = 'EBELN'.
      X_WA_FIELDCAT-SELTEXT_M = 'PO NO.'.
      APPEND X_WA_FIELDCAT TO X_I_FIELDCAT.
      CLEAR X_WA_FIELDCAT.
      X_WA_FIELDCAT-TABNAME = 'IT_EKPO'.
      X_WA_FIELDCAT-FIELDNAME = 'EBELP'.
      X_WA_FIELDCAT-SELTEXT_M = 'LINE NO'.
      APPEND X_WA_FIELDCAT TO X_I_FIELDCAT.
      CLEAR X_WA_FIELDCAT.
      X_WA_FIELDCAT-TABNAME = 'I_EKPO'.
      X_WA_FIELDCAT-FIELDNAME = 'MATNR'.
      X_WA_FIELDCAT-SELTEXT_M = 'MATERIAL NO.'.
      APPEND X_WA_FIELDCAT TO X_I_FIELDCAT.
      CLEAR X_WA_FIELDCAT.
    X_WA_FIELDCAT-TABNAME = 'I_EKPO'.
      X_WA_FIELDCAT-FIELDNAME = 'MENGE'.
      X_WA_FIELDCAT-SELTEXT_M = 'QUANTITY'.
      APPEND X_WA_FIELDCAT TO X_I_FIELDCAT.
      CLEAR X_WA_FIELDCAT.
    X_WA_FIELDCAT-TABNAME = 'I_EKPO'.
      X_WA_FIELDCAT-FIELDNAME = 'MEINS'.
      X_WA_FIELDCAT-SELTEXT_M = 'UOM'.
      APPEND X_WA_FIELDCAT TO X_I_FIELDCAT.
      CLEAR X_WA_FIELDCAT.
    X_WA_FIELDCAT-TABNAME = 'I_EKPO'.
      X_WA_FIELDCAT-FIELDNAME = 'NETPR'.
      X_WA_FIELDCAT-SELTEXT_M = 'PRICE'.
      APPEND X_WA_FIELDCAT TO X_I_FIELDCAT.
      CLEAR X_WA_FIELDCAT.
    ENDFORM.                    "BUILD_FIELDCATLOG_EKPO
    *&      Form  event_call_ekpo
      we get all events - TOP OF PAGE or USER COMMAND in table v_events
    FORM EVENT_CALL_EKPO.
      CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
       EXPORTING
         I_LIST_TYPE           = 0
       IMPORTING
         ET_EVENTS             = V_EVENTS
      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.                    "event_call_ekpo
    *&      Form  POPULATE_EVENT
           Events populated for TOP OF PAGE & USER COMAND
    FORM POPULATE_EVENT_EKPO.
      READ TABLE V_EVENTS INTO WA_EVENT WITH KEY NAME = 'TOP_OF_PAGE'.
      IF SY-SUBRC EQ 0.
        WA_EVENT-FORM = 'TOP_OF_PAGE1'.
        MODIFY V_EVENTS FROM WA_EVENT TRANSPORTING FORM WHERE NAME =
    WA_EVENT-FORM.
      ENDIF.
      ENDFORM.                    "POPULATE_EVENT
    *&      Form  TOP_OF_PAGE
          text
    FORM F_TOP_OF_PAGE1.
      CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
        EXPORTING
          IT_LIST_COMMENTARY       = X_IT_LISTHEADER.
    ENDFORM.                    "TOP_OF_PAGE
    *&      Form  USER_COMMAND
          text
         -->R_UCOMM    text
         -->,          text
         -->RS_SLEFIELDtext
    *retreiving values from the database table ekko
    FORM DATA_RETRIEVAL_EKPO.
    SELECT EBELN EBELP MATNR MENGE MEINS NETPR FROM EKPO INTO TABLE IT_EKPO.
    ENDFORM.
    FORM BUILD_LISTHEADER_EKPO USING X_IT_LISTHEADER TYPE SLIS_T_LISTHEADER.
    DATA: HLINE1 TYPE SLIS_LISTHEADER.
    HLINE1-TYP = 'H'.
    HLINE1-INFO = 'Purchase Order Item details'.
    APPEND HLINE1 TO X_IT_LISTHEADER.
    ENDFORM.
    FORM DISPLAY_ALV_EKPO.
    CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    EXPORTING
       I_CALLBACK_PROGRAM                = V_REPID
       I_CALLBACK_TOP_OF_PAGE            = 'TOP_OF_PAGE'
       I_GRID_TITLE                      = I_TITLE_EKPO
       IT_FIELDCAT                       = X_I_FIELDCAT[]
       I_SAVE                            = 'A'
       IT_EVENTS                         = V_EVENTS
      TABLES
        T_OUTTAB                          = IT_EKPO
    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.

    When you are calling the FM 'REUSE_AVL_GRID_DISPLAY', to display item details, you are passing the form name for 'i_callback_top_of_page' as 'TOP_OF_PAGE' which is for header details. For item details you have created another form, 'F_TOP_OF_PAGE1' pass it to 'i_callback_top_of_page'  instead of  'TOP_OF_PAGE' .

  • How to display 3 alv with top-of-page using splitter container

    Hi,
    I want to display 3 different alv in a single container corresponding to the 3 check boxes on selection screen.
    i.e.
    If user selects 1 check box only one alv should be displayed, if 2 checkboxes selected by user 2 alv should be displayed and same for 3.
    I cannot use 3 different containers bcoz if second checkbox is not selected then that place remains blank. So I am using single container and using splitter container dividing it into the no of rows corresponding to the no. of checkboxs selected by user.
    Now I also want to display top-of-page for each alv. Please guide me how to achieve this.
    Thanks & regards,
    Harshada

    create with some IF_ELSE conditions as i have done below. in my case the same things are required. if error table is there only then it will be displayed, else only output will be displayed.
    * First Main Container
      CREATE OBJECT obj_main1
        EXPORTING
          container_name = 'CC_CONTAINER'
          style          = cl_gui_custom_container=>ws_maximizebox.
    * create top-document
      CREATE OBJECT obj_dyndoc_id
        EXPORTING
          style = 'ALV_GRID'.
      IF pr_view EQ c_x OR pr_stat EQ c_x.
    * First Splitter Container
        CREATE OBJECT obj_splitter1
          EXPORTING
            parent  = obj_main1
            rows    = 2
            columns = 1.
    * Place obj_parent_html in First row First column
    * for Top_of_page
        CALL METHOD obj_splitter1->get_container
          EXPORTING
            row       = 1
            column    = 1
          RECEIVING
            container = obj_parent_html.
    * Place obj_container1 in Second row First column
        CALL METHOD obj_splitter1->get_container
          EXPORTING
            row       = 2
            column    = 1
          RECEIVING
            container = obj_container1.
    * Set the height of Top of page
        CALL METHOD obj_splitter1->set_row_height
          EXPORTING
            id     = 1
            height = 24.
      ELSEIF pr_email EQ c_x.
    * First Splitter Container
        CREATE OBJECT obj_splitter1
          EXPORTING
            parent  = obj_main1
            rows    = 3
            columns = 1.
    * Place obj_parent_html in First row First column
    * for Top_of_page
        CALL METHOD obj_splitter1->get_container
          EXPORTING
            row       = 1
            column    = 1
          RECEIVING
            container = obj_parent_html.
    * Place obj_container1 in First row First column
        CALL METHOD obj_splitter1->get_container
          EXPORTING
            row       = 2
            column    = 1
          RECEIVING
            container = obj_container1.
    * Place obj_container2 in Second row First column
        CALL METHOD obj_splitter1->get_container
          EXPORTING
            row       = 3
            column    = 1
          RECEIVING
            container = obj_container2.
    * Set the height of Top of page
        CALL METHOD obj_splitter1->set_row_height
          EXPORTING
            id     = 1
            height = 24.
      ENDIF.
    Please note there is no need to create a hEADER in the container, but create it for the 1st table only which is always displayed
    ags.
    Edited by: ags on Nov 4, 2009 4:49 PM
    Edited by: ags on Nov 4, 2009 4:50 PM

  • ALV output download to excel with top of page

    Hi,
    i want to download ALV grid output to excel sheet including the top of page. i am using the icon in application tool bar. but only data's are download to excel sheet. i cannot download the top of page. with out write coding in program can we download it. if yes pls explain.
    thanks.

    I'm sorry but I can't find FM with DOWNLOAD_EXCEL_*.
    I want to know more detail thing.
    plz. give answer to me anytime.
    I'm waiting..
    Edited by: Kwang Seop Kim on Sep 26, 2008 6:57 AM

  • Reg: Download alv grid data with top of page into excel sheet

    Hi All,
    I have a selection screen with radio button for download .
    If that radio button was selected then the data will download into excel sheet (like if we execute normal ALV grid display from there we can download top-of-page and body as it is).
    AOO : 2009P               
    Fiscal year : 2009               
    Posting period : 00               
    Local Currency : USD               
    CO Area Currency :               
    Accounting standard:               
    Sector : 23               
    BB code     Period Value LC     Periodic Quantity
    AHDKGKAJ   200                         0

    Did not get your question

Maybe you are looking for

  • PO print preview displays incorrect setting in decimal places

    Dear Experts Please help me on the following condition. I have a problem in print preview of a PO. It displays the incorrect setting for decimal place in currency. It shows USD 1.404,00 whereby the amount should be USD 1,404.00 This only happens to a

  • "Unable to find Pdf Resource files"

    I am getting an error message on start up in Windows XP after a recent update. On start up I get the mesaage "Unable to find Pdf Resource files" C:\Documents and Settings\......\Adobe\Adobe PDF\Settings\*.Joboptions Do you want to run the installer i

  • Problem in parsing HTML tag

    Hello, I want to parse the text in div ..like :<div id="title">Action Result</div> My code is : public void handleSimpleTag(HTML.Tag t, MutableAttributeSet a, int pos){ if (t == HTML.Tag.DIV){   String page_title = (String)a.getAttribute(HTML.Attribu

  • Z10 and BBM just not working!!!

    I have just recieved a Z10 that I am trialling for my company (currently we have 200 iPhones 4's)  and first impression is that its awesome! BUT I cannot use BBM whats so ever! I put my old BB ID in from when we had BB Storm 2 years ago but all I get

  • How do i implement this logic in a Single SQL?

    Hi Friends! I’m having some problem. Hope you can share your thoughts with me. Let’s come to the problem I’m having following recordset S_id     t_nbr     d_id     a_dtm               b_dtm               c_dtm               create_tmstmp