Sunday, April 20, 2014

EXAMPLE ALV

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
*&---------------------------------------------------------------------*
*& Report  ZTEST_ALV
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*

REPORT  ztest_alv.
DATA : t_ekko TYPE TABLE OF ekko,
       x_ekko TYPE ekko.
*ALV Data declaration
*--------------------------------------------------------------------*
DATA: t_fieldcatalog TYPE slis_t_fieldcat_alv WITH HEADER LINE,
      d_tab_group TYPE slis_t_sp_group_alv,
      x_layout TYPE slis_layout_alv,
      d_repid LIKE sy-repid,
      t_events TYPE slis_t_event,
      x_prntparams TYPE slis_print_alv,
      t_sort TYPE slis_t_sortinfo_alv,
      t_alv_isort TYPE slis_t_sortinfo_alv WITH HEADER LINE,
      t_alv_extab TYPE slis_t_extab WITH HEADER LINE.
*--------------------------------------------------------------------*


START-OF-SELECTION.
  SELECT * FROM ekko INTO TABLE t_ekko
    UP TO 50 ROWS.

  PERFORM f_alv.
*&---------------------------------------------------------------------*
*&      Form  F_ALV
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM f_alv .
  REFRESH t_fieldcatalog.

  PERFORM f_build_fieldcatalog.
  PERFORM f_build_layout.
  PERFORM f_build_events.
  PERFORM f_display_alv_report.

  REFRESH : t_ekko.
ENDFORM.                    " F_ALV
*&---------------------------------------------------------------------*
*&      Form  F_BUILD_FIELDCATALOG
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM f_build_fieldcatalog .
  PERFORM f_sub_fill_alv_field_catalog  USING:
     '01' '01' 'BUKRS'           'T_EKKO' 'R' 'Company Code'                       '' '' '' '' 'X',
     '01' '02' 'BSART'           'T_EKKO' 'L' 'PO Type'                            '' '' '' '' 'X',
     '01' '03' 'LOEKZ'           'T_EKKO' 'R' 'Delete'                             '' '' '' '' '',
     '01' '04' 'LIFNR'           'T_EKKO' 'R' 'Vendor'                             '' '' '' '' '',
     '01' '05' 'BSTYP'           'T_EKKO' 'R' 'Account'                            '' '' '' '' ''.
ENDFORM.                    " F_BUILD_FIELDCATALOG
*&---------------------------------------------------------------------*
*&      Form  F_BUILD_LAYOUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM f_build_layout .
  x_layout-colwidth_optimize = 'X'.
  x_layout-zebra = 'X'.
*  x_layout-info_fieldname = 'LINE_COLOR'.
  x_layout-box_tabname    = 'T_EKKO'.
ENDFORM.                    " F_BUILD_LAYOUT
*&---------------------------------------------------------------------*
*&      Form  F_BUILD_EVENTS
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM f_build_events .
  DATA: lx_events TYPE slis_alv_event.
  REFRESH t_events.

  CONSTANTS: c_formname_subtotal_text TYPE slis_formname
  VALUE 'F_SUBTOTAL_TEXT'.

  CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
    EXPORTING
      i_list_type     = 0
    IMPORTING
      et_events       = t_events[]
    EXCEPTIONS
      list_type_wrong = 1
      OTHERS          = 2.

  LOOP AT t_events INTO lx_events.
    CASE lx_events-name.
      WHEN slis_ev_top_of_page.
        MOVE 'F_TOP_OF_PAGE' TO lx_events-form.
      WHEN slis_ev_pf_status_set.
        MOVE 'F_PF_STATUS_SET' TO lx_events-form.
    ENDCASE.
    MODIFY t_events FROM lx_events.
  ENDLOOP.

*Subtotal
  CLEAR lx_events.
  READ TABLE t_events INTO lx_events
  WITH KEY name = slis_ev_subtotal_text.
  IF sy-subrc EQ 0.
    MOVE c_formname_subtotal_text TO lx_events-form.
    MODIFY t_events FROM lx_events INDEX sy-tabix.
  ENDIF.
