-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMATERIAL_STOCK_ALV.ABAP
More file actions
366 lines (309 loc) · 10.1 KB
/
Copy pathMATERIAL_STOCK_ALV.ABAP
File metadata and controls
366 lines (309 loc) · 10.1 KB
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
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
*&---------------------------------------------------------------------*
*& REPORT ZAB_FS_ALV_2
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT ZAB_FS_ALV_2.
TYPE-POOLS: SLIS.
TABLES : MBEW,
MAKT,
EIPA,
MSEG,
MARD,
MARA.
TYPES: BEGIN OF TY_MBEW,
MATNR TYPE MBEW-MATNR,
SALK3 TYPE MBEW-SALK3,
VERPR TYPE MBEW-VERPR,
PEINH TYPE MBEW-PEINH,
END OF TY_MBEW.
TYPES: BEGIN OF TY_MAKT,
MATNR TYPE MAKT-MATNR,
MAKTX TYPE MAKT-MAKTX,
END OF TY_MAKT.
TYPES: BEGIN OF TY_EIPA,
EBELN TYPE EIPA-EBELN,
BEDAT TYPE EIPA-BEDAT,
PREIS TYPE EIPA-PREIS,
END OF TY_EIPA.
TYPES: BEGIN OF TY_MSEG,
MBLNR TYPE MSEG-MBLNR,
MATNR TYPE MSEG-MATNR,
EBELN TYPE MSEG-EBELN,
END OF TY_MSEG.
TYPES: BEGIN OF TY_MARD,
MATNR TYPE MARD-MATNR,
LABST TYPE MARD-LABST,
END OF TY_MARD.
TYPES: BEGIN OF TY_MARA,
MATNR TYPE MARA-MATNR,
MEINS TYPE MARA-MEINS,
END OF TY_MARA.
TYPES: BEGIN OF TY_FINAL,
MATNR TYPE MBEW-MATNR,
MAKTX TYPE MAKT-MAKTX,
VERPR TYPE MBEW-VERPR,
PREISL TYPE EIPA-PREIS,
PREISA TYPE EIPA-PREIS,
EBELN TYPE MSEG-EBELN,
MBLNR TYPE MSEG-MBLNR,
LABST TYPE MARD-LABST,
SALK3 TYPE MBEW-SALK3,
MEINS TYPE MARA-MEINS,
PEINH TYPE MBEW-PEINH,
END OF TY_FINAL.
DATA: IT_MBEW TYPE TABLE OF TY_MBEW,
WA_MBEW TYPE TY_MBEW,
IT_MAKT TYPE TABLE OF TY_MAKT,
WA_MAKT TYPE TY_MAKT,
IT_EIPA TYPE TABLE OF TY_EIPA,
WA_EIPA TYPE TY_EIPA,
IT_MSEG TYPE TABLE OF TY_MSEG,
WA_MSEG TYPE TY_MSEG,
IT_MARD TYPE TABLE OF TY_MARD,
WA_MARD TYPE TY_MARD,
IT_MARA TYPE TABLE OF TY_MARA,
WA_MARA TYPE TY_MARA,
IT_FINAL TYPE TABLE OF TY_FINAL,
WA_FINAL TYPE TY_FINAL,
IT_FLDCAT TYPE SLIS_T_FIELDCAT_ALV,
WA_FLDCAT TYPE SLIS_FIELDCAT_ALV,
IT_LAYOUT TYPE SLIS_LAYOUT_ALV.
SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001.
SELECT-OPTIONS: P_MATNR FOR MBEW-MATNR.
SELECTION-SCREEN END OF BLOCK B1.
START-OF-SELECTION.
PERFORM GET_DATA.
PERFORM PROCESS_DATA.
PERFORM DISPLAY_DATA.
*&---------------------------------------------------------------------*
*& FORM GET_DATA
*&---------------------------------------------------------------------*
* TEXT
*----------------------------------------------------------------------*
* --> P1 TEXT
* <-- P2 TEXT
*----------------------------------------------------------------------*
FORM GET_DATA .
SELECT MATNR
SALK3
VERPR
PEINH
FROM MBEW INTO TABLE IT_MBEW
WHERE MATNR IN P_MATNR.
IF IT_MBEW IS NOT INITIAL.
SORT IT_MBEW BY MATNR.
SELECT MATNR
MAKTX
FROM MAKT INTO TABLE IT_MAKT
FOR ALL ENTRIES IN IT_MBEW
WHERE MATNR = IT_MBEW-MATNR.
SELECT MBLNR
MATNR
EBELN
FROM MSEG INTO TABLE IT_MSEG
FOR ALL ENTRIES IN IT_MBEW
WHERE MATNR = IT_MBEW-MATNR.
IF IT_MSEG IS NOT INITIAL.
SORT IT_MSEG BY EBELN.
SELECT MBLNR
MATNR
EBELN
FROM MSEG INTO TABLE IT_MSEG
FOR ALL ENTRIES IN IT_MSEG
WHERE EBELN = IT_MSEG-EBELN AND MATNR = IT_MSEG-MATNR. "AND EBELN <> ' ' AND MATNR <> ' '.
SELECT EBELN
BEDAT
PREIS
FROM EIPA INTO TABLE IT_EIPA
FOR ALL ENTRIES IN IT_MSEG
WHERE EBELN = IT_MSEG-EBELN.
ENDIF.
* IF IT_EIPA IS NOT INITIAL.
*
* SORT IT_EIPA BY BEDAT DESCENDING.
* READ TABLE IT_EIPA INTO WA_EIPA INDEX 1.
*
* ENDIF.
SELECT MATNR
LABST
FROM MARD INTO TABLE IT_MARD
FOR ALL ENTRIES IN IT_MBEW
WHERE MATNR = IT_MBEW-MATNR.
SELECT MATNR
MEINS
FROM MARA INTO TABLE IT_MARA
FOR ALL ENTRIES IN IT_MBEW
WHERE MATNR = IT_MBEW-MATNR.
ENDIF.
ENDFORM. " GET_DATA
*&---------------------------------------------------------------------*
*& FORM PROCESS_DATA
*&---------------------------------------------------------------------*
* TEXT
*----------------------------------------------------------------------*
* --> P1 TEXT
* <-- P2 TEXT
*----------------------------------------------------------------------*
FORM PROCESS_DATA .
LOOP AT IT_MBEW INTO WA_MBEW.
CLEAR WA_FINAL.
WA_FINAL-MATNR = WA_MBEW-MATNR.
WA_FINAL-VERPR = WA_MBEW-VERPR.
WA_FINAL-SALK3 = WA_MBEW-SALK3.
WA_FINAL-PEINH = WA_MBEW-PEINH.
"==============================="
READ TABLE IT_MAKT INTO WA_MAKT WITH KEY MATNR = WA_FINAL-MATNR.
WA_FINAL-MAKTX = WA_MAKT-MAKTX.
READ TABLE IT_MARD INTO WA_MARD WITH KEY MATNR = WA_FINAL-MATNR.
WA_FINAL-LABST = WA_MARD-LABST.
READ TABLE IT_MARA INTO WA_MARA WITH KEY MATNR = WA_FINAL-MATNR.
WA_FINAL-MEINS = WA_MARA-MEINS.
LOOP AT IT_MSEG INTO WA_MSEG WHERE MATNR = WA_FINAL-MATNR.
WA_FINAL-EBELN = WA_MSEG-EBELN.
WA_FINAL-MBLNR = WA_MSEG-MBLNR.
* LOOP AT IT_EIPA INTO WA_EIPA WHERE EBELN = WA_FINAL-EBELN.
* WA_FINAL-PREISL = WA_EIPA-PREIS.
* WA_FINAL-PREISA = WA_EIPA-PREIS.
* APPEND WA_FINAL TO IT_FINAL.
* ENDLOOP.
READ TABLE IT_EIPA INTO WA_EIPA WITH KEY EBELN = WA_FINAL-EBELN.
WA_FINAL-PREISL = WA_EIPA-PREIS.
WA_FINAL-PREISA = WA_EIPA-PREIS.
APPEND WA_FINAL TO IT_FINAL.
ENDLOOP.
APPEND WA_FINAL TO IT_FINAL.
DELETE ADJACENT DUPLICATES FROM IT_FINAL COMPARING ALL FIELDS.
ENDLOOP.
ENDFORM. " PROCESS_DATA
**&---------------------------------------------------------------------*
**& FORM DISPLAY_DATA
**&---------------------------------------------------------------------*
** TEXT
**----------------------------------------------------------------------*
** --> P1 TEXT
** <-- P2 TEXT
**----------------------------------------------------------------------*
FORM DISPLAY_DATA .
WA_FLDCAT-COL_POS = 1.
WA_FLDCAT-TABNAME = 'IT_FINAL'.
WA_FLDCAT-SELTEXT_M = 'MATERIAL NUMBER'.
WA_FLDCAT-FIELDNAME = 'MATNR'.
APPEND WA_FLDCAT TO IT_FLDCAT.
CLEAR WA_FLDCAT.
WA_FLDCAT-COL_POS = 2.
WA_FLDCAT-TABNAME = 'IT_FINAL'.
WA_FLDCAT-SELTEXT_M = 'MATERIAL DESCRIPTION'.
WA_FLDCAT-FIELDNAME = 'MAKTX'.
APPEND WA_FLDCAT TO IT_FLDCAT.
CLEAR WA_FLDCAT.
WA_FLDCAT-COL_POS = 3.
WA_FLDCAT-TABNAME = 'IT_FINAL'.
WA_FLDCAT-SELTEXT_M = 'AVERAGE PRICE'.
WA_FLDCAT-FIELDNAME = 'VERPR'.
APPEND WA_FLDCAT TO IT_FLDCAT.
CLEAR WA_FLDCAT.
WA_FLDCAT-COL_POS = 4.
WA_FLDCAT-TABNAME = 'IT_FINAL'.
WA_FLDCAT-SELTEXT_M = 'LAST PURCHASE PRICE'.
WA_FLDCAT-FIELDNAME = 'PREISL'.
APPEND WA_FLDCAT TO IT_FLDCAT.
CLEAR WA_FLDCAT.
WA_FLDCAT-COL_POS = 5.
WA_FLDCAT-TABNAME = 'IT_FINAL'.
WA_FLDCAT-SELTEXT_M = 'ACTUAL PURCHASE PRICE'.
WA_FLDCAT-FIELDNAME = 'PREISA'.
APPEND WA_FLDCAT TO IT_FLDCAT.
CLEAR WA_FLDCAT.
WA_FLDCAT-COL_POS = 6.
WA_FLDCAT-TABNAME = 'IT_FINAL'.
WA_FLDCAT-SELTEXT_M = 'PURCHASE ORDER NO'.
WA_FLDCAT-FIELDNAME = 'EBELN'.
APPEND WA_FLDCAT TO IT_FLDCAT.
CLEAR WA_FLDCAT.
WA_FLDCAT-COL_POS = 7.
WA_FLDCAT-TABNAME = 'IT_FINAL'.
WA_FLDCAT-SELTEXT_M = 'GR NO'.
WA_FLDCAT-FIELDNAME = 'MBLNR'.
APPEND WA_FLDCAT TO IT_FLDCAT.
CLEAR WA_FLDCAT.
WA_FLDCAT-COL_POS = 8.
WA_FLDCAT-TABNAME = 'IT_FINAL'.
WA_FLDCAT-SELTEXT_M = 'STOCK QTY'.
WA_FLDCAT-FIELDNAME = 'LABST'.
APPEND WA_FLDCAT TO IT_FLDCAT.
CLEAR WA_FLDCAT.
WA_FLDCAT-COL_POS = 9.
WA_FLDCAT-TABNAME = 'IT_FINAL'.
WA_FLDCAT-SELTEXT_M = 'STOCK VALUE'.
WA_FLDCAT-FIELDNAME = 'SALK3'.
APPEND WA_FLDCAT TO IT_FLDCAT.
CLEAR WA_FLDCAT.
WA_FLDCAT-COL_POS = 10.
WA_FLDCAT-TABNAME = 'IT_FINAL'.
WA_FLDCAT-SELTEXT_M = 'BASE UNIT'.
WA_FLDCAT-FIELDNAME = 'MEINS'.
APPEND WA_FLDCAT TO IT_FLDCAT.
CLEAR WA_FLDCAT.
WA_FLDCAT-COL_POS = 11.
WA_FLDCAT-TABNAME = 'IT_FINAL'.
WA_FLDCAT-SELTEXT_M = 'PEINH'.
WA_FLDCAT-FIELDNAME = 'PRICE PER UNIT'.
APPEND WA_FLDCAT TO IT_FLDCAT.
CLEAR WA_FLDCAT.
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 = ' '
* 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 =
IT_FIELDCAT = IT_FLDCAT
* IT_EXCLUDING =
* IT_SPECIAL_GROUPS =
* 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
* I_HTML_HEIGHT_TOP = 0
* I_HTML_HEIGHT_END = 0
* IT_ALV_GRAPHICS =
* IT_HYPERLINK =
* IT_ADD_FIELDCAT =
* IT_EXCEPT_QINFO =
* IR_SALV_FULLSCREEN_ADAPTER =
* IMPORTING
* E_EXIT_CAUSED_BY_CALLER =
* ES_EXIT_CAUSED_BY_USER =
TABLES
T_OUTTAB = IT_FINAL
* EXCEPTIONS
* PROGRAM_ERROR = 1
* OTHERS = 2
.
IF SY-SUBRC <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDFORM. " DISPLAY_DATA