· 6 years ago · Jun 09, 2019, 08:07 AM
1class ZCL_P2PE312_NOTIF_MODEL definition
2 public
3 final
4 create public .
5
6public section.
7
8 types:
9 BEGIN OF mty_s_purch_ord,
10 ebeln TYPE ekpo-ebeln,
11 ebelp TYPE ekpo-ebelp,
12 etenr TYPE eket-etenr,
13 eindt TYPE eket-eindt,
14 banfn TYPE ekpo-banfn,
15 bnfpo TYPE ekpo-bnfpo,
16 END OF mty_s_purch_ord .
17 types:
18 mty_t_purch_ord TYPE SORTED TABLE OF mty_s_purch_ord WITH NON-UNIQUE KEY ebeln ebelp .
19 types:
20 BEGIN OF mty_s_mat_doc,
21 mblnr TYPE mseg-mblnr,
22 mjahr TYPE mseg-mjahr,
23 zeile TYPE mseg-zeile,
24 matnr TYPE mseg-matnr,
25 werks TYPE mseg-werks,
26 lgort TYPE mseg-lgort,
27 menge TYPE mseg-menge,
28 budat TYPE mkpf-budat,
29 ebeln TYPE ekpo-ebeln,
30 ebelp TYPE ekpo-ebelp,
31 etenr TYPE eket-etenr,
32 eindt TYPE eket-eindt,
33 banfn TYPE ekpo-banfn,
34 bnfpo TYPE ekpo-bnfpo,
35 END OF mty_s_mat_doc .
36 types:
37 mty_t_mat_doc TYPE TABLE OF mty_s_mat_doc .
38 types:
39 BEGIN OF mty_s_notif_11.
40 INCLUDE TYPE ytp2pe121_unplan.
41 TYPES:
42 yday_navo TYPE int4,
43 yday_avo TYPE int4,
44 yday_w TYPE int4,
45 yday_pr TYPE int4,
46 yresp_user TYPE yp2pe121_resp_user,
47 author_name TYPE char80,
48 doc_num TYPE zp2pe312_doc_num,
49 doc_pos TYPE zp2pe312_doc_pos,
50 doc_type TYPE zp2pe312_doc_type,
51 doc_sort TYPE zp2pe312_doc_sort,
52 doc_num_send TYPE zp2pe312_doc_num_send,
53 doc_pos_send TYPE zp2pe312_doc_pos,
54 zmnbo TYPE ztp2pe188_t024-zmnbo,
55 zmnfo TYPE ztp2pe188_t024-zmnfo,
56 unrreq_zsnrp TYPE ztp2pe188_bukrs-zsnrp,
57 unrreq_zsnrp_name TYPE text80,
58 zmnbo_name TYPE text80,
59 zmnfo_name TYPE text80,
60 unrreq_manager TYPE xubname,
61 unrreq_manager_name TYPE text80,
62 unrreq_respon TYPE xubname,
63 unrreq_respon_name TYPE text80,
64 fabkl TYPE t001w-fabkl,
65 zotfo TYPE ztp2pe188_t024-zotfo,
66 zotbo TYPE ztp2pe188_t024-zotbo,
67 werks TYPE werks_d,
68 matnr TYPE matnr,
69 berid TYPE berid,
70 maktx TYPE maktx,
71 event_date TYPE datum,
72 END OF mty_s_notif_11 .
73 types:
74 mty_t_notif_11 TYPE TABLE OF mty_s_notif_11 .
75 types:
76 BEGIN OF mty_s_ekpo_key,
77 ebeln TYPE ebeln,
78 ebelp TYPE ebelp,
79 END OF mty_s_ekpo_key .
80 types:
81 mty_t_ekpo_key TYPE SORTED TABLE OF mty_s_ekpo_key WITH UNIQUE KEY ebeln ebelp .
82 types:
83 BEGIN OF mty_s_mseg,
84 matnr TYPE matnr,
85 werks TYPE werks_d,
86 lgort TYPE lgort_d,
87 nsort TYPE zp2pe312_nsort,
88 END OF mty_s_mseg .
89 types:
90 BEGIN OF mty_s_pegging_stock_key,
91 matnr TYPE matnr,
92 werks TYPE werks_d,
93 berid TYPE berid,
94 END OF mty_s_pegging_stock_key .
95 types:
96 mty_t_mseg TYPE SORTED TABLE OF mty_s_mseg WITH UNIQUE KEY matnr werks lgort .
97 types:
98 mty_t_pegging_stock_key TYPE SORTED TABLE OF mty_s_pegging_stock_key WITH UNIQUE KEY matnr werks berid .
99 types:
100 BEGIN OF mty_s_labst,
101 matnr TYPE matnr,
102 werks TYPE werks,
103 labst TYPE labst,
104 END OF mty_s_labst .
105 types:
106 mty_t_labst TYPE SORTED TABLE OF mty_s_labst WITH UNIQUE KEY matnr werks .
107 types:
108 BEGIN OF mty_s_pegging_stock,
109 doc_type TYPE zp2pe312_doc_type,
110 doc_num TYPE zp2pe312_doc_num,
111 doc_pos TYPE zp2pe312_doc_pos,
112 doc_sch TYPE zp2pe312_doc_sch,
113 matnr TYPE matnr,
114 werks TYPE werks_d,
115 berid TYPE berid,
116 mng01 TYPE mng01,
117 mng02 TYPE mng02,
118 baart TYPE baart,
119 END OF mty_s_pegging_stock .
120 types:
121 mty_t_pegging_stock TYPE SORTED TABLE OF mty_s_pegging_stock WITH NON-UNIQUE KEY doc_type doc_num doc_pos doc_sch .
122 types:
123 BEGIN OF mty_s_pegging_plan_order,
124 doc_type TYPE zp2pe312_doc_type,
125 doc_num TYPE zp2pe312_doc_num,
126 doc_pos TYPE zp2pe312_doc_pos,
127 doc_sch TYPE zp2pe312_doc_sch,
128 plnum TYPE plnum,
129 matnr TYPE matnr,
130 werks TYPE werks_d,
131 END OF mty_s_pegging_plan_order .
132 types:
133 mty_t_pegging_plan_order TYPE SORTED TABLE OF mty_s_pegging_plan_order WITH NON-UNIQUE KEY doc_type doc_num doc_pos doc_sch .
134 types:
135 BEGIN OF mty_s_notif_09,
136 matnr TYPE mseg-matnr,
137 werks TYPE mseg-werks,
138 lgort TYPE mseg-lgort,
139 menge TYPE mseg-menge,
140 mblnr TYPE mseg-mblnr,
141 mjahr TYPE mseg-mjahr,
142 zeile TYPE mseg-zeile,
143 budat TYPE mkpf-budat,
144 ebeln TYPE ebeln,
145 ebelp TYPE ebelp,
146 etenr TYPE etenr,
147 berid TYPE berid,
148 eindt TYPE eindt,
149 banfn TYPE banfn,
150 bnfpo TYPE bnfpo,
151 END OF mty_s_notif_09 .
152 types:
153 mty_t_notif_09 TYPE SORTED TABLE OF mty_s_notif_09 WITH NON-UNIQUE KEY matnr werks lgort
154 WITH NON-UNIQUE SORTED KEY berid COMPONENTS matnr werks berid .
155 types:
156 BEGIN OF mty_s_notif_04,
157 ebeln TYPE ebeln,
158 ebelp TYPE ebelp,
159 mblnr TYPE mseg-mblnr,
160 mjahr TYPE mseg-mjahr,
161 zeile TYPE mseg-zeile,
162 menge TYPE mseg-menge,
163 budat TYPE mkpf-budat,
164 END OF mty_s_notif_04 .
165 types:
166 mty_t_notif_04 TYPE SORTED TABLE OF mty_s_notif_04 WITH NON-UNIQUE KEY ebeln ebelp .
167 types:
168 BEGIN OF mty_s_central_plant,
169 matnr TYPE matnr,
170 werks TYPE werks_d,
171 berid TYPE berid,
172 lgort TYPE lgort_d,
173 sobsl TYPE sobsl,
174 END OF mty_s_central_plant .
175 types:
176 mty_t_central_plant TYPE SORTED TABLE OF mty_s_central_plant WITH NON-UNIQUE KEY matnr werks berid lgort .
177 types:
178 BEGIN OF mty_s_matnr,
179 matnr TYPE matnr,
180 END OF mty_s_matnr .
181 types:
182 mty_t_matnr TYPE SORTED TABLE OF mty_s_matnr WITH UNIQUE KEY matnr .
183 types:
184 mty_t_doc_sort TYPE SORTED TABLE OF ztp2pe312_doctyp .
185 types:
186 BEGIN OF mty_s_requisition_key,
187 banfn TYPE banfn,
188 bnfpo TYPE bnfpo,
189 END OF mty_s_requisition_key .
190 types:
191 mty_t_requisition_key TYPE SORTED TABLE OF mty_s_requisition_key WITH UNIQUE KEY banfn bnfpo .
192 types:
193 BEGIN OF mty_s_inquiry,
194 vbeln TYPE del12,
195 posnr TYPE delps,
196 etenr TYPE delet,
197 ps_psp_pnr TYPE vbak-ps_psp_pnr,
198 auart TYPE vbak-auart,
199 erdat TYPE vbak-erdat,
200 ernam TYPE vbak-ernam,
201 matnr TYPE vbap-matnr,
202 klmeng TYPE vbap-klmeng,
203 bwtar TYPE vbap-bwtar,
204 edatu TYPE vbep-edatu,
205 meins TYPE vbep-meins,
206 bwkey TYPE t001w-bwkey,
207 bukrs TYPE t001k-bukrs,
208 waers TYPE t001-waers,
209 maktx TYPE makt-maktx,
210 name TYPE text80,
211 name_first TYPE adrp-name_first,
212 name_last TYPE adrp-name_last,
213 e_name TYPE text80,
214 e_name_first TYPE adrp-name_first,
215 e_name_last TYPE adrp-name_last,
216 r_werks TYPE werks_d,
217 r_berid TYPE berid,
218 r_dismm TYPE dismm,
219 r_sobsl TYPE sobsl,
220 r_ekgrp TYPE ekgrp,
221 p_werks TYPE werks_d,
222 p_berid TYPE berid,
223 p_dismm TYPE dismm,
224 p_sobsl TYPE sobsl,
225 p_ekgrp TYPE ekgrp,
226 doc_type TYPE zp2pe312_doc_type,
227 e_ernam TYPE ekko-ernam,
228 rlgort TYPE lgort_d,
229 bstnk TYPE vbak-bstnk,
230 posex TYPE vbap-posex,
231 ebeln TYPE ebeln,
232 ebelp TYPE ebelp,
233 banfn TYPE banfn,
234 bnfpo TYPE bnfpo,
235 ekpo_bukrs TYPE bukrs,
236 ekpo_werks TYPE werks_d,
237*{ REPLACE 3100012236
238* zpr2 TYPE vbeln_va,
239* zor2 TYPE vbeln_va,
240* delivery TYPE vbeln_vl,
241 zpr2 TYPE zsp2pe312_main-zpr2,
242 zor2 TYPE zsp2pe312_main-zor2,
243 delivery TYPE zsp2pe312_main-delivery,
244*} REPLACE 3100012236
245 END OF mty_s_inquiry .
246 types:
247 mty_t_inquiry TYPE SORTED TABLE OF mty_s_inquiry WITH NON-UNIQUE KEY vbeln posnr etenr .
248 types:
249 BEGIN OF mty_s_requisition,
250 banfn TYPE del12,
251 bnfpo TYPE delps,
252 bsart TYPE eban-bsart,
253 bstyp TYPE eban-bstyp,
254 lgort TYPE eban-lgort,
255 blckd TYPE eban-blckd,
256 blckt TYPE eban-blckt,
257 bwtar TYPE eban-bwtar,
258 matnr TYPE eban-matnr,
259 menge TYPE eban-menge,
260 meins TYPE eban-meins,
261 ernam TYPE eban-ernam,
262 erdat TYPE eban-erdat,
263 badat TYPE eban-badat,
264 lfdat TYPE eban-lfdat,
265 frgdt TYPE eban-frgdt,
266 bwkey TYPE t001w-bwkey,
267 bukrs TYPE t001k-bukrs,
268 waers TYPE t001-waers,
269 maktx TYPE makt-maktx,
270 name TYPE text80,
271 ebeln TYPE del12,
272 ebelp TYPE delps,
273 etenr TYPE delet,
274 procstat TYPE ekko-procstat,
275 bedat TYPE ekko-bedat,
276 poernam TYPE ekko-ernam,
277 poernam_name_first TYPE adrp-name_first,
278 poernam_name_last TYPE adrp-name_last,
279 poernam_txt TYPE text80,
280 eindt TYPE eket-eindt,
281 pobsart TYPE ekko-bsart,
282 name_first TYPE adrp-name_first,
283 name_last TYPE adrp-name_last,
284 r_werks TYPE werks_d,
285 r_berid TYPE berid,
286 r_dismm TYPE dismm,
287 r_sobsl TYPE sobsl,
288 r_ekgrp TYPE ekgrp,
289 p_werks TYPE werks_d,
290 p_berid TYPE berid,
291 p_dismm TYPE dismm,
292 p_sobsl TYPE sobsl,
293 p_ekgrp TYPE ekgrp,
294 doc_type TYPE zp2pe312_doc_type,
295 elikz TYPE ekpo-elikz,
296 loekz TYPE ekpo-loekz,
297 ekorg TYPE eban-ekorg,
298 zotfo TYPE ztp2pe188_t024-zotfo,
299 zspkt TYPE ztp2pe188_t024-zspkt,
300 zotbo TYPE ztp2pe188_t024-zotbo,
301 zotbo_name_first TYPE adrp-name_first,
302 zotbo_name_last TYPE adrp-name_last,
303 zotbo_name TYPE text80,
304 zmnbo TYPE ztp2pe188_t024-zmnbo,
305 zmnbo_name_first TYPE adrp-name_first,
306 zmnbo_name_last TYPE adrp-name_last,
307 zmnbo_name TYPE text80,
308 zmnfo TYPE ztp2pe188_t024-zmnfo,
309 zmnfo_name_first TYPE adrp-name_first,
310 zmnfo_name_last TYPE adrp-name_last,
311 zmnfo_name TYPE text80,
312 zotfo_name TYPE text80,
313 zotfo_name_first TYPE adrp-name_first,
314 zotfo_name_last TYPE adrp-name_last,
315 zspkt_name TYPE text80,
316 zspkt_name_first TYPE adrp-name_first,
317 zspkt_name_last TYPE adrp-name_last,
318 rlgort TYPE lgort_d,
319 pmeins TYPE meins,
320 pmenge TYPE menge_d,
321 infnr TYPE infnr,
322 sos_exist TYPE zp2pe312_sos_exist,
323 zlist TYPE zp2pe188_list,
324 konnr TYPE konnr,
325 minbe TYPE marc-minbe,
326 warehouse_manag TYPE zip2pe312_user,
327 pobstyp TYPE ekko-bstyp,
328 END OF mty_s_requisition .
329 types:
330 mty_t_requisition TYPE SORTED TABLE OF mty_s_requisition WITH NON-UNIQUE KEY banfn bnfpo
331 WITH NON-UNIQUE SORTED KEY ebeln COMPONENTS ebeln ebelp etenr
332 WITH NON-UNIQUE SORTED KEY pobsart COMPONENTS pobsart .
333 types:
334 BEGIN OF mty_s_reservation,
335 rsnum TYPE del12,
336 rspos TYPE delps,
337 aufnr TYPE aufk-aufnr,
338 auart TYPE aufk-auart,
339 ernam TYPE aufk-ernam,
340 bukrs TYPE aufk-bukrs,
341 erdat TYPE aufk-erdat,
342 bdter TYPE resb-bdter,
343 matnr TYPE resb-matnr,
344 bdmng TYPE resb-bdmng,
345 meins TYPE resb-meins,
346 projn TYPE afvc-projn,
347 waers TYPE t001-waers,
348 maktx TYPE makt-maktx,
349 name TYPE text80,
350 name_first TYPE adrp-name_first,
351 name_last TYPE adrp-name_last,
352 r_werks TYPE werks_d,
353 r_berid TYPE berid,
354 r_dismm TYPE dismm,
355 r_sobsl TYPE sobsl,
356 r_ekgrp TYPE ekgrp,
357 p_werks TYPE werks_d,
358 p_berid TYPE berid,
359 p_dismm TYPE dismm,
360 p_sobsl TYPE sobsl,
361 p_ekgrp TYPE ekgrp,
362 doc_type TYPE zp2pe312_doc_type,
363 stat_user TYPE jcds-usnam,
364 stat_name TYPE text80,
365 stat_name_first TYPE adrp-name_first,
366 stat_name_last TYPE adrp-name_last,
367 vornr TYPE resb-vornr,
368 posnr TYPE resb-posnr,
369 rlgort TYPE lgort_d,
370 END OF mty_s_reservation .
371 types:
372 mty_t_reservation TYPE SORTED TABLE OF mty_s_reservation WITH NON-UNIQUE KEY rsnum rspos .
373 types:
374 BEGIN OF mty_s_matnr_werks,
375 matnr TYPE matnr,
376 werks TYPE werks_d,
377 END OF mty_s_matnr_werks .
378 types:
379 mty_t_matnr_werks TYPE SORTED TABLE OF mty_s_matnr_werks WITH UNIQUE KEY matnr werks .
380 types:
381 BEGIN OF mty_s_pegging,
382 reqnr TYPE del12,
383 reqps TYPE zp2pe312_doc_pos,
384 reqet TYPE delet,
385 delkz TYPE delkz,
386 delnr TYPE del12,
387 delps TYPE delps,
388 delet TYPE delet,
389 END OF mty_s_pegging .
390 types:
391 mty_t_pegging TYPE SORTED TABLE OF mty_s_pegging WITH NON-UNIQUE KEY reqnr reqps reqet .
392 types:
393 BEGIN OF mty_s_doc_key,
394 doc_num TYPE zp2pe312_doc_num,
395 doc_pos TYPE zp2pe312_doc_pos,
396 doc_sch TYPE zp2pe312_doc_sch,
397 END OF mty_s_doc_key .
398 types:
399 mty_t_doc_key TYPE SORTED TABLE OF mty_s_doc_key WITH UNIQUE KEY doc_num doc_pos doc_sch .
400 types:
401 BEGIN OF mty_s_pegging_key,
402 delkz TYPE delkz,
403 delnr TYPE del12,
404 delps TYPE delps,
405 delet TYPE delet,
406 matnr TYPE matnr,
407 werks TYPE werks_d,
408 berid TYPE berid,
409 END OF mty_s_pegging_key .
410 types:
411 mty_t_pegging_key TYPE SORTED TABLE OF mty_s_pegging_key WITH UNIQUE KEY delkz delnr delps delet .
412 types:
413 BEGIN OF mty_s_notif_01,
414 edokn TYPE erev-edokn,
415 edokp TYPE erev-edokp,
416 revno TYPE erev-revno,
417 rscod TYPE erev-rscod,
418 rstxt TYPE t16ct-rstxt,
419 erdat TYPE erev-erdat,
420 ernam TYPE erev-ernam,
421 name_first TYPE adrp-name_first,
422 name_last TYPE adrp-name_last,
423 name TYPE text80,
424 blckt TYPE zp2pe312_blckt,
425 text TYPE text200,
426 END OF mty_s_notif_01 .
427 types:
428 mty_t_notif_01 TYPE SORTED TABLE OF mty_s_notif_01 WITH NON-UNIQUE KEY edokn edokp .
429 types:
430 BEGIN OF mty_s_eket_key,
431 ebeln TYPE ebeln,
432 ebelp TYPE ebelp,
433 etenr TYPE etenr,
434 objectid TYPE cdobjectv,
435 key TYPE cdtabkey,
436 udate TYPE cdhdr-udate,
437 END OF mty_s_eket_key .
438 types:
439 mty_t_eket_key TYPE SORTED TABLE OF mty_s_eket_key WITH UNIQUE KEY ebeln ebelp etenr
440 WITH UNIQUE SORTED KEY key COMPONENTS key .
441 types:
442 BEGIN OF mty_s_notif_03,
443 ebeln TYPE ebeln,
444 objectid TYPE cdobjectv,
445 username TYPE xubname,
446 udate TYPE cddatum,
447 name_first TYPE adrp-name_first,
448 name_last TYPE adrp-name_last,
449 name TYPE text80,
450 text TYPE zp2pe312_text_reject,
451 END OF mty_s_notif_03 .
452 types:
453 mty_t_notif_03 TYPE SORTED TABLE OF mty_s_notif_03 WITH NON-UNIQUE KEY ebeln .
454 types:
455 BEGIN OF mty_s_notif_08,
456 matnr TYPE marc-matnr,
457 werks TYPE marc-werks,
458 marc_lvorm TYPE marc-lvorm,
459 ekgrp TYPE marc-ekgrp,
460 maktx TYPE makt-maktx,
461 mtart TYPE mara-mtart,
462 matkl TYPE mara-matkl,
463 mara_lvorm TYPE mara-lvorm,
464 bukrs TYPE t001k-bukrs,
465 plifz_old TYPE plifz,
466 plifz_new TYPE plifz,
467 END OF mty_s_notif_08 .
468 types:
469 mty_t_notif_08 TYPE SORTED TABLE OF mty_s_notif_08 WITH NON-UNIQUE KEY matnr werks .
470 types:
471*{ INSERT 3100012236
472 mty_t_mdrqx TYPE TABLE OF mdrq .
473 types:
474 BEGIN OF mty_s_vbfa_docs,
475 vbelv TYPE vbfa-vbelv,
476 posnv TYPE vbfa-posnv,
477 vbtyp TYPE vbfa-vbtyp_n,
478 vbeln TYPE vbap-vbeln,
479 posnr TYPE vbap-posnr,
480 auart TYPE vbak-auart,
481 delivery TYPE likp-vbeln,
482 END OF mty_s_vbfa_docs .
483 types:
484 mty_t_vbfa_docs TYPE SORTED TABLE OF mty_s_vbfa_docs WITH NON-UNIQUE KEY vbelv posnr .
485
486*{ INSERT 3100012236
487 events DATA_CHANGED
488 exporting
489 value(ER_DATA) type ref to DATA .
490
491 methods GET_USER
492 exporting
493 !EV_USER type XUBNAME .
494 methods CHANGE_CELL_STATUS
495 importing
496 !IV_ROW type SALV_DE_ROW
497 !IV_COLUMN type SALV_DE_COLUMN .
498 methods GET_NSORT_TEXT
499 importing
500 !IV_NSORT type ZP2PE312_NSORT
501 returning
502 value(RV_NSORT_TXT) type ZP2PE312_NSORT_TXT .
503 methods GET_SELECTIONS_DOC_KEY
504 importing
505 !IV_NSORT type ZP2PE312_NSORT
506 exporting
507 !ET_DOC_KEY type ZIP2PE312_DOC_KEY
508 !ET_DOC_KEY_EXCLUDE type ZIP2PE312_DOC_KEY_EXCLUDE .
509 methods GET_SELECTIONS_NSORT
510 exporting
511 !ET_NSORT type ZIP2PE312_NSORT_TAB .
512 methods GET_VIEW_MODE
513 returning
514 value(RV_MODE) type CHAR1 .
515 methods CONSTRUCTOR
516 importing
517 !IS_SEL type ZSP2PE312_SEL
518 !IV_MODE type CHAR1 .
519 methods GET_ALV_OUTPUT
520 returning
521 value(RT_ALV) type ref to ZIP2PE312_NOTIF_SYS_ALV .
522 methods PROCESS .
523 methods GET_TITLE
524 returning
525 value(RV_TITLE) type LVC_TITLE .
526 methods CHANGE_COLUMN_SELECTION
527 importing
528 !IV_FNAME type LVC_FNAME
529 !IV_SELECT type BOOLEAN .
530 methods GET_USER_NOTIF_AUTHORITY
531 returning
532 value(RT_NSORT) type ZIP2PE312_NSORT .
533protected section.
534private section.
535
536 data MS_SEL type ZSP2PE312_SEL .
537 data MT_INQUIRY type MTY_T_INQUIRY .
538 data MT_CANCELATION type MTY_T_REQUISITION .
539 data MT_RESERVATION type MTY_T_RESERVATION .
540 data MT_REQUISITION type MTY_T_REQUISITION .
541 data MT_INQUIRY_PEG type MTY_T_PEGGING .
542 data MT_ALV type ZIP2PE312_NOTIF_SYS_ALV .
543 data MT_RESERVATION_PEG type MTY_T_PEGGING .
544 data MT_CANCELATION_PEG type MTY_T_PEGGING .
545 data MT_NOTIF_01 type MTY_T_NOTIF_01 .
546 data:
547 mrt_dismm TYPE RANGE OF dismm .
548 data:
549 mrt_doctyp TYPE RANGE OF zp2pe312_doc_type .
550 data MT_NSORT type ZIP2PE312_NSORT .
551 data MV_USER type XUBNAME .
552 data MT_NSTAT_TXT type /SPE/DOM_DESC_T .
553 data MV_MODE type CHAR1 .
554 data MT_RECIPIENTS type ZIP2PE312_RECIPIENT .
555 data MV_USER_TXT type TEXT80 .
556 data MT_SNDLOG type ZIP2PE312_SNDLOG .
557 data MT_NOTIF_09 type MTY_T_NOTIF_09 .
558 data MT_PEGGING_STOCK_09 type MTY_T_PEGGING_STOCK .
559 data MT_LABST_09 type MTY_T_LABST .
560 data MT_NOTIF_10 type MTY_T_EKET_KEY .
561 data MT_LABST type MTY_T_LABST .
562 data MT_NOTIF_03 type MTY_T_NOTIF_03 .
563 data MT_NOTIF_04 type MTY_T_NOTIF_04 .
564 data MT_NOTIF_08 type MTY_T_NOTIF_08 .
565 data MT_NOTIF_11 type MTY_T_NOTIF_11 .
566 data MT_REQ_TRANSF type MTY_T_REQUISITION .
567 data MT_REQ_TRANSF_PEG type MTY_T_PEGGING .
568 data MT_PURCH_PEGGING type ZIP2PE312_PEGGING .
569 data MT_PEGGING_STOCK_07 type MTY_T_PEGGING_STOCK .
570 data MT_NOTIF_07 type MTY_T_NOTIF_09 .
571 data MT_LABST_07 type MTY_T_LABST .
572 data MT_RESERVATION_PEG_SEC type MTY_T_PEGGING .
573 data MT_INQUIRY_PEG_SEC type MTY_T_PEGGING .
574 data MT_CANCELATION_PEG_SEC type MTY_T_PEGGING .
575 data MT_SNDLOG_07 type ZIP2PE312_SNDLOG .
576 data MT_SNDLOG_09 type ZIP2PE312_SNDLOG .
577 data MT_PURCH_ORD type MTY_T_PURCH_ORD .
578
579 methods FETCH_WAREHOUSE_MANAGER
580 changing
581 !CT_REQ_TRANSF type MTY_T_REQUISITION .
582 methods FILTER_PEGGING_STOCK_BY_LOGDB
583 importing
584 !IV_NSORT type ZP2PE312_NSORT
585 exporting
586 !ET_SNDLOG type ZIP2PE312_SNDLOG
587 !ET_PURCH_ORD type MTY_T_PURCH_ORD
588 changing
589 !CT_PEGGING_STOCK type MTY_T_PEGGING_STOCK .
590 methods FETCH_BY_REQUIREMENTS_SEC .
591 methods FETCH_BY_PURCHASE_REQ_SEC
592 importing
593 !IT_RES_KEYS type MTY_T_DOC_KEY
594 !IT_CAN_KEYS type MTY_T_DOC_KEY
595 !IT_INQ_KEYS type MTY_T_DOC_KEY .
596 methods FETCH_REQ_TRANSF_BY_KEYS
597 importing
598 !IT_REQ_TRANSF_KEY type MTY_T_DOC_KEY
599 exporting
600 !ET_REQ_TRANSF type MTY_T_REQUISITION .
601 methods DO_PEGGING_REQ_SECOND
602 importing
603 !IT_PEGGING_KEY type MTY_T_PEGGING_KEY
604 exporting
605 !ET_RES_KEYS type MTY_T_DOC_KEY
606 !ET_CAN_KEYS type MTY_T_DOC_KEY
607 !ET_INQ_KEYS type MTY_T_DOC_KEY .
608 methods CONV_VBELN_TABLE_TO_CHAR
609 importing
610 !IM_T_VBELN type WTYSC_VBELN_TAB
611 returning
612 value(RE_CONV_VALUE) type CHAR128 .
613 methods FETCH_NOTIF_07 .
614 methods FETCH_NOTIF_09 .
615 methods GET_PEGGING_INQ_MANUAL
616 importing
617 !IT_REQUISITION type MTY_T_REQUISITION
618 exporting
619 !ET_INQUIRY_KEY type MTY_T_PEGGING
620 !ET_MATNR_WERKS type MTY_T_MATNR_WERKS .
621 methods GET_PEGGING_REQUIREMENTS
622 importing
623 !IM_MATNR type MATNR
624 !IM_WERKS type WERKS_D
625 !IM_BERID type BERID
626 exporting
627 !EX_T_IMDRQX type MTY_T_MDRQX .
628 methods GET_REQ_BY_INQ
629 importing
630 !IT_INQUIRY type MTY_T_INQUIRY
631 exporting
632 !ET_INQ_REQ type MTY_T_PEGGING
633 !ET_REQUISITION type MTY_T_REQUISITION .
634 methods READ_DOCS_FROM_VBFA
635 importing
636 !IM_T_VBFA_DOCS type MTY_T_VBFA_DOCS
637 !IM_VBELV type VBFA-VBELV
638 !IM_POSNV type VBFA-POSNV
639 !IM_VBTYP type VBFA-VBTYP_N
640 !IM_AUART type VBAK-AUART
641 exporting
642 !EX_DOCS type CHAR128 .
643 methods ADD_PEGGING_SECOND
644 importing
645 !IS_INQ_REQ type MTY_S_PEGGING
646 !IT_PEG_SEC type MTY_T_PEGGING
647 !IS_INQ_PEG type MTY_S_PEGGING
648 changing
649 !CT_INQUIRY_PEG type MTY_T_PEGGING .
650 methods PROCESS_RECIPIENTS_POST
651 changing
652 !CT_RECIPIENTS type ZIP2PE312_RECIPIENT .
653 methods PROCESS_RECIPIENTS_POST_03
654 changing
655 !CT_RECIPIENTS type ZIP2PE312_RECIPIENT .
656 methods BUILD_ALV_PLANNED_ORDER .
657 methods ADD_PEGGING_SECOND_REV
658 importing
659 !IT_INQUIRY_PEG type MTY_T_PEGGING
660 !IT_INQUIRY_MANUAL type MTY_T_PEGGING
661 changing
662 !CT_PEGGING_KEY type MTY_T_PEGGING .
663 methods FETCH_UNPLAN_REQ_RES
664 exporting
665 !ET_UNPLAN type MTY_T_NOTIF_11 .
666 methods FETCH_UNPLAN_REQ_INQ
667 exporting
668 !ET_UNPLAN type MTY_T_NOTIF_11 .
669 methods FETCH_UNPLAN_REQ_CAN
670 exporting
671 !ET_UNPLAN type MTY_T_NOTIF_11 .
672 methods BUILD_ALV_TAB_NOTIF_11 .
673 methods FETCH_NOTIF_11 .
674 methods CREATE_ALV_KEY .
675 methods FETCH_BY_MAT .
676 methods GET_MATERIAL_DOCUMENTS_04
677 importing
678 !IT_EKPO_KEY type MTY_T_EKPO_KEY
679 !IRT_ERDAT type FIP_T_VDATU_RANGE
680 exporting
681 !ET_DOCUMENTS type MTY_T_NOTIF_04 .
682 methods BUILD_ALV_TAB_NOTIF_03 .
683 methods BUILD_ALV_TAB_NOTIF_04 .
684 methods BUILD_ALV_TAB_NOTIF_08 .
685 methods BUILD_ALV_TAB_NOTIF_01 .
686 methods BUILD_ALV_TAB_ICONS .
687 methods BUILD_ALV_TAB_NOTIF_02 .
688 methods ADD_DOC_KEY_TABLE
689 importing
690 !IT_DOC_KEY type MTY_T_DOC_KEY
691 changing
692 !CT_DOC_KEY type MTY_T_DOC_KEY .
693 methods CHECK_CENTRAL_PLANT
694 importing
695 !IT_MSEG_KEY type MTY_T_MSEG
696 !IRT_SOBSL type CURTO_SOBSL_RANGE_T
697 exporting
698 !ET_CENTRAL_PLANT type MTY_T_CENTRAL_PLANT .
699 methods DO_PEGGING_REQ
700 importing
701 !IT_REQUISITION type MTY_T_REQUISITION
702 exporting
703 !ET_RES_KEYS type MTY_T_DOC_KEY
704 !ET_CAN_KEYS type MTY_T_DOC_KEY
705 !ET_INQ_KEYS type MTY_T_DOC_KEY
706 !ET_RESERVATION_PEG type MTY_T_PEGGING
707 !ET_CANCELATION_PEG type MTY_T_PEGGING
708 !ET_INQUIRY_PEG type MTY_T_PEGGING .
709 methods FETCH_RECEIPT
710 importing
711 !IT_CENTRAL_PLANT type MTY_T_CENTRAL_PLANT
712 !IRT_ERDAT type FIP_T_ERDAT_RANGE optional
713 !IRT_CPUDT type FIP_T_ERDAT_RANGE optional
714 !IRT_BSART type RPO_T_BSART_RANGE
715 !IRT_BWART type BWART_T_RANGE
716 !IV_NSORT type ZP2PE312_NSORT
717 exporting
718 !ET_PEGGING_STOCK type MTY_T_PEGGING_STOCK
719 !ET_DOCUMENTS type MTY_T_NOTIF_09
720 !ET_LABST type MTY_T_LABST .
721 methods FETCH_REQUIREMENT_DOCUMENTS
722 importing
723 !IT_INQ_KEYS type MTY_T_DOC_KEY
724 !IT_RES_KEYS type MTY_T_DOC_KEY
725 !IT_CAN_KEYS type MTY_T_DOC_KEY
726 exporting
727 !ET_INQUIRY type MTY_T_INQUIRY
728 !ET_RESERVATION type MTY_T_RESERVATION
729 !ET_CANCELATION type MTY_T_REQUISITION .
730 methods FETCH_REQ_BY_MSEG
731 importing
732 !IT_MSEG_KEYS type MTY_T_MSEG
733 !IRT_ERDAT type FIP_T_ERDAT_RANGE
734 exporting
735 !ET_INQUIRY_KEY type MTY_T_DOC_KEY
736 !ET_RESERVATION_KEY type MTY_T_DOC_KEY
737 !ET_CANCELATION_KEY type MTY_T_DOC_KEY
738 !ET_REQUISITION_KEY type MTY_T_DOC_KEY .
739 methods FETCH_REQ_BY_MSEG_NOTIF
740 importing
741 !IT_MSEG_KEYS type MTY_T_MSEG
742 !IRT_ERDAT type FIP_T_ERDAT_RANGE
743 !IRT_BSART type FIP_T_BSART_RANGE
744 !IRT_BWART type BWART_T_RANGE
745 !IRT_SOBSL type CURTO_SOBSL_RANGE_T
746 !IV_NSORT type ZP2PE312_NSORT
747 exporting
748 !ET_SNDLOG type ZIP2PE312_SNDLOG
749 !ET_INQUIRY_KEY type MTY_T_DOC_KEY
750 !ET_RESERVATION_KEY type MTY_T_DOC_KEY
751 !ET_CANCELATION_KEY type MTY_T_DOC_KEY
752 !ET_REQUISITION_KEY type MTY_T_DOC_KEY
753 !ET_PEGGING_STOCK type MTY_T_PEGGING_STOCK
754 !ET_LABST type MTY_T_LABST
755 !ET_DOCUMENTS type MTY_T_NOTIF_09
756 !ET_PURCH_ORD type MTY_T_PURCH_ORD .
757 methods GET_MATERIAL_DOCUMENTS
758 importing
759 !IRT_ERDAT type FIP_T_VDATU_RANGE optional
760 !IRT_CPUDT type FIP_T_VDATU_RANGE optional
761 !IRT_BWART type BWART_T_RANGE
762 !IRT_BSART type RPO_T_BSART_RANGE
763 !IT_CENTRAL_PLANT type MTY_T_CENTRAL_PLANT
764 !IV_NSORT type ZP2PE312_NSORT
765 exporting
766 !ET_DOCUMENTS type MTY_T_NOTIF_09 .
767 methods BUILD_ALV_TAB_NOTIF_07 .
768 methods BUILD_ALV_TAB_NOTIF_09 .
769 methods BUILD_ALV_TAB_NOTIF_10 .
770 methods GET_CENTRAL_PLANT
771 importing
772 !IT_MATNR type MTY_T_MATNR
773 !IRT_SOBSL type CURTO_SOBSL_RANGE_T
774 exporting
775 !ET_CENTRAL_PLANT type MTY_T_CENTRAL_PLANT .
776 methods GET_LABST
777 importing
778 !IT_MATNR_WERKS type MTY_T_MATNR_WERKS
779 exporting
780 !ET_LABST type MTY_T_LABST .
781 methods GET_PEGGING_STOCK
782 importing
783 !IT_PEGGING_KEY type MTY_T_PEGGING_STOCK_KEY
784 exporting
785 !ET_PEGGING_STOCK type MTY_T_PEGGING_STOCK .
786 methods GET_PEGGING_PLAN_ORDER
787 importing
788 !IT_PEGGING_KEY type MTY_T_PEGGING_KEY
789 exporting
790 !ET_PEGGING_PLAN_ORDER type MTY_T_PEGGING_PLAN_ORDER .
791 methods BUILD_ALV_TAB_NSORT_TXT .
792 methods EXCLUDE_EXIST_KEYS
793 importing
794 !IT_LOG_KEYS type MTY_T_DOC_KEY
795 changing
796 !CT_KEYS type MTY_T_DOC_KEY .
797 methods FILTER_ALV .
798 methods SET_NSORT_USER_STATUS
799 importing
800 !IV_NSTAT type ZP2PE312_NSTAT
801 !IV_NSORT type ZP2PE312_NSORT
802 changing
803 !CS_ALV type ZSP2PE312_NOTIF_SYS_ALV .
804 methods UPDATE_SNDLOG
805 importing
806 !IT_DOC_SEND type ZIP2PE312_DOC_SEND
807 changing
808 !CT_SNDLOG type ZIP2PE312_SNDLOG .
809 methods GET_ONLINE_DOCS
810 importing
811 !IT_REQ_KEYS type MTY_T_DOC_KEY
812 !IT_MSEG_KEYS type MTY_T_MSEG
813 !IRT_ERDAT type FIP_T_ERDAT_RANGE .
814 methods SEND_MAIL
815 importing
816 !IT_RECIPIENT type ZIP2PE312_RECIPIENT
817 exporting
818 !ET_DOC_SEND type ZIP2PE312_DOC_SEND .
819 methods BUILD_ALV_TAB_RECIPIENTS
820 importing
821 !IT_RECIPIENT type ZIP2PE312_RECIPIENT .
822 methods FETCH_BY_SNDLOG .
823 methods FETCH_SNDLOG
824 exporting
825 !ET_SNDLOG type ZIP2PE312_SNDLOG .
826 methods GET_DOC_KEYS
827 importing
828 !IT_PEG_KEYS type MTY_T_PEGGING
829 exporting
830 !ET_DOC_KEYS type MTY_T_DOC_KEY .
831 methods GET_DOC_KEYS_SNDLOG
832 importing
833 !IT_SNDLOG type ZIP2PE312_SNDLOG
834 exporting
835 !ET_REQ_KEYS type MTY_T_DOC_KEY
836 !ET_MSEG_KEYS type MTY_T_MSEG .
837 methods GET_MATNR_WERKS
838 exporting
839 !ET_MATNR_WERKS type MTY_T_MATNR_WERKS .
840 methods GET_NSTAT_ATTR
841 importing
842 !IV_NSTAT type ZP2PE312_NSTAT
843 exporting
844 !EV_NSTAT_TXT type ZP2PE312_NSTAT_TXT
845 !EV_NSTAT_ICON type ZP2PE312_NSTAT_ICON .
846 methods FETCH_SD_DOCFLOW .
847 methods FILL_PEG_KEYS
848 importing
849 !IT_REQUISITION type MTY_T_REQUISITION
850 exporting
851 !ET_PEGGING_KEY type MTY_T_PEGGING_KEY .
852 methods BUILD_ALV_TAB_POST .
853 methods BUILD_ALV_TAB_CAN
854 changing
855 !CT_ALV type ZIP2PE312_NOTIF_SYS_ALV .
856 methods BUILD_ALV_TAB_TRANSF
857 changing
858 !CT_ALV type ZIP2PE312_NOTIF_SYS_ALV .
859 methods BUILD_ALV_TAB_INQ
860 changing
861 !CT_ALV type ZIP2PE312_NOTIF_SYS_ALV .
862 methods BUILD_ALV_TAB_RES
863 changing
864 !CT_ALV type ZIP2PE312_NOTIF_SYS_ALV .
865 methods FETCH_BY_PURCHASE_REQ .
866 methods FETCH_BY_REQUIREMENTS .
867 methods ADD_NOTIFICATIONS_DATA .
868 methods BUILD_ALV_TAB_NOTIF .
869 methods FETCH_NOTIF_10
870 importing
871 !IRT_ERDAT type FIP_T_VDATU_RANGE .
872 methods FETCH_NOTIF_01
873 importing
874 !IT_REQUISITION_KEY type MTY_T_REQUISITION_KEY
875 !IRT_ERDAT type FIP_T_VDATU_RANGE .
876 methods FETCH_NOTIF_03
877 importing
878 !IRT_ERDAT type FIP_T_VDATU_RANGE .
879 methods FETCH_NOTIF_04
880 importing
881 !IRT_ERDAT type FIP_T_VDATU_RANGE .
882 methods BUILD_ALV_TAB .
883 methods FETCH_CAN_BY_KEYS
884 importing
885 !IT_DOC_KEYS type MTY_T_DOC_KEY
886 exporting
887 !ET_CANCELATION type MTY_T_REQUISITION .
888 methods FETCH_REQ_TRANSF_BY_SELOPTS .
889 methods FETCH_CAN_BY_SELOPTS .
890 methods FETCH_INQ_BY_KEYS
891 importing
892 !IT_DOC_KEYS type MTY_T_DOC_KEY
893 exporting
894 !ET_INQUIRY type MTY_T_INQUIRY .
895 methods FETCH_INQ_BY_SELOPTS .
896 methods FETCH_REQ_BY_KEYS
897 importing
898 !IT_MATNR_WERKS type MTY_T_MATNR_WERKS optional
899 !IT_DOC_KEYS type MTY_T_DOC_KEY optional
900 exporting
901 !ET_REQUISITION type MTY_T_REQUISITION .
902 methods FETCH_REQ_BY_SELOPTS .
903 methods FETCH_RES_BY_KEYS
904 importing
905 !IT_DOC_KEYS type MTY_T_DOC_KEY
906 exporting
907 !ET_RESERVATION type MTY_T_RESERVATION .
908 methods FETCH_RES_BY_SELOPTS .
909 methods MOVE_REQ_TO_ALV
910 importing
911 !IS_REQUISITION type MTY_S_REQUISITION
912 changing
913 !CS_ALV type ZSP2PE312_NOTIF_SYS_ALV .
914 methods GET_PEGGING
915 importing
916 !IT_PEGGING_KEY type MTY_T_PEGGING_KEY
917 exporting
918 !ET_RESERVATION_KEY type MTY_T_PEGGING
919 !ET_INQUIRY_KEY type MTY_T_PEGGING
920 !ET_CANCELATION_KEY type MTY_T_PEGGING
921 !ET_REQ_TRANSF_KEY type MTY_T_PEGGING .
922 methods GET_RECIPIENTS
923 importing
924 !IRT_USERS type ZIP2PE312_USER_RANGE
925 !IV_SEND_DATE_CHECK type CHAR1
926 exporting
927 !ET_RECIPIENTS type ZIP2PE312_RECIPIENT .
928ENDCLASS.
929
930
931
932CLASS ZCL_P2PE312_NOTIF_MODEL IMPLEMENTATION.
933
934
935* <SIGNATURE>---------------------------------------------------------------------------------------+
936* | Instance Private Method ZCL_P2PE312_NOTIF_MODEL->ADD_DOC_KEY_TABLE
937* +-------------------------------------------------------------------------------------------------+
938* | [--->] IT_DOC_KEY TYPE MTY_T_DOC_KEY
939* | [<-->] CT_DOC_KEY TYPE MTY_T_DOC_KEY
940* +--------------------------------------------------------------------------------------</SIGNATURE>
941 METHOD add_doc_key_table.
942
943 LOOP AT it_doc_key ASSIGNING FIELD-SYMBOL(<ls_doc_key>).
944 INSERT <ls_doc_key> INTO TABLE ct_doc_key.
945 ENDLOOP.
946
947 ENDMETHOD.
948
949
950* <SIGNATURE>---------------------------------------------------------------------------------------+
951* | Instance Private Method ZCL_P2PE312_NOTIF_MODEL->ADD_NOTIFICATIONS_DATA
952* +-------------------------------------------------------------------------------------------------+
953* +--------------------------------------------------------------------------------------</SIGNATURE>
954 METHOD add_notifications_data.
955*--------------------------------------------------------------------*
956* Выбор дополнительных данных для уведомлений
957*--------------------------------------------------------------------*
958
959 LOOP AT mt_nsort ASSIGNING FIELD-SYMBOL(<ls_nsort>)
960 WHERE nactive = abap_true.
961 CASE <ls_nsort>-nsort.
962 WHEN zif_p2pe312_constants=>mcs_nsort-n01.
963* Данные уведомления 01 (Блокирование заявки на закупку)
964 DATA(lt_requisition_key) =
965 VALUE mty_t_requisition_key(
966 FOR GROUPS w_group OF <w_req> IN mt_requisition
967 GROUP BY ( banfn = <w_req>-banfn
968 bnfpo = <w_req>-bnfpo )
969 WITHOUT MEMBERS
970 ( banfn = w_group-banfn
971 bnfpo = w_group-bnfpo )
972 ).
973
974 fetch_notif_01(
975 EXPORTING
976 it_requisition_key = lt_requisition_key
977 irt_erdat = ms_sel-s_rnperd
978 ).
979
980 WHEN zif_p2pe312_constants=>mcs_nsort-n02.
981 WHEN zif_p2pe312_constants=>mcs_nsort-n03.
982 fetch_notif_03( irt_erdat = ms_sel-s_rnperd ).
983 WHEN zif_p2pe312_constants=>mcs_nsort-n04.
984 fetch_notif_04( irt_erdat = ms_sel-s_rnperd ).
985 WHEN zif_p2pe312_constants=>mcs_nsort-n07.
986 IF mv_mode <> zif_p2pe312_constants=>mcs_send_mode-online.
987 fetch_notif_07( ).
988 ENDIF.
989 WHEN zif_p2pe312_constants=>mcs_nsort-n09.
990* Выбор данных уведомления 09 (Уведомление заказчика при поступлении
991* ТМЦ на центральный завод )
992 IF mv_mode <> zif_p2pe312_constants=>mcs_send_mode-online.
993 fetch_notif_09( ).
994 ENDIF.
995 WHEN zif_p2pe312_constants=>mcs_nsort-n10.
996 fetch_notif_10( irt_erdat = ms_sel-s_rnperd ).
997 WHEN zif_p2pe312_constants=>mcs_nsort-n11.
998 fetch_notif_11( ).
999 ENDCASE.
1000 ENDLOOP.
1001
1002 ENDMETHOD.
1003
1004
1005* <SIGNATURE>---------------------------------------------------------------------------------------+
1006* | Instance Private Method ZCL_P2PE312_NOTIF_MODEL->ADD_PEGGING_SECOND
1007* +-------------------------------------------------------------------------------------------------+
1008* | [--->] IS_INQ_REQ TYPE MTY_S_PEGGING
1009* | [--->] IT_PEG_SEC TYPE MTY_T_PEGGING
1010* | [--->] IS_INQ_PEG TYPE MTY_S_PEGGING
1011* | [<-->] CT_INQUIRY_PEG TYPE MTY_T_PEGGING
1012* +--------------------------------------------------------------------------------------</SIGNATURE>
1013 METHOD add_pegging_second.
1014
1015 LOOP AT it_peg_sec ASSIGNING FIELD-SYMBOL(<ls_peg_sec>) WHERE delkz = if_pph_mrp_constants=>gc_delkz_bsanf " связь через промежуточную заявку
1016 AND delnr = is_inq_req-delnr
1017 AND delps = is_inq_req-delps
1018 AND delet = is_inq_req-delet.
1019 DATA(ls_pegging) = VALUE mty_s_pegging(
1020 reqnr = <ls_peg_sec>-reqnr " конечная потребность
1021 reqps = <ls_peg_sec>-reqps
1022 reqet = <ls_peg_sec>-reqet
1023 delkz = is_inq_peg-delkz " начальная заявка/заказ на поставку
1024 delnr = is_inq_peg-delnr
1025 delps = is_inq_peg-delps
1026 delet = is_inq_peg-delet
1027 ).
1028 READ TABLE ct_inquiry_peg TRANSPORTING NO FIELDS WITH KEY reqnr = ls_pegging-reqnr
1029 reqps = ls_pegging-reqps
1030 reqet = ls_pegging-reqet
1031 delkz = ls_pegging-delkz
1032 delnr = ls_pegging-delnr
1033 delps = ls_pegging-delps
1034 delet = ls_pegging-delet.
1035 IF sy-subrc <> 0.
1036 INSERT ls_pegging INTO TABLE ct_inquiry_peg.
1037 ENDIF.
1038 ENDLOOP.
1039
1040 ENDMETHOD.
1041
1042
1043* <SIGNATURE>---------------------------------------------------------------------------------------+
1044* | Instance Private Method ZCL_P2PE312_NOTIF_MODEL->ADD_PEGGING_SECOND_REV
1045* +-------------------------------------------------------------------------------------------------+
1046* | [--->] IT_INQUIRY_PEG TYPE MTY_T_PEGGING
1047* | [--->] IT_INQUIRY_MANUAL TYPE MTY_T_PEGGING
1048* | [<-->] CT_PEGGING_KEY TYPE MTY_T_PEGGING
1049* +--------------------------------------------------------------------------------------</SIGNATURE>
1050 METHOD add_pegging_second_rev.
1051
1052 DATA: lt_pegging_key TYPE mty_t_pegging.
1053
1054 LOOP AT ct_pegging_key ASSIGNING FIELD-SYMBOL(<ls_pegging_key>).
1055 LOOP AT it_inquiry_manual ASSIGNING FIELD-SYMBOL(<ls_manual>) WHERE delkz = if_pph_mrp_constants=>gc_delkz_bsanf
1056 AND delnr = <ls_pegging_key>-delnr
1057 AND delps = <ls_pegging_key>-delps.
1058 LOOP AT it_inquiry_peg ASSIGNING FIELD-SYMBOL(<ls_inq_peg>)
1059 WHERE reqnr = <ls_manual>-reqnr
1060 AND reqps = <ls_manual>-reqps
1061 AND reqet = <ls_manual>-reqet.
1062 DATA(ls_pegging) = VALUE mty_s_pegging(
1063 reqnr = <ls_pegging_key>-reqnr
1064 reqps = <ls_pegging_key>-reqps
1065 reqet = <ls_pegging_key>-reqet
1066 delkz = <ls_inq_peg>-delkz
1067 delnr = <ls_inq_peg>-delnr
1068 delps = <ls_inq_peg>-delps
1069 delet = <ls_inq_peg>-delet
1070 ).
1071 INSERT ls_pegging INTO TABLE lt_pegging_key.
1072 ENDLOOP.
1073 ENDLOOP.
1074 ENDLOOP.
1075
1076 LOOP AT lt_pegging_key ASSIGNING FIELD-SYMBOL(<ls_peg>).
1077 READ TABLE ct_pegging_key TRANSPORTING NO FIELDS WITH KEY reqnr = <ls_peg>-reqnr
1078 reqps = <ls_peg>-reqps
1079 reqet = <ls_peg>-reqet
1080 delkz = <ls_peg>-delkz
1081 delnr = <ls_peg>-delnr
1082 delps = <ls_peg>-delps
1083 delet = <ls_peg>-delet.
1084 IF sy-subrc <> 0.
1085 INSERT <ls_peg> INTO TABLE ct_pegging_key.
1086 ENDIF.
1087 ENDLOOP.
1088
1089 ENDMETHOD.
1090
1091
1092* <SIGNATURE>---------------------------------------------------------------------------------------+
1093* | Instance Private Method ZCL_P2PE312_NOTIF_MODEL->BUILD_ALV_PLANNED_ORDER
1094* +-------------------------------------------------------------------------------------------------+
1095* +--------------------------------------------------------------------------------------</SIGNATURE>
1096 METHOD build_alv_planned_order.
1097
1098 DATA: ls_alv TYPE zsp2pe312_notif_sys_alv.
1099
1100 DATA(lt_matnr_werks) =
1101 VALUE mty_t_matnr_werks(
1102 FOR GROUPS ls_group OF <ls_alv_gr> IN mt_alv
1103 WHERE ( matnr IS NOT INITIAL AND
1104 pwerks IS NOT INITIAL )
1105 GROUP BY ( matnr = <ls_alv_gr>-matnr
1106 werks = <ls_alv_gr>-pwerks )
1107 WITHOUT MEMBERS
1108 ( matnr = ls_group-matnr
1109 werks = ls_group-werks )
1110 ).
1111
1112 IF lt_matnr_werks IS INITIAL.
1113 RETURN.
1114 ENDIF.
1115
1116 SELECT plaf~plnum, plaf~matnr, plaf~plwrk
1117 FROM plaf
1118 FOR ALL ENTRIES IN @lt_matnr_werks
1119 WHERE matnr = @lt_matnr_werks-matnr
1120 AND plwrk = @lt_matnr_werks-werks
1121 INTO TABLE @DATA(lt_plaf).
1122
1123 IF lt_plaf IS INITIAL.
1124 RETURN.
1125 ENDIF.
1126
1127 DATA(lt_pegging_key) =
1128 VALUE mty_t_pegging_key(
1129 FOR GROUPS ls_peg_gr OF <ls_plaf_gr> IN lt_plaf
1130 GROUP BY ( delnr = <ls_plaf_gr>-plnum
1131 matnr = <ls_plaf_gr>-matnr
1132 werks = <ls_plaf_gr>-plwrk )
1133 WITHOUT MEMBERS
1134 ( delnr = ls_peg_gr-delnr
1135 matnr = ls_peg_gr-matnr
1136 werks = ls_peg_gr-werks )
1137 ).
1138
1139 get_pegging_plan_order(
1140 EXPORTING
1141 it_pegging_key = lt_pegging_key
1142 IMPORTING
1143 et_pegging_plan_order = DATA(lt_pegging)
1144 ).
1145
1146 IF lt_pegging IS INITIAL.
1147 RETURN.
1148 ENDIF.
1149
1150 LOOP AT mt_alv ASSIGNING FIELD-SYMBOL(<ls_alv>).
1151* Подменяем тип документа из-за заказов торо
1152 CLEAR ls_alv.
1153 DATA(lv_doc_type) = <ls_alv>-doc_type.
1154 IF <ls_alv>-doc_type = zif_p2pe312_constants=>mcs_doc_type-pm.
1155 lv_doc_type = zif_p2pe312_constants=>mcs_doc_type-ps.
1156 ENDIF.
1157 IF <ls_alv>-doc_type = zif_p2pe312_constants=>mcs_doc_type-mm AND
1158 <ls_alv>-doc_sort = zif_p2pe312_constants=>mcs_doc_sort-nb.
1159 lv_doc_type = zif_p2pe312_constants=>mcs_doc_type-pr.
1160 ENDIF.
1161
1162 READ TABLE lt_pegging ASSIGNING FIELD-SYMBOL(<ls_pegging>)
1163 WITH KEY doc_type = lv_doc_type
1164 doc_num = <ls_alv>-doc_num
1165 doc_pos = <ls_alv>-doc_pos.
1166 IF sy-subrc = 0.
1167 ls_alv-rbukrs = <ls_alv>-rbukrs.
1168 ls_alv-bukrs = <ls_alv>-bukrs.
1169 ls_alv-rwerks = <ls_alv>-rwerks.
1170 ls_alv-pwerks = <ls_alv>-pwerks. " завод закупки
1171 ls_alv-rberid = <ls_alv>-rberid.
1172 ls_alv-matnr = <ls_alv>-matnr.
1173 ls_alv-maktx = <ls_alv>-maktx.
1174
1175 ls_alv-doc_sort = <ls_alv>-doc_sort. " вид документа потребности
1176 ls_alv-erdat = <ls_alv>-erdat.
1177 ls_alv-vbeln = <ls_alv>-vbeln.
1178 ls_alv-posnr = <ls_alv>-posnr.
1179 ls_alv-etenr = <ls_alv>-etenr.
1180 ls_alv-bdter = <ls_alv>-bdter.
1181 ls_alv-menge = <ls_alv>-menge.
1182 ls_alv-meins = <ls_alv>-meins.
1183 ls_alv-bwtar = <ls_alv>-bwtar.
1184 ls_alv-waers = <ls_alv>-waers.
1185 ls_alv-rernam = <ls_alv>-rernam.
1186 ls_alv-rernam_txt = <ls_alv>-rernam_txt.
1187 ls_alv-bwtar = <ls_alv>-bwtar.
1188 ls_alv-ekgrp = <ls_alv>-ekgrp.
1189
1190 ls_alv-rsobsl = <ls_alv>-rsobsl.
1191 ls_alv-rdismm = <ls_alv>-rdismm.
1192
1193 ls_alv-doc_num = <ls_alv>-doc_num.
1194 ls_alv-doc_pos = <ls_alv>-doc_pos.
1195 ls_alv-doc_type = <ls_alv>-doc_pos.
1196 ls_alv-doc_sort = <ls_alv>-doc_sort.
1197
1198 ls_alv-doc_num_send = <ls_alv>-doc_num_send.
1199 ls_alv-doc_pos_send = <ls_alv>-doc_pos_send.
1200
1201 ls_alv-rlgort = <ls_alv>-rlgort.
1202
1203 ls_alv-rbanfn = <ls_alv>-rbanfn.
1204 ls_alv-rbnfpo = <ls_alv>-rbnfpo.
1205
1206 ls_alv-rsnum = <ls_alv>-rsnum.
1207 ls_alv-rspos = <ls_alv>-rspos.
1208 ls_alv-aufnr = <ls_alv>-aufnr.
1209
1210 ls_alv-vornr = <ls_alv>-vornr.
1211 ls_alv-rposnr = <ls_alv>-rposnr.
1212
1213 ls_alv-stat_user = <ls_alv>-stat_user.
1214 ls_alv-stat_user_txt = <ls_alv>-stat_user_txt.
1215
1216 ls_alv-plgort = <ls_alv>-plgort.
1217
1218 ls_alv-minbe = <ls_alv>-minbe.
1219
1220 ls_alv-plnum = <ls_pegging>-plnum.
1221
1222 ls_alv-zpr2 = <ls_alv>-zpr2.
1223 ls_alv-zor2 = <ls_alv>-zor2.
1224 ls_alv-delivery = <ls_alv>-delivery.
1225
1226 APPEND ls_alv TO mt_alv.
1227
1228 ENDIF.
1229 ENDLOOP.
1230
1231
1232 ENDMETHOD.
1233
1234
1235* <SIGNATURE>---------------------------------------------------------------------------------------+
1236* | Instance Private Method ZCL_P2PE312_NOTIF_MODEL->BUILD_ALV_TAB
1237* +-------------------------------------------------------------------------------------------------+
1238* +--------------------------------------------------------------------------------------</SIGNATURE>
1239 METHOD build_alv_tab.
1240*--------------------------------------------------------------------*
1241* Заполнение ALV-таблицы общими данными
1242*--------------------------------------------------------------------*
1243
1244* Заполнение ALV-таблицы по потребностям
1245 build_alv_tab_can( CHANGING ct_alv = mt_alv ).
1246 build_alv_tab_inq( CHANGING ct_alv = mt_alv ).
1247 build_alv_tab_res( CHANGING ct_alv = mt_alv ).
1248 build_alv_tab_transf( CHANGING ct_alv = mt_alv ).
1249
1250* Пост-обработка ALV таблицы
1251 build_alv_tab_post( ).
1252
1253 ENDMETHOD.
1254
1255
1256* <SIGNATURE>---------------------------------------------------------------------------------------+
1257* | Instance Private Method ZCL_P2PE312_NOTIF_MODEL->BUILD_ALV_TAB_CAN
1258* +-------------------------------------------------------------------------------------------------+
1259* | [<-->] CT_ALV TYPE ZIP2PE312_NOTIF_SYS_ALV
1260* +--------------------------------------------------------------------------------------</SIGNATURE>
1261 METHOD build_alv_tab_can.
1262*--------------------------------------------------------------------*
1263* Формирование ALV строк по списаниям
1264*--------------------------------------------------------------------*
1265
1266 DATA: ls_alv TYPE zsp2pe312_notif_sys_alv,
1267 lv_found TYPE boolean.
1268
1269 LOOP AT mt_cancelation ASSIGNING FIELD-SYMBOL(<ls_cancelation>).
1270 CLEAR ls_alv.
1271
1272 ls_alv-rbukrs = <ls_cancelation>-bukrs.
1273 ls_alv-bukrs = <ls_cancelation>-bukrs.
1274 ls_alv-rwerks = <ls_cancelation>-r_werks.
1275 ls_alv-pwerks = <ls_cancelation>-p_werks.
1276 ls_alv-rberid = <ls_cancelation>-r_berid.
1277 ls_alv-matnr = <ls_cancelation>-matnr.
1278 ls_alv-maktx = <ls_cancelation>-maktx.
1279 ls_alv-doc_sort = <ls_cancelation>-bsart.
1280 ls_alv-erdat = <ls_cancelation>-badat.
1281 ls_alv-rbanfn = <ls_cancelation>-banfn.
1282 ls_alv-rbnfpo = <ls_cancelation>-bnfpo.
1283 ls_alv-bdter = <ls_cancelation>-lfdat.
1284 ls_alv-menge = <ls_cancelation>-menge.
1285 ls_alv-meins = <ls_cancelation>-meins.
1286 ls_alv-bwtar = <ls_cancelation>-bwtar.
1287 ls_alv-waers = <ls_cancelation>-waers.
1288 ls_alv-rernam = <ls_cancelation>-ernam.
1289 ls_alv-rernam_txt = <ls_cancelation>-name.
1290 ls_alv-ekgrp = <ls_cancelation>-r_ekgrp.
1291
1292 ls_alv-rsobsl = <ls_cancelation>-r_sobsl.
1293 ls_alv-rdismm = <ls_cancelation>-r_dismm.
1294
1295 ls_alv-doc_num = <ls_cancelation>-banfn.
1296 ls_alv-doc_pos = <ls_cancelation>-bnfpo.
1297 ls_alv-doc_type = <ls_cancelation>-doc_type.
1298 ls_alv-doc_sort = <ls_cancelation>-bsart.
1299
1300 ls_alv-doc_num_send = <ls_cancelation>-banfn.
1301 ls_alv-doc_pos_send = <ls_cancelation>-bnfpo.
1302 ls_alv-rlgort = <ls_cancelation>-rlgort.
1303
1304
1305 CLEAR lv_found.
1306 LOOP AT mt_cancelation_peg ASSIGNING FIELD-SYMBOL(<ls_cancelation_peg>)
1307 WHERE reqnr = <ls_cancelation>-banfn
1308 AND reqps = <ls_cancelation>-bnfpo
1309 AND reqet IS INITIAL.
1310
1311 CASE <ls_cancelation_peg>-delkz.
1312 WHEN if_pph_mrp_constants=>gc_delkz_bsanf.
1313* Нет заказа на поставку
1314 LOOP AT mt_requisition ASSIGNING FIELD-SYMBOL(<ls_requisition>)
1315 WHERE banfn = <ls_cancelation_peg>-delnr
1316 AND bnfpo = <ls_cancelation_peg>-delps.
1317 move_req_to_alv(
1318 EXPORTING
1319 is_requisition = <ls_requisition>
1320 CHANGING
1321 cs_alv = ls_alv
1322 ).
1323
1324 lv_found = abap_true.
1325 APPEND ls_alv TO ct_alv.
1326 ENDLOOP.
1327
1328 WHEN if_pph_mrp_constants=>gc_delkz_bsein.
1329* есть заказ на поставку
1330 LOOP AT mt_requisition ASSIGNING <ls_requisition> USING KEY ebeln
1331 WHERE ebeln = <ls_cancelation_peg>-delnr
1332 AND ebelp = <ls_cancelation_peg>-delps
1333 AND etenr = <ls_cancelation_peg>-delet.
1334 move_req_to_alv(
1335 EXPORTING
1336 is_requisition = <ls_requisition>
1337 CHANGING
1338 cs_alv = ls_alv
1339 ).
1340
1341 lv_found = abap_true.
1342 APPEND ls_alv TO ct_alv.
1343 ENDLOOP.
1344 ENDCASE.
1345
1346 ENDLOOP.
1347* Выводим потребности с ППМ по точке отказа
1348 IF lv_found <> abap_true.
1349* AND mrt_dismm IS NOT INITIAL
1350* AND <ls_cancelation>-dismm IN mrt_dismm.
1351 APPEND ls_alv TO ct_alv.
1352 ENDIF.
1353 ENDLOOP.
1354
1355
1356 ENDMETHOD.
1357
1358
1359* <SIGNATURE>---------------------------------------------------------------------------------------+
1360* | Instance Private Method ZCL_P2PE312_NOTIF_MODEL->BUILD_ALV_TAB_ICONS
1361* +-------------------------------------------------------------------------------------------------+
1362* +--------------------------------------------------------------------------------------</SIGNATURE>
1363 METHOD build_alv_tab_icons.
1364*--------------------------------------------------------------------*
1365* Заполнение индикаторов для уведомлений после всех проверок
1366*--------------------------------------------------------------------*
1367
1368 LOOP AT mt_alv ASSIGNING FIELD-SYMBOL(<ls_alv>).
1369 LOOP AT mt_nsort ASSIGNING FIELD-SYMBOL(<ls_nsort>).
1370 ASSIGN COMPONENT 'EVENT_FLAG_' && <ls_nsort>-nsort OF STRUCTURE <ls_alv> TO FIELD-SYMBOL(<lv_flag>).
1371 ASSIGN COMPONENT 'EVENT_ACT_' && <ls_nsort>-nsort OF STRUCTURE <ls_alv> TO FIELD-SYMBOL(<lv_act>).
1372 IF <lv_flag> IS ASSIGNED AND
1373 <lv_act> IS ASSIGNED.
1374 IF <lv_flag> = abap_true.
1375 <lv_act> = icon_green_light.
1376 ELSE.
1377 <lv_act> = icon_light_out.
1378 ENDIF.
1379 UNASSIGN: <lv_flag>, <lv_act>.
1380 ENDIF.
1381 ENDLOOP.
1382 ENDLOOP.
1383
1384 ENDMETHOD.
1385
1386
1387* <SIGNATURE>---------------------------------------------------------------------------------------+
1388* | Instance Private Method ZCL_P2PE312_NOTIF_MODEL->BUILD_ALV_TAB_INQ
1389* +-------------------------------------------------------------------------------------------------+
1390* | [<-->] CT_ALV TYPE ZIP2PE312_NOTIF_SYS_ALV
1391* +--------------------------------------------------------------------------------------</SIGNATURE>
1392 METHOD build_alv_tab_inq.
1393*--------------------------------------------------------------------*
1394* Формирование ALV строк по запросам
1395*--------------------------------------------------------------------*
1396
1397 DATA: ls_alv TYPE zsp2pe312_notif_sys_alv,
1398 lv_found TYPE boolean.
1399
1400* Запросы
1401 LOOP AT mt_inquiry ASSIGNING FIELD-SYMBOL(<ls_inquiry>).
1402 CLEAR ls_alv.
1403
1404 ls_alv-rbukrs = <ls_inquiry>-bukrs.
1405 ls_alv-bukrs = <ls_inquiry>-bukrs.
1406 ls_alv-rwerks = <ls_inquiry>-r_werks.
1407 ls_alv-pwerks = <ls_inquiry>-p_werks. " завод закупки
1408 ls_alv-rberid = <ls_inquiry>-r_berid.
1409 ls_alv-matnr = <ls_inquiry>-matnr.
1410 ls_alv-maktx = <ls_inquiry>-maktx.
1411 ls_alv-doc_sort = <ls_inquiry>-auart. " вид документа потребности
1412 ls_alv-erdat = <ls_inquiry>-erdat.
1413 ls_alv-vbeln = <ls_inquiry>-vbeln.
1414 ls_alv-posnr = <ls_inquiry>-posnr.
1415 ls_alv-etenr = <ls_inquiry>-etenr.
1416 ls_alv-bdter = <ls_inquiry>-edatu.
1417 ls_alv-menge = <ls_inquiry>-klmeng.
1418 ls_alv-meins = <ls_inquiry>-meins.
1419 ls_alv-bwtar = <ls_inquiry>-bwtar.
1420 ls_alv-waers = <ls_inquiry>-waers.
1421 ls_alv-rernam = <ls_inquiry>-ernam.
1422 ls_alv-rernam_txt = <ls_inquiry>-name.
1423 ls_alv-bwtar = <ls_inquiry>-bwtar.
1424 ls_alv-ekgrp = <ls_inquiry>-r_ekgrp.
1425
1426 ls_alv-rsobsl = <ls_inquiry>-r_sobsl.
1427 ls_alv-rdismm = <ls_inquiry>-r_dismm.
1428
1429 ls_alv-doc_num = <ls_inquiry>-vbeln.
1430 ls_alv-doc_pos = <ls_inquiry>-posnr.
1431 ls_alv-doc_type = <ls_inquiry>-doc_type.
1432 ls_alv-doc_sort = <ls_inquiry>-auart.
1433
1434 ls_alv-doc_num_send = <ls_inquiry>-vbeln.
1435 ls_alv-doc_pos_send = <ls_inquiry>-posnr.
1436
1437 ls_alv-rlgort = <ls_inquiry>-rlgort.
1438
1439 ls_alv-zpr2 = <ls_inquiry>-zpr2.
1440 ls_alv-zor2 = <ls_inquiry>-zor2.
1441 ls_alv-delivery = <ls_inquiry>-delivery.
1442
1443 CALL FUNCTION 'CONVERSION_EXIT_ABPSP_OUTPUT'
1444 EXPORTING
1445 input = <ls_inquiry>-ps_psp_pnr
1446 IMPORTING
1447 output = ls_alv-projn.
1448
1449 CLEAR lv_found.
1450 LOOP AT mt_inquiry_peg ASSIGNING FIELD-SYMBOL(<ls_inquiry_peg>)
1451 WHERE reqnr = <ls_inquiry>-vbeln
1452 AND reqps = <ls_inquiry>-posnr
1453 AND reqet = <ls_inquiry>-etenr.
1454 CASE <ls_inquiry_peg>-delkz.
1455 WHEN if_pph_mrp_constants=>gc_delkz_bsanf.
1456* Нет заказа на поставку
1457 LOOP AT mt_requisition ASSIGNING FIELD-SYMBOL(<ls_requisition>)
1458 WHERE banfn = <ls_inquiry_peg>-delnr
1459 AND bnfpo = <ls_inquiry_peg>-delps.
1460 move_req_to_alv(
1461 EXPORTING
1462 is_requisition = <ls_requisition>
1463 CHANGING
1464 cs_alv = ls_alv
1465 ).
1466
1467 lv_found = abap_true.
1468 APPEND ls_alv TO ct_alv.
1469 ENDLOOP.
1470
1471 WHEN if_pph_mrp_constants=>gc_delkz_bsein.
1472* есть заказ на поставку
1473 LOOP AT mt_requisition ASSIGNING <ls_requisition> USING KEY ebeln
1474 WHERE ebeln = <ls_inquiry_peg>-delnr
1475 AND ebelp = <ls_inquiry_peg>-delps
1476 AND etenr = <ls_inquiry_peg>-delet.
1477 move_req_to_alv(
1478 EXPORTING
1479 is_requisition = <ls_requisition>
1480 CHANGING
1481 cs_alv = ls_alv
1482 ).
1483
1484 lv_found = abap_true.
1485 APPEND ls_alv TO ct_alv.
1486 ENDLOOP.
1487 ENDCASE.
1488
1489 ENDLOOP.
1490* Выводим потребности с ППМ по точке отказа
1491 IF lv_found <> abap_true.
1492* AND mrt_dismm IS NOT INITIAL
1493* AND <ls_inquiry>-dismm IN mrt_dismm.
1494 APPEND ls_alv TO ct_alv.
1495 ENDIF.
1496
1497 ENDLOOP.
1498
1499
1500 ENDMETHOD.
1501
1502
1503* <SIGNATURE>---------------------------------------------------------------------------------------+
1504* | Instance Private Method ZCL_P2PE312_NOTIF_MODEL->BUILD_ALV_TAB_NOTIF
1505* +-------------------------------------------------------------------------------------------------+
1506* +--------------------------------------------------------------------------------------</SIGNATURE>
1507 METHOD build_alv_tab_notif.
1508*--------------------------------------------------------------------*
1509* Заполнение доп. данных в ALV по уведомлениям
1510*--------------------------------------------------------------------*
1511
1512 LOOP AT mt_nsort ASSIGNING FIELD-SYMBOL(<ls_nsort>) WHERE nactive = abap_true.
1513 CASE <ls_nsort>-nsort.
1514 WHEN zif_p2pe312_constants=>mcs_nsort-n01.
1515 build_alv_tab_notif_01( ).
1516 WHEN zif_p2pe312_constants=>mcs_nsort-n02.
1517 build_alv_tab_notif_02( ).
1518 WHEN zif_p2pe312_constants=>mcs_nsort-n03.
1519 build_alv_tab_notif_03( ).
1520 WHEN zif_p2pe312_constants=>mcs_nsort-n04.
1521 build_alv_tab_notif_04( ).
1522 WHEN zif_p2pe312_constants=>mcs_nsort-n07.
1523 build_alv_tab_notif_07( ).
1524 WHEN zif_p2pe312_constants=>mcs_nsort-n08.
1525 build_alv_tab_notif_08( ).
1526 WHEN zif_p2pe312_constants=>mcs_nsort-n09.
1527 build_alv_tab_notif_09( ).
1528 WHEN zif_p2pe312_constants=>mcs_nsort-n10.
1529 build_alv_tab_notif_10( ).
1530 WHEN zif_p2pe312_constants=>mcs_nsort-n11.
1531 build_alv_tab_notif_11( ).
1532 ENDCASE.
1533 ENDLOOP.
1534
1535 ENDMETHOD.
1536
1537
1538* <SIGNATURE>---------------------------------------------------------------------------------------+
1539* | Instance Private Method ZCL_P2PE312_NOTIF_MODEL->BUILD_ALV_TAB_NOTIF_01
1540* +-------------------------------------------------------------------------------------------------+
1541* +--------------------------------------------------------------------------------------</SIGNATURE>
1542 METHOD build_alv_tab_notif_01.
1543
1544 LOOP AT mt_alv ASSIGNING FIELD-SYMBOL(<ls_alv>).
1545
1546 READ TABLE mt_notif_01 ASSIGNING FIELD-SYMBOL(<ls_notif_01>)
1547 WITH KEY edokn = <ls_alv>-pbanfn
1548 edokp = <ls_alv>-pbnfpo.
1549 IF sy-subrc = 0.
1550 <ls_alv>-rscod_01 = <ls_notif_01>-rscod.
1551 <ls_alv>-blernam_01 = <ls_notif_01>-ernam.
1552 <ls_alv>-blerdat_01 = <ls_notif_01>-erdat.
1553 <ls_alv>-blernam_txt_01 = <ls_notif_01>-name.
1554 <ls_alv>-blckt = <ls_notif_01>-blckt.
1555
1556 <ls_alv>-event_date_01 = <ls_alv>-blerdat_01.
1557 <ls_alv>-event_flag_01 = abap_true.
1558 ENDIF.
1559
1560 ENDLOOP.
1561
1562 ENDMETHOD.
1563
1564
1565* <SIGNATURE>---------------------------------------------------------------------------------------+
1566* | Instance Private Method ZCL_P2PE312_NOTIF_MODEL->BUILD_ALV_TAB_NOTIF_02
1567* +-------------------------------------------------------------------------------------------------+
1568* +--------------------------------------------------------------------------------------</SIGNATURE>
1569 METHOD build_alv_tab_notif_02.
1570
1571 DATA: lv_days TYPE int4.
1572
1573 lv_days = ycl_const_utils=>get_tvvalue( zif_p2pe312_constants=>mc_tvarv_no_po_days ).
1574
1575 IF lv_days IS INITIAL.
1576 RETURN.
1577 ENDIF.
1578
1579 LOOP AT mt_alv ASSIGNING FIELD-SYMBOL(<ls_alv>).
1580 IF <ls_alv>-pbanfn IS NOT INITIAL AND
1581 <ls_alv>-pbnfpo IS NOT INITIAL AND
1582 <ls_alv>-ebeln IS INITIAL.
1583 READ TABLE mt_requisition ASSIGNING FIELD-SYMBOL(<ls_req>)
1584 WITH KEY banfn = <ls_alv>-pbanfn
1585 bnfpo = <ls_alv>-pbnfpo.
1586 IF sy-subrc = 0.
1587 IF ( <ls_req>-frgdt < CONV datum( sy-datum - lv_days ) ) AND
1588 ( <ls_req>-frgdt IN ms_sel-s_nperd[] ).
1589 <ls_alv>-event_flag_02 = abap_true.
1590 <ls_alv>-event_date_02 = <ls_req>-frgdt.
1591 ENDIF.
1592 ENDIF.
1593 ENDIF.
1594 ENDLOOP.
1595
1596 ENDMETHOD.
1597
1598
1599* <SIGNATURE>---------------------------------------------------------------------------------------+
1600* | Instance Private Method ZCL_P2PE312_NOTIF_MODEL->BUILD_ALV_TAB_NOTIF_03
1601* +-------------------------------------------------------------------------------------------------+
1602* +--------------------------------------------------------------------------------------</SIGNATURE>
1603 METHOD build_alv_tab_notif_03.
1604
1605 IF mv_mode = zif_p2pe312_constants=>mcs_send_mode-online.
1606 LOOP AT mt_requisition ASSIGNING FIELD-SYMBOL(<ls_req>).
1607 READ TABLE mt_alv TRANSPORTING NO FIELDS WITH KEY pbanfn = <ls_req>-banfn
1608 pbnfpo = <ls_req>-bnfpo.
1609 IF sy-subrc <> 0.
1610 APPEND INITIAL LINE TO mt_alv ASSIGNING FIELD-SYMBOL(<ls_alv>).
1611 move_req_to_alv(
1612 EXPORTING
1613 is_requisition = <ls_req>
1614 CHANGING
1615 cs_alv = <ls_alv>
1616 ).
1617 ENDIF.
1618 ENDLOOP.
1619 ENDIF.
1620
1621 LOOP AT mt_alv ASSIGNING <ls_alv>.
1622
1623 READ TABLE mt_notif_03 ASSIGNING FIELD-SYMBOL(<ls_notif_03>)
1624 WITH KEY ebeln = <ls_alv>-ebeln.
1625 IF sy-subrc = 0.
1626 <ls_alv>-username_03 = <ls_notif_03>-username.
1627 <ls_alv>-udate_03 = <ls_notif_03>-udate.
1628 <ls_alv>-username_txt_03 = <ls_notif_03>-name.
1629 <ls_alv>-canc_text_03 = <ls_notif_03>-text.
1630
1631 <ls_alv>-event_flag_03 = abap_true.
1632 ENDIF.
1633
1634 ENDLOOP.
1635
1636 ENDMETHOD.
1637
1638
1639* <SIGNATURE>---------------------------------------------------------------------------------------+
1640* | Instance Private Method ZCL_P2PE312_NOTIF_MODEL->BUILD_ALV_TAB_NOTIF_04
1641* +-------------------------------------------------------------------------------------------------+
1642* +--------------------------------------------------------------------------------------</SIGNATURE>
1643 METHOD build_alv_tab_notif_04.
1644
1645 LOOP AT mt_alv ASSIGNING FIELD-SYMBOL(<ls_alv>) WHERE ebeln IS NOT INITIAL AND
1646 ebelp IS NOT INITIAL.
1647
1648 READ TABLE mt_notif_04 ASSIGNING FIELD-SYMBOL(<ls_notif_04>)
1649 WITH KEY ebeln = <ls_alv>-ebeln
1650 ebelp = <ls_alv>-ebelp.
1651 IF sy-subrc <> 0 AND
1652 <ls_alv>-eindt IS NOT INITIAL AND
1653 <ls_alv>-eindt < sy-datum.
1654 <ls_alv>-event_flag_04 = abap_true.
1655 ENDIF.
1656
1657 ENDLOOP.
1658
1659 ENDMETHOD.
1660
1661
1662* <SIGNATURE>---------------------------------------------------------------------------------------+
1663* | Instance Private Method ZCL_P2PE312_NOTIF_MODEL->BUILD_ALV_TAB_NOTIF_07
1664* +-------------------------------------------------------------------------------------------------+
1665* +--------------------------------------------------------------------------------------</SIGNATURE>
1666 METHOD build_alv_tab_notif_07.
1667
1668 DATA: lv_bdter TYPE int4,
1669 lv_doc_type TYPE zp2pe312_doc_type.
1670
1671 lv_bdter = ycl_const_utils=>get_tvvalue( zif_p2pe312_constants=>mc_tvarv_bdter_days_07 ).
1672
1673 LOOP AT mt_alv ASSIGNING FIELD-SYMBOL(<ls_alv>).
1674
1675* Подменяем тип документа из-за заказов торо
1676 lv_doc_type = <ls_alv>-doc_type.
1677 IF <ls_alv>-doc_type = zif_p2pe312_constants=>mcs_doc_type-pm.
1678 lv_doc_type = zif_p2pe312_constants=>mcs_doc_type-ps.
1679 ENDIF.
1680 IF <ls_alv>-doc_type = zif_p2pe312_constants=>mcs_doc_type-mm AND
1681 <ls_alv>-doc_sort = zif_p2pe312_constants=>mcs_doc_sort-nb.
1682 lv_doc_type = zif_p2pe312_constants=>mcs_doc_type-pr.
1683 ENDIF.
1684
1685
1686 READ TABLE mt_pegging_stock_07 ASSIGNING FIELD-SYMBOL(<ls_peg_stock>)
1687 WITH KEY doc_type = lv_doc_type
1688 doc_num = <ls_alv>-doc_num
1689 doc_pos = <ls_alv>-doc_pos.
1690
1691 IF sy-subrc = 0.
1692 READ TABLE mt_notif_07 ASSIGNING FIELD-SYMBOL(<ls_notif>)
1693 WITH KEY berid
1694 COMPONENTS matnr = <ls_peg_stock>-matnr
1695 werks = <ls_peg_stock>-werks
1696 berid = <ls_peg_stock>-berid.
1697 IF sy-subrc = 0.
1698 <ls_alv>-cpwerks_07 = <ls_notif>-werks.
1699 <ls_alv>-cplgort_07 = <ls_notif>-lgort.
1700 <ls_alv>-event_date_07 = <ls_notif>-budat.
1701 <ls_alv>-event_flag_07 = abap_true.
1702
1703 READ TABLE mt_labst_07 ASSIGNING FIELD-SYMBOL(<ls_labst_07>)
1704 WITH KEY matnr = <ls_notif>-matnr
1705 werks = <ls_notif>-werks.
1706 IF sy-subrc = 0.
1707 <ls_alv>-labst_07 = <ls_labst_07>-labst.
1708 ENDIF.
1709 ENDIF.
1710 ENDIF.
1711
1712 ENDLOOP.
1713
1714 ENDMETHOD.
1715
1716
1717* <SIGNATURE>---------------------------------------------------------------------------------------+
1718* | Instance Private Method ZCL_P2PE312_NOTIF_MODEL->BUILD_ALV_TAB_NOTIF_08
1719* +-------------------------------------------------------------------------------------------------+
1720* +--------------------------------------------------------------------------------------</SIGNATURE>
1721 METHOD BUILD_ALV_TAB_NOTIF_08.
1722
1723 LOOP AT mt_notif_08 ASSIGNING FIELD-SYMBOL(<ls_notif>).
1724 APPEND INITIAL LINE TO mt_alv ASSIGNING FIELD-SYMBOL(<ls_alv>).
1725 <ls_alv>-bukrs = <ls_notif>-bukrs.
1726 <ls_alv>-pwerks = <ls_notif>-werks.
1727 <ls_alv>-ekgrp = <ls_notif>-ekgrp.
1728 <ls_alv>-matnr = <ls_notif>-matnr.
1729 <ls_alv>-maktx = <ls_notif>-maktx.
1730 <ls_alv>-mtart_08 = <ls_notif>-mtart.
1731 <ls_alv>-matkl_08 = <ls_notif>-matkl.
1732 <ls_alv>-mara_lvorm_08 = <ls_notif>-mara_lvorm.
1733 <ls_alv>-marc_lvorm_08 = <ls_notif>-marc_lvorm.
1734 <ls_alv>-plifz_old_08 = <ls_notif>-plifz_old.
1735 <ls_alv>-plifz_new_08 = <ls_notif>-plifz_new.
1736
1737 <ls_alv>-event_flag_08 = abap_true.
1738 ENDLOOP.
1739
1740 ENDMETHOD.
1741
1742
1743* <SIGNATURE>---------------------------------------------------------------------------------------+
1744* | Instance Private Method ZCL_P2PE312_NOTIF_MODEL->BUILD_ALV_TAB_NOTIF_09
1745* +-------------------------------------------------------------------------------------------------+
1746* +--------------------------------------------------------------------------------------</SIGNATURE>
1747 METHOD build_alv_tab_notif_09.
1748
1749 DATA: lv_bdter TYPE int4,
1750 lv_doc_type TYPE zp2pe312_doc_type.
1751
1752 lv_bdter = ycl_const_utils=>get_tvvalue( zif_p2pe312_constants=>mc_tvarv_bdter_days_09 ).
1753
1754 LOOP AT mt_alv ASSIGNING FIELD-SYMBOL(<ls_alv>).
1755
1756* Подменяем тип документа из-за заказов торо
1757 lv_doc_type = <ls_alv>-doc_type.
1758 IF <ls_alv>-doc_type = zif_p2pe312_constants=>mcs_doc_type-pm.
1759 lv_doc_type = zif_p2pe312_constants=>mcs_doc_type-ps.
1760 ENDIF.
1761 IF <ls_alv>-doc_type = zif_p2pe312_constants=>mcs_doc_type-mm AND
1762 <ls_alv>-doc_sort = zif_p2pe312_constants=>mcs_doc_sort-nb.
1763 lv_doc_type = zif_p2pe312_constants=>mcs_doc_type-pr.
1764 ENDIF.
1765
1766
1767 READ TABLE mt_pegging_stock_09 ASSIGNING FIELD-SYMBOL(<ls_peg_stock>)
1768 WITH KEY doc_type = lv_doc_type
1769 doc_num = <ls_alv>-doc_num
1770 doc_pos = <ls_alv>-doc_pos.
1771
1772 IF sy-subrc = 0.
1773 <ls_alv>-rqlabst_09 = <ls_peg_stock>-mng02.
1774 IF <ls_peg_stock>-mng01 = <ls_peg_stock>-mng02.
1775 <ls_alv>-rqlabst_stat_09 = icon_checked.
1776 ELSEIF <ls_peg_stock>-mng01 > <ls_peg_stock>-mng02.
1777 <ls_alv>-rqlabst_stat_09 = icon_failure.
1778 ENDIF.
1779
1780 READ TABLE mt_notif_09 ASSIGNING FIELD-SYMBOL(<ls_notif>)
1781 WITH KEY berid
1782 COMPONENTS matnr = <ls_peg_stock>-matnr
1783 werks = <ls_peg_stock>-werks
1784 berid = <ls_peg_stock>-berid
1785*{ INSERT 3100013263
1786 lgort = <ls_alv>-rlgort
1787*} INSERT 3100013263
1788 .
1789 IF sy-subrc = 0.
1790* <ls_alv>-cpebeln_09 = <ls_notif>-ebeln.
1791* <ls_alv>-cpebelp_09 = <ls_notif>-ebelp.
1792 <ls_alv>-cpwerks_09 = <ls_notif>-werks.
1793 <ls_alv>-cplgort_09 = <ls_notif>-lgort.
1794 <ls_alv>-rqgr_menge_09 = <ls_notif>-menge.
1795 <ls_alv>-event_date_09 = <ls_notif>-budat.
1796* <ls_alv>-eindt_09 = <ls_notif>-eindt.
1797* <ls_alv>-cbanfn_09 = <ls_notif>-banfn.
1798* <ls_alv>-cbnfpo_09 = <ls_notif>-bnfpo.
1799
1800 READ TABLE mt_sndlog_09 ASSIGNING FIELD-SYMBOL(<ls_sndlog_09>)
1801 WITH KEY doc_num = <ls_alv>-doc_num
1802 doc_pos = <ls_alv>-doc_pos.
1803 IF sy-subrc <> 0.
1804 READ TABLE mt_sndlog ASSIGNING <ls_sndlog_09> WITH KEY doc_num = <ls_alv>-doc_num
1805 doc_pos = <ls_alv>-doc_pos.
1806 ENDIF.
1807 IF <ls_sndlog_09> IS ASSIGNED.
1808 READ TABLE mt_purch_ord ASSIGNING FIELD-SYMBOL(<ls_purch_ord>) WITH KEY ebeln = <ls_sndlog_09>-ebeln
1809 ebelp = <ls_sndlog_09>-ebelp.
1810 IF sy-subrc = 0.
1811 <ls_alv>-cpebeln_09 = <ls_purch_ord>-ebeln.
1812 <ls_alv>-cpebelp_09 = <ls_purch_ord>-ebelp.
1813 <ls_alv>-eindt_09 = <ls_purch_ord>-eindt.
1814 <ls_alv>-cbanfn_09 = <ls_purch_ord>-banfn.
1815 <ls_alv>-cbnfpo_09 = <ls_purch_ord>-bnfpo.
1816 ENDIF.
1817 ENDIF.
1818 UNASSIGN <ls_sndlog_09>.
1819
1820 READ TABLE mt_labst_09 ASSIGNING FIELD-SYMBOL(<ls_labst_09>)
1821 WITH KEY matnr = <ls_notif>-matnr
1822 werks = <ls_notif>-werks.
1823 IF sy-subrc = 0.
1824 <ls_alv>-labst_09 = <ls_labst_09>-labst.
1825 ENDIF.
1826 ENDIF.
1827 ELSE.
1828 IF line_exists( mt_notif_09[ matnr = <ls_alv>-matnr
1829 werks = <ls_alv>-rwerks
1830 lgort = <ls_alv>-rlgort ] ).
1831 <ls_alv>-rqlabst_stat_09 = icon_dummy.
1832 ENDIF.
1833 ENDIF.
1834
1835 IF ( <ls_alv>-rqlabst_stat_09 = icon_failure OR
1836 <ls_alv>-rqlabst_stat_09 = icon_checked ).
1837* <ls_alv>-bdter <= CONV datum( sy-datum + lv_bdter ).
1838 <ls_alv>-event_flag_09 = abap_true.
1839 ELSE.
1840 <ls_alv>-event_flag_09 = abap_false.
1841 ENDIF.
1842
1843 ENDLOOP.
1844
1845 ENDMETHOD.
1846
1847
1848* <SIGNATURE>---------------------------------------------------------------------------------------+
1849* | Instance Private Method ZCL_P2PE312_NOTIF_MODEL->BUILD_ALV_TAB_NOTIF_10
1850* +-------------------------------------------------------------------------------------------------+
1851* +--------------------------------------------------------------------------------------</SIGNATURE>
1852 METHOD build_alv_tab_notif_10.
1853
1854 LOOP AT mt_alv ASSIGNING FIELD-SYMBOL(<ls_alv>).
1855 READ TABLE mt_notif_10 ASSIGNING FIELD-SYMBOL(<ls_notif>)
1856 WITH KEY ebeln = <ls_alv>-ebeln
1857 ebelp = <ls_alv>-ebelp
1858 etenr = <ls_alv>-etenr.
1859 IF sy-subrc = 0.
1860 <ls_alv>-event_flag_10 = abap_true.
1861 <ls_alv>-event_date_10 = <ls_notif>-udate.
1862 ELSE.
1863 <ls_alv>-event_flag_10 = abap_false.
1864 ENDIF.
1865 ENDLOOP.
1866
1867 ENDMETHOD.
1868
1869
1870* <SIGNATURE>---------------------------------------------------------------------------------------+
1871* | Instance Private Method ZCL_P2PE312_NOTIF_MODEL->BUILD_ALV_TAB_NOTIF_11
1872* +-------------------------------------------------------------------------------------------------+
1873* +--------------------------------------------------------------------------------------</SIGNATURE>
1874 METHOD build_alv_tab_notif_11.
1875
1876 LOOP AT mt_notif_11 ASSIGNING FIELD-SYMBOL(<ls_notif_11>).
1877 LOOP AT mt_alv ASSIGNING FIELD-SYMBOL(<ls_alv>) WHERE doc_num = <ls_notif_11>-doc_num
1878 AND doc_pos = <ls_notif_11>-doc_pos
1879 AND doc_type = <ls_notif_11>-doc_type.
1880 <ls_alv>-yunpno_11 = <ls_notif_11>-yunpno.
1881 <ls_alv>-yerdat_11 = <ls_notif_11>-yerdat.
1882 <ls_alv>-yernam_11 = <ls_notif_11>-yernam.
1883 <ls_alv>-yemerg_11 = <ls_notif_11>-yemerg.
1884 <ls_alv>-yday_navo_11 = <ls_notif_11>-yday_navo.
1885 <ls_alv>-yday_avo_11 = <ls_notif_11>-yday_avo.
1886 <ls_alv>-yday_w_11 = <ls_notif_11>-yday_w.
1887 <ls_alv>-yday_pr_11 = <ls_notif_11>-yday_pr.
1888
1889 <ls_alv>-event_date_11 = <ls_notif_11>-event_date.
1890 <ls_alv>-event_flag_11 = abap_true.
1891
1892 <ls_alv>-unrreq_respon = <ls_notif_11>-unrreq_respon.
1893 <ls_alv>-unrreq_respon_name = <ls_notif_11>-unrreq_respon_name.
1894 <ls_alv>-unrreq_manager = <ls_notif_11>-unrreq_manager.
1895 <ls_alv>-unrreq_manager_name = <ls_notif_11>-unrreq_manager_name.
1896 <ls_alv>-unrreq_zsnrp = <ls_notif_11>-unrreq_zsnrp.
1897 <ls_alv>-unrreq_zsnrp_name = <ls_notif_11>-unrreq_zsnrp_name.
1898
1899 <ls_alv>-doc_pos_send = <ls_notif_11>-doc_pos_send.
1900 ENDLOOP.
1901 IF sy-subrc <> 0.
1902 APPEND INITIAL LINE TO mt_alv ASSIGNING <ls_alv>.
1903 <ls_alv>-doc_num = <ls_notif_11>-doc_num.
1904 <ls_alv>-doc_pos = <ls_notif_11>-doc_pos.
1905 <ls_alv>-doc_type = <ls_notif_11>-doc_type.
1906 <ls_alv>-doc_sort = <ls_notif_11>-doc_sort.
1907 <ls_alv>-doc_num_send = <ls_notif_11>-doc_num_send.
1908 <ls_alv>-doc_pos_send = <ls_notif_11>-doc_pos_send.
1909
1910 <ls_alv>-yunpno_11 = <ls_notif_11>-yunpno.
1911 <ls_alv>-yerdat_11 = <ls_notif_11>-yerdat.
1912 <ls_alv>-yernam_11 = <ls_notif_11>-yernam.
1913 <ls_alv>-yemerg_11 = <ls_notif_11>-yemerg.
1914 <ls_alv>-yday_navo_11 = <ls_notif_11>-yday_navo.
1915 <ls_alv>-yday_avo_11 = <ls_notif_11>-yday_avo.
1916 <ls_alv>-yday_w_11 = <ls_notif_11>-yday_w.
1917 <ls_alv>-yday_pr_11 = <ls_notif_11>-yday_pr.
1918
1919 <ls_alv>-rbanfn = <ls_notif_11>-ybanfn.
1920 <ls_alv>-rbnfpo = <ls_notif_11>-ybnfpo.
1921
1922 <ls_alv>-vbeln = <ls_notif_11>-yvbeln.
1923 <ls_alv>-posnr = <ls_notif_11>-yposnr.
1924
1925 <ls_alv>-aufnr = <ls_notif_11>-yaufnr.
1926 <ls_alv>-rsnum = <ls_notif_11>-yrsnum.
1927 <ls_alv>-rspos = <ls_notif_11>-yrspos.
1928
1929 <ls_alv>-rernam = <ls_notif_11>-yernam.
1930 <ls_alv>-rernam_txt = <ls_notif_11>-author_name.
1931
1932 <ls_alv>-unrreq_respon = <ls_notif_11>-unrreq_respon.
1933 <ls_alv>-unrreq_respon_name = <ls_notif_11>-unrreq_respon_name.
1934 <ls_alv>-unrreq_manager = <ls_notif_11>-unrreq_manager.
1935 <ls_alv>-unrreq_manager_name = <ls_notif_11>-unrreq_manager_name.
1936 <ls_alv>-unrreq_zsnrp = <ls_notif_11>-unrreq_zsnrp.
1937 <ls_alv>-unrreq_zsnrp_name = <ls_notif_11>-unrreq_zsnrp_name.
1938
1939 <ls_alv>-bukrs = <ls_notif_11>-bukrs.
1940 <ls_alv>-matnr = <ls_notif_11>-matnr.
1941 <ls_alv>-rberid = <ls_notif_11>-berid.
1942 <ls_alv>-ekgrp = <ls_notif_11>-yekgrp.
1943 <ls_alv>-rwerks = <ls_notif_11>-werks.
1944 <ls_alv>-maktx = <ls_notif_11>-maktx.
1945
1946 <ls_alv>-event_flag_11 = abap_true.
1947 <ls_alv>-event_date_11 = <ls_notif_11>-event_date.
1948
1949 ENDIF.
1950 ENDLOOP.
1951
1952 ENDMETHOD.
1953
1954
1955* <SIGNATURE>---------------------------------------------------------------------------------------+
1956* | Instance Private Method ZCL_P2PE312_NOTIF_MODEL->BUILD_ALV_TAB_NSORT_TXT
1957* +-------------------------------------------------------------------------------------------------+
1958* +--------------------------------------------------------------------------------------</SIGNATURE>
1959 method BUILD_ALV_TAB_NSORT_TXT.
1960
1961 LOOP AT mt_alv ASSIGNING FIELD-SYMBOL(<ls_alv>).
1962 LOOP AT mt_nsort ASSIGNING FIELD-SYMBOL(<ls_nsort>).
1963 ASSIGN COMPONENT 'NSORT_TXT_' && <ls_nsort>-nsort OF STRUCTURE <ls_alv> TO FIELD-SYMBOL(<ls_nsort_txt>).
1964 IF <ls_nsort_txt> IS ASSIGNED.
1965 <ls_nsort_txt> = <ls_nsort>-nsort_txt.
1966 UNASSIGN <ls_nsort_txt>.
1967 ENDIF.
1968 ASSIGN COMPONENT 'NSORT_TXT_S_' && <ls_nsort>-nsort OF STRUCTURE <ls_alv> TO FIELD-SYMBOL(<ls_nsort_txt_s>).
1969 IF <ls_nsort_txt_s> IS ASSIGNED.
1970 <ls_nsort_txt_s> = <ls_nsort>-nsort_txt_s.
1971 UNASSIGN <ls_nsort_txt_s>.
1972 ENDIF.
1973 ENDLOOP.
1974 ENDLOOP.
1975
1976 endmethod.
1977
1978
1979* <SIGNATURE>---------------------------------------------------------------------------------------+
1980* | Instance Private Method ZCL_P2PE312_NOTIF_MODEL->BUILD_ALV_TAB_POST
1981* +-------------------------------------------------------------------------------------------------+
1982* +--------------------------------------------------------------------------------------</SIGNATURE>
1983 METHOD build_alv_tab_post.
1984
1985* Сумма позиции документа потребности
1986 IF mt_alv IS NOT INITIAL.
1987 SELECT DISTINCT
1988 mbew~matnr, mbew~bwtar, t001w~werks, mbew~bwkey,
1989 mbew~vprsv,
1990 mbew~stprs, mbew~verpr
1991 FROM mbew
1992 JOIN t001w ON t001w~bwkey = mbew~bwkey
1993 FOR ALL ENTRIES IN @mt_alv
1994 WHERE mbew~matnr = @mt_alv-matnr
1995 AND mbew~bwtar = @mt_alv-bwtar
1996 AND t001w~werks = @mt_alv-rwerks
1997 INTO TABLE @DATA(lt_mbew).
1998 SORT lt_mbew BY matnr bwtar werks.
1999
2000 DATA(lt_matnr_werks) =
2001 VALUE mty_t_matnr_werks(
2002 FOR GROUPS ls_group OF <ls_alv_gr> IN mt_alv
2003 WHERE ( matnr IS NOT INITIAL AND
2004 pwerks IS NOT INITIAL )
2005 GROUP BY ( matnr = <ls_alv_gr>-matnr
2006 werks = <ls_alv_gr>-pwerks )
2007 WITHOUT MEMBERS
2008 ( matnr = ls_group-matnr
2009 werks = ls_group-werks )
2010 ).
2011 get_labst(
2012 EXPORTING
2013 it_matnr_werks = lt_matnr_werks
2014 IMPORTING
2015 et_labst = mt_labst
2016 ).
2017 ENDIF.
2018
2019 LOOP AT mt_alv ASSIGNING FIELD-SYMBOL(<ls_alv>).
2020* Определяем поле sum_req
2021 READ TABLE lt_mbew ASSIGNING FIELD-SYMBOL(<ls_mbew>) WITH KEY matnr = <ls_alv>-matnr
2022 bwtar = <ls_alv>-bwtar
2023 werks = <ls_alv>-rwerks
2024 BINARY SEARCH.
2025 IF sy-subrc = 0.
2026 IF <ls_mbew>-vprsv = zif_p2pe312_constants=>mc_vprsv_s.
2027 <ls_alv>-sum_req = <ls_mbew>-stprs.
2028 ELSE.
2029 <ls_alv>-sum_req = <ls_mbew>-verpr.
2030 ENDIF.
2031 <ls_alv>-sum_req = <ls_alv>-sum_req * <ls_alv>-menge.
2032 ENDIF.
2033
2034 READ TABLE mt_labst ASSIGNING FIELD-SYMBOL(<ls_labst>)
2035 WITH KEY matnr = <ls_alv>-matnr
2036 werks = <ls_alv>-pwerks.
2037 IF sy-subrc = 0.
2038 <ls_alv>-labst = <ls_labst>-labst.
2039 ENDIF.
2040 ENDLOOP.
2041
2042 ENDMETHOD.
2043
2044
2045* <SIGNATURE>---------------------------------------------------------------------------------------+
2046* | Instance Private Method ZCL_P2PE312_NOTIF_MODEL->BUILD_ALV_TAB_RECIPIENTS
2047* +-------------------------------------------------------------------------------------------------+
2048* | [--->] IT_RECIPIENT TYPE ZIP2PE312_RECIPIENT
2049* +--------------------------------------------------------------------------------------</SIGNATURE>
2050 METHOD build_alv_tab_recipients.
2051*--------------------------------------------------------------------*
2052* Заполнение ALV полей со статусом уведомления для пользователя
2053*--------------------------------------------------------------------*
2054
2055 LOOP AT mt_alv ASSIGNING FIELD-SYMBOL(<ls_alv>).
2056 LOOP AT mt_nsort ASSIGNING FIELD-SYMBOL(<ls_nsort>).
2057* Ищем настройку из алгоритма по документу
2058 READ TABLE it_recipient ASSIGNING FIELD-SYMBOL(<ls_recipient>)
2059 WITH KEY row_num = <ls_alv>-row_num
2060 nsort = <ls_nsort>-nsort
2061 username = mv_user.
2062 IF sy-subrc = 0.
2063* Заполнение полей со статусом по уведомлению
2064 set_nsort_user_status(
2065 EXPORTING
2066 iv_nstat = <ls_recipient>-nstat
2067 iv_nsort = <ls_recipient>-nsort
2068 CHANGING
2069 cs_alv = <ls_alv>
2070 ).
2071 ELSE.
2072 ASSIGN COMPONENT 'EVENT_FLAG_' && <ls_nsort>-nsort OF STRUCTURE <ls_alv> TO FIELD-SYMBOL(<lv_flag>).
2073 IF <lv_flag> IS ASSIGNED.
2074 IF <lv_flag> = abap_true.
2075 set_nsort_user_status(
2076 EXPORTING
2077 iv_nstat = zif_p2pe312_constants=>mcs_nstat-no_active
2078 iv_nsort = <ls_nsort>-nsort
2079 CHANGING
2080 cs_alv = <ls_alv>
2081 ).
2082 ENDIF.
2083 UNASSIGN <lv_flag>.
2084 ENDIF.
2085 ENDIF.
2086
2087 ENDLOOP.
2088 ENDLOOP.
2089
2090 ENDMETHOD.
2091
2092
2093* <SIGNATURE>---------------------------------------------------------------------------------------+
2094* | Instance Private Method ZCL_P2PE312_NOTIF_MODEL->BUILD_ALV_TAB_RES
2095* +-------------------------------------------------------------------------------------------------+
2096* | [<-->] CT_ALV TYPE ZIP2PE312_NOTIF_SYS_ALV
2097* +--------------------------------------------------------------------------------------</SIGNATURE>
2098 METHOD build_alv_tab_res.
2099*--------------------------------------------------------------------*
2100* Формирование ALV строк по резервированиям
2101*--------------------------------------------------------------------*
2102
2103 DATA: ls_alv TYPE zsp2pe312_notif_sys_alv,
2104 lv_found TYPE boolean.
2105
2106* Резервирования
2107 LOOP AT mt_reservation ASSIGNING FIELD-SYMBOL(<ls_reservation>).
2108 CLEAR ls_alv.
2109
2110 ls_alv-rbukrs = <ls_reservation>-bukrs.
2111 ls_alv-bukrs = <ls_reservation>-bukrs.
2112 ls_alv-rwerks = <ls_reservation>-r_werks.
2113 ls_alv-pwerks = <ls_reservation>-p_werks.
2114 ls_alv-rberid = <ls_reservation>-r_berid.
2115 ls_alv-matnr = <ls_reservation>-matnr.
2116 ls_alv-maktx = <ls_reservation>-maktx.
2117 ls_alv-doc_sort = <ls_reservation>-auart.
2118 ls_alv-erdat = <ls_reservation>-erdat.
2119 ls_alv-aufnr = <ls_reservation>-aufnr.
2120 ls_alv-bdter = <ls_reservation>-bdter.
2121 ls_alv-menge = <ls_reservation>-bdmng.
2122 ls_alv-meins = <ls_reservation>-meins.
2123 ls_alv-waers = <ls_reservation>-waers.
2124 ls_alv-rernam = <ls_reservation>-ernam.
2125 ls_alv-rernam_txt = <ls_reservation>-name.
2126 ls_alv-rsnum = <ls_reservation>-rsnum.
2127 ls_alv-rspos = <ls_reservation>-rspos.
2128 ls_alv-ekgrp = <ls_reservation>-r_ekgrp.
2129
2130 ls_alv-rsobsl = <ls_reservation>-r_sobsl.
2131 ls_alv-rdismm = <ls_reservation>-r_dismm.
2132
2133 ls_alv-doc_num = <ls_reservation>-rsnum.
2134 ls_alv-doc_pos = <ls_reservation>-rspos.
2135 ls_alv-doc_type = <ls_reservation>-doc_type.
2136 ls_alv-doc_sort = <ls_reservation>-auart.
2137
2138 ls_alv-doc_num_send = <ls_reservation>-aufnr.
2139 ls_alv-doc_pos_send = <ls_reservation>-posnr.
2140
2141 ls_alv-vornr = <ls_reservation>-vornr.
2142 ls_alv-rposnr = <ls_reservation>-posnr.
2143
2144 ls_alv-stat_user = <ls_reservation>-stat_user.
2145 ls_alv-stat_user_txt = <ls_reservation>-stat_name.
2146
2147 ls_alv-rlgort = <ls_reservation>-rlgort.
2148
2149 CALL FUNCTION 'CONVERSION_EXIT_ABPSP_OUTPUT'
2150 EXPORTING
2151 input = <ls_reservation>-projn
2152 IMPORTING
2153 output = ls_alv-projn.
2154
2155 CLEAR lv_found.
2156 LOOP AT mt_reservation_peg ASSIGNING FIELD-SYMBOL(<ls_reservation_peg>)
2157 WHERE reqnr = <ls_reservation>-rsnum
2158 AND reqps = <ls_reservation>-rspos
2159 AND reqet IS INITIAL.
2160 CASE <ls_reservation_peg>-delkz.
2161 WHEN if_pph_mrp_constants=>gc_delkz_bsanf.
2162* Нет заказа на поставку
2163 LOOP AT mt_requisition ASSIGNING FIELD-SYMBOL(<ls_requisition>)
2164 WHERE banfn = <ls_reservation_peg>-delnr
2165 AND bnfpo = <ls_reservation_peg>-delps.
2166 move_req_to_alv(
2167 EXPORTING
2168 is_requisition = <ls_requisition>
2169 CHANGING
2170 cs_alv = ls_alv
2171 ).
2172
2173 lv_found = abap_true.
2174 APPEND ls_alv TO ct_alv.
2175 ENDLOOP.
2176
2177 WHEN if_pph_mrp_constants=>gc_delkz_bsein.
2178* есть заказ на поставку
2179 LOOP AT mt_requisition ASSIGNING <ls_requisition> USING KEY ebeln
2180 WHERE ebeln = <ls_reservation_peg>-delnr
2181 AND ebelp = <ls_reservation_peg>-delps
2182 AND etenr = <ls_reservation_peg>-delet.
2183 move_req_to_alv(
2184 EXPORTING
2185 is_requisition = <ls_requisition>
2186 CHANGING
2187 cs_alv = ls_alv
2188 ).
2189
2190 lv_found = abap_true.
2191 APPEND ls_alv TO ct_alv.
2192 ENDLOOP.
2193 ENDCASE.
2194
2195 ENDLOOP.
2196* Выводим потребности с ППМ по точке отказа
2197 IF lv_found <> abap_true.
2198* AND mrt_dismm IS NOT INITIAL
2199* AND <ls_reservation>-dismm IN mrt_dismm.
2200 APPEND ls_alv TO ct_alv.
2201 ENDIF.
2202
2203 ENDLOOP.
2204
2205
2206 ENDMETHOD.
2207
2208
2209* <SIGNATURE>---------------------------------------------------------------------------------------+
2210* | Instance Private Method ZCL_P2PE312_NOTIF_MODEL->BUILD_ALV_TAB_TRANSF
2211* +-------------------------------------------------------------------------------------------------+
2212* | [<-->] CT_ALV TYPE ZIP2PE312_NOTIF_SYS_ALV
2213* +--------------------------------------------------------------------------------------</SIGNATURE>
2214 METHOD BUILD_ALV_TAB_TRANSF.
2215*--------------------------------------------------------------------*
2216* Формирование ALV строк по списаниям
2217*--------------------------------------------------------------------*
2218
2219 DATA: ls_alv TYPE zsp2pe312_notif_sys_alv,
2220 lv_found TYPE boolean.
2221
2222 LOOP AT mt_req_transf ASSIGNING FIELD-SYMBOL(<ls_transf>).
2223 CLEAR ls_alv.
2224
2225 ls_alv-bukrs = <ls_transf>-bukrs.
2226 ls_alv-rbukrs = <ls_transf>-bukrs.
2227 ls_alv-rwerks = <ls_transf>-r_werks.
2228 ls_alv-pwerks = <ls_transf>-p_werks.
2229 ls_alv-rberid = <ls_transf>-r_berid.
2230 ls_alv-matnr = <ls_transf>-matnr.
2231 ls_alv-maktx = <ls_transf>-maktx.
2232 ls_alv-doc_sort = <ls_transf>-bsart.
2233 ls_alv-erdat = <ls_transf>-badat.
2234 ls_alv-rbanfn = <ls_transf>-banfn.
2235 ls_alv-rbnfpo = <ls_transf>-bnfpo.
2236 ls_alv-bdter = <ls_transf>-lfdat.
2237 ls_alv-menge = <ls_transf>-menge.
2238 ls_alv-meins = <ls_transf>-meins.
2239 ls_alv-bwtar = <ls_transf>-bwtar.
2240 ls_alv-waers = <ls_transf>-waers.
2241 ls_alv-rernam = <ls_transf>-ernam.
2242 ls_alv-rernam_txt = <ls_transf>-name.
2243 ls_alv-ekgrp = <ls_transf>-r_ekgrp.
2244
2245 ls_alv-rsobsl = <ls_transf>-r_sobsl.
2246 ls_alv-rdismm = <ls_transf>-r_dismm.
2247
2248 ls_alv-doc_num = <ls_transf>-banfn.
2249 ls_alv-doc_pos = <ls_transf>-bnfpo.
2250 ls_alv-doc_type = <ls_transf>-doc_type.
2251 ls_alv-doc_sort = <ls_transf>-bsart.
2252
2253 ls_alv-doc_num_send = <ls_transf>-banfn.
2254 ls_alv-doc_pos_send = <ls_transf>-bnfpo.
2255 ls_alv-rlgort = <ls_transf>-rlgort.
2256 ls_alv-plgort = <ls_transf>-lgort.
2257
2258 ls_alv-minbe = <ls_transf>-minbe.
2259
2260 ls_alv-warehouse_manag_tab = <ls_transf>-warehouse_manag.
2261
2262 CLEAR lv_found.
2263 LOOP AT mt_req_transf_peg ASSIGNING FIELD-SYMBOL(<ls_req_transf_peg>)
2264 WHERE reqnr = <ls_transf>-banfn
2265 AND reqps = <ls_transf>-bnfpo
2266 AND reqet IS INITIAL.
2267
2268 CASE <ls_req_transf_peg>-delkz.
2269 WHEN if_pph_mrp_constants=>gc_delkz_bsanf.
2270* Нет заказа на поставку
2271 LOOP AT mt_requisition ASSIGNING FIELD-SYMBOL(<ls_requisition>)
2272 WHERE banfn = <ls_req_transf_peg>-delnr
2273 AND bnfpo = <ls_req_transf_peg>-delps.
2274 move_req_to_alv(
2275 EXPORTING
2276 is_requisition = <ls_requisition>
2277 CHANGING
2278 cs_alv = ls_alv
2279 ).
2280
2281 lv_found = abap_true.
2282 APPEND ls_alv TO ct_alv.
2283 ENDLOOP.
2284
2285 WHEN if_pph_mrp_constants=>gc_delkz_bsein.
2286* есть заказ на поставку
2287 LOOP AT mt_requisition ASSIGNING <ls_requisition> USING KEY ebeln
2288 WHERE ebeln = <ls_req_transf_peg>-delnr
2289 AND ebelp = <ls_req_transf_peg>-delps
2290 AND etenr = <ls_req_transf_peg>-delet.
2291 move_req_to_alv(
2292 EXPORTING
2293 is_requisition = <ls_requisition>
2294 CHANGING
2295 cs_alv = ls_alv
2296 ).
2297
2298 lv_found = abap_true.
2299 APPEND ls_alv TO ct_alv.
2300 ENDLOOP.
2301 ENDCASE.
2302
2303 ENDLOOP.
2304* Выводим потребности с ППМ по точке отказа
2305 IF lv_found <> abap_true.
2306* AND mrt_dismm IS NOT INITIAL
2307* AND <ls_cancelation>-dismm IN mrt_dismm.
2308 APPEND ls_alv TO ct_alv.
2309 ENDIF.
2310 ENDLOOP.
2311
2312
2313 ENDMETHOD.
2314
2315
2316* <SIGNATURE>---------------------------------------------------------------------------------------+
2317* | Instance Public Method ZCL_P2PE312_NOTIF_MODEL->CHANGE_CELL_STATUS
2318* +-------------------------------------------------------------------------------------------------+
2319* | [--->] IV_ROW TYPE SALV_DE_ROW
2320* | [--->] IV_COLUMN TYPE SALV_DE_COLUMN
2321* +--------------------------------------------------------------------------------------</SIGNATURE>
2322 METHOD change_cell_status.
2323
2324 READ TABLE mt_alv ASSIGNING FIELD-SYMBOL(<ls_alv>) INDEX iv_row.
2325 IF sy-subrc = 0.
2326 ASSIGN COMPONENT iv_column OF STRUCTURE <ls_alv> TO FIELD-SYMBOL(<lv_box>).
2327 IF <lv_box> IS ASSIGNED.
2328 IF <lv_box> IS INITIAL.
2329 <lv_box> = abap_true.
2330 ELSE.
2331 CLEAR <lv_box>.
2332 ENDIF.
2333 UNASSIGN <lv_box>.
2334 ENDIF.
2335 ENDIF.
2336
2337 ENDMETHOD.
2338
2339
2340* <SIGNATURE>---------------------------------------------------------------------------------------+
2341* | Instance Public Method ZCL_P2PE312_NOTIF_MODEL->CHANGE_COLUMN_SELECTION
2342* +-------------------------------------------------------------------------------------------------+
2343* | [--->] IV_FNAME TYPE LVC_FNAME
2344* | [--->] IV_SELECT TYPE BOOLEAN
2345* +--------------------------------------------------------------------------------------</SIGNATURE>
2346 METHOD change_column_selection.
2347*--------------------------------------------------------------------*
2348* Изменение выбора для всего столбца
2349*--------------------------------------------------------------------*
2350
2351 LOOP AT mt_alv ASSIGNING FIELD-SYMBOL(<ls_alv>).
2352 ASSIGN COMPONENT iv_fname OF STRUCTURE <ls_alv> TO FIELD-SYMBOL(<lv_box>).
2353 IF <lv_box> IS ASSIGNED.
2354 IF iv_select IS INITIAL.
2355 <lv_box> = abap_false.
2356 ELSE.
2357 <lv_box> = abap_true.
2358 ENDIF.
2359 UNASSIGN <lv_box>.
2360 ENDIF.
2361 ENDLOOP.
2362
2363 ENDMETHOD.
2364
2365
2366* <SIGNATURE>---------------------------------------------------------------------------------------+
2367* | Instance Private Method ZCL_P2PE312_NOTIF_MODEL->CHECK_CENTRAL_PLANT
2368* +-------------------------------------------------------------------------------------------------+
2369* | [--->] IT_MSEG_KEY TYPE MTY_T_MSEG
2370* | [--->] IRT_SOBSL TYPE CURTO_SOBSL_RANGE_T
2371* | [<---] ET_CENTRAL_PLANT TYPE MTY_T_CENTRAL_PLANT
2372* +--------------------------------------------------------------------------------------</SIGNATURE>
2373 METHOD check_central_plant.
2374
2375 CLEAR et_central_plant.
2376
2377 IF it_mseg_key IS INITIAL.
2378 RETURN.
2379 ENDIF.
2380
2381* Выбор центральных заводов и областей ППМ для материалов
2382 SELECT mdma~matnr,
2383 mdma~werks,
2384 mdlg~lgort, mdlg~berid,
2385 mdma~sobsl
2386 FROM mdlg
2387 JOIN mdma ON mdma~berid = mdlg~berid
2388* AND mdma~loekz = @abap_false
2389 FOR ALL ENTRIES IN @it_mseg_key
2390 WHERE mdma~sobsl IN @irt_sobsl
2391 AND mdma~matnr = @it_mseg_key-matnr
2392 AND mdlg~werks = @it_mseg_key-werks
2393 AND mdlg~lgort = @it_mseg_key-lgort
2394 INTO CORRESPONDING FIELDS OF TABLE @et_central_plant.
2395
2396* Выбор областей ППМ для завода
2397 SELECT marc~matnr,
2398 mdlw~berid, marc~werks,
2399 marc~sobsl
2400 FROM mdlw
2401 JOIN marc ON marc~werks = mdlw~werks
2402 FOR ALL ENTRIES IN @it_mseg_key
2403 WHERE marc~sobsl IN @irt_sobsl
2404 AND marc~matnr = @it_mseg_key-matnr
2405 AND marc~werks = @it_mseg_key-werks
2406 APPENDING CORRESPONDING FIELDS OF TABLE @et_central_plant.
2407
2408 ENDMETHOD.
2409
2410
2411* <SIGNATURE>---------------------------------------------------------------------------------------+
2412* | Instance Public Method ZCL_P2PE312_NOTIF_MODEL->CONSTRUCTOR
2413* +-------------------------------------------------------------------------------------------------+
2414* | [--->] IS_SEL TYPE ZSP2PE312_SEL
2415* | [--->] IV_MODE TYPE CHAR1
2416* +--------------------------------------------------------------------------------------</SIGNATURE>
2417 METHOD constructor.
2418
2419 me->ms_sel = is_sel.
2420 me->mv_mode = iv_mode.
2421
2422 ycl_const_utils=>get_tvrange(
2423 EXPORTING
2424 iv_cons = zif_p2pe312_constants=>mc_tvarv_so_dismm
2425 IMPORTING
2426 et_range = mrt_dismm
2427 ).
2428
2429 SELECT DISTINCT ztp2pe312_doctyp~doc_type
2430 FROM ztp2pe312_doctyp
2431 WHERE ztp2pe312_doctyp~doc_sort IN @ms_sel-s_rptype[]
2432 INTO TABLE @DATA(lt_doctyp).
2433
2434 mrt_doctyp =
2435 VALUE #(
2436 FOR <ls_doctyp> IN lt_doctyp
2437 ( low = <ls_doctyp>-doc_type
2438 option = rsmds_c_option-equal
2439 sign = rsmds_c_sign-including )
2440 ).
2441
2442 SELECT ZTP2PE312_NSORT~*
2443 FROM ztp2pe312_nsort
2444 WHERE nsort IN @ms_sel-s_nsort[]
2445 AND nactive = @abap_true
2446 INTO CORRESPONDING FIELDS OF TABLE @mt_nsort.
2447
2448 CALL FUNCTION 'GET_DOMAIN_VALUES'
2449 EXPORTING
2450 domname = 'ZP2PE312_NSTAT'
2451 TABLES
2452 values_tab = mt_nstat_txt.
2453
2454 mv_user = ms_sel-p_user.
2455 SELECT SINGLE adrp~name_first && ' ' && adrp~name_last AS name
2456 FROM usr21
2457 LEFT JOIN adrp ON adrp~persnumber = usr21~persnumber
2458 AND adrp~date_from = @zif_p2pe312_constants=>mc_adrc_date_from
2459 AND adrp~nation = @zif_p2pe312_constants=>mc_nation_default
2460 WHERE usr21~bname = @mv_user
2461 INTO @mv_user_txt.
2462
2463 ENDMETHOD.
2464
2465
2466* <SIGNATURE>---------------------------------------------------------------------------------------+
2467* | Instance Private Method ZCL_P2PE312_NOTIF_MODEL->CONV_VBELN_TABLE_TO_CHAR
2468* +-------------------------------------------------------------------------------------------------+
2469* | [--->] IM_T_VBELN TYPE WTYSC_VBELN_TAB
2470* | [<-()] RE_CONV_VALUE TYPE CHAR128
2471* +--------------------------------------------------------------------------------------</SIGNATURE>
2472METHOD conv_vbeln_table_to_char.
2473
2474 DATA
2475 : lv_tabix TYPE sy-tabix
2476 .
2477
2478 FIELD-SYMBOLS
2479 : <ls_vbeln> TYPE vbeln_va
2480 .
2481
2482 CLEAR re_conv_value.
2483
2484 CHECK im_t_vbeln IS NOT INITIAL.
2485
2486 LOOP AT im_t_vbeln ASSIGNING <ls_vbeln>.
2487
2488 lv_tabix = sy-tabix.
2489
2490 re_conv_value = COND char128(
2491 WHEN lv_tabix = 1
2492 THEN |{ <ls_vbeln> }|
2493 ELSE
2494 |{ re_conv_value }, { <ls_vbeln> }|
2495 ).
2496 ENDLOOP.
2497
2498
2499ENDMETHOD.
2500
2501
2502* <SIGNATURE>---------------------------------------------------------------------------------------+
2503* | Instance Private Method ZCL_P2PE312_NOTIF_MODEL->CREATE_ALV_KEY
2504* +-------------------------------------------------------------------------------------------------+
2505* +--------------------------------------------------------------------------------------</SIGNATURE>
2506 method CREATE_ALV_KEY.
2507*--------------------------------------------------------------------*
2508* Генерация ключа для строк ALV
2509*--------------------------------------------------------------------*
2510
2511 DATA: lv_row_num TYPE int4.
2512
2513 LOOP AT mt_alv ASSIGNING FIELD-SYMBOL(<ls_alv>).
2514 lv_row_num = lv_row_num + 1.
2515 <ls_alv>-row_num = lv_row_num.
2516 ENDLOOP.
2517
2518 endmethod.
2519
2520
2521* <SIGNATURE>---------------------------------------------------------------------------------------+
2522* | Instance Private Method ZCL_P2PE312_NOTIF_MODEL->DO_PEGGING_REQ
2523* +-------------------------------------------------------------------------------------------------+
2524* | [--->] IT_REQUISITION TYPE MTY_T_REQUISITION
2525* | [<---] ET_RES_KEYS TYPE MTY_T_DOC_KEY
2526* | [<---] ET_CAN_KEYS TYPE MTY_T_DOC_KEY
2527* | [<---] ET_INQ_KEYS TYPE MTY_T_DOC_KEY
2528* | [<---] ET_RESERVATION_PEG TYPE MTY_T_PEGGING
2529* | [<---] ET_CANCELATION_PEG TYPE MTY_T_PEGGING
2530* | [<---] ET_INQUIRY_PEG TYPE MTY_T_PEGGING
2531* +--------------------------------------------------------------------------------------</SIGNATURE>
2532 METHOD do_pegging_req.
2533
2534 DATA: lt_pegging_key TYPE mty_t_pegging_key.
2535
2536 CLEAR: et_can_keys, et_inq_keys, et_res_keys,
2537 et_cancelation_peg, et_inquiry_peg, et_reservation_peg.
2538
2539 fill_peg_keys(
2540 EXPORTING
2541 it_requisition = it_requisition
2542 IMPORTING
2543 et_pegging_key = lt_pegging_key
2544 ).
2545
2546 IF mv_mode IS INITIAL.
2547 cl_progress_indicator=>progress_indicate( i_text = 'Определение потребностей по заявкам'(003) ).
2548 ENDIF.
2549 get_pegging(
2550 EXPORTING
2551 it_pegging_key = lt_pegging_key
2552 IMPORTING
2553 et_reservation_key = et_reservation_peg
2554 et_inquiry_key = et_inquiry_peg
2555 et_cancelation_key = et_cancelation_peg
2556 ).
2557
2558 IF mv_mode IS INITIAL.
2559 cl_progress_indicator=>progress_indicate( i_text = 'Выбор потребностей'(001) ).
2560 ENDIF.
2561
2562 get_doc_keys(
2563 EXPORTING
2564 it_peg_keys = et_inquiry_peg
2565 IMPORTING
2566 et_doc_keys = et_inq_keys
2567 ).
2568 get_doc_keys(
2569 EXPORTING
2570 it_peg_keys = et_reservation_peg
2571 IMPORTING
2572 et_doc_keys = et_res_keys
2573 ).
2574 get_doc_keys(
2575 EXPORTING
2576 it_peg_keys = et_cancelation_peg
2577 IMPORTING
2578 et_doc_keys = et_can_keys
2579 ).
2580
2581 ENDMETHOD.
2582
2583
2584* <SIGNATURE>---------------------------------------------------------------------------------------+
2585* | Instance Private Method ZCL_P2PE312_NOTIF_MODEL->DO_PEGGING_REQ_SECOND
2586* +-------------------------------------------------------------------------------------------------+
2587* | [--->] IT_PEGGING_KEY TYPE MTY_T_PEGGING_KEY
2588* | [<---] ET_RES_KEYS TYPE MTY_T_DOC_KEY
2589* | [<---] ET_CAN_KEYS TYPE MTY_T_DOC_KEY
2590* | [<---] ET_INQ_KEYS TYPE MTY_T_DOC_KEY
2591* +--------------------------------------------------------------------------------------</SIGNATURE>
2592 method DO_PEGGING_REQ_SECOND.
2593
2594 get_pegging(
2595 EXPORTING
2596 it_pegging_key = it_pegging_key
2597 IMPORTING
2598 et_reservation_key = mt_reservation_peg_sec
2599 et_inquiry_key = mt_inquiry_peg_sec
2600 et_cancelation_key = mt_cancelation_peg_sec
2601 ).
2602
2603 get_doc_keys(
2604 EXPORTING
2605 it_peg_keys = mt_inquiry_peg_sec
2606 IMPORTING
2607 et_doc_keys = et_inq_keys
2608 ).
2609 get_doc_keys(
2610 EXPORTING
2611 it_peg_keys = mt_reservation_peg_sec
2612 IMPORTING
2613 et_doc_keys = et_res_keys
2614 ).
2615 get_doc_keys(
2616 EXPORTING
2617 it_peg_keys = mt_cancelation_peg_sec
2618 IMPORTING
2619 et_doc_keys = et_can_keys
2620 ).
2621
2622 endmethod.
2623
2624
2625* <SIGNATURE>---------------------------------------------------------------------------------------+
2626* | Instance Private Method ZCL_P2PE312_NOTIF_MODEL->EXCLUDE_EXIST_KEYS
2627* +-------------------------------------------------------------------------------------------------+
2628* | [--->] IT_LOG_KEYS TYPE MTY_T_DOC_KEY
2629* | [<-->] CT_KEYS TYPE MTY_T_DOC_KEY
2630* +--------------------------------------------------------------------------------------</SIGNATURE>
2631 method EXCLUDE_EXIST_KEYS.
2632
2633 LOOP AT it_log_keys ASSIGNING FIELD-SYMBOL(<ls_log_keys>).
2634 DELETE ct_keys WHERE doc_num = <ls_log_keys>-doc_num
2635 AND doc_pos = <ls_log_keys>-doc_pos
2636 AND doc_sch = <ls_log_keys>-doc_sch.
2637 ENDLOOP.
2638
2639 endmethod.
2640
2641
2642* <SIGNATURE>---------------------------------------------------------------------------------------+
2643* | Instance Private Method ZCL_P2PE312_NOTIF_MODEL->FETCH_BY_MAT
2644* +-------------------------------------------------------------------------------------------------+
2645* +--------------------------------------------------------------------------------------</SIGNATURE>
2646 METHOD fetch_by_mat.
2647
2648 DATA: lv_tabkey TYPE cdtabkey.
2649
2650 SELECT cdhdr~objectid , cdhdr~udate, cdpos~tabkey,
2651 cdpos~value_old, cdpos~value_new
2652 FROM cdhdr
2653 JOIN cdpos ON cdpos~objectclas = cdhdr~objectclas
2654 AND cdpos~objectid = cdhdr~objectid
2655 AND cdpos~changenr = cdhdr~changenr
2656 WHERE cdpos~objectclas = @zif_p2pe312_constants=>mc_objectclas_material
2657 AND cdpos~tabname = @zif_p2pe312_constants=>mc_tabname_marc
2658 AND cdpos~fname = @zif_p2pe312_constants=>mc_fname_plifz
2659 AND cdpos~value_new <> cdpos~value_old
2660 AND cdhdr~udate IN @ms_sel-s_mnperd[]
2661 AND NOT EXISTS ( SELECT mandant
2662 FROM cdpos AS tab
2663 WHERE tab~objectclas = cdpos~objectclas
2664 AND tab~objectid = cdpos~objectid
2665 AND tab~tabname = cdpos~tabname
2666 AND tab~tabkey = cdpos~tabkey
2667 AND tab~fname = cdpos~fname
2668 AND tab~changenr > cdpos~changenr )
2669 ORDER BY tabkey
2670 INTO TABLE @DATA(lt_cdpos).
2671
2672
2673* Выбираем материалы, которые необходимо обработать
2674 DATA(lt_matnr_werks) =
2675 VALUE mty_t_matnr_werks(
2676 FOR GROUPS ls_group OF <ls_cdpos_gr> IN lt_cdpos
2677 GROUP BY ( matnr = <ls_cdpos_gr>-tabkey+3(18)
2678 werks = <ls_cdpos_gr>-tabkey+21(4) )
2679 WITHOUT MEMBERS
2680 ( matnr = ls_group-matnr
2681 werks = ls_group-werks )
2682 ).
2683
2684* Выбор данных по материалу
2685 IF lt_matnr_werks IS INITIAL.
2686 RETURN.
2687 ENDIF.
2688
2689 SELECT marc~matnr, marc~werks, marc~lvorm AS marc_lvorm, marc~ekgrp,
2690 makt~maktx,
2691 mara~mtart, mara~matkl, mara~lvorm AS mara_lvorm,
2692 t001k~bukrs
2693 FROM marc
2694 JOIN mara ON mara~matnr = marc~matnr
2695 LEFT JOIN makt ON makt~matnr = mara~matnr
2696 AND makt~spras = @sy-langu
2697 JOIN t001w ON t001w~werks = marc~werks
2698 JOIN t001k ON t001k~bwkey = t001w~bwkey
2699 FOR ALL ENTRIES IN @lt_matnr_werks
2700 WHERE marc~matnr = @lt_matnr_werks-matnr
2701 AND marc~werks = @lt_matnr_werks-werks
2702 AND marc~werks IN @ms_sel-s_mwerks[]
2703 AND marc~matnr IN @ms_sel-s_mmatnr[]
2704 AND marc~ekgrp IN @ms_sel-s_mekgrp[]
2705 AND marc~lvorm IN @ms_sel-s_mlvorc[]
2706 AND mara~matkl IN @ms_sel-s_mmatkl[]
2707 AND mara~mtart IN @ms_sel-s_mmtart[]
2708 AND mara~lvorm IN @ms_sel-s_mlvorm[]
2709 AND t001k~bukrs IN @ms_sel-s_bukrs[]
2710 INTO CORRESPONDING FIELDS OF TABLE @mt_notif_08.
2711
2712 LOOP AT mt_notif_08 ASSIGNING FIELD-SYMBOL(<ls_notif>).
2713 lv_tabkey = |{ sy-mandt }{ <ls_notif>-matnr ALPHA = IN }{ <ls_notif>-werks }|.
2714 READ TABLE lt_cdpos ASSIGNING FIELD-SYMBOL(<ls_cdpos>) WITH KEY tabkey = lv_tabkey BINARY SEARCH.
2715 IF sy-subrc = 0.
2716 <ls_notif>-plifz_old = CONV plifz( <ls_cdpos>-value_old ).
2717 <ls_notif>-plifz_new = CONV plifz( <ls_cdpos>-value_new ).
2718 ENDIF.
2719 ENDLOOP.
2720
2721 ENDMETHOD.
2722
2723
2724* <SIGNATURE>---------------------------------------------------------------------------------------+
2725* | Instance Private Method ZCL_P2PE312_NOTIF_MODEL->FETCH_BY_PURCHASE_REQ
2726* +-------------------------------------------------------------------------------------------------+
2727* +--------------------------------------------------------------------------------------</SIGNATURE>
2728 METHOD fetch_by_purchase_req.
2729*--------------------------------------------------------------------*
2730* Выбор данных по заявкам
2731*--------------------------------------------------------------------*
2732
2733 DATA: lt_inquiry_peg TYPE mty_t_pegging,
2734 lt_cancelation_peg TYPE mty_t_pegging,
2735 lt_reservation_peg TYPE mty_t_pegging.
2736
2737 IF mv_mode IS INITIAL.
2738 cl_progress_indicator=>progress_indicate( i_text = 'Выбор заявок на закупку'(002) ).
2739 ENDIF.
2740 fetch_req_by_selopts( ).
2741
2742 do_pegging_req(
2743 EXPORTING
2744 it_requisition = mt_requisition
2745 IMPORTING
2746 et_res_keys = DATA(lt_res_keys)
2747 et_can_keys = DATA(lt_can_keys)
2748 et_inq_keys = DATA(lt_inq_keys)
2749 et_cancelation_peg = mt_cancelation_peg
2750 et_inquiry_peg = mt_inquiry_peg
2751 et_reservation_peg = mt_reservation_peg
2752 ).
2753
2754 fetch_requirement_documents(
2755 EXPORTING
2756 it_inq_keys = lt_inq_keys
2757 it_res_keys = lt_res_keys
2758 it_can_keys = lt_can_keys
2759 IMPORTING
2760 et_cancelation = mt_cancelation
2761 et_reservation = mt_reservation
2762 et_inquiry = mt_inquiry
2763 ).
2764
2765 READ TABLE ms_sel-s_nsort TRANSPORTING NO FIELDS WITH KEY low = zif_p2pe312_constants=>mcs_nsort-n01.
2766 IF sy-subrc = 0.
2767 fetch_by_purchase_req_sec(
2768 EXPORTING
2769 it_res_keys = lt_res_keys
2770 it_can_keys = lt_can_keys
2771 it_inq_keys = lt_inq_keys
2772 ).
2773 ENDIF.
2774
2775 ENDMETHOD.
2776
2777
2778* <SIGNATURE>---------------------------------------------------------------------------------------+
2779* | Instance Private Method ZCL_P2PE312_NOTIF_MODEL->FETCH_BY_PURCHASE_REQ_SEC
2780* +-------------------------------------------------------------------------------------------------+
2781* | [--->] IT_RES_KEYS TYPE MTY_T_DOC_KEY
2782* | [--->] IT_CAN_KEYS TYPE MTY_T_DOC_KEY
2783* | [--->] IT_INQ_KEYS TYPE MTY_T_DOC_KEY
2784* +--------------------------------------------------------------------------------------</SIGNATURE>
2785 METHOD fetch_by_purchase_req_sec.
2786
2787 get_req_by_inq(
2788 EXPORTING
2789 it_inquiry = mt_inquiry
2790 IMPORTING
2791 et_inq_req = DATA(lt_inq_manual)
2792 et_requisition = DATA(lt_requisition)
2793 ).
2794
2795* Повторно запускаем pegging
2796 do_pegging_req(
2797 EXPORTING
2798 it_requisition = lt_requisition
2799 IMPORTING
2800 et_res_keys = DATA(lt_res_keys_sec)
2801 et_can_keys = DATA(lt_can_keys_sec)
2802 et_inq_keys = DATA(lt_inq_keys_sec)
2803 et_cancelation_peg = DATA(lt_cancelation_peg_sec)
2804 et_inquiry_peg = DATA(lt_inquiry_peg_sec)
2805 et_reservation_peg = DATA(lt_reservation_peg_sec)
2806 ).
2807
2808* Исключаем уже обработанные потребности
2809 exclude_exist_keys(
2810 EXPORTING
2811 it_log_keys = it_res_keys
2812 CHANGING
2813 ct_keys = lt_res_keys_sec
2814 ).
2815 exclude_exist_keys(
2816 EXPORTING
2817 it_log_keys = it_can_keys
2818 CHANGING
2819 ct_keys = lt_can_keys_sec
2820 ).
2821 exclude_exist_keys(
2822 EXPORTING
2823 it_log_keys = it_inq_keys
2824 CHANGING
2825 ct_keys = lt_inq_keys_sec
2826 ).
2827
2828 fetch_requirement_documents(
2829 EXPORTING
2830 it_inq_keys = lt_inq_keys_sec
2831 it_res_keys = lt_res_keys_sec
2832 it_can_keys = lt_can_keys_sec
2833 IMPORTING
2834 et_cancelation = DATA(lt_cancelation)
2835 et_reservation = DATA(lt_reservation)
2836 et_inquiry = DATA(lt_inquiry)
2837 ).
2838
2839* Добавляем потребности в общие таблицы
2840 LOOP AT lt_inquiry ASSIGNING FIELD-SYMBOL(<ls_inq>).
2841 INSERT <ls_inq> INTO TABLE mt_inquiry.
2842 ENDLOOP.
2843 LOOP AT lt_reservation ASSIGNING FIELD-SYMBOL(<ls_res>).
2844 INSERT <ls_res> INTO TABLE mt_reservation.
2845 ENDLOOP.
2846 LOOP AT lt_cancelation ASSIGNING FIELD-SYMBOL(<ls_can>).
2847 INSERT <ls_can> INTO TABLE mt_cancelation.
2848 ENDLOOP.
2849
2850* Связываем начальные заявки с конечными потребностями
2851 LOOP AT mt_inquiry_peg ASSIGNING FIELD-SYMBOL(<ls_inq_peg>).
2852 LOOP AT lt_inq_manual ASSIGNING FIELD-SYMBOL(<ls_manual>) WHERE reqnr = <ls_inq_peg>-reqnr
2853 AND reqps = <ls_inq_peg>-reqps
2854 AND reqet = <ls_inq_peg>-reqet.
2855 add_pegging_second(
2856 EXPORTING
2857 is_inq_req = <ls_manual>
2858 is_inq_peg = <ls_inq_peg>
2859 it_peg_sec = lt_inquiry_peg_sec
2860 CHANGING
2861 ct_inquiry_peg = mt_inquiry_peg
2862 ).
2863 add_pegging_second(
2864 EXPORTING
2865 is_inq_req = <ls_manual>
2866 is_inq_peg = <ls_inq_peg>
2867 it_peg_sec = lt_reservation_peg_sec
2868 CHANGING
2869 ct_inquiry_peg = mt_reservation_peg
2870 ).
2871 add_pegging_second(
2872 EXPORTING
2873 is_inq_req = <ls_manual>
2874 is_inq_peg = <ls_inq_peg>
2875 it_peg_sec = lt_cancelation_peg_sec
2876 CHANGING
2877 ct_inquiry_peg = mt_cancelation_peg
2878 ).
2879 ENDLOOP.
2880 IF sy-subrc = 0.
2881 DELETE mt_inquiry_peg.
2882 DELETE mt_inquiry WHERE vbeln = <ls_manual>-reqnr
2883 AND posnr = <ls_manual>-reqps
2884 AND etenr = <ls_manual>-reqet.
2885 CONTINUE.
2886 ENDIF.
2887 ENDLOOP.
2888
2889 ENDMETHOD.
2890
2891
2892* <SIGNATURE>---------------------------------------------------------------------------------------+
2893* | Instance Private Method ZCL_P2PE312_NOTIF_MODEL->FETCH_BY_REQUIREMENTS
2894* +-------------------------------------------------------------------------------------------------+
2895* +--------------------------------------------------------------------------------------</SIGNATURE>
2896 METHOD fetch_by_requirements.
2897*--------------------------------------------------------------------*
2898* Выбор данных по потребностям
2899*--------------------------------------------------------------------*
2900
2901 DATA: lt_pegging_key TYPE mty_t_pegging_key.
2902
2903 cl_progress_indicator=>progress_indicate( i_text = text-001 ).
2904 IF zif_p2pe312_constants=>mc_doc_type_mm IN mrt_doctyp AND
2905 ms_sel-cb_can IS NOT INITIAL.
2906 fetch_can_by_selopts( ).
2907 ENDIF.
2908 IF zif_p2pe312_constants=>mc_doc_type_mm IN mrt_doctyp AND
2909 ms_sel-cb_trr IS NOT INITIAL.
2910 fetch_req_transf_by_selopts( ).
2911 ENDIF.
2912 IF zif_p2pe312_constants=>mc_doc_type_sd IN mrt_doctyp AND
2913 ms_sel-cb_inq IS NOT INITIAL.
2914 fetch_inq_by_selopts( ).
2915 ENDIF.
2916 IF ( zif_p2pe312_constants=>mc_doc_type_pm IN mrt_doctyp OR
2917 zif_p2pe312_constants=>mc_doc_type_ps IN mrt_doctyp ) AND
2918 ms_sel-cb_res IS NOT INITIAL.
2919 fetch_res_by_selopts( ).
2920 ENDIF.
2921
2922* Выбираем уникальные пары материал-завод
2923 get_matnr_werks(
2924 IMPORTING
2925 et_matnr_werks = DATA(lt_matnr_werks)
2926 ).
2927
2928 cl_progress_indicator=>progress_indicate( i_text = text-002 ).
2929 fetch_req_by_keys(
2930 EXPORTING
2931 it_matnr_werks = lt_matnr_werks
2932 IMPORTING
2933 et_requisition = mt_requisition
2934 ).
2935
2936 fill_peg_keys(
2937 EXPORTING
2938 it_requisition = mt_requisition
2939 IMPORTING
2940 et_pegging_key = lt_pegging_key
2941 ).
2942
2943 cl_progress_indicator=>progress_indicate( i_text = text-003 ).
2944 get_pegging(
2945 EXPORTING
2946 it_pegging_key = lt_pegging_key
2947 IMPORTING
2948 et_reservation_key = mt_reservation_peg
2949 et_inquiry_key = mt_inquiry_peg
2950 et_cancelation_key = mt_cancelation_peg
2951 et_req_transf_key = mt_req_transf_peg
2952 ).
2953
2954 READ TABLE ms_sel-s_nsort TRANSPORTING NO FIELDS WITH KEY low = zif_p2pe312_constants=>mcs_nsort-n01.
2955 IF sy-subrc = 0.
2956 fetch_by_requirements_sec( ).
2957 ENDIF.
2958
2959 ENDMETHOD.
2960
2961
2962* <SIGNATURE>---------------------------------------------------------------------------------------+
2963* | Instance Private Method ZCL_P2PE312_NOTIF_MODEL->FETCH_BY_REQUIREMENTS_SEC
2964* +-------------------------------------------------------------------------------------------------+
2965* +--------------------------------------------------------------------------------------</SIGNATURE>
2966 METHOD fetch_by_requirements_sec.
2967
2968* Доп. получение связей с потребностями из другой БЕ
2969 get_pegging_inq_manual(
2970 EXPORTING
2971 it_requisition = mt_requisition
2972 IMPORTING
2973 et_inquiry_key = DATA(lt_inquiry_key)
2974 et_matnr_werks = DATA(lt_matnr_werks_sec)
2975 ).
2976
2977 LOOP AT lt_inquiry_key ASSIGNING FIELD-SYMBOL(<ls_inquiry_key>).
2978 DELETE mt_inquiry WHERE vbeln = <ls_inquiry_key>-reqnr
2979 AND posnr = <ls_inquiry_key>-reqps
2980 AND etenr = <ls_inquiry_key>-reqet.
2981 ENDLOOP.
2982
2983* Для за найденных сбытовых заказов выполняем поиск заявок еще раз
2984 fetch_req_by_keys(
2985 EXPORTING
2986 it_matnr_werks = lt_matnr_werks_sec
2987 IMPORTING
2988 et_requisition = DATA(lt_requisition)
2989 ).
2990
2991 LOOP AT lt_requisition ASSIGNING FIELD-SYMBOL(<ls_req>).
2992 READ TABLE mt_requisition TRANSPORTING NO FIELDS WITH KEY banfn = <ls_req>-banfn
2993 bnfpo = <ls_req>-bnfpo.
2994 IF sy-subrc <> 0.
2995 INSERT <ls_req> INTO TABLE mt_requisition.
2996 ENDIF.
2997 ENDLOOP.
2998
2999 fill_peg_keys(
3000 EXPORTING
3001 it_requisition = lt_requisition
3002 IMPORTING
3003 et_pegging_key = DATA(lt_pegging_key)
3004 ).
3005
3006 get_pegging(
3007 EXPORTING
3008 it_pegging_key = lt_pegging_key
3009 IMPORTING
3010 et_inquiry_key = DATA(lt_inquiry_peg_sec)
3011 ).
3012
3013 LOOP AT lt_inquiry_peg_sec ASSIGNING FIELD-SYMBOL(<ls_inq>).
3014 INSERT <ls_inq> INTO TABLE mt_inquiry_peg.
3015 ENDLOOP.
3016
3017* Подменяем заявки на закупку
3018 add_pegging_second_rev(
3019 EXPORTING
3020 it_inquiry_peg = mt_inquiry_peg
3021 it_inquiry_manual = lt_inquiry_key
3022 CHANGING
3023 ct_pegging_key = mt_reservation_peg
3024 ).
3025 add_pegging_second_rev(
3026 EXPORTING
3027 it_inquiry_peg = mt_inquiry_peg
3028 it_inquiry_manual = lt_inquiry_key
3029 CHANGING
3030 ct_pegging_key = mt_inquiry_peg
3031 ).
3032 add_pegging_second_rev(
3033 EXPORTING
3034 it_inquiry_peg = mt_inquiry_peg
3035 it_inquiry_manual = lt_inquiry_key
3036 CHANGING
3037 ct_pegging_key = mt_cancelation_peg
3038 ).
3039 add_pegging_second_rev(
3040 EXPORTING
3041 it_inquiry_peg = mt_inquiry_peg
3042 it_inquiry_manual = lt_inquiry_key
3043 CHANGING
3044 ct_pegging_key = mt_req_transf_peg
3045 ).
3046
3047 ENDMETHOD.
3048
3049
3050* <SIGNATURE>---------------------------------------------------------------------------------------+
3051* | Instance Private Method ZCL_P2PE312_NOTIF_MODEL->FETCH_BY_SNDLOG
3052* +-------------------------------------------------------------------------------------------------+
3053* +--------------------------------------------------------------------------------------</SIGNATURE>
3054 METHOD fetch_by_sndlog.
3055
3056 fetch_sndlog(
3057 IMPORTING
3058 et_sndlog = mt_sndlog
3059 ).
3060
3061* Разбираем документы по видам
3062 get_doc_keys_sndlog(
3063 EXPORTING
3064 it_sndlog = mt_sndlog
3065 IMPORTING
3066 et_req_keys = DATA(lt_req_keys)
3067 et_mseg_keys = DATA(lt_mseg_keys)
3068 ).
3069
3070 get_online_docs(
3071 EXPORTING
3072 irt_erdat = ms_sel-s_serdat
3073 it_req_keys = lt_req_keys
3074 it_mseg_keys = lt_mseg_keys
3075 ).
3076
3077 ENDMETHOD.
3078
3079
3080* <SIGNATURE>---------------------------------------------------------------------------------------+
3081* | Instance Private Method ZCL_P2PE312_NOTIF_MODEL->FETCH_CAN_BY_KEYS
3082* +-------------------------------------------------------------------------------------------------+
3083* | [--->] IT_DOC_KEYS TYPE MTY_T_DOC_KEY
3084* | [<---] ET_CANCELATION TYPE MTY_T_REQUISITION
3085* +--------------------------------------------------------------------------------------</SIGNATURE>
3086 METHOD fetch_can_by_keys.
3087*--------------------------------------------------------------------*
3088* Выбор заявок на списание по ключевым полям
3089*--------------------------------------------------------------------*
3090
3091 DATA: l_rt_pstyp TYPE RANGE OF pstyp,
3092 wa_canc LIKE LINE OF et_cancelation.
3093
3094 TYPES: BEGIN OF lty_s_doc_keys,
3095 banfn TYPE banfn,
3096 bnfpo TYPE bnfpo,
3097 END OF lty_s_doc_keys,
3098 lty_t_doc_keys TYPE SORTED TABLE OF lty_s_doc_keys WITH UNIQUE KEY banfn bnfpo.
3099
3100 CLEAR et_cancelation.
3101
3102 ycl_const_utils=>get_tvrange(
3103 EXPORTING
3104 iv_cons = zif_p2pe312_constants=>mc_tvarv_so_rqpstyp
3105 IMPORTING
3106 et_range = l_rt_pstyp
3107 ).
3108
3109 DATA(lt_can_keys) =
3110 VALUE lty_t_doc_keys(
3111 FOR GROUPS ls_group OF <ls_can_f> IN it_doc_keys
3112 GROUP BY ( banfn = <ls_can_f>-doc_num
3113 bnfpo = <ls_can_f>-doc_pos )
3114 WITHOUT MEMBERS ( banfn = ls_group-banfn
3115 bnfpo = ls_group-bnfpo )
3116 ).
3117
3118 CHECK lt_can_keys IS NOT INITIAL.
3119
3120 SELECT eban~banfn, eban~bnfpo,
3121 eban~bsart, eban~bstyp,
3122 eban~werks AS r_werks, eban~lgort, eban~blckd, eban~blckt, eban~bwtar,
3123 eban~matnr, eban~menge, eban~meins,
3124 eban~ernam, eban~erdat, eban~badat, eban~lfdat, eban~frgdt,
3125 t001w~bwkey, t001k~bukrs, t001~waers,
3126 makt~maktx,
3127 adrp~name_first, adrp~name_last,
3128 mdma~dismm AS p_dismm,
3129 marc~dismm AS r_dismm,
3130 mdlg~berid AS p_berid,
3131 mdlw~berid AS r_berid,
3132 mdma~berid AS mdma_berid,
3133 mdma~matnr AS mdma_matnr,
3134 marc~ekgrp AS r_ekgrp,
3135 marc_pur~ekgrp AS p_ekgrp,
3136 marc~sobsl AS r_sobsl,
3137 ztp2pe312_doctyp~doc_type,
3138 eban~reslo AS rlgort
3139 FROM eban
3140 JOIN ztp2pe312_doctyp ON ztp2pe312_doctyp~doc_sort = eban~bsart
3141 LEFT JOIN makt ON makt~matnr = eban~matnr
3142 LEFT JOIN t001w ON t001w~werks = eban~werks
3143 LEFT JOIN t001k ON t001k~bwkey = t001w~bwkey
3144 LEFT JOIN t001 ON t001~bukrs = t001k~bukrs
3145 LEFT JOIN usr21 ON usr21~bname = eban~ernam
3146 LEFT JOIN adrp ON adrp~persnumber = usr21~persnumber
3147 AND adrp~date_from = @zif_p2pe312_constants=>mc_adrc_date_from
3148 AND adrp~nation = @zif_p2pe312_constants=>mc_nation_default
3149 LEFT JOIN mdlg ON mdlg~werks = eban~werks
3150 AND mdlg~lgort = eban~reslo
3151 LEFT JOIN mdma ON mdma~matnr = eban~matnr
3152 AND mdma~berid = mdlg~berid
3153* AND mdma~loekz = @abap_false
3154 LEFT JOIN marc ON marc~matnr = eban~matnr
3155 AND marc~werks = eban~werks
3156 LEFT JOIN t460a ON t460a~werks = marc~werks
3157 AND t460a~sobsl = marc~sobsl
3158 LEFT JOIN marc AS marc_pur ON marc_pur~matnr = eban~matnr
3159 AND marc_pur~werks = t460a~wrk02
3160 LEFT JOIN mdlw ON mdlw~werks = eban~werks
3161 FOR ALL ENTRIES IN @lt_can_keys
3162 WHERE t001k~bukrs IN @ms_sel-s_abukrs[]
3163 AND eban~banfn = @lt_can_keys-banfn
3164 AND eban~bnfpo = @lt_can_keys-bnfpo
3165 AND eban~loekz = @abap_false
3166 AND eban~pstyp IN @l_rt_pstyp
3167 AND eban~banpr = @zif_p2pe312_constants=>mc_banpr_released
3168 AND eban~ebakz = @abap_false
3169 AND ztp2pe312_doctyp~doc_type = @zif_p2pe312_constants=>mc_doc_type_mm
3170 AND NOT EXISTS ( SELECT *
3171 FROM ekpo
3172 WHERE ekpo~banfn = eban~banfn
3173 AND ekpo~bnfpo = eban~bnfpo
3174 AND ekpo~elikz = @abap_true )
3175 INTO TABLE @DATA(lt_canc_tmp).
3176
3177* { eiu.mezentceva 3100011230 21.03.2019
3178 LOOP AT lt_canc_tmp ASSIGNING FIELD-SYMBOL(<ls_canc_tmp>).
3179 IF <ls_canc_tmp>-p_berid IS NOT INITIAL
3180 AND <ls_canc_tmp>-mdma_berid = <ls_canc_tmp>-p_berid
3181 AND <ls_canc_tmp>-mdma_matnr = <ls_canc_tmp>-matnr.
3182 <ls_canc_tmp>-r_berid = <ls_canc_tmp>-p_berid.
3183 <ls_canc_tmp>-r_dismm = <ls_canc_tmp>-p_dismm.
3184 ENDIF.
3185 MOVE-CORRESPONDING <ls_canc_tmp> TO wa_canc.
3186 wa_canc-name = wa_canc-name_first && ` ` && wa_canc-name_last.
3187 IF wa_canc-p_ekgrp IS NOT INITIAL.
3188 wa_canc-r_ekgrp = wa_canc-p_ekgrp.
3189 ENDIF.
3190 INSERT wa_canc INTO TABLE et_cancelation.
3191 ENDLOOP.
3192* } eiu.mezentceva
3193
3194 ENDMETHOD.
3195
3196
3197* <SIGNATURE>---------------------------------------------------------------------------------------+
3198* | Instance Private Method ZCL_P2PE312_NOTIF_MODEL->FETCH_CAN_BY_SELOPTS
3199* +-------------------------------------------------------------------------------------------------+
3200* +--------------------------------------------------------------------------------------</SIGNATURE>
3201 METHOD fetch_can_by_selopts.
3202*--------------------------------------------------------------------*
3203* Выбор данных заявок на списание по ограничениям СЭ
3204*--------------------------------------------------------------------*
3205
3206 DATA: l_rt_pstyp TYPE RANGE OF pstyp.
3207
3208 CLEAR mt_cancelation.
3209
3210 ycl_const_utils=>get_tvrange(
3211 EXPORTING
3212 iv_cons = zif_p2pe312_constants=>mc_tvarv_so_rqpstyp
3213 IMPORTING
3214 et_range = l_rt_pstyp
3215 ).
3216
3217 SELECT eban~banfn, eban~bnfpo,
3218 eban~bsart, eban~bstyp,
3219 eban~werks AS r_werks, eban~lgort, eban~blckd, eban~blckt, eban~bwtar,
3220 eban~matnr, eban~menge, eban~meins,
3221 eban~ernam, eban~erdat, eban~badat, eban~lfdat, eban~frgdt,
3222 t001w~bwkey, t001k~bukrs, t001~waers,
3223 makt~maktx,
3224 adrp~name_first && ' ' && adrp~name_last AS name,
3225 CASE
3226 WHEN t460a~wrk02 <> @abap_false THEN t460a~wrk02
3227 ELSE eban~werks
3228 END AS p_werks,
3229 CASE
3230 WHEN mdlg~berid <> @abap_false AND mdma~matnr = eban~matnr AND mdma~berid = mdlg~berid THEN mdlg~berid
3231 ELSE mdlw~berid
3232 END AS r_berid,
3233 CASE
3234 WHEN mdlg~berid <> @abap_false AND mdma~matnr = eban~matnr AND mdma~berid = mdlg~berid THEN mdma~dismm
3235 ELSE marc~dismm
3236 END AS r_dismm,
3237 CASE
3238 WHEN marc_pur~ekgrp <> @abap_false THEN marc_pur~ekgrp
3239 ELSE marc~ekgrp
3240 END AS r_ekgrp,
3241 marc~sobsl AS r_sobsl,
3242 ztp2pe312_doctyp~doc_type,
3243 eban~reslo AS rlgort
3244 FROM eban
3245 JOIN ztp2pe312_doctyp ON ztp2pe312_doctyp~doc_sort = eban~bsart
3246 LEFT JOIN makt ON makt~matnr = eban~matnr
3247 LEFT JOIN t001w ON t001w~werks = eban~werks
3248 LEFT JOIN t001k ON t001k~bwkey = t001w~bwkey
3249 LEFT JOIN t001 ON t001~bukrs = t001k~bukrs
3250 LEFT JOIN usr21 ON usr21~bname = eban~ernam
3251 LEFT JOIN adrp ON adrp~persnumber = usr21~persnumber
3252 AND adrp~date_from = @zif_p2pe312_constants=>mc_adrc_date_from
3253 AND adrp~nation = @zif_p2pe312_constants=>mc_nation_default
3254 LEFT JOIN marc ON marc~matnr = eban~matnr
3255 AND marc~werks = eban~werks
3256 LEFT JOIN t460a ON t460a~werks = marc~werks
3257 AND t460a~sobsl = marc~sobsl
3258 LEFT JOIN marc AS marc_pur ON marc_pur~matnr = eban~matnr
3259 AND marc_pur~werks = t460a~wrk02
3260 LEFT JOIN mdlg ON mdlg~werks = eban~werks
3261 AND mdlg~lgort = eban~reslo
3262 LEFT JOIN mdma ON mdma~matnr = eban~matnr
3263 AND mdma~berid = mdlg~berid
3264* AND mdma~loekz = @abap_false
3265 LEFT JOIN mdlw ON mdlw~werks = eban~werks
3266 WHERE t001k~bukrs IN @ms_sel-s_rbukrs[]
3267 AND t001k~bukrs IN @ms_sel-s_abukrs[]
3268 AND eban~werks IN @ms_sel-s_rwerks[]
3269 AND eban~berid IN @ms_sel-s_rberid[]
3270 AND eban~matnr IN @ms_sel-s_rmatnr[]
3271 AND eban~bsart IN @ms_sel-s_rptype[]
3272 AND eban~banfn IN @ms_sel-s_rbanfn[]
3273 AND eban~bnfpo IN @ms_sel-s_rbnfpo[]
3274 AND eban~ernam IN @ms_sel-s_rernam[]
3275 AND eban~erdat IN @ms_sel-s_rerdat[]
3276 AND eban~pstyp IN @l_rt_pstyp
3277 AND eban~banpr = @zif_p2pe312_constants=>mc_banpr_released
3278 AND eban~loekz = @abap_false
3279 AND eban~ebakz = @abap_false
3280 AND ztp2pe312_doctyp~doc_type = @zif_p2pe312_constants=>mc_doc_type_mm
3281 AND NOT EXISTS ( SELECT *
3282 FROM ekpo
3283 WHERE ekpo~banfn = eban~banfn
3284 AND ekpo~bnfpo = eban~bnfpo
3285 AND ekpo~elikz = @abap_true )
3286 ORDER BY banfn, bnfpo
3287 INTO CORRESPONDING FIELDS OF TABLE @mt_cancelation.
3288
3289 IF ms_sel-s_rekgrp[] IS NOT INITIAL.
3290 DELETE mt_cancelation WHERE r_ekgrp NOT IN ms_sel-s_rekgrp[].
3291 ENDIF.
3292
3293 ENDMETHOD.
3294
3295
3296* <SIGNATURE>---------------------------------------------------------------------------------------+
3297* | Instance Private Method ZCL_P2PE312_NOTIF_MODEL->FETCH_INQ_BY_KEYS
3298* +-------------------------------------------------------------------------------------------------+
3299* | [--->] IT_DOC_KEYS TYPE MTY_T_DOC_KEY
3300* | [<---] ET_INQUIRY TYPE MTY_T_INQUIRY
3301* +--------------------------------------------------------------------------------------</SIGNATURE>
3302 METHOD fetch_inq_by_keys.
3303*--------------------------------------------------------------------*
3304* Выбор данных запросов по ключевым полям
3305*--------------------------------------------------------------------*
3306
3307 TYPES: BEGIN OF lty_s_doc_keys,
3308 vbeln TYPE vbeln_va,
3309 posnr TYPE posnr_va,
3310 etenr TYPE etenr,
3311 END OF lty_s_doc_keys,
3312 lty_t_doc_keys TYPE SORTED TABLE OF lty_s_doc_keys WITH UNIQUE KEY vbeln posnr etenr.
3313
3314 DATA wa_inq LIKE LINE OF et_inquiry.
3315
3316 CLEAR et_inquiry.
3317
3318 DATA(lt_inq_keys) =
3319 VALUE lty_t_doc_keys(
3320 FOR <ls_inq_f> IN it_doc_keys
3321 ( vbeln = <ls_inq_f>-doc_num
3322 posnr = <ls_inq_f>-doc_pos
3323 etenr = <ls_inq_f>-doc_sch )
3324 ).
3325
3326 CHECK lt_inq_keys IS NOT INITIAL.
3327
3328 SELECT vbak~vbeln, vbap~posnr, vbep~etenr,
3329 vbak~ps_psp_pnr, vbak~auart, vbak~erdat,
3330 vbak~ernam,
3331 vbap~matnr, vbap~werks AS r_werks, vbap~klmeng, vbap~bwtar,
3332 vbep~edatu, vbep~meins,
3333 t001w~bwkey, t001k~bukrs, t001~waers,
3334 makt~maktx,
3335 adrp~name_first, adrp~name_last,
3336 mdma~dismm AS p_dismm,
3337 marc~dismm AS r_dismm,
3338 mdlg~berid AS p_berid,
3339 mdlw~berid AS r_berid,
3340 mdma~berid AS mdma_berid,
3341 mdma~matnr AS mdma_matnr,
3342 marc~ekgrp AS r_ekgrp,
3343 marc_pur~ekgrp AS p_ekgrp,
3344 marc~sobsl AS r_sobsl,
3345 ztp2pe312_doctyp~doc_type,
3346 ekko~ernam AS e_ernam,
3347 adrp_e~name_first AS e_name_first, adrp_e~name_last AS e_name_last,
3348 vbap~lgort AS rlgort,
3349 vbak~bstnk, vbap~posex
3350 FROM vbak
3351 JOIN vbap ON vbap~vbeln = vbak~vbeln
3352 JOIN vbep ON vbep~vbeln = vbap~vbeln
3353 AND vbep~posnr = vbap~posnr
3354*{ DELETE 3100012200
3355* JOIN vbbe ON vbbe~vbeln = vbep~vbeln
3356* AND vbbe~posnr = vbep~posnr
3357* AND vbbe~etenr = vbep~etenr
3358*} DELETE 3100012200
3359 LEFT JOIN mdlg ON mdlg~werks = vbap~werks
3360 AND mdlg~lgort = vbap~lgort
3361 JOIN ztp2pe312_doctyp ON ztp2pe312_doctyp~doc_sort = vbak~auart
3362 LEFT JOIN t001w ON t001w~werks = vbap~werks
3363 LEFT JOIN t001k ON t001k~bwkey = t001w~bwkey
3364 LEFT JOIN t001 ON t001~bukrs = t001k~bukrs
3365 LEFT JOIN makt ON makt~matnr = vbap~matnr
3366 LEFT JOIN usr21 ON usr21~bname = vbak~ernam
3367 LEFT JOIN adrp ON adrp~persnumber = usr21~persnumber
3368 AND adrp~date_from = @zif_p2pe312_constants=>mc_adrc_date_from
3369 AND adrp~nation = @zif_p2pe312_constants=>mc_nation_default
3370 LEFT JOIN mdma ON mdma~matnr = vbap~matnr
3371 AND mdma~berid = mdlg~berid
3372* AND mdma~loekz = @abap_false
3373 LEFT JOIN marc ON marc~matnr = vbap~matnr
3374 AND marc~werks = vbap~werks
3375 LEFT JOIN mdlw ON mdlw~werks = vbap~werks
3376 LEFT JOIN t460a ON t460a~werks = marc~werks
3377 AND t460a~sobsl = marc~sobsl
3378 LEFT JOIN marc AS marc_pur ON marc_pur~matnr = vbap~matnr
3379 AND marc_pur~werks = t460a~wrk02
3380 LEFT JOIN ekko ON ekko~ebeln = vbak~bstnk
3381 LEFT JOIN usr21 AS usr21_e ON usr21_e~bname = ekko~ernam
3382 LEFT JOIN adrp AS adrp_e ON adrp_e~persnumber = usr21_e~persnumber
3383 AND adrp_e~date_from = @zif_p2pe312_constants=>mc_adrc_date_from
3384 AND adrp_e~nation = @zif_p2pe312_constants=>mc_nation_default
3385 FOR ALL ENTRIES IN @lt_inq_keys
3386 WHERE t001k~bukrs IN @ms_sel-s_abukrs[]
3387 AND vbak~vbtyp IN ( @zif_p2pe312_constants=>mc_vbtyp_request,
3388 @zif_p2pe312_constants=>mc_vbtyp_order )
3389 AND vbak~vbeln = @lt_inq_keys-vbeln
3390 AND vbap~posnr = @lt_inq_keys-posnr
3391 AND vbap~abgru = @zif_p2pe312_constants=>mc_abgru_initial
3392 AND vbep~etenr = @lt_inq_keys-etenr
3393*{ DELETE 3100012200
3394* AND vbbe~omeng > 0
3395*} DELETE 3100012200
3396 AND ztp2pe312_doctyp~doc_type = @zif_p2pe312_constants=>mc_doc_type_sd
3397 INTO TABLE @DATA(lt_inq_tmp).
3398
3399* { eiu.mezentceva 3100011230 21.03.2019
3400 LOOP AT lt_inq_tmp ASSIGNING FIELD-SYMBOL(<ls_inq_tmp>).
3401 IF <ls_inq_tmp>-p_berid IS NOT INITIAL
3402 AND <ls_inq_tmp>-mdma_berid = <ls_inq_tmp>-p_berid
3403 AND <ls_inq_tmp>-mdma_matnr = <ls_inq_tmp>-matnr.
3404 <ls_inq_tmp>-r_berid = <ls_inq_tmp>-p_berid.
3405 <ls_inq_tmp>-r_dismm = <ls_inq_tmp>-p_dismm.
3406 ENDIF.
3407 MOVE-CORRESPONDING <ls_inq_tmp> TO wa_inq.
3408 wa_inq-name = wa_inq-name_first && ` ` && wa_inq-name_last.
3409 wa_inq-e_name = wa_inq-e_name_first && ` ` && wa_inq-e_name_last.
3410 IF wa_inq-p_ekgrp IS NOT INITIAL.
3411 wa_inq-r_ekgrp = wa_inq-p_ekgrp.
3412 ENDIF.
3413 INSERT wa_inq INTO TABLE et_inquiry.
3414 ENDLOOP.
3415* } eiu.mezentceva
3416
3417 ENDMETHOD.
3418
3419
3420* <SIGNATURE>---------------------------------------------------------------------------------------+
3421* | Instance Private Method ZCL_P2PE312_NOTIF_MODEL->FETCH_INQ_BY_SELOPTS
3422* +-------------------------------------------------------------------------------------------------+
3423* +--------------------------------------------------------------------------------------</SIGNATURE>
3424 METHOD fetch_inq_by_selopts.
3425*--------------------------------------------------------------------*
3426* Выбор данных запросов по ограничениям СЭ
3427*--------------------------------------------------------------------*
3428
3429 SELECT vbak~vbeln, vbap~posnr, vbep~etenr,
3430 vbak~ps_psp_pnr, vbak~auart, vbak~erdat, vbak~ernam,
3431 vbap~matnr, vbap~werks AS r_werks, vbap~klmeng, vbap~bwtar,
3432 vbep~edatu, vbep~meins,
3433 t001w~bwkey, t001k~bukrs, t001~waers,
3434 makt~maktx,
3435 adrp~name_first && ' ' && adrp~name_last AS name,
3436 CASE
3437 WHEN t460a~wrk02 <> @abap_false THEN t460a~wrk02
3438 ELSE vbap~werks
3439 END AS p_werks,
3440 CASE
3441 WHEN mdlg~berid <> @abap_false AND mdma~matnr = vbap~matnr AND mdma~berid = mdlg~berid THEN mdlg~berid
3442 ELSE mdlw~berid
3443 END AS r_berid,
3444 CASE
3445 WHEN mdlg~berid <> @abap_false AND mdma~matnr = vbap~matnr AND mdma~berid = mdlg~berid THEN mdma~dismm
3446 ELSE marc~dismm
3447 END AS r_dismm,
3448 CASE
3449 WHEN marc_pur~ekgrp <> @abap_false THEN marc_pur~ekgrp
3450 ELSE marc~ekgrp
3451 END AS r_ekgrp,
3452 marc~sobsl AS r_sobsl,
3453 ztp2pe312_doctyp~doc_type,
3454 ekko~ernam AS e_ernam,
3455 adrp_e~name_first && ' ' && adrp_e~name_last AS e_name,
3456 vbap~lgort AS rlgort,
3457 vbak~bstnk, vbap~posex,
3458 ekko~ebeln
3459 FROM vbak
3460 JOIN vbap ON vbap~vbeln = vbak~vbeln
3461 JOIN vbep ON vbep~vbeln = vbap~vbeln
3462 AND vbep~posnr = vbap~posnr
3463*{ DELETE 3100012200
3464* JOIN vbbe ON vbbe~vbeln = vbep~vbeln
3465* AND vbbe~posnr = vbep~posnr
3466* AND vbbe~etenr = vbep~etenr
3467*} DELETE 3100012200
3468 JOIN ztp2pe312_doctyp ON ztp2pe312_doctyp~doc_sort = vbak~auart
3469 LEFT JOIN t001w ON t001w~werks = vbap~werks
3470 LEFT JOIN t001k ON t001k~bwkey = t001w~bwkey
3471 LEFT JOIN t001 ON t001~bukrs = t001k~bukrs
3472 LEFT JOIN makt ON makt~matnr = vbap~matnr
3473 LEFT JOIN usr21 ON usr21~bname = vbak~ernam
3474 LEFT JOIN adrp ON adrp~persnumber = usr21~persnumber
3475 AND adrp~date_from = @zif_p2pe312_constants=>mc_adrc_date_from
3476 AND adrp~nation = @zif_p2pe312_constants=>mc_nation_default
3477 LEFT JOIN marc ON marc~matnr = vbap~matnr
3478 AND marc~werks = vbap~werks
3479 LEFT JOIN t460a ON t460a~werks = marc~werks
3480 AND t460a~sobsl = marc~sobsl
3481 LEFT JOIN marc AS marc_pur ON marc_pur~matnr = vbap~matnr
3482 AND marc_pur~werks = t460a~wrk02
3483 LEFT JOIN mdlg ON mdlg~werks = vbap~werks
3484 AND mdlg~lgort = vbap~lgort
3485 LEFT JOIN mdma ON mdma~matnr = vbap~matnr
3486 AND mdma~berid = mdlg~berid
3487* AND mdma~loekz = @abap_false
3488 LEFT JOIN mdlw ON mdlw~werks = vbap~werks
3489 LEFT JOIN ekko ON ekko~ebeln = vbak~bstnk
3490 LEFT JOIN usr21 AS usr21_e ON usr21_e~bname = ekko~ernam
3491 LEFT JOIN adrp AS adrp_e ON adrp_e~persnumber = usr21_e~persnumber
3492 AND adrp_e~date_from = @zif_p2pe312_constants=>mc_adrc_date_from
3493 AND adrp_e~nation = @zif_p2pe312_constants=>mc_nation_default
3494 WHERE t001k~bukrs IN @ms_sel-s_rbukrs[]
3495 AND t001k~bukrs IN @ms_sel-s_abukrs[]
3496 AND vbap~werks IN @ms_sel-s_rwerks[]
3497 AND mdlg~berid IN @ms_sel-s_rberid[]
3498 AND vbap~matnr IN @ms_sel-s_rmatnr[]
3499 AND vbak~auart IN @ms_sel-s_rptype[]
3500 AND vbak~vbtyp IN ( @zif_p2pe312_constants=>mc_vbtyp_request,
3501 @zif_p2pe312_constants=>mc_vbtyp_order )
3502 AND vbak~vbeln IN @ms_sel-s_rvbeln[]
3503 AND vbap~posnr IN @ms_sel-s_rposnr[]
3504 AND vbak~ernam IN @ms_sel-s_rernam[]
3505 AND vbak~erdat IN @ms_sel-s_rerdat[]
3506*{ DELETE 3100012200
3507* AND vbbe~omeng > 0
3508*} DELETE 3100012200
3509 AND vbap~abgru = @zif_p2pe312_constants=>mc_abgru_initial
3510 AND ztp2pe312_doctyp~doc_type = @zif_p2pe312_constants=>mc_doc_type_sd
3511 ORDER BY vbak~vbeln, vbap~posnr, vbep~etenr
3512 INTO CORRESPONDING FIELDS OF TABLE @mt_inquiry.
3513
3514 IF ms_sel-s_rekgrp[] IS NOT INITIAL.
3515 DELETE mt_inquiry WHERE r_ekgrp NOT IN ms_sel-s_rekgrp[].
3516 ENDIF.
3517
3518 ENDMETHOD.
3519
3520
3521* <SIGNATURE>---------------------------------------------------------------------------------------+
3522* | Instance Private Method ZCL_P2PE312_NOTIF_MODEL->FETCH_NOTIF_01
3523* +-------------------------------------------------------------------------------------------------+
3524* | [--->] IT_REQUISITION_KEY TYPE MTY_T_REQUISITION_KEY
3525* | [--->] IRT_ERDAT TYPE FIP_T_VDATU_RANGE
3526* +--------------------------------------------------------------------------------------</SIGNATURE>
3527 METHOD fetch_notif_01.
3528*--------------------------------------------------------------------*
3529* Выбор данных уведомления 01 (блокирование заявок на закупку)
3530*--------------------------------------------------------------------
3531
3532 DATA: lv_id TYPE thead-tdid,
3533 lt_lines TYPE tline_tab.
3534
3535 CLEAR mt_notif_01.
3536
3537 lv_id = ycl_const_utils=>get_tvvalue( iv_cons = zif_p2pe312_constants=>mc_tvarv_blckt_id_01 ).
3538
3539 CHECK it_requisition_key IS NOT INITIAL.
3540
3541 SELECT erev~edokn, erev~edokp, erev~revno,
3542 erev~rscod, erev~erdat, erev~ernam,
3543 adrp~name_first, adrp~name_last,
3544 t16ct~rstxt, eban~blckt
3545 FROM erev
3546 JOIN eban ON eban~banfn = erev~edokn
3547 AND eban~bnfpo = erev~edokp
3548 AND eban~blckd = @zif_p2pe312_constants=>mc_req_blckd
3549 LEFT JOIN usr21 ON usr21~bname = erev~ernam
3550 LEFT JOIN adrp ON adrp~persnumber = usr21~persnumber
3551 AND adrp~date_from = @zif_p2pe312_constants=>mc_adrc_date_from
3552 AND adrp~nation = @zif_p2pe312_constants=>mc_nation_default
3553 LEFT JOIN t16ct ON t16ct~rscod = erev~rscod
3554 AND t16ct~spras = @sy-langu
3555 FOR ALL ENTRIES IN @it_requisition_key
3556 WHERE erev~revok = @abap_false
3557 AND erev~bstyp = @zif_p2pe312_constants=>mc_bstyp_requisition
3558 AND erev~erdat IN @irt_erdat[]
3559 AND erev~edokn = @it_requisition_key-banfn
3560 AND erev~edokp = @it_requisition_key-bnfpo
3561 INTO CORRESPONDING FIELDS OF TABLE @mt_notif_01.
3562
3563 LOOP AT mt_notif_01 ASSIGNING FIELD-SYMBOL(<ls_notif_01>).
3564 <ls_notif_01>-name = <ls_notif_01>-name_first && ` ` && <ls_notif_01>-name_last.
3565
3566 CLEAR lt_lines.
3567 CALL FUNCTION 'READ_TEXT'
3568 EXPORTING
3569 id = lv_id
3570 language = sy-langu
3571 name = CONV tdobname( <ls_notif_01>-edokn )
3572 object = zif_p2pe312_constants=>mc_tdobject_ebanh
3573 TABLES
3574 lines = lt_lines
3575 EXCEPTIONS
3576 OTHERS = 1.
3577 IF sy-subrc = 0.
3578 LOOP AT lt_lines ASSIGNING FIELD-SYMBOL(<ls_line>).
3579 IF <ls_notif_01>-text IS NOT INITIAL.
3580 <ls_notif_01>-text = <ls_notif_01>-text && ` ` && <ls_line>-tdline.
3581 ELSE.
3582 <ls_notif_01>-text = <ls_line>-tdline.
3583 ENDIF.
3584 ENDLOOP.
3585 ENDIF.
3586
3587* Проверка текстов на равенство
3588 IF <ls_notif_01>-text = <ls_notif_01>-blckt.
3589 CLEAR <ls_notif_01>-text.
3590 ENDIF.
3591
3592* Собираем текст в один - RSTXT + BLCKT + TEXT
3593 IF <ls_notif_01>-blckt IS NOT INITIAL.
3594 <ls_notif_01>-blckt = |{ <ls_notif_01>-rstxt }, { <ls_notif_01>-blckt }|.
3595 ELSE.
3596 <ls_notif_01>-blckt = <ls_notif_01>-rstxt.
3597 ENDIF.
3598 IF <ls_notif_01>-text IS NOT INITIAL.
3599 <ls_notif_01>-blckt = |{ <ls_notif_01>-blckt }, { <ls_notif_01>-text }|.
3600 ENDIF.
3601
3602 ENDLOOP.
3603
3604 ENDMETHOD.
3605
3606
3607* <SIGNATURE>---------------------------------------------------------------------------------------+
3608* | Instance Private Method ZCL_P2PE312_NOTIF_MODEL->FETCH_NOTIF_03
3609* +-------------------------------------------------------------------------------------------------+
3610* | [--->] IRT_ERDAT TYPE FIP_T_VDATU_RANGE
3611* +--------------------------------------------------------------------------------------</SIGNATURE>
3612 METHOD fetch_notif_03.
3613*--------------------------------------------------------------------*
3614* Выбор данных уведомления 03 (блокирование заказа)
3615*--------------------------------------------------------------------*
3616
3617* Событие наступило, если в заказе на поставку статус procstat = '08'
3618* Ищем пользователя установившего блокировку
3619
3620 TYPES:
3621 BEGIN OF lty_s_ebeln,
3622 ebeln TYPE cdobjectv,
3623 END OF lty_s_ebeln,
3624 lty_t_ebeln TYPE SORTED TABLE OF lty_s_ebeln WITH UNIQUE KEY ebeln.
3625
3626 DATA: lv_id TYPE thead-tdid,
3627 lt_lines TYPE tline_tab.
3628
3629 lv_id = ycl_const_utils=>get_tvvalue( iv_cons = zif_p2pe312_constants=>mc_tvarv_po_htxt_id ).
3630
3631 DATA(lt_ebeln) =
3632 VALUE lty_t_ebeln(
3633 FOR GROUPS ls_group OF <ls_alv> IN mt_requisition
3634 WHERE ( ebeln IS NOT INITIAL AND
3635 procstat = zif_p2pe312_constants=>mc_procstat_rejected )
3636 GROUP BY ( ebeln = <ls_alv>-ebeln )
3637 WITHOUT MEMBERS ( ebeln = ls_group-ebeln )
3638 ).
3639
3640 CHECK lt_ebeln IS NOT INITIAL.
3641
3642 SELECT cdhdr~objectid AS ebeln, cdhdr~objectid , cdhdr~username, cdhdr~udate,
3643 adrp~name_first, adrp~name_last
3644 FROM cdhdr
3645 JOIN cdpos ON cdpos~objectclas = cdhdr~objectclas
3646 AND cdpos~objectid = cdhdr~objectid
3647 AND cdpos~changenr = cdhdr~changenr
3648 LEFT JOIN usr21 ON usr21~bname = cdhdr~username
3649 LEFT JOIN adrp ON adrp~persnumber = usr21~persnumber
3650 AND adrp~date_from = @zif_p2pe312_constants=>mc_adrc_date_from
3651 AND adrp~nation = @zif_p2pe312_constants=>mc_nation_default
3652 FOR ALL ENTRIES IN @lt_ebeln
3653 WHERE cdpos~objectclas = @zif_p2pe312_constants=>mc_objectclas_einkbeleg
3654 AND cdpos~objectid = @lt_ebeln-ebeln
3655 AND cdpos~tabname = @zif_p2pe312_constants=>mc_tabname_ekko
3656 AND cdpos~fname = @zif_p2pe312_constants=>mc_fname_procstat
3657 AND cdpos~value_new = @zif_p2pe312_constants=>mc_procstat_rejected
3658 AND NOT EXISTS ( SELECT mandant
3659 FROM cdpos AS tab
3660 WHERE tab~objectclas = cdpos~objectclas
3661 AND tab~objectid = cdpos~objectid
3662 AND tab~tabname = cdpos~tabname
3663 AND tab~fname = cdpos~fname
3664 AND tab~value_new = cdpos~value_new
3665 AND tab~changenr > cdpos~changenr )
3666 INTO CORRESPONDING FIELDS OF TABLE @mt_notif_03.
3667
3668 DELETE mt_notif_03 WHERE udate IS INITIAL.
3669
3670 LOOP AT mt_notif_03 ASSIGNING FIELD-SYMBOL(<ls_pos>).
3671
3672 <ls_pos>-name = <ls_pos>-name_first && ` ` && <ls_pos>-name_last.
3673
3674 CLEAR lt_lines.
3675 CALL FUNCTION 'READ_TEXT'
3676 EXPORTING
3677 id = lv_id
3678 language = sy-langu
3679 name = CONV tdobname( <ls_pos>-objectid )
3680 object = zif_p2pe312_constants=>mc_tdobject_ekko
3681 TABLES
3682 lines = lt_lines
3683 EXCEPTIONS
3684 OTHERS = 1.
3685 IF sy-subrc = 0.
3686 LOOP AT lt_lines ASSIGNING FIELD-SYMBOL(<ls_line>).
3687 IF <ls_pos>-text IS NOT INITIAL.
3688 <ls_pos>-text = <ls_pos>-text && ` ` && <ls_line>-tdline.
3689 ELSE.
3690 <ls_pos>-text = <ls_line>-tdline.
3691 ENDIF.
3692 ENDLOOP.
3693 ENDIF.
3694
3695 ENDLOOP.
3696
3697 ENDMETHOD.
3698
3699
3700* <SIGNATURE>---------------------------------------------------------------------------------------+
3701* | Instance Private Method ZCL_P2PE312_NOTIF_MODEL->FETCH_NOTIF_04
3702* +-------------------------------------------------------------------------------------------------+
3703* | [--->] IRT_ERDAT TYPE FIP_T_VDATU_RANGE
3704* +--------------------------------------------------------------------------------------</SIGNATURE>
3705 METHOD fetch_notif_04.
3706*--------------------------------------------------------------------*
3707* Выбор данных уведомления 04
3708*--------------------------------------------------------------------*
3709
3710 DATA(lt_ekpo_key) =
3711 VALUE mty_t_ekpo_key(
3712 FOR GROUPS ls_group OF <ls_alv> IN mt_alv
3713 WHERE ( ebeln IS NOT INITIAL AND
3714 ebelp IS NOT INITIAL )
3715 GROUP BY ( ebeln = <ls_alv>-ebeln
3716 ebelp = <ls_alv>-ebelp )
3717 ( ebeln = ls_group-ebeln
3718 ebelp = ls_group-ebelp )
3719 ).
3720
3721 get_material_documents_04(
3722 EXPORTING
3723 it_ekpo_key = lt_ekpo_key
3724 irt_erdat = irt_erdat
3725 IMPORTING
3726 et_documents = mt_notif_04
3727 ).
3728
3729 ENDMETHOD.
3730
3731
3732* <SIGNATURE>---------------------------------------------------------------------------------------+
3733* | Instance Private Method ZCL_P2PE312_NOTIF_MODEL->FETCH_NOTIF_07
3734* +-------------------------------------------------------------------------------------------------+
3735* +--------------------------------------------------------------------------------------</SIGNATURE>
3736 METHOD fetch_notif_07.
3737*--------------------------------------------------------------------*
3738* Выбор данных уведомления 07
3739*--------------------------------------------------------------------*
3740
3741 DATA: l_rt_sobsl TYPE RANGE OF sobsl,
3742 l_rt_bwart TYPE RANGE OF bwart,
3743 l_rt_bsart TYPE RANGE OF bsart.
3744
3745 ycl_const_utils=>get_tvrange(
3746 EXPORTING
3747 iv_cons = zif_p2pe312_constants=>mc_tvarv_so_sobsl_07
3748 IMPORTING
3749 et_range = l_rt_sobsl
3750 ).
3751 ycl_const_utils=>get_tvrange(
3752 EXPORTING
3753 iv_cons = zif_p2pe312_constants=>mc_tvarv_so_bwart_07
3754 IMPORTING
3755 et_range = l_rt_bwart
3756 ).
3757 ycl_const_utils=>get_tvrange(
3758 EXPORTING
3759 iv_cons = zif_p2pe312_constants=>mc_tvarv_so_bsart_07
3760 IMPORTING
3761 et_range = l_rt_bsart
3762 ).
3763
3764 DATA(lt_matnr) =
3765 VALUE mty_t_matnr(
3766 FOR GROUPS ls_matnr OF <ls_matnr> IN mt_alv
3767 GROUP BY ( matnr = <ls_matnr>-matnr )
3768 WITHOUT MEMBERS
3769 ( matnr = ls_matnr-matnr )
3770 ).
3771
3772 IF lt_matnr IS INITIAL.
3773 RETURN.
3774 ENDIF.
3775
3776* Поиск центральных заводом для материалов
3777 get_central_plant(
3778 EXPORTING
3779 it_matnr = lt_matnr
3780 irt_sobsl = l_rt_sobsl
3781 IMPORTING
3782 et_central_plant = DATA(lt_central_plant_07)
3783 ).
3784
3785 fetch_receipt(
3786 EXPORTING
3787 it_central_plant = lt_central_plant_07
3788 irt_erdat = ms_sel-s_rnperd
3789 irt_bsart = l_rt_bsart
3790 irt_bwart = l_rt_bwart
3791 iv_nsort = zif_p2pe312_constants=>mcs_nsort-n07
3792 IMPORTING
3793 et_pegging_stock = mt_pegging_stock_07
3794 et_documents = mt_notif_07
3795 et_labst = mt_labst_07
3796 ).
3797
3798* Получаем дополнительную фильтрацию по записям в логе
3799 filter_pegging_stock_by_logdb(
3800 EXPORTING
3801 iv_nsort = zif_p2pe312_constants=>mcs_nsort-n07
3802 IMPORTING
3803 et_sndlog = mt_sndlog_07
3804 et_purch_ord = DATA(lt_purch_ord)
3805 CHANGING
3806 ct_pegging_stock = mt_pegging_stock_07
3807 ).
3808
3809 LOOP AT lt_purch_ord ASSIGNING FIELD-SYMBOL(<ls_purch>).
3810 INSERT <ls_purch> INTO TABLE mt_purch_ord.
3811 ENDLOOP.
3812
3813 ENDMETHOD.
3814
3815
3816* <SIGNATURE>---------------------------------------------------------------------------------------+
3817* | Instance Private Method ZCL_P2PE312_NOTIF_MODEL->FETCH_NOTIF_09
3818* +-------------------------------------------------------------------------------------------------+
3819* +--------------------------------------------------------------------------------------</SIGNATURE>
3820 METHOD fetch_notif_09.
3821*--------------------------------------------------------------------*
3822* Выбор данных уведомления 09 (Уведомление заказчика при поступлении
3823* ТМЦ на центральный завод )
3824*--------------------------------------------------------------------*
3825
3826 DATA: l_rt_sobsl TYPE RANGE OF sobsl,
3827 l_rt_bwart TYPE RANGE OF bwart,
3828 l_rt_bwart_nocontrol TYPE RANGE OF bwart,
3829 l_rt_bwart_unrest TYPE RANGE OF bwart,
3830 l_rt_bsart TYPE RANGE OF bsart.
3831
3832 ycl_const_utils=>get_tvrange(
3833 EXPORTING
3834 iv_cons = zif_p2pe312_constants=>mc_tvarv_so_sobsl_09
3835 IMPORTING
3836 et_range = l_rt_sobsl
3837 ).
3838 ycl_const_utils=>get_tvrange(
3839 EXPORTING
3840 iv_cons = zif_p2pe312_constants=>mc_tvarv_so_bwart_09
3841 IMPORTING
3842 et_range = l_rt_bwart
3843 ).
3844 ycl_const_utils=>get_tvrange(
3845 EXPORTING
3846 iv_cons = zif_p2pe312_constants=>mc_tvarv_so_bwart_unrest_09
3847 IMPORTING
3848 et_range = l_rt_bwart_unrest
3849 ).
3850 ycl_const_utils=>get_tvrange(
3851 EXPORTING
3852 iv_cons = zif_p2pe312_constants=>mc_tvarv_so_bwart_nocontrol_09
3853 IMPORTING
3854 et_range = l_rt_bwart_nocontrol
3855 ).
3856 ycl_const_utils=>get_tvrange(
3857 EXPORTING
3858 iv_cons = zif_p2pe312_constants=>mc_tvarv_so_bsart_09
3859 IMPORTING
3860 et_range = l_rt_bsart
3861 ).
3862 APPEND LINES OF l_rt_bwart_nocontrol TO l_rt_bwart.
3863 APPEND LINES OF l_rt_bwart_unrest TO l_rt_bwart.
3864 SORT l_rt_bwart BY low.
3865 DELETE ADJACENT DUPLICATES FROM l_rt_bwart COMPARING low.
3866
3867 DATA(lt_matnr) =
3868 VALUE mty_t_matnr(
3869 FOR GROUPS ls_matnr OF <ls_matnr> IN mt_alv
3870 GROUP BY ( matnr = <ls_matnr>-matnr )
3871 WITHOUT MEMBERS
3872 ( matnr = ls_matnr-matnr )
3873 ).
3874
3875 IF lt_matnr IS INITIAL.
3876 RETURN.
3877 ENDIF.
3878
3879* Поиск центральных заводом для материалов
3880 get_central_plant(
3881 EXPORTING
3882 it_matnr = lt_matnr
3883 irt_sobsl = l_rt_sobsl
3884 IMPORTING
3885 et_central_plant = DATA(lt_central_plant_09)
3886 ).
3887
3888 fetch_receipt(
3889 EXPORTING
3890 it_central_plant = lt_central_plant_09
3891 irt_erdat = ms_sel-s_rnperd
3892 irt_bsart = l_rt_bsart
3893 irt_bwart = l_rt_bwart
3894 iv_nsort = zif_p2pe312_constants=>mcs_nsort-n09
3895 IMPORTING
3896 et_pegging_stock = mt_pegging_stock_09
3897 et_documents = mt_notif_09
3898 et_labst = mt_labst_09
3899 ).
3900
3901* Получаем дополнительную фильтрацию по записям в логе
3902 filter_pegging_stock_by_logdb(
3903 EXPORTING
3904 iv_nsort = zif_p2pe312_constants=>mcs_nsort-n09
3905 IMPORTING
3906 et_sndlog = mt_sndlog_09
3907 et_purch_ord = DATA(lt_purch_ord)
3908 CHANGING
3909 ct_pegging_stock = mt_pegging_stock_09
3910 ).
3911
3912 LOOP AT lt_purch_ord ASSIGNING FIELD-SYMBOL(<ls_purch>).
3913 INSERT <ls_purch> INTO TABLE mt_purch_ord.
3914 ENDLOOP.
3915
3916 ENDMETHOD.
3917
3918
3919* <SIGNATURE>---------------------------------------------------------------------------------------+
3920* | Instance Private Method ZCL_P2PE312_NOTIF_MODEL->FETCH_NOTIF_10
3921* +-------------------------------------------------------------------------------------------------+
3922* | [--->] IRT_ERDAT TYPE FIP_T_VDATU_RANGE
3923* +--------------------------------------------------------------------------------------</SIGNATURE>
3924 METHOD fetch_notif_10.
3925*--------------------------------------------------------------------*
3926* Выбор данных уведомления 10 (Уведомление заказчика при увеличении
3927* даты поставки в заказе на поставку)
3928*--------------------------------------------------------------------*
3929
3930 CLEAR: mt_notif_10.
3931
3932 mt_notif_10 =
3933 VALUE mty_t_eket_key(
3934 FOR GROUPS ls_group OF <ls_eket_key> IN mt_alv
3935 WHERE ( ebeln IS NOT INITIAL AND
3936 ebelp IS NOT INITIAL AND
3937 etenr IS NOT INITIAL )
3938 GROUP BY ( ebeln = <ls_eket_key>-ebeln
3939 ebelp = <ls_eket_key>-ebelp
3940 etenr = <ls_eket_key>-etenr )
3941 WITHOUT MEMBERS
3942 ( ebeln = ls_group-ebeln
3943 ebelp = ls_group-ebelp
3944 etenr = ls_group-etenr
3945 objectid = ls_group-ebeln
3946 key = |{ sy-mandt }{ ls_group-ebeln }{ ls_group-ebelp }{ ls_group-etenr }| )
3947 ).
3948
3949 IF mt_notif_10 IS INITIAL.
3950 RETURN.
3951 ENDIF.
3952
3953 SELECT cdpos~tabkey, cdhdr~udate
3954 FROM cdhdr
3955 JOIN cdpos ON cdpos~objectclas = cdhdr~objectclas
3956 AND cdpos~objectid = cdhdr~objectid
3957 AND cdpos~changenr = cdhdr~changenr
3958 FOR ALL ENTRIES IN @mt_notif_10
3959 WHERE cdpos~objectclas = @zif_p2pe312_constants=>mc_objectclas_einkbeleg
3960 AND cdpos~objectid = @mt_notif_10-objectid
3961 AND cdpos~tabkey = @mt_notif_10-key
3962 AND cdpos~tabname = @zif_p2pe312_constants=>mc_tabname_eket
3963 AND cdpos~fname = @zif_p2pe312_constants=>mc_fname_eindt
3964 AND cdpos~value_new > cdpos~value_old
3965 AND cdhdr~udate IN @irt_erdat
3966 AND NOT EXISTS ( SELECT mandant
3967 FROM cdpos AS tab
3968 WHERE tab~objectclas = cdpos~objectclas
3969 AND tab~objectid = cdpos~objectid
3970 AND tab~tabname = cdpos~tabname
3971 AND tab~tabkey = cdpos~tabkey
3972 AND tab~fname = cdpos~fname
3973 AND tab~changenr > cdpos~changenr )
3974 INTO TABLE @DATA(lt_cdpos).
3975 SORT lt_cdpos BY tabkey.
3976
3977 LOOP AT mt_notif_10 ASSIGNING FIELD-SYMBOL(<ls_notif_10>).
3978 READ TABLE lt_cdpos ASSIGNING FIELD-SYMBOL(<ls_cdpos>) WITH KEY tabkey = <ls_notif_10>-key BINARY SEARCH.
3979 IF sy-subrc = 0.
3980 <ls_notif_10>-udate = <ls_cdpos>-udate.
3981 ELSE.
3982 DELETE mt_notif_10.
3983 ENDIF.
3984 ENDLOOP.
3985
3986 ENDMETHOD.
3987
3988
3989* <SIGNATURE>---------------------------------------------------------------------------------------+
3990* | Instance Private Method ZCL_P2PE312_NOTIF_MODEL->FETCH_NOTIF_11
3991* +-------------------------------------------------------------------------------------------------+
3992* +--------------------------------------------------------------------------------------</SIGNATURE>
3993 METHOD fetch_notif_11.
3994*--------------------------------------------------------------------*
3995* Выбор данных уведомления 11 (Уведомление обработчика о НРП в
3996* ожидании более уста-го срока)
3997*--------------------------------------------------------------------*
3998
3999 DATA: lt_unplan TYPE mty_t_notif_11,
4000 lt_respon_list TYPE yip2pe121_respon_list,
4001 lv_days TYPE int4,
4002 lv_date TYPE datum,
4003 lt_users TYPE zip2pe312_username.
4004
4005 CLEAR mt_notif_11.
4006
4007* DATA(lv_yday_avo) = CONV int4( ycl_const_utils=>get_tvvalue( 'ZP2PE312_YDAY_AVO' ) ).
4008* DATA(lv_yday_navo) = CONV int4( ycl_const_utils=>get_tvvalue( 'ZP2PE312_YDAY_NAVO' ) ).
4009
4010 IF ms_sel-cb_can = abap_true.
4011 fetch_unplan_req_can(
4012 IMPORTING
4013 et_unplan = DATA(lt_can)
4014 ).
4015 ENDIF.
4016
4017 IF ms_sel-cb_inq = abap_true.
4018 fetch_unplan_req_inq(
4019 IMPORTING
4020 et_unplan = DATA(lt_inq)
4021 ).
4022 ENDIF.
4023
4024 IF ms_sel-cb_res = abap_true.
4025 fetch_unplan_req_res(
4026 IMPORTING
4027 et_unplan = DATA(lt_res)
4028 ).
4029 ENDIF.
4030
4031 lt_unplan = lt_can.
4032 APPEND LINES OF lt_inq TO lt_unplan.
4033 APPEND LINES OF lt_res TO lt_unplan.
4034 DELETE lt_unplan WHERE doc_num IS INITIAL.
4035
4036* Формируем список обработчиков
4037 lt_respon_list = VALUE yip2pe121_respon_list(
4038 FOR GROUPS ls_group OF <ls_unplan_gr> IN lt_unplan
4039 GROUP BY ( yunpno = <ls_unplan_gr>-yunpno )
4040 WITHOUT MEMBERS
4041 ( yunpno = ls_group-yunpno )
4042 ).
4043
4044 IF lt_respon_list IS NOT INITIAL.
4045 CALL FUNCTION 'YP2PE121_GET_RESPON_LIST'
4046 CHANGING
4047 ct_respon_list = lt_respon_list.
4048 ENDIF.
4049
4050* Формируем окончательную таблицу
4051 LOOP AT lt_unplan ASSIGNING FIELD-SYMBOL(<ls_unplan>).
4052
4053 CLEAR lv_date.
4054
4055 IF <ls_unplan>-yemerg IS INITIAL.
4056* lv_days = lv_yday_navo.
4057 lv_days = <ls_unplan>-yday_navo.
4058 <ls_unplan>-yday_w = <ls_unplan>-yday_navo.
4059 ELSE.
4060* lv_days = lv_yday_avo.
4061 lv_days = <ls_unplan>-yday_avo.
4062 <ls_unplan>-yday_w = <ls_unplan>-yday_avo.
4063 ENDIF.
4064
4065* <ls_unplan>-yday_navo = lv_yday_navo.
4066* <ls_unplan>-yday_avo = lv_yday_avo.
4067
4068 CALL FUNCTION 'END_TIME_DETERMINE'
4069 EXPORTING
4070 duration = lv_days
4071 factory_calendar = <ls_unplan>-fabkl
4072 IMPORTING
4073 end_date = lv_date
4074 CHANGING
4075 start_date = <ls_unplan>-yerdat
4076 EXCEPTIONS
4077 factory_calendar_not_found = 1
4078 date_out_of_calendar_range = 2
4079 date_not_valid = 3
4080 unit_conversion_error = 4
4081 si_unit_missing = 5
4082 parameters_no_valid = 6
4083 OTHERS = 7.
4084 IF sy-subrc <> 0.
4085 CONTINUE.
4086 ENDIF.
4087
4088 IF lv_date >= sy-datum.
4089 CONTINUE.
4090 ENDIF.
4091
4092 <ls_unplan>-event_date = lv_date.
4093
4094 CLEAR lv_days.
4095 CALL FUNCTION 'DURATION_DETERMINE'
4096 EXPORTING
4097 factory_calendar = <ls_unplan>-fabkl
4098 IMPORTING
4099 duration = lv_days
4100 CHANGING
4101 start_date = <ls_unplan>-yerdat
4102 end_date = sy-datum
4103 EXCEPTIONS
4104 factory_calendar_not_found = 1
4105 date_out_of_calendar_range = 2
4106 date_not_valid = 3
4107 unit_conversion_error = 4
4108 si_unit_missing = 5
4109 parameters_not_valid = 6
4110 others = 7.
4111 IF sy-subrc <> 0.
4112 CONTINUE.
4113 ENDIF.
4114
4115 <ls_unplan>-yday_pr = lv_days.
4116
4117 READ TABLE lt_respon_list ASSIGNING FIELD-SYMBOL(<ls_respon>)
4118 WITH KEY yunpno = <ls_unplan>-yunpno.
4119 IF sy-subrc = 0.
4120 <ls_unplan>-unrreq_respon = <ls_respon>-yresp_user.
4121 ENDIF.
4122
4123 IF <ls_unplan>-unrreq_respon IS NOT INITIAL.
4124 IF <ls_unplan>-unrreq_respon = <ls_unplan>-zotfo.
4125 <ls_unplan>-unrreq_manager = <ls_unplan>-zmnfo.
4126 ELSE.
4127 <ls_unplan>-unrreq_manager = <ls_unplan>-zmnbo.
4128 ENDIF.
4129 ENDIF.
4130
4131 APPEND <ls_unplan> TO mt_notif_11.
4132 ENDLOOP.
4133
4134 DATA(lt_fields) = VALUE zip2pe312_username_fields(
4135 ( user_name = 'YERNAM' full_name = 'AUTHOR_NAME' )
4136 ( user_name = 'UNRREQ_MANAGER' full_name = 'UNRREQ_MANAGER_NAME' )
4137 ( user_name = 'UNRREQ_RESPON' full_name = 'UNRREQ_RESPON_NAME' )
4138 ( user_name = 'UNRREQ_ZSNRP' full_name = 'UNRREQ_ZSNRP_NAME' )
4139 ).
4140 zcl_p2pe312_utils=>get_username(
4141 EXPORTING
4142 it_fields = lt_fields
4143 CHANGING
4144 ct_table = mt_notif_11
4145 ).
4146
4147 ENDMETHOD.
4148
4149
4150* <SIGNATURE>---------------------------------------------------------------------------------------+
4151* | Instance Private Method ZCL_P2PE312_NOTIF_MODEL->FETCH_RECEIPT
4152* +-------------------------------------------------------------------------------------------------+
4153* | [--->] IT_CENTRAL_PLANT TYPE MTY_T_CENTRAL_PLANT
4154* | [--->] IRT_ERDAT TYPE FIP_T_ERDAT_RANGE(optional)
4155* | [--->] IRT_CPUDT TYPE FIP_T_ERDAT_RANGE(optional)
4156* | [--->] IRT_BSART TYPE RPO_T_BSART_RANGE
4157* | [--->] IRT_BWART TYPE BWART_T_RANGE
4158* | [--->] IV_NSORT TYPE ZP2PE312_NSORT
4159* | [<---] ET_PEGGING_STOCK TYPE MTY_T_PEGGING_STOCK
4160* | [<---] ET_DOCUMENTS TYPE MTY_T_NOTIF_09
4161* | [<---] ET_LABST TYPE MTY_T_LABST
4162* +--------------------------------------------------------------------------------------</SIGNATURE>
4163METHOD FETCH_RECEIPT.
4164
4165 DATA: lt_pegging_key TYPE mty_t_pegging_stock_key,
4166 ls_key TYPE mty_s_pegging_stock_key.
4167
4168 CLEAR: et_documents, et_pegging_stock, et_labst.
4169
4170* Выбор документов материала
4171 get_material_documents(
4172 EXPORTING
4173 irt_erdat = irt_erdat
4174 irt_cpudt = irt_cpudt
4175 irt_bwart = irt_bwart
4176 irt_bsart = irt_bsart
4177 it_central_plant = it_central_plant
4178 iv_nsort = iv_nsort
4179 IMPORTING
4180 et_documents = et_documents
4181 ).
4182
4183* Заполняем ключи для пеггинга
4184 LOOP AT et_documents ASSIGNING FIELD-SYMBOL(<ls_notif>).
4185 LOOP AT it_central_plant ASSIGNING FIELD-SYMBOL(<ls_central_plant>)
4186 WHERE matnr = <ls_notif>-matnr
4187 AND werks = <ls_notif>-werks
4188 AND lgort = <ls_notif>-lgort.
4189 CLEAR ls_key.
4190 ls_key-matnr = <ls_notif>-matnr.
4191 ls_key-werks = <ls_notif>-werks.
4192 ls_key-berid = <ls_central_plant>-berid.
4193 INSERT ls_key INTO TABLE lt_pegging_key.
4194 ENDLOOP.
4195 LOOP AT it_central_plant ASSIGNING <ls_central_plant>
4196 WHERE matnr = <ls_notif>-matnr
4197 AND werks = <ls_notif>-werks.
4198 CLEAR ls_key.
4199 ls_key-matnr = <ls_notif>-matnr.
4200 ls_key-werks = <ls_notif>-werks.
4201 ls_key-berid = <ls_central_plant>-berid.
4202 INSERT ls_key INTO TABLE lt_pegging_key.
4203 ENDLOOP.
4204 ENDLOOP.
4205
4206 DATA(lt_matnr_werks_labst) =
4207 VALUE mty_t_matnr_werks(
4208 FOR GROUPS ls_group OF <ls_peg> IN lt_pegging_key
4209 GROUP BY ( matnr = <ls_peg>-matnr
4210 werks = <ls_peg>-werks )
4211 WITHOUT MEMBERS
4212 ( matnr = ls_group-matnr
4213 werks = ls_group-werks )
4214 ).
4215
4216 get_labst(
4217 EXPORTING
4218 it_matnr_werks = lt_matnr_werks_labst
4219 IMPORTING
4220 et_labst = et_labst
4221 ).
4222
4223 get_pegging_stock(
4224 EXPORTING
4225 it_pegging_key = lt_pegging_key
4226 IMPORTING
4227 et_pegging_stock = et_pegging_stock
4228 ).
4229
4230 ENDMETHOD.
4231
4232
4233* <SIGNATURE>---------------------------------------------------------------------------------------+
4234* | Instance Private Method ZCL_P2PE312_NOTIF_MODEL->FETCH_REQUIREMENT_DOCUMENTS
4235* +-------------------------------------------------------------------------------------------------+
4236* | [--->] IT_INQ_KEYS TYPE MTY_T_DOC_KEY
4237* | [--->] IT_RES_KEYS TYPE MTY_T_DOC_KEY
4238* | [--->] IT_CAN_KEYS TYPE MTY_T_DOC_KEY
4239* | [<---] ET_INQUIRY TYPE MTY_T_INQUIRY
4240* | [<---] ET_RESERVATION TYPE MTY_T_RESERVATION
4241* | [<---] ET_CANCELATION TYPE MTY_T_REQUISITION
4242* +--------------------------------------------------------------------------------------</SIGNATURE>
4243 METHOD fetch_requirement_documents.
4244
4245 CLEAR: et_inquiry,
4246 et_reservation,
4247 et_cancelation.
4248
4249* Выборка данных документов потребности
4250 fetch_inq_by_keys(
4251 EXPORTING
4252 it_doc_keys = it_inq_keys
4253 IMPORTING
4254 et_inquiry = et_inquiry
4255 ).
4256 fetch_res_by_keys(
4257 EXPORTING
4258 it_doc_keys = it_res_keys
4259 IMPORTING
4260 et_reservation = et_reservation
4261 ).
4262 fetch_can_by_keys(
4263 EXPORTING
4264 it_doc_keys = it_can_keys
4265 IMPORTING
4266 et_cancelation = et_cancelation
4267 ).
4268
4269 ENDMETHOD.
4270
4271
4272* <SIGNATURE>---------------------------------------------------------------------------------------+
4273* | Instance Private Method ZCL_P2PE312_NOTIF_MODEL->FETCH_REQ_BY_KEYS
4274* +-------------------------------------------------------------------------------------------------+
4275* | [--->] IT_MATNR_WERKS TYPE MTY_T_MATNR_WERKS(optional)
4276* | [--->] IT_DOC_KEYS TYPE MTY_T_DOC_KEY(optional)
4277* | [<---] ET_REQUISITION TYPE MTY_T_REQUISITION
4278* +--------------------------------------------------------------------------------------</SIGNATURE>
4279 METHOD fetch_req_by_keys.
4280*--------------------------------------------------------------------*
4281* Выбор данных заявок на закупку по ключевым полям
4282*--------------------------------------------------------------------*
4283 TYPES: BEGIN OF lty_s_doc_keys,
4284 banfn TYPE banfn,
4285 bnfpo TYPE bnfpo,
4286 END OF lty_s_doc_keys,
4287 lty_t_doc_keys TYPE SORTED TABLE OF lty_s_doc_keys WITH UNIQUE KEY banfn bnfpo.
4288
4289 DATA: l_rt_purbsart TYPE RANGE OF bsart,
4290 l_rt_pstyp TYPE RANGE OF pstyp,
4291 l_rt_bsart TYPE RANGE OF bsart,
4292 lt_where TYPE TABLE OF string,
4293 wa_req LIKE LINE OF et_requisition.
4294
4295 FIELD-SYMBOLS: <lt_itab> TYPE SORTED TABLE.
4296
4297 CLEAR et_requisition.
4298
4299 DATA(lt_req_keys) =
4300 VALUE lty_t_doc_keys(
4301 FOR GROUPS ls_group OF <ls_req> IN it_doc_keys
4302 GROUP BY ( banfn = <ls_req>-doc_num
4303 bnfpo = <ls_req>-doc_pos )
4304 WITHOUT MEMBERS ( banfn = ls_group-banfn
4305 bnfpo = ls_group-bnfpo )
4306 ).
4307
4308* Формируем условие для запроса
4309 IF it_matnr_werks IS NOT INITIAL.
4310 ASSIGN it_matnr_werks TO <lt_itab>.
4311 APPEND ' eban~matnr = @<lt_itab>-matnr ' TO lt_where.
4312 APPEND ' AND eban~werks = @<lt_itab>-werks ' TO lt_where.
4313 ELSEIF it_doc_keys IS NOT INITIAL.
4314 ASSIGN lt_req_keys TO <lt_itab>.
4315 APPEND ' eban~banfn = @<lt_itab>-banfn ' TO lt_where.
4316 APPEND ' AND eban~bnfpo = @<lt_itab>-bnfpo ' TO lt_where.
4317 ELSE.
4318 RETURN.
4319 ENDIF.
4320
4321 ycl_const_utils=>get_tvrange(
4322 EXPORTING
4323 iv_cons = zif_p2pe312_constants=>mc_tvarv_so_bsart
4324 IMPORTING
4325 et_range = l_rt_bsart
4326 ).
4327
4328 ycl_const_utils=>get_tvrange(
4329 EXPORTING
4330 iv_cons = zif_p2pe312_constants=>mc_tvarv_so_purbsart
4331 IMPORTING
4332 et_range = l_rt_purbsart
4333 ).
4334
4335 ycl_const_utils=>get_tvrange(
4336 EXPORTING
4337 iv_cons = zif_p2pe312_constants=>mc_tvarv_so_purpstyp
4338 IMPORTING
4339 et_range = l_rt_pstyp
4340 ).
4341
4342 SELECT eban~banfn, eban~bnfpo,
4343 eban~bsart, eban~bstyp,
4344 eban~werks AS p_werks, eban~lgort, eban~blckt, eban~bwtar,
4345 eban~matnr, eban~menge, eban~meins, eban~ekorg,
4346 eban~ernam, eban~erdat, eban~lfdat, eban~ekgrp AS p_ekgrp,
4347 eket~ebeln, eket~ebelp, eket~etenr,
4348 ekko~procstat, ekko~bedat, ekko~ernam AS poernam,
4349 eket~eindt, ekko~bsart AS pobsart,
4350 marc~sobsl AS p_sobsl,
4351 mdma~dismm AS p_dismm,
4352 marc~dismm AS r_dismm,
4353 mdlg~berid AS p_berid,
4354 mdlw~berid AS r_berid,
4355 mdma~berid AS mdma_berid,
4356 mdma~matnr AS mdma_matnr,
4357 ekpo~elikz,
4358 ekpo~loekz,
4359 ztp2pe188_t024~zotfo, ztp2pe188_t024~zspkt,
4360 ztp2pe188_t024~zotbo, ztp2pe188_t024~zmnbo,
4361 ztp2pe188_t024~zmnfo,
4362 ztp2pe188_t024~zlist,
4363 adrp_zotfo~name_first AS zotfo_name_first, adrp_zotfo~name_last AS zotfo_name_last,
4364 adrp_zspkt~name_first AS zspkt_name_first, adrp_zspkt~name_last AS zspkt_name_last,
4365 adrp_zotbo~name_first AS zotbo_name_first, adrp_zotbo~name_last AS zotbo_name_last,
4366 adrp_zmnbo~name_first AS zmnbo_name_first, adrp_zmnbo~name_last AS zmnbo_name_last,
4367 adrp_zmnfo~name_first AS zmnfo_name_first, adrp_zmnfo~name_last AS zmnfo_name_last,
4368 adrp_ekko~name_first AS poernam_name_first, adrp_ekko~name_last AS poernam_name_last,
4369 ekpo~meins AS pmeins, eket~menge AS pmenge,
4370 eban~frgdt,
4371 eban~infnr, eban~konnr,
4372 t001k~bukrs,
4373 ekko~bstyp AS pobstyp
4374 FROM eban
4375 LEFT JOIN eket ON eket~banfn = eban~banfn
4376 AND eket~bnfpo = eban~bnfpo
4377 LEFT JOIN ekpo ON ekpo~ebeln = eket~ebeln
4378 AND ekpo~ebelp = eket~ebelp
4379 LEFT JOIN ekko ON ekko~ebeln = ekpo~ebeln
4380 LEFT JOIN marc ON marc~matnr = eban~matnr
4381 AND marc~werks = eban~werks
4382 LEFT JOIN mdlg ON mdlg~werks = eban~werks
4383 AND mdlg~lgort = eban~lgort
4384 LEFT JOIN mdma ON mdma~matnr = eban~matnr
4385 AND mdma~berid = mdlg~berid
4386* AND mdma~loekz = @abap_false
4387 LEFT JOIN mdlw ON mdlw~werks = eban~werks
4388 LEFT JOIN t001w ON t001w~werks = eban~werks
4389 LEFT JOIN t001k ON t001k~bwkey = t001w~bwkey
4390 LEFT JOIN ztp2pe188_bukrs ON ztp2pe188_bukrs~bukrs = t001k~bukrs
4391 AND ztp2pe188_bukrs~ekorg = eban~ekorg
4392 AND ztp2pe188_bukrs~ekgrp = eban~ekgrp
4393 LEFT JOIN ztp2pe188_t024 ON ztp2pe188_t024~ekorg = ztp2pe188_bukrs~ekorg
4394 AND ztp2pe188_t024~ekgrp = ztp2pe188_bukrs~ekgrp
4395 AND ztp2pe188_t024~zact = @abap_false
4396 LEFT JOIN usr21 AS usr21_zotfo ON usr21_zotfo~bname = ztp2pe188_t024~zotfo
4397 LEFT JOIN adrp AS adrp_zotfo ON adrp_zotfo~persnumber = usr21_zotfo~persnumber
4398 AND adrp_zotfo~date_from = @zif_p2pe312_constants=>mc_adrc_date_from
4399 AND adrp_zotfo~nation = @zif_p2pe312_constants=>mc_nation_default
4400 LEFT JOIN usr21 AS usr21_zspkt ON usr21_zspkt~bname = ztp2pe188_t024~zspkt
4401 LEFT JOIN adrp AS adrp_zspkt ON adrp_zspkt~persnumber = usr21_zspkt~persnumber
4402 AND adrp_zspkt~date_from = @zif_p2pe312_constants=>mc_adrc_date_from
4403 AND adrp_zspkt~nation = @zif_p2pe312_constants=>mc_nation_default
4404 LEFT JOIN usr21 AS usr21_zotbo ON usr21_zotbo~bname = ztp2pe188_t024~zotbo
4405 LEFT JOIN adrp AS adrp_zotbo ON adrp_zotbo~persnumber = usr21_zotbo~persnumber
4406 AND adrp_zotbo~date_from = @zif_p2pe312_constants=>mc_adrc_date_from
4407 AND adrp_zotbo~nation = @zif_p2pe312_constants=>mc_nation_default
4408 LEFT JOIN usr21 AS usr21_zmnbo ON usr21_zmnbo~bname = ztp2pe188_t024~zmnbo
4409 LEFT JOIN adrp AS adrp_zmnbo ON adrp_zmnbo~persnumber = usr21_zmnbo~persnumber
4410 AND adrp_zmnbo~date_from = @zif_p2pe312_constants=>mc_adrc_date_from
4411 AND adrp_zmnbo~nation = @zif_p2pe312_constants=>mc_nation_default
4412 LEFT JOIN usr21 AS usr21_zmnfo ON usr21_zmnfo~bname = ztp2pe188_t024~zmnfo
4413 LEFT JOIN adrp AS adrp_zmnfo ON adrp_zmnfo~persnumber = usr21_zmnfo~persnumber
4414 AND adrp_zmnfo~date_from = @zif_p2pe312_constants=>mc_adrc_date_from
4415 AND adrp_zmnfo~nation = @zif_p2pe312_constants=>mc_nation_default
4416 LEFT JOIN usr21 AS usr21_ekko ON usr21_ekko~bname = ekko~ernam
4417 LEFT JOIN adrp AS adrp_ekko ON adrp_ekko~persnumber = usr21_ekko~persnumber
4418 AND adrp_ekko~date_from = @zif_p2pe312_constants=>mc_adrc_date_from
4419 AND adrp_ekko~nation = @zif_p2pe312_constants=>mc_nation_default
4420 FOR ALL ENTRIES IN @<lt_itab>
4421 WHERE t001k~bukrs IN @ms_sel-s_abukrs
4422 AND eban~loekz = @abap_false
4423 AND eban~bsart IN @l_rt_purbsart
4424 AND eban~pstyp IN @l_rt_pstyp
4425 AND eban~ebakz = @abap_false
4426 AND (lt_where)
4427 INTO TABLE @DATA(lt_req_tmp).
4428
4429* { eiu.mezentceva 3100011230 21.03.2019
4430 LOOP AT lt_req_tmp ASSIGNING FIELD-SYMBOL(<ls_req_tmp>).
4431 IF <ls_req_tmp>-p_berid IS NOT INITIAL
4432 AND <ls_req_tmp>-mdma_berid = <ls_req_tmp>-p_berid
4433 AND <ls_req_tmp>-mdma_matnr = <ls_req_tmp>-matnr.
4434 <ls_req_tmp>-r_berid = <ls_req_tmp>-p_berid.
4435 <ls_req_tmp>-r_dismm = <ls_req_tmp>-p_dismm.
4436 ENDIF.
4437 MOVE-CORRESPONDING <ls_req_tmp> TO wa_req.
4438 wa_req-zotfo_name = wa_req-zotfo_name_first && ` ` && wa_req-zotfo_name_last.
4439 wa_req-zspkt_name = wa_req-zspkt_name_first && ` ` && wa_req-zspkt_name_last.
4440 wa_req-zotbo_name = wa_req-zotbo_name_first && ` ` && wa_req-zotbo_name_last.
4441 wa_req-zmnbo_name = wa_req-zmnbo_name_first && ` ` && wa_req-zmnbo_name_last.
4442 wa_req-zmnfo_name = wa_req-zmnfo_name_first && ` ` && wa_req-zmnfo_name_last.
4443 wa_req-poernam_txt = wa_req-poernam_name_first && ` ` && wa_req-poernam_name_last.
4444* Очищаем поля с заказом на поставку с некорректным видом
4445 IF ( l_rt_bsart IS NOT INITIAL AND wa_req-pobsart NOT IN l_rt_bsart ) OR
4446 ( wa_req-loekz IS NOT INITIAL OR wa_req-elikz IS NOT INITIAL ).
4447 CLEAR: wa_req-ebeln, wa_req-ebelp, wa_req-etenr,
4448 wa_req-procstat, wa_req-bedat, wa_req-poernam,
4449 wa_req-eindt, wa_req-pobsart, wa_req-elikz, wa_req-loekz,
4450 wa_req-pmeins, wa_req-pmenge,
4451 wa_req-poernam_name_first, wa_req-poernam_name_last, wa_req-poernam_txt,
4452 wa_req-pobstyp.
4453 ENDIF.
4454 INSERT wa_req INTO TABLE et_requisition.
4455 ENDLOOP.
4456* } eiu.mezentceva
4457
4458 DELETE ADJACENT DUPLICATES FROM et_requisition COMPARING ALL FIELDS.
4459
4460 ENDMETHOD.
4461
4462
4463* <SIGNATURE>---------------------------------------------------------------------------------------+
4464* | Instance Private Method ZCL_P2PE312_NOTIF_MODEL->FETCH_REQ_BY_MSEG
4465* +-------------------------------------------------------------------------------------------------+
4466* | [--->] IT_MSEG_KEYS TYPE MTY_T_MSEG
4467* | [--->] IRT_ERDAT TYPE FIP_T_ERDAT_RANGE
4468* | [<---] ET_INQUIRY_KEY TYPE MTY_T_DOC_KEY
4469* | [<---] ET_RESERVATION_KEY TYPE MTY_T_DOC_KEY
4470* | [<---] ET_CANCELATION_KEY TYPE MTY_T_DOC_KEY
4471* | [<---] ET_REQUISITION_KEY TYPE MTY_T_DOC_KEY
4472* +--------------------------------------------------------------------------------------</SIGNATURE>
4473 METHOD fetch_req_by_mseg.
4474
4475 DATA: l_rt_sobsl TYPE RANGE OF sobsl,
4476 l_rt_bwart TYPE RANGE OF bwart,
4477 l_rt_bsart TYPE RANGE OF bsart,
4478 l_rt_bwart_nocontrol TYPE RANGE OF bwart,
4479 l_rt_bwart_unrest TYPE RANGE OF bwart,
4480 lt_mseg_09 TYPE mty_t_mseg,
4481 lt_mseg_07 TYPE mty_t_mseg.
4482
4483 LOOP AT it_mseg_keys ASSIGNING FIELD-SYMBOL(<ls_mseg>).
4484 CASE <ls_mseg>-nsort.
4485 WHEN zif_p2pe312_constants=>mcs_nsort-n07.
4486 INSERT <ls_mseg> INTO TABLE lt_mseg_07.
4487 WHEN zif_p2pe312_constants=>mcs_nsort-n09.
4488 INSERT <ls_mseg> INTO TABLE lt_mseg_09.
4489 ENDCASE.
4490 ENDLOOP.
4491
4492 CLEAR: et_cancelation_key, et_inquiry_key, et_reservation_key, et_requisition_key.
4493
4494 ycl_const_utils=>get_tvrange(
4495 EXPORTING
4496 iv_cons = zif_p2pe312_constants=>mc_tvarv_so_sobsl_09
4497 IMPORTING
4498 et_range = l_rt_sobsl
4499 ).
4500 ycl_const_utils=>get_tvrange(
4501 EXPORTING
4502 iv_cons = zif_p2pe312_constants=>mc_tvarv_so_bwart_09
4503 IMPORTING
4504 et_range = l_rt_bwart
4505 ).
4506 ycl_const_utils=>get_tvrange(
4507 EXPORTING
4508 iv_cons = zif_p2pe312_constants=>mc_tvarv_so_bsart_09
4509 IMPORTING
4510 et_range = l_rt_bsart
4511 ).
4512 ycl_const_utils=>get_tvrange(
4513 EXPORTING
4514 iv_cons = zif_p2pe312_constants=>mc_tvarv_so_bwart_unrest_09
4515 IMPORTING
4516 et_range = l_rt_bwart_unrest
4517 ).
4518 ycl_const_utils=>get_tvrange(
4519 EXPORTING
4520 iv_cons = zif_p2pe312_constants=>mc_tvarv_so_bwart_nocontrol_09
4521 IMPORTING
4522 et_range = l_rt_bwart_nocontrol
4523 ).
4524 APPEND LINES OF l_rt_bwart_nocontrol TO l_rt_bwart.
4525 APPEND LINES OF l_rt_bwart_unrest TO l_rt_bwart.
4526 SORT l_rt_bwart BY low.
4527 DELETE ADJACENT DUPLICATES FROM l_rt_bwart COMPARING low.
4528
4529
4530 fetch_req_by_mseg_notif(
4531 EXPORTING
4532 iv_nsort = zif_p2pe312_constants=>mcs_nsort-n09
4533 it_mseg_keys = lt_mseg_09
4534 irt_erdat = irt_erdat
4535 irt_bsart = l_rt_bsart
4536 irt_bwart = l_rt_bwart
4537 irt_sobsl = l_rt_sobsl
4538 IMPORTING
4539 et_inquiry_key = et_inquiry_key
4540 et_reservation_key = et_reservation_key
4541 et_cancelation_key = et_cancelation_key
4542 et_requisition_key = et_requisition_key
4543 et_documents = mt_notif_09
4544 et_labst = mt_labst_09
4545 et_pegging_stock = mt_pegging_stock_09
4546 et_sndlog = mt_sndlog_09
4547 et_purch_ord = mt_purch_ord
4548 ).
4549
4550 CLEAR: l_rt_bsart, l_rt_bwart, l_rt_sobsl.
4551 ycl_const_utils=>get_tvrange(
4552 EXPORTING
4553 iv_cons = zif_p2pe312_constants=>mc_tvarv_so_sobsl_07
4554 IMPORTING
4555 et_range = l_rt_sobsl
4556 ).
4557 ycl_const_utils=>get_tvrange(
4558 EXPORTING
4559 iv_cons = zif_p2pe312_constants=>mc_tvarv_so_bwart_07
4560 IMPORTING
4561 et_range = l_rt_bwart
4562 ).
4563 ycl_const_utils=>get_tvrange(
4564 EXPORTING
4565 iv_cons = zif_p2pe312_constants=>mc_tvarv_so_bsart_07
4566 IMPORTING
4567 et_range = l_rt_bsart
4568 ).
4569
4570 fetch_req_by_mseg_notif(
4571 EXPORTING
4572 iv_nsort = zif_p2pe312_constants=>mcs_nsort-n07
4573 it_mseg_keys = lt_mseg_07
4574 irt_erdat = irt_erdat
4575 irt_bsart = l_rt_bsart
4576 irt_bwart = l_rt_bwart
4577 irt_sobsl = l_rt_sobsl
4578 IMPORTING
4579 et_inquiry_key = DATA(lt_inq_07)
4580 et_reservation_key = DATA(lt_res_07)
4581 et_cancelation_key = DATA(lt_can_07)
4582 et_requisition_key = DATA(lt_req_07)
4583 et_documents = mt_notif_07
4584 et_labst = mt_labst_07
4585 et_pegging_stock = mt_pegging_stock_07
4586 ).
4587
4588 add_doc_key_table(
4589 EXPORTING
4590 it_doc_key = lt_inq_07
4591 CHANGING
4592 ct_doc_key = et_inquiry_key
4593 ).
4594 add_doc_key_table(
4595 EXPORTING
4596 it_doc_key = lt_res_07
4597 CHANGING
4598 ct_doc_key = et_reservation_key
4599 ).
4600 add_doc_key_table(
4601 EXPORTING
4602 it_doc_key = lt_can_07
4603 CHANGING
4604 ct_doc_key = et_cancelation_key
4605 ).
4606 add_doc_key_table(
4607 EXPORTING
4608 it_doc_key = lt_req_07
4609 CHANGING
4610 ct_doc_key = et_requisition_key
4611 ).
4612
4613 ENDMETHOD.
4614
4615
4616* <SIGNATURE>---------------------------------------------------------------------------------------+
4617* | Instance Private Method ZCL_P2PE312_NOTIF_MODEL->FETCH_REQ_BY_MSEG_NOTIF
4618* +-------------------------------------------------------------------------------------------------+
4619* | [--->] IT_MSEG_KEYS TYPE MTY_T_MSEG
4620* | [--->] IRT_ERDAT TYPE FIP_T_ERDAT_RANGE
4621* | [--->] IRT_BSART TYPE FIP_T_BSART_RANGE
4622* | [--->] IRT_BWART TYPE BWART_T_RANGE
4623* | [--->] IRT_SOBSL TYPE CURTO_SOBSL_RANGE_T
4624* | [--->] IV_NSORT TYPE ZP2PE312_NSORT
4625* | [<---] ET_SNDLOG TYPE ZIP2PE312_SNDLOG
4626* | [<---] ET_INQUIRY_KEY TYPE MTY_T_DOC_KEY
4627* | [<---] ET_RESERVATION_KEY TYPE MTY_T_DOC_KEY
4628* | [<---] ET_CANCELATION_KEY TYPE MTY_T_DOC_KEY
4629* | [<---] ET_REQUISITION_KEY TYPE MTY_T_DOC_KEY
4630* | [<---] ET_PEGGING_STOCK TYPE MTY_T_PEGGING_STOCK
4631* | [<---] ET_LABST TYPE MTY_T_LABST
4632* | [<---] ET_DOCUMENTS TYPE MTY_T_NOTIF_09
4633* | [<---] ET_PURCH_ORD TYPE MTY_T_PURCH_ORD
4634* +--------------------------------------------------------------------------------------</SIGNATURE>
4635 METHOD fetch_req_by_mseg_notif.
4636
4637 DATA: ls_doc_key TYPE mty_s_doc_key.
4638
4639 CLEAR: et_inquiry_key, et_cancelation_key, et_requisition_key, et_reservation_key,
4640 et_pegging_stock, et_labst, et_documents.
4641
4642 check_central_plant(
4643 EXPORTING
4644 it_mseg_key = it_mseg_keys
4645 irt_sobsl = irt_sobsl
4646 IMPORTING
4647 et_central_plant = DATA(lt_central_plant)
4648 ).
4649
4650 fetch_receipt(
4651 EXPORTING
4652 irt_cpudt = irt_erdat
4653 irt_bsart = irt_bsart
4654 irt_bwart = irt_bwart
4655 it_central_plant = lt_central_plant
4656 iv_nsort = iv_nsort
4657 IMPORTING
4658 et_pegging_stock = et_pegging_stock
4659 et_labst = et_labst
4660 et_documents = et_documents
4661 ).
4662
4663 filter_pegging_stock_by_logdb(
4664 EXPORTING
4665 iv_nsort = iv_nsort
4666 IMPORTING
4667 et_sndlog = et_sndlog
4668 et_purch_ord = et_purch_ord
4669 CHANGING
4670 ct_pegging_stock = et_pegging_stock
4671 ).
4672
4673 LOOP AT et_pegging_stock ASSIGNING FIELD-SYMBOL(<ls_doc>).
4674 CLEAR ls_doc_key.
4675 ls_doc_key-doc_num = <ls_doc>-doc_num.
4676 ls_doc_key-doc_pos = <ls_doc>-doc_pos.
4677 ls_doc_key-doc_sch = <ls_doc>-doc_sch.
4678 CASE <ls_doc>-doc_type.
4679 WHEN zif_p2pe312_constants=>mcs_doc_type-mm.
4680 INSERT ls_doc_key INTO TABLE et_cancelation_key.
4681 WHEN zif_p2pe312_constants=>mcs_doc_type-sd.
4682 INSERT ls_doc_key INTO TABLE et_inquiry_key.
4683 WHEN zif_p2pe312_constants=>mcs_doc_type-ps.
4684 INSERT ls_doc_key INTO TABLE et_reservation_key.
4685 WHEN zif_p2pe312_constants=>mcs_doc_type-pr.
4686 INSERT ls_doc_key INTO TABLE et_requisition_key.
4687 ENDCASE.
4688 ENDLOOP.
4689
4690 ENDMETHOD.
4691
4692
4693* <SIGNATURE>---------------------------------------------------------------------------------------+
4694* | Instance Private Method ZCL_P2PE312_NOTIF_MODEL->FETCH_REQ_BY_SELOPTS
4695* +-------------------------------------------------------------------------------------------------+
4696* +--------------------------------------------------------------------------------------</SIGNATURE>
4697 METHOD fetch_req_by_selopts.
4698*--------------------------------------------------------------------*
4699* Выбор данных заявок на закупку по ограничениям СЭ
4700*--------------------------------------------------------------------*
4701
4702 DATA: l_rt_bsart TYPE RANGE OF bsart,
4703 l_rt_purbsart TYPE RANGE OF bsart,
4704 l_rt_pstyp TYPE RANGE OF pstyp.
4705
4706 CLEAR mt_requisition.
4707
4708
4709 ycl_const_utils=>get_tvrange(
4710 EXPORTING
4711 iv_cons = zif_p2pe312_constants=>mc_tvarv_so_bsart
4712 IMPORTING
4713 et_range = l_rt_bsart
4714 ).
4715
4716 ycl_const_utils=>get_tvrange(
4717 EXPORTING
4718 iv_cons = zif_p2pe312_constants=>mc_tvarv_so_purbsart
4719 IMPORTING
4720 et_range = l_rt_purbsart
4721 ).
4722
4723 ycl_const_utils=>get_tvrange(
4724 EXPORTING
4725 iv_cons = zif_p2pe312_constants=>mc_tvarv_so_purpstyp
4726 IMPORTING
4727 et_range = l_rt_pstyp
4728 ).
4729
4730
4731 SELECT eban~banfn, eban~bnfpo,
4732 eban~bsart, eban~bstyp,
4733 eban~werks AS p_werks, eban~lgort, eban~blckt, eban~bwtar,
4734 eban~matnr, eban~menge, eban~meins, eban~ekorg,
4735 eban~ernam, eban~erdat, eban~lfdat, eban~ekgrp AS p_ekgrp,
4736 ekko~ebeln, ekpo~ebelp, eket~etenr,
4737 ekko~procstat, ekko~bedat, ekko~ernam AS poernam,
4738 eket~eindt, ekko~bsart AS pobsart,
4739 ekpo~elikz, ekpo~loekz,
4740 marc~sobsl AS p_sobsl,
4741 CASE
4742 WHEN mdlg~berid <> @abap_false THEN mdlg~berid
4743 ELSE mdlw~berid
4744 END AS p_berid,
4745 CASE
4746 WHEN mdlg~berid <> @abap_false THEN mdma~dismm
4747 ELSE marc~dismm
4748 END AS p_dismm,
4749 ztp2pe188_t024~zotfo, ztp2pe188_t024~zspkt,
4750 ztp2pe188_t024~zotbo, ztp2pe188_t024~zmnbo,
4751 ztp2pe188_t024~zmnfo,
4752 ztp2pe188_t024~zlist,
4753 adrp_zotfo~name_first && ' ' && adrp_zotfo~name_last AS zotfo_name,
4754 adrp_zspkt~name_first && ' ' && adrp_zspkt~name_last AS zspkt_name,
4755 adrp_zotbo~name_first && ' ' && adrp_zotbo~name_last AS zotbo_name,
4756 adrp_zmnbo~name_first && ' ' && adrp_zmnbo~name_last AS zmnbo_name,
4757 adrp_zmnfo~name_first && ' ' && adrp_zmnfo~name_last AS zmnfo_name,
4758 adrp_ekko~name_first && ' ' && adrp_ekko~name_last AS poernam_txt,
4759 ekpo~meins AS pmeins, eket~menge AS pmenge,
4760 eban~frgdt,
4761 eban~infnr, eban~konnr,
4762 t001k~bukrs,
4763 ekko~bstyp AS pobstyp
4764 FROM eban
4765 LEFT JOIN eket ON eket~banfn = eban~banfn
4766 AND eket~bnfpo = eban~bnfpo
4767 LEFT JOIN ekpo ON ekpo~ebeln = eket~ebeln
4768 AND ekpo~ebelp = eket~ebelp
4769 LEFT JOIN ekko ON ekko~ebeln = ekpo~ebeln
4770 LEFT JOIN t001w ON t001w~werks = eban~werks
4771 LEFT JOIN t001k ON t001k~bwkey = t001w~bwkey
4772 LEFT JOIN marc ON marc~matnr = eban~matnr
4773 AND marc~werks = eban~werks
4774 LEFT JOIN mdlg ON mdlg~werks = eban~werks
4775 AND mdlg~lgort = eban~lgort
4776 LEFT JOIN mdma ON mdma~matnr = eban~matnr
4777 AND mdma~berid = mdlg~berid
4778* AND mdma~loekz = @abap_false
4779 LEFT JOIN mdlw ON mdlw~werks = eban~werks
4780 LEFT JOIN ztp2pe188_bukrs ON ztp2pe188_bukrs~bukrs = t001k~bukrs
4781 AND ztp2pe188_bukrs~ekorg = eban~ekorg
4782 AND ztp2pe188_bukrs~ekgrp = eban~ekgrp
4783 LEFT JOIN ztp2pe188_t024 ON ztp2pe188_t024~ekorg = ztp2pe188_bukrs~ekorg
4784 AND ztp2pe188_t024~ekgrp = ztp2pe188_bukrs~ekgrp
4785 AND ztp2pe188_t024~zact = @abap_false
4786 LEFT JOIN usr21 AS usr21_zotfo ON usr21_zotfo~bname = ztp2pe188_t024~zotfo
4787 LEFT JOIN adrp AS adrp_zotfo ON adrp_zotfo~persnumber = usr21_zotfo~persnumber
4788 AND adrp_zotfo~date_from = @zif_p2pe312_constants=>mc_adrc_date_from
4789 AND adrp_zotfo~nation = @zif_p2pe312_constants=>mc_nation_default
4790 LEFT JOIN usr21 AS usr21_zspkt ON usr21_zspkt~bname = ztp2pe188_t024~zspkt
4791 LEFT JOIN adrp AS adrp_zspkt ON adrp_zspkt~persnumber = usr21_zspkt~persnumber
4792 AND adrp_zspkt~date_from = @zif_p2pe312_constants=>mc_adrc_date_from
4793 AND adrp_zspkt~nation = @zif_p2pe312_constants=>mc_nation_default
4794 LEFT JOIN usr21 AS usr21_ekko ON usr21_ekko~bname = ekko~ernam
4795 LEFT JOIN adrp AS adrp_ekko ON adrp_ekko~persnumber = usr21_ekko~persnumber
4796 AND adrp_ekko~date_from = @zif_p2pe312_constants=>mc_adrc_date_from
4797 AND adrp_ekko~nation = @zif_p2pe312_constants=>mc_nation_default
4798 LEFT JOIN usr21 AS usr21_zotbo ON usr21_zotbo~bname = ztp2pe188_t024~zotbo
4799 LEFT JOIN adrp AS adrp_zotbo ON adrp_zotbo~persnumber = usr21_zotbo~persnumber
4800 AND adrp_zotbo~date_from = @zif_p2pe312_constants=>mc_adrc_date_from
4801 AND adrp_zotbo~nation = @zif_p2pe312_constants=>mc_nation_default
4802 LEFT JOIN usr21 AS usr21_zmnbo ON usr21_zmnbo~bname = ztp2pe188_t024~zmnbo
4803 LEFT JOIN adrp AS adrp_zmnbo ON adrp_zmnbo~persnumber = usr21_zmnbo~persnumber
4804 AND adrp_zmnbo~date_from = @zif_p2pe312_constants=>mc_adrc_date_from
4805 AND adrp_zmnbo~nation = @zif_p2pe312_constants=>mc_nation_default
4806 LEFT JOIN usr21 AS usr21_zmnfo ON usr21_zmnfo~bname = ztp2pe188_t024~zmnfo
4807 LEFT JOIN adrp AS adrp_zmnfo ON adrp_zmnfo~persnumber = usr21_zmnfo~persnumber
4808 AND adrp_zmnfo~date_from = @zif_p2pe312_constants=>mc_adrc_date_from
4809 AND adrp_zmnfo~nation = @zif_p2pe312_constants=>mc_nation_default
4810 WHERE t001k~bukrs IN @ms_sel-s_pbukrs[]
4811 AND t001k~bukrs IN @ms_sel-s_abukrs
4812 AND eban~werks IN @ms_sel-s_pwerks[]
4813 AND eban~lgort IN @ms_sel-s_plgort[]
4814 AND eban~berid IN @ms_sel-s_pberid[]
4815 AND eban~matnr IN @ms_sel-s_pmatnr[]
4816 AND eban~ekgrp IN @ms_sel-s_pekgrp[]
4817 AND eban~banfn IN @ms_sel-s_pbanfn[]
4818 AND eban~bnfpo IN @ms_sel-s_pbnfpo[]
4819 AND eban~lfdat IN @ms_sel-s_plfdat[]
4820 AND eban~blckd IN @ms_sel-s_pblckd[]
4821 AND eban~bsart IN @l_rt_purbsart
4822 AND eban~loekz = @abap_false
4823 AND eban~pstyp IN @l_rt_pstyp
4824 AND eban~ebakz = @abap_false
4825* AND ekko~bsart IN @l_rt_bsart
4826 AND ekko~ebeln IN @ms_sel-s_pebeln[]
4827 AND ekko~bedat IN @ms_sel-s_pbedat[]
4828 AND ekko~ernam IN @ms_sel-s_pernam[]
4829 ORDER BY eban~banfn, eban~bnfpo
4830 INTO CORRESPONDING FIELDS OF TABLE @mt_requisition.
4831
4832 LOOP AT mt_requisition ASSIGNING FIELD-SYMBOL(<ls_requisition>).
4833* Очищаем поля с заказом на поставку с некорректным видом
4834 IF ( l_rt_bsart IS NOT INITIAL AND <ls_requisition>-pobsart NOT IN l_rt_bsart ) OR
4835 ( <ls_requisition>-loekz IS NOT INITIAL OR <ls_requisition>-elikz IS NOT INITIAL ).
4836 CLEAR: <ls_requisition>-ebeln, <ls_requisition>-ebelp, <ls_requisition>-etenr,
4837 <ls_requisition>-procstat, <ls_requisition>-bedat, <ls_requisition>-poernam,
4838 <ls_requisition>-eindt, <ls_requisition>-pobsart, <ls_requisition>-elikz, <ls_requisition>-loekz,
4839 <ls_requisition>-pmeins, <ls_requisition>-pmenge,
4840 <ls_requisition>-poernam_name_first, <ls_requisition>-poernam_name_last, <ls_requisition>-poernam_txt,
4841 <ls_requisition>-pobstyp.
4842 ENDIF.
4843
4844 ENDLOOP.
4845
4846 DELETE ADJACENT DUPLICATES FROM mt_requisition COMPARING ALL FIELDS.
4847
4848 ENDMETHOD.
4849
4850
4851* <SIGNATURE>---------------------------------------------------------------------------------------+
4852* | Instance Private Method ZCL_P2PE312_NOTIF_MODEL->FETCH_REQ_TRANSF_BY_KEYS
4853* +-------------------------------------------------------------------------------------------------+
4854* | [--->] IT_REQ_TRANSF_KEY TYPE MTY_T_DOC_KEY
4855* | [<---] ET_REQ_TRANSF TYPE MTY_T_REQUISITION
4856* +--------------------------------------------------------------------------------------</SIGNATURE>
4857 METHOD fetch_req_transf_by_keys.
4858*--------------------------------------------------------------------*
4859* Выборка заявок на перемещение
4860*--------------------------------------------------------------------*
4861
4862 DATA: l_rt_pstyp TYPE RANGE OF pstyp,
4863 wa_req_transf LIKE LINE OF et_req_transf.
4864
4865 TYPES: BEGIN OF lty_s_doc_keys,
4866 banfn TYPE banfn,
4867 bnfpo TYPE bnfpo,
4868 END OF lty_s_doc_keys,
4869 lty_t_doc_keys TYPE SORTED TABLE OF lty_s_doc_keys WITH UNIQUE KEY banfn bnfpo.
4870
4871 CLEAR et_req_transf.
4872
4873 ycl_const_utils=>get_tvrange(
4874 EXPORTING
4875 iv_cons = zif_p2pe312_constants=>mc_tvarv_so_rqpstyp
4876 IMPORTING
4877 et_range = l_rt_pstyp
4878 ).
4879
4880 DATA(lt_req_keys) =
4881 VALUE lty_t_doc_keys(
4882 FOR GROUPS ls_group OF <ls_req_f> IN it_req_transf_key
4883 GROUP BY ( banfn = <ls_req_f>-doc_num
4884 bnfpo = <ls_req_f>-doc_pos )
4885 WITHOUT MEMBERS ( banfn = ls_group-banfn
4886 bnfpo = ls_group-bnfpo )
4887 ).
4888
4889 CHECK lt_req_keys IS NOT INITIAL.
4890
4891 SELECT eban~banfn, eban~bnfpo,
4892 eban~bsart, eban~bstyp,
4893 eban~werks AS r_werks, eban~lgort, eban~blckd, eban~blckt, eban~bwtar,
4894 eban~matnr, eban~menge, eban~meins,
4895 eban~ernam, eban~erdat, eban~badat, eban~lfdat, eban~frgdt,
4896 t001w~bwkey, t001k~bukrs, t001~waers,
4897 makt~maktx,
4898 adrp~name_first, adrp~name_last,
4899 mdma~dismm AS p_dismm,
4900 marc~dismm AS r_dismm,
4901 mdlg~berid AS p_berid,
4902 mdlw~berid AS r_berid,
4903 mdma~berid AS mdma_berid,
4904 mdma~matnr AS mdma_matnr,
4905 marc~ekgrp AS r_ekgrp,
4906 marc_pur~ekgrp AS p_ekgrp,
4907 marc~sobsl AS r_sobsl,
4908 ztp2pe312_doctyp~doc_type,
4909 eban~reslo AS rlgort,
4910 marc~minbe
4911 FROM eban
4912 JOIN ztp2pe312_doctyp ON ztp2pe312_doctyp~doc_sort = eban~bsart
4913 LEFT JOIN makt ON makt~matnr = eban~matnr
4914 LEFT JOIN t001w ON t001w~werks = eban~werks
4915 LEFT JOIN t001k ON t001k~bwkey = t001w~bwkey
4916 LEFT JOIN t001 ON t001~bukrs = t001k~bukrs
4917 LEFT JOIN usr21 ON usr21~bname = eban~ernam
4918 LEFT JOIN adrp ON adrp~persnumber = usr21~persnumber
4919 AND adrp~date_from = @zif_p2pe312_constants=>mc_adrc_date_from
4920 AND adrp~nation = @zif_p2pe312_constants=>mc_nation_default
4921 LEFT JOIN mdlg ON mdlg~werks = eban~werks
4922 AND mdlg~lgort = eban~reslo
4923 LEFT JOIN mdma ON mdma~matnr = eban~matnr
4924 AND mdma~berid = mdlg~berid
4925* AND mdma~loekz = @abap_false
4926 JOIN marc ON marc~matnr = eban~matnr
4927 AND marc~werks = eban~werks
4928 LEFT JOIN t460a ON t460a~werks = marc~werks
4929 AND t460a~sobsl = marc~sobsl
4930 LEFT JOIN marc AS marc_pur ON marc_pur~matnr = eban~matnr
4931 AND marc_pur~werks = t460a~wrk02
4932 LEFT JOIN mdlw ON mdlw~werks = eban~werks
4933 FOR ALL ENTRIES IN @lt_req_keys
4934 WHERE t001k~bukrs IN @ms_sel-s_abukrs
4935 AND eban~banfn = @lt_req_keys-banfn
4936 AND eban~bnfpo = @lt_req_keys-bnfpo
4937 AND eban~loekz = @abap_false
4938 AND eban~ebakz = @abap_false
4939 AND eban~pstyp IN @l_rt_pstyp
4940 AND marc~dismm IN @mrt_dismm
4941 AND ztp2pe312_doctyp~doc_type = @zif_p2pe312_constants=>mcs_doc_type-mm
4942 AND NOT EXISTS ( SELECT *
4943 FROM ekpo
4944 WHERE ekpo~banfn = eban~banfn
4945 AND ekpo~bnfpo = eban~bnfpo
4946 AND ekpo~elikz = @abap_true )
4947 INTO TABLE @DATA(lt_req_transf_tmp).
4948
4949* { eiu.mezentceva 3100011230 21.03.2019
4950 LOOP AT lt_req_transf_tmp ASSIGNING FIELD-SYMBOL(<ls_req_transf_tmp>).
4951 IF <ls_req_transf_tmp>-p_berid IS NOT INITIAL
4952 AND <ls_req_transf_tmp>-mdma_berid = <ls_req_transf_tmp>-p_berid
4953 AND <ls_req_transf_tmp>-mdma_matnr = <ls_req_transf_tmp>-matnr.
4954 <ls_req_transf_tmp>-r_berid = <ls_req_transf_tmp>-p_berid.
4955 <ls_req_transf_tmp>-r_dismm = <ls_req_transf_tmp>-p_dismm.
4956 ENDIF.
4957 MOVE-CORRESPONDING <ls_req_transf_tmp> TO wa_req_transf.
4958 wa_req_transf-name = wa_req_transf-name_first && ` ` && wa_req_transf-name_last.
4959 IF wa_req_transf-p_ekgrp IS NOT INITIAL.
4960 wa_req_transf-r_ekgrp = wa_req_transf-p_ekgrp.
4961 ENDIF.
4962 INSERT wa_req_transf INTO TABLE et_req_transf.
4963 ENDLOOP.
4964* } eiu.mezentceva
4965
4966 fetch_warehouse_manager(
4967 CHANGING
4968 ct_req_transf = et_req_transf
4969 ).
4970
4971 ENDMETHOD.
4972
4973
4974* <SIGNATURE>---------------------------------------------------------------------------------------+
4975* | Instance Private Method ZCL_P2PE312_NOTIF_MODEL->FETCH_REQ_TRANSF_BY_SELOPTS
4976* +-------------------------------------------------------------------------------------------------+
4977* +--------------------------------------------------------------------------------------</SIGNATURE>
4978 METHOD FETCH_REQ_TRANSF_BY_SELOPTS.
4979*--------------------------------------------------------------------*
4980* Выбор данных заявок на списание по ограничениям СЭ
4981*--------------------------------------------------------------------*
4982
4983 DATA: l_rt_pstyp TYPE RANGE OF pstyp.
4984
4985 CLEAR mt_req_transf.
4986
4987 ycl_const_utils=>get_tvrange(
4988 EXPORTING
4989 iv_cons = zif_p2pe312_constants=>mc_tvarv_so_rqpstyp
4990 IMPORTING
4991 et_range = l_rt_pstyp
4992 ).
4993
4994 SELECT eban~banfn, eban~bnfpo,
4995 eban~bsart, eban~bstyp,
4996 eban~werks AS r_werks, eban~lgort, eban~blckd, eban~blckt, eban~bwtar,
4997 eban~matnr, eban~menge, eban~meins,
4998 eban~ernam, eban~erdat, eban~badat, eban~lfdat, eban~frgdt,
4999 t001w~bwkey, t001k~bukrs, t001~waers,
5000 makt~maktx,
5001 adrp~name_first && ' ' && adrp~name_last AS name,
5002 CASE
5003 WHEN t460a~wrk02 <> @abap_false THEN t460a~wrk02
5004 ELSE eban~werks
5005 END AS p_werks,
5006 CASE
5007 WHEN mdlg~berid <> @abap_false AND mdma~matnr = eban~matnr AND mdma~berid = mdlg~berid THEN mdlg~berid
5008 ELSE mdlw~berid
5009 END AS r_berid,
5010 mdlg~berid AS p_berid,
5011 CASE
5012 WHEN mdlg~berid <> @abap_false AND mdma~matnr = eban~matnr AND mdma~berid = mdlg~berid THEN mdma~dismm
5013 ELSE marc~dismm
5014 END AS r_dismm,
5015 CASE
5016 WHEN marc_pur~ekgrp <> @abap_false THEN marc_pur~ekgrp
5017 ELSE marc~ekgrp
5018 END AS r_ekgrp,
5019 marc~sobsl AS r_sobsl,
5020 ztp2pe312_doctyp~doc_type,
5021 eban~reslo AS rlgort,
5022 marc~minbe
5023 FROM eban
5024 JOIN ztp2pe312_doctyp ON ztp2pe312_doctyp~doc_sort = eban~bsart
5025 LEFT JOIN makt ON makt~matnr = eban~matnr
5026 LEFT JOIN t001w ON t001w~werks = eban~werks
5027 LEFT JOIN t001k ON t001k~bwkey = t001w~bwkey
5028 LEFT JOIN t001 ON t001~bukrs = t001k~bukrs
5029 LEFT JOIN usr21 ON usr21~bname = eban~ernam
5030 LEFT JOIN adrp ON adrp~persnumber = usr21~persnumber
5031 AND adrp~date_from = @zif_p2pe312_constants=>mc_adrc_date_from
5032 AND adrp~nation = @zif_p2pe312_constants=>mc_nation_default
5033 JOIN marc ON marc~matnr = eban~matnr
5034 AND marc~werks = eban~werks
5035 LEFT JOIN t460a ON t460a~werks = marc~werks
5036 AND t460a~sobsl = marc~sobsl
5037 LEFT JOIN marc AS marc_pur ON marc_pur~matnr = eban~matnr
5038 AND marc_pur~werks = t460a~wrk02
5039 LEFT JOIN mdlg ON mdlg~werks = eban~werks
5040 AND mdlg~lgort = eban~reslo
5041 LEFT JOIN mdma ON mdma~matnr = eban~matnr
5042 AND mdma~berid = mdlg~berid
5043* AND mdma~loekz = @abap_false
5044 LEFT JOIN mdlw ON mdlw~werks = eban~werks
5045 WHERE t001k~bukrs IN @ms_sel-s_rbukrs[]
5046 AND t001k~bukrs IN @ms_sel-s_abukrs[]
5047 AND eban~werks IN @ms_sel-s_rwerks[]
5048 AND eban~berid IN @ms_sel-s_rberid[]
5049 AND eban~matnr IN @ms_sel-s_rmatnr[]
5050 AND eban~bsart IN @ms_sel-s_rptype[]
5051 AND eban~banfn IN @ms_sel-s_rtbanf[]
5052 AND eban~bnfpo IN @ms_sel-s_rtbnfp[]
5053 AND eban~ernam IN @ms_sel-s_rernam[]
5054 AND eban~erdat IN @ms_sel-s_rerdat[]
5055 AND eban~pstyp IN @l_rt_pstyp
5056 AND eban~loekz = @abap_false
5057 AND eban~ebakz = @abap_false
5058 AND marc~dismm IN @mrt_dismm
5059 AND ztp2pe312_doctyp~doc_type = @zif_p2pe312_constants=>mc_doc_type_mm
5060 AND NOT EXISTS ( SELECT *
5061 FROM ekpo
5062 WHERE ekpo~banfn = eban~banfn
5063 AND ekpo~bnfpo = eban~bnfpo
5064 AND ekpo~elikz = @abap_true )
5065 ORDER BY banfn, bnfpo
5066 INTO CORRESPONDING FIELDS OF TABLE @mt_req_transf.
5067
5068 IF ms_sel-s_rekgrp[] IS NOT INITIAL.
5069 DELETE mt_req_transf WHERE r_ekgrp NOT IN ms_sel-s_rekgrp[].
5070 ENDIF.
5071
5072 fetch_warehouse_manager(
5073 CHANGING
5074 ct_req_transf = mt_req_transf
5075 ).
5076
5077 ENDMETHOD.
5078
5079
5080* <SIGNATURE>---------------------------------------------------------------------------------------+
5081* | Instance Private Method ZCL_P2PE312_NOTIF_MODEL->FETCH_RES_BY_KEYS
5082* +-------------------------------------------------------------------------------------------------+
5083* | [--->] IT_DOC_KEYS TYPE MTY_T_DOC_KEY
5084* | [<---] ET_RESERVATION TYPE MTY_T_RESERVATION
5085* +--------------------------------------------------------------------------------------</SIGNATURE>
5086 METHOD fetch_res_by_keys.
5087*--------------------------------------------------------------------*
5088* Выбор данных резервирований по ключевым полям
5089*--------------------------------------------------------------------*
5090
5091 TYPES: BEGIN OF lty_s_doc_keys,
5092 rsnum TYPE rsnum,
5093 rspos TYPE rspos,
5094 END OF lty_s_doc_keys,
5095 lty_t_doc_keys TYPE SORTED TABLE OF lty_s_doc_keys WITH UNIQUE KEY rsnum rspos.
5096
5097 DATA: lv_stat TYPE j_status,
5098 wa_res LIKE LINE OF et_reservation.
5099
5100 lv_stat = ycl_const_utils=>get_tvvalue( iv_cons = zif_p2pe312_constants=>mc_tvarv_pm_stat ).
5101
5102 CLEAR et_reservation.
5103
5104 DATA(lt_resb_keys) =
5105 VALUE lty_t_doc_keys(
5106 FOR GROUPS ls_group OF <ls_req> IN it_doc_keys
5107 GROUP BY ( rsnum = <ls_req>-doc_num
5108 rspos = <ls_req>-doc_pos )
5109 WITHOUT MEMBERS ( rsnum = ls_group-rsnum
5110 rspos = ls_group-rspos )
5111 ).
5112
5113 CHECK lt_resb_keys IS NOT INITIAL.
5114
5115 SELECT resb~rsnum, resb~rspos,
5116 aufk~aufnr, aufk~auart, rsadd~creaby AS ernam, aufk~bukrs,
5117 aufk~erdat,
5118 resb~bdter, resb~werks AS r_werks,
5119 resb~matnr, resb~bdmng, resb~meins,
5120 resb~vornr, resb~posnr,
5121 afvc~projn,
5122 t001~waers,
5123 makt~maktx,
5124 adrp~name_first, adrp~name_last,
5125 mdma~dismm AS p_dismm,
5126 marc~dismm AS r_dismm,
5127 mdlg~berid AS p_berid,
5128 mdlw~berid AS r_berid,
5129 mdma~berid AS mdma_berid,
5130 mdma~matnr AS mdma_matnr,
5131 marc~ekgrp AS r_ekgrp,
5132 marc_pur~ekgrp AS p_ekgrp,
5133 marc~sobsl AS r_sobsl,
5134 ztp2pe312_doctyp~doc_type,
5135 jcds~usnam AS stat_user,
5136 adrp_stat~name_first AS stat_name_first, adrp_stat~name_last AS stat_name_last,
5137 resb~lgort AS rlgort
5138 FROM aufk
5139 JOIN resb ON resb~aufnr = aufk~aufnr
5140 LEFT JOIN rsadd ON rsadd~rsnum = resb~rsnum
5141 AND rsadd~rspos = resb~rspos
5142 AND rsadd~rsart = resb~rsart
5143 LEFT JOIN mdlg ON mdlg~werks = resb~werks
5144 AND mdlg~lgort = resb~lgort
5145 LEFT JOIN afvc ON afvc~aufpl = resb~aufpl ##NULL_VALUES_OK
5146 AND afvc~aplzl = resb~aplzl
5147 AND afvc~vornr = resb~vornr
5148 JOIN ztp2pe312_doctyp ON ztp2pe312_doctyp~doc_sort = aufk~auart
5149 JOIN t001 ON t001~bukrs = aufk~bukrs
5150 LEFT JOIN makt ON makt~matnr = resb~matnr
5151 LEFT JOIN usr21 ON usr21~bname = rsadd~creaby
5152 LEFT JOIN adrp ON adrp~persnumber = usr21~persnumber
5153 AND adrp~date_from = @zif_p2pe312_constants=>mc_adrc_date_from
5154 AND adrp~nation = @zif_p2pe312_constants=>mc_nation_default
5155 LEFT JOIN mdma ON mdma~matnr = resb~matnr
5156 AND mdma~berid = mdlg~berid
5157* AND mdma~loekz = @abap_false
5158 LEFT JOIN marc ON marc~matnr = resb~matnr
5159 AND marc~werks = resb~werks
5160 LEFT JOIN mdlw ON mdlw~werks = resb~werks
5161 LEFT JOIN t460a ON t460a~werks = marc~werks
5162 AND t460a~sobsl = marc~sobsl
5163 LEFT JOIN marc AS marc_pur ON marc_pur~matnr = resb~matnr
5164 AND marc_pur~werks = t460a~wrk02
5165 LEFT JOIN jest ON jest~objnr = aufk~objnr
5166 AND jest~inact = @abap_false
5167 AND jest~stat = @lv_stat
5168 LEFT JOIN jcds ON jcds~objnr = jest~objnr
5169 AND jcds~stat = jest~stat
5170 AND jcds~chgnr = jest~chgnr
5171 LEFT JOIN usr21 AS usr21_stat ON usr21_stat~bname = jcds~usnam
5172 LEFT JOIN adrp AS adrp_stat ON adrp_stat~persnumber = usr21_stat~persnumber
5173 AND adrp_stat~date_from = @zif_p2pe312_constants=>mc_adrc_date_from
5174 AND adrp_stat~nation = @zif_p2pe312_constants=>mc_nation_default
5175 FOR ALL ENTRIES IN @lt_resb_keys
5176 WHERE aufk~bukrs IN @ms_sel-s_abukrs[]
5177 AND resb~rsnum = @lt_resb_keys-rsnum
5178 AND resb~rspos = @lt_resb_keys-rspos
5179 AND aufk~loekz = @abap_false
5180 AND resb~xloek = @abap_false
5181 AND resb~kzear = @abap_false
5182 AND resb~no_disp = @zif_p2pe312_constants=>mc_no_disp_relevant
5183 AND ztp2pe312_doctyp~doc_type IN ( @zif_p2pe312_constants=>mc_doc_type_pm,
5184 @zif_p2pe312_constants=>mc_doc_type_ps )
5185 INTO TABLE @DATA(lt_res_tmp).
5186
5187* { eiu.mezentceva 3100011230 21.03.2019
5188 LOOP AT lt_res_tmp ASSIGNING FIELD-SYMBOL(<ls_res_tmp>).
5189 IF <ls_res_tmp>-p_berid IS NOT INITIAL
5190 AND <ls_res_tmp>-mdma_berid = <ls_res_tmp>-p_berid
5191 AND <ls_res_tmp>-mdma_matnr = <ls_res_tmp>-matnr.
5192 <ls_res_tmp>-r_berid = <ls_res_tmp>-p_berid.
5193 <ls_res_tmp>-r_dismm = <ls_res_tmp>-p_dismm.
5194 ENDIF.
5195 MOVE-CORRESPONDING <ls_res_tmp> TO wa_res.
5196 wa_res-name = wa_res-name_first && ` ` && wa_res-name_last.
5197 wa_res-stat_name = wa_res-stat_name_first && ` ` && wa_res-stat_name_last.
5198 IF wa_res-p_ekgrp IS NOT INITIAL.
5199 wa_res-r_ekgrp = wa_res-p_ekgrp.
5200 ENDIF.
5201 INSERT wa_res INTO TABLE et_reservation.
5202 ENDLOOP.
5203* } eiu.mezentceva
5204
5205 ENDMETHOD.
5206
5207
5208* <SIGNATURE>---------------------------------------------------------------------------------------+
5209* | Instance Private Method ZCL_P2PE312_NOTIF_MODEL->FETCH_RES_BY_SELOPTS
5210* +-------------------------------------------------------------------------------------------------+
5211* +--------------------------------------------------------------------------------------</SIGNATURE>
5212 METHOD fetch_res_by_selopts.
5213*--------------------------------------------------------------------*
5214* Выбор данных резервирований по ограничениям СЭ
5215*--------------------------------------------------------------------*
5216
5217 DATA lv_stat TYPE j_status.
5218
5219 lv_stat = ycl_const_utils=>get_tvvalue( iv_cons = zif_p2pe312_constants=>mc_tvarv_pm_stat ).
5220
5221 SELECT resb~rsnum, resb~rspos,
5222 aufk~aufnr, aufk~auart, rsadd~creaby AS ernam, aufk~bukrs,
5223 aufk~erdat,
5224 resb~bdter, resb~werks AS r_werks,
5225 resb~matnr, resb~bdmng, resb~meins,
5226 resb~vornr, resb~posnr,
5227 afvc~projn,
5228 t001~waers,
5229 makt~maktx,
5230 adrp~name_first && ' ' && adrp~name_last AS name,
5231 CASE
5232 WHEN t460a~wrk02 <> @abap_false THEN t460a~wrk02
5233 ELSE resb~werks
5234 END AS p_werks,
5235 CASE
5236 WHEN mdlg~berid <> @abap_false AND mdma~matnr = resb~matnr AND mdma~berid = mdlg~berid THEN mdlg~berid
5237 ELSE mdlw~berid
5238 END AS r_berid,
5239 CASE
5240 WHEN mdlg~berid <> @abap_false AND mdma~matnr = resb~matnr AND mdma~berid = mdlg~berid THEN mdma~dismm
5241 ELSE marc~dismm
5242 END AS r_dismm,
5243 CASE
5244 WHEN marc_pur~ekgrp <> @abap_false THEN marc_pur~ekgrp
5245 ELSE marc~ekgrp
5246 END AS r_ekgrp,
5247 marc~sobsl AS r_sobsl,
5248 ztp2pe312_doctyp~doc_type,
5249 jcds~usnam AS stat_user,
5250 adrp_stat~name_first && ' ' && adrp_stat~name_last AS stat_name,
5251 resb~lgort AS rlgort
5252 FROM aufk
5253 JOIN resb ON resb~aufnr = aufk~aufnr
5254 LEFT JOIN rsadd ON rsadd~rsnum = resb~rsnum
5255 AND rsadd~rspos = resb~rspos
5256 AND rsadd~rsart = resb~rsart
5257 LEFT JOIN afvc ON afvc~aufpl = resb~aufpl ##NULL_VALUES_OK
5258 AND afvc~aplzl = resb~aplzl
5259 AND afvc~vornr = resb~vornr
5260 LEFT JOIN mdlg ON mdlg~werks = resb~werks
5261 AND mdlg~lgort = resb~lgort
5262 JOIN ztp2pe312_doctyp ON ztp2pe312_doctyp~doc_sort = aufk~auart
5263 JOIN t001 ON t001~bukrs = aufk~bukrs
5264 LEFT JOIN makt ON makt~matnr = resb~matnr
5265 LEFT JOIN usr21 ON usr21~bname = rsadd~creaby
5266 LEFT JOIN adrp ON adrp~persnumber = usr21~persnumber
5267 AND adrp~date_from = @zif_p2pe312_constants=>mc_adrc_date_from
5268 AND adrp~nation = @zif_p2pe312_constants=>mc_nation_default
5269 LEFT JOIN marc ON marc~matnr = resb~matnr
5270 AND marc~werks = resb~werks
5271 LEFT JOIN t460a ON t460a~werks = marc~werks
5272 AND t460a~sobsl = marc~sobsl
5273 LEFT JOIN mdma ON mdma~matnr = resb~matnr
5274 AND mdma~berid = mdlg~berid
5275* AND mdma~loekz = @abap_false
5276 LEFT JOIN mdlw ON mdlw~werks = resb~werks
5277 LEFT JOIN marc AS marc_pur ON marc_pur~matnr = resb~matnr
5278 AND marc_pur~werks = t460a~wrk02
5279 LEFT JOIN jest ON jest~objnr = aufk~objnr
5280 AND jest~inact = @abap_false
5281 AND jest~stat = @lv_stat
5282 LEFT JOIN jcds ON jcds~objnr = jest~objnr
5283 AND jcds~stat = jest~stat
5284 AND jcds~chgnr = jest~chgnr
5285 LEFT JOIN usr21 AS usr21_stat ON usr21_stat~bname = jcds~usnam
5286 LEFT JOIN adrp AS adrp_stat ON adrp_stat~persnumber = usr21_stat~persnumber
5287 AND adrp_stat~date_from = @zif_p2pe312_constants=>mc_adrc_date_from
5288 AND adrp_stat~nation = @zif_p2pe312_constants=>mc_nation_default
5289 WHERE aufk~bukrs IN @ms_sel-s_rbukrs[]
5290 AND aufk~bukrs IN @ms_sel-s_abukrs[]
5291 AND resb~werks IN @ms_sel-s_rwerks[]
5292 AND mdlg~berid IN @ms_sel-s_rberid[]
5293 AND resb~matnr IN @ms_sel-s_rmatnr[]
5294 AND aufk~auart IN @ms_sel-s_rptype[]
5295 AND aufk~loekz = @abap_false
5296 AND resb~xloek = @abap_false
5297 AND resb~kzear = @abap_false
5298 AND aufk~aufnr IN @ms_sel-s_raufnr[]
5299 AND aufk~ernam IN @ms_sel-s_rernam[]
5300 AND aufk~erdat IN @ms_sel-s_rerdat[]
5301* AND afvc~projn IN @ms_sel-s_rposid[]
5302 AND resb~no_disp = @zif_p2pe312_constants=>mc_no_disp_relevant
5303 AND ztp2pe312_doctyp~doc_type IN ( @zif_p2pe312_constants=>mc_doc_type_pm,
5304 @zif_p2pe312_constants=>mc_doc_type_ps )
5305 ORDER BY resb~rsnum, resb~rspos
5306 INTO CORRESPONDING FIELDS OF TABLE @mt_reservation.
5307
5308 IF ms_sel-s_rekgrp[] IS NOT INITIAL.
5309 DELETE mt_reservation WHERE r_ekgrp NOT IN ms_sel-s_rekgrp[].
5310 ENDIF.
5311
5312 IF ms_sel-s_rposid[] IS NOT INITIAL.
5313 DELETE mt_reservation WHERE projn NOT IN ms_sel-s_rposid[].
5314 ENDIF.
5315
5316 ENDMETHOD.
5317
5318
5319* <SIGNATURE>---------------------------------------------------------------------------------------+
5320* | Instance Private Method ZCL_P2PE312_NOTIF_MODEL->FETCH_SD_DOCFLOW
5321* +-------------------------------------------------------------------------------------------------+
5322* +--------------------------------------------------------------------------------------</SIGNATURE>
5323 METHOD fetch_sd_docflow.
5324*{ INSERT 3100013263
5325 DATA
5326 : lt_vbfa_docs TYPE mty_t_vbfa_docs
5327 .
5328*} INSERT 3100013263
5329 TYPES:
5330 BEGIN OF lty_s_vbeln,
5331 vbeln TYPE vbeln_va,
5332*{ INSERT 3100012200
5333 posnr TYPE posnr_va,
5334*} INSERT 3100012200
5335 END OF lty_s_vbeln,
5336*{ REPACE 3100012200
5337* lty_t_vbeln TYPE SORTED TABLE OF lty_s_vbeln WITH UNIQUE KEY vbeln.
5338 lty_t_vbeln TYPE SORTED TABLE OF lty_s_vbeln
5339 WITH NON-UNIQUE KEY vbeln posnr.
5340*{ REPACE 3100012200
5341
5342 DATA(lt_inq) =
5343 VALUE lty_t_vbeln(
5344 FOR GROUPS ls_group OF <ls_inq_gr> IN mt_inquiry
5345 WHERE ( auart = zif_p2pe312_constants=>mcs_sd_auart-zpro )
5346*{ REPACE 3100012200
5347* GROUP BY ( vbeln = <ls_inq_gr>-vbeln )
5348* ( vbeln = ls_group-vbeln )
5349 GROUP BY ( vbeln = <ls_inq_gr>-vbeln
5350 posnr = <ls_inq_gr>-posnr )
5351 ( vbeln = ls_group-vbeln
5352 posnr = ls_group-posnr )
5353*} REPACE 3100012200
5354 ).
5355
5356*{ INSERT 3100012200
5357 DELETE ADJACENT DUPLICATES FROM lt_inq
5358 COMPARING vbeln posnr
5359 .
5360*} INSERT 3100012200
5361
5362* Выбираем последующие документы для сбытовых запросов
5363 IF lt_inq IS NOT INITIAL.
5364*{ REPLACE 3100013263
5365* SELECT vbfa~vbelv, vbfa~vbtyp_n AS vbtyp,
5366* vbak~vbeln, vbak~auart,
5367* likp~vbeln AS delivery
5368* FROM vbfa
5369* LEFT JOIN vbak ON vbak~vbeln = vbfa~vbeln
5370 SELECT vbfa~vbelv, vbfa~posnv, vbfa~vbtyp_n AS vbtyp,
5371 vbap~vbeln, vbap~posnr,
5372 vbak~auart,
5373 likp~vbeln AS delivery
5374 FROM vbfa
5375 LEFT JOIN vbap
5376 ON vbap~vbeln EQ vbfa~vbeln
5377 AND vbap~posnr EQ vbfa~posnn
5378 INNER JOIN vbak
5379 ON vbak~vbeln EQ vbap~vbeln
5380*{ REPLACE 3100013263
5381 LEFT JOIN likp ON likp~vbeln = vbfa~vbeln
5382 FOR ALL ENTRIES IN @lt_inq
5383 WHERE vbfa~vbelv = @lt_inq-vbeln
5384*{ INSERT 3100012200
5385 AND vbfa~posnv = @lt_inq-posnr
5386*} INSERT 3100012200
5387 AND vbfa~vbtyp_v = @zif_p2pe312_constants=>mc_vbtyp_request
5388 AND vbfa~vbtyp_n IN ( @zif_p2pe312_constants=>mc_vbtyp_order,
5389 @zif_p2pe312_constants=>mc_vbtyp_delivery )
5390*{ REPLACE 3100013263
5391* INTO TABLE @DATA(lt_vbak).
5392* SORT lt_vbak BY vbelv vbtyp auart.
5393 INTO CORRESPONDING FIELDS OF TABLE @lt_vbfa_docs.
5394*} REPLACE 3100013263
5395 ENDIF.
5396
5397 LOOP AT mt_inquiry ASSIGNING FIELD-SYMBOL(<ls_inq>).
5398* Приказ КД
5399*{ REPLACE 3100013263
5400* READ TABLE lt_vbak ASSIGNING FIELD-SYMBOL(<ls_vbak>) WITH KEY vbelv = <ls_inq>-vbeln
5401* vbtyp = zif_p2pe312_constants=>mc_vbtyp_order
5402* auart = zif_p2pe312_constants=>mcs_sd_auart-zpr2
5403*
5404* BINARY SEARCH.
5405* IF sy-subrc = 0.
5406* <ls_inq>-zpr2 = <ls_vbak>-vbeln.
5407* ENDIF.
5408** Спецификация КД
5409* READ TABLE lt_vbak ASSIGNING <ls_vbak> WITH KEY vbelv = <ls_inq>-vbeln
5410* vbtyp = zif_p2pe312_constants=>mc_vbtyp_order
5411* auart = zif_p2pe312_constants=>mcs_sd_auart-zor2
5412* BINARY SEARCH.
5413* IF sy-subrc = 0.
5414* <ls_inq>-zor2 = <ls_vbak>-vbeln.
5415* ENDIF.
5416** Поставка
5417* READ TABLE lt_vbak ASSIGNING <ls_vbak> WITH KEY vbelv = <ls_inq>-vbeln
5418* vbtyp = zif_p2pe312_constants=>mc_vbtyp_delivery
5419* BINARY SEARCH.
5420* IF sy-subrc = 0.
5421* <ls_inq>-delivery = <ls_vbak>-delivery.
5422* ENDIF.
5423
5424* Приказ КД
5425 read_docs_from_vbfa(
5426 EXPORTING
5427 im_t_vbfa_docs = lt_vbfa_docs " Таблица - Документы из потока документов
5428 im_vbelv = CONV vbfa-vbelv( <ls_inq>-vbeln ) " Предыдущий документ сбыта
5429 im_posnv = CONV vbfa-posnv( <ls_inq>-posnr ) " Предыдущая позиция документа сбыта
5430 im_vbtyp = zif_p2pe312_constants=>mc_vbtyp_order " Следующий тип документа сбыта
5431 im_auart = zif_p2pe312_constants=>mcs_sd_auart-zpr2 " Вид торгового документа
5432 IMPORTING
5433 ex_docs = <ls_inq>-zpr2 " Список документов
5434 ).
5435
5436* Спецификация КД
5437 read_docs_from_vbfa(
5438 EXPORTING
5439 im_t_vbfa_docs = lt_vbfa_docs " Таблица - Документы из потока документов
5440 im_vbelv = CONV vbfa-vbelv( <ls_inq>-vbeln ) " Предыдущий документ сбыта
5441 im_posnv = CONV vbfa-posnv( <ls_inq>-posnr ) " Предыдущая позиция документа сбыта
5442 im_vbtyp = zif_p2pe312_constants=>mc_vbtyp_order " Следующий тип документа сбыта
5443 im_auart = zif_p2pe312_constants=>mcs_sd_auart-zor2 " Вид торгового документа
5444 IMPORTING
5445 ex_docs = <ls_inq>-zor2 " Список документов
5446 ).
5447
5448* Поставка
5449 read_docs_from_vbfa(
5450 EXPORTING
5451 im_t_vbfa_docs = lt_vbfa_docs " Таблица - Документы из потока документов
5452 im_vbelv = CONV vbfa-vbelv( <ls_inq>-vbeln ) " Предыдущий документ сбыта
5453 im_posnv = CONV vbfa-posnv( <ls_inq>-posnr ) " Предыдущая позиция документа сбыта
5454 im_vbtyp = zif_p2pe312_constants=>mc_vbtyp_delivery " Следующий тип документа сбыта
5455 im_auart = space " Вид торгового документа
5456 IMPORTING
5457 ex_docs = <ls_inq>-delivery " Список документов
5458 ).
5459*{ REPLACE 3100013263
5460 CASE <ls_inq>-auart.
5461 WHEN zif_p2pe312_constants=>mcs_sd_auart-zin0.
5462 CLEAR <ls_inq>-ernam.
5463 <ls_inq>-ernam = <ls_inq>-e_ernam.
5464 <ls_inq>-name = <ls_inq>-e_name.
5465 ENDCASE.
5466 ENDLOOP.
5467
5468 ENDMETHOD.
5469
5470
5471* <SIGNATURE>---------------------------------------------------------------------------------------+
5472* | Instance Private Method ZCL_P2PE312_NOTIF_MODEL->FETCH_SNDLOG
5473* +-------------------------------------------------------------------------------------------------+
5474* | [<---] ET_SNDLOG TYPE ZIP2PE312_SNDLOG
5475* +--------------------------------------------------------------------------------------</SIGNATURE>
5476 METHOD fetch_sndlog.
5477
5478 DATA: l_rt_bwart_unrest TYPE RANGE OF bwart,
5479 l_rt_bwart_nocontrol TYPE RANGE OF bwart,
5480 lt_sndlog TYPE zip2pe312_sndlog.
5481
5482 CLEAR et_sndlog.
5483
5484 SELECT ZTP2PE312_SNDLOG~*
5485 FROM ztp2pe312_sndlog
5486 WHERE nsort IN @ms_sel-s_snsort
5487 AND doc_type IN @ms_sel-s_stype
5488 AND doc_sort IN @ms_sel-s_ssort
5489 AND doc_num IN @ms_sel-s_snum
5490 AND doc_pos IN @ms_sel-s_spos
5491 AND erdat IN @ms_sel-s_serdat
5492 AND processed = @abap_false
5493 AND smode = @zif_p2pe312_constants=>mcs_send_mode-online
5494 ORDER BY nsort
5495 INTO CORRESPONDING FIELDS OF TABLE @lt_sndlog.
5496
5497 ycl_const_utils=>get_tvrange(
5498 EXPORTING
5499 iv_cons = zif_p2pe312_constants=>mc_tvarv_so_bwart_unrest_09
5500 IMPORTING
5501 et_range = l_rt_bwart_unrest
5502 ).
5503 ycl_const_utils=>get_tvrange(
5504 EXPORTING
5505 iv_cons = zif_p2pe312_constants=>mc_tvarv_so_bwart_nocontrol_09
5506 IMPORTING
5507 et_range = l_rt_bwart_nocontrol
5508 ).
5509
5510 LOOP AT lt_sndlog ASSIGNING FIELD-SYMBOL(<ls_sndlog>).
5511 IF <ls_sndlog>-nsort = zif_p2pe312_constants=>mcs_nsort-n09 AND
5512 <ls_sndlog>-bwart IN l_rt_bwart_nocontrol AND
5513 <ls_sndlog>-insmk = abap_true.
5514 LOOP AT lt_sndlog TRANSPORTING NO FIELDS WHERE nsort = zif_p2pe312_constants=>mcs_nsort-n09
5515 AND bwart IN l_rt_bwart_unrest
5516 AND ebeln = <ls_sndlog>-ebeln
5517 AND ebelp = <ls_sndlog>-ebelp.
5518 EXIT.
5519 ENDLOOP.
5520 IF sy-subrc = 0.
5521 APPEND <ls_sndlog> TO et_sndlog.
5522 ENDIF.
5523 ELSE.
5524 APPEND <ls_sndlog> TO et_sndlog.
5525 ENDIF.
5526 ENDLOOP.
5527
5528 ENDMETHOD.
5529
5530
5531* <SIGNATURE>---------------------------------------------------------------------------------------+
5532* | Instance Private Method ZCL_P2PE312_NOTIF_MODEL->FETCH_UNPLAN_REQ_CAN
5533* +-------------------------------------------------------------------------------------------------+
5534* | [<---] ET_UNPLAN TYPE MTY_T_NOTIF_11
5535* +--------------------------------------------------------------------------------------</SIGNATURE>
5536 METHOD fetch_unplan_req_can.
5537
5538 CLEAR: et_unplan.
5539
5540 SELECT YTP2PE121_UNPLAN~*,
5541 ytp2pe121_unplan~ybanfn AS doc_num,
5542 ytp2pe121_unplan~ybnfpo AS doc_pos,
5543 ytp2pe121_unplan~ymodul AS doc_type,
5544 ytp2pe121_unplan~yunptyp AS doc_sort,
5545 ytp2pe121_unplan~ybanfn AS doc_num_send,
5546 ytp2pe121_unplan~ybnfpo AS doc_pos_send,
5547 t001w~fabkl,
5548 eban~werks, eban~matnr, eban~werks AS berid,
5549 ztp2pe188_t024~zmnfo,
5550 ztp2pe188_t024~zmnbo,
5551 ztp2pe188_bukrs~zsnrp AS unrreq_zsnrp,
5552 ztp2pe188_t024~zotfo, ztp2pe188_t024~zotbo,
5553 makt~maktx,
5554 ytp2pe121_dtyp~yday_navo, ytp2pe121_dtyp~yday_avo
5555 FROM ytp2pe121_unplan
5556 JOIN eban ON eban~banfn = ytp2pe121_unplan~ybanfn
5557 AND eban~bnfpo = ytp2pe121_unplan~ybnfpo
5558 LEFT JOIN t001w ON t001w~werks = eban~werks
5559 LEFT JOIN t001k ON t001k~bwkey = t001w~bwkey
5560 LEFT JOIN makt ON makt~matnr = eban~matnr
5561 LEFT JOIN ztp2pe188_bukrs ON ztp2pe188_bukrs~bukrs = t001k~bukrs
5562 AND ztp2pe188_bukrs~ekorg = eban~ekorg
5563 AND ztp2pe188_bukrs~ekgrp = eban~ekgrp
5564 LEFT JOIN ztp2pe188_t024 ON ztp2pe188_t024~ekorg = ztp2pe188_bukrs~ekorg
5565 AND ztp2pe188_t024~ekgrp = ztp2pe188_bukrs~ekgrp
5566 AND ztp2pe188_t024~zact = @abap_false
5567 LEFT JOIN ytp2pe121_dtyp ON ytp2pe121_dtyp~ywerks = eban~werks
5568 AND ytp2pe121_dtyp~yberid = eban~werks
5569 AND ytp2pe121_dtyp~yunptyp = ytp2pe121_unplan~yunptyp
5570 WHERE ytp2pe121_unplan~ystatu IN ( @zif_p2pe312_constants=>mcs_ystatu-wt,
5571 @zif_p2pe312_constants=>mcs_ystatu-bl )
5572 AND ytp2pe121_unplan~bukrs IN @ms_sel-s_bukrs[]
5573 AND ytp2pe121_unplan~bukrs IN @ms_sel-s_abukrs[]
5574 AND ytp2pe121_unplan~yerdat IN @ms_sel-s_rerdat[]
5575 AND ytp2pe121_unplan~yernam IN @ms_sel-s_rernam[]
5576 AND ytp2pe121_unplan~yekgrp IN @ms_sel-s_rekgrp[]
5577 AND ytp2pe121_unplan~ymodul = @zif_p2pe312_constants=>mcs_doc_type-mm
5578 AND ytp2pe121_unplan~ybanfn IN @ms_sel-s_rbanfn[]
5579 AND ytp2pe121_unplan~ybnfpo IN @ms_sel-s_rbnfpo[]
5580 AND eban~werks IN @ms_sel-s_rwerks[]
5581 AND eban~werks IN @ms_sel-s_rberid[]
5582 AND eban~matnr IN @ms_sel-s_rmatnr[]
5583 INTO CORRESPONDING FIELDS OF TABLE @et_unplan.
5584
5585 ENDMETHOD.
5586
5587
5588* <SIGNATURE>---------------------------------------------------------------------------------------+
5589* | Instance Private Method ZCL_P2PE312_NOTIF_MODEL->FETCH_UNPLAN_REQ_INQ
5590* +-------------------------------------------------------------------------------------------------+
5591* | [<---] ET_UNPLAN TYPE MTY_T_NOTIF_11
5592* +--------------------------------------------------------------------------------------</SIGNATURE>
5593 METHOD fetch_unplan_req_inq.
5594
5595 CLEAR: et_unplan.
5596
5597 SELECT YTP2PE121_UNPLAN~*,
5598 ytp2pe121_unplan~yvbeln AS doc_num,
5599 ytp2pe121_unplan~yposnr AS doc_pos,
5600 ytp2pe121_unplan~ymodul AS doc_type,
5601 ytp2pe121_unplan~yunptyp AS doc_sort,
5602 ytp2pe121_unplan~yvbeln AS doc_num_send,
5603 ytp2pe121_unplan~yposnr AS doc_pos_send,
5604 t001w~fabkl,
5605 vbap~werks, vbap~matnr, vbap~werks AS berid,
5606 makt~maktx,
5607 ytp2pe121_dtyp~yday_navo, ytp2pe121_dtyp~yday_avo
5608 FROM ytp2pe121_unplan
5609 JOIN vbap ON vbap~vbeln = ytp2pe121_unplan~yvbeln
5610 AND vbap~posnr = ytp2pe121_unplan~yposnr
5611 LEFT JOIN ytp2pe121_dtyp ON ytp2pe121_dtyp~ywerks = vbap~werks
5612 AND ytp2pe121_dtyp~yberid = vbap~werks
5613 AND ytp2pe121_dtyp~yunptyp = ytp2pe121_unplan~yunptyp
5614 LEFT JOIN t001w ON t001w~werks = vbap~werks
5615 LEFT JOIN t001k ON t001k~bwkey = t001w~bwkey
5616 LEFT JOIN makt ON makt~matnr = vbap~matnr
5617 WHERE ytp2pe121_unplan~ystatu IN ( @zif_p2pe312_constants=>mcs_ystatu-wt,
5618 @zif_p2pe312_constants=>mcs_ystatu-bl )
5619 AND ytp2pe121_unplan~bukrs IN @ms_sel-s_bukrs[]
5620 AND ytp2pe121_unplan~bukrs IN @ms_sel-s_abukrs[]
5621 AND ytp2pe121_unplan~yerdat IN @ms_sel-s_rerdat[]
5622 AND ytp2pe121_unplan~yernam IN @ms_sel-s_rernam[]
5623 AND ytp2pe121_unplan~yekgrp IN @ms_sel-s_rekgrp[]
5624 AND ytp2pe121_unplan~ymodul = @zif_p2pe312_constants=>mcs_doc_type-sd
5625 AND ytp2pe121_unplan~yvbeln IN @ms_sel-s_rvbeln[]
5626 AND ytp2pe121_unplan~yposnr IN @ms_sel-s_rposnr[]
5627 AND vbap~werks IN @ms_sel-s_rwerks[]
5628 AND vbap~werks IN @ms_sel-s_rberid[]
5629 AND vbap~matnr IN @ms_sel-s_rmatnr[]
5630 INTO CORRESPONDING FIELDS OF TABLE @et_unplan.
5631
5632 ENDMETHOD.
5633
5634
5635* <SIGNATURE>---------------------------------------------------------------------------------------+
5636* | Instance Private Method ZCL_P2PE312_NOTIF_MODEL->FETCH_UNPLAN_REQ_RES
5637* +-------------------------------------------------------------------------------------------------+
5638* | [<---] ET_UNPLAN TYPE MTY_T_NOTIF_11
5639* +--------------------------------------------------------------------------------------</SIGNATURE>
5640 METHOD fetch_unplan_req_res.
5641
5642 CLEAR: et_unplan.
5643
5644 SELECT YTP2PE121_UNPLAN~*,
5645 ytp2pe121_unplan~yrsnum AS doc_num,
5646 ytp2pe121_unplan~yrspos AS doc_pos,
5647 ytp2pe121_unplan~ymodul AS doc_type,
5648 ytp2pe121_unplan~yunptyp AS doc_sort,
5649 ytp2pe121_unplan~yaufnr AS doc_num_send,
5650 t001w~fabkl,
5651 resb~werks, resb~matnr, resb~werks AS berid,
5652 makt~maktx,
5653 ytp2pe121_dtyp~yday_navo, ytp2pe121_dtyp~yday_avo
5654 FROM ytp2pe121_unplan
5655 JOIN aufk ON aufk~aufnr = ytp2pe121_unplan~yaufnr
5656 JOIN resb ON resb~rsnum = ytp2pe121_unplan~yrsnum
5657 AND resb~rspos = ytp2pe121_unplan~yrspos
5658 LEFT JOIN ytp2pe121_dtyp ON ytp2pe121_dtyp~ywerks = resb~werks
5659 AND ytp2pe121_dtyp~yberid = resb~werks
5660 AND ytp2pe121_dtyp~yunptyp = ytp2pe121_unplan~yunptyp
5661 LEFT JOIN t001w ON t001w~werks = resb~werks
5662 LEFT JOIN t001k ON t001k~bwkey = t001w~bwkey
5663 LEFT JOIN makt ON makt~matnr = resb~matnr
5664 WHERE ytp2pe121_unplan~ystatu IN ( @zif_p2pe312_constants=>mcs_ystatu-wt,
5665 @zif_p2pe312_constants=>mcs_ystatu-bl )
5666 AND ytp2pe121_unplan~bukrs IN @ms_sel-s_bukrs[]
5667 AND ytp2pe121_unplan~bukrs IN @ms_sel-s_abukrs[]
5668 AND ytp2pe121_unplan~yerdat IN @ms_sel-s_rerdat[]
5669 AND ytp2pe121_unplan~yernam IN @ms_sel-s_rernam[]
5670 AND ytp2pe121_unplan~yekgrp IN @ms_sel-s_rekgrp[]
5671 AND ytp2pe121_unplan~ymodul IN ( @zif_p2pe312_constants=>mcs_doc_type-pm,
5672 @zif_p2pe312_constants=>mcs_doc_type-ps )
5673 AND ytp2pe121_unplan~yaufnr IN @ms_sel-s_raufnr[]
5674 AND resb~werks IN @ms_sel-s_rwerks[]
5675 AND resb~werks IN @ms_sel-s_rberid[]
5676 AND resb~matnr IN @ms_sel-s_rmatnr[]
5677 INTO CORRESPONDING FIELDS OF TABLE @et_unplan.
5678
5679 LOOP AT et_unplan ASSIGNING FIELD-SYMBOL(<ls_unplan>).
5680 <ls_unplan>-doc_pos_send = <ls_unplan>-yaposn.
5681 ENDLOOP.
5682
5683 ENDMETHOD.
5684
5685
5686* <SIGNATURE>---------------------------------------------------------------------------------------+
5687* | Instance Private Method ZCL_P2PE312_NOTIF_MODEL->FETCH_WAREHOUSE_MANAGER
5688* +-------------------------------------------------------------------------------------------------+
5689* | [<-->] CT_REQ_TRANSF TYPE MTY_T_REQUISITION
5690* +--------------------------------------------------------------------------------------</SIGNATURE>
5691 METHOD fetch_warehouse_manager.
5692
5693 TYPES:
5694 BEGIN OF lty_s_werks,
5695 werks TYPE werks_d,
5696 END OF lty_s_werks,
5697 lty_t_werks TYPE SORTED TABLE OF lty_s_werks WITH UNIQUE KEY werks.
5698
5699 IF ct_req_transf IS INITIAL.
5700 RETURN.
5701 ENDIF.
5702
5703 DATA(lt_werks) =
5704 VALUE lty_t_werks(
5705 FOR GROUPS ls_group OF <ls_req_gr> IN ct_req_transf
5706 WHERE ( r_werks IS NOT INITIAL )
5707 GROUP BY ( werks = <ls_req_gr>-r_werks )
5708 WITHOUT MEMBERS
5709 ( werks = ls_group-werks )
5710 ).
5711
5712 DATA(lt_werks_matnr) =
5713 VALUE mty_t_matnr_werks(
5714 FOR GROUPS ls_group_mw OF <ls_req_mw> IN ct_req_transf
5715 WHERE ( r_werks IS NOT INITIAL AND
5716 matnr IS NOT INITIAL )
5717 GROUP BY ( werks = <ls_req_mw>-r_werks
5718 matnr = <ls_req_mw>-matnr )
5719 WITHOUT MEMBERS
5720 ( werks = ls_group_mw-werks
5721 matnr = ls_group_mw-matnr )
5722 ).
5723
5724 IF lt_werks IS NOT INITIAL.
5725 SELECT ztp2pr238_lgort~werks, ztp2pr238_lgort~lgort,
5726 ztp2pr238_lgort~tab_for_lgort1
5727 FROM ztp2pr238_lgort
5728 FOR ALL ENTRIES IN @lt_werks
5729 WHERE ztp2pr238_lgort~status = @zif_p2pe312_constants=>mcs_lgort_status-active
5730 AND ztp2pr238_lgort~werks = @lt_werks-werks
5731 INTO TABLE @DATA(lt_lgort).
5732 SORT lt_lgort BY werks lgort.
5733 ENDIF.
5734
5735 IF lt_werks_matnr IS NOT INITIAL.
5736 SELECT mard~matnr, mard~werks, mard~lgort
5737 FROM mard
5738 FOR ALL ENTRIES IN @lt_werks_matnr
5739 WHERE mard~matnr = @lt_werks_matnr-matnr
5740 AND mard~werks = @lt_werks_matnr-werks
5741 INTO TABLE @DATA(lt_mard).
5742 ENDIF.
5743
5744 LOOP AT ct_req_transf ASSIGNING FIELD-SYMBOL(<ls_req>).
5745 IF <ls_req>-p_berid IS NOT INITIAL. " складская область ппм
5746 READ TABLE lt_lgort ASSIGNING FIELD-SYMBOL(<ls_lgort>)
5747 WITH KEY werks = <ls_req>-r_werks
5748 lgort = <ls_req>-lgort BINARY SEARCH.
5749 IF sy-subrc = 0 AND
5750 <ls_lgort>-tab_for_lgort1 IS NOT INITIAL.
5751 READ TABLE lt_mard TRANSPORTING NO FIELDS WITH KEY matnr = <ls_req>-matnr
5752 werks = <ls_req>-r_werks
5753 lgort = <ls_req>-lgort.
5754 IF sy-subrc = 0.
5755 INSERT <ls_lgort>-tab_for_lgort1 INTO TABLE <ls_req>-warehouse_manag.
5756 ENDIF.
5757 ENDIF.
5758 ELSE.
5759 LOOP AT lt_lgort ASSIGNING <ls_lgort> WHERE werks = <ls_req>-r_werks
5760 AND tab_for_lgort1 IS NOT INITIAL.
5761 READ TABLE lt_mard TRANSPORTING NO FIELDS WITH KEY matnr = <ls_req>-matnr
5762 werks = <ls_req>-r_werks
5763 lgort = <ls_lgort>-lgort.
5764 IF sy-subrc = 0.
5765 INSERT <ls_lgort>-tab_for_lgort1 INTO TABLE <ls_req>-warehouse_manag.
5766 ENDIF.
5767 ENDLOOP.
5768 ENDIF.
5769 ENDLOOP.
5770
5771 ENDMETHOD.
5772
5773
5774* <SIGNATURE>---------------------------------------------------------------------------------------+
5775* | Instance Private Method ZCL_P2PE312_NOTIF_MODEL->FILL_PEG_KEYS
5776* +-------------------------------------------------------------------------------------------------+
5777* | [--->] IT_REQUISITION TYPE MTY_T_REQUISITION
5778* | [<---] ET_PEGGING_KEY TYPE MTY_T_PEGGING_KEY
5779* +--------------------------------------------------------------------------------------</SIGNATURE>
5780 METHOD fill_peg_keys.
5781
5782 CLEAR et_pegging_key.
5783
5784 LOOP AT it_requisition ASSIGNING FIELD-SYMBOL(<ls_requisition>).
5785 IF <ls_requisition>-ebeln IS NOT INITIAL AND
5786 <ls_requisition>-pobstyp <> zif_p2pe312_constants=>mc_pobstyp_inquiry.
5787 INSERT VALUE mty_s_pegging_key(
5788 delkz = if_pph_mrp_constants=>gc_delkz_bsein
5789 delnr = <ls_requisition>-ebeln
5790 delps = <ls_requisition>-ebelp
5791 delet = <ls_requisition>-etenr
5792 matnr = <ls_requisition>-matnr
5793 werks = <ls_requisition>-p_werks
5794 berid = <ls_requisition>-p_berid
5795 ) INTO TABLE et_pegging_key.
5796 ELSEIF <ls_requisition>-banfn IS NOT INITIAL.
5797 INSERT VALUE mty_s_pegging_key(
5798 delkz = if_pph_mrp_constants=>gc_delkz_bsanf
5799 delnr = <ls_requisition>-banfn
5800 delps = <ls_requisition>-bnfpo
5801 matnr = <ls_requisition>-matnr
5802 werks = <ls_requisition>-p_werks
5803 berid = <ls_requisition>-p_berid
5804 ) INTO TABLE et_pegging_key.
5805 ENDIF.
5806 ENDLOOP.
5807
5808 ENDMETHOD.
5809
5810
5811* <SIGNATURE>---------------------------------------------------------------------------------------+
5812* | Instance Private Method ZCL_P2PE312_NOTIF_MODEL->FILTER_ALV
5813* +-------------------------------------------------------------------------------------------------+
5814* +--------------------------------------------------------------------------------------</SIGNATURE>
5815 METHOD filter_alv.
5816
5817 DATA: lv_act TYPE char1.
5818
5819 LOOP AT mt_alv ASSIGNING FIELD-SYMBOL(<ls_alv>).
5820 CLEAR lv_act.
5821
5822 LOOP AT mt_nsort ASSIGNING FIELD-SYMBOL(<ls_nsort>).
5823 ASSIGN COMPONENT 'EVENT_FLAG_' && <ls_nsort>-nsort OF STRUCTURE <ls_alv> TO FIELD-SYMBOL(<lv_event>).
5824 IF <lv_event> IS ASSIGNED.
5825 IF <lv_event> = abap_true.
5826 lv_act = abap_true.
5827 ENDIF.
5828 UNASSIGN <lv_event>.
5829 ENDIF.
5830 ENDLOOP.
5831
5832 IF lv_act <> abap_true.
5833 DELETE mt_alv.
5834 ENDIF.
5835 ENDLOOP.
5836
5837 ENDMETHOD.
5838
5839
5840* <SIGNATURE>---------------------------------------------------------------------------------------+
5841* | Instance Private Method ZCL_P2PE312_NOTIF_MODEL->FILTER_PEGGING_STOCK_BY_LOGDB
5842* +-------------------------------------------------------------------------------------------------+
5843* | [--->] IV_NSORT TYPE ZP2PE312_NSORT
5844* | [<---] ET_SNDLOG TYPE ZIP2PE312_SNDLOG
5845* | [<---] ET_PURCH_ORD TYPE MTY_T_PURCH_ORD
5846* | [<-->] CT_PEGGING_STOCK TYPE MTY_T_PEGGING_STOCK
5847* +--------------------------------------------------------------------------------------</SIGNATURE>
5848 METHOD filter_pegging_stock_by_logdb.
5849
5850 TYPES:
5851 BEGIN OF lty_s_log,
5852 doc_num TYPE zp2pe312_doc_num,
5853 doc_pos TYPE zp2pe312_doc_pos,
5854 END OF lty_s_log,
5855 lty_t_log TYPE SORTED TABLE OF lty_s_log WITH UNIQUE KEY doc_num doc_pos,
5856
5857 BEGIN OF lty_s_ebeln,
5858 ebeln TYPE ebeln,
5859 ebelp TYPE ebelp,
5860 END OF lty_s_ebeln,
5861 lty_t_ebeln TYPE SORTED TABLE OF lty_s_ebeln WITH UNIQUE KEY ebeln ebelp.
5862
5863 DATA: l_rt_doc_type TYPE RANGE OF zp2pe312_doc_type,
5864 l_rt_bwart_unrest TYPE RANGE OF bwart,
5865 l_rt_bwart_nocontrol TYPE RANGE OF bwart.
5866
5867 CLEAR: et_sndlog, et_purch_ord.
5868
5869 ycl_const_utils=>get_tvrange(
5870 EXPORTING
5871 iv_cons = zif_p2pe312_constants=>mc_tvarv_so_bwart_unrest_09
5872 IMPORTING
5873 et_range = l_rt_bwart_unrest
5874 ).
5875 ycl_const_utils=>get_tvrange(
5876 EXPORTING
5877 iv_cons = zif_p2pe312_constants=>mc_tvarv_so_bwart_nocontrol_09
5878 IMPORTING
5879 et_range = l_rt_bwart_nocontrol
5880 ).
5881
5882 l_rt_doc_type =
5883 VALUE #(
5884 option = rsmds_c_option-equal
5885 sign = rsmds_c_sign-including
5886 ( low = zif_p2pe312_constants=>mcs_doc_type-pm )
5887 ( low = zif_p2pe312_constants=>mcs_doc_type-ps )
5888 ).
5889
5890 DATA(lt_log) =
5891 VALUE lty_t_log(
5892 FOR GROUPS ls_group OF <ls_stock_gr> IN ct_pegging_stock
5893 WHERE ( doc_num IS NOT INITIAL )
5894 GROUP BY ( doc_num = <ls_stock_gr>-doc_num
5895 doc_pos = <ls_stock_gr>-doc_pos )
5896 ( doc_num = ls_group-doc_num
5897 doc_pos = ls_group-doc_pos )
5898 ).
5899
5900 IF lt_log IS NOT INITIAL.
5901
5902 SELECT ZTP2PE312_SNDLOG~*
5903 FROM ztp2pe312_sndlog
5904 FOR ALL ENTRIES IN @lt_log
5905 WHERE nsort = @iv_nsort
5906 AND type = @zif_p2pe312_constants=>mcs_log_type-trigger
5907 AND obj_type = @zif_p2pe312_constants=>mcs_obj_type-mat_lgr
5908 AND doc_num = @lt_log-doc_num
5909 AND doc_pos = @lt_log-doc_pos
5910 AND smode = @zif_p2pe312_constants=>mcs_send_mode-online
5911 INTO CORRESPONDING FIELDS OF TABLE @et_sndlog.
5912
5913 DATA(lt_sndlog_key) =
5914 VALUE lty_t_ebeln(
5915 FOR GROUPS ls_group_eb OF <ls_log_gr> IN et_sndlog
5916 WHERE ( nsort = zif_p2pe312_constants=>mcs_nsort-n09 )
5917 GROUP BY ( ebeln = <ls_log_gr>-ebeln
5918 ebelp = <ls_log_gr>-ebelp )
5919 ( ebeln = ls_group_eb-ebeln
5920 ebelp = ls_group_eb-ebelp )
5921 ).
5922
5923 IF lt_sndlog_key IS NOT INITIAL.
5924 SELECT ekko~ebeln, ekpo~ebelp, eket~etenr,
5925 eket~eindt, ekpo~banfn, ekpo~bnfpo
5926 FROM ekpo
5927 JOIN ekko ON ekko~ebeln = ekpo~ebeln
5928 JOIN eket ON eket~ebeln = ekpo~ebeln
5929 AND eket~ebelp = ekpo~ebelp
5930 FOR ALL ENTRIES IN @lt_sndlog_key
5931 WHERE ekpo~ebeln = @lt_sndlog_key-ebeln
5932 AND ekpo~ebelp = @lt_sndlog_key-ebelp
5933 INTO CORRESPONDING FIELDS OF TABLE @et_purch_ord.
5934 ENDIF.
5935
5936 IF iv_nsort = zif_p2pe312_constants=>mcs_nsort-n09 AND lt_sndlog_key IS NOT INITIAL.
5937 SELECT ZTP2PE312_SNDLOG~*
5938 FROM ztp2pe312_sndlog
5939 FOR ALL ENTRIES IN @lt_sndlog_key
5940 WHERE nsort = @iv_nsort
5941 AND type = @zif_p2pe312_constants=>mcs_log_type-trigger
5942 AND obj_type = @zif_p2pe312_constants=>mcs_obj_type-mat_lgr
5943 AND smode = @zif_p2pe312_constants=>mcs_send_mode-online
5944 AND ebeln = @lt_sndlog_key-ebeln
5945 AND ebelp = @lt_sndlog_key-ebelp
5946 AND bwart IN @l_rt_bwart_unrest
5947 INTO TABLE @DATA(lt_sndlog_ebeln).
5948 ENDIF.
5949
5950 ENDIF.
5951
5952 LOOP AT ct_pegging_stock ASSIGNING FIELD-SYMBOL(<ls_peg>).
5953 READ TABLE et_sndlog ASSIGNING FIELD-SYMBOL(<ls_log>) WITH KEY doc_num = <ls_peg>-doc_num
5954 doc_pos = <ls_peg>-doc_pos.
5955 IF sy-subrc <> 0.
5956 DELETE ct_pegging_stock.
5957 ELSE.
5958 IF <ls_peg>-doc_type IN l_rt_doc_type AND
5959 <ls_log>-doc_type IN l_rt_doc_type.
5960 IF iv_nsort = zif_p2pe312_constants=>mcs_nsort-n09 AND
5961 <ls_log>-bwart IN l_rt_bwart_nocontrol AND
5962 <ls_log>-insmk = abap_true. " 101
5963* Проверяем наличие 321 движения
5964 LOOP AT lt_sndlog_ebeln TRANSPORTING NO FIELDS WHERE nsort = iv_nsort
5965 AND matnr = <ls_peg>-matnr
5966 AND werks = <ls_peg>-werks
5967 AND ebeln = <ls_log>-ebeln
5968 AND ebelp = <ls_log>-ebelp
5969 AND bwart IN l_rt_bwart_unrest.
5970 EXIT.
5971 ENDLOOP.
5972 IF sy-subrc <> 0.
5973 DELETE ct_pegging_stock.
5974 CONTINUE.
5975 ENDIF.
5976 CONTINUE.
5977 ENDIF.
5978 ELSEIF <ls_peg>-doc_type <> <ls_log>-doc_type.
5979 DELETE ct_pegging_stock.
5980 CONTINUE.
5981 ENDIF.
5982 ENDIF.
5983 ENDLOOP.
5984
5985 ENDMETHOD.
5986
5987
5988* <SIGNATURE>---------------------------------------------------------------------------------------+
5989* | Instance Public Method ZCL_P2PE312_NOTIF_MODEL->GET_ALV_OUTPUT
5990* +-------------------------------------------------------------------------------------------------+
5991* | [<-()] RT_ALV TYPE REF TO ZIP2PE312_NOTIF_SYS_ALV
5992* +--------------------------------------------------------------------------------------</SIGNATURE>
5993 method GET_ALV_OUTPUT.
5994
5995 rt_alv = REF #( mt_alv ).
5996
5997 endmethod.
5998
5999
6000* <SIGNATURE>---------------------------------------------------------------------------------------+
6001* | Instance Private Method ZCL_P2PE312_NOTIF_MODEL->GET_CENTRAL_PLANT
6002* +-------------------------------------------------------------------------------------------------+
6003* | [--->] IT_MATNR TYPE MTY_T_MATNR
6004* | [--->] IRT_SOBSL TYPE CURTO_SOBSL_RANGE_T
6005* | [<---] ET_CENTRAL_PLANT TYPE MTY_T_CENTRAL_PLANT
6006* +--------------------------------------------------------------------------------------</SIGNATURE>
6007 METHOD get_central_plant.
6008*--------------------------------------------------------------------*
6009* Поиск центральных заводов для материала
6010*--------------------------------------------------------------------*
6011
6012 CLEAR: et_central_plant.
6013
6014 IF it_matnr IS INITIAL.
6015 RETURN.
6016 ENDIF.
6017
6018* Выбор центральных заводов и областей ППМ для материалов
6019 SELECT mdma~matnr,
6020 mdma~berid, mdma~werks,
6021 mdlg~lgort
6022 FROM mdlg
6023 JOIN mdma ON mdma~berid = mdlg~berid
6024* AND mdma~loekz = @abap_false
6025 FOR ALL ENTRIES IN @it_matnr
6026 WHERE mdma~sobsl IN @irt_sobsl
6027 AND mdma~matnr = @it_matnr-matnr
6028 INTO CORRESPONDING FIELDS OF TABLE @et_central_plant.
6029
6030* Выбор областей ППМ для завода
6031 SELECT marc~matnr,
6032 mdlw~berid, marc~werks
6033 FROM mdlw
6034 JOIN marc ON marc~werks = mdlw~werks
6035 FOR ALL ENTRIES IN @it_matnr
6036 WHERE marc~sobsl IN @irt_sobsl
6037 AND marc~matnr = @it_matnr-matnr
6038 APPENDING CORRESPONDING FIELDS OF TABLE @et_central_plant.
6039
6040 DELETE ADJACENT DUPLICATES FROM et_central_plant COMPARING ALL FIELDS.
6041
6042 ENDMETHOD.
6043
6044
6045* <SIGNATURE>---------------------------------------------------------------------------------------+
6046* | Instance Private Method ZCL_P2PE312_NOTIF_MODEL->GET_DOC_KEYS
6047* +-------------------------------------------------------------------------------------------------+
6048* | [--->] IT_PEG_KEYS TYPE MTY_T_PEGGING
6049* | [<---] ET_DOC_KEYS TYPE MTY_T_DOC_KEY
6050* +--------------------------------------------------------------------------------------</SIGNATURE>
6051 method GET_DOC_KEYS.
6052
6053 CLEAR: et_doc_keys.
6054
6055 et_doc_keys =
6056 VALUE mty_t_doc_key(
6057 FOR GROUPS ls_group OF <ls_peg> IN it_peg_keys
6058 GROUP BY ( doc_num = <ls_peg>-reqnr
6059 doc_pos = <ls_peg>-reqps
6060 doc_sch = <ls_peg>-reqet )
6061 WITHOUT MEMBERS ( doc_num = ls_group-doc_num
6062 doc_pos = ls_group-doc_pos
6063 doc_sch = ls_group-doc_sch )
6064 ).
6065
6066 endmethod.
6067
6068
6069* <SIGNATURE>---------------------------------------------------------------------------------------+
6070* | Instance Private Method ZCL_P2PE312_NOTIF_MODEL->GET_DOC_KEYS_SNDLOG
6071* +-------------------------------------------------------------------------------------------------+
6072* | [--->] IT_SNDLOG TYPE ZIP2PE312_SNDLOG
6073* | [<---] ET_REQ_KEYS TYPE MTY_T_DOC_KEY
6074* | [<---] ET_MSEG_KEYS TYPE MTY_T_MSEG
6075* +--------------------------------------------------------------------------------------</SIGNATURE>
6076 METHOD get_doc_keys_sndlog.
6077
6078 CLEAR: et_req_keys, et_mseg_keys.
6079
6080 LOOP AT it_sndlog ASSIGNING FIELD-SYMBOL(<ls_sndlog>).
6081
6082 CASE <ls_sndlog>-obj_type.
6083* Заявки на закупку
6084 WHEN zif_p2pe312_constants=>mcs_obj_type-pur_req.
6085 INSERT VALUE mty_s_doc_key(
6086 doc_num = <ls_sndlog>-doc_num
6087 doc_pos = <ls_sndlog>-doc_pos
6088 ) INTO TABLE et_req_keys.
6089* Ключи для поиска документов материала
6090 WHEN zif_p2pe312_constants=>mcs_obj_type-mat_lgr.
6091 INSERT VALUE mty_s_mseg(
6092 matnr = <ls_sndlog>-matnr
6093 werks = <ls_sndlog>-werks
6094 lgort = <ls_sndlog>-lgort
6095 nsort = <ls_sndlog>-nsort
6096 ) INTO TABLE et_mseg_keys.
6097 ENDCASE.
6098 ENDLOOP.
6099
6100 ENDMETHOD.
6101
6102
6103* <SIGNATURE>---------------------------------------------------------------------------------------+
6104* | Instance Private Method ZCL_P2PE312_NOTIF_MODEL->GET_LABST
6105* +-------------------------------------------------------------------------------------------------+
6106* | [--->] IT_MATNR_WERKS TYPE MTY_T_MATNR_WERKS
6107* | [<---] ET_LABST TYPE MTY_T_LABST
6108* +--------------------------------------------------------------------------------------</SIGNATURE>
6109 METHOD get_labst.
6110
6111 DATA: ls_labst TYPE mty_s_labst.
6112
6113 CLEAR: et_labst.
6114
6115 IF it_matnr_werks IS INITIAL.
6116 RETURN.
6117 ENDIF.
6118
6119 SELECT mard~matnr, mard~werks, mard~labst
6120 FROM mard
6121 FOR ALL ENTRIES IN @it_matnr_werks
6122 WHERE mard~matnr = @it_matnr_werks-matnr
6123 AND mard~werks = @it_matnr_werks-werks
6124 INTO TABLE @DATA(lt_mard).
6125
6126*{ INSERT 3100013263
6127 SELECT mspr~matnr, mspr~werks, mspr~prlab AS labst
6128 FROM mspr
6129 FOR ALL ENTRIES IN @it_matnr_werks
6130 WHERE mspr~matnr = @it_matnr_werks-matnr
6131 AND mspr~werks = @it_matnr_werks-werks
6132 INTO TABLE @DATA(lt_mspr)
6133 .
6134
6135 APPEND LINES OF lt_mspr TO lt_mard.
6136*} INSERT 3100013263
6137
6138 SORT lt_mard BY matnr werks.
6139
6140 LOOP AT lt_mard ASSIGNING FIELD-SYMBOL(<ls_mard>)
6141 GROUP BY ( matnr = <ls_mard>-matnr
6142 werks = <ls_mard>-werks )
6143 ASSIGNING FIELD-SYMBOL(<lt_group>).
6144 CLEAR ls_labst.
6145 ls_labst-matnr = <lt_group>-matnr.
6146 ls_labst-werks = <lt_group>-werks.
6147
6148 LOOP AT GROUP <lt_group> ASSIGNING FIELD-SYMBOL(<ls_group>).
6149 ls_labst-labst = ls_labst-labst + <ls_group>-labst.
6150 ENDLOOP.
6151
6152 INSERT ls_labst INTO TABLE et_labst.
6153
6154 ENDLOOP.
6155
6156 ENDMETHOD.
6157
6158
6159* <SIGNATURE>---------------------------------------------------------------------------------------+
6160* | Instance Private Method ZCL_P2PE312_NOTIF_MODEL->GET_MATERIAL_DOCUMENTS
6161* +-------------------------------------------------------------------------------------------------+
6162* | [--->] IRT_ERDAT TYPE FIP_T_VDATU_RANGE(optional)
6163* | [--->] IRT_CPUDT TYPE FIP_T_VDATU_RANGE(optional)
6164* | [--->] IRT_BWART TYPE BWART_T_RANGE
6165* | [--->] IRT_BSART TYPE RPO_T_BSART_RANGE
6166* | [--->] IT_CENTRAL_PLANT TYPE MTY_T_CENTRAL_PLANT
6167* | [--->] IV_NSORT TYPE ZP2PE312_NSORT
6168* | [<---] ET_DOCUMENTS TYPE MTY_T_NOTIF_09
6169* +--------------------------------------------------------------------------------------</SIGNATURE>
6170 METHOD get_material_documents.
6171
6172 DATA: lt_documents TYPE STANDARD TABLE OF mty_s_notif_09,
6173 ls_notif_09 TYPE mty_s_notif_09.
6174
6175 CLEAR et_documents.
6176
6177* Собираем уникальные значения пар материал- завод для выборки документов
6178 DATA(lt_matnr_werks) =
6179 VALUE mty_t_matnr_werks(
6180 FOR GROUPS ls_group OF <ls_central_plant_gr> IN it_central_plant
6181 WHERE ( lgort IS INITIAL )
6182 GROUP BY ( matnr = <ls_central_plant_gr>-matnr
6183 werks = <ls_central_plant_gr>-werks )
6184 WITHOUT MEMBERS
6185 ( matnr = ls_group-matnr
6186 werks = ls_group-werks )
6187 ).
6188 DATA(lt_mseg_key) =
6189 VALUE mty_t_mseg(
6190 FOR GROUPS ls_group_mseg OF <ls_central_plant_gr> IN it_central_plant
6191 WHERE ( lgort IS NOT INITIAL )
6192 GROUP BY ( matnr = <ls_central_plant_gr>-matnr
6193 werks = <ls_central_plant_gr>-werks
6194 lgort = <ls_central_plant_gr>-lgort )
6195 WITHOUT MEMBERS
6196 ( matnr = ls_group_mseg-matnr
6197 werks = ls_group_mseg-werks
6198 lgort = ls_group_mseg-lgort )
6199 ).
6200
6201 IF lt_matnr_werks IS INITIAL AND lt_mseg_key IS INITIAL.
6202 RETURN.
6203 ENDIF.
6204
6205 IF lt_matnr_werks IS NOT INITIAL.
6206 SELECT mseg~mblnr, mseg~mjahr, mseg~zeile,
6207 mseg~matnr, mseg~werks, mseg~lgort, mseg~menge,
6208 mkpf~budat,
6209 ekpo~ebeln, ekpo~ebelp, eket~etenr,
6210 eket~eindt,
6211 ekpo~banfn, ekpo~bnfpo
6212 FROM mseg
6213 JOIN mkpf ON mkpf~mblnr = mseg~mblnr
6214 AND mkpf~mjahr = mseg~mjahr
6215 JOIN ekpo ON ekpo~ebeln = mseg~ebeln
6216 AND ekpo~ebelp = mseg~ebelp
6217 JOIN ekko ON ekko~ebeln = ekpo~ebeln
6218 JOIN eket ON eket~ebeln = ekpo~ebeln
6219 AND eket~ebelp = ekpo~ebelp
6220 FOR ALL ENTRIES IN @lt_matnr_werks
6221 WHERE mseg~matnr = @lt_matnr_werks-matnr
6222 AND mseg~werks = @lt_matnr_werks-werks
6223 AND mseg~smbln = @abap_false
6224 AND mseg~bwart IN @irt_bwart
6225 AND ekko~bsart IN @irt_bsart
6226 AND mkpf~budat IN @irt_erdat
6227 AND mkpf~cpudt IN @irt_cpudt
6228 AND NOT EXISTS ( SELECT mandt
6229 FROM mseg AS mseg_st
6230 WHERE mseg_st~smbln = mseg~mblnr
6231 AND mseg_st~mjahr = mseg~mjahr
6232 AND mseg_st~smblp = mseg~zeile )
6233 INTO CORRESPONDING FIELDS OF TABLE @lt_documents.
6234 ENDIF.
6235 IF lt_mseg_key IS NOT INITIAL.
6236 SELECT mseg~mblnr, mseg~mjahr, mseg~zeile,
6237 mseg~matnr, mseg~werks, mseg~lgort, mseg~menge,
6238 mkpf~budat,
6239 ekpo~ebeln, ekpo~ebelp, eket~etenr,
6240 eket~eindt,
6241 ekpo~banfn, ekpo~bnfpo
6242 FROM mseg
6243 JOIN mkpf ON mkpf~mblnr = mseg~mblnr
6244 AND mkpf~mjahr = mseg~mjahr
6245 JOIN ekpo ON ekpo~ebeln = mseg~ebeln
6246 AND ekpo~ebelp = mseg~ebelp
6247 JOIN ekko ON ekko~ebeln = ekpo~ebeln
6248 JOIN eket ON eket~ebeln = ekpo~ebeln
6249 AND eket~ebelp = ekpo~ebelp
6250 FOR ALL ENTRIES IN @lt_mseg_key
6251 WHERE mseg~matnr = @lt_mseg_key-matnr
6252 AND mseg~werks = @lt_mseg_key-werks
6253 AND mseg~lgort = @lt_mseg_key-lgort
6254 AND mseg~smbln = @abap_false
6255 AND mseg~bwart IN @irt_bwart
6256 AND ekko~bsart IN @irt_bsart
6257 AND mkpf~budat IN @irt_erdat
6258 AND NOT EXISTS ( SELECT mandt
6259 FROM mseg AS mseg_st
6260 WHERE mseg_st~smbln = mseg~mblnr
6261 AND mseg_st~mjahr = mseg~mjahr
6262 AND mseg_st~smblp = mseg~zeile )
6263 APPENDING CORRESPONDING FIELDS OF TABLE @lt_documents.
6264 ENDIF.
6265
6266 SORT lt_documents BY matnr werks lgort budat DESCENDING.
6267 DELETE ADJACENT DUPLICATES FROM lt_documents COMPARING matnr werks lgort budat.
6268
6269* Заполняем область ППМ
6270 LOOP AT lt_documents ASSIGNING FIELD-SYMBOL(<ls_doc>).
6271 READ TABLE it_central_plant ASSIGNING FIELD-SYMBOL(<ls_central_plant>)
6272 WITH KEY matnr = <ls_doc>-matnr
6273 werks = <ls_doc>-werks
6274 lgort = <ls_doc>-lgort.
6275 IF sy-subrc = 0.
6276 <ls_doc>-berid = <ls_central_plant>-berid.
6277 ELSE.
6278 LOOP AT it_central_plant ASSIGNING <ls_central_plant>
6279 WHERE matnr = <ls_doc>-matnr
6280 AND werks = <ls_doc>-werks
6281 AND lgort IS INITIAL.
6282 <ls_doc>-berid = <ls_central_plant>-berid.
6283 CONTINUE.
6284 ENDLOOP.
6285 ENDIF.
6286 ENDLOOP.
6287
6288* Для каждого ключа берем документ с наибольшей датой
6289 LOOP AT lt_documents ASSIGNING <ls_doc>
6290 GROUP BY ( matnr = <ls_doc>-matnr
6291 werks = <ls_doc>-werks
6292 lgort = <ls_doc>-lgort )
6293 ASSIGNING FIELD-SYMBOL(<lt_group>).
6294
6295* Берем документ с наибольшей датой
6296 LOOP AT GROUP <lt_group> ASSIGNING FIELD-SYMBOL(<ls_group>).
6297 ls_notif_09 = CORRESPONDING #( <ls_group> ).
6298 INSERT ls_notif_09 INTO TABLE et_documents.
6299 EXIT.
6300 ENDLOOP.
6301 ENDLOOP.
6302
6303 ENDMETHOD.
6304
6305
6306* <SIGNATURE>---------------------------------------------------------------------------------------+
6307* | Instance Private Method ZCL_P2PE312_NOTIF_MODEL->GET_MATERIAL_DOCUMENTS_04
6308* +-------------------------------------------------------------------------------------------------+
6309* | [--->] IT_EKPO_KEY TYPE MTY_T_EKPO_KEY
6310* | [--->] IRT_ERDAT TYPE FIP_T_VDATU_RANGE
6311* | [<---] ET_DOCUMENTS TYPE MTY_T_NOTIF_04
6312* +--------------------------------------------------------------------------------------</SIGNATURE>
6313 METHOD get_material_documents_04.
6314
6315 DATA: lt_docs TYPE TABLE OF mty_s_notif_04,
6316 ls_notif TYPE mty_s_notif_04.
6317
6318 CLEAR et_documents.
6319
6320 IF it_ekpo_key IS INITIAL.
6321 RETURN.
6322 ENDIF.
6323
6324 SELECT mseg~mblnr, mseg~mjahr, mseg~zeile,
6325 mseg~menge,
6326 mkpf~budat,
6327 mseg~ebeln, mseg~ebelp
6328 FROM mseg
6329 JOIN mkpf ON mkpf~mblnr = mseg~mblnr
6330 AND mkpf~mjahr = mseg~mjahr
6331 FOR ALL ENTRIES IN @it_ekpo_key
6332 WHERE mseg~ebeln = @it_ekpo_key-ebeln
6333 AND mseg~ebelp = @it_ekpo_key-ebelp
6334 AND mseg~smbln = @abap_false
6335 AND NOT EXISTS ( SELECT mandt
6336 FROM mseg AS mseg_st
6337 WHERE mseg_st~smbln = mseg~mblnr
6338 AND mseg_st~mjahr = mseg~mjahr
6339 AND mseg_st~smblp = mseg~zeile )
6340 INTO CORRESPONDING FIELDS OF TABLE @lt_docs.
6341
6342 SORT lt_docs BY ebeln ebelp budat DESCENDING.
6343 DELETE ADJACENT DUPLICATES FROM lt_docs COMPARING ebeln ebelp budat.
6344
6345 LOOP AT lt_docs ASSIGNING FIELD-SYMBOL(<ls_doc>)
6346 GROUP BY ( ebeln = <ls_doc>-ebeln
6347 ebelp = <ls_doc>-ebelp )
6348 ASSIGNING FIELD-SYMBOL(<lt_group>).
6349
6350* Берем документ с наибольшей датой
6351 LOOP AT GROUP <lt_group> ASSIGNING FIELD-SYMBOL(<ls_group>).
6352 ls_notif = CORRESPONDING #( <ls_group> ).
6353 INSERT ls_notif INTO TABLE et_documents.
6354 EXIT.
6355 ENDLOOP.
6356 ENDLOOP.
6357
6358 ENDMETHOD.
6359
6360
6361* <SIGNATURE>---------------------------------------------------------------------------------------+
6362* | Instance Private Method ZCL_P2PE312_NOTIF_MODEL->GET_MATNR_WERKS
6363* +-------------------------------------------------------------------------------------------------+
6364* | [<---] ET_MATNR_WERKS TYPE MTY_T_MATNR_WERKS
6365* +--------------------------------------------------------------------------------------</SIGNATURE>
6366 METHOD get_matnr_werks.
6367
6368 TYPES: lty_t_matnr_werks TYPE TABLE OF mty_s_matnr_werks WITH EMPTY KEY.
6369
6370 CLEAR et_matnr_werks.
6371
6372 DATA(lt_matnr_werks) =
6373 VALUE lty_t_matnr_werks(
6374 FOR <ls_can> IN mt_cancelation
6375 ( matnr = <ls_can>-matnr
6376 werks = <ls_can>-p_werks )
6377 ).
6378 APPEND LINES OF VALUE lty_t_matnr_werks(
6379 FOR <ls_inq> IN mt_inquiry
6380 ( matnr = <ls_inq>-matnr
6381 werks = <ls_inq>-p_werks )
6382 ) TO lt_matnr_werks.
6383 APPEND LINES OF VALUE lty_t_matnr_werks(
6384 FOR <ls_res> IN mt_reservation
6385 ( matnr = <ls_res>-matnr
6386 werks = <ls_res>-p_werks )
6387 ) TO lt_matnr_werks.
6388 APPEND LINES OF VALUE lty_t_matnr_werks(
6389 FOR <ls_trr> IN mt_req_transf
6390 ( matnr = <ls_trr>-matnr
6391 werks = <ls_trr>-p_werks )
6392 ) TO lt_matnr_werks.
6393
6394 DELETE lt_matnr_werks WHERE matnr IS INITIAL OR
6395 werks IS INITIAL.
6396 SORT lt_matnr_werks BY matnr werks.
6397 DELETE ADJACENT DUPLICATES FROM lt_matnr_werks COMPARING ALL FIELDS.
6398
6399 et_matnr_werks = lt_matnr_werks.
6400
6401 ENDMETHOD.
6402
6403
6404* <SIGNATURE>---------------------------------------------------------------------------------------+
6405* | Instance Public Method ZCL_P2PE312_NOTIF_MODEL->GET_NSORT_TEXT
6406* +-------------------------------------------------------------------------------------------------+
6407* | [--->] IV_NSORT TYPE ZP2PE312_NSORT
6408* | [<-()] RV_NSORT_TXT TYPE ZP2PE312_NSORT_TXT
6409* +--------------------------------------------------------------------------------------</SIGNATURE>
6410 METHOD get_nsort_text.
6411
6412 TRY.
6413 rv_nsort_txt = mt_nsort[ nsort = iv_nsort ]-nsort_txt.
6414 CATCH cx_sy_itab_line_not_found.
6415 ENDTRY.
6416
6417 ENDMETHOD.
6418
6419
6420* <SIGNATURE>---------------------------------------------------------------------------------------+
6421* | Instance Private Method ZCL_P2PE312_NOTIF_MODEL->GET_NSTAT_ATTR
6422* +-------------------------------------------------------------------------------------------------+
6423* | [--->] IV_NSTAT TYPE ZP2PE312_NSTAT
6424* | [<---] EV_NSTAT_TXT TYPE ZP2PE312_NSTAT_TXT
6425* | [<---] EV_NSTAT_ICON TYPE ZP2PE312_NSTAT_ICON
6426* +--------------------------------------------------------------------------------------</SIGNATURE>
6427 METHOD get_nstat_attr.
6428
6429 CASE iv_nstat.
6430* Уведомление исключено для пользователя
6431 WHEN zif_p2pe312_constants=>mcs_nstat-rec_sort_excl OR
6432 zif_p2pe312_constants=>mcs_nstat-user_cus_excl OR
6433 zif_p2pe312_constants=>mcs_nstat-user_doc_excl OR
6434 zif_p2pe312_constants=>mcs_nstat-usersub_cus_excl.
6435 ev_nstat_icon = icon_message_critical_small.
6436* Активно на основании правил по виду получателя
6437 WHEN zif_p2pe312_constants=>mcs_nstat-rec_sort_incl.
6438 ev_nstat_icon = icon_led_yellow.
6439* Уведомление включено для пользователя
6440 WHEN zif_p2pe312_constants=>mcs_nstat-user_cus_incl OR
6441 zif_p2pe312_constants=>mcs_nstat-user_doc_incl OR
6442 zif_p2pe312_constants=>mcs_nstat-usersub_cus_incl.
6443 ev_nstat_icon = icon_led_green.
6444 WHEN OTHERS.
6445* Уведомление не активно, событие не наступило или пользователь не получит на освнове общих правил
6446 ev_nstat_icon = icon_led_inactive.
6447 ENDCASE.
6448
6449 READ TABLE mt_nstat_txt ASSIGNING FIELD-SYMBOL(<ls_nstat>)
6450 WITH KEY domvalue_l = iv_nstat.
6451 IF sy-subrc = 0.
6452 ev_nstat_txt = <ls_nstat>-ddtext.
6453 ENDIF.
6454
6455 ENDMETHOD.
6456
6457
6458* <SIGNATURE>---------------------------------------------------------------------------------------+
6459* | Instance Private Method ZCL_P2PE312_NOTIF_MODEL->GET_ONLINE_DOCS
6460* +-------------------------------------------------------------------------------------------------+
6461* | [--->] IT_REQ_KEYS TYPE MTY_T_DOC_KEY
6462* | [--->] IT_MSEG_KEYS TYPE MTY_T_MSEG
6463* | [--->] IRT_ERDAT TYPE FIP_T_ERDAT_RANGE
6464* +--------------------------------------------------------------------------------------</SIGNATURE>
6465 METHOD get_online_docs.
6466
6467 DATA: lt_pegging_key TYPE mty_t_pegging_key.
6468
6469* Получаем заявки из лога
6470 fetch_req_by_keys(
6471 EXPORTING
6472 it_doc_keys = it_req_keys
6473 IMPORTING
6474 et_requisition = mt_requisition
6475 ).
6476
6477* Добираем к ним данные потребностей
6478 do_pegging_req(
6479 EXPORTING
6480 it_requisition = mt_requisition
6481 IMPORTING
6482 et_res_keys = DATA(lt_res_key)
6483 et_can_keys = DATA(lt_can_key)
6484 et_inq_keys = DATA(lt_inq_key)
6485 et_cancelation_peg = mt_cancelation_peg
6486 et_inquiry_peg = mt_inquiry_peg
6487 et_reservation_peg = mt_reservation_peg
6488 ).
6489
6490* Запускаем поиск доп. потребностей удовлетворенных документами материалов
6491 fetch_req_by_mseg(
6492 EXPORTING
6493 irt_erdat = irt_erdat
6494 it_mseg_keys = it_mseg_keys
6495 IMPORTING
6496 et_cancelation_key = DATA(lt_can_key_mseg)
6497 et_inquiry_key = DATA(lt_inq_key_mseg)
6498 et_reservation_key = DATA(lt_res_key_mseg)
6499 et_requisition_key = DATA(lt_req_key_mseg)
6500 ).
6501
6502 fetch_req_transf_by_keys(
6503 EXPORTING
6504 it_req_transf_key = lt_req_key_mseg
6505 IMPORTING
6506 et_req_transf = mt_req_transf
6507 ).
6508
6509 add_doc_key_table(
6510 EXPORTING
6511 it_doc_key = lt_can_key_mseg
6512 CHANGING
6513 ct_doc_key = lt_can_key
6514 ).
6515 add_doc_key_table(
6516 EXPORTING
6517 it_doc_key = lt_inq_key_mseg
6518 CHANGING
6519 ct_doc_key = lt_inq_key
6520 ).
6521 add_doc_key_table(
6522 EXPORTING
6523 it_doc_key = lt_res_key_mseg
6524 CHANGING
6525 ct_doc_key = lt_res_key
6526 ).
6527
6528 fetch_requirement_documents(
6529 EXPORTING
6530 it_inq_keys = lt_inq_key
6531 it_res_keys = lt_res_key
6532 it_can_keys = lt_can_key
6533 IMPORTING
6534 et_inquiry = mt_inquiry
6535 et_reservation = mt_reservation
6536 et_cancelation = mt_cancelation
6537 ).
6538
6539 ENDMETHOD.
6540
6541
6542* <SIGNATURE>---------------------------------------------------------------------------------------+
6543* | Instance Private Method ZCL_P2PE312_NOTIF_MODEL->GET_PEGGING
6544* +-------------------------------------------------------------------------------------------------+
6545* | [--->] IT_PEGGING_KEY TYPE MTY_T_PEGGING_KEY
6546* | [<---] ET_RESERVATION_KEY TYPE MTY_T_PEGGING
6547* | [<---] ET_INQUIRY_KEY TYPE MTY_T_PEGGING
6548* | [<---] ET_CANCELATION_KEY TYPE MTY_T_PEGGING
6549* | [<---] ET_REQ_TRANSF_KEY TYPE MTY_T_PEGGING
6550* +--------------------------------------------------------------------------------------</SIGNATURE>
6551 METHOD get_pegging.
6552*--------------------------------------------------------------------*
6553* Определение потребностей по завкам
6554*--------------------------------------------------------------------*
6555
6556 DATA: lt_imdrqx TYPE TABLE OF mdrq.
6557
6558 LOOP AT it_pegging_key ASSIGNING FIELD-SYMBOL(<ls_peg_key>).
6559
6560 CLEAR lt_imdrqx.
6561 CALL FUNCTION 'MD_PEGGING_NODIALOG'
6562 EXPORTING
6563 edelkz = <ls_peg_key>-delkz
6564 edelnr = <ls_peg_key>-delnr
6565 edelps = <ls_peg_key>-delps
6566 edelet = <ls_peg_key>-delet
6567 ematnr = <ls_peg_key>-matnr
6568 ewerks = <ls_peg_key>-werks
6569 eberid = <ls_peg_key>-berid
6570 TABLES
6571 imdrqx = lt_imdrqx
6572 EXCEPTIONS
6573 error = 1
6574 no_requirements_found = 2
6575 order_not_found = 3
6576 OTHERS = 4.
6577 IF sy-subrc <> 0.
6578 MESSAGE i013(zp2pe312) INTO DATA(lv_message).
6579 ENDIF.
6580
6581 LOOP AT lt_imdrqx ASSIGNING FIELD-SYMBOL(<ls_imdrqx>).
6582 DATA(ls_pegging) = VALUE mty_s_pegging(
6583 reqnr = <ls_imdrqx>-delnr
6584 reqps = <ls_imdrqx>-delps
6585 reqet = <ls_imdrqx>-delet
6586 delkz = <ls_peg_key>-delkz
6587 delnr = <ls_peg_key>-delnr
6588 delps = <ls_peg_key>-delps
6589 delet = <ls_peg_key>-delet
6590 ).
6591 CASE <ls_imdrqx>-delkz.
6592 WHEN if_pph_mrp_constants=>gc_delkz_arbed. " dependent reservation
6593 INSERT ls_pegging INTO TABLE et_reservation_key.
6594 WHEN if_pph_mrp_constants=>gc_delkz_vbeda OR " customer inquiry
6595 if_pph_mrp_constants=>gc_delkz_vbedc. " sales order
6596 INSERT ls_pegging INTO TABLE et_inquiry_key.
6597 WHEN if_pph_mrp_constants=>gc_delkz_uaabr. " release for purchase requisition
6598 INSERT ls_pegging INTO TABLE et_cancelation_key.
6599 WHEN if_pph_mrp_constants=>gc_delkz_bsanf. " purchase requisition
6600 INSERT ls_pegging INTO TABLE et_req_transf_key.
6601 ENDCASE.
6602 CLEAR ls_pegging.
6603 ENDLOOP.
6604
6605 ENDLOOP.
6606
6607 ENDMETHOD.
6608
6609
6610* <SIGNATURE>---------------------------------------------------------------------------------------+
6611* | Instance Private Method ZCL_P2PE312_NOTIF_MODEL->GET_PEGGING_INQ_MANUAL
6612* +-------------------------------------------------------------------------------------------------+
6613* | [--->] IT_REQUISITION TYPE MTY_T_REQUISITION
6614* | [<---] ET_INQUIRY_KEY TYPE MTY_T_PEGGING
6615* | [<---] ET_MATNR_WERKS TYPE MTY_T_MATNR_WERKS
6616* +--------------------------------------------------------------------------------------</SIGNATURE>
6617 METHOD get_pegging_inq_manual.
6618
6619 TYPES:
6620 BEGIN OF lty_s_purch,
6621 bstnk TYPE vbak-bstnk,
6622 posex TYPE vbap-posex,
6623 END OF lty_s_purch,
6624 lty_t_purch TYPE SORTED TABLE OF lty_s_purch WITH UNIQUE KEY bstnk posex,
6625
6626 BEGIN OF lty_s_vbap,
6627 bstnk TYPE vbak-bstnk,
6628 posex TYPE vbap-posex,
6629 vbeln TYPE vbak-vbeln,
6630 posnr TYPE vbap-posnr,
6631 etenr TYPE vbep-etenr,
6632 matnr TYPE vbap-matnr,
6633 werks TYPE vbap-werks,
6634 END OF lty_s_vbap,
6635 lty_t_vbap TYPE SORTED TABLE OF lty_s_vbap WITH NON-UNIQUE KEY bstnk posex.
6636
6637 DATA: lt_vbap TYPE lty_t_vbap.
6638
6639 CLEAR: et_inquiry_key, et_matnr_werks.
6640
6641 DATA(lt_purch) =
6642 VALUE lty_t_purch(
6643 FOR GROUPS ls_group OF <ls_req_gr> IN it_requisition
6644 WHERE ( ebeln IS NOT INITIAL AND
6645 ebelp IS NOT INITIAL )
6646 GROUP BY ( ebeln = <ls_req_gr>-ebeln
6647 ebelp = <ls_req_gr>-ebelp )
6648 WITHOUT MEMBERS
6649 ( bstnk = ls_group-ebeln
6650 posex = ls_group-ebelp )
6651 ).
6652
6653 IF lt_purch IS NOT INITIAL.
6654 SELECT vbak~bstnk, vbap~posex,
6655 vbap~vbeln, vbap~posnr,
6656 vbep~etenr,
6657 vbap~matnr, vbap~werks
6658 FROM vbak
6659 JOIN vbap ON vbap~vbeln = vbak~vbeln
6660 JOIN vbep ON vbep~vbeln = vbap~vbeln
6661 AND vbep~posnr = vbap~posnr
6662 FOR ALL ENTRIES IN @lt_purch
6663 WHERE vbak~bstnk = @lt_purch-bstnk
6664 AND vbap~posex = @lt_purch-posex
6665 INTO TABLE @lt_vbap.
6666 ENDIF.
6667
6668 et_matnr_werks = VALUE mty_t_matnr_werks(
6669 FOR GROUPS ls_group_mw OF <ls_vbap_gr> IN lt_vbap
6670 WHERE ( matnr IS NOT INITIAL AND
6671 werks IS NOT INITIAL )
6672 GROUP BY ( matnr = <ls_vbap_gr>-matnr
6673 werks = <ls_vbap_gr>-werks )
6674 WITHOUT MEMBERS
6675 ( matnr = ls_group_mw-matnr
6676 werks = ls_group_mw-werks )
6677 ).
6678
6679 LOOP AT it_requisition ASSIGNING FIELD-SYMBOL(<ls_requisition>) WHERE ebeln IS NOT INITIAL AND
6680 ebelp IS NOT INITIAL.
6681 LOOP AT lt_vbap ASSIGNING FIELD-SYMBOL(<ls_vbap>) WHERE bstnk = <ls_requisition>-ebeln
6682 AND posex = <ls_requisition>-ebelp.
6683 DATA(ls_pegging) = VALUE mty_s_pegging(
6684 reqnr = <ls_vbap>-vbeln
6685 reqps = <ls_vbap>-posnr
6686 reqet = <ls_vbap>-etenr
6687 delkz = if_pph_mrp_constants=>gc_delkz_bsanf
6688 delnr = <ls_requisition>-banfn
6689 delps = <ls_requisition>-bnfpo
6690 ).
6691 INSERT ls_pegging INTO TABLE et_inquiry_key.
6692 ENDLOOP.
6693
6694 ENDLOOP.
6695
6696 ENDMETHOD.
6697
6698
6699* <SIGNATURE>---------------------------------------------------------------------------------------+
6700* | Instance Private Method ZCL_P2PE312_NOTIF_MODEL->GET_PEGGING_PLAN_ORDER
6701* +-------------------------------------------------------------------------------------------------+
6702* | [--->] IT_PEGGING_KEY TYPE MTY_T_PEGGING_KEY
6703* | [<---] ET_PEGGING_PLAN_ORDER TYPE MTY_T_PEGGING_PLAN_ORDER
6704* +--------------------------------------------------------------------------------------</SIGNATURE>
6705 METHOD get_pegging_plan_order.
6706*--------------------------------------------------------------------*
6707* Поиск потребностей по плановым заказам
6708*--------------------------------------------------------------------*
6709
6710 DATA: lt_imdrqx TYPE TABLE OF mdrq.
6711
6712 CLEAR : et_pegging_plan_order.
6713
6714 IF it_pegging_key IS INITIAL.
6715 RETURN.
6716 ENDIF.
6717
6718 LOOP AT it_pegging_key ASSIGNING FIELD-SYMBOL(<ls_peg_key>).
6719
6720 CLEAR lt_imdrqx.
6721 CALL FUNCTION 'MD_PEGGING_NODIALOG'
6722 EXPORTING
6723 edelkz = if_pph_mrp_constants=>gc_delkz_plauf " planned order
6724 ematnr = <ls_peg_key>-matnr
6725 ewerks = <ls_peg_key>-werks
6726 edelnr = <ls_peg_key>-delnr
6727 TABLES
6728 imdrqx = lt_imdrqx
6729 EXCEPTIONS
6730 error = 1
6731 no_requirements_found = 2
6732 order_not_found = 3
6733 OTHERS = 4.
6734 IF sy-subrc <> 0.
6735 MESSAGE i013(zp2pe312) INTO DATA(lv_message).
6736 ENDIF.
6737
6738 LOOP AT lt_imdrqx ASSIGNING FIELD-SYMBOL(<ls_imdrqx>).
6739 DATA(ls_pegging) = VALUE mty_s_pegging_plan_order(
6740 doc_num = <ls_imdrqx>-delnr
6741 doc_pos = <ls_imdrqx>-delps
6742 doc_sch = <ls_imdrqx>-delet
6743 plnum = <ls_peg_key>-delnr
6744 matnr = <ls_peg_key>-matnr
6745 werks = <ls_peg_key>-werks
6746 ).
6747 CASE <ls_imdrqx>-delkz.
6748 WHEN if_pph_mrp_constants=>gc_delkz_arbed. " dependent reservation
6749 ls_pegging-doc_type = zif_p2pe312_constants=>mcs_doc_type-ps.
6750 WHEN if_pph_mrp_constants=>gc_delkz_vbeda OR " customer inquiry
6751 if_pph_mrp_constants=>gc_delkz_vbedc. " sales order
6752 ls_pegging-doc_type = zif_p2pe312_constants=>mcs_doc_type-sd.
6753 WHEN if_pph_mrp_constants=>gc_delkz_uaabr. " release for purchase requisition
6754 ls_pegging-doc_type = zif_p2pe312_constants=>mcs_doc_type-mm.
6755 WHEN if_pph_mrp_constants=>gc_delkz_bsanf. " purchase requisition
6756 ls_pegging-doc_type = zif_p2pe312_constants=>mcs_doc_type-pr.
6757 ENDCASE.
6758 IF ls_pegging-doc_type IS NOT INITIAL.
6759 INSERT ls_pegging INTO TABLE et_pegging_plan_order.
6760 ENDIF.
6761 ENDLOOP.
6762
6763 ENDLOOP.
6764
6765 ENDMETHOD.
6766
6767
6768* <SIGNATURE>---------------------------------------------------------------------------------------+
6769* | Instance Private Method ZCL_P2PE312_NOTIF_MODEL->GET_PEGGING_REQUIREMENTS
6770* +-------------------------------------------------------------------------------------------------+
6771* | [--->] IM_MATNR TYPE MATNR
6772* | [--->] IM_WERKS TYPE WERKS_D
6773* | [--->] IM_BERID TYPE BERID
6774* | [<---] EX_T_IMDRQX TYPE MTY_T_MDRQX
6775* +--------------------------------------------------------------------------------------</SIGNATURE>
6776METHOD get_pegging_requirements.
6777
6778 DATA
6779 : lt_imdrqx TYPE mty_t_mdrqx
6780 , lv_message TYPE string
6781 .
6782
6783 CLEAR ex_t_imdrqx.
6784
6785 CALL FUNCTION 'MD_PEGGING_NODIALOG'
6786 EXPORTING
6787 edelkz = if_pph_mrp_constants=>gc_delkz_wkbst " plant stock
6788 ematnr = im_matnr
6789 ewerks = im_werks
6790 edelnr = VALUE del12( )
6791 eplaab = if_pph_mrp_constants=>gc_plaab_netpla " net requirements segment
6792 eberid = im_berid
6793 TABLES
6794 imdrqx = lt_imdrqx
6795 EXCEPTIONS
6796 error = 1
6797 no_requirements_found = 2
6798 order_not_found = 3
6799 OTHERS = 4.
6800 IF sy-subrc <> 0.
6801 MESSAGE i013(zp2pe312) INTO lv_message.
6802 ENDIF.
6803
6804 APPEND LINES OF lt_imdrqx TO ex_t_imdrqx.
6805
6806 CLEAR lt_imdrqx.
6807
6808 CALL FUNCTION 'MD_PEGGING_NODIALOG'
6809 EXPORTING
6810 edelkz = if_pph_mrp_constants=>gc_delkz_arbed " dependent reservation
6811 ematnr = im_matnr
6812 ewerks = im_werks
6813 edelnr = VALUE del12( )
6814 eplaab = if_pph_mrp_constants=>gc_plaab_propla " individual project segment
6815 eberid = im_berid
6816 TABLES
6817 imdrqx = lt_imdrqx
6818 EXCEPTIONS
6819 error = 1
6820 no_requirements_found = 2
6821 order_not_found = 3
6822 OTHERS = 4.
6823 IF sy-subrc <> 0.
6824 MESSAGE i013(zp2pe312) INTO lv_message.
6825 ENDIF.
6826
6827 APPEND LINES OF lt_imdrqx TO ex_t_imdrqx.
6828
6829ENDMETHOD.
6830
6831
6832* <SIGNATURE>---------------------------------------------------------------------------------------+
6833* | Instance Private Method ZCL_P2PE312_NOTIF_MODEL->GET_PEGGING_STOCK
6834* +-------------------------------------------------------------------------------------------------+
6835* | [--->] IT_PEGGING_KEY TYPE MTY_T_PEGGING_STOCK_KEY
6836* | [<---] ET_PEGGING_STOCK TYPE MTY_T_PEGGING_STOCK
6837* +--------------------------------------------------------------------------------------</SIGNATURE>
6838 METHOD get_pegging_stock.
6839*--------------------------------------------------------------------*
6840* Поиск потребностей по поступлениям материал - завод
6841*--------------------------------------------------------------------*
6842*{ REPLACE 3100012236
6843* DATA: lt_imdrqx TYPE TABLE OF mdrq.
6844 DATA: lt_imdrqx TYPE mty_t_mdrqx.
6845*} REPLACE 3100012236
6846 CLEAR : et_pegging_stock.
6847
6848 IF it_pegging_key IS INITIAL.
6849 RETURN.
6850 ENDIF.
6851
6852 LOOP AT it_pegging_key ASSIGNING FIELD-SYMBOL(<ls_peg_key>).
6853
6854 CLEAR lt_imdrqx.
6855*{ REPLACE 3100012236
6856* CALL FUNCTION 'MD_PEGGING_NODIALOG'
6857* EXPORTING
6858* edelkz = if_pph_mrp_constants=>gc_delkz_wkbst " plant stock
6859* ematnr = <ls_peg_key>-matnr
6860* ewerks = <ls_peg_key>-werks
6861* edelnr = VALUE del12( )
6862* eplaab = if_pph_mrp_constants=>gc_plaab_netpla
6863* eberid = <ls_peg_key>-berid
6864* TABLES
6865* imdrqx = lt_imdrqx
6866* EXCEPTIONS
6867* error = 1
6868* no_requirements_found = 2
6869* order_not_found = 3
6870* OTHERS = 4.
6871* IF sy-subrc <> 0.
6872* MESSAGE i013(zp2pe312) INTO DATA(lv_message).
6873* ENDIF.
6874 get_pegging_requirements(
6875 EXPORTING
6876 im_matnr = <ls_peg_key>-matnr " Номер материала
6877 im_werks = <ls_peg_key>-werks " Завод
6878 im_berid = <ls_peg_key>-berid " Область планирования потребности
6879 IMPORTING
6880 ex_t_imdrqx = lt_imdrqx " Таблица - Исходные потребности для источника потребности
6881 ).
6882*} REPLACE 3100012236
6883
6884 LOOP AT lt_imdrqx ASSIGNING FIELD-SYMBOL(<ls_imdrqx>).
6885 DATA(ls_pegging) = VALUE mty_s_pegging_stock(
6886 doc_num = <ls_imdrqx>-delnr
6887 doc_pos = <ls_imdrqx>-delps
6888 doc_sch = <ls_imdrqx>-delet
6889 matnr = <ls_peg_key>-matnr
6890 werks = <ls_peg_key>-werks
6891 berid = <ls_peg_key>-berid
6892 mng01 = <ls_imdrqx>-mng01
6893 mng02 = <ls_imdrqx>-mng02
6894 baart = <ls_imdrqx>-baart
6895 ).
6896 CASE <ls_imdrqx>-delkz.
6897 WHEN if_pph_mrp_constants=>gc_delkz_arbed. " dependent reservation
6898 ls_pegging-doc_type = zif_p2pe312_constants=>mcs_doc_type-ps.
6899 WHEN if_pph_mrp_constants=>gc_delkz_vbeda OR " customer inquiry
6900 if_pph_mrp_constants=>gc_delkz_vbedc. " sales order
6901 ls_pegging-doc_type = zif_p2pe312_constants=>mcs_doc_type-sd.
6902 WHEN if_pph_mrp_constants=>gc_delkz_uaabr. " release for purchase requisition
6903 ls_pegging-doc_type = zif_p2pe312_constants=>mcs_doc_type-mm.
6904 WHEN if_pph_mrp_constants=>gc_delkz_bsanf. " purchase requisition
6905 ls_pegging-doc_type = zif_p2pe312_constants=>mcs_doc_type-pr.
6906 ENDCASE.
6907 IF ls_pegging-doc_type IS NOT INITIAL.
6908 INSERT ls_pegging INTO TABLE et_pegging_stock.
6909 ENDIF.
6910 ENDLOOP.
6911
6912 ENDLOOP.
6913
6914 ENDMETHOD.
6915
6916
6917* <SIGNATURE>---------------------------------------------------------------------------------------+
6918* | Instance Private Method ZCL_P2PE312_NOTIF_MODEL->GET_RECIPIENTS
6919* +-------------------------------------------------------------------------------------------------+
6920* | [--->] IRT_USERS TYPE ZIP2PE312_USER_RANGE
6921* | [--->] IV_SEND_DATE_CHECK TYPE CHAR1
6922* | [<---] ET_RECIPIENTS TYPE ZIP2PE312_RECIPIENT
6923* +--------------------------------------------------------------------------------------</SIGNATURE>
6924 METHOD get_recipients.
6925
6926 DATA: lt_orgdoc TYPE zip2pe312_orgdoc,
6927 ls_orgdoc TYPE zsp2pe312_orgdoc,
6928 lt_notif_sys TYPE zip2pe312_notif_sys,
6929 lv_cus_only TYPE boolean.
6930
6931 LOOP AT mt_alv ASSIGNING FIELD-SYMBOL(<ls_alv>).
6932 CLEAR ls_orgdoc.
6933* Копируем ключ ALV
6934 ls_orgdoc-row_num = <ls_alv>-row_num.
6935
6936* Заполнение уведомлений, по которым будет производится поиск настроек по документу
6937 IF mv_mode = zif_p2pe312_constants=>mcs_send_mode-online.
6938* При отправке онлайн список уведомлений берем из лога (1,3, 10 уведомления)
6939 LOOP AT mt_sndlog ASSIGNING FIELD-SYMBOL(<ls_sndlog>)
6940 WHERE obj_type = zif_p2pe312_constants=>mcs_obj_type-pur_req
6941 AND doc_num = <ls_alv>-pbanfn
6942 AND doc_pos = <ls_alv>-pbnfpo.
6943 INSERT <ls_sndlog>-nsort INTO TABLE ls_orgdoc-nsort_tab.
6944 ENDLOOP.
6945
6946* 9-ое уведомление - отправка для строк, где выставлен индиктатор наступления события
6947 IF <ls_alv>-event_flag_09 = abap_true.
6948 INSERT zif_p2pe312_constants=>mcs_nsort-n09 INTO TABLE ls_orgdoc-nsort_tab.
6949 ENDIF.
6950* 7-ое уведомление - отправка для строк, где выставлен индиктатор наступления события
6951 IF <ls_alv>-event_flag_07 = abap_true.
6952 INSERT zif_p2pe312_constants=>mcs_nsort-n07 INTO TABLE ls_orgdoc-nsort_tab.
6953 ENDIF.
6954 ELSE.
6955 LOOP AT mt_nsort ASSIGNING FIELD-SYMBOL(<ls_nsort>).
6956 ASSIGN COMPONENT 'EVENT_FLAG_' && <ls_nsort>-nsort
6957 OF STRUCTURE <ls_alv> TO FIELD-SYMBOL(<lv_value>).
6958 IF <lv_value> IS ASSIGNED.
6959 IF <lv_value> = abap_true.
6960 INSERT <ls_nsort>-nsort INTO TABLE ls_orgdoc-nsort_tab.
6961 ENDIF.
6962 UNASSIGN <lv_value>.
6963 ENDIF.
6964 ENDLOOP.
6965 ENDIF.
6966
6967 IF ls_orgdoc-nsort_tab IS NOT INITIAL.
6968 INSERT ls_orgdoc INTO TABLE lt_orgdoc.
6969 APPEND <ls_alv> TO lt_notif_sys.
6970 ENDIF.
6971 ENDLOOP.
6972
6973 IF ms_sel-rb_mat = abap_true.
6974 lv_cus_only = abap_true.
6975 ELSE.
6976 lv_cus_only = abap_false.
6977 ENDIF.
6978
6979* Получаем данные по пользователю запустившему отчет
6980 DATA(lr_rec) =
6981 NEW zcl_p2pe312_sel_recipients(
6982 it_notif_sys = lt_notif_sys
6983 it_orgdoc = lt_orgdoc
6984 irt_users = irt_users
6985 iv_mode = mv_mode
6986 iv_sel_deputy = abap_true
6987 iv_cus_only = lv_cus_only
6988 ).
6989
6990 lr_rec->sender_sel(
6991 EXPORTING
6992 iv_send_date_check = iv_send_date_check
6993 IMPORTING
6994 et_recipient = et_recipients
6995 ).
6996
6997 ENDMETHOD.
6998
6999
7000* <SIGNATURE>---------------------------------------------------------------------------------------+
7001* | Instance Private Method ZCL_P2PE312_NOTIF_MODEL->GET_REQ_BY_INQ
7002* +-------------------------------------------------------------------------------------------------+
7003* | [--->] IT_INQUIRY TYPE MTY_T_INQUIRY
7004* | [<---] ET_INQ_REQ TYPE MTY_T_PEGGING
7005* | [<---] ET_REQUISITION TYPE MTY_T_REQUISITION
7006* +--------------------------------------------------------------------------------------</SIGNATURE>
7007 METHOD get_req_by_inq.
7008* Поиск заявок по потребностям
7009
7010 TYPES:
7011 BEGIN OF lty_s_purch,
7012 ebeln TYPE eket-ebeln,
7013 ebelp TYPE eket-ebelp,
7014 banfn TYPE eket-banfn,
7015 bnfpo TYPE eket-bnfpo,
7016 matnr TYPE matnr,
7017 werks TYPE werks_d,
7018 lgort_berid TYPE berid,
7019 werks_berid TYPE berid,
7020 END OF lty_s_purch,
7021 lty_t_purch TYPE SORTED TABLE OF lty_s_purch WITH NON-UNIQUE KEY ebeln ebelp.
7022
7023 CLEAR: et_inq_req, et_requisition.
7024
7025 DATA(lt_purch) =
7026 VALUE lty_t_purch(
7027 FOR GROUPS ls_group OF <ls_inq_gr> IN it_inquiry
7028 WHERE ( bstnk IS NOT INITIAL AND
7029 posex IS NOT INITIAL )
7030 GROUP BY ( bstnk = <ls_inq_gr>-bstnk
7031 posex = <ls_inq_gr>-posex )
7032 WITHOUT MEMBERS
7033 ( ebeln = ls_group-bstnk
7034 ebelp = ls_group-posex )
7035 ).
7036
7037 IF lt_purch IS INITIAL.
7038 RETURN.
7039 ENDIF.
7040
7041 SELECT eket~ebeln, eket~ebelp,
7042 eket~banfn, eket~bnfpo,
7043 eban~matnr, eban~werks,
7044 mdlg~berid AS lgort_berid,
7045 mdlw~berid AS werks_berid
7046 FROM eket
7047 JOIN eban ON eban~banfn = eket~banfn
7048 AND eban~bnfpo = eket~bnfpo
7049 LEFT JOIN mdlg ON mdlg~werks = eban~werks
7050 AND mdlg~lgort = eban~lgort
7051 LEFT JOIN mdlw ON mdlw~werks = eban~werks
7052 FOR ALL ENTRIES IN @lt_purch
7053 WHERE eket~ebeln = @lt_purch-ebeln
7054 AND eket~ebelp = @lt_purch-ebelp
7055 INTO TABLE @lt_purch.
7056
7057 DATA(lt_doc_keys) = VALUE mty_t_doc_key(
7058 FOR GROUPS ls_group_req OF <ls_req_gr> IN lt_purch
7059 WHERE ( banfn IS NOT INITIAL AND
7060 bnfpo IS NOT INITIAL )
7061 GROUP BY ( banfn = <ls_req_gr>-banfn
7062 bnfpo = <ls_req_gr>-bnfpo )
7063 WITHOUT MEMBERS
7064 ( doc_num = ls_group_req-banfn
7065 doc_pos = ls_group_req-bnfpo )
7066 ).
7067
7068 fetch_req_by_keys(
7069 EXPORTING
7070 it_doc_keys = lt_doc_keys
7071 IMPORTING
7072 et_requisition = et_requisition
7073 ).
7074
7075 LOOP AT it_inquiry ASSIGNING FIELD-SYMBOL(<ls_inq>).
7076 LOOP AT lt_purch ASSIGNING FIELD-SYMBOL(<ls_purch>) WHERE ebeln = <ls_inq>-bstnk
7077 AND ebelp = <ls_inq>-posex.
7078 DATA(ls_pegging) = VALUE mty_s_pegging(
7079 reqnr = <ls_inq>-vbeln
7080 reqps = <ls_inq>-posnr
7081 reqet = <ls_inq>-etenr
7082 delkz = if_pph_mrp_constants=>gc_delkz_vbeda
7083 delnr = <ls_purch>-banfn
7084 delps = <ls_purch>-bnfpo
7085 ).
7086 INSERT ls_pegging INTO TABLE et_inq_req.
7087 ENDLOOP.
7088 ENDLOOP.
7089
7090 ENDMETHOD.
7091
7092
7093* <SIGNATURE>---------------------------------------------------------------------------------------+
7094* | Instance Public Method ZCL_P2PE312_NOTIF_MODEL->GET_SELECTIONS_DOC_KEY
7095* +-------------------------------------------------------------------------------------------------+
7096* | [--->] IV_NSORT TYPE ZP2PE312_NSORT
7097* | [<---] ET_DOC_KEY TYPE ZIP2PE312_DOC_KEY
7098* | [<---] ET_DOC_KEY_EXCLUDE TYPE ZIP2PE312_DOC_KEY_EXCLUDE
7099* +--------------------------------------------------------------------------------------</SIGNATURE>
7100 METHOD get_selections_doc_key.
7101*-----------------------------------------------------------------------*
7102* Получаем данные о выбранных документах по уведомлению
7103*-----------------------------------------------------------------------*
7104
7105 CLEAR: et_doc_key, et_doc_key_exclude.
7106
7107 LOOP AT mt_alv ASSIGNING FIELD-SYMBOL(<ls_alv>).
7108 ASSIGN COMPONENT 'SELECT_CB_' && iv_nsort OF STRUCTURE <ls_alv> TO FIELD-SYMBOL(<lv_sel>).
7109 IF <lv_sel> IS ASSIGNED.
7110 IF <lv_sel> = abap_true.
7111 INSERT VALUE zsp2pe312_doc_key(
7112 doc_type = <ls_alv>-doc_type
7113 doc_sort = <ls_alv>-doc_sort
7114 doc_num = <ls_alv>-doc_num
7115 doc_pos = <ls_alv>-doc_pos
7116 ) INTO TABLE et_doc_key.
7117 ENDIF.
7118 UNASSIGN <lv_sel>.
7119 ENDIF.
7120 ENDLOOP.
7121
7122 IF et_doc_key IS NOT INITIAL AND mv_user IS NOT INITIAL.
7123 SELECT ZTP2PE312_CUSDOC~*,
7124 ztp2pe312_ncust~is_exclude
7125 FROM ztp2pe312_cusdoc
7126 JOIN ztp2pe312_ncust ON ztp2pe312_ncust~cusnum = ztp2pe312_cusdoc~cusnum
7127 FOR ALL ENTRIES IN @et_doc_key
7128 WHERE ztp2pe312_cusdoc~doc_type = @et_doc_key-doc_type
7129 AND ztp2pe312_cusdoc~doc_sort = @et_doc_key-doc_sort
7130 AND ztp2pe312_cusdoc~doc_num = @et_doc_key-doc_num
7131 AND ztp2pe312_cusdoc~doc_pos = @et_doc_key-doc_pos
7132 AND ztp2pe312_ncust~nsort = @iv_nsort
7133 AND ztp2pe312_ncust~rec_type = @zif_p2pe312_constants=>mcs_rec_type-user_doc
7134 AND ztp2pe312_ncust~username = @mv_user
7135 INTO CORRESPONDING FIELDS OF TABLE @et_doc_key_exclude.
7136 ENDIF.
7137
7138 ENDMETHOD.
7139
7140
7141* <SIGNATURE>---------------------------------------------------------------------------------------+
7142* | Instance Public Method ZCL_P2PE312_NOTIF_MODEL->GET_SELECTIONS_NSORT
7143* +-------------------------------------------------------------------------------------------------+
7144* | [<---] ET_NSORT TYPE ZIP2PE312_NSORT_TAB
7145* +--------------------------------------------------------------------------------------</SIGNATURE>
7146 METHOD GET_SELECTIONS_NSORT.
7147*-----------------------------------------------------------------------*
7148* Получаем данные о выбранных на текущий момент уведомлениях
7149*-----------------------------------------------------------------------*
7150
7151 CLEAR: et_nsort.
7152
7153 LOOP AT mt_alv ASSIGNING FIELD-SYMBOL(<ls_alv>).
7154 LOOP AT mt_nsort ASSIGNING FIELD-SYMBOL(<ls_nsort>).
7155 ASSIGN COMPONENT 'SELECT_CB_' && <ls_nsort>-nsort OF STRUCTURE <ls_alv> TO FIELD-SYMBOL(<lv_sel>).
7156 IF <lv_sel> IS ASSIGNED.
7157 IF <lv_sel> = abap_true.
7158 INSERT <ls_nsort>-nsort INTO TABLE et_nsort.
7159 ENDIF.
7160 UNASSIGN <lv_sel>.
7161 ENDIF.
7162 ENDLOOP.
7163 ENDLOOP.
7164
7165 ENDMETHOD.
7166
7167
7168* <SIGNATURE>---------------------------------------------------------------------------------------+
7169* | Instance Public Method ZCL_P2PE312_NOTIF_MODEL->GET_TITLE
7170* +-------------------------------------------------------------------------------------------------+
7171* | [<-()] RV_TITLE TYPE LVC_TITLE
7172* +--------------------------------------------------------------------------------------</SIGNATURE>
7173 method GET_TITLE.
7174*--------------------------------------------------------------------*
7175* Формируем заголовок для ALV таблицы
7176*--------------------------------------------------------------------*
7177
7178 IF mv_user IS NOT INITIAL.
7179* Система уведомлений. Пользователь - имя пользователя.
7180 rv_title = |{ text-000 } { mv_user } - { mv_user_txt } |.
7181 ELSE.
7182* Система уведомлений. Отправка всем пользователям.
7183 rv_title = |{ text-004 }|.
7184 ENDIF.
7185
7186 endmethod.
7187
7188
7189* <SIGNATURE>---------------------------------------------------------------------------------------+
7190* | Instance Public Method ZCL_P2PE312_NOTIF_MODEL->GET_USER
7191* +-------------------------------------------------------------------------------------------------+
7192* | [<---] EV_USER TYPE XUBNAME
7193* +--------------------------------------------------------------------------------------</SIGNATURE>
7194 METHOD get_user.
7195
7196 CLEAR ev_user.
7197 ev_user = mv_user.
7198
7199 ENDMETHOD.
7200
7201
7202* <SIGNATURE>---------------------------------------------------------------------------------------+
7203* | Instance Public Method ZCL_P2PE312_NOTIF_MODEL->GET_USER_NOTIF_AUTHORITY
7204* +-------------------------------------------------------------------------------------------------+
7205* | [<-()] RT_NSORT TYPE ZIP2PE312_NSORT
7206* +--------------------------------------------------------------------------------------</SIGNATURE>
7207 METHOD get_user_notif_authority.
7208
7209 DATA: ls_cus_key TYPE ztp2pe312_ncust.
7210
7211 ls_cus_key-rec_type = zif_p2pe312_constants=>mcs_rec_type-user_doc.
7212
7213 LOOP AT mt_nsort ASSIGNING FIELD-SYMBOL(<ls_nsort>).
7214 IF <ls_nsort>-nsort <> zif_p2pe312_constants=>mcs_nsort-n08.
7215 TRY.
7216 ls_cus_key-nsort = <ls_nsort>-nsort.
7217
7218 IF <ls_nsort>-nobligatory = abap_true.
7219 TRY.
7220 zcl_p2pe312_authority=>check_custom(
7221 EXPORTING
7222 is_cus_key = ls_cus_key
7223 iv_cust_oblig = zif_p2pe312_constants=>mcs_cust_oblig-exclude
7224 ).
7225 INSERT <ls_nsort> INTO TABLE rt_nsort.
7226 CATCH zcx_p2pe312_authority.
7227 TRY.
7228 zcl_p2pe312_authority=>check_custom(
7229 EXPORTING
7230 is_cus_key = ls_cus_key
7231 iv_cust_oblig = zif_p2pe312_constants=>mcs_cust_oblig-include
7232 ).
7233 INSERT <ls_nsort> INTO TABLE rt_nsort.
7234 CATCH zcx_p2pe312_authority.
7235 ENDTRY.
7236 ENDTRY.
7237 ELSE.
7238 TRY.
7239 zcl_p2pe312_authority=>check_custom(
7240 EXPORTING
7241 is_cus_key = ls_cus_key
7242 ).
7243 INSERT <ls_nsort> INTO TABLE rt_nsort.
7244 CATCH zcx_p2pe312_authority.
7245 ENDTRY.
7246 ENDIF.
7247 ENDTRY.
7248 ENDIF.
7249 ENDLOOP.
7250
7251 ENDMETHOD.
7252
7253
7254* <SIGNATURE>---------------------------------------------------------------------------------------+
7255* | Instance Public Method ZCL_P2PE312_NOTIF_MODEL->GET_VIEW_MODE
7256* +-------------------------------------------------------------------------------------------------+
7257* | [<-()] RV_MODE TYPE CHAR1
7258* +--------------------------------------------------------------------------------------</SIGNATURE>
7259 METHOD get_view_mode.
7260
7261 IF mv_user IS NOT INITIAL.
7262 rv_mode = zcl_p2pe312_notif_view=>mcs_view_mode-single.
7263 ELSE.
7264 rv_mode = zcl_p2pe312_notif_view=>mcs_view_mode-multiple.
7265 ENDIF.
7266
7267 ENDMETHOD.
7268
7269
7270* <SIGNATURE>---------------------------------------------------------------------------------------+
7271* | Instance Private Method ZCL_P2PE312_NOTIF_MODEL->MOVE_REQ_TO_ALV
7272* +-------------------------------------------------------------------------------------------------+
7273* | [--->] IS_REQUISITION TYPE MTY_S_REQUISITION
7274* | [<-->] CS_ALV TYPE ZSP2PE312_NOTIF_SYS_ALV
7275* +--------------------------------------------------------------------------------------</SIGNATURE>
7276 METHOD move_req_to_alv.
7277*--------------------------------------------------------------------*
7278* Перенос данных заявок в ALV
7279*--------------------------------------------------------------------*
7280
7281 cs_alv-pbanfn = is_requisition-banfn.
7282 cs_alv-pbnfpo = is_requisition-bnfpo.
7283 cs_alv-lfdat = is_requisition-lfdat.
7284 cs_alv-blckt = is_requisition-blckt.
7285 cs_alv-frgdt = is_requisition-frgdt.
7286 IF is_requisition-bwtar IS NOT INITIAL.
7287 cs_alv-bwtar = is_requisition-bwtar.
7288 ENDIF.
7289 IF is_requisition-p_werks IS NOT INITIAL.
7290 cs_alv-pwerks = is_requisition-p_werks.
7291 ENDIF.
7292 cs_alv-bsart = is_requisition-bsart.
7293 cs_alv-ebeln = is_requisition-ebeln.
7294 cs_alv-ebelp = is_requisition-ebelp.
7295 cs_alv-etenr = is_requisition-etenr.
7296 cs_alv-bedat = is_requisition-bedat.
7297 cs_alv-pernam = is_requisition-poernam.
7298 cs_alv-eindt = is_requisition-eindt.
7299
7300 cs_alv-psobsl = is_requisition-p_sobsl.
7301 cs_alv-pberid = is_requisition-p_berid.
7302 cs_alv-pdismm = is_requisition-p_dismm.
7303
7304 cs_alv-plgort = is_requisition-lgort.
7305 cs_alv-pmeins = is_requisition-pmeins.
7306 cs_alv-pmenge = is_requisition-pmenge.
7307
7308 cs_alv-zotfo = is_requisition-zotfo.
7309 cs_alv-zotfo_txt = is_requisition-zotfo_name.
7310 cs_alv-zspkt = is_requisition-zspkt.
7311 cs_alv-zspkt_txt = is_requisition-zspkt_name.
7312 cs_alv-zotbo = is_requisition-zotbo.
7313 cs_alv-zotbo_name = is_requisition-zotbo_name.
7314 cs_alv-zmnbo = is_requisition-zmnbo.
7315 cs_alv-zmnbo_name = is_requisition-zmnbo_name.
7316 cs_alv-zmnfo = is_requisition-zmnfo.
7317 cs_alv-zmnfo_name = is_requisition-zmnfo_name.
7318 cs_alv-zmnfo_copy = cs_alv-zmnfo.
7319 cs_alv-zotfo_copy = cs_alv-zotfo.
7320 cs_alv-pernam_txt = is_requisition-poernam_txt.
7321
7322 cs_alv-infnr = is_requisition-infnr.
7323 cs_alv-konnr = is_requisition-konnr.
7324 IF cs_alv-infnr IS NOT INITIAL OR
7325 cs_alv-konnr IS NOT INITIAL.
7326 cs_alv-sos_exist = zif_p2pe312_constants=>mcs_sos_exist-yes.
7327 ELSE.
7328 cs_alv-sos_exist = zif_p2pe312_constants=>mcs_sos_exist-no.
7329 ENDIF.
7330 cs_alv-zlist = is_requisition-zlist.
7331
7332 IF is_requisition-bukrs IS NOT INITIAL.
7333 cs_alv-bukrs = is_requisition-bukrs.
7334 ENDIF.
7335
7336 ENDMETHOD.
7337
7338
7339* <SIGNATURE>---------------------------------------------------------------------------------------+
7340* | Instance Public Method ZCL_P2PE312_NOTIF_MODEL->PROCESS
7341* +-------------------------------------------------------------------------------------------------+
7342* +--------------------------------------------------------------------------------------</SIGNATURE>
7343 METHOD process.
7344*--------------------------------------------------------------------*
7345* Заполнение модели актуальными данными
7346*--------------------------------------------------------------------*
7347
7348 DATA: l_rt_users TYPE zip2pe312_user_range,
7349 lv_send_date_check TYPE char1.
7350
7351 CLEAR mt_alv.
7352
7353 CASE abap_true.
7354 WHEN ms_sel-rb_pur.
7355 fetch_by_purchase_req( ).
7356 WHEN ms_sel-rb_req.
7357 LOOP AT ms_sel-s_nsort TRANSPORTING NO FIELDS WHERE low <> zif_p2pe312_constants=>mcs_nsort-n11.
7358 EXIT.
7359 ENDLOOP.
7360 IF sy-subrc = 0 OR ms_sel-s_nsort IS INITIAL.
7361 fetch_by_requirements( ).
7362 ENDIF.
7363 WHEN ms_sel-rb_snd.
7364 fetch_by_sndlog( ).
7365 WHEN ms_sel-rb_mat.
7366 fetch_by_mat( ).
7367 ENDCASE.
7368
7369
7370* Для выбора по материалу
7371 IF ms_sel-rb_mat <> abap_true.
7372 fetch_sd_docflow( ).
7373 build_alv_tab( ).
7374 ENDIF.
7375
7376 add_notifications_data( ).
7377 build_alv_tab_notif( ).
7378 build_alv_planned_order( ).
7379 build_alv_tab_nsort_txt( ).
7380 create_alv_key( ).
7381
7382* Подготовка к вызову алгоритма выбора получателей
7383 CASE mv_mode.
7384 WHEN zif_p2pe312_constants=>mcs_send_mode-online.
7385 lv_send_date_check = abap_false.
7386 WHEN zif_p2pe312_constants=>mcs_send_mode-background.
7387 l_rt_users = ms_sel-s_buser[].
7388 lv_send_date_check = abap_true.
7389 WHEN OTHERS.
7390* Пользователь для диалогового режима
7391 IF ms_sel-p_user IS NOT INITIAL.
7392 APPEND VALUE zsp2pe312_user_range(
7393 sign = rsmds_c_sign-including
7394 option = rsmds_c_option-equal
7395 low = ms_sel-p_user
7396 ) TO l_rt_users.
7397 ENDIF.
7398 ENDCASE.
7399
7400* Вызываем алгоритм поиска получателей уведомелний
7401 get_recipients(
7402 EXPORTING
7403 irt_users = l_rt_users
7404 iv_send_date_check = lv_send_date_check
7405 IMPORTING
7406 et_recipients = DATA(lt_recipients)
7407 ).
7408
7409* При вызове отчета по конкретному пользователю заполняем поля со статусами
7410 IF ms_sel-p_user IS NOT INITIAL.
7411 build_alv_tab_recipients( lt_recipients ).
7412 ENDIF.
7413
7414 IF ms_sel-cb_act IS NOT INITIAL.
7415 filter_alv( ).
7416 ENDIF.
7417
7418* Доп. фильтрация перед отправкой писем
7419 process_recipients_post(
7420 CHANGING
7421 ct_recipients = lt_recipients
7422 ).
7423
7424* В режиме обработки фонового задания автоматически запускаем рассылку
7425 IF mv_mode = zif_p2pe312_constants=>mcs_send_mode-online OR
7426 mv_mode = zif_p2pe312_constants=>mcs_send_mode-background. .
7427 send_mail(
7428 EXPORTING
7429 it_recipient = lt_recipients
7430 IMPORTING
7431 et_doc_send = DATA(lt_doc_send)
7432 ).
7433* Обновляем данные по онлайн отправке
7434 IF mv_mode = zif_p2pe312_constants=>mcs_send_mode-online.
7435 update_sndlog(
7436 EXPORTING
7437 it_doc_send = lt_doc_send
7438 CHANGING
7439 ct_sndlog = mt_sndlog
7440 ).
7441 ENDIF.
7442 ENDIF.
7443
7444* Заполнение индикаторов для уведомлений после всех проверок
7445 build_alv_tab_icons( ).
7446
7447 FREE: mt_cancelation,
7448 mt_inquiry,
7449 mt_reservation,
7450 mt_requisition,
7451 mt_cancelation_peg,
7452 mt_inquiry_peg,
7453 mt_reservation_peg,
7454 mt_notif_01.
7455
7456 ENDMETHOD.
7457
7458
7459* <SIGNATURE>---------------------------------------------------------------------------------------+
7460* | Instance Private Method ZCL_P2PE312_NOTIF_MODEL->PROCESS_RECIPIENTS_POST
7461* +-------------------------------------------------------------------------------------------------+
7462* | [<-->] CT_RECIPIENTS TYPE ZIP2PE312_RECIPIENT
7463* +--------------------------------------------------------------------------------------</SIGNATURE>
7464 METHOD process_recipients_post.
7465
7466 LOOP AT mt_nsort ASSIGNING FIELD-SYMBOL(<ls_nsort>)
7467 WHERE nactive = abap_true.
7468 CASE <ls_nsort>-nsort.
7469 WHEN zif_p2pe312_constants=>mcs_nsort-n03.
7470 process_recipients_post_03(
7471 CHANGING
7472 ct_recipients = ct_recipients
7473 ).
7474 ENDCASE.
7475 ENDLOOP.
7476
7477 ENDMETHOD.
7478
7479
7480* <SIGNATURE>---------------------------------------------------------------------------------------+
7481* | Instance Private Method ZCL_P2PE312_NOTIF_MODEL->PROCESS_RECIPIENTS_POST_03
7482* +-------------------------------------------------------------------------------------------------+
7483* | [<-->] CT_RECIPIENTS TYPE ZIP2PE312_RECIPIENT
7484* +--------------------------------------------------------------------------------------</SIGNATURE>
7485 METHOD process_recipients_post_03.
7486
7487 TYPES:
7488 BEGIN OF lty_s_ebeln,
7489 ebeln TYPE ebeln,
7490 username TYPE username,
7491 END OF lty_s_ebeln,
7492 lty_t_ebeln TYPE SORTED TABLE OF lty_s_ebeln WITH UNIQUE KEY ebeln username.
7493
7494 DATA: lt_ebeln TYPE lty_t_ebeln.
7495
7496 LOOP AT ct_recipients ASSIGNING FIELD-SYMBOL(<ls_rec>) WHERE nsort = zif_p2pe312_constants=>mcs_nsort-n03.
7497 READ TABLE mt_alv ASSIGNING FIELD-SYMBOL(<ls_alv>) WITH KEY row_num = <ls_rec>-row_num.
7498 IF sy-subrc = 0.
7499 IF <ls_alv>-udate_03 IS INITIAL.
7500 DELETE ct_recipients.
7501 CONTINUE.
7502 ENDIF.
7503 READ TABLE lt_ebeln WITH KEY ebeln = <ls_alv>-ebeln
7504 username = <ls_rec>-username
7505 TRANSPORTING NO FIELDS.
7506 IF sy-subrc = 0.
7507 DELETE ct_recipients.
7508 CONTINUE.
7509 ELSE.
7510 INSERT VALUE lty_s_ebeln( ebeln = <ls_alv>-ebeln
7511 username = <ls_rec>-username ) INTO TABLE lt_ebeln.
7512 ENDIF.
7513 ENDIF.
7514 ENDLOOP.
7515
7516 ENDMETHOD.
7517
7518
7519* <SIGNATURE>---------------------------------------------------------------------------------------+
7520* | Instance Private Method ZCL_P2PE312_NOTIF_MODEL->READ_DOCS_FROM_VBFA
7521* +-------------------------------------------------------------------------------------------------+
7522* | [--->] IM_T_VBFA_DOCS TYPE MTY_T_VBFA_DOCS
7523* | [--->] IM_VBELV TYPE VBFA-VBELV
7524* | [--->] IM_POSNV TYPE VBFA-POSNV
7525* | [--->] IM_VBTYP TYPE VBFA-VBTYP_N
7526* | [--->] IM_AUART TYPE VBAK-AUART
7527* | [<---] EX_DOCS TYPE CHAR128
7528* +--------------------------------------------------------------------------------------</SIGNATURE>
7529METHOD read_docs_from_vbfa.
7530
7531 DATA
7532 : lt_vbeln TYPE wtysc_vbeln_tab
7533* , l_rt_auart TYPE RANGE OF vbak-auart
7534 .
7535
7536 CLEAR ex_docs.
7537
7538* IF im_auart IS NOT INITIAL.
7539*
7540* l_rt_auart = VALUE #(
7541* ( sign = 'I'
7542* option = 'EQ'
7543* low = im_auart
7544* )
7545* ).
7546* ENDIF.
7547
7548 lt_vbeln = VALUE #( FOR ls_vbfa IN im_t_vbfa_docs
7549 WHERE ( vbelv EQ im_vbelv
7550 AND posnv EQ im_posnv
7551 AND vbtyp EQ im_vbtyp
7552* AND auart IN l_rt_auart
7553 AND auart eq im_auart
7554 )
7555 ( ls_vbfa-vbeln )
7556 ).
7557
7558 ex_docs = conv_vbeln_table_to_char( lt_vbeln ).
7559
7560ENDMETHOD.
7561
7562
7563* <SIGNATURE>---------------------------------------------------------------------------------------+
7564* | Instance Private Method ZCL_P2PE312_NOTIF_MODEL->SEND_MAIL
7565* +-------------------------------------------------------------------------------------------------+
7566* | [--->] IT_RECIPIENT TYPE ZIP2PE312_RECIPIENT
7567* | [<---] ET_DOC_SEND TYPE ZIP2PE312_DOC_SEND
7568* +--------------------------------------------------------------------------------------</SIGNATURE>
7569 METHOD send_mail.
7570*--------------------------------------------------------------------*
7571* Вызов отправки писем
7572*--------------------------------------------------------------------*
7573
7574 DATA: lt_notif_sys TYPE zip2pe312_notif_sys,
7575 lt_doc_send TYPE zip2pe312_recipient.
7576
7577 lt_doc_send =
7578 VALUE zip2pe312_recipient(
7579 FOR <ls_rec> IN it_recipient WHERE ( is_exclude = abap_false )
7580 ( CORRESPONDING #( <ls_rec> ) )
7581 ).
7582
7583* Для режимов отправки отличных от онлайна удаляем неревантные строки
7584 DELETE lt_doc_send WHERE send_per <> zif_p2pe312_constants=>mcs_send_per-online AND
7585 ( sel_days_ok <> abap_true OR
7586 send_date_ok <> abap_true ).
7587
7588 LOOP AT mt_alv ASSIGNING FIELD-SYMBOL(<ls_alv>).
7589 READ TABLE it_recipient ASSIGNING FIELD-SYMBOL(<ls_recipient>) WITH KEY row_num = <ls_alv>-row_num.
7590 IF sy-subrc = 0.
7591 APPEND <ls_alv> TO lt_notif_sys.
7592 ENDIF.
7593 ENDLOOP.
7594
7595 DATA(lr_mail_send) = zcl_p2pe312_mail_send=>get_instance( ).
7596 lr_mail_send->send_email(
7597 EXPORTING
7598 it_notif_sys = lt_notif_sys
7599 iv_commit = abap_true
7600 IMPORTING
7601 et_doc_send = et_doc_send
7602 et_bapiret = DATA(lt_bapiret)
7603 CHANGING
7604 ct_doc_send = lt_doc_send
7605 ).
7606
7607 ENDMETHOD.
7608
7609
7610* <SIGNATURE>---------------------------------------------------------------------------------------+
7611* | Instance Private Method ZCL_P2PE312_NOTIF_MODEL->SET_NSORT_USER_STATUS
7612* +-------------------------------------------------------------------------------------------------+
7613* | [--->] IV_NSTAT TYPE ZP2PE312_NSTAT
7614* | [--->] IV_NSORT TYPE ZP2PE312_NSORT
7615* | [<-->] CS_ALV TYPE ZSP2PE312_NOTIF_SYS_ALV
7616* +--------------------------------------------------------------------------------------</SIGNATURE>
7617 METHOD set_nsort_user_status.
7618*--------------------------------------------------------------------*
7619* Заполнение полей со статусом по уведомлению
7620*--------------------------------------------------------------------*
7621
7622 ASSIGN COMPONENT 'NSTAT_' && iv_nsort OF STRUCTURE cs_alv TO FIELD-SYMBOL(<lv_nstat>).
7623 ASSIGN COMPONENT 'NSTAT_TXT_' && iv_nsort OF STRUCTURE cs_alv TO FIELD-SYMBOL(<lv_nstat_txt>).
7624 ASSIGN COMPONENT 'NSTAT_ICON_' && iv_nsort OF STRUCTURE cs_alv TO FIELD-SYMBOL(<lv_nstat_icon>).
7625 IF <lv_nstat> IS ASSIGNED AND
7626 <lv_nstat_txt> IS ASSIGNED AND
7627 <lv_nstat_icon> IS ASSIGNED.
7628
7629 <lv_nstat> = iv_nstat.
7630 get_nstat_attr(
7631 EXPORTING
7632 iv_nstat = <lv_nstat>
7633 IMPORTING
7634 ev_nstat_txt = <lv_nstat_txt>
7635 ev_nstat_icon = <lv_nstat_icon>
7636 ).
7637 UNASSIGN: <lv_nstat>, <lv_nstat_txt>, <lv_nstat_icon>.
7638 ENDIF.
7639
7640 ENDMETHOD.
7641
7642
7643* <SIGNATURE>---------------------------------------------------------------------------------------+
7644* | Instance Private Method ZCL_P2PE312_NOTIF_MODEL->UPDATE_SNDLOG
7645* +-------------------------------------------------------------------------------------------------+
7646* | [--->] IT_DOC_SEND TYPE ZIP2PE312_DOC_SEND
7647* | [<-->] CT_SNDLOG TYPE ZIP2PE312_SNDLOG
7648* +--------------------------------------------------------------------------------------</SIGNATURE>
7649 METHOD update_sndlog.
7650
7651 LOOP AT ct_sndlog ASSIGNING FIELD-SYMBOL(<ls_sndlog>).
7652 <ls_sndlog>-processed = abap_true.
7653 <ls_sndlog>-aenam = sy-uname.
7654 <ls_sndlog>-aedat = sy-datum.
7655 <ls_sndlog>-aetim = sy-uzeit.
7656 ENDLOOP.
7657
7658 CALL FUNCTION 'Z_P2PE312_SNDLOG_UPD' IN UPDATE TASK
7659 EXPORTING
7660 i_mode = zif_p2pe312_constants=>mcs_update_mode-modify
7661 it_table = ct_sndlog.
7662
7663 COMMIT WORK AND WAIT.
7664
7665 ENDMETHOD.
7666ENDCLASS.