Quantcast
Channel: ABAP Development
Viewing all articles
Browse latest Browse all 948

Monitoring the SCC4 transaction

$
0
0

Hi,

I found it interesting to share this code because it serves to monitor the SCC4 , it is a transaction that opens the SAP environment to change ... where they can be made ​​without request.

This can cause several problems with audit inconsistency environments ... We will have a table that stores user data and email that will receive the notification.

After a job is triggered to run Z program at this point if the environment is open, it will trigger an email displaying the environment and principal for people registered in the table.


Steps:

1 - Create Table

Table: ZBASIS_DEST_MAIL

 

MANDMANDTCLNT30Client
USUARIOXUBNAMECHAR120User Name in User Master Record
EMAILAD_SMTPADRCHAR2410E-Mail Address


2 - Create program
ABAP:


*&---------------------------------------------------------------------*
*& Report  ZJOB_STATUS_SCC4
*&
*&---------------------------------------------------------------------*
*& mail: tobias@tolfo.com.br
*&phone: +55 5599510981
*&---------------------------------------------------------------------*
REPORT  ZJOB_STATUS_SCC4.
TABLES: T000.
TYPES: BEGIN OF ty_tbtco,            jobname   TYPE tbtco-jobname,            sdlstrtdt TYPE tbtco-sdlstrtdt,            sdlstrttm TYPE tbtco-sdlstrttm,       END OF ty_tbtco.
TYPES: BEGIN OF ty_tbtcom,            sdlstrtdt TYPE tbtco-sdlstrtdt,            sdlstrttm TYPE tbtco-sdlstrttm,       END OF ty_tbtcom.
DATA: it_t000      TYPE TABLE OF t000,      gt_tbtco     TYPE TABLE OF ty_tbtco,      gt_dest_mail TYPE TABLE OF zbasis_dest_mail.
DATA: wa_dest_mail  TYPE  zbasis_dest_mail,      wa_t000       TYPE t000,      wa_tbtco      TYPE ty_tbtco.
*validacao dos parametros
PERFORM parameters_t000.
*&---------------------------------------------------------------------*
*&      Form  parameters
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM parameters_t000 .
* Ini.1- Seleciona os mandantes que estao abertos
 SELECT *   FROM t000   INTO TABLE it_t000   WHERE CCCORACTIV <> '2' OR CCNOCLIIND <> '3'.
* End.1
* Ini.2 - Verifica se existe algum ambiente aberto, se verdadeiro ele vai selecionar
* os emails que devem receber a notificacao, caso contrario nao executa o programa.    IF it_t000 IS NOT INITIAL.        PERFORM select_mail.    ELSE.         EXIT.    ENDIF.
* End.2
ENDFORM.                    " parameters_t000
*&---------------------------------------------------------------------*
*&      Form  SELECIONA_EMAIL
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM select_mail .
* Ini. 3 - Seleciona os emails
 SELECT *  FROM ZBASIS_DEST_MAIL  INTO TABLE gt_dest_mail.
* End. 3
* Ini 4. Verifica se existe algum email cadastrado para enviar a notificacao.
* e realiza a chamada.  IF gt_dest_mail[] IS INITIAL.    MESSAGE text-003 TYPE 'S'.    STOP.  ENDIF.  PERFORM send_mail.
ENDFORM.                    " select_mail
*&---------------------------------------------------------------------*
*&      Form  send_mail
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM send_mail .  DATA: lt_receivers TYPE TABLE OF somlreci1,        lt_txt       TYPE TABLE OF solisti1.  DATA: wa_doc_data  TYPE sodocchgi1,        wa_receivers TYPE somlreci1,        wa_txt       TYPE solisti1.  REFRESH: lt_receivers, lt_txt.  CLEAR:   wa_receivers, wa_txt, wa_doc_data.  LOOP AT gt_dest_mail INTO wa_dest_mail.          wa_receivers-receiver = wa_dest_mail-email.          wa_receivers-rec_type = 'U'.       APPEND wa_receivers TO lt_receivers.       CLEAR wa_receivers.  ENDLOOP.
* Ini.5 - Montanto as mensagens  wa_doc_data-obj_descr = 'Status do Ambientes atraves da  SCC4 -  ' && sy-host && sy-mandt.  wa_txt-line =           'Ambientes Alterados: ' .  APPEND wa_txt TO lt_txt.  LOOP AT it_t000 INTO wa_t000.    wa_txt-line(32) = wa_t000-mtext.    WRITE wa_t000-mandt        TO wa_txt-line+35(12).    WRITE wa_t000-changeuser   TO wa_txt-line+50(11).    WRITE wa_t000-changedate   TO wa_txt-line+70(13).    APPEND wa_txt TO lt_txt.
* End.5  ENDLOOP.
* Chama funcao para o envio do email  CALL FUNCTION 'SO_NEW_DOCUMENT_SEND_API1'    EXPORTING      document_data              = wa_doc_data      document_type              = 'RAW'      put_in_outbox              = 'X'      commit_work                = 'X'    TABLES      object_content             = lt_txt      receivers                  = lt_receivers    EXCEPTIONS      too_many_receivers         = 1      document_not_sent          = 2      document_type_not_exist    = 3      operation_no_authorization = 4      parameter_error            = 5      x_error                    = 6      enqueue_error              = 7      OTHERS                     = 8.
 ENDFORM.                    " send_mail

 

2 - Create JOB
The job time is the User discretion, in my case I use 1 minute.

 

 

3 - Email layout received

 

sap.PNG

Any doubts I am available,

Tobias Tolfo




Viewing all articles
Browse latest Browse all 948

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>