1 *&---------------------------------------------------------------------*
2 *& Report ZALV_SY11
3 *&---------------------------------------------------------------------*
4 *&
5 *&---------------------------------------------------------------------*
6 REPORT ZALV_SY11.
7
8 *&---------------------------------------------------------------------*
9 *& TYPES定義
10 *&---------------------------------------------------------------------*
11 *ALV出力データ
12 TYPES: BEGIN OF typ_out.
13
14 TYPES: sel TYPE char1. "選択
15 INCLUDE STRUCTURE ZTB002_CINEMA_ALV.
16
17 TYPES:END OF typ_out.
18
19 *&---------------------------------------------------------------------*
20 *& 変数定義
21 *&---------------------------------------------------------------------*
22 DATA:
23 GIT_OUT TYPE STANDARD TABLE OF typ_out. "ALV出力データ
24
25 *&---------------------------------------------------------------------*
26 *& 定数定義
27 *&---------------------------------------------------------------------*
28 CONSTANTS:
29 CNS_SEL TYPE slis_fieldname VALUE 'SEL',
30 CNS_MTY TYPE syst_msgty VALUE 'E',
31 CNS_STR TYPE tabname VALUE 'ZTB002_CINEMA_alv', "ALV構造名
32 CNS_ON TYPE char1 VALUE 'X'. "アン
33
34 *&---------------------------------------------------------------------*
35 *& INITIALIZATION
36 *&---------------------------------------------------------------------*
37 INITIALIZATION.
38
39 * 初期化
40 PERFORM f_clear_data.
41
42 *&---------------------------------------------------------------------*
43 *& START-OF-SELECTION
44 *&---------------------------------------------------------------------*
45 START-OF-SELECTION.
46
47 * 主処理
48 PERFORM f_main_syori.
49 *&---------------------------------------------------------------------*
50 *& Form F_CLEAR_DATA
51 *&---------------------------------------------------------------------*
52 *& INITIALIZATION
53 *&---------------------------------------------------------------------*
54 FORM F_CLEAR_DATA .
55 CLEAR:
56 GIT_OUT. "ALV出力データ
57
58 ENDFORM.
59 *&---------------------------------------------------------------------*
60 *& Form F_MAIN_SYORI
61 *&---------------------------------------------------------------------*
62 *& START-OF-SELECTION
63 *&---------------------------------------------------------------------*
64 *& --> p1 text
65 *& <-- p2 text
66 *&---------------------------------------------------------------------*
67 FORM F_MAIN_SYORI .
68
69 * データの取得処理
70 PERFORM f_get_data.
71
72 * ALV出力
73 PERFORM f_alv_out.
74
75 ENDFORM.
76 *&---------------------------------------------------------------------*
77 *& Form F_GET_DATA
78 *&---------------------------------------------------------------------*
79 *& データの取得処理
80 *&---------------------------------------------------------------------*
81
82 FORM F_GET_DATA .
83
84 DATA:
85 LW_OUT TYPE TYP_OUT,
86 LIT_CINEMA TYPE STANDARD TABLE OF ZTB002_CINEMA_ALV.
87
88 FIELD-SYMBOLS:
89 TYPE ZTB002_CINEMA_ALV.
90
91 SELECT NAME
92 ADDRESS
93 FROM ZTB002_CINEMA
94 INTO TABLE LIT_CINEMA.
95
96 IF sy-subrc = 0.
97
98 LOOP AT LIT_CINEMA ASSIGNING .
99
100 LW_OUT-NAME = -NAME.
101 LW_OUT-ADDRESS = -ADDRESS.
102
103 APPEND LW_OUT TO GIT_OUT.
104 CLEAR LW_OUT.
105
106 ENDLOOP.
107
108 ELSE.
109
110 MESSAGE 'NO DATA FOUNT' TYPE 'S' DISPLAY LIKE CNS_MTY.
111 "DB(&1)にデータがありません。
112 LEAVE TO LIST-PROCESSING.
113
114 ENDIF.
115
116 ENDFORM.
117 *&---------------------------------------------------------------------*
118 *& Form F_ALV_OUT
119 *&---------------------------------------------------------------------*
120 *& ALV出力
121 *&---------------------------------------------------------------------*
122 FORM F_ALV_OUT.
123
124 DATA:
125 LW_LAYOUT TYPE slis_layout_alv,
126 LIT_FIELD TYPE slis_t_fieldcat_alv.
127
128 * 項目カタログの取得処理
129 PERFORM f_get_fieldcat
130 CHANGING
131 LIT_FIELD.
132
133 * layout
134 LW_LAYOUT-colwidth_optimize = CNS_ON.
135 LW_LAYOUT-zebra = CNS_ON.
136 LW_LAYOUT-edit = CNS_ON.
137
138 * ALV DISPLAY
139 CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
140 EXPORTING
141 i_callback_program = sy-repid
142 i_callback_pf_status_set = 'F_SET_STATUS'
143 i_callback_user_command = 'F_USER_COMMAND'
144 is_layout = LW_LAYOUT
145 it_fieldcat = LIT_FIELD
146 TABLES
147 t_outtab = GIT_OUT
148 EXCEPTIONS
149 program_error = 1
150 OTHERS = 2
151 .
152
153 IF sy-subrc <> 0.
154 * 処理なし
155 ELSE.
156
157 MESSAGE 'FAILED' TYPE 'S' DISPLAY LIKE CNS_MTY.
158 "ALV出力失敗。
159 LEAVE LIST-PROCESSING.
160
161 ENDIF.
162 ENDFORM.
163 *&---------------------------------------------------------------------*
164 *& Form F_GET_FIELDCAT
165 *&---------------------------------------------------------------------*
166 *& 項目カタログの取得処理
167 *&---------------------------------------------------------------------*
168 FORM F_GET_FIELDCAT
169 CHANGING
170 C_LIT_FIELD TYPE slis_t_fieldcat_alv.
171
172 DATA:
173 LW_FIELD TYPE slis_fieldcat_alv.
174
175 CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
176 EXPORTING
177 i_program_name = sy-repid "項目カタログ
178 i_structure_name = CNS_STR
179 CHANGING
180 ct_fieldcat = C_LIT_FIELD "項目カタログ
181 EXCEPTIONS
182 inconsistent_interface = 1
183 program_error = 2
184 OTHERS = 3
185 .
186 IF sy-subrc = 0.
187
188 LW_FIELD-col_pos = 1. "position
189 LW_FIELD-fieldname = CNS_SEL. "选择
190 * LW_FIELD-seltext_s = TEXT-003. "short
191 * LW_FIELD-seltext_m = TEXT-003. "middle
192 * LW_FIELD-seltext_l = TEXT-003. "long
193 LW_FIELD-checkbox = CNS_ON. "checkbox
194
195 INSERT LW_FIELD INTO C_LIT_FIELD INDEX 1.
196
197 ELSE.
198 MESSAGE 'FAILED' TYPE 'S' DISPLAY LIKE CNS_MTY.
199 "項目カタログ失败
200 LEAVE TO LIST-PROCESSING.
201
202 ENDIF.
203
204
205 ENDFORM.
206 *----------------------------------------------------------------------*
207 * FORM F_SET_STAUTS
208 *----------------------------------------------------------------------*
209 FORM f_set_status USING extab TYPE slis_t_extab.
210
211 SET PF-STATUS 'ZSTATUS_SY' EXCLUDING extab.
212
213 ENDFORM.
214 *----------------------------------------------------------------------*
215 * FORM f_user_command
216 *----------------------------------------------------------------------*
217 FORM f_user_command USING u_ucomm LIKE sy-ucomm
218 u_selfield TYPE slis_selfield.
219
220 DATA:
221 LV_ALV TYPE REF TO cl_gui_alv_grid, "ALVデータ変更チェック用
222 LW_CINEMA TYPE ZTB002_CINEMA,
223 LIT_CINEMA TYPE STANDARD TABLE OF ZTB002_CINEMA,
224 LW_OUT TYPE typ_out. "ALV出力
225
226
227 * ALVデータ変更チェック用
228 CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
229 IMPORTING
230 E_GRID = LV_ALV.
231
232 CALL METHOD LV_ALV->check_changed_data.
233
234 LOOP AT GIT_OUT into LW_OUT
235 where sel = CNS_ON.
236
237 LW_CINEMA-NAME = LW_OUT-NAME. "影院名称
238 LW_CINEMA-ADDRESS = LW_OUT-ADDRESS. "影院地址
239
240 APPEND LW_CINEMA to LIT_CINEMA.
241 CLEAR LW_CINEMA.
242
243 ENDLOOP.
244 ENDFORM.