W Pub: ABAPBREAKSAAB Bucle

  1. FUNCTION zbreak_point.
  2. *"----------------------------------------------------------------------
  3. *"*"Interfase local
  4. *"  IMPORTING
  5. *"     REFERENCE(I_BREAK) TYPE  AAB_ID_NAME OPTIONAL
  6. *"----------------------------------------------------------------------
  7.  
  8.   DATA: l_hay_bucle TYPE xfeld,
  9.         l_hay_break TYPE xfeld.
  10.   CHECK NOT i_break IS INITIAL.
  11.   PERFORM saab_add USING i_break.
  12.   PERFORM saab_check USING i_break
  13.                      CHANGING l_hay_break
  14.                               l_hay_bucle.
  15.  
  16. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  17. *--[ Sí estás leyendo esto, es que alguien ha activado el ASSERT LOG
  18. *--[ En la transacción SAAB para el objeto de la variable p_break
  19. *--[ Para salir del bucle, cambia el valor del sy-subrc o pon la
  20. *--[ siguiente línea de ejecución en el endform.
  21.   IF l_hay_break = abap_true.
  22.     BREAK-POINT.
  23.   ENDIF.
  24.  
  25.   IF l_hay_bucle = abap_true.
  26.     DO.
  27.       IF sy-subrc EQ 69.
  28.         EXIT.
  29.       ENDIF.
  30.     ENDDO.
  31.   ENDIF.
  32.  
  33. ENDFUNCTION.
  34.  
  35. FORM saab_check USING p_break
  36.                 CHANGING p_hay_break p_hay_bucle.
  37.   DATA: l_username  TYPE aab_id_act-username,
  38.         w_timestamp TYPE aab_id_act-act_tstamp,
  39.         t_z         TYPE string,
  40.         my_obj      TYPE REF TO cL_AAB_TOOL,
  41.         l_bucle     TYPE aab_id_sfields-as_fg_stop_bg_protocol,
  42.         l_bp        TYPE aab_id_sfields-bp_stop.
  43.   CLEAR: p_hay_bucle, p_hay_break.
  44.   CHECK NOT p_break IS INITIAL.
  45.   CONVERT DATE sy-datum TIME sy-uzeit
  46.   INTO TIME STAMP w_timestamp TIME ZONE t_Z.
  47.  
  48.   SELECT SINGLE * FROM aab_id_act INTO @DATA(l_aab_id_act)
  49.         WHERE   name = @p_break AND
  50.               ( username = @sy-uname OR
  51.                 username = @l_username ) AND
  52.               act_tstamp <= @w_timestamp AND
  53.               exp_tstamp >= @w_timestamp.
  54.   CHECK sy-subrc EQ 0.
  55.   CREATE OBJECT my_obj.
  56.   My_OBJ->my_id_name  = p_break.
  57.   CALL METHOD cl_aab_tool=>convert_mode_to_output
  58.     EXPORTING
  59.       mode           = l_aab_id_act-actmode
  60.     IMPORTING
  61. *     bp_inactive    =
  62.       bp_stop        = l_bp
  63. *     as_fg_inactive =
  64. *     as_fg_stop_bg_protocol = l_bucle
  65. *     as_fg_stop_bg_rabax    =
  66.       as_fg_protocol = l_bucle
  67. *     as_fg_rabax    =
  68. *     as_bg_text     =
  69. *     lp_inactive    =
  70. *     lp_log         =
  71.     EXCEPTIONS
  72.       mode_not_valid = 1
  73.       OTHERS         = 2.
  74.   IF sy-subrc EQ 0 AND NOT l_bucle IS INITIAL.
  75.     p_hay_bucle = abap_true.
  76.   ENDIF.
  77.   IF sy-subrc EQ 0 AND NOT l_bp IS INITIAL.
  78.     p_hay_break = abap_true.
  79.   ENDIF.
  80.  
  81. ENDFORM.
  82.  
  83. FORM saab_add USING p_break.
  84.   DATA: l_aab_id_propt TYPE aab_id_propt,
  85.         l_tadir        TYPE tadir.
  86.   CHECK NOT p_break IS INITIAL.
  87.   SELECT SINGLE * FROM aab_id_prop INTO @DATA(l_aab_id_prop)
  88.     WHERE name = @p_break.
  89.  
  90.   CHECK sy-subrc NE 0.
  91. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  92. *--[ Creamos un ID SAAB si no existe
  93.   l_aab_id_propt-name = l_aab_id_prop-name = p_break.
  94.   l_aab_id_propt-langu = sy-langu.
  95.   l_aab_id_propt-descript = p_break.
  96.   l_tadir-pgmid = 'R3TR'.
  97.   l_tadir-object = 'ACID'.
  98.   l_tadir-obj_name = p_break.
  99.   l_tadir-srcsystem = sy-sysid.
  100.   l_tadir-author    =  sy-uname.
  101.   l_tadir-devclass = '$TMP'.
  102.   l_tadir-cproject = ' S'.
  103.   l_tadir-masterlang = sy-langu.
  104.   l_tadir-created_on = sy-datum.
  105.  
  106.   CHECK p_break CP 'Z*'.
  107.   MODIFY aab_id_prop FROM l_aab_id_prop.
  108.   MODIFY aab_id_propt FROM l_aab_id_propt.
  109.   INSERT tadir FROM l_tadir.
  110. ENDFORM.