ENDFORM.                    " F_BUILD_EVENTS
*&---------------------------------------------------------------------*
*&      Form  F_DISPLAY_ALV_REPORT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM f_display_alv_report .
  d_repid = sy-repid.
  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    EXPORTING
      i_callback_program = d_repid
      is_layout          = x_layout
      it_fieldcat        = t_fieldcatalog[]
      it_sort            = t_sort
      i_default          = 'X'
      i_save             = 'A'
      it_events          = t_events
      is_print           = x_prntparams
    TABLES
      t_outtab           = t_ekko
    EXCEPTIONS
      program_error      = 1
      OTHERS             = 2.
  IF sy-subrc <> 0.
  ENDIF.
ENDFORM.                    " F_DISPLAY_ALV_REPORT
*&---------------------------------------------------------------------*
*&      Form  F_SUB_FILL_ALV_FIELD_CATALOG
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->P_0092   text
*      -->P_0093   text
*      -->P_0094   text
*      -->P_0095   text
*      -->P_0096   text
*      -->P_0097   text
*      -->P_0098   text
*      -->P_0099   text
*      -->P_0100   text
*      -->P_0101   text
*      -->P_0102   text
*----------------------------------------------------------------------*
FORM f_sub_fill_alv_field_catalog  USING    p_rowpos TYPE sycurow
                                            p_colpos TYPE sycucol
                                            p_fldnam TYPE fieldname
                                            p_tabnam TYPE tabname
                                            p_justif TYPE char1
                                            p_seltext TYPE dd03p-scrtext_l
                                            p_out TYPE char1
                                            p_tech TYPE char1
                                            p_qfield TYPE slis_fieldname
                                            p_qtab TYPE slis_tabname
                                            p_key  TYPE char1.

  DATA: lx_fcat TYPE slis_fieldcat_alv.
  lx_fcat-row_pos = p_rowpos.
  lx_fcat-col_pos = p_colpos.
  lx_fcat-fieldname = p_fldnam.
  lx_fcat-tabname = p_tabnam.
  lx_fcat-just = p_justif.
  lx_fcat-seltext_l = p_seltext.
  lx_fcat-no_out = p_out.
  lx_fcat-tech = p_tech.
  lx_fcat-qfieldname = p_qfield.
  lx_fcat-qtabname = p_qtab.
  lx_fcat-key  = p_key.
  APPEND lx_fcat TO t_fieldcatalog.
  CLEAR lx_fcat.
ENDFORM.                    " F_SUB_FILL_ALV_FIELD_CATALOG

*&---------------------------------------------------------------------*
*&      Form  f_top_of_page
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM f_top_of_page.
*ALV Header Declarations
  DATA: lt_header TYPE slis_t_listheader,
        lx_header TYPE slis_listheader,
        lt_line LIKE lx_header-info,
        ld_lines TYPE i,
        ld_linesc(10) TYPE c.

  DATA : ld_year_txt(8).
*Title
  lx_header-typ = 'H'.
  lx_header-info = 'PETRONAS CARIGALI INDONESIA'.
  APPEND lx_header TO lt_header.
  CLEAR lx_header.

  lx_header-typ = 'S'.
  lx_header-info = 'PRODUCTION SHARING CONTRACTS'.
  APPEND lx_header TO lt_header.
  CLEAR lx_header.

  lx_header-typ = 'A'.
  lx_header-info = 'PRODUCTION SHARING CONTRACTS'.
  APPEND lx_header TO lt_header.
  CLEAR lx_header.

  CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
    EXPORTING
      it_list_commentary = lt_header.
ENDFORM.                    "f_top_of_page

*&---------------------------------------------------------------------*
*&      Form  f_pf_status_set
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->FU_EXTAB   text
*----------------------------------------------------------------------*
FORM f_pf_status_set USING fu_extab TYPE slis_t_extab.
  REFRESH fu_extab.
  SET PF-STATUS 'STANDARD' EXCLUDING fu_extab.
  SET TITLEBAR 'TITLE' WITH 'Financial Quarterly Report - 4ATT'.
ENDFORM.                    "F_ALV_STATUS

No comments:

Post a Comment