- REPORT znadar_auditoria_notas.
- TABLES: cwbnthead,
- cwbntcust,
- cwbntmsg,
- CMP_VBFS_EXT,
- cwbntstxt.
- TYPES: BEGIN OF ty_notes,
- numm TYPE cwbntnumm,
- versno TYPE cwbntvers,
- ntstatus TYPE cwbntstat,
- prstatus TYPE cwbprstat,
- cwbuser TYPE uname ,
- langu TYPE sylangu,
- uname TYPE syuname,
- fecha type sy-datum,
- hora type sy-uzeit,
- stext TYPE cwbntstext,
- msg TYPE bapi_msg,
- END OF ty_notes.
- SELECT-OPTIONS: s_num FOR cwbntcust-numm,
- s_nt FOR cwbntcust-ntstatus,
- s_pr FOR cwbntcust-prstatus,
- s_user FOR cwbntcust-cwbuser,
- s_msg for CMP_VBFS_EXT-message LOWER CASE.
- DATA: t_cust TYPE STANDARD TABLE OF ty_notes,
- l_cust_01 TYPE ty_notes,
- l_cust_02 TYPE ty_notes,
- t_cust_final TYPE STANDARD TABLE OF ty_notes.
- class lcl_event_handler definition.
- PUBLIC SECTION.
- ** METHODS: on_double_click for event double_click of cl_gui_alv_grid
- ** IMPORTING es_row_no e_column.
- METHODS:
- on_DOUBLE_CLICK
- FOR EVENT DOUBLE_CLICK OF cl_salv_events_table
- IMPORTING
- row
- column .
- ENDCLASS.
- class lcl_event_handler IMPLEMENTATION.
- METHOD on_double_click.
- BREAK-POINT.
- read table t_cust into l_cust_01 INDEX row.
- check sy-subrc = 0.
- data: ls_note type BCWBN_NOTE.
- MOVE-CORRESPONDING l_cust_01 to ls_note-key.
- CALL FUNCTION 'SCWB_NA_SCREEN'
- CHANGING
- cs_note = ls_note
- EXCEPTIONS
- ERROR = 1
- OTHERS = 2.
- ENDMETHOD.
- endclass.
- INITIALIZATION.
- s_pr-sign = 'E'.
- s_pr-option = 'EQ'.
- s_pr-low = 'O'.
- APPEND s_pr.
- s_pr-low = 'V'.
- APPEND s_pr.
- s_nt-sign = 'E'.
- s_nt-option = 'EQ'.
- s_nt-low = 'R'.
- APPEND s_nt.
- END-OF-SELECTION.
- SELECT * FROM cwbntcust AS a
- INNER JOIN cwbnthead AS b
- ON b~numm = a~numm
- INNER JOIN cwbntstxt AS c
- ON c~numm = a~numm AND
- c~versno = b~versno
- INTO CORRESPONDING FIELDS OF TABLE t_cust
- WHERE a~numm IN s_num
- AND a~ntstatus IN s_nt
- AND a~prstatus IN s_pr
- AND a~cwbuser IN s_user.
- SORT t_cust BY numm ASCENDING
- versno DESCENDING.
- DELETE ADJACENT DUPLICATES FROM t_cust.
- *--[ Eliminamos versiones obsoletas
- LOOP AT t_cust INTO l_cust_01.
- READ TABLE t_cust_final INTO l_cust_02
- WITH KEY numm = l_cust_01-numm
- versno = l_cust_01-versno
- langu = l_cust_01-langu.
- IF sy-subrc EQ 0.
- CONTINUE.
- ELSE.
- CLEAR sy-pagno.
- LOOP AT t_cust_final INTO l_cust_02 WHERE numm = l_cust_01-numm.
- IF l_cust_02-versno <= l_cust_01-versno.
- sy-pagno = 1.
- ENDIF.
- ENDLOOP.
- IF sy-pagno = 1 OR sy-subrc NE 0.
- APPEND l_cust_01 TO t_cust_final.
- ENDIF.
- ENDIF.
- ENDLOOP.
- t_cust[] = t_cust_final[].
- *--[ Eliminamos idiomas obsoletos.
- DATA: del(1).
- LOOP AT t_cust INTO l_cust_01.
- CLEAR del.
- sy-pagno = sy-tabix.
- CASE l_cust_01-langu.
- WHEN 'S' OR 'c'.
- WHEN 'D'.
- READ TABLE t_cust INTO l_cust_02
- WITH KEY numm = l_cust_01-numm
- versno = l_cust_01-versno
- langu = 'E'.
- IF sy-subrc EQ 0.
- del = 'X'.
- ENDIF.
- WHEN 'E'.
- READ TABLE t_cust INTO l_cust_02
- WITH KEY numm = l_cust_01-numm
- versno = l_cust_01-versno
- langu = 'S'.
- IF sy-subrc EQ 0.
- del = 'X'.
- ENDIF.
- WHEN 'J' OR 'C' OR 'Z1'.
- READ TABLE t_cust INTO l_cust_02
- WITH KEY numm = l_cust_01-numm
- versno = l_cust_01-versno
- langu = 'E'.
- IF sy-subrc EQ 0.
- del = 'X'.
- ENDIF.
- ENDCASE.
- IF NOT del IS INITIAL.
- DELETE t_cust INDEX sy-pagno.
- ELSE.
- DATA: l_cwbntmsg TYPE cwbntmsg.
- clear: l_cwbntmsg, sy-lisel.
- SELECT counter sysid msgid msgty msgno msgv1
- msgv2 msgv3 msgv4 uname tstamp
- FROM cwbntmsg
- UP TO 1 ROWS
- INTO CORRESPONDING FIELDS OF l_cwbntmsg
- WHERE numm = l_cust_01-numm
- ORDER BY counter DESCENDING.
- * MOVE-CORRESPONDING l_cwbntmsg to l_cust_01.
- l_cust_01-uname = l_cwbntmsg-uname.
- sy-lisel = l_cwbntmsg-tstamp.
- CONDENSE sy-lisel NO-GAPS.
- l_cust_01-fecha = sy-lisel+0(8).
- l_cust_01-hora = sy-lisel+8(6).
- CALL FUNCTION 'MESSAGE_TEXT_BUILD'
- EXPORTING
- msgid = l_cwbntmsg-msgid
- msgnr = l_cwbntmsg-msgno
- msgv1 = l_cwbntmsg-msgv1
- msgv2 = l_cwbntmsg-msgv2
- msgv3 = l_cwbntmsg-msgv3
- msgv4 = l_cwbntmsg-msgv4
- IMPORTING
- message_text_output = l_cust_01-msg.
- CONDENSE l_cust_01-msg.
- if l_cust_01-msg in s_msg.
- else.
- delete t_cust INDEX sy-pagno .
- continue.
- endif.
- MODIFY t_cust INDEX sy-pagno FROM l_cust_01.
- ENDSELECT.
- ENDIF.
- ENDLOOP.
- sort t_cust by fecha DESCENDING
- hora DESCENDING
- numm DESCENDING.
- DATA lo_alv TYPE REF TO cl_salv_table.
- DATA lex_message TYPE REF TO cx_salv_msg.
- DATA lo_layout_settings TYPE REF TO cl_salv_layout.
- DATA lo_layout_key TYPE salv_s_layout_key.
- DATA lo_columns TYPE REF TO cl_salv_columns_table.
- DATA lo_column TYPE REF TO cl_salv_column.
- DATA lex_not_found TYPE REF TO cx_salv_not_found.
- DATA lo_functions TYPE REF TO cl_salv_functions_list.
- DATA lo_display_settings TYPE REF TO cl_salv_display_settings.
- data: gr_events type ref to lcl_event_handler.
- data: lr_events type ref to cl_salv_events_table.
- TRY.
- cl_salv_table=>factory(
- IMPORTING
- r_salv_table = lo_alv
- CHANGING
- t_table = t_cust ).
- CATCH cx_salv_msg INTO lex_message.
- ENDTRY.
- lo_layout_settings = lo_alv->get_layout( ).
- lo_layout_key-report = sy-repid.
- lo_layout_settings->set_key( lo_layout_key ).
- lo_layout_settings->set_save_restriction( if_salv_c_layout=>restrict_none ).
- lo_functions = lo_alv->get_functions( ).
- lo_functions->set_all( ).
- lo_columns = lo_alv->get_columns( ).
- lo_columns->set_optimize( ).
- lo_display_settings = lo_alv->get_display_settings( ).
- lo_display_settings->set_striped_pattern( if_salv_c_bool_sap=>true ).
- lo_display_settings->set_list_header( 'OSS SNOTEs' ).
- lr_events = lo_alv->get_event( ).
- create object gr_events.
- set handler gr_events->on_double_click for lr_events.
- lo_alv->display( ).
Última modificación de la página el 22 April 2016 a las 08h27
Powered by
PmWiki