· 4 years ago · Feb 18, 2021, 12:10 PM
1*&---------------------------------------------------------------------*
2*& Report ZMD_API_LOG_HANDLE
3*&---------------------------------------------------------------------*
4
5REPORT zmd_api_log_handle.
6
7TABLES: pa0003, sysuuid, pa0001.
8
9DATA: gt_log TYPE TABLE OF zmd_api_log,
10 gw_log TYPE zmd_api_log.
11
12DATA: alv TYPE REF TO cl_salv_table.
13DATA: go_alv_data TYPE REF TO cl_salv_table.
14
15TYPES: BEGIN OF ty_logh,
16 messages TYPE char4,
17 batch TYPE zmd_api_log-batch,
18 appname TYPE zmd_api_log-appname,
19 epernr TYPE zmd_api_log-epernr,
20 pernr TYPE zmd_api_log-pernr,
21 datum TYPE zmd_api_log-datum,
22 time TYPE zmd_api_log-time,
23 uname TYPE zmd_api_log-uname,
24 details TYPE char4,
25 reprocess TYPE char4,
26 confirm TYPE char4,
27 reprocessed TYPE zmd_api_log-reprocessed,
28 content TYPE string,
29 reference_id TYPE sxmsmguid,
30 color TYPE lvc_t_scol,
31 status TYPE zapi_status,
32 END OF ty_logh.
33
34TYPES: BEGIN OF ty_inftylist,
35 batch TYPE num20,
36 seqnr TYPE num4,
37 infty TYPE infty,
38 END OF ty_inftylist.
39
40TYPES: tt_logh TYPE TABLE OF ty_logh.
41
42DATA: gt_logh TYPE tt_logh,
43 gw_logh TYPE ty_logh.
44
45DATA: gr_dref TYPE REF TO data,
46 gr_rowtype TYPE REF TO cl_abap_structdescr,
47 gr_tabtype TYPE REF TO cl_abap_tabledescr.
48
49DATA: gv_linetype TYPE ddobjname.
50DATA: gv_fieldname TYPE char40.
51
52DATA: r_refid TYPE RANGE OF sxmsmguid.
53DATA: rw_refid LIKE LINE OF r_refid.
54
55FIELD-SYMBOLS: <pnnnn_tab> TYPE STANDARD TABLE.
56FIELD-SYMBOLS: <pnnnn> TYPE any.
57FIELD-SYMBOLS: <mpnnnn> TYPE any.
58FIELD-SYMBOLS: <field> TYPE any.
59FIELD-SYMBOLS: <mfield> TYPE any.
60
61CLASS lcl_event_handler DEFINITION."
62 PUBLIC SECTION.
63 CLASS-METHODS:
64
65 on_button FOR EVENT added_function OF cl_salv_events_table
66 IMPORTING e_salv_function,
67
68 on_double_click FOR EVENT double_click OF cl_salv_events_table
69 IMPORTING row column.
70
71ENDCLASS. "lcl_event_handler DEFINITION
72
73INCLUDE <icons>.
74INCLUDE <color>.
75
76SELECTION-SCREEN BEGIN OF SCREEN 0100.
77
78SELECTION-SCREEN END OF SCREEN 0100.
79
80SELECTION-SCREEN BEGIN OF BLOCK one WITH FRAME TITLE text-001.
81
82SELECT-OPTIONS: so_aname FOR gw_log-appname MEMORY ID ana,
83 so_infty FOR gw_log-infty MEMORY ID inf,
84 so_datum FOR gw_log-datum MEMORY ID dat,
85 so_time FOR gw_log-time MEMORY ID tim.
86
87SELECTION-SCREEN END OF BLOCK one.
88
89SELECTION-SCREEN BEGIN OF BLOCK two WITH FRAME TITLE text-002.
90
91SELECT-OPTIONS: so_pernr FOR gw_log-pernr MEMORY ID pno,
92 so_epern FOR gw_log-epernr MEMORY ID epe,
93 so_molga FOR pa0003-viekn MEMORY ID mlg,
94 so_bukrs FOR pa0001-bukrs MEMORY ID buk,
95 so_abkrs FOR pa0001-abkrs MEMORY ID abk.
96
97SELECTION-SCREEN END OF BLOCK two.
98
99SELECTION-SCREEN BEGIN OF BLOCK three WITH FRAME TITLE text-003.
100
101SELECT-OPTIONS: so_batch FOR gw_log-batch MEMORY ID bat,
102 so_chref FOR sysuuid-c MEMORY ID xir,
103 so_metho FOR gw_log-method MEMORY ID met,
104 so_uname FOR gw_log-uname MEMORY ID una,
105 so_atype FOR gw_log-apptype MEMORY ID aty.
106
107SELECTION-SCREEN END OF BLOCK three.
108
109SELECTION-SCREEN BEGIN OF BLOCK four WITH FRAME TITLE text-004.
110
111PARAMETERS: p_repro LIKE gw_log-reprocessed AS CHECKBOX MEMORY ID rep.
112SELECT-OPTIONS: so_stat FOR gw_log-status NO INTERVALS.
113
114SELECTION-SCREEN END OF BLOCK four.
115
116START-OF-SELECTION.
117
118 PERFORM collect_data.
119 PERFORM update_status CHANGING gt_logh.
120 PERFORM alvh USING gt_logh.
121
122END-OF-SELECTION.
123
124*&---------------------------------------------------------------------*
125*& Form COLLECT_DATA
126*&---------------------------------------------------------------------*
127FORM collect_data.
128
129 DATA: lt_inftylist TYPE TABLE OF ty_inftylist,
130 lw_inftylist TYPE ty_inftylist.
131
132 DATA: lv_repromask TYPE c.
133
134 DATA: lr_molgapernr TYPE RANGE OF persno.
135 DATA: lr_pa0001pernr TYPE RANGE OF persno.
136 DATA: lr_inftybatch TYPE RANGE OF num20.
137 DATA: lr_initpernrs TYPE RANGE OF persno.
138
139 IF p_repro IS INITIAL.
140 lv_repromask = ''.
141 ELSE.
142 lv_repromask = '%'.
143 ENDIF.
144
145 REFRESH r_refid.
146
147 LOOP AT so_chref.
148
149 MOVE so_chref-option TO rw_refid-option .
150 MOVE so_chref-sign TO rw_refid-sign.
151 MOVE so_chref-high TO rw_refid-high.
152 MOVE so_chref-low TO rw_refid-low.
153
154 APPEND rw_refid TO r_refid.
155
156 ENDLOOP.
157
158 REFRESH: lr_initpernrs, lr_molgapernr, lr_pa0001pernr, lr_inftybatch.
159
160 SELECT *
161 FROM zmd_api_log
162 INTO TABLE gt_log
163 WHERE appname IN so_aname AND
164 datum IN so_datum AND
165 time IN so_time AND
166 pernr IN so_pernr AND
167 epernr IN so_epern AND
168 batch IN so_batch AND
169 reference_id IN r_refid AND
170 method IN so_metho AND
171 uname IN so_uname AND
172 apptype IN so_atype AND
173 reprocessed LIKE lv_repromask AND
174 status IN so_stat
175 ORDER BY batch seqnr.
176
177 IF gt_log IS NOT INITIAL.
178
179*collect PERNRs for restriction
180 SELECT DISTINCT 'I', 'EQ', pernr
181 FROM zmd_api_log
182 INTO TABLE @lr_initpernrs
183 WHERE appname IN @so_aname AND
184 datum IN @so_datum AND
185 time IN @so_time AND
186 pernr IN @so_pernr AND
187 epernr IN @so_epern AND
188 batch IN @so_batch AND
189 reference_id IN @r_refid AND
190 method IN @so_metho AND
191 uname IN @so_uname AND
192 apptype IN @so_atype AND
193 reprocessed LIKE @lv_repromask AND
194 status IN @so_stat.
195
196*molga restriction
197 IF so_molga IS NOT INITIAL.
198
199 SELECT 'I', 'EQ', pernr
200 FROM pa0003
201 INTO TABLE @lr_molgapernr
202 WHERE viekn IN @so_molga AND
203 pernr IN @lr_initpernrs.
204
205 IF lr_molgapernr IS INITIAL.
206
207 REFRESH gt_log.
208
209 ELSE.
210
211 DELETE gt_log WHERE pernr NOT IN lr_molgapernr.
212
213 ENDIF.
214
215 ENDIF.
216
217*pa0001 restriction (no date restriciton)
218 IF so_bukrs IS NOT INITIAL OR
219 so_abkrs IS NOT INITIAL.
220
221 SELECT 'I', 'EQ', pernr
222 FROM pa0001
223 INTO TABLE @lr_pa0001pernr
224 WHERE bukrs IN @so_bukrs AND
225 abkrs IN @so_abkrs AND
226 pernr IN @lr_initpernrs.
227
228 IF lr_pa0001pernr IS INITIAL.
229
230 REFRESH gt_log.
231
232 ELSE.
233
234 DELETE gt_log WHERE pernr NOT IN lr_pa0001pernr.
235
236 ENDIF.
237
238 ENDIF.
239
240*infotype
241 IF so_infty IS NOT INITIAL.
242
243 SELECT DISTINCT 'I', 'EQ', batch
244 FROM zmd_api_log
245 INTO TABLE @lr_inftybatch
246 WHERE infty IN @so_infty.
247
248 IF lr_inftybatch IS INITIAL.
249
250 REFRESH gt_log.
251
252 ELSE.
253
254 DELETE gt_log WHERE batch NOT IN lr_inftybatch.
255
256 ENDIF.
257
258 ENDIF.
259
260 MOVE-CORRESPONDING gt_log TO gt_logh.
261 SORT gt_logh BY batch appname pernr datum time uname reprocessed reference_id status.
262 DELETE ADJACENT DUPLICATES FROM gt_logh COMPARING batch appname pernr datum time uname reprocessed reference_id status.
263
264 ENDIF.
265
266 IF gt_logh IS INITIAL.
267
268 MESSAGE s398(00) WITH 'Nothing selected'.
269 STOP.
270
271 ENDIF.
272
273 SELECT batch seqnr infty
274 FROM zmd_api_log
275 INTO CORRESPONDING FIELDS OF TABLE lt_inftylist
276 FOR ALL ENTRIES IN gt_logh
277 WHERE batch EQ gt_logh-batch AND
278 appname EQ gt_logh-appname.
279
280 SORT lt_inftylist BY batch seqnr infty.
281
282 LOOP AT gt_logh INTO gw_logh.
283
284 CLEAR gw_logh-content.
285
286 LOOP AT lt_inftylist INTO lw_inftylist WHERE batch = gw_logh-batch.
287
288 CONCATENATE gw_logh-content lw_inftylist-infty INTO gw_logh-content SEPARATED BY space.
289
290 ENDLOOP.
291
292 MODIFY gt_logh FROM gw_logh.
293 ENDLOOP.
294
295ENDFORM.
296
297FORM update_status CHANGING pc_logh TYPE tt_logh.
298
299 DATA: lw_logh TYPE ty_logh,
300 lv_extid TYPE balhdr-extnumber,
301 lt_messages TYPE TABLE OF balm.
302
303 LOOP AT pc_logh INTO lw_logh.
304
305* CONCATENATE lw_logh-appname lw_logh-batch INTO lv_extid SEPARATED BY '|'.
306*
307* REFRESH lt_messages.
308
309 IF lw_logh-status IS INITIAL.
310
311 CALL FUNCTION 'APPL_LOG_READ_DB'
312 EXPORTING
313 object = 'ZMD_API'
314 subobject = 'INTERFACE'
315 external_number = lv_extid
316 date_from = lw_logh-datum
317 date_to = lw_logh-datum
318 time_from = '000000'
319 time_to = '235959'
320 TABLES
321 messages = lt_messages.
322
323 READ TABLE lt_messages WITH KEY msgty = 'E' TRANSPORTING NO FIELDS.
324
325 IF sy-subrc = 0.
326 lw_logh-status = 'E'.
327 lw_logh-messages = icon_message_orphaned.
328
329 ELSE.
330
331 lw_logh-messages = icon_message_uptodate.
332
333 ENDIF.
334
335 READ TABLE lt_messages WITH KEY msgty = 'W' msgv1 = zcl_md_api=>c_paused TRANSPORTING NO FIELDS.
336
337 IF sy-subrc = 0.
338 lw_logh-status = 'W'.
339 lw_logh-messages = icon_message_outofdate.
340
341
342 ENDIF.
343
344 IF lw_logh-status IS INITIAL.
345 lw_logh-status = 'S'.
346 ENDIF.
347
348 SELECT *
349 FROM zmd_api_log
350 INTO TABLE @DATA(tmp_update)
351 WHERE batch = @lw_logh-batch.
352
353 LOOP AT tmp_update INTO DATA(lw_tmp_update).
354 lw_tmp_update-status = lw_logh-status.
355 MODIFY tmp_update FROM lw_tmp_update.
356 ENDLOOP.
357 IF tmp_update IS NOT INITIAL.
358 MODIFY zmd_api_log FROM TABLE tmp_update.
359 ENDIF.
360
361 CLEAR: tmp_update[], lw_tmp_update.
362
363 ENDIF.
364
365 lw_logh-details = icon_doc_item_detail.
366
367 CASE lw_logh-status.
368 WHEN 'S'. lw_logh-messages = icon_message_uptodate.
369
370 WHEN 'W'.
371 lw_logh-messages = icon_message_outofdate.
372 IF lw_logh-reprocessed IS INITIAL.
373 lw_logh-reprocess = icon_system_play.
374 lw_logh-confirm = icon_set_state.
375 ELSE.
376 lw_logh-reprocess = icon_okay.
377 ENDIF.
378
379 WHEN 'E'.
380 lw_logh-messages = icon_message_orphaned.
381 IF lw_logh-reprocessed IS INITIAL.
382 lw_logh-reprocess = icon_system_play.
383 lw_logh-confirm = icon_set_state.
384 ELSE.
385 lw_logh-reprocess = icon_okay.
386 ENDIF.
387
388 WHEN 'I'. lw_logh-messages = icon_message_type.
389
390 WHEN OTHERS. lw_logh-messages = icon_message_faulty.
391
392 ENDCASE.
393
394 MODIFY pc_logh FROM lw_logh.
395 ENDLOOP.
396
397 IF pc_logh IS INITIAL.
398
399 MESSAGE s398(00) WITH 'Nothing selected'.
400 STOP.
401
402 ENDIF.
403
404ENDFORM.
405
406
407FORM alv USING pu_logh TYPE ty_logh.
408
409 DATA: lt_dettab TYPE zmd_api_log_tab.
410
411 DATA: lo_alv_details TYPE REF TO cl_salv_table.
412
413 DATA: lo_event TYPE REF TO cl_salv_events_table,
414 lo_event_2clk TYPE REF TO cl_salv_events_table.
415
416 DATA: lo_col_tab TYPE REF TO cl_salv_column_table,
417 lo_display TYPE REF TO cl_salv_display_settings,
418 ls_color_key TYPE lvc_s_colo,
419 ls_color_dat TYPE lvc_s_colo.
420
421 DATA: lv_recno TYPE i.
422 DATA: lv_header TYPE lvc_title.
423
424 ls_color_key-col = col_key.
425 ls_color_dat-col = col_total.
426
427 SELECT *
428 FROM zmd_api_log
429 INTO TABLE lt_dettab
430 WHERE batch EQ pu_logh-batch AND
431 appname EQ pu_logh-appname AND
432 pernr EQ pu_logh-pernr AND
433 datum EQ pu_logh-datum AND
434 uname EQ pu_logh-uname
435 ORDER BY batch seqnr.
436
437 TRY.
438 cl_salv_table=>factory(
439 IMPORTING
440 r_salv_table = lo_alv_details
441 CHANGING
442 t_table = lt_dettab ).
443
444 lo_event_2clk = lo_alv_details->get_event( ).
445 SET HANDLER: lcl_event_handler=>on_double_click FOR lo_event_2clk.
446
447 lo_display = lo_alv_details->get_display_settings( ).
448 lv_recno = lines( lt_dettab ).
449
450 IF lv_recno = 1.
451 lv_header = `Handle MD API log: ` && lv_recno && ` line`.
452 ELSE.
453 lv_header = `Handle MD API log: ` && lv_recno && ` lines`.
454 ENDIF.
455
456 lo_display->set_list_header( lv_header ).
457
458 lo_alv_details->get_functions( )->set_all( 'X' ).
459 lo_alv_details->get_columns( )->set_optimize( ).
460
461 DATA(lo_display_settings) = lo_alv_details->get_display_settings( ).
462 lo_display_settings->set_striped_pattern( 'X' ).
463
464 lo_alv_details->get_columns( )->get_column( 'REFERENCE_ID' )->set_zero( '' ).
465
466 lo_col_tab ?= lo_alv_details->get_columns( )->get_column( 'BATCH' ). lo_col_tab->set_color( ls_color_key ).
467 lo_col_tab ?= lo_alv_details->get_columns( )->get_column( 'SEQNR' ). lo_col_tab->set_color( ls_color_key ).
468 lo_col_tab ?= lo_alv_details->get_columns( )->get_column( 'DATA' ). lo_col_tab->set_color( ls_color_dat ).
469
470 lo_alv_details->get_columns( )->get_column( 'MANDT' )->set_visible( if_salv_c_bool_sap=>false ).
471
472 lo_alv_details->get_columns( )->get_column( 'BATCH' )->set_long_text( 'Batch' ).
473 lo_alv_details->get_columns( )->get_column( 'SEQNR' )->set_long_text( 'Sequence' ).
474 lo_alv_details->get_columns( )->get_column( 'APPTYPE' )->set_long_text( 'Type' ).
475 lo_alv_details->get_columns( )->get_column( 'APPNAME' )->set_long_text( 'Name of application' ).
476 lo_alv_details->get_columns( )->get_column( 'METHOD' )->set_long_text( 'Method Name' ).
477 lo_alv_details->get_columns( )->get_column( 'UMODE' )->set_long_text( 'Update Mode' ).
478 lo_alv_details->get_columns( )->get_column( 'INFTY' )->set_long_text( 'Infotype' ).
479 lo_alv_details->get_columns( )->get_column( 'EPERNR' )->set_long_text( 'External ID' ).
480 lo_alv_details->get_columns( )->get_column( 'PERNR' )->set_long_text( 'Personnel number' ).
481 lo_alv_details->get_columns( )->get_column( 'DATUM' )->set_long_text( 'Date' ).
482 lo_alv_details->get_columns( )->get_column( 'TIME' )->set_long_text( 'Time' ).
483 lo_alv_details->get_columns( )->get_column( 'UNAME' )->set_long_text( 'Changed By' ).
484 lo_alv_details->get_columns( )->get_column( 'DATA' )->set_long_text( 'Data' ).
485 lo_alv_details->get_columns( )->get_column( 'DATA_ADD ' )->set_long_text( 'Add. Data' ).
486 lo_alv_details->get_columns( )->get_column( 'REFERENCE_ID')->set_long_text( 'XI msg' ).
487
488 lo_alv_details->get_columns( )->get_column( 'BATCH' )->set_medium_text( 'Batch' ).
489 lo_alv_details->get_columns( )->get_column( 'SEQNR' )->set_medium_text( 'Sequence' ).
490 lo_alv_details->get_columns( )->get_column( 'APPTYPE' )->set_medium_text( 'Type' ).
491 lo_alv_details->get_columns( )->get_column( 'APPNAME' )->set_medium_text( 'Name of application' ).
492 lo_alv_details->get_columns( )->get_column( 'METHOD' )->set_medium_text( 'Method Name' ).
493 lo_alv_details->get_columns( )->get_column( 'UMODE' )->set_medium_text( 'Update Mode' ).
494 lo_alv_details->get_columns( )->get_column( 'INFTY' )->set_medium_text( 'Infotype' ).
495 lo_alv_details->get_columns( )->get_column( 'EPERNR' )->set_medium_text( 'External ID' ).
496 lo_alv_details->get_columns( )->get_column( 'PERNR' )->set_medium_text( 'Personnel number' ).
497 lo_alv_details->get_columns( )->get_column( 'DATUM' )->set_medium_text( 'Date' ).
498 lo_alv_details->get_columns( )->get_column( 'TIME' )->set_medium_text( 'Time' ).
499 lo_alv_details->get_columns( )->get_column( 'UNAME' )->set_medium_text( 'Changed By' ).
500 lo_alv_details->get_columns( )->get_column( 'DATA' )->set_medium_text( 'Data' ).
501 lo_alv_details->get_columns( )->get_column( 'DATA_ADD ' )->set_medium_text( 'Add. Data' ).
502 lo_alv_details->get_columns( )->get_column( 'REFERENCE_ID')->set_medium_text( 'XI msg' ).
503
504 lo_alv_details->get_columns( )->get_column( 'BATCH' )->set_short_text( 'Batch' ).
505 lo_alv_details->get_columns( )->get_column( 'SEQNR' )->set_short_text( 'Sequence' ).
506 lo_alv_details->get_columns( )->get_column( 'APPTYPE' )->set_short_text( 'Type' ).
507 lo_alv_details->get_columns( )->get_column( 'APPNAME' )->set_short_text( 'Applicat.' ).
508 lo_alv_details->get_columns( )->get_column( 'METHOD' )->set_short_text( 'Method' ).
509 lo_alv_details->get_columns( )->get_column( 'UMODE' )->set_short_text( 'Mode' ).
510 lo_alv_details->get_columns( )->get_column( 'INFTY' )->set_short_text( 'Infotype' ).
511 lo_alv_details->get_columns( )->get_column( 'EPERNR' )->set_short_text( 'ExtID' ).
512 lo_alv_details->get_columns( )->get_column( 'PERNR' )->set_short_text( 'Persno' ).
513 lo_alv_details->get_columns( )->get_column( 'DATUM' )->set_short_text( 'Date' ).
514 lo_alv_details->get_columns( )->get_column( 'TIME' )->set_short_text( 'Time' ).
515 lo_alv_details->get_columns( )->get_column( 'UNAME' )->set_short_text( 'ChngBy' ).
516 lo_alv_details->get_columns( )->get_column( 'DATA' )->set_short_text( 'Data' ).
517 lo_alv_details->get_columns( )->get_column( 'DATA_ADD ' )->set_short_text( 'Add. Data' ).
518 lo_alv_details->get_columns( )->get_column( 'REFERENCE_ID')->set_short_text( 'XI msg' ).
519
520 lo_alv_details->display( ).
521
522 ENDTRY.
523
524ENDFORM.
525
526FORM alvh USING pu_logh TYPE tt_logh.
527
528 DATA: lo_event TYPE REF TO cl_salv_events_table,
529 lo_event_2clk TYPE REF TO cl_salv_events_table.
530
531 DATA: lo_col_tab TYPE REF TO cl_salv_column_table,
532 lo_display TYPE REF TO cl_salv_display_settings,
533 ls_color TYPE lvc_s_colo,
534 lv_process_icon TYPE string.
535
536 DATA: lo_catch TYPE REF TO cx_root.
537
538 DATA: lv_recno TYPE i.
539 DATA: lv_header TYPE lvc_title.
540
541 ls_color-col = col_key.
542 ls_color-int = 1.
543
544 TRY.
545
546 cl_salv_table=>factory(
547 IMPORTING
548 r_salv_table = alv
549 CHANGING
550 t_table = pu_logh ).
551
552 lo_event = alv->get_event( ).
553 lo_event_2clk = alv->get_event( ).
554
555 SET HANDLER: lcl_event_handler=>on_button FOR lo_event,
556 lcl_event_handler=>on_double_click FOR lo_event_2clk.
557
558 lo_display = alv->get_display_settings( ).
559 lv_recno = lines( pu_logh ).
560
561 IF lv_recno = 1.
562 lv_header = `Handle MD API log: ` && lv_recno && ` batch`.
563 ELSE.
564 lv_header = `Handle MD API log: ` && lv_recno && ` batches`.
565 ENDIF.
566
567 lo_display->set_list_header( lv_header ).
568
569 alv->get_functions( )->set_all( 'X' ).
570
571 lv_process_icon = icon_workflow_process.
572
573 DATA(lo_display_settings) = alv->get_display_settings( ).
574 lo_display_settings->set_striped_pattern( 'X' ).
575
576 alv->set_screen_status(
577 EXPORTING
578 report = sy-repid
579 pfstatus = 'ZSALV_TABLE_STANDAR2'
580 ).
581
582 alv->get_functions_base( )->set_function(
583 EXPORTING
584 name = 'MAP_TEST'
585 boolean = ''
586 ).
587
588 alv->get_columns( )->set_optimize( ).
589
590 alv->get_columns( )->get_column( 'REFERENCE_ID' )->set_zero( '' ).
591
592 alv->get_columns( )->get_column( 'MESSAGES' )->set_alignment( if_salv_c_alignment=>centered ).
593 alv->get_columns( )->get_column( 'DETAILS' )->set_alignment( if_salv_c_alignment=>centered ).
594 alv->get_columns( )->get_column( 'REPROCESS' )->set_alignment( if_salv_c_alignment=>centered ).
595 alv->get_columns( )->get_column( 'CONFIRM' )->set_alignment( if_salv_c_alignment=>centered ).
596 alv->get_columns( )->get_column( 'REPROCESSED' )->set_visible( if_salv_c_bool_sap=>false ).
597 alv->get_columns( )->get_column( 'STATUS' )->set_visible( if_salv_c_bool_sap=>false ).
598
599 lo_col_tab ?= alv->get_columns( )->get_column( 'MESSAGES' ). lo_col_tab->set_color( ls_color ).
600 lo_col_tab ?= alv->get_columns( )->get_column( 'BATCH' ). lo_col_tab->set_color( ls_color ).
601
602 alv->get_columns( )->get_column( 'BATCH' )->set_long_text( 'Batch' ).
603 alv->get_columns( )->get_column( 'APPNAME' )->set_long_text( 'Name of application' ).
604 alv->get_columns( )->get_column( 'EPERNR' )->set_long_text( 'External ID' ).
605 alv->get_columns( )->get_column( 'PERNR' )->set_long_text( 'Personnel number' ).
606 alv->get_columns( )->get_column( 'DATUM' )->set_long_text( 'Date' ).
607 alv->get_columns( )->get_column( 'TIME' )->set_long_text( 'Time' ).
608 alv->get_columns( )->get_column( 'UNAME' )->set_long_text( 'Changed By' ).
609 alv->get_columns( )->get_column( 'MESSAGES' )->set_long_text( 'Messages' ).
610 alv->get_columns( )->get_column( 'DETAILS' )->set_long_text( 'Details' ).
611 alv->get_columns( )->get_column( 'REPROCESS' )->set_long_text( 'Reprocess' ).
612 alv->get_columns( )->get_column( 'CONFIRM' )->set_long_text( 'Confirm' ).
613 alv->get_columns( )->get_column( 'CONTENT' )->set_long_text( 'Content' ).
614 alv->get_columns( )->get_column( 'REFERENCE_ID' )->set_long_text( 'XI msg' ).
615
616 alv->get_columns( )->get_column( 'BATCH' )->set_medium_text( 'Batch' ).
617 alv->get_columns( )->get_column( 'APPNAME' )->set_medium_text( 'Name of application' ).
618 alv->get_columns( )->get_column( 'EPERNR' )->set_medium_text( 'External ID' ).
619 alv->get_columns( )->get_column( 'PERNR' )->set_medium_text( 'Personnel number' ).
620 alv->get_columns( )->get_column( 'DATUM' )->set_medium_text( 'Date' ).
621 alv->get_columns( )->get_column( 'TIME' )->set_medium_text( 'Time' ).
622 alv->get_columns( )->get_column( 'UNAME' )->set_medium_text( 'Changed By' ).
623 alv->get_columns( )->get_column( 'MESSAGES' )->set_medium_text( 'Messages' ).
624 alv->get_columns( )->get_column( 'DETAILS' )->set_medium_text( 'Details' ).
625 alv->get_columns( )->get_column( 'REPROCESS' )->set_medium_text( 'Reprocess' ).
626 alv->get_columns( )->get_column( 'CONFIRM' )->set_medium_text( 'Confirm' ).
627 alv->get_columns( )->get_column( 'CONTENT' )->set_medium_text( 'Content' ).
628 alv->get_columns( )->get_column( 'REFERENCE_ID' )->set_medium_text( 'XI msg' ).
629
630 alv->get_columns( )->get_column( 'BATCH' )->set_short_text( 'Batch' ).
631 alv->get_columns( )->get_column( 'APPNAME' )->set_short_text( 'Applicat.' ).
632 alv->get_columns( )->get_column( 'EPERNR' )->set_short_text( 'ExtID' ).
633 alv->get_columns( )->get_column( 'PERNR' )->set_short_text( 'Persno' ).
634 alv->get_columns( )->get_column( 'DATUM' )->set_short_text( 'Date' ).
635 alv->get_columns( )->get_column( 'TIME' )->set_short_text( 'Time' ).
636 alv->get_columns( )->get_column( 'UNAME' )->set_short_text( 'ChngBy' ).
637 alv->get_columns( )->get_column( 'MESSAGES' )->set_short_text( 'Messages' ).
638 alv->get_columns( )->get_column( 'DETAILS' )->set_short_text( 'Details' ).
639 alv->get_columns( )->get_column( 'REPROCESS' )->set_short_text( 'Reprocess' ).
640 alv->get_columns( )->get_column( 'CONFIRM' )->set_short_text( 'Confirm' ).
641 alv->get_columns( )->get_column( 'CONTENT' )->set_short_text( 'Content' ).
642 alv->get_columns( )->get_column( 'REFERENCE_ID' )->set_short_text( 'XI msg' ).
643
644 alv->get_columns( )->set_color_column( 'COLOR' ).
645
646 alv->display( ).
647
648 ENDTRY.
649
650ENDFORM.
651
652FORM alvdata USING pu_api_log TYPE zmd_api_log.
653
654 DATA: lo_event TYPE REF TO cl_salv_events_table,
655 lo_event_2clk TYPE REF TO cl_salv_events_table.
656
657 DATA: lo_col_tab TYPE REF TO cl_salv_column_table,
658 lo_display TYPE REF TO cl_salv_display_settings,
659 ls_color TYPE lvc_s_colo,
660 ls_mapcol TYPE lvc_s_colo.
661
662 DATA: gs_comp TYPE LINE OF cl_abap_structdescr=>component_table.
663
664 DATA: lv_header TYPE lvc_title.
665
666*key color
667 ls_color-col = col_key.
668 ls_color-int = 1.
669
670*mapping exists color
671 ls_mapcol-col = col_total.
672 ls_mapcol-int = 0.
673
674 gs_comp-name = 'COLOR'.
675 gs_comp-type ?= cl_abap_elemdescr=>describe_by_name( 'LVC_T_SCOL' ).
676
677 gv_linetype = 'ZAPI_' && pu_api_log-infty.
678
679 gr_rowtype ?= cl_abap_typedescr=>describe_by_name( gv_linetype ).
680
681 DATA(str_comp) = gr_rowtype->get_components( ).
682 APPEND gs_comp TO str_comp.
683 gr_rowtype = cl_abap_structdescr=>create( str_comp ).
684
685 gr_tabtype ?= cl_abap_tabledescr=>get( p_line_type = gr_rowtype ).
686
687 CREATE DATA gr_dref TYPE HANDLE gr_rowtype.
688 ASSIGN gr_dref->* TO <pnnnn>.
689
690 CREATE DATA gr_dref TYPE HANDLE gr_rowtype.
691 ASSIGN gr_dref->* TO <mpnnnn>.
692
693 CREATE DATA gr_dref TYPE HANDLE gr_tabtype.
694 ASSIGN gr_dref->* TO <pnnnn_tab>.
695
696 SPLIT pu_api_log-data AT '|' INTO TABLE DATA(lt_split).
697
698 TRY.
699
700 cl_salv_table=>factory(
701 IMPORTING
702 r_salv_table = go_alv_data
703 CHANGING
704 t_table = <pnnnn_tab> ).
705
706
707 lo_event = go_alv_data->get_event( ).
708 SET HANDLER: lcl_event_handler=>on_button FOR lo_event.
709
710 lo_event_2clk = go_alv_data->get_event( ).
711 SET HANDLER: lcl_event_handler=>on_double_click FOR lo_event_2clk.
712
713 go_alv_data->set_screen_status(
714 EXPORTING
715 report = sy-repid
716 pfstatus = 'ZSALV_TABLE_STANDAR2'
717 ).
718
719 lo_display = go_alv_data->get_display_settings( ).
720
721 lv_header = `Handle MD API log: IT` && pu_api_log-infty.
722 lo_display->set_list_header( lv_header ).
723
724 go_alv_data->get_functions( )->set_all( 'X' ).
725 go_alv_data->get_columns( )->set_optimize( ).
726
727 go_alv_data->get_functions( )->set_function(
728 EXPORTING
729 name = 'PROC_ALL'
730 boolean = space
731 ).
732
733 go_alv_data->get_functions( )->set_function(
734 EXPORTING
735 name = 'CONF_ALL'
736 boolean = space
737 ).
738
739 LOOP AT gr_rowtype->components INTO DATA(lw_component).
740
741 CHECK lw_component-name <> 'COLOR'.
742
743 READ TABLE lt_split INTO DATA(lv_field) INDEX sy-tabix.
744 IF sy-subrc <> 0. EXIT. ENDIF.
745 ASSIGN COMPONENT sy-tabix OF STRUCTURE <pnnnn> TO <field>.
746 IF sy-subrc <> 0. EXIT. ENDIF.
747 <field> = lv_field.
748
749 gv_fieldname = lw_component-name.
750 go_alv_data->get_columns( )->get_column( lw_component-name )->set_long_text( gv_fieldname ).
751
752 SELECT COUNT(*)
753 FROM zmd_api_mapping
754 WHERE appname EQ pu_api_log-appname AND
755 infotype EQ pu_api_log-infty AND
756 field EQ lw_component-name.
757
758 IF sy-subrc = 0.
759 lo_col_tab ?= go_alv_data->get_columns( )->get_column( lw_component-name ). lo_col_tab->set_color( ls_mapcol ).
760 ENDIF.
761
762 ENDLOOP.
763
764 APPEND <pnnnn> TO <pnnnn_tab>.
765
766 go_alv_data->get_columns( )->set_color_column( 'COLOR' ).
767
768 TRY.
769 lo_col_tab ?= go_alv_data->get_columns( )->get_column( 'PERNR' ). lo_col_tab->set_color( ls_color ).
770 CATCH cx_salv_not_found.
771 ENDTRY.
772 TRY.
773 lo_col_tab ?= go_alv_data->get_columns( )->get_column( 'INFTY' ). lo_col_tab->set_color( ls_color ).
774 CATCH cx_salv_not_found.
775 ENDTRY.
776 TRY.
777 lo_col_tab ?= go_alv_data->get_columns( )->get_column( 'SUBTY' ). lo_col_tab->set_color( ls_color ).
778 CATCH cx_salv_not_found.
779 ENDTRY.
780 TRY.
781 lo_col_tab ?= go_alv_data->get_columns( )->get_column( 'OBJPS' ). lo_col_tab->set_color( ls_color ).
782 CATCH cx_salv_not_found.
783 ENDTRY.
784 TRY.
785 lo_col_tab ?= go_alv_data->get_columns( )->get_column( 'SPRPS' ). lo_col_tab->set_color( ls_color ).
786 CATCH cx_salv_not_found.
787 ENDTRY.
788 TRY.
789 lo_col_tab ?= go_alv_data->get_columns( )->get_column( 'ENDDA' ). lo_col_tab->set_color( ls_color ).
790 CATCH cx_salv_not_found.
791 ENDTRY.
792 TRY.
793 lo_col_tab ?= go_alv_data->get_columns( )->get_column( 'BEGDA' ). lo_col_tab->set_color( ls_color ).
794 CATCH cx_salv_not_found.
795 ENDTRY.
796 TRY.
797 lo_col_tab ?= go_alv_data->get_columns( )->get_column( 'SEQNR' ). lo_col_tab->set_color( ls_color ).
798 CATCH cx_salv_not_found.
799 ENDTRY.
800
801 TRY.
802 lo_col_tab ?= go_alv_data->get_columns( )->get_column( 'MANDT' ). lo_col_tab->set_color( ls_color ).
803 CATCH cx_salv_not_found.
804 ENDTRY.
805 TRY.
806 lo_col_tab ?= go_alv_data->get_columns( )->get_column( 'PLVAR' ). lo_col_tab->set_color( ls_color ).
807 CATCH cx_salv_not_found.
808 ENDTRY.
809 TRY.
810 lo_col_tab ?= go_alv_data->get_columns( )->get_column( 'OTYPE' ). lo_col_tab->set_color( ls_color ).
811 CATCH cx_salv_not_found.
812 ENDTRY.
813 TRY.
814 lo_col_tab ?= go_alv_data->get_columns( )->get_column( 'OBJID' ). lo_col_tab->set_color( ls_color ).
815 CATCH cx_salv_not_found.
816 ENDTRY.
817 TRY.
818 lo_col_tab ?= go_alv_data->get_columns( )->get_column( 'ISTAT' ). lo_col_tab->set_color( ls_color ).
819 CATCH cx_salv_not_found.
820 ENDTRY.
821 TRY.
822 lo_col_tab ?= go_alv_data->get_columns( )->get_column( 'LANGU' ). lo_col_tab->set_color( ls_color ).
823 CATCH cx_salv_not_found.
824 ENDTRY.
825 TRY.
826 lo_col_tab ?= go_alv_data->get_columns( )->get_column( 'RSIGN' ). lo_col_tab->set_color( ls_color ).
827 CATCH cx_salv_not_found.
828 ENDTRY.
829 TRY.
830 lo_col_tab ?= go_alv_data->get_columns( )->get_column( 'RELAT' ). lo_col_tab->set_color( ls_color ).
831 CATCH cx_salv_not_found.
832 ENDTRY.
833 TRY.
834 lo_col_tab ?= go_alv_data->get_columns( )->get_column( 'PRIOX' ). lo_col_tab->set_color( ls_color ).
835 CATCH cx_salv_not_found.
836 ENDTRY.
837 TRY.
838 lo_col_tab ?= go_alv_data->get_columns( )->get_column( 'VARYF' ). lo_col_tab->set_color( ls_color ).
839 CATCH cx_salv_not_found.
840 ENDTRY.
841 go_alv_data->display( ).
842
843 ENDTRY.
844
845ENDFORM.
846
847*---------------------------------------------------------------------*
848* CLASS lcl_event_handler IMPLEMENTATION
849*---------------------------------------------------------------------*
850CLASS lcl_event_handler IMPLEMENTATION.
851
852 METHOD on_button.
853
854 CASE e_salv_function.
855
856 WHEN 'PROC_ALL'.
857
858 MESSAGE w398(00) WITH 'Are you sure you want to process all?'.
859 "20200218 Logonly functionality start of change
860* LOOP AT gt_logh INTO gw_logh WHERE reprocessed = '' AND
861* messages NE icon_message_uptodate AND
862* color IS INITIAL.
863 LOOP AT gt_logh INTO gw_logh WHERE reprocessed = '' AND
864 messages NE icon_message_uptodate AND
865 color IS INITIAL AND
866 status NE 'I'.
867
868 "End of change
869
870
871 gw_logh-reprocess = icon_okay.
872 gw_logh-reprocessed = 'X'.
873 gw_logh-confirm = ''.
874 MODIFY gt_logh FROM gw_logh.
875
876 PERFORM reprocess USING gw_logh.
877
878 ENDLOOP.
879
880 SORT gt_log BY batch seqnr.
881 SORT gt_logh BY batch.
882
883 alv->get_functions( )->set_function(
884 EXPORTING
885 name = 'PROC_ALL'
886 boolean = space
887 ).
888
889 alv->get_functions( )->set_function(
890 EXPORTING
891 name = 'CONF_ALL'
892 boolean = space
893 ).
894
895 WHEN 'CONF_ALL'.
896
897 MESSAGE w398(00) WITH 'Are you sure you want to confirm all?'.
898 "20200218 Logonly functionality start of change
899* LOOP AT gt_logh INTO gw_logh WHERE confirm <> ''.
900 LOOP AT gt_logh INTO gw_logh WHERE confirm <> '' AND status NE 'I'.
901
902 "End of change
903
904 gw_logh-reprocess = icon_okay.
905 gw_logh-confirm = ''.
906 MODIFY gt_logh FROM gw_logh.
907
908 PERFORM confirm USING gw_logh.
909
910 ENDLOOP.
911
912 WHEN 'MAP_TEST'.
913
914 PERFORM map_test.
915
916 WHEN OTHERS.
917
918 ENDCASE.
919
920 alv->refresh( ).
921
922 ENDMETHOD.
923
924 METHOD on_double_click.
925
926 DATA: ls_md_api_log TYPE zmd_api_log,
927 lv_extid TYPE balhdr-extnumber,
928 lv_tmp_batch TYPE char20.
929
930 CASE column.
931
932 WHEN 'DETAILS'.
933
934 CHECK row NE 0.
935 READ TABLE gt_logh INTO gw_logh INDEX row.
936 CHECK gw_logh-details IS NOT INITIAL.
937 PERFORM alv USING gw_logh.
938
939 WHEN 'CONTENT'.
940
941 CHECK row NE 0.
942 READ TABLE gt_logh INTO gw_logh INDEX row.
943 CHECK gw_logh-details IS NOT INITIAL.
944 PERFORM alv USING gw_logh.
945
946 WHEN 'REPROCESS'.
947
948 CHECK row NE 0.
949 READ TABLE gt_logh INTO gw_logh INDEX row.
950 CHECK gw_logh-reprocessed NE 'X'.
951 CHECK gw_logh-reprocess IS NOT INITIAL.
952 CHECK gw_logh-reprocess NE icon_okay.
953 CHECK gw_logh-messages NE icon_message_uptodate.
954
955 gw_logh-reprocess = icon_okay.
956 gw_logh-reprocessed = 'X'.
957 gw_logh-confirm = ''.
958 MODIFY gt_logh FROM gw_logh INDEX row.
959 PERFORM reprocess USING gw_logh.
960
961 SORT gt_log BY batch seqnr.
962 SORT gt_logh BY batch.
963
964 WHEN 'UNAME'.
965
966 CHECK row NE 0.
967 READ TABLE gt_logh INTO gw_logh INDEX row.
968 PERFORM uname_popup USING gw_logh.
969
970 WHEN 'DATA'.
971
972 CHECK row NE 0.
973 READ TABLE gt_log INTO gw_log WITH KEY batch = gw_logh-batch
974 appname = gw_logh-appname
975 pernr = gw_logh-pernr
976 datum = gw_logh-datum
977 uname = gw_logh-uname
978 seqnr = row.
979 PERFORM alvdata USING gw_log.
980
981 WHEN 'CONFIRM'.
982
983 CHECK row NE 0.
984 READ TABLE gt_logh INTO gw_logh INDEX row.
985 CHECK gw_logh-confirm IS NOT INITIAL.
986 gw_logh-reprocess = icon_okay.
987 gw_logh-reprocessed = 'X'.
988 gw_logh-confirm = ''.
989 MODIFY gt_logh FROM gw_logh INDEX row.
990 PERFORM confirm USING gw_logh.
991
992 WHEN 'REFERENCE_ID'.
993
994 CHECK row NE 0.
995 CHECK gw_logh-reference_id IS NOT INITIAL.
996 READ TABLE gt_logh INTO gw_logh INDEX row.
997 CHECK gw_logh-details IS NOT INITIAL.
998 PERFORM call_sxi_monitor USING gw_logh.
999
1000 WHEN OTHERS.
1001
1002 CHECK row NE 0.
1003 CLEAR lv_tmp_batch.
1004 READ TABLE gt_logh INTO gw_logh INDEX row.
1005 CHECK gw_logh-messages IS NOT INITIAL.
1006** Commented out to allow informative entries for log only records
1007** "20200218 Logonly functionality start of change
1008** CHECK gw_logh-status NE 'I'.
1009** "End of change
1010
1011 lv_tmp_batch = gw_logh-batch.
1012 lv_tmp_batch+17(3) = '*'.
1013
1014 CONCATENATE gw_logh-appname lv_tmp_batch INTO lv_extid SEPARATED BY '|'.
1015
1016 CALL FUNCTION 'APPL_LOG_DISPLAY'
1017 EXPORTING
1018 object = 'ZMD_API'
1019 subobject = 'INTERFACE'
1020 external_number = lv_extid
1021 suppress_selection_dialog = 'X'
1022 date_from = gw_logh-datum
1023 date_to = gw_logh-datum
1024 time_from = '000000'
1025 time_to = '235959'
1026 EXCEPTIONS
1027 no_authority = 1
1028 OTHERS = 2.
1029
1030
1031 ENDCASE.
1032
1033 alv->refresh( ).
1034
1035 ENDMETHOD.
1036
1037ENDCLASS.
1038
1039FORM reprocess USING pu_logh TYPE ty_logh.
1040
1041 DATA: lo_object TYPE REF TO object,
1042 lv_classname TYPE seoclsname.
1043
1044 DATA: lt_reprotab TYPE TABLE OF zmd_api_log,
1045 lw_reprotab TYPE zmd_api_log.
1046
1047 DATA: lr_dref TYPE REF TO data,
1048 lr_rowtype TYPE REF TO cl_abap_structdescr,
1049 lr_tabtype TYPE REF TO cl_abap_tabledescr.
1050
1051 DATA: lv_linetype TYPE ddobjname.
1052 DATA: lv_linetype2 TYPE ddobjname.
1053
1054 DATA: lo_alv_data TYPE REF TO cl_salv_table.
1055
1056 DATA: ls_control TYPE zapi_control.
1057
1058 DATA: lv_is_om TYPE c.
1059
1060 FIELD-SYMBOLS: <pnnnn_tab> TYPE STANDARD TABLE.
1061 FIELD-SYMBOLS: <pnnnn> TYPE any.
1062 FIELD-SYMBOLS: <pnnnn2> TYPE any.
1063 FIELD-SYMBOLS: <old_pnnnn> TYPE any.
1064
1065 DATA: ls_cats_add TYPE zapi_cats_add_fields.
1066
1067 FIELD-SYMBOLS: <field> TYPE any.
1068
1069 DATA: ls_0000 TYPE zapi_0000,
1070 ls_0001 TYPE zapi_0001,
1071 ls_0002 TYPE zapi_0002.
1072
1073 DATA lv_new_pernr TYPE persno.
1074
1075 lv_classname = 'ZCL_MD_API'.
1076 CREATE OBJECT lo_object TYPE (lv_classname).
1077
1078 MOVE gt_log TO lt_reprotab.
1079
1080 DELETE lt_reprotab WHERE NOT ( batch EQ pu_logh-batch AND
1081 appname EQ pu_logh-appname AND
1082 pernr EQ pu_logh-pernr AND
1083 datum EQ pu_logh-datum AND
1084 uname EQ pu_logh-uname AND
1085 reprocessed NE 'X').
1086
1087 ls_control-no_paused_check = 'X'.
1088
1089
1090*process hire action
1091 LOOP AT lt_reprotab INTO lw_reprotab WHERE method CP 'BUFFER_ACTION_HIRE'.
1092 ls_control-external_id = lw_reprotab-epernr.
1093 CASE lw_reprotab-infty.
1094
1095 WHEN '0000'.
1096
1097 ls_control-umode = lw_reprotab-umode.
1098 ls_control-apptype = 'I'.
1099 ls_control-appname = lw_reprotab-appname.
1100 ls_control-reference_id = lw_reprotab-reference_id.
1101
1102 SPLIT lw_reprotab-data AT '|' INTO TABLE DATA(lt_split0).
1103
1104 LOOP AT lt_split0 INTO DATA(lw_splitf0).
1105
1106 ASSIGN COMPONENT sy-tabix OF STRUCTURE ls_0000 TO <field>.
1107 IF sy-subrc <> 0. EXIT. ENDIF.
1108 <field> = lw_splitf0.
1109
1110 ENDLOOP.
1111
1112 WHEN '0001'.
1113
1114 SPLIT lw_reprotab-data AT '|' INTO TABLE DATA(lt_split1).
1115
1116 LOOP AT lt_split1 INTO DATA(lw_splitf1).
1117
1118 ASSIGN COMPONENT sy-tabix OF STRUCTURE ls_0001 TO <field>.
1119 IF sy-subrc <> 0. EXIT. ENDIF.
1120 <field> = lw_splitf1.
1121
1122 ENDLOOP.
1123
1124 WHEN '0002'.
1125
1126 SPLIT lw_reprotab-data AT '|' INTO TABLE DATA(lt_split2).
1127
1128 LOOP AT lt_split2 INTO DATA(lw_splitf2).
1129
1130 ASSIGN COMPONENT sy-tabix OF STRUCTURE ls_0002 TO <field>.
1131 IF sy-subrc <> 0. EXIT. ENDIF.
1132 <field> = lw_splitf2.
1133
1134 ENDLOOP.
1135
1136 IF lw_reprotab-secondary IS NOT INITIAL.
1137 SPLIT lw_reprotab-secondary AT '|' INTO TABLE DATA(lt_splitsec).
1138 READ TABLE lt_splitsec INDEX 2 INTO DATA(lw_splitsec).
1139 IF sy-subrc EQ 0.
1140 lv_linetype = 'ZAPI_' && lw_splitsec.
1141 lr_rowtype ?= cl_abap_typedescr=>describe_by_name( lv_linetype ).
1142 lr_tabtype ?= cl_abap_tabledescr=>get( p_line_type = lr_rowtype ).
1143 CREATE DATA lr_dref TYPE HANDLE lr_rowtype.
1144 ASSIGN lr_dref->* TO FIELD-SYMBOL(<pnnnns>).
1145
1146 LOOP AT lt_splitsec INTO lw_splitsec.
1147
1148 ASSIGN COMPONENT sy-tabix OF STRUCTURE <pnnnns> TO <field>.
1149 IF sy-subrc <> 0. EXIT. ENDIF.
1150 <field> = lw_splitsec.
1151
1152 ENDLOOP.
1153 ASSIGN <pnnnns> TO <pnnnn2>.
1154 ENDIF.
1155
1156 ENDIF.
1157
1158 WHEN OTHERS.
1159
1160 ENDCASE.
1161
1162 ENDLOOP.
1163
1164 IF sy-subrc = 0.
1165 IF <pnnnn2> IS ASSIGNED.
1166 CALL METHOD lo_object->('BUFFER_ACTION_HIRE')
1167 EXPORTING
1168 control = ls_control
1169 record_0 = ls_0000
1170 record_1 = ls_0001
1171 record_2 = ls_0002
1172 secondary = <pnnnn2>
1173 IMPORTING
1174 new_pernr = lv_new_pernr.
1175 ELSE.
1176 CALL METHOD lo_object->('BUFFER_ACTION_HIRE')
1177 EXPORTING
1178 control = ls_control
1179 record_0 = ls_0000
1180 record_1 = ls_0001
1181 record_2 = ls_0002
1182 IMPORTING
1183 new_pernr = lv_new_pernr.
1184 ENDIF.
1185 ENDIF.
1186
1187*process any other action
1188 LOOP AT lt_reprotab INTO lw_reprotab WHERE method CP 'BUFFER_ACTION_ANY'.
1189 ls_control-external_id = lw_reprotab-epernr.
1190 CASE lw_reprotab-infty.
1191
1192 WHEN '0000'.
1193
1194 ls_control-umode = lw_reprotab-umode.
1195 ls_control-apptype = 'I'.
1196 ls_control-appname = lw_reprotab-appname.
1197 ls_control-reference_id = lw_reprotab-reference_id.
1198
1199 SPLIT lw_reprotab-data AT '|' INTO TABLE DATA(lt_split0any).
1200
1201 LOOP AT lt_split0any INTO DATA(lw_splitf0any).
1202
1203 ASSIGN COMPONENT sy-tabix OF STRUCTURE ls_0000 TO <field>.
1204 IF sy-subrc <> 0. EXIT. ENDIF.
1205 <field> = lw_splitf0any.
1206
1207 ENDLOOP.
1208
1209 WHEN '0001'.
1210
1211 SPLIT lw_reprotab-data AT '|' INTO TABLE DATA(lt_split1any).
1212
1213 LOOP AT lt_split1any INTO DATA(lw_splitf1any).
1214
1215 ASSIGN COMPONENT sy-tabix OF STRUCTURE ls_0001 TO <field>.
1216 IF sy-subrc <> 0. EXIT. ENDIF.
1217 <field> = lw_splitf1any.
1218
1219 ENDLOOP.
1220
1221 WHEN OTHERS.
1222
1223 ENDCASE.
1224
1225 ENDLOOP.
1226
1227 IF sy-subrc = 0.
1228
1229 IF lv_new_pernr IS NOT INITIAL.
1230
1231 ls_0000-pernr = lv_new_pernr.
1232 ls_0001-pernr = lv_new_pernr.
1233
1234 ENDIF.
1235
1236 CALL METHOD lo_object->('BUFFER_ACTION_ANY')
1237 EXPORTING
1238 control = ls_control
1239 record_0 = ls_0000
1240 record_1 = ls_0001.
1241
1242 ENDIF.
1243
1244 lv_is_om = ''.
1245
1246 LOOP AT lt_reprotab INTO lw_reprotab WHERE method CP 'BUFFER_++++'.
1247
1248 ls_control-umode = lw_reprotab-umode.
1249 ls_control-apptype = 'I'.
1250 ls_control-appname = lw_reprotab-appname.
1251 ls_control-reference_id = lw_reprotab-reference_id.
1252 ls_control-external_id = lw_reprotab-epernr.
1253
1254 lv_linetype = 'ZAPI_' && lw_reprotab-infty.
1255 lr_rowtype ?= cl_abap_typedescr=>describe_by_name( lv_linetype ).
1256 lr_tabtype ?= cl_abap_tabledescr=>get( p_line_type = lr_rowtype ).
1257
1258 CREATE DATA lr_dref TYPE HANDLE lr_rowtype.
1259 ASSIGN lr_dref->* TO <pnnnn>.
1260
1261 CREATE DATA lr_dref TYPE HANDLE lr_rowtype.
1262 ASSIGN lr_dref->* TO <old_pnnnn>.
1263
1264 CREATE DATA lr_dref TYPE HANDLE lr_tabtype.
1265 ASSIGN lr_dref->* TO <pnnnn_tab>.
1266
1267 IF lw_reprotab-secondary IS NOT INITIAL.
1268 SPLIT lw_reprotab-secondary AT '|' INTO TABLE DATA(lt_splitsecondary).
1269 READ TABLE lt_splitsecondary INDEX 2 INTO DATA(lw_splitsecondary).
1270 IF sy-subrc EQ 0 AND lw_splitsecondary IS NOT INITIAL.
1271 lv_linetype2 = 'ZAPI_' && lw_splitsecondary.
1272 lr_rowtype ?= cl_abap_typedescr=>describe_by_name( lv_linetype2 ).
1273 lr_tabtype ?= cl_abap_tabledescr=>get( p_line_type = lr_rowtype ).
1274 CREATE DATA lr_dref TYPE HANDLE lr_rowtype.
1275 ASSIGN lr_dref->* TO <pnnnn2>.
1276
1277 LOOP AT lr_rowtype->components INTO DATA(lw_components).
1278
1279 READ TABLE lt_splitsecondary INTO DATA(lv_fields) INDEX sy-tabix.
1280 IF sy-subrc <> 0. EXIT. ENDIF.
1281 ASSIGN COMPONENT sy-tabix OF STRUCTURE <pnnnn2> TO FIELD-SYMBOL(<fields>).
1282 IF sy-subrc <> 0. EXIT. ENDIF.
1283 <fields> = lv_fields.
1284
1285 ENDLOOP.
1286
1287 ENDIF.
1288 ENDIF.
1289*deconstruct record from log data
1290 SPLIT lw_reprotab-data AT '|' INTO TABLE DATA(lt_split).
1291
1292 LOOP AT lr_rowtype->components INTO DATA(lw_component).
1293
1294 READ TABLE lt_split INTO DATA(lv_field) INDEX sy-tabix.
1295 IF sy-subrc <> 0. EXIT. ENDIF.
1296 ASSIGN COMPONENT sy-tabix OF STRUCTURE <pnnnn> TO <field>.
1297 IF sy-subrc <> 0. EXIT. ENDIF.
1298 <field> = lv_field.
1299
1300 ENDLOOP.
1301
1302 REFRESH lt_split.
1303
1304*deconstruct old_record from log additional datta
1305 SPLIT lw_reprotab-data_add AT '|' INTO TABLE lt_split.
1306
1307 LOOP AT lr_rowtype->components INTO lw_component.
1308
1309 READ TABLE lt_split INTO lv_field INDEX sy-tabix.
1310 IF sy-subrc <> 0. EXIT. ENDIF.
1311 ASSIGN COMPONENT sy-tabix OF STRUCTURE <old_pnnnn> TO <field>.
1312 IF sy-subrc <> 0. EXIT. ENDIF.
1313 <field> = lv_field.
1314
1315 ENDLOOP.
1316
1317 IF lv_new_pernr IS NOT INITIAL.
1318
1319 ls_0000-pernr = lv_new_pernr.
1320 ls_0001-pernr = lv_new_pernr.
1321
1322 ENDIF.
1323
1324 ASSIGN COMPONENT 'PERNR' OF STRUCTURE <pnnnn> TO <field>.
1325
1326 IF lv_new_pernr IS NOT INITIAL.
1327 <field> = lv_new_pernr.
1328 ENDIF.
1329 IF <pnnnn2> IS ASSIGNED.
1330 CALL METHOD lo_object->(lw_reprotab-method)
1331 EXPORTING
1332 control = ls_control
1333 record = <pnnnn>
1334 old_record = <old_pnnnn>
1335 secondary = <pnnnn2>.
1336 ELSE.
1337 CALL METHOD lo_object->(lw_reprotab-method)
1338 EXPORTING
1339 control = ls_control
1340 record = <pnnnn>
1341 old_record = <old_pnnnn>.
1342
1343 ENDIF.
1344
1345
1346 IF lw_reprotab-method CP 'BUFFER_1+++'.
1347 lv_is_om = 'X'.
1348 ENDIF.
1349
1350 ENDLOOP.
1351
1352 LOOP AT lt_reprotab INTO lw_reprotab WHERE method CP 'CATS_++++'.
1353
1354 ls_control-umode = lw_reprotab-umode.
1355 ls_control-apptype = 'I'.
1356 ls_control-appname = lw_reprotab-appname.
1357 ls_control-reference_id = lw_reprotab-reference_id.
1358 ls_control-external_id = lw_reprotab-epernr.
1359
1360 lv_linetype = 'ZAPI_' && lw_reprotab-infty.
1361 lr_rowtype ?= cl_abap_typedescr=>describe_by_name( lv_linetype ).
1362 lr_tabtype ?= cl_abap_tabledescr=>get( p_line_type = lr_rowtype ).
1363
1364 CREATE DATA lr_dref TYPE HANDLE lr_rowtype.
1365 ASSIGN lr_dref->* TO <pnnnn>.
1366
1367 CREATE DATA lr_dref TYPE HANDLE lr_tabtype.
1368 ASSIGN lr_dref->* TO <pnnnn_tab>.
1369
1370 REFRESH lt_split.
1371 SPLIT lw_reprotab-data AT '|' INTO TABLE lt_split.
1372 SPLIT lw_reprotab-data_add AT '|' INTO TABLE DATA(lt_split_add).
1373
1374 CLEAR: lw_component, lv_field.
1375 LOOP AT lr_rowtype->components INTO lw_component.
1376
1377 READ TABLE lt_split INTO lv_field INDEX sy-tabix.
1378 IF sy-subrc <> 0. EXIT. ENDIF.
1379 ASSIGN COMPONENT sy-tabix OF STRUCTURE <pnnnn> TO <field>.
1380 IF sy-subrc <> 0. EXIT. ENDIF.
1381 <field> = lv_field.
1382
1383 ENDLOOP.
1384
1385 CLEAR ls_cats_add.
1386 LOOP AT lt_split_add INTO DATA(lw_split_add).
1387
1388 ASSIGN COMPONENT sy-tabix OF STRUCTURE ls_cats_add TO <field>.
1389 IF sy-subrc <> 0. EXIT. ENDIF.
1390 <field> = lw_split_add.
1391
1392 ENDLOOP.
1393
1394 IF lv_new_pernr IS NOT INITIAL.
1395
1396 ls_0000-pernr = lv_new_pernr.
1397 ls_0001-pernr = lv_new_pernr.
1398
1399 ENDIF.
1400
1401 ASSIGN COMPONENT 'PERNR' OF STRUCTURE <pnnnn> TO <field>.
1402
1403 IF lv_new_pernr IS NOT INITIAL.
1404 <field> = lv_new_pernr.
1405 ENDIF.
1406
1407 CALL METHOD lo_object->(lw_reprotab-method)
1408 EXPORTING
1409 record = <pnnnn>
1410 CHANGING
1411 control = ls_control
1412 additional = ls_cats_add.
1413
1414 ENDLOOP.
1415
1416 ls_control-umode = ''.
1417 ls_control-apptype = 'I'.
1418 ls_control-appname = lw_reprotab-appname.
1419 ls_control-batch = lw_reprotab-batch.
1420 ls_control-reference_id = lw_reprotab-reference_id.
1421 ls_control-external_id = lw_reprotab-epernr.
1422 IF lv_is_om EQ 'X'.
1423 CALL METHOD lo_object->('PROCESS_BUFFER_OM')
1424 EXPORTING
1425 control = ls_control.
1426 ELSE.
1427 CALL METHOD lo_object->('PROCESS_BUFFER')
1428 EXPORTING
1429 control = ls_control.
1430 ENDIF.
1431
1432 LOOP AT lt_reprotab INTO lw_reprotab.
1433 lw_reprotab-reprocessed = 'X'.
1434 MODIFY lt_reprotab FROM lw_reprotab.
1435 ENDLOOP.
1436
1437 MODIFY zmd_api_log FROM TABLE lt_reprotab.
1438
1439 PERFORM fetch_new USING ls_control.
1440
1441ENDFORM.
1442
1443FORM confirm USING pu_logh TYPE ty_logh.
1444
1445 DATA: lt_reprotab TYPE TABLE OF zmd_api_log,
1446 lw_reprotab TYPE zmd_api_log.
1447
1448 MOVE gt_log TO lt_reprotab.
1449
1450 DELETE lt_reprotab WHERE NOT ( batch EQ pu_logh-batch AND
1451 appname EQ pu_logh-appname AND
1452 pernr EQ pu_logh-pernr AND
1453 datum EQ pu_logh-datum AND
1454 uname EQ pu_logh-uname AND
1455 reprocessed NE 'X').
1456
1457 LOOP AT lt_reprotab INTO lw_reprotab.
1458 lw_reprotab-reprocessed = 'X'.
1459 MODIFY lt_reprotab FROM lw_reprotab.
1460 ENDLOOP.
1461
1462 MODIFY zmd_api_log FROM TABLE lt_reprotab.
1463
1464ENDFORM.
1465
1466FORM uname_popup USING pu_logh TYPE ty_logh.
1467
1468 CALL FUNCTION 'BAPI_USER_DISPLAY'
1469 EXPORTING
1470 username = pu_logh-uname.
1471
1472ENDFORM.
1473
1474FORM map_test.
1475
1476 DATA: ls_control TYPE zapi_control,
1477 lv_infty TYPE string,
1478 lv_pernr TYPE persno,
1479 lv_molga TYPE molga,
1480 lv_begda TYPE sy-datum,
1481 lv_endda TYPE sy-datum.
1482
1483 DATA: lt_color TYPE lvc_t_scol,
1484 lw_color TYPE lvc_s_scol.
1485
1486 FIELD-SYMBOLS <lbegda> TYPE string.
1487 FIELD-SYMBOLS <lendda> TYPE string.
1488 FIELD-SYMBOLS <t_color> TYPE lvc_t_scol.
1489
1490 DATA(lo_mapper) = zcl_md_api=>get_instance( ).
1491
1492 READ TABLE <pnnnn_tab> INTO <pnnnn> INDEX 1.
1493
1494 ls_control-appname = gw_log-appname.
1495 MOVE gw_log-pernr TO lv_pernr.
1496 MOVE gw_log-infty TO lv_infty.
1497 ASSIGN COMPONENT 'BEGDA' OF STRUCTURE <pnnnn> TO <lbegda>.
1498 ASSIGN COMPONENT 'ENDDA' OF STRUCTURE <pnnnn> TO <lendda>.
1499
1500 MOVE <lbegda> TO lv_begda.
1501 MOVE <lendda> TO lv_endda.
1502
1503 CALL FUNCTION 'H99L_SEL_MOLGA'
1504 EXPORTING
1505 pernr = lv_pernr
1506 begda = lv_begda
1507 endda = lv_endda
1508 IMPORTING
1509 molga = lv_molga
1510 EXCEPTIONS
1511 not_found = 1
1512 OTHERS = 2.
1513
1514 REFRESH lt_color.
1515
1516 LOOP AT gr_rowtype->components INTO DATA(lw_component).
1517
1518 CHECK lw_component-name <> 'COLOR'.
1519
1520 ASSIGN COMPONENT lw_component-name OF STRUCTURE <pnnnn> TO <field>.
1521 ASSIGN COMPONENT lw_component-name OF STRUCTURE <mpnnnn> TO <mfield>.
1522
1523 lo_mapper->map_one(
1524 EXPORTING
1525 control = ls_control
1526 molga = lv_molga
1527 pernr = lv_pernr
1528 infotype = lv_infty
1529 field = lw_component-name
1530 record_in = <pnnnn>
1531 value_in = <field>
1532 IMPORTING
1533 value_out = <mfield>
1534 ).
1535
1536 IF <mfield> <> <field>.
1537
1538 lw_color-fname = lw_component-name.
1539 lw_color-color-col = 5.
1540 lw_color-color-int = 0.
1541 lw_color-color-inv = 0.
1542
1543 APPEND lw_color TO lt_color.
1544
1545 ENDIF.
1546
1547 IF sy-subrc <> 0. EXIT. ENDIF.
1548
1549 ENDLOOP.
1550
1551 ASSIGN COMPONENT 'COLOR' OF STRUCTURE <mpnnnn> TO <t_color>.
1552 <t_color> = lt_color.
1553 UNASSIGN <t_color>.
1554
1555 TRY.
1556 DELETE <pnnnn_tab> INDEX 2.
1557 ENDTRY.
1558 APPEND <mpnnnn> TO <pnnnn_tab>.
1559
1560 go_alv_data->get_columns( )->set_optimize( ).
1561 go_alv_data->refresh( ).
1562
1563ENDFORM.
1564
1565FORM fetch_new USING pu_control TYPE zapi_control.
1566
1567 DATA: lt_log_new TYPE TABLE OF zmd_api_log,
1568 lw_log_new TYPE zmd_api_log,
1569 lv_batchlow TYPE zmd_api_log-batch,
1570 lv_batchhigh TYPE zmd_api_log-batch,
1571 ls_logh_new TYPE ty_logh,
1572 ls_color_new TYPE lvc_s_scol,
1573 lv_extid TYPE balhdr-extnumber,
1574 lt_messages TYPE TABLE OF balm.
1575
1576 DATA: lt_inftylist TYPE TABLE OF ty_inftylist,
1577 lw_inftylist TYPE ty_inftylist.
1578
1579
1580 lv_batchlow = pu_control-batch(17) && '000'.
1581 lv_batchhigh = pu_control-batch(17) && '999'.
1582
1583 ls_color_new-color-col = col_total.
1584 ls_color_new-color-int = 0.
1585 ls_color_new-color-inv = 0.
1586
1587 SELECT *
1588 FROM zmd_api_log
1589 INTO TABLE lt_log_new
1590 WHERE ( batch BETWEEN lv_batchlow AND
1591 lv_batchhigh ) AND
1592 batch GT pu_control-batch AND
1593 appname EQ pu_control-appname.
1594
1595 LOOP AT lt_log_new INTO lw_log_new.
1596 MOVE-CORRESPONDING lw_log_new TO ls_logh_new.
1597 ls_logh_new-reprocess = icon_system_play.
1598 ls_logh_new-confirm = icon_set_state.
1599 ls_logh_new-details = icon_doc_item_detail.
1600 APPEND ls_color_new TO ls_logh_new-color.
1601 EXIT.
1602 ENDLOOP.
1603
1604 IF ls_logh_new-status = 'E'.
1605
1606 ls_logh_new-messages = icon_message_orphaned.
1607
1608 ELSE.
1609
1610 ls_logh_new-messages = icon_message_uptodate.
1611 ls_logh_new-reprocess = ''.
1612 ls_logh_new-confirm = ''.
1613
1614 ENDIF.
1615
1616 IF ls_logh_new-status = 'W'.
1617
1618 ls_logh_new-messages = icon_message_outofdate.
1619 ls_logh_new-reprocess = icon_system_play.
1620 ls_logh_new-confirm = icon_set_state.
1621
1622 ENDIF.
1623
1624 APPEND LINES OF lt_log_new TO gt_log.
1625
1626 MOVE-CORRESPONDING lt_log_new[] TO lt_inftylist[].
1627 SORT lt_inftylist[].
1628 DELETE ADJACENT DUPLICATES FROM lt_inftylist[].
1629
1630 CLEAR ls_logh_new-content.
1631
1632 LOOP AT lt_inftylist INTO lw_inftylist.
1633
1634 CONCATENATE ls_logh_new-content lw_inftylist-infty INTO ls_logh_new-content SEPARATED BY space.
1635
1636 ENDLOOP.
1637
1638 APPEND ls_logh_new TO gt_logh.
1639
1640ENDFORM.
1641
1642FORM call_sxi_monitor USING pu_logh TYPE ty_logh.
1643
1644 CALL FUNCTION 'SXMB_DISPLAY_MESSAGE_MONITOR'
1645 EXPORTING
1646 im_message_id = pu_logh-reference_id
1647* IM_PIPELINE_ID =
1648 EXCEPTIONS
1649 message_not_found = 1
1650 not_authorized = 2
1651 OTHERS = 3.
1652
1653 IF sy-subrc <> 0.
1654* Implement suitable error handling here
1655 ENDIF.
1656
1657ENDFORM.