ABAPTOLOG

  1. *&---------------------------------------------------------------------*
  2. *& Report ZNADAR_KKK
  3. *&---------------------------------------------------------------------*
  4. *&
  5. *&---------------------------------------------------------------------*
  6. REPORT znadar_to_log.
  7.  
  8.  
  9. CLASS z_to_log DEFINITION.
  10.  
  11.   PUBLIC SECTION.
  12.  
  13.     DATA: g_head   TYPE bal_s_log,
  14.           g_pos    TYPE bal_s_msg,
  15.           g_active TYPE xfeld.
  16.  
  17.     METHODS:
  18.       constructor IMPORTING I_object    TYPE balobj_d
  19.                             i_subobject TYPE balsubobj OPTIONAL
  20.                             i_break     type aab_id_name OPTIONAL,
  21.  
  22.       log_add IMPORTING is_msg  TYPE bal_s_msg OPTIONAL
  23.                         i_save  TYPE xfeld OPTIONAL
  24.                         is_text TYPE string OPTIONAL,
  25.  
  26.       log_active_via_Saab IMPORTING i_break TYPE aab_id_name,
  27.  
  28.       log_display,
  29.       log_save.
  30.  
  31.   PRIVATE SECTION.
  32.  
  33.     DATA: g_handle TYPE balloghndl,
  34.           g_count  TYPE i.
  35.  
  36.     METHODS:
  37.       LOG_Create.
  38.  
  39. ENDCLASS.
  40.  
  41. CLASS z_to_log IMPLEMENTATION.
  42.  
  43.   METHOD log_active_via_Saab.
  44.         DATA: l_username  TYPE aab_id_act-username,
  45.               l_aab_id_propt type aab_id_propt,
  46.               w_timestamp TYPE aab_id_act-act_tstamp,
  47.               t_z         TYPE string,
  48.               l_tadir     type tadir.
  49.  
  50.     check g_active = abap_true.
  51.  
  52.     SELECT SINGLE * FROM aab_id_prop INTO @DATA(l_aab_id_prop)
  53.       WHERE name = @i_break.
  54.  
  55.     IF sy-subrc EQ 0.
  56. *      SELECT SINGLE * FROM aab_id_act INTO @DATA(l_aab_id_act)
  57. *        WHERE name = @i_break.
  58. *
  59. *      IF sy-subrc NE 0.
  60. *        CLEAR g_active.
  61. *      ELSE.
  62. *--[ Check for active SAAB ID
  63.         CONVERT DATE sy-datum TIME sy-uzeit
  64.         INTO TIME STAMP w_timestamp TIME ZONE t_Z.
  65.  
  66.         SELECT SINGLE * FROM aab_id_act INTO @data(l_aab_id_act)
  67.           WHERE name = @i_break AND
  68.                 ( username = @sy-uname OR
  69.                   username = @l_username ) AND
  70.                 act_tstamp <= @w_timestamp AND
  71.                 exp_tstamp >= @w_timestamp.
  72.  
  73.         IF sy-subrc NE 0. "<-- No está activo para este user o tiempo
  74.           CLEAR g_active.
  75.         ENDIF.
  76. *      ENDIF.
  77.     ELSE.
  78. *--[ Don't look here... Get away!! Just Stuff :D :D
  79. *--[ Metemos el nuevo break-proint
  80.       l_aab_id_propt-NAME = l_aab_id_prop-name = i_break.
  81.       l_aab_id_propt-LANGU = sy-langu.
  82.       l_aab_id_propt-DESCRIPT = i_break.
  83.       l_tadir-PGMID = 'R3TR'.
  84.       l_tadir-OBJECT = 'ACID'.
  85.       l_tadir-obj_name = i_break.
  86.       l_tadir-srcsystem = sy-sysid.
  87.       l_tadir-author    = 'ZLOG'.
  88.       l_tadir-devclass = '$TMP'.
  89.       l_tadir-cproject = ' S'.
  90.       l_tadir-masterlang = sy-langu.
  91.       l_tadir-created_on = sy-datum.
  92.  
  93.       check i_break cp 'Z*'.
  94.       modify aab_id_prop from l_aab_id_prop.
  95.       modify aab_id_propt from l_aab_id_propt.
  96.       insert tadir from l_tadir.
  97.  
  98.     ENDIF.
  99.  
  100.   ENDMETHOD.
  101.  
  102.   METHOD log_add.
  103.     TYPES: BEGIN OF ty_msg,
  104.              msgv1 TYPE bal_s_msg-msgv1,
  105.              msgv2 TYPE bal_s_msg-msgv1,
  106.              msgv3 TYPE bal_s_msg-msgv1,
  107.              msgv4 TYPE bal_s_msg-msgv1,
  108.            END OF ty_msg.
  109.  
  110.     DATA: l_msg   TYPE bal_s_msg,
  111.           ls_text TYPE ty_msg.
  112.  
  113.     CHECK NOT g_handle IS INITIAL.
  114.     CHECK g_active = abap_true.
  115.  
  116.     IF is_msg IS INITIAL AND
  117.        g_pos IS INITIAL AND
  118.        is_text IS INITIAL.
  119.       EXIT.
  120.     ENDIF.
  121.     IF is_msg IS INITIAL.
  122.       IF NOT g_pos IS INITIAL.
  123.         l_msg = g_pos.
  124.       ENDIF.
  125.     ELSE.
  126.       l_msg = is_msg.
  127.     ENDIF.
  128.  
  129. *--[ Por defecto
  130.     IF l_msg-probclass IS INITIAL. l_msg-probclass = '4'. ENDIF.
  131.     IF  l_msg-detlevel IS INITIAL. l_msg-detlevel = 1.    ENDIF.
  132.     IF l_msg-msgty IS INITIAL.     l_msg-msgty = 'I'.     ENDIF.
  133.  
  134.     IF l_msg-msgid IS INITIAL.
  135.       l_msg-msgid = '000'.
  136.       l_msg-msgno = '398'.
  137.     ENDIF.
  138.  
  139.     IF NOT is_text IS INITIAL.
  140.       ls_text = is_text.
  141.       MOVE-CORRESPONDING ls_text TO l_msg.
  142.     ENDIF.
  143.  
  144.     CALL FUNCTION 'BAL_LOG_MSG_ADD'
  145.       EXPORTING
  146.         i_log_handle  = g_handle
  147.         i_s_msg       = l_msg
  148.       EXCEPTIONS
  149.         log_not_found = 0
  150.         OTHERS        = 1.
  151.  
  152.     ADD 1 TO g_count.
  153.     CLEAR g_pos.
  154.  
  155.     CHECK NOT i_save IS INITIAL.
  156.     me->log_save( ).
  157.  
  158.   ENDMETHOD.
  159.  
  160.   METHOD log_save.
  161.     DATA: lt_loghandle TYPE bal_t_logh.
  162.  
  163.     CHECK NOT g_handle IS INITIAL.
  164.     CHECK g_active = abap_true.
  165.     CHECK g_count NE 0.
  166.  
  167.     APPEND g_handle TO lt_loghandle.
  168.  
  169.     CALL FUNCTION 'BAL_DB_SAVE'
  170.       EXPORTING
  171.         i_t_log_handle   = lt_loghandle
  172.       EXCEPTIONS
  173.         log_not_found    = 1
  174.         save_not_allowed = 2
  175.         numbering_error  = 3
  176.         error_message    = 4
  177.         OTHERS           = 5.
  178.     CLEAR g_count.
  179.   ENDMETHOD.
  180.  
  181.   METHOD LOG_Create.
  182.  
  183.     check g_active = abap_true.
  184.  
  185.     CALL FUNCTION 'BAL_LOG_CREATE'
  186.       EXPORTING
  187.         i_s_log      = g_head
  188.       IMPORTING
  189.         e_log_handle = g_handle
  190.       EXCEPTIONS
  191.         OTHERS       = 1.
  192.   ENDMETHOD.
  193.  
  194.   METHOD constructor.
  195.  
  196.     CLEAR: g_head, g_handle.
  197.  
  198.     g_head-object = I_object.
  199.     g_head-subobject = i_subobject.
  200.  
  201. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  202. *--[ Verificamos que existan los objetos
  203.     SELECT SINGLE * FROM balobj INTO @DATA(l_balobj)
  204.       WHERE object = @g_head-object.
  205.     IF sy-subrc NE 0.
  206.       l_balobj-object = I_object.
  207.       INSERT balobj FROM l_balobj.
  208.     ENDIF.
  209.  
  210.     IF g_head-subobject IS INITIAL.
  211.  
  212.       SELECT SINGLE * FROM balsub INTO @DATA(l_balsub)
  213.         WHERE object    = @g_head-object.
  214.       IF sy-subrc EQ 0.
  215.         g_head-subobject = l_balsub-subobject.
  216.       ELSE.
  217.         g_head-subobject = g_head-object && '_1'.
  218.         sy-subrc = 4.
  219.       ENDIF.
  220.  
  221.     ELSE.
  222.       SELECT SINGLE * FROM balsub INTO l_balsub
  223.         WHERE object    = g_head-object
  224.           AND subobject = g_head-subobject.
  225.     ENDIF.
  226.  
  227.     IF sy-subrc NE 0.
  228.       MOVE-CORRESPONDING g_head TO l_balsub.
  229.       INSERT balsub FROM l_balsub.
  230.     ENDIF.
  231.  
  232. *--[ Por defecto
  233.     g_head-aldate    = sy-datum.
  234.     g_head-altime    = sy-uzeit.
  235.     g_head-aluser    = sy-uname.
  236.     g_head-alprog    = sy-repid.
  237.     g_active = abap_true.
  238.  
  239.     if not i_break is INITIAL.
  240.        me->log_active_via_Saab( EXPORTING i_break = i_break ).
  241.     endif.
  242.  
  243.     me->LOG_Create( ).
  244.  
  245.   ENDMETHOD.
  246.  
  247.   METHOD log_display.
  248.     DATA: t_handle TYPE  bal_t_logh.
  249.  
  250.     CHECK g_active = abap_true.
  251.     check not g_handle is INITIAL.
  252.  
  253.     APPEND  g_handle TO t_handle.
  254.     CALL FUNCTION 'BAL_DSP_LOG_DISPLAY'
  255.       EXPORTING
  256. *       I_S_DISPLAY_PROFILE  =
  257.         i_t_log_handle       = t_handle
  258. *       I_T_MSG_HANDLE       =
  259. *       I_S_LOG_FILTER       =
  260. *       I_S_MSG_FILTER       =
  261. *       I_T_LOG_CONTEXT_FILTER              =
  262. *       I_T_MSG_CONTEXT_FILTER              =
  263.         i_amodal             = 'X'
  264. *       I_SRT_BY_TIMSTMP     = ' '
  265. *       I_MSG_CONTEXT_FILTER_OPERATOR       = 'A'
  266. * IMPORTING
  267. *       E_S_EXIT_COMMAND     =
  268.       EXCEPTIONS
  269.         profile_inconsistent = 1
  270.         internal_error       = 2
  271.         no_data_available    = 3
  272.         no_authority         = 4
  273.         OTHERS               = 5.
  274.  
  275.   ENDMETHOD.
  276.  
  277. ENDCLASS.
  278.  
  279. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  280. *--[ Creación...
  281. DATA: my_log TYPE REF TO z_to_log.
  282.  
  283. end-of-SELECTION.
  284.  
  285.  
  286. BREAK-POINT.
  287.  
  288.   CREATE OBJECT my_log
  289.     EXPORTING
  290.       I_object = 'ZQUEEN'          "<--
  291. *      i_subobject = 'DETALLE_01'. "<-- Optional
  292.       i_break = 'Z_ZAPATO2'.      "<-- Optional for SAAB ID activation
  293.  
  294. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  295. *--[ Manual Check if SAAB is active (Optional)
  296. *my_log->log_active_via_Saab( EXPORTING i_break = 'Z_ZAPATO2' ).
  297. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  298. *--[ In the same HANDLE
  299.  
  300.   my_log->log_add( EXPORTING is_text = 'Hola mundo cruel' ).
  301.  
  302. *--[ Ejemplo con estructura
  303.   my_log->g_pos-msgid = '00'.
  304.   my_log->g_pos-MSgTY = 'E'.
  305.   my_log->g_pos-Msgno = '006'.
  306.   my_log->g_pos-Msgv1 = 'No he'.
  307.   my_log->g_pos-Msgv2 = '0'.
  308.   my_log->log_add( ).
  309.  
  310.   my_log->log_add( EXPORTING is_text = 'Adios mundo!'
  311.                     i_SAVE = 'X' "<-- Automatic SAVE
  312.                   ).
  313. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  314. *--[ Display all messages
  315.   my_log->log_display( ).
  316.  
  317. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  318. *--[ Save LOG
  319. *  My_log->log_save( ). "<--- Not need if I_SAVE at LOG_ADD