REPORT ZUTBDCER. *----------------------------------------------------------------------* * Topic: Batch Input Session analyzer * * * * Description: The program will take information about a BDC session * * (name, create date and create time) and it will print * * out the transactions that were in error. It expands on * * the ANALYSIS button when you display the log file. * * * * It will show you the screen flow and the field contents * * * * Implementing: * * * * Customizing: None. * * * * Change of Check tables. * * release: * * * * SAP Releases:2.2x - 3.0x * * * * Programmer: Contribution from Caras Howard Howard.Caras@sni-usa.com * * who has made som modification to abap program from the * * SAP-R3-LIST with unknown originally creator * * * * Date: may 1997 * * * * Submitting: By transaction SA38 or by batch job scheduling. * * * * Authori- : None * * zation * * * * Sel. options Groupid: * * Credate: * * Cretime: * * * *-------------------------------Corrections----------------------------* * Date Userid Correction * * ??-??-???? ?????? * *----------------------------------------------------------------------* TABLES: APQI, APQD, *APQD, DDFTX, D021T. DATA: SKIP_TRANS LIKE APQD-TRANS, NO_ERRORS(5) TYPE N, PROG_NAME LIKE D021T-PROG, DYNR_NAME LIKE D021T-DYNR, FLD_NAME(15), FLD_NAME2(15), TABLE_NAME(15), FLD_DESC(40), FLD_VALUE(38), LENGTH LIKE SY-FDPOS, DATA_OFFSET LIKE SY-FDPOS. DATA: BEGIN OF DELIM, HEX_# TYPE X VALUE 00, END OF DELIM. SELECT-OPTIONS: GROUPID FOR APQI-GROUPID, "Session Name CREDATE FOR APQI-CREDATE, "Date Created CRETIME FOR APQI-CRETIME. "Time Created FIELD-SYMBOLS <F1>. SELECT * FROM APQI WHERE GROUPID IN GROUPID AND CREDATE IN CREDATE AND CRETIME IN CRETIME. SKIP. WRITE: / 'SESSION NAME :', APQI-GROUPID. WRITE: / 'PROCESSING DATE:', APQI-CREDATE. WRITE: / 'PROCESSING TIME:', APQI-CRETIME. NO_ERRORS = 'Y'. SELECT * FROM APQD WHERE QID = APQI-QID ORDER BY TRANS BLOCK SEGMT MSGCOUNT. IF APQD-BLOCK = 1. CLEAR SKIP_TRANS. IF APQD-VARDATA+1(1) NE 'E'. SKIP_TRANS = APQD-TRANS. ELSE. ADD 1 TO NO_ERRORS. SKIP. WRITE:/2 'Error in transaction #', APQD-TRANS. CHECK 'x' NE 'x'. ENDIF. ENDIF. CHECK SKIP_TRANS NE APQD-TRANS. PROG_NAME = APQD-VARDATA+6(8). DYNR_NAME = APQD-VARDATA+14(4). WRITE:/4 'Program name:', APQD-VARDATA+6(8), 'screen:', APQD-VARDATA+14(4). SHIFT APQD-VARDATA LEFT BY 20 PLACES. WHILE SY-SUBRC = 0. CALL FUNCTION 'STRING_SPLIT' EXPORTING DELIMITER = DELIM STRING = APQD-VARDATA IMPORTING HEAD = FLD_NAME TAIL = APQD-VARDATA EXCEPTIONS NOT_FOUND = 01 NOT_VALID = 02 TOO_LONG = 03 TOO_SMALL = 04. CHECK SY-SUBRC = 0. PERFORM FIND_FIELD_DESCRIPTION. CALL FUNCTION 'STRING_SPLIT' EXPORTING DELIMITER = DELIM STRING = APQD-VARDATA IMPORTING HEAD = FLD_VALUE TAIL = APQD-VARDATA EXCEPTIONS NOT_FOUND = 01 NOT_VALID = 02 TOO_LONG = 03 TOO_SMALL = 04. CHECK SY-SUBRC = 0. IF FLD_NAME = 'BDC_OKCODE'. FLD_DESC = 'OK CODE'. ENDIF. WRITE:/6 'Field name:', FLD_DESC, 'value:', FLD_VALUE, ' (',FLD_NAME,')'. ENDWHILE. ENDSELECT. IF NO_ERRORS IS INITIAL. WRITE:/ 'No errors'. ELSE. SKIP 3. ULINE. WRITE:/ 'There were',NO_ERRORS,'errors in this batch.'. ULINE. ENDIF. NEW-PAGE. ENDSELECT. *&---------------------------------------------------------------------* *& Form FIND_FIELD_DESCRIPTION *&---------------------------------------------------------------------* FORM FIND_FIELD_DESCRIPTION. CALL FUNCTION 'STRING_SPLIT' EXPORTING DELIMITER = '-' STRING = FLD_NAME IMPORTING HEAD = TABLE_NAME TAIL = FLD_NAME2 EXCEPTIONS NOT_FOUND = 01 NOT_VALID = 02 TOO_LONG = 03 TOO_SMALL = 04. CHECK SY-SUBRC = 0. CHECK NOT FLD_NAME IS INITIAL. SELECT SINGLE * FROM DDFTX WHERE TABNAME = TABLE_NAME AND FIELDNAME = FLD_NAME2(5) AND DDLANGUAGE = SY-LANGU. IF SY-SUBRC = 0. FLD_DESC = DDFTX-SCRTEXT_L. IF FLD_DESC IS INITIAL. SELECT SINGLE * FROM D021T WHERE PROG = PROG_NAME AND DYNR = DYNR_NAME AND LANG = SY-LANGU AND FLDN = FLD_NAME. IF SY-SUBRC = 0. FLD_DESC = D021T-DTXT. ELSE. FLD_DESC = 'field name not found'. ENDIF. ENDIF. ENDIF. ENDFORM. " FIND_FIELD_DESCRIPTION