Aller au contenu

Ecrire dans la log

Dans le programme on fera :

DATA: app_header LIKE balhdri,
t_log_mess LIKE balmi OCCURS 0 WITH HEADER LINE.

* Objet et sous objet paramétrés par SLG0
* Object dans BALOBJ
* Subobject dans V_BALSUB

    app_header-object    = 'ZFULLPCB'.
    app_header-subobject = 'ZFP_'.

* Info d'entête
app_header-altcode = 'SE37'.
app_header-alprog = 'ZRFC_IN_FULL_PCB'.

    IF o_return = '02' OR o_return = '00'.
    t_log_mess-msgty = 'W'.
    t_log_mess-probclass = '1'.
    ELSE.
    t_log_mess-msgty = 'S'.
    t_log_mess-probclass = '4'.
    ENDIF.
    t_log_mess-msgid = '00'.
    t_log_mess-msgno = '398'.
    t_log_mess-msgv1 = o_text.
    APPEND t_log_mess.

    IF o_return = '01'.
    gt_full_pcb2[] = gt_full_pcb[].
    DELETE ADJACENT DUPLICATES FROM gt_full_pcb2 COMPARING MATERIAL.
    DESCRIBE TABLE gt_full_pcb2 LINES t_log_mess-msgv1.
    CONDENSE t_log_mess-msgv1.
    t_log_mess-msgv2 = 'Lines received in ZBW_FULL_PCB'.
    t_log_mess-probclass = '4'.
    APPEND t_log_mess.
    ENDIF.

    CALL FUNCTION 'ZAPPL_LOG_CREATE'
    EXPORTING
    object            = app_header-object
    subobject         = app_header-subobject
    app_header        = app_header
    TABLES
    APPL_LOG_MESS_TAB = t_log_mess.
 ```    

Et le module fonction :

``` abap linenums="1"

FUNCTION ZAPPL_LOG_CREATE.
*"----------------------------------------------------------------------
*"*"Local Interface:
*"  IMPORTING
*"     REFERENCE(OBJECT) TYPE  BALOBJ_D
*"     REFERENCE(SUBOBJECT) TYPE  BALSUBOBJ
*"     VALUE(APP_HEADER) TYPE  BALHDRI OPTIONAL
*"  TABLES
*"      APPL_LOG_MESS_TAB STRUCTURE  BALMI OPTIONAL
*"----------------------------------------------------------------------
DATA: appl_log_prot_tab LIKE balnri OCCURS 1,
handle TYPE  balloghndl.

* A créer par SLG0
* Object dans BALOBJ -> ex 'ZPURCHASE'
* Subobject dans BALSUB. -> ex 'PPL_PO'
* dans appl_log_mess_tab-PROBCLASS
* 1 très important
* 2 important
* 3 moyen
* 4 Informations supplémentaires
* app_header-object = 'ZPURCHASE'.
*app_header-subobject = 'PPL_PO'.
*app_header-altcode = 'SE37'.
*app_header-alprog = 'ZTEST_SLG1'.
*app_header-extnumber = 'yoo'.

app_header-object    = object.
app_header-subobject = subobject.

CALL FUNCTION 'APPL_LOG_INIT'
EXPORTING
object              = object
subobject           = subobject
LOG_HANDLE = ' '
EXCEPTIONS
object_not_found = 1
subobject_not_found = 2
OTHERS = 3.
IF sy-subrc <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
    WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.

CALL FUNCTION 'APPL_LOG_WRITE_HEADER'
EXPORTING
header = app_header
IMPORTING
e_log_handle = handle
EXCEPTIONS
object_not_found = 1
subobject_not_found = 2
OTHERS = 3.
IF sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
`WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.`
ENDIF.

CALL FUNCTION 'APPL_LOG_WRITE_MESSAGES'
EXPORTING
object = object
subobject = subobject
log_handle = handle
update_or_insert = 'I'
TABLES
messages = appl_log_mess_tab
EXCEPTIONS
object_not_found = 1
subobject_not_found = 2
OTHERS = 3.
IF sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
`WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.`
ENDIF.

*Application-Log auf die DB schreiben
CALL FUNCTION 'APPL_LOG_WRITE_DB'
EXPORTING
object = object
subobject = subobject
log_handle = handle
TABLES
object_with_lognumber = appl_log_prot_tab
EXCEPTIONS
object_not_found = 1
subobject_not_found = 2
internal_error = 3
OTHERS = 4.

ENDFUNCTION.