Cerca nel blog

martedì 13 giugno 2017

ABAP: Transazione SAAB - Gruppo Checkpoint

Transazione SAAB - Gruppo Checkpoint

I Checkpoints sono tipi di istruzioni introdotte in SAP Web Application Server (SAP WebAS) che garantiscono la correttezza e la manutenzione del programma.

Questi controlli sono trasportabili e possono essere trasportati. La transazione che si occupa di questi punti di controllo e il luogo in cui vengono mantenuti è SAAB.
 
I Checkpoints possono essere creati per break-points and checkpoints e le due istruzioni per questo sono:
  • Assertions
  • Break-points
Quello che effettivamente non controlla gli errori ma viene utilizzato per registrare i dati che vogliono è LOG-POINT.

La sintassi delle Asserzioni da utilizzare nella codifica è la seguente:

ASSERT [[ID group [SUBKEY subkey]]
        [FIELDS field1 field2 table1 table2...]
        
CONDITION] log_exp.

Le asserzioni vengono usate per la determinazione del problema in caso di guasto del codice. Le asserzioni vengono richiamate in fase di esecuzione. Possono essere resi attivi o inattivi. Le asserzioni possono essere lasciate nel codice anche quando il codice è stato trasportato in produzione. Sono richiamati solo se il gruppo di controllo è attivato.

I gruppi di controllo possono essere attivati attraverso la transazione SAAB e che viene indicata da ID nei programmi con istruzioni assert.

Richiamare la transazione SAAB, inserire un nome “Gruppo punti controllo” e premere il pulsante NEW.


Supponiamo, che il checkpoints che vogliamo creare, lo usiamo sia come break-points, che come Logpoints ed infine come asserzioni, quindi settiamo i 3 flag in questo modo.

  
Ora l'attivazione del gruppo di controllo può essere eseguita su tre livelli:
  •         Personal Activation
  •         User Level activation
  •         Server Level Activation
Nell'attivazione a livello personale che il gruppo di controllo sarà attivo solo per l'utente corrente e per l'Utente il gruppo Checkgroup sarà attivo per quell'utente che è stato definito e lo stesso è per il server.

Premendo il pulsante “Utente” possiamo definire gli utenti specifici per questo.
 

 
E allo stesso modo può essere fatto per i server specifici facendo clic sul segno Aggiungi come segue:


I punti di interruzione possono essere resi attivi o inattivi. Inattiva allora quella particolare istruzione verrà ignorata e se si interrompe poi nel programma ovunque si verifichi l'istruzione, il programma entra nel debug.


Nel programma viene richiamato nel seguente modo:

BREAK-POINT { [ID groupID]
            | [log text] }.  
Ex. BREAK-POINT ID Z1316_check.   

Senza l'ID di aggiunta, il punto di interruzione è sempre attivo. Il testo del registro è il testo che è possibile specificare per il registro di sistema che viene visualizzato nei registri che vengono creati.


REGOLE ASSERZIONI

   Le asserzioni devono essere utilizzate solo sul codice personalizzato piuttosto che sui codici standard.

Ecco un programma di esempio in cui vengono utilizzati i punti LOG e ASSERTI.


REPORT Z1316_test_checkgrp..  
** Parameters Declarations
PARAMETERS:
  p_carrid 
LIKE sflight-carrid.

*data : max type i.
*Types Declarations of sflight
TYPES : BEGIN OF type_s_sflight,
        carrid  
TYPE sflight-carrid,
        connid  
TYPE sflight-connid,
        fldate  
TYPE sflight-fldate,
        price   
TYPE sflight-price,
        
max TYPE i,
        
END OF type_s_sflight.

*Field String Declarations for sflight
DATA: fs_sflight TYPE type_s_sflight.

*Internal table for Sflight Data
DATA : t_sflight LIKE
                 
STANDARD
                 
TABLE OF fs_sflight.
DATA  yh1316_subkey TYPE char200.

IF p_carrid IS INITIAL.
  
SELECT carrid
         connid
         fldate
         price
   
FROM sflight
   
INTO fs_sflight.
    
WRITE: / fs_sflight-carrid,
            fs_sflight-connid,
            fs_sflight-fldate,
            fs_sflight-price.

    
APPEND fs_sflight TO t_sflight.
    
ASSERT ID yh1316_check SUBKEY    'YH1316_parameter_if_initial'
                           
FIELDS    p_carrid
                                     t_sflight
                                     fs_sflight-carrid
                                     fs_sflight-connid
                                     fs_sflight-fldate
                                     fs_sflight-price
                           condition p_carrid  
eq  'LH'  .

  
ENDSELECT.

  
ASSERT ID yh1316_check SUBKEY    'YH1316_1'
                       
FIELDS    p_carrid
                                 t_sflight
         CONDITION p_carrid  
EQ  'LH'  .
  
EXIT.
ELSE.

  
ASSERT ID yh1316_check SUBKEY    'YH1316_2'
                     
FIELDS    p_carrid
                               t_sflight
       CONDITION p_carrid EQ ’LH’.
  SELECT carrid connid fldate MAX( price ) AS max
  
INTO CORRESPONDING FIELDS OF fs_sflight
  
FROM sflight
  
WHERE carrid EQ p_carrid
  
GROUP BY carrid connid fldate
  
ORDER BY carrid max DESCENDING.
 IF sy-dbcnt < 4.

    
APPEND fs_sflight TO t_sflight.
    
LOG-POINT ID yh1316_check SUBKEY    'LOG_POINT'
                       
FIELDS    p_carrid
                                 t_sflight
                                 fs_sflight-connid
                                 fs_sflight-fldate
                                  fs_sflight-
max.
    
WRITE: / fs_sflight-carrid, fs_sflight-connid, fs_sflight-fldate,
    fs_sflight-
max.
 ENDIF.
  
ENDSELECT.
ENDIF.

Viene creata una variante per il gruppo di controllo particolare creato. La variante può essere creata sia come locale che a livello di utente. Qui viene creato a livello utente.
 

Nessun commento:

Posta un commento