ABAPTOLOGNEW

  1. REPORT zini_LOG_CLASS.
  2.  
  3.  
  4. CLASS Zini_LOG DEFINITION.
  5.  
  6.   PUBLIC SECTION.
  7.  
  8.     DATA: log TYPE bal_s_msg.
  9.  
  10.     METHODS:
  11.       constructor IMPORTING i_object TYPE any,
  12.       inicia,
  13.       add_log IMPORTING i_txt  TYPE any OPTIONAL
  14.                         i_save TYPE any OPTIONAL, "<-- XFELD
  15.       display,
  16.       grabar.
  17.  
  18.   PRIVATE SECTION.
  19.  
  20.     CONSTANTS: c_vers                  TYPE string    VALUE 'v0.1'.
  21.  
  22.     DATA: my_handle TYPE balloghndl,
  23.           my_t_log  TYPE bal_t_logh,
  24.           my_is_log TYPE bal_s_log.
  25.  
  26. ENDCLASS.
  27.  
  28. CLASS zini_LOG IMPLEMENTATION.
  29.  
  30.   method display.
  31.  
  32.     DATA: t_handle TYPE  bal_t_logh.
  33.  
  34.     check not my_handle is INITIAL.
  35.  
  36.     APPEND  my_handle TO t_handle.
  37.     CALL FUNCTION 'BAL_DSP_LOG_DISPLAY'
  38.       EXPORTING
  39. *       I_S_DISPLAY_PROFILE  =
  40.         i_t_log_handle       = t_handle
  41. *       I_T_MSG_HANDLE       =
  42. *       I_S_LOG_FILTER       =
  43. *       I_S_MSG_FILTER       =
  44. *       I_T_LOG_CONTEXT_FILTER              =
  45. *       I_T_MSG_CONTEXT_FILTER              =
  46.         i_amodal             = 'X'
  47. *       I_SRT_BY_TIMSTMP     = ' '
  48. *       I_MSG_CONTEXT_FILTER_OPERATOR       = 'A'
  49. * IMPORTING
  50. *       E_S_EXIT_COMMAND     =
  51.       EXCEPTIONS
  52.         profile_inconsistent = 1
  53.         internal_error       = 2
  54.         no_data_available    = 3
  55.         no_authority         = 4
  56.         OTHERS               = 5.
  57.  
  58.   ENDMETHOD.
  59.  
  60.  
  61.   METHOD constructor.
  62.     my_is_log-object = i_object.
  63.   ENDMETHOD.
  64.  
  65.   METHOD add_log.
  66.     TYPES: BEGIN OF ty_type,
  67.              msgv1 TYPE  symsgv,
  68.              msgv2 TYPE  symsgv,
  69.              msgv3 TYPE  symsgv,
  70.              msgv4 TYPE  symsgv,
  71.            END OF ty_type.
  72.     DATA ax TYPE ty_type.
  73.     IF log-msgty IS INITIAL. log-msgty = 'S'. ENDIF.
  74.     IF log-msgid IS INITIAL. log-msgid = '00'. ENDIF.
  75.     IF log-msgno IS INITIAL. log-msgno = '398'. ENDIF.
  76.     IF i_txt IS NOT INITIAL. ax = i_txt. MOVE-CORRESPONDING ax TO log. ENDIF.
  77.  
  78.     CALL FUNCTION 'BAL_LOG_MSG_ADD'
  79.       EXPORTING
  80.         i_log_handle     = my_handle
  81.         i_s_msg          = log
  82. * IMPORTING
  83. *       E_S_MSG_HANDLE   =
  84. *       E_MSG_WAS_LOGGED =
  85. *       E_MSG_WAS_DISPLAYED  =
  86.       EXCEPTIONS
  87.         log_not_found    = 1
  88.         msg_inconsistent = 2
  89.         log_is_full      = 3
  90.         OTHERS           = 4.
  91.  
  92.     IF i_save IS NOT INITIAL.
  93.       grabar( ).
  94.     ENDIF.
  95.  
  96.     CLEAR log.
  97.   ENDMETHOD.
  98.  
  99.   METHOD inicia.
  100.     CLEAR my_handle.
  101.     REFRESH my_t_log.
  102.     CALL FUNCTION 'BAL_LOG_CREATE'
  103.       EXPORTING
  104.         i_s_log                 = my_is_log
  105.       IMPORTING
  106.         e_log_handle            = my_handle
  107.       EXCEPTIONS
  108.         log_header_inconsistent = 1
  109.         OTHERS                  = 2.
  110.     IF sy-subrc EQ 0.
  111.       APPEND my_handle TO my_t_log.
  112.     ENDIF.
  113.   ENDMETHOD.
  114.  
  115.   METHOD grabar.
  116.     CALL FUNCTION 'BAL_DB_SAVE'
  117.       EXPORTING
  118.         i_t_log_handle   = my_t_log
  119.       EXCEPTIONS
  120.         log_not_found    = 1
  121.         save_not_allowed = 2
  122.         numbering_error  = 3
  123.         OTHERS           = 4.
  124.   ENDMETHOD.
  125.  
  126. ENDCLASS.
  127.  
  128. END-OF-SELECTION.
  129.  
  130.  
  131.   DATA(my_log) = NEW zini_log( 'ZORDENES' ).
  132.   my_log->inicia( ).
  133.  
  134.   DO 5 TIMES.
  135.     my_log->add_LOG( i_txt = |Hello world: { sy-index }|
  136.                      i_save = abap_true ).
  137.   ENDDO.
  138.   my_log->display( ).