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