1. * Ini : BAT-BI v 1.3 ----------------- 07.01.2005
  2. define bi_create.
  3. data: bi_tab like bdcdata occurs 0 with header line,
  4.       bi_err like BDCMSGCOLL occurs 0 with header line,
  5.       bi_mod(1) value 'N',
  6.       bi_upd(1) value 'S',
  7.       bi_wt100      like t100,
  8.       bi_tt like tline occurs 0 with header line,
  9.       bi_tout(255) occurs 0 with header line,
  10.       bi_amp type x value 80. "Truco
  11. field-symbols: <bi_fs>.
  12. end-of-definition.
  13.  
  14. define bi_clear.
  15.    clear: bi_tab, bi_err, bi_tt, bi_tout.
  16.    refresh: bi_tab, bi_err, bi_tt, bi_tout.
  17. end-of-definition.
  18.  
  19. define bi_add.
  20.   clear bi_tab.
  21.   if not &1 is initial.
  22.      bi_tab-program  = &2.
  23.      bi_tab-dynpro   = &3.
  24.      bi_tab-dynbegin = 'X'.
  25.      if &1 ne 'X'.
  26.         append bi_tab.
  27.         clear bi_tab.
  28.         bi_tab-fnam = 'BDC_OKCODE'.
  29.         bi_tab-fval = &1.
  30.      endif.
  31.   else.
  32.      bi_tab-fnam     = &2.
  33.      bi_tab-fval     = &3.
  34.   endif.
  35.   append bi_tab.
  36. end-of-definition.
  37.  
  38. define bi_call.
  39.   call transaction &1 using bi_tab mode bi_mod update bi_upd
  40.                    messages into bi_err.
  41. end-of-definition.
  42.  
  43. define bi_error.
  44.   refresh bi_tt.
  45.   describe table bi_err lines sy-pexpi.
  46.   check sy-pexpi gt 0.
  47.   sort bi_err.
  48.   delete adjacent duplicates from bi_err.
  49. * Se subrimen los mensajes de tipo 'S' num: 402:"Campo tranf. a visu" y
  50. *                                      num: 432:"Sistema ha ejecutado c.
  51.   delete bi_err where msgtyp = 'S'
  52.                    and ( msgnr = '402' or msgnr = '432'
  53.                            or msgnr = '000' ).
  54.   loop at bi_err.
  55.     clear bi_wt100.
  56.     select single text into bi_wt100-text from t100
  57.                   where sprsl = sy-langu     and
  58.                         arbgb = bi_err-msgid and
  59.                         msgnr = bi_err-msgnr.
  60.     if sy-subrc = 0 and not bi_wt100-text is initial.
  61. *      d_len = strlen( bi_err-msgv1 ).
  62.       clear sy-pexpi.
  63.       translate bi_wt100-text using ' ~'.
  64.       split bi_wt100-text at bi_amp into table bi_tout.
  65.       clear bi_wt100-text.
  66.       loop at bi_tout.
  67.         check not bi_tout is initial.
  68.         add 1 to sy-pexpi.
  69.         if sy-pexpi < 5.
  70.            concatenate 'bi_err-msgv' sy-pexpi into sy-REPI2.
  71.            assign (sy-REPI2) to <bi_fs>.
  72.         endif.
  73.         concatenate bi_wt100-text bi_tout <bi_fs> into bi_wt100-text.
  74.         condense bi_wt100-text no-gaps.
  75.       endloop.
  76.       condense bi_wt100-text no-gaps.
  77.       translate bi_wt100-text using '~ '.
  78.       bi_tt-tdline = bi_wt100-text.
  79.       append bi_tt.
  80.     endif.
  81.   endloop.
  82.   describe table  bi_tt lines sy-pexpi.
  83.   check sy-pexpi > 0.
  84. * Si contiene errores.se muestran en una ventana.
  85.   call function 'COPO_POPUP_TO_DISPLAY_TEXTLIST'
  86.   exporting TASK       = 'DISPLAY'
  87.             titel      = 'Errores en transaccin'
  88.   tables    text_table = bi_tt.
  89. end-of-definition.
  90. * Fin : BAT-BI v 1.3 ----------------- 07.01.2005
  91.  
  92.  
  93.  
  94. *Ejemplo
  95. end-of-selection.
  96.    bi_create.
  97.    bi_clear.
  98.    bi_add: 'X' 'SAPLWBABAP' '0100',
  99.            ' ' 'BDC_OKCODE' '=BACK'.
  100.    bi_call 'SE38'.