Log Bi

Colapsar
X
 
  • Tiempo
  • Mostrar
Limpiar Todo
nuevos mensajes
  • carlosalcala
    Member
    • may
    • 46

    #1

    Log Bi

    Hola foro!!!

    Como podría recuperar un log completo del JD a partir de la ID de Cola?? y sino es posible, como podria 'cazar' estos resultados??

    Muchas Gracias!
    Salu2

    Carlos!
  • sap2006
    Senior Member
    • mar
    • 134

    #2
    Lo que buscas esta en la sm35.
    Salu2.

    Comentario

    • apozosanz
      Member
      • feb
      • 86

      #3
      Gracias pero lo que estoy buscando es recuperar el log que aparece en la SM35 para tratar los documentos contables dados de alta y poder bloquear los pedidos de venta, lo conseguí con este report
      ************************************************** **********************
      * Listado que muestra la información de un log resultado de la *
      * ejecución de un batch input. *
      * Útil para analizar resultados tras la ejecución *
      * *
      * Andrés Picazo 18/11/2002 http://www.sapabap.cc *
      * *
      ************************************************** **********************
      REPORT z_logs_batch_input LINE-SIZE 255 line-count 58.

      TABLES: apqd, apql, tst01, bapiret2.

      DATA: BEGIN OF logtable OCCURS 50, " plain log information in TemSe
      enterdate LIKE btctle-enterdate,
      entertime LIKE btctle-entertime,
      logmessage(400) TYPE c,
      END OF logtable.
      DATA: l_logtable LIKE logtable.
      DATA: i_apql LIKE apql OCCURS 100 WITH HEADER LINE.

      DATA BEGIN OF BDCLM OCCURS 0. " ITabelle der Messageseintraege
      INCLUDE STRUCTURE BDCLM. " LogTabelle
      DATA: COUNTER TYPE I,
      LONGTEXT TYPE BDC_MPAR,
      END OF BDCLM .

      DATA: "Aufbereitung Messagetext
      BEGIN OF MTTAB OCCURS 4,
      OFF(02) TYPE N,
      LEN(02) TYPE N,
      TEXT(80),
      END OF MTTAB.

      DATA:
      DIGITS(10) TYPE C VALUE '0123456789',
      MTEXT(124) TYPE C, "Messagetext
      MTEXT1(124) TYPE C, "Messagetext
      MTEXT2(273) TYPE C, "Messagetext
      DO_CONDENSE TYPE C,
      MTVAROFF TYPE I,
      PARCNT TYPE I,
      MPARCNT TYPE I,
      X(1) TYPE C VALUE 'X'.

      FIELD-SYMBOLS:
      <MTXT>,
      <VTXT>.

      SELECTION-SCREEN BEGIN OF BLOCK a1 WITH FRAME.
      SELECT-OPTIONS: s_credat FOR apql-credate, "Fecha creaci&#243;n batch input
      s_groupi FOR apql-groupid OBLIGATORY, "N. juego datos
      s_creato FOR apql-creator. "Usuario que lo creo
      SELECTION-SCREEN END OF BLOCK a1.


      SELECTION-SCREEN BEGIN OF BLOCK a2 WITH FRAME.
      SELECT-OPTIONS: s_date FOR sy-datum, "Fecha log
      s_time FOR sy-uzeit. "Hora log
      SELECTION-SCREEN END OF BLOCK a2.

      SELECTION-SCREEN BEGIN OF BLOCK a3 WITH FRAME.
      SELECT-OPTIONS: s_MSGTY FOR sy-MSGTY, "Tipo de Mensaje
      s_MSGID FOR sy-MSGID, "ID del mensaje
      s_MSGNO FOR sy-MSGNO. "N&#250;mero de Mensaje
      SELECTION-SCREEN END OF BLOCK a3.

      data: miMSGNO like sy-MSGNO.

      START-OF-SELECTION.

      SELECT * FROM apql
      INTO TABLE i_apql
      WHERE credate IN s_credat
      AND groupid IN s_groupi
      AND creator IN s_creato
      AND mandant = sy-mandt.

      LOOP AT i_apql.

      WRITE: / 'Inicio log',
      i_apql-groupid.
      SKIP.

      FREE logtable.
      PERFORM read_bdc_log_plain(rsbdc_protocol)
      TABLES
      logtable
      USING
      i_apql-temseid i_apql-mandant.

      LOOP AT logtable WHERE enterdate IN s_date
      AND entertime IN s_time.
      l_logtable = logtable.
      AT FIRST.
      WRITE: / 'Fecha: ', l_logtable-enterdate,
      l_logtable-entertime.
      SKIP.
      ENDAT.
      IF logtable-logmessage+9(20) NE ''.
      if not S_MSGTY[] is initial.
      check logtable-logmessage+73(1) in s_MSGTY.
      endif.
      if not S_MSGID[] is initial.
      check logtable-logmessage+74(16) in s_MSGID.
      endif.
      if not S_MSGNO[] is initial.
      miMSGNO = logtable-logmessage+94(3).
      check miMSGNO in s_MSGNO.
      endif.
      WRITE: / logtable-entertime,
      logtable-logmessage+3(6), "Indice
      (4) logtable-logmessage+9(20), "Transacci&#243;n
      (12) logtable-logmessage+29(40), "Programa
      logtable-logmessage+69(4), "N&#186; dynpro
      logtable-logmessage+73(1), "Tipo mensaje
      (3) logtable-logmessage+74(16), "Clase mensaje
      logtable-logmessage+94(3), "N&#186; mensaje
      logtable-logmessage+100(20). "Var1

      * bapiret2-id = logtable-logmessage+74(16).
      * bapiret2-number = logtable-logmessage+94(3).
      * bapiret2-message_v1 = logtable-logmessage+100(20).
      * CALL FUNCTION 'BAPI_MESSAGE_GETDETAIL'
      * EXPORTING
      * id = bapiret2-id
      * number = bapiret2-number
      * textformat = 'ASC'
      * message_v1 = bapiret2-message_v1
      * IMPORTING
      * message = bapiret2-message.
      *
      * WRITE: (60) bapiret2-message.
      clear: bdclm.
      BDCLM+14 = LOGTABLE-LOGMESSAGE.
      * perform get_Text(rsbdc_protocol).
      perform get_Text.
      write: (60) MTEXT.

      ENDIF.

      AT LAST.
      SKIP.
      ULINE.
      SKIP.
      ENDAT.
      ENDLOOP.
      ENDLOOP.



      *---------------------------------------------------------------------*
      * FORM : get_text *
      *---------------------------------------------------------------------*
      FORM GET_TEXT.
      tables: t100.

      *
      DATA: "ParameterAufbereitung
      BEGIN OF PAR,
      LEN(02) TYPE N,
      TEXT(254),
      END OF PAR.
      *
      *** Aufbereiten des Messagetextes
      *
      DATA: SHIFTLN TYPE I,
      VARTCNT TYPE I,
      FDPOS LIKE SY-FDPOS.

      IF BDCLM-MPARCNT CN DIGITS. "Korrupter Datensatz:
      BDCLM-MPARCNT = 0. "z.B. Hexnullen
      ENDIF.

      SELECT SINGLE * FROM T100
      WHERE SPRSL = SY-LANGU
      AND ARBGB = BDCLM-MID
      AND MSGNR = BDCLM-MNR.
      *
      IF SY-SUBRC EQ 0.
      CLEAR: MTEXT,
      PARCNT,
      MPARCNT,
      SY-FDPOS.
      *
      MOVE BDCLM-MPARCNT TO MPARCNT.
      *
      IF T100-TEXT CA '$&'. "Kennung fuer parameter:
      MOVE T100-TEXT TO MTEXT1. " alt '$' --- neu '&'
      ELSE.
      MOVE T100-TEXT TO MTEXT.
      EXIT.
      ENDIF.
      * variable teile aus batch-input protokoll in mttab bringen.
      REFRESH MTTAB.
      CLEAR SHIFTLN.
      DO MPARCNT TIMES.
      CLEAR: PAR, MTTAB.
      MOVE BDCLM-MPAR TO PAR.
      IF PAR-LEN CN DIGITS OR PAR-LEN EQ 0. "convert_no_number
      PAR-LEN = 1. "entsch&#228;rfen
      ENDIF.
      WRITE PAR-TEXT TO MTTAB-TEXT(PAR-LEN).
      MOVE PAR-LEN TO MTTAB-LEN.
      MOVE MPARCNT TO MTTAB-OFF.
      APPEND MTTAB.
      SHIFTLN = PAR-LEN + 2.
      SHIFT BDCLM-MPAR BY SHIFTLN PLACES.
      ENDDO.
      *
      MTEXT2 = MTEXT1.
      IF BDCLM-MID EQ '00' AND " sonderbehandlung s00368
      BDCLM-MNR EQ '368' AND
      BDCLM-MART EQ 'S'.
      CLEAR MTEXT2.
      CLEAR MTTAB.
      READ TABLE MTTAB INDEX 1.
      WRITE MTTAB-TEXT TO MTEXT2+0(MTTAB-LEN).
      CLEAR MTTAB.
      READ TABLE MTTAB INDEX 2.
      WRITE MTTAB-TEXT TO MTEXT2+35(MTTAB-LEN).
      MTEXT = MTEXT2.
      EXIT.
      ENDIF.

      DO_CONDENSE = X.
      CLEAR: VARTCNT, MTVAROFF.
      WHILE VARTCNT LE 3.
      VARTCNT = VARTCNT + 1.
      IF MTEXT1 CA '$&'.
      PARCNT = PARCNT + 1.
      IF SY-FDPOS GT 0.
      FDPOS = SY-FDPOS - 1. " neu sy-fdpos -1
      ELSE.
      FDPOS = SY-FDPOS.
      ENDIF.
      SHIFT MTEXT1 BY SY-FDPOS PLACES.
      IF MTEXT1(1) EQ '&'.
      SHIFT MTEXT1 BY 1 PLACES.
      CASE MTEXT1(1).
      WHEN ' '. "'& '
      PERFORM REPLACE_VAR
      USING '& ' PARCNT FDPOS.
      WHEN '$'. "'&&'
      PERFORM REPLACE_VAR
      USING '&&' 0 FDPOS.
      WHEN '1'. "'&1'
      PERFORM REPLACE_VAR
      USING '&1' 1 FDPOS.
      WHEN '2'. "'&2'
      PERFORM REPLACE_VAR
      USING '&2' 2 FDPOS.
      WHEN '3'. "'&3'
      PERFORM REPLACE_VAR
      USING '&3' 3 FDPOS.
      WHEN '4'. "'&4'
      PERFORM REPLACE_VAR
      USING '&4' 4 FDPOS.
      WHEN OTHERS. "'&'
      PERFORM REPLACE_VAR
      USING '&<' PARCNT FDPOS.
      ENDCASE.
      ENDIF.
      IF MTEXT1(1) EQ '$'.
      SHIFT MTEXT1 BY 1 PLACES.
      CASE MTEXT1(1).
      WHEN ' '. "'$ '
      PERFORM REPLACE_VAR
      USING '$ ' PARCNT FDPOS.
      WHEN '$'. "'$$'
      PERFORM REPLACE_VAR
      USING '$$' 0 FDPOS.
      WHEN '1'. "'$1'
      PERFORM REPLACE_VAR
      USING '$1' 1 FDPOS.
      WHEN '2'. "'$2'
      PERFORM REPLACE_VAR
      USING '$2' 2 FDPOS.
      WHEN '3'. "'$3'
      PERFORM REPLACE_VAR
      USING '$3' 3 FDPOS.
      WHEN '4'. "'$4'
      PERFORM REPLACE_VAR
      USING '$4' 4 FDPOS.
      WHEN OTHERS. "'$'
      PERFORM REPLACE_VAR
      USING '$<' PARCNT FDPOS.
      ENDCASE.
      ENDIF.
      ENDIF.
      ENDWHILE.
      *
      IF MTEXT2 CA '%%_D_%%'.
      REPLACE '%%_D_%%' WITH '$' INTO MTEXT2.
      ENDIF.
      IF MTEXT2 CA '%%_A_%%'.
      REPLACE '%%_A_%%' WITH '&' INTO MTEXT2.
      ENDIF.
      IF DO_CONDENSE EQ SPACE.
      MTEXT = MTEXT2.
      ELSE.
      CONDENSE MTEXT2 .
      MTEXT = MTEXT2.
      ENDIF.
      ELSE.
      MTEXT = '????????????????????????????????????????????????? ??'.
      ENDIF.
      *
      ENDFORM. " get_text

      *---------------------------------------------------------------------*
      * FORM : replace_var *
      * *
      *---------------------------------------------------------------------*
      FORM REPLACE_VAR USING VARK
      VARI TYPE I
      VARPOS.
      *
      * ersetzen der variablen teile einer fehlermeldung
      *
      DATA: VAR(02),
      VAR1,
      MOFF TYPE I.
      *
      CLEAR: MTTAB , MOFF.
      VAR = VARK.
      SHIFT VAR BY 1 PLACES.
      CASE VAR.
      WHEN ' '. "'& '
      READ TABLE MTTAB INDEX VARI.
      IF SY-SUBRC EQ 0.
      MOFF = VARPOS + MTVAROFF. "neu
      ASSIGN MTEXT2+MOFF(*) TO <MTXT>. "neu
      ASSIGN MTTAB-TEXT(MTTAB-LEN) TO <VTXT>.
      VAR1 = VARK.
      REPLACE VAR1 WITH <VTXT> INTO <MTXT>. "neu
      MTVAROFF = MTTAB-LEN. "neu
      ELSE.
      IF VARI GT MPARCNT.
      MOFF = VARPOS + MTVAROFF. "neu
      ASSIGN MTEXT2+MOFF(*) TO <MTXT>. "neu
      REPLACE VARK WITH ' ' INTO <MTXT>. "neu
      MTVAROFF = 2. "neu
      ELSE.
      MOFF = VARPOS + MTVAROFF. "neu
      ASSIGN MTEXT2+MOFF(*) TO <MTXT>. "neu
      REPLACE VARK WITH '%%_Z_%%' INTO <MTXT>. "neu
      MTVAROFF = 7. "neu
      ENDIF.
      ENDIF.
      WHEN '$'. "'&&'
      MOFF = VARPOS + MTVAROFF. "neu
      ASSIGN MTEXT2+MOFF(*) TO <MTXT>. "neu
      REPLACE VARK WITH '%%_D_%%' INTO <MTXT>. "neu
      MTVAROFF = 7. "neu
      WHEN '&'. "'&&'
      MOFF = VARPOS + MTVAROFF. "neu
      ASSIGN MTEXT2+MOFF(*) TO <MTXT>. "neu
      REPLACE VARK WITH '%%_A_%%' INTO <MTXT>. "neu
      MTVAROFF = 7. "neu
      WHEN '<'. "'&1'
      READ TABLE MTTAB INDEX VARI.
      IF SY-SUBRC EQ 0.
      IF VARK EQ '&<'.
      MOFF = VARPOS + MTVAROFF. "neu
      ASSIGN MTEXT2+MOFF(*) TO <MTXT>. "neu
      ASSIGN MTTAB-TEXT(MTTAB-LEN) TO <VTXT>.
      REPLACE '&' WITH <VTXT> INTO <MTXT>. "neu
      MTVAROFF = MTTAB-LEN. "neu
      ENDIF.
      IF VARK EQ '$<'.
      MOFF = VARPOS + MTVAROFF. "neu
      ASSIGN MTEXT2+MOFF(*) TO <MTXT>. "neu
      ASSIGN MTTAB-TEXT(MTTAB-LEN) TO <VTXT>.
      REPLACE '$' WITH <VTXT> INTO <MTXT>. "neu
      MTVAROFF = MTTAB-LEN. "neu
      ENDIF.
      ELSE.
      IF VARK EQ '&<'.
      MOFF = VARPOS + MTVAROFF. "neu
      ASSIGN MTEXT2+MOFF(*) TO <MTXT>. "neu
      REPLACE '&' WITH ' ' INTO <MTXT>. "neu
      MTVAROFF = 1. "neu
      ENDIF.
      IF VARK EQ '$<'.
      MOFF = VARPOS + MTVAROFF. "neu
      ASSIGN MTEXT2+MOFF(*) TO <MTXT>. "neu
      REPLACE '$' WITH ' ' INTO <MTXT>. "neu
      MTVAROFF = 1. "neu
      ENDIF.
      ENDIF.
      WHEN '1'. "'&1'
      READ TABLE MTTAB INDEX 1.
      IF SY-SUBRC EQ 0.
      MOFF = VARPOS + MTVAROFF. "neu
      ASSIGN MTEXT2+MOFF(*) TO <MTXT>. "neu
      ASSIGN MTTAB-TEXT(MTTAB-LEN) TO <VTXT>.
      REPLACE VARK WITH <VTXT> INTO <MTXT>. "neu
      MTVAROFF = MTTAB-LEN. "neu
      ELSE.
      IF VARI GT MPARCNT.
      MOFF = VARPOS + MTVAROFF. "neu
      ASSIGN MTEXT2+MOFF(*) TO <MTXT>. "neu
      REPLACE VARK WITH ' ' INTO <MTXT>. "neu
      MTVAROFF = 2. "neu
      ELSE.
      MOFF = VARPOS + MTVAROFF. "neu
      ASSIGN MTEXT2+MOFF(*) TO <MTXT>. "neu
      REPLACE VARK WITH '%%_Z_%%' INTO <MTXT>. "neu
      MTVAROFF = 7. "neu
      ENDIF.
      ENDIF.
      WHEN '2'. "'&2'
      READ TABLE MTTAB INDEX 2.
      IF SY-SUBRC EQ 0.
      MOFF = VARPOS + MTVAROFF. "neu
      ASSIGN MTEXT2+MOFF(*) TO <MTXT>. "neu
      ASSIGN MTTAB-TEXT(MTTAB-LEN) TO <VTXT>.
      REPLACE VARK WITH <VTXT> INTO <MTXT>. "neu
      MTVAROFF = MTTAB-LEN. "neu
      ELSE.
      IF VARI GT MPARCNT.
      MOFF = VARPOS + MTVAROFF. "neu
      ASSIGN MTEXT2+MOFF(*) TO <MTXT>. "neu
      REPLACE VARK WITH ' ' INTO <MTXT>. "neu
      MTVAROFF = 2. "neu
      ELSE.
      MOFF = VARPOS + MTVAROFF. "neu
      ASSIGN MTEXT2+MOFF(*) TO <MTXT>. "neu
      REPLACE VARK WITH '%%_Z_%%' INTO <MTXT>. "neu
      MTVAROFF = 7. "neu
      ENDIF.
      ENDIF.
      WHEN '3'. "'&3'
      READ TABLE MTTAB INDEX 3.
      IF SY-SUBRC EQ 0.
      MOFF = VARPOS + MTVAROFF. "neu
      ASSIGN MTEXT2+MOFF(*) TO <MTXT>. "neu
      ASSIGN MTTAB-TEXT(MTTAB-LEN) TO <VTXT>.
      REPLACE VARK WITH <VTXT> INTO <MTXT>. "neu
      MTVAROFF = MTTAB-LEN. "neu
      ELSE.
      IF VARI GT MPARCNT.
      MOFF = VARPOS + MTVAROFF. "neu
      ASSIGN MTEXT2+MOFF(*) TO <MTXT>. "neu
      REPLACE VARK WITH ' ' INTO <MTXT>. "neu
      MTVAROFF = 2. "neu
      ELSE.
      MOFF = VARPOS + MTVAROFF. "neu
      ASSIGN MTEXT2+MOFF(*) TO <MTXT>. "neu
      REPLACE VARK WITH '%%_Z_%%' INTO <MTXT>. "neu
      MTVAROFF = 7. "neu
      ENDIF.
      ENDIF.
      WHEN '4'. "'&4'
      READ TABLE MTTAB INDEX 4.
      IF SY-SUBRC EQ 0.
      MOFF = VARPOS + MTVAROFF. "neu
      ASSIGN MTEXT2+MOFF(*) TO <MTXT>. "neu
      ASSIGN MTTAB-TEXT(MTTAB-LEN) TO <VTXT>.
      REPLACE VARK WITH <VTXT> INTO <MTXT>. "neu
      MTVAROFF = MTTAB-LEN. "neu
      ELSE.
      IF VARI GT MPARCNT.
      MOFF = VARPOS + MTVAROFF. "neu
      ASSIGN MTEXT2+MOFF(*) TO <MTXT>. "neu
      REPLACE VARK WITH ' ' INTO <MTXT>. "neu
      MTVAROFF = 2. "neu
      ELSE.
      MOFF = VARPOS + MTVAROFF. "neu
      ASSIGN MTEXT2+MOFF(*) TO <MTXT>. "neu
      REPLACE VARK WITH '%%_Z_%%' INTO <MTXT>. "neu
      MTVAROFF = 7. "neu
      ENDIF.
      ENDIF.
      *
      ENDCASE.
      *
      DO_CONDENSE = SPACE.
      *
      ENDFORM. "replace_var

      Comentario

      Trabajando...