REPORT zini_LOG_CLASS.
CLASS Zini_LOG DEFINITION.
PUBLIC SECTION.
DATA: log TYPE bal_s_msg.
METHODS:
constructor IMPORTING i_object TYPE any,
inicia,
add_log IMPORTING i_txt TYPE any OPTIONAL
i_save TYPE any OPTIONAL, "<-- XFELD
display,
grabar.
PRIVATE SECTION.
CONSTANTS: c_vers TYPE string VALUE 'v0.1'.
DATA: my_handle TYPE balloghndl,
my_t_log TYPE bal_t_logh,
my_is_log TYPE bal_s_log.
ENDCLASS.
CLASS zini_LOG IMPLEMENTATION.
method display.
DATA: t_handle TYPE bal_t_logh.
check not my_handle is INITIAL.
APPEND my_handle TO t_handle.
CALL FUNCTION 'BAL_DSP_LOG_DISPLAY'
EXPORTING
* I_S_DISPLAY_PROFILE =
i_t_log_handle = t_handle
* I_T_MSG_HANDLE =
* I_S_LOG_FILTER =
* I_S_MSG_FILTER =
* I_T_LOG_CONTEXT_FILTER =
* I_T_MSG_CONTEXT_FILTER =
i_amodal = 'X'
* I_SRT_BY_TIMSTMP = ' '
* I_MSG_CONTEXT_FILTER_OPERATOR = 'A'
* IMPORTING
* E_S_EXIT_COMMAND =
EXCEPTIONS
profile_inconsistent = 1
internal_error = 2
no_data_available = 3
no_authority = 4
OTHERS = 5.
ENDMETHOD.
METHOD constructor.
my_is_log-object = i_object.
ENDMETHOD.
METHOD add_log.
TYPES: BEGIN OF ty_type,
msgv1 TYPE symsgv,
msgv2 TYPE symsgv,
msgv3 TYPE symsgv,
msgv4 TYPE symsgv,
END OF ty_type.
DATA ax TYPE ty_type.
IF log-msgty IS INITIAL. log-msgty = 'S'. ENDIF.
IF log-msgid IS INITIAL. log-msgid = '00'. ENDIF.
IF log-msgno IS INITIAL. log-msgno = '398'. ENDIF.
IF i_txt IS NOT INITIAL. ax = i_txt. MOVE-CORRESPONDING ax TO log. ENDIF.
CALL FUNCTION 'BAL_LOG_MSG_ADD'
EXPORTING
i_log_handle = my_handle
i_s_msg = log
* IMPORTING
* E_S_MSG_HANDLE =
* E_MSG_WAS_LOGGED =
* E_MSG_WAS_DISPLAYED =
EXCEPTIONS
log_not_found = 1
msg_inconsistent = 2
log_is_full = 3
OTHERS = 4.
IF i_save IS NOT INITIAL.
grabar( ).
ENDIF.
CLEAR log.
ENDMETHOD.
METHOD inicia.
CLEAR my_handle.
REFRESH my_t_log.
CALL FUNCTION 'BAL_LOG_CREATE'
EXPORTING
i_s_log = my_is_log
IMPORTING
e_log_handle = my_handle
EXCEPTIONS
log_header_inconsistent = 1
OTHERS = 2.
IF sy-subrc EQ 0.
APPEND my_handle TO my_t_log.
ENDIF.
ENDMETHOD.
METHOD grabar.
CALL FUNCTION 'BAL_DB_SAVE'
EXPORTING
i_t_log_handle = my_t_log
EXCEPTIONS
log_not_found = 1
save_not_allowed = 2
numbering_error = 3
OTHERS = 4.
ENDMETHOD.
ENDCLASS.
END-OF-SELECTION.
DATA(my_log) = NEW zini_log( 'ZORDENES' ).
my_log->inicia( ).
DO 5 TIMES.
my_log->add_LOG( i_txt = |Hello world: { sy-index }|
i_save = abap_true ).
ENDDO.
my_log->display( ).