#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! |
#2
|
|||
|
|||
Lo que buscas esta en la sm35.
Salu2. |
#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 * * * ************************************************************************ 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ó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ú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ón (12) logtable-logmessage+29(40), "Programa logtable-logmessage+69(4), "Nº dynpro logtable-logmessage+73(1), "Tipo mensaje (3) logtable-logmessage+74(16), "Clase mensaje logtable-logmessage+94(3), "Nº 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ä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 |
Herramientas | Buscar en Tema |
Desplegado | |
|
|