ABAP Code Sample to Report IDOCs in Error€¦ · * Internal tables to store detailed errors of the...

56
ABAP Code Sample to Report IDOCs in Error © 2006 SAP AG The SAP Developer Network: http://sdn.sap.com 1 Applies To: SAP 4.6 C and SAP 4.7 Enterprise Edition Summary This report displays all the error IDOCs for both INBOUND and OUTBOUND based on message type having a provision to drill down the number of errors and error type for each message type a the current week as well as pervious 5 weeks of IDOCS. Provides a option to drill down for e type, error message to find the root cause of the error By: Suresh S Revuru Company: INTELLIGROUP INC., Date: 09 March 2006 Code Sample Description Instead of using WE05 Transaction to list the IDOCS, we can use this report to display all t Error descriptions. Normally we will goto WE05 and find the error record and double click the record to see the message. It is very difficult to see each and every error IDOC . Lets think how it difficult So this simple report extract all the error IDOCS for current week and also shows the past 5 IDOCS. REPORT ZIDOC_error_message MESSAGE-ID ID. *---------------------------------------------------------------------* * AUTHOR : SURESH REVURU * *---------------------------------------------------------------------* *Include Icons INCLUDE <ICON>. *Type pools for ALV data types TYPE-POOLS: SLIS. ***********************************************************************

Transcript of ABAP Code Sample to Report IDOCs in Error€¦ · * Internal tables to store detailed errors of the...

ABAP Code Sample to Report IDOCs in Error

© 2006 SAP AG The SAP Developer Network: http://sdn.sap.com 1

Applies To:

SAP 4.6 C and SAP 4.7 Enterprise Edition

Summary

This report displays all the error IDOCs for both INBOUND and OUTBOUND based on message type, it also having a provision to drill down the number of errors and error type for each message type and also display the current week as well as pervious 5 weeks of IDOCS. Provides a option to drill down for each message type, error message to find the root cause of the error

By: Suresh S Revuru

Company: INTELLIGROUP INC.,

Date: 09 March 2006

Code Sample Description

Instead of using WE05 Transaction to list the IDOCS, we can use this report to display all the error records, Error descriptions.

Normally we will goto WE05 and find the error record and double click the record to see the exact error message. It is very difficult to see each and every error IDOC . Lets think how it difficult to do it for a week.

So this simple report extract all the error IDOCS for current week and also shows the past 5 weeks error IDOCS.

REPORT ZIDOC_error_message MESSAGE-ID ID.

*---------------------------------------------------------------------*

* AUTHOR : SURESH REVURU *

*---------------------------------------------------------------------*

*Include Icons

INCLUDE <ICON>.

*Type pools for ALV data types

TYPE-POOLS: SLIS.

***********************************************************************

ABAP Code Sample to Report IDOCs in Error

© 2006 SAP AG The SAP Developer Network: http://sdn.sap.com 2

*Declaration for Tables

***********************************************************************

TABLES:EDIDC, "Control record (IDoc)

EDIDS, "Status Record (IDOC)

TEDS1,

TEDS2,

STACUST,

STALIGHT,

ZIDOC,

FRUN. "To store the execution date .

***********************************************************************

*-Declaration of Internal Tables

***********************************************************************

DATA:BEGIN OF IT_STATUS OCCURS 0,

STATUS LIKE STACUST-STATUS,

COUNT TYPE I,

END OF IT_STATUS.

DATA: BEGIN OF IT_DOCNUM OCCURS 0,

STATUS LIKE EDIDC-STATUS,

MESTYP LIKE EDIDC-MESTYP,

DOCNUM LIKE EDIDC-DOCNUM,

END OF IT_DOCNUM.

DATA:BEGIN OF IT_COUNT OCCURS 0,

STATUS LIKE STACUST-STATUS,

ABAP Code Sample to Report IDOCs in Error

© 2006 SAP AG The SAP Developer Network: http://sdn.sap.com 3

COUNT LIKE SY-TABIX,

END OF IT_COUNT.

* Internal table for displaying the output.

DATA:BEGIN OF IT_OUTPUT OCCURS 0,

CHK, " Field for checkbox

BASEWEEK LIKE SY-DATUM,

ERROR LIKE EDIDC-STATUS,

IDOC LIKE EDIDC-DOCNUM,

MESSAGE LIKE EDIDC-MESTYP,

WK1 LIKE EDIDC-MAXSEGNUM,

WK2 LIKE EDIDC-MAXSEGNUM,

WK3 LIKE EDIDC-MAXSEGNUM,

WK4 LIKE EDIDC-MAXSEGNUM,

WK5 LIKE EDIDC-MAXSEGNUM,

END OF IT_OUTPUT.

DATA: BEGIN OF IT_IDOCMESS OCCURS 0,

SNO TYPE I,

BASEWEEK LIKE SY-DATUM,

MESSAGE LIKE EDIDC-MESTYP,

ERROR LIKE EDIDC-STATUS,

TEXT LIKE BDIDOCATTR-MESSAGE,

NO_OF_ERR LIKE ZIPOPUP-NO_OF_ERR,

WEEK LIKE ZIPOPUP-WEEK,

WK1 LIKE EDIDC-MAXSEGNUM,

WK2 LIKE EDIDC-MAXSEGNUM,

WK3 LIKE EDIDC-MAXSEGNUM,

WK4 LIKE EDIDC-MAXSEGNUM,

ABAP Code Sample to Report IDOCs in Error

© 2006 SAP AG The SAP Developer Network: http://sdn.sap.com 4

WK5 LIKE EDIDC-MAXSEGNUM,

END OF IT_IDOCMESS.

* Internal tables to store detailed errors of the idocs

DATA: IT_IDOCMESS1 LIKE ZIPOPUP OCCURS 0 WITH HEADER LINE.

DATA: IT_IDOCMESS2 LIKE IT_IDOCMESS OCCURS 0 WITH HEADER LINE,

IT_IDOCMESS2_TEMP LIKE IT_IDOCMESS OCCURS 0 WITH HEADER LINE.

* Internal table to hold all the baseweeks

DATA:BEGIN OF IT_DATE OCCURS 0,

LOW LIKE SY-DATUM,

HIGH LIKE SY-DATUM,

END OF IT_DATE.

* Declaration of Variables

DATA: NO_OF_ERR LIKE SY-TABIX.

DATA: V_FLAG LIKE SY-TABIX,

F_FLAG TYPE I.

* Fieldcatalog for IT_OUTPUT

DATA: IT_FIELDCAT_DATA TYPE SLIS_T_FIELDCAT_ALV WITH HEADER LINE,

* Events in ALV

IT_EVENTS_DATA TYPE SLIS_T_EVENT WITH HEADER LINE,

* Sorting

IT_SORT_DATA TYPE SLIS_T_SORTINFO_ALV WITH HEADER LINE,

IT_ZIDOC LIKE ZIDOC OCCURS 0 WITH HEADER LINE,

* Storing properties for fields displayed in Popup.

ABAP Code Sample to Report IDOCs in Error

© 2006 SAP AG The SAP Developer Network: http://sdn.sap.com 5

IT_FIELDCAT_POPUP TYPE SLIS_T_FIELDCAT_ALV,

X_FIEDLCAT TYPE SLIS_FIELDCAT_ALV.

*******************************************************************

*- Declaration for Variables

*******************************************************************

DATA: V_TABIX LIKE SY-TABIX, " For internal table index

V_REPID LIKE SY-REPID ,

V_COUNT TYPE I,

V_FLAG1 TYPE I,

V_SNO TYPE I,

V_MESSAGE TYPE BDIDOCATTR-MESSAGE,"EDIDC-MESTYP,

V_ERROR TYPE EDIDC-STATUS,

V_DOCNUM LIKE EDIDC-DOCNUM,

X_LAYOUT_DATA TYPE SLIS_LAYOUT_ALV, " Layout for data

X_EVENTS_DATA TYPE SLIS_ALV_EVENT. " " For events.

*******************************************************************

*- Declaration for Constants

*******************************************************************

************************************************************************

* SELECTION-SCREEN *

************************************************************************

*Selection Screen for data extraction using order create date and

*order change date.

SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001.

PARAMETERS: P_DATE LIKE EDIDC-CREDAT OBLIGATORY.

ABAP Code Sample to Report IDOCs in Error

© 2006 SAP AG The SAP Developer Network: http://sdn.sap.com 6

*SELECT-OPTIONS: P_DATE FOR EDIDC-CREDAT OBLIGATORY NO-EXTENSION.

SELECTION-SCREEN END OF BLOCK B1.

****************************************************************

*_ Initialization

****************************************************************

V_REPID = SY-REPID.

AT SELECTION-SCREEN.

PERFORM DATE_EXTRACTION.

****************************************************************

* Start of Selection

****************************************************************

START-OF-SELECTION.

**Logic to avoid the users action.

*CLEAR V_SNO.

* SELECT COUNT(*) FROM ZIDOC

* INTO V_SNO

* WHERE BASEWEEK = S_DATE-LOW OR BASEWEEK = S_DATE-HIGH

.

* IF SY-SUBRC = 0.

* MESSAGE E001.

* ENDIF.

*frun table this will be usefull in selection variant for scheduling the

ABAP Code Sample to Report IDOCs in Error

© 2006 SAP AG The SAP Developer Network: http://sdn.sap.com 7

* batch jobs for delta runs.

PERFORM UPDATE_LAST_RUN_TIME.

*This subroutine extracts the date from the given dates and stores in

* internal table it_date.

* PERFORM DATE_EXTRACTION.

*This subroutine extracts the data from EDIDIC table.

PERFORM GET_DATA_BASIC_LIST.

* This subroutine extracts the detail data from EDIDS table.

PERFORM GET_DATA_DETAIL_LIST.

* This subroutines gets the previous 4 weeks of data for comparison.

PERFORM PREVIOUS_WEEK.

SORT IT_OUTPUT BY BASEWEEK.

DELETE ADJACENT DUPLICATES FROM IT_OUTPUT COMPARING BASEWEEK

MESSAGE

ERROR.

*This subroutine displays the it_output internal table in screen

PERFORM DISPLAY_DATA.

****************************************************************

* End of Selection

****************************************************************

END-OF-SELECTION.

ABAP Code Sample to Report IDOCs in Error

© 2006 SAP AG The SAP Developer Network: http://sdn.sap.com 8

* Top of list

FORM TOP-OF-LIST.

FORMAT COLOR COL_HEADING INTENSIFIED ON.

* Display Steelcase header

CALL FUNCTION 'Z_STEELCASE_HEADER'.

FORMAT COLOR OFF.

ENDFORM.

*&---------------------------------------------------------------------*

*& Form PF_STATUS_SET

*&---------------------------------------------------------------------*

* text: This subroutine sets the pf-status

*----------------------------------------------------------------------*

* --> p1 text

* <-- p2 text

*----------------------------------------------------------------------*

FORM PF_STATUS_SET USING P_EXTAB TYPE SLIS_T_EXTAB.

SET PF-STATUS 'STANDARD'.

ENDFORM. " PF_STATUS_SET

*&---------------------------------------------------------------------*

*& Form DATE_EXTRACTION

*&---------------------------------------------------------------------*

* text

*----------------------------------------------------------------------*

* --> p1 text

ABAP Code Sample to Report IDOCs in Error

© 2006 SAP AG The SAP Developer Network: http://sdn.sap.com 9

* <-- p2 text

*----------------------------------------------------------------------*

FORM DATE_EXTRACTION.

DATA: IT_DATES LIKE ZWKDATES OCCURS 0 WITH HEADER LINE.

DATA: V_DATESTART LIKE SY-DATUM.

DATA: CURRBASEWEEK LIKE SY-DATUM.

DATA: NEXBASEWEEK LIKE SY-DATUM.

*DATA: V_DATE LIKE SY-DATUM.

*CLEAR V_DATE.

*V_DATE = P_DATE.

CALL FUNCTION 'Z_GET_WEEK_DATES'

EXPORTING

DATE = P_DATE

NUMWEEKS = '000'

DIRECT = '-'

TABLES

DATES = IT_DATES

* EXCEPTIONS

* CALC_ERROR = 1

* INC_DIRECT = 2

* OTHERS = 3

.

IF SY-SUBRC <> 0.

* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

CLEAR V_DATESTART.

ABAP Code Sample to Report IDOCs in Error

© 2006 SAP AG The SAP Developer Network: http://sdn.sap.com 10

LOOP AT IT_DATES.

V_DATESTART = IT_DATES-WKSTART.

ENDLOOP.

CLEAR CURRBASEWEEK.

CLEAR NEXBASEWEEK.

IT_DATE-HIGH = V_DATESTART - 2.

IT_DATE-LOW = IT_DATE-HIGH - 6.

CURRBASEWEEK = IT_DATE-HIGH + 1.

NEXBASEWEEK = CURRBASEWEEK + 7.

SELECT SINGLE BASEWEEK FROM ZIDOC

INTO CURRBASEWEEK

WHERE BASEWEEK = NEXBASEWEEK.

IF SY-SUBRC = 0.

MESSAGE E002.

ENDIF.

* IT_DATE-LOW = S_DATE-LOW.

* IT_DATE-HIGH = S_DATE-HIGH.

F_FLAG = 1.

WHILE F_FLAG < 6.

APPEND IT_DATE.

F_FLAG = F_FLAG + 1.

IT_DATE-LOW = IT_DATE-LOW - 7.

ABAP Code Sample to Report IDOCs in Error

© 2006 SAP AG The SAP Developer Network: http://sdn.sap.com 11

IT_DATE-HIGH = IT_DATE-HIGH - 7.

ENDWHILE.

ENDFORM. " DATE_EXTRACTION

*&---------------------------------------------------------------------*

*& Form GET_DATA_BASIC_LIST

*&---------------------------------------------------------------------*

* text

*----------------------------------------------------------------------*

* --> p1 text

* <-- p2 text

*----------------------------------------------------------------------*

FORM GET_DATA_BASIC_LIST.

DATA: IT_ZIDOC LIKE ZIDOC OCCURS 0 WITH HEADER LINE.

REFRESH IT_ZIDOC.

SELECT STACUST~STATUS

INTO TABLE IT_STATUS

FROM STACUST

JOIN STALIGHT

ON STACUST~STATVA = STALIGHT~STATVA

WHERE STALIGHT~STALIGHT = '03'.

IF SY-SUBRC = 0.

* To extract idocs for all the 5 weeks

LOOP AT IT_DATE.

SELECT STATUS COUNT(*)

FROM EDIDC

ABAP Code Sample to Report IDOCs in Error

© 2006 SAP AG The SAP Developer Network: http://sdn.sap.com 12

INTO TABLE IT_COUNT

WHERE CREDAT BETWEEN IT_DATE-LOW AND IT_DATE-HIGH

GROUP BY STATUS.

ENDLOOP.

IF SY-SUBRC EQ 0.

SORT IT_STATUS.

SORT IT_COUNT.

LOOP AT IT_COUNT.

V_TABIX = SY-TABIX.

READ TABLE IT_STATUS WITH KEY STATUS = IT_COUNT-STATUS.

IF SY-SUBRC <> 0.

DELETE IT_COUNT INDEX V_TABIX.

CLEAR IT_COUNT.

ENDIF.

ENDLOOP.

CLEAR V_TABIX.

ENDIF.

ENDIF.

******************FILLING THE IT_OUTPUT TABLE WITH THE REQUIRED DATA

REFRESH IT_OUTPUT.

SELECT COUNT(*) INTO V_SNO FROM ZIDOC WHERE SNO > 0.

LOOP AT IT_COUNT.

ABAP Code Sample to Report IDOCs in Error

© 2006 SAP AG The SAP Developer Network: http://sdn.sap.com 13

IF IT_COUNT-COUNT > 20.

CLEAR V_FLAG1.

LOOP AT IT_DATE.

V_FLAG1 = V_FLAG1 + 1.

SELECT MESTYP COUNT( * )

FROM EDIDC

INTO (IT_OUTPUT-MESSAGE, NO_OF_ERR)

WHERE STATUS = IT_COUNT-STATUS

AND CREDAT BETWEEN IT_DATE-LOW AND IT_DATE-HIGH

GROUP BY MESTYP.

IT_OUTPUT-BASEWEEK = IT_DATE-HIGH + 1.

IT_OUTPUT-ERROR = IT_COUNT-STATUS.

*This subroutine find out the previous erros for the perticular week

* PERFORM PREVIOUS_WEEK USING IT_OUTPUT-BASEWEEK IT_OUTPUT-MESSAGE

* IT_OUTPUT-ERROR.

*

CASE V_FLAG1.

WHEN 1.

IT_OUTPUT-WK1 = NO_OF_ERR.

MOVE IT_OUTPUT-WK1 TO ZIDOC-NO_OF_ERR.

MOVE 'WK1' TO ZIDOC-WEEK.

IT_OUTPUT-WK2 = ''.

IT_OUTPUT-WK3 = ''.

IT_OUTPUT-WK4 = ''.

IT_OUTPUT-WK5 = ''.

ABAP Code Sample to Report IDOCs in Error

© 2006 SAP AG The SAP Developer Network: http://sdn.sap.com 14

WHEN 2.

IT_OUTPUT-WK2 = NO_OF_ERR.

MOVE IT_OUTPUT-WK2 TO ZIDOC-NO_OF_ERR.

MOVE 'WK2' TO ZIDOC-WEEK.

IT_OUTPUT-WK1 = ''.

IT_OUTPUT-WK3 = ''.

IT_OUTPUT-WK4 = ''.

IT_OUTPUT-WK5 = ''.

WHEN 3.

IT_OUTPUT-WK3 = NO_OF_ERR.

MOVE IT_OUTPUT-WK3 TO ZIDOC-NO_OF_ERR.

MOVE 'WK3' TO ZIDOC-WEEK.

IT_OUTPUT-WK2 = ''.

IT_OUTPUT-WK1 = ''.

IT_OUTPUT-WK4 = ''.

IT_OUTPUT-WK5 = ''.

WHEN 4.

IT_OUTPUT-WK4 = NO_OF_ERR.

MOVE IT_OUTPUT-WK4 TO ZIDOC-NO_OF_ERR.

MOVE 'WK4' TO ZIDOC-WEEK.

IT_OUTPUT-WK2 = ''.

IT_OUTPUT-WK3 = ''.

IT_OUTPUT-WK1 = ''.

IT_OUTPUT-WK5 = ''.

ABAP Code Sample to Report IDOCs in Error

© 2006 SAP AG The SAP Developer Network: http://sdn.sap.com 15

WHEN 5.

IT_OUTPUT-WK5 = NO_OF_ERR.

MOVE IT_OUTPUT-WK5 TO ZIDOC-NO_OF_ERR.

MOVE 'WK5' TO ZIDOC-WEEK.

IT_OUTPUT-WK2 = ''.

IT_OUTPUT-WK3 = ''.

IT_OUTPUT-WK4 = ''.

IT_OUTPUT-WK1 = ''.

ENDCASE.

IF NO_OF_ERR > 20.

APPEND IT_OUTPUT.

CLEAR IT_OUTPUT.

ENDIF.

ENDSELECT.

ENDLOOP.

CLEAR NO_OF_ERR.

CLEAR V_FLAG1.

ENDIF.

ENDLOOP.

SORT IT_OUTPUT BY BASEWEEK.

PERFORM UPDATE_DATABASE_TABLES.

ENDFORM. " GET_DATA

*&---------------------------------------------------------------------*

ABAP Code Sample to Report IDOCs in Error

© 2006 SAP AG The SAP Developer Network: http://sdn.sap.com 16

*& Form DISPLAY_DATA

*&---------------------------------------------------------------------*

* text: This subroutine displays the data in screen

*----------------------------------------------------------------------*

* --> p1 text

* <-- p2 text

*----------------------------------------------------------------------*

FORM DISPLAY_DATA.

*Build fieldcatalog internal table

PERFORM BUILD_DATA_TABLE_CATALOG.

*Displays the Alv Grid

PERFORM DISPLAY_ALV_OUTPUT.

ENDFORM. " DISPLAY_DATA

*&---------------------------------------------------------------------*

*& Form BUILD_DATA_TABLE_CATALOG

*&---------------------------------------------------------------------*

* text: This forms builds the fieldcatalog

*----------------------------------------------------------------------*

* --> p1 text

* <-- p2 text

*----------------------------------------------------------------------*

FORM BUILD_DATA_TABLE_CATALOG.

DATA: L_POS(2) TYPE N VALUE 1.

REFRESH IT_FIELDCAT_DATA.

CLEAR IT_FIELDCAT_DATA.

ABAP Code Sample to Report IDOCs in Error

© 2006 SAP AG The SAP Developer Network: http://sdn.sap.com 17

IT_FIELDCAT_DATA-FIELDNAME = 'BASEWEEK'.

IT_FIELDCAT_DATA-TABNAME = 'IT_OUTPUT'.

IT_FIELDCAT_DATA-COL_POS = L_POS.

IT_FIELDCAT_DATA-SELTEXT_M = 'BASE WEEK'(001).

IT_FIELDCAT_DATA-DDICTXT = 'M'.

IT_FIELDCAT_DATA-OUTPUTLEN = 10.

IT_FIELDCAT_DATA-FIX_COLUMN = 'X'.

IT_FIELDCAT_DATA-EMPHASIZE = 'C700'.

* IT_FIELDCAT_DATA-HOTSPOT = 'X'.

IT_FIELDCAT_DATA-NO_ZERO = 'X'.

APPEND IT_FIELDCAT_DATA.

CLEAR IT_FIELDCAT_DATA.

L_POS = L_POS + 1.

IT_FIELDCAT_DATA-FIELDNAME = 'MESSAGE'.

IT_FIELDCAT_DATA-TABNAME = 'IT_OUTPUT'.

IT_FIELDCAT_DATA-COL_POS = L_POS.

IT_FIELDCAT_DATA-SELTEXT_M = 'MESSAGE'(002).

IT_FIELDCAT_DATA-DDICTXT = 'M'.

IT_FIELDCAT_DATA-OUTPUTLEN = 10.

IT_FIELDCAT_DATA-FIX_COLUMN = 'X'.

IT_FIELDCAT_DATA-EMPHASIZE = 'C700'.

IT_FIELDCAT_DATA-NO_ZERO = 'X'.

APPEND IT_FIELDCAT_DATA.

CLEAR IT_FIELDCAT_DATA.

L_POS = L_POS + 1.

ABAP Code Sample to Report IDOCs in Error

© 2006 SAP AG The SAP Developer Network: http://sdn.sap.com 18

IT_FIELDCAT_DATA-FIELDNAME = 'ERROR'.

IT_FIELDCAT_DATA-TABNAME = 'IT_OUTPUT'.

IT_FIELDCAT_DATA-COL_POS = L_POS.

IT_FIELDCAT_DATA-SELTEXT_M = 'ERROR'(003).

IT_FIELDCAT_DATA-DDICTXT = 'M'.

IT_FIELDCAT_DATA-OUTPUTLEN = 10.

IT_FIELDCAT_DATA-FIX_COLUMN = 'X'.

IT_FIELDCAT_DATA-EMPHASIZE = 'C700'.

IT_FIELDCAT_DATA-NO_ZERO = 'X'.

APPEND IT_FIELDCAT_DATA.

CLEAR IT_FIELDCAT_DATA.

L_POS = L_POS + 1.

IT_FIELDCAT_DATA-FIELDNAME = 'WK1'.

IT_FIELDCAT_DATA-TABNAME = 'IT_OUTPUT'.

IT_FIELDCAT_DATA-COL_POS = L_POS.

IT_FIELDCAT_DATA-SELTEXT_M = 'WEEK1 ERROS'(004).

IT_FIELDCAT_DATA-DDICTXT = 'M'.

IT_FIELDCAT_DATA-OUTPUTLEN = 10.

IT_FIELDCAT_DATA-EMPHASIZE = 'C600'.

IT_FIELDCAT_DATA-DATATYPE = 'INT4'.

IT_FIELDCAT_DATA-INTTYPE = 'I'.

IT_FIELDCAT_DATA-INTLEN = '8'.

IT_FIELDCAT_DATA-FIX_COLUMN = 'X'.

IT_FIELDCAT_DATA-NO_ZERO = 'X'.

IT_FIELDCAT_DATA-DO_SUM = 'X'.

APPEND IT_FIELDCAT_DATA.

ABAP Code Sample to Report IDOCs in Error

© 2006 SAP AG The SAP Developer Network: http://sdn.sap.com 19

CLEAR IT_FIELDCAT_DATA.

L_POS = L_POS + 1.

IT_FIELDCAT_DATA-FIELDNAME = 'WK2'.

IT_FIELDCAT_DATA-TABNAME = 'IT_OUTPUT'.

IT_FIELDCAT_DATA-COL_POS = L_POS.

IT_FIELDCAT_DATA-SELTEXT_M = 'WEEK2 ERROS'(004).

IT_FIELDCAT_DATA-DDICTXT = 'M'.

IT_FIELDCAT_DATA-OUTPUTLEN = 10.

IT_FIELDCAT_DATA-FIX_COLUMN = 'X'.

IT_FIELDCAT_DATA-EMPHASIZE = 'C600'.

IT_FIELDCAT_DATA-DATATYPE = 'INT4'.

IT_FIELDCAT_DATA-INTTYPE = 'I'.

IT_FIELDCAT_DATA-INTLEN = '8'.

IT_FIELDCAT_DATA-NO_ZERO = 'X'.

IT_FIELDCAT_DATA-DO_SUM = 'X'.

APPEND IT_FIELDCAT_DATA.

CLEAR IT_FIELDCAT_DATA.

L_POS = L_POS + 1.

IT_FIELDCAT_DATA-FIELDNAME = 'WK3'.

IT_FIELDCAT_DATA-TABNAME = 'IT_OUTPUT'.

IT_FIELDCAT_DATA-COL_POS = L_POS.

IT_FIELDCAT_DATA-SELTEXT_M = 'WEEK3 ERROS'(005).

IT_FIELDCAT_DATA-DDICTXT = 'M'.

IT_FIELDCAT_DATA-OUTPUTLEN = 10.

IT_FIELDCAT_DATA-FIX_COLUMN = 'X'.

IT_FIELDCAT_DATA-EMPHASIZE = 'C600'.

ABAP Code Sample to Report IDOCs in Error

© 2006 SAP AG The SAP Developer Network: http://sdn.sap.com 20

IT_FIELDCAT_DATA-DATATYPE = 'INT4'.

IT_FIELDCAT_DATA-INTTYPE = 'I'.

IT_FIELDCAT_DATA-INTLEN = '8'.

IT_FIELDCAT_DATA-NO_ZERO = 'X'.

IT_FIELDCAT_DATA-DO_SUM = 'X'.

APPEND IT_FIELDCAT_DATA.

CLEAR IT_FIELDCAT_DATA.

L_POS = L_POS + 1.

IT_FIELDCAT_DATA-FIELDNAME = 'WK4'.

IT_FIELDCAT_DATA-TABNAME = 'IT_OUTPUT'.

IT_FIELDCAT_DATA-COL_POS = L_POS.

IT_FIELDCAT_DATA-SELTEXT_M = 'WEEK4 ERRORS'(006).

IT_FIELDCAT_DATA-DDICTXT = 'M'.

IT_FIELDCAT_DATA-OUTPUTLEN = 10.

IT_FIELDCAT_DATA-FIX_COLUMN = 'X'.

IT_FIELDCAT_DATA-EMPHASIZE = 'C600'.

IT_FIELDCAT_DATA-DATATYPE = 'INT4'.

IT_FIELDCAT_DATA-INTTYPE = 'I'.

IT_FIELDCAT_DATA-INTLEN = '8'.

IT_FIELDCAT_DATA-NO_ZERO = 'X'.

IT_FIELDCAT_DATA-DO_SUM = 'X'.

APPEND IT_FIELDCAT_DATA.

CLEAR IT_FIELDCAT_DATA.

L_POS = L_POS + 1.

IT_FIELDCAT_DATA-FIELDNAME = 'WK5'.

IT_FIELDCAT_DATA-TABNAME = 'IT_OUTPUT'.

ABAP Code Sample to Report IDOCs in Error

© 2006 SAP AG The SAP Developer Network: http://sdn.sap.com 21

IT_FIELDCAT_DATA-COL_POS = L_POS.

IT_FIELDCAT_DATA-SELTEXT_M = 'WEEK5 ERROS'(005).

IT_FIELDCAT_DATA-DDICTXT = 'M'.

IT_FIELDCAT_DATA-OUTPUTLEN = 10.

IT_FIELDCAT_DATA-FIX_COLUMN = 'X'.

IT_FIELDCAT_DATA-EMPHASIZE = 'C600'.

IT_FIELDCAT_DATA-DATATYPE = 'INT4'.

IT_FIELDCAT_DATA-INTTYPE = 'I'.

IT_FIELDCAT_DATA-INTLEN = '8'.

IT_FIELDCAT_DATA-NO_ZERO = 'X'.

IT_FIELDCAT_DATA-DO_SUM = 'X'.

APPEND IT_FIELDCAT_DATA.

CLEAR IT_FIELDCAT_DATA.

L_POS = L_POS + 1.

ENDFORM. " BUILD_DATA_TABLE_CATALOG

*&---------------------------------------------------------------------*

*& Form DISPLAY_ALV_OUTPUT

*&---------------------------------------------------------------------*

* text This form displays the ALV grid

*----------------------------------------------------------------------*

* --> p1 text

* <-- p2 text

*----------------------------------------------------------------------*

FORM DISPLAY_ALV_OUTPUT.

DATA: L_USER_FORMNAME TYPE SLIS_FORMNAME VALUE 'USER_COMMAND',

ABAP Code Sample to Report IDOCs in Error

© 2006 SAP AG The SAP Developer Network: http://sdn.sap.com 22

L_PF_STAT_FORNAME TYPE SLIS_FORMNAME VALUE 'PF_STATUS_SET'.

* SET LAYOUT VARIABLE, EVENTS AND SORT FIELDS

X_LAYOUT_DATA-ZEBRA = 'X'. " Zebra Layout

X_LAYOUT_DATA-GET_SELINFOS = 'X'.

IT_EVENTS_DATA-NAME = 'TOP_OF_LIST'.

IT_EVENTS_DATA-FORM = 'TOP-OF-LIST'.

APPEND IT_EVENTS_DATA.

CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_INIT'

EXPORTING

I_CALLBACK_PROGRAM = V_REPID

I_CALLBACK_PF_STATUS_SET = L_PF_STAT_FORNAME

I_CALLBACK_USER_COMMAND = L_USER_FORMNAME

* IT_EXCLUDING =

.

X_LAYOUT_DATA-BOX_FIELDNAME = 'CHK'.

X_LAYOUT_DATA-BOX_TABNAME = 'IT_OUTPUT'.

* X_LAYOUT_DATA-SUBTOTALS_TEXT = '*'.

X_LAYOUT_DATA-TOTALS_TEXT = 'Totals#'.

CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_APPEND'

EXPORTING

IS_LAYOUT = X_LAYOUT_DATA

IT_FIELDCAT = IT_FIELDCAT_DATA[]

ABAP Code Sample to Report IDOCs in Error

© 2006 SAP AG The SAP Developer Network: http://sdn.sap.com 23

I_TABNAME = 'IT_OUTPUT'

IT_EVENTS = IT_EVENTS_DATA[]

IT_SORT = IT_SORT_DATA[]

* I_TEXT = ' '

TABLES

T_OUTTAB = IT_OUTPUT

EXCEPTIONS

PROGRAM_ERROR = 1

MAXIMUM_OF_APPENDS_REACHED = 2

OTHERS = 3

.

IF SY-SUBRC <> 0.

MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_DISPLAY'

* EXPORTING

* I_INTERFACE_CHECK = ' '

* IS_PRINT =

* I_SCREEN_START_COLUMN = 0

* I_SCREEN_START_LINE = 0

* I_SCREEN_END_COLUMN = 0

* I_SCREEN_END_LINE = 0

* IMPORTING

* E_EXIT_CAUSED_BY_CALLER =

* ES_EXIT_CAUSED_BY_USER =

EXCEPTIONS

ABAP Code Sample to Report IDOCs in Error

© 2006 SAP AG The SAP Developer Network: http://sdn.sap.com 24

PROGRAM_ERROR = 1

OTHERS = 2

.

IF SY-SUBRC <> 0.

MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

ENDFORM. " DISPLAY_ALV_OUTPUT

*&---------------------------------------------------------------------*

*& Form IT_POPUP_DISPLAY

*&---------------------------------------------------------------------*

* text: Displays popup screen

*----------------------------------------------------------------------*

* --> p1 text

* <-- p2 text

*----------------------------------------------------------------------*

FORM POPUP_DISPLAY.

*variables

DATA : L_POS(1) TYPE N VALUE 1. " Field pos

* Fieldcatalog for popup

DATA : IT_FIELDCAT_POP TYPE SLIS_T_FIELDCAT_ALV WITH HEADER LINE.

CLEAR IT_FIELDCAT_POP.

REFRESH IT_FIELDCAT_POP.

ABAP Code Sample to Report IDOCs in Error

© 2006 SAP AG The SAP Developer Network: http://sdn.sap.com 25

SORT IT_IDOCMESS2.

* Base Week #

IT_FIELDCAT_POP-FIELDNAME = 'BASEWEEK'.

IT_FIELDCAT_POP-TABNAME = 'IT_IDOCMESS2'.

IT_FIELDCAT_POP-COL_POS = L_POS.

IT_FIELDCAT_POP-SELTEXT_M = 'Base Week# '(030).

IT_FIELDCAT_POP-OUTPUTLEN = 10.

* IT_FIELDCAT_POP-DDICTXT = 'M'.

* IT_FIELDCAT_POP-OUTPUTLEN = 50.

* IT_FIELDCAT_POP-NO_ZERO = 'X'.

APPEND IT_FIELDCAT_POP.

CLEAR IT_FIELDCAT_POP.

L_POS = L_POS + 1.

* Message #

IT_FIELDCAT_POP-FIELDNAME = 'MESSAGE'.

IT_FIELDCAT_POP-TABNAME = 'IT_IDOCMESS2'.

IT_FIELDCAT_POP-COL_POS = L_POS.

IT_FIELDCAT_POP-SELTEXT_M = 'Message# '(030).

IT_FIELDCAT_POP-OUTPUTLEN = 10.

* IT_FIELDCAT_POP-DDICTXT = 'M'.

* IT_FIELDCAT_POP-OUTPUTLEN = 50.

* IT_FIELDCAT_POP-NO_ZERO = 'X'.

APPEND IT_FIELDCAT_POP.

CLEAR IT_FIELDCAT_POP.

ABAP Code Sample to Report IDOCs in Error

© 2006 SAP AG The SAP Developer Network: http://sdn.sap.com 26

L_POS = L_POS + 1.

* Errors #

IT_FIELDCAT_POP-FIELDNAME = 'ERROR'.

IT_FIELDCAT_POP-TABNAME = 'IT_IDOCMESS2'.

IT_FIELDCAT_POP-COL_POS = L_POS.

IT_FIELDCAT_POP-SELTEXT_M = 'Errors# '(030).

IT_FIELDCAT_POP-OUTPUTLEN = 7.

* IT_FIELDCAT_POP-DDICTXT = 'M'.

* IT_FIELDCAT_POP-OUTPUTLEN = 50.

* IT_FIELDCAT_POP-NO_ZERO = 'X'.

APPEND IT_FIELDCAT_POP.

CLEAR IT_FIELDCAT_POP.

L_POS = L_POS + 1.

* Text #

IT_FIELDCAT_POP-FIELDNAME = 'TEXT'.

IT_FIELDCAT_POP-TABNAME = 'IT_IDOCMESS2'.

IT_FIELDCAT_POP-COL_POS = L_POS.

IT_FIELDCAT_POP-SELTEXT_M = 'Text Display# '(030).

IT_FIELDCAT_POP-OUTPUTLEN = 50.

* IT_FIELDCAT_POP-DDICTXT = 'M'.

* IT_FIELDCAT_POP-OUTPUTLEN = 50.

* IT_FIELDCAT_POP-NO_ZERO = 'X'.

APPEND IT_FIELDCAT_POP.

ABAP Code Sample to Report IDOCs in Error

© 2006 SAP AG The SAP Developer Network: http://sdn.sap.com 27

CLEAR IT_FIELDCAT_POP.

L_POS = L_POS + 1.

*The code is added from here

* Number of Erros #

* IT_FIELDCAT_POP-FIELDNAME = 'WK1'.

* IT_FIELDCAT_POP-TABNAME = 'IT_IDOCMESS2'.

* IT_FIELDCAT_POP-COL_POS = L_POS.

* IT_FIELDCAT_POP-SELTEXT_M = 'Number Of Errors#'(032).

* IT_FIELDCAT_POP-DDICTXT = 'M'.

* IT_FIELDCAT_POP-OUTPUTLEN = 20.

** IT_FIELDCAT_POP-FIX_COLUMN = 'X'.

* IT_FIELDCAT_POP-EMPHASIZE = 'C600'.

* IT_FIELDCAT_POP-DATATYPE = 'INT4'.

* IT_FIELDCAT_POP-INTTYPE = 'I'.

* IT_FIELDCAT_POP-INTLEN = '8'.

* IT_FIELDCAT_POP-NO_ZERO = 'X'.

* IT_FIELDCAT_POP-DO_SUM = 'X'.

* APPEND IT_FIELDCAT_POP.

* CLEAR IT_FIELDCAT_POP.

* L_POS = L_POS + 1.

IT_FIELDCAT_POP-FIELDNAME = 'WK1'.

IT_FIELDCAT_POP-TABNAME = 'IT_IDOCMESS2'.

IT_FIELDCAT_POP-COL_POS = L_POS.

ABAP Code Sample to Report IDOCs in Error

© 2006 SAP AG The SAP Developer Network: http://sdn.sap.com 28

IT_FIELDCAT_POP-SELTEXT_M = 'Wk1'(004).

IT_FIELDCAT_POP-DDICTXT = 'M'.

IT_FIELDCAT_POP-OUTPUTLEN = 8.

IT_FIELDCAT_POP-EMPHASIZE = 'C600'.

IT_FIELDCAT_POP-DATATYPE = 'INT4'.

IT_FIELDCAT_POP-INTTYPE = 'I'.

IT_FIELDCAT_POP-INTLEN = '8'.

IT_FIELDCAT_POP-FIX_COLUMN = 'X'.

IT_FIELDCAT_POP-NO_ZERO = 'X'.

IT_FIELDCAT_POP-DO_SUM = 'X'.

APPEND IT_FIELDCAT_POP.

CLEAR IT_FIELDCAT_POP.

L_POS = L_POS + 1.

IT_FIELDCAT_POP-FIELDNAME = 'WK2'.

IT_FIELDCAT_POP-TABNAME = 'IT_IDOCMESS2'.

IT_FIELDCAT_POP-COL_POS = L_POS.

IT_FIELDCAT_POP-SELTEXT_M = 'Wk2'(004).

IT_FIELDCAT_POP-DDICTXT = 'M'.

IT_FIELDCAT_POP-OUTPUTLEN = 8.

IT_FIELDCAT_POP-FIX_COLUMN = 'X'.

IT_FIELDCAT_POP-EMPHASIZE = 'C600'.

IT_FIELDCAT_POP-DATATYPE = 'INT4'.

IT_FIELDCAT_POP-INTTYPE = 'I'.

IT_FIELDCAT_POP-INTLEN = '8'.

IT_FIELDCAT_POP-NO_ZERO = 'X'.

IT_FIELDCAT_POP-DO_SUM = 'X'.

APPEND IT_FIELDCAT_POP.

ABAP Code Sample to Report IDOCs in Error

© 2006 SAP AG The SAP Developer Network: http://sdn.sap.com 29

CLEAR IT_FIELDCAT_POP.

L_POS = L_POS + 1.

IT_FIELDCAT_POP-FIELDNAME = 'WK3'.

IT_FIELDCAT_POP-TABNAME = 'IT_IDOCMESS2'.

IT_FIELDCAT_POP-COL_POS = L_POS.

IT_FIELDCAT_POP-SELTEXT_M = 'Wk3'(005).

IT_FIELDCAT_POP-DDICTXT = 'M'.

IT_FIELDCAT_POP-OUTPUTLEN = 8.

IT_FIELDCAT_POP-FIX_COLUMN = 'X'.

IT_FIELDCAT_POP-EMPHASIZE = 'C600'.

IT_FIELDCAT_POP-DATATYPE = 'INT4'.

IT_FIELDCAT_POP-INTTYPE = 'I'.

IT_FIELDCAT_POP-INTLEN = '8'.

IT_FIELDCAT_POP-NO_ZERO = 'X'.

IT_FIELDCAT_POP-DO_SUM = 'X'.

APPEND IT_FIELDCAT_POP.

CLEAR IT_FIELDCAT_POP.

L_POS = L_POS + 1.

IT_FIELDCAT_POP-FIELDNAME = 'WK4'.

IT_FIELDCAT_POP-TABNAME = 'IT_IDOCMESS2'.

IT_FIELDCAT_POP-COL_POS = L_POS.

IT_FIELDCAT_POP-SELTEXT_M = 'Wk4'(006).

IT_FIELDCAT_POP-DDICTXT = 'M'.

IT_FIELDCAT_POP-OUTPUTLEN = 8.

IT_FIELDCAT_POP-FIX_COLUMN = 'X'.

IT_FIELDCAT_POP-EMPHASIZE = 'C600'.

ABAP Code Sample to Report IDOCs in Error

© 2006 SAP AG The SAP Developer Network: http://sdn.sap.com 30

IT_FIELDCAT_POP-DATATYPE = 'INT4'.

IT_FIELDCAT_POP-INTTYPE = 'I'.

IT_FIELDCAT_POP-INTLEN = '8'.

IT_FIELDCAT_POP-NO_ZERO = 'X'.

IT_FIELDCAT_POP-DO_SUM = 'X'.

APPEND IT_FIELDCAT_POP.

CLEAR IT_FIELDCAT_POP.

L_POS = L_POS + 1.

IT_FIELDCAT_POP-FIELDNAME = 'WK5'.

IT_FIELDCAT_POP-TABNAME = 'IT_IDOCMESS2'.

IT_FIELDCAT_POP-COL_POS = L_POS.

IT_FIELDCAT_POP-SELTEXT_M = 'Wk5'(005).

IT_FIELDCAT_POP-DDICTXT = 'M'.

IT_FIELDCAT_POP-OUTPUTLEN = 8.

IT_FIELDCAT_POP-FIX_COLUMN = 'X'.

IT_FIELDCAT_POP-EMPHASIZE = 'C600'.

IT_FIELDCAT_POP-DATATYPE = 'INT4'.

IT_FIELDCAT_POP-INTTYPE = 'I'.

IT_FIELDCAT_POP-INTLEN = '8'.

IT_FIELDCAT_POP-NO_ZERO = 'X'.

IT_FIELDCAT_POP-DO_SUM = 'X'.

APPEND IT_FIELDCAT_POP.

CLEAR IT_FIELDCAT_POP.

L_POS = L_POS + 1.

ABAP Code Sample to Report IDOCs in Error

© 2006 SAP AG The SAP Developer Network: http://sdn.sap.com 31

CALL FUNCTION 'REUSE_ALV_POPUP_TO_SELECT'

EXPORTING

I_TITLE = 'Errors For the Perticular Message'(050)

* I_SELECTION = 'X'

* I_ZEBRA = ' '

I_SCREEN_START_COLUMN = 1

I_SCREEN_START_LINE = 1

I_SCREEN_END_COLUMN = 100

I_SCREEN_END_LINE = 70

* I_CHECKBOX_FIELDNAME =

* I_LINEMARK_FIELDNAME =

* I_SCROLL_TO_SEL_LINE = 'X'

I_TABNAME = 'IT_IDOCMESS2'

* I_STRUCTURE_NAME =

IT_FIELDCAT = IT_FIELDCAT_POP[]

* IT_EXCLUDING =

* I_CALLBACK_PROGRAM =

* I_CALLBACK_USER_COMMAND =

* IS_PRIVATE =

* IMPORTING

* ES_SELFIELD =

* E_EXIT =

TABLES

T_OUTTAB = IT_IDOCMESS2

EXCEPTIONS

PROGRAM_ERROR = 1

OTHERS = 2

.

ABAP Code Sample to Report IDOCs in Error

© 2006 SAP AG The SAP Developer Network: http://sdn.sap.com 32

IF SY-SUBRC <> 0.

* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

REFRESH IT_FIELDCAT_POP.

CLEAR IT_FIELDCAT_POP.

IF SY-SUBRC <> 0.

MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

ENDFORM. " IT_POPUP_DISPLAY

*&---------------------------------------------------------------------*

*& Form USER_COMMAND

*&---------------------------------------------------------------------*

* Processing User command

*----------------------------------------------------------------------*

* -->P_UCOMM Screens, function code triggered by PAI

* -->P_SELFIELD information cursor position ALV

*----------------------------------------------------------------------*

FORM USER_COMMAND USING P_UCOMM LIKE SY-UCOMM

P_SELFIELD TYPE SLIS_SELFIELD.

CASE P_UCOMM.

WHEN 'DISPLAY'.

* P_SELFIELD-REFRESH = 'X'.

PERFORM ERROR_LIST1.

ABAP Code Sample to Report IDOCs in Error

© 2006 SAP AG The SAP Developer Network: http://sdn.sap.com 33

PERFORM POPUP_DISPLAY.

ENDCASE.

ENDFORM. " USER_COMMAND

*&---------------------------------------------------------------------*

*& Form ERROR_LIST

*&---------------------------------------------------------------------*

* text: This subroutine displayes the errors of baseweek

*----------------------------------------------------------------------*

* --> p1 text

* <-- p2 text

*----------------------------------------------------------------------*

FORM ERROR_LIST.

DATA: BEGIN OF IT_IDOC_STATUS OCCURS 0.

INCLUDE STRUCTURE EDIDS.

DATA: END OF IT_IDOC_STATUS.

DATA: IT_IDOCMESS_TEMP LIKE IT_IDOCMESS OCCURS 0 WITH HEADER LINE,

V_DATE LIKE SY-DATUM.

DATA: ERROR_COUNT TYPE I.

CLEAR: V_MESSAGE, V_ERROR.

LOOP AT IT_OUTPUT WHERE CHK = 'X'.

CLEAR IT_IDOCMESS.

REFRESH IT_IDOCMESS.

ABAP Code Sample to Report IDOCs in Error

© 2006 SAP AG The SAP Developer Network: http://sdn.sap.com 34

IT_DATE-LOW = IT_OUTPUT-BASEWEEK - 7.

IT_DATE-HIGH = IT_OUTPUT-BASEWEEK - 1.

SELECT STATUS MESTYP DOCNUM

FROM EDIDC

INTO TABLE IT_DOCNUM

WHERE MESTYP = IT_OUTPUT-MESSAGE AND

STATUS = IT_OUTPUT-ERROR AND

CREDAT BETWEEN IT_DATE-LOW AND IT_DATE-HIGH.

ERROR_COUNT = 1.

LOOP AT IT_DOCNUM.

*REFRESH IT_IDOC_STATUS.

CLEAR IT_IDOC_STATUS.

SELECT * FROM EDIDS INTO TABLE IT_IDOC_STATUS

WHERE DOCNUM = IT_DOCNUM-DOCNUM AND

STATUS = IT_DOCNUM-STATUS.

* Get most recent status record

SORT IT_IDOC_STATUS DESCENDING BY LOGDAT LOGTIM COUNTR.

READ TABLE IT_IDOC_STATUS INDEX 2.

IF SY-SUBRC <> 0 OR IT_IDOC_STATUS-STATXT = ''.

READ TABLE IT_IDOC_STATUS INDEX 1.

ENDIF.

READ TABLE IT_IDOCMESS WITH KEY TEXT = IT_IDOC_STATUS-STATXT.

ABAP Code Sample to Report IDOCs in Error

© 2006 SAP AG The SAP Developer Network: http://sdn.sap.com 35

IF SY-SUBRC EQ 0.

IT_IDOCMESS1-ERROR = IT_IDOCMESS-ERROR + 1.

MODIFY IT_IDOCMESS1 TRANSPORTING ERROR

WHERE TEXT = IT_IDOC_STATUS-STATXT.

CONTINUE.

ELSE.

IT_IDOCMESS1-TEXT = IT_IDOC_STATUS-STATXT.

IT_IDOCMESS1-ERROR = 1.

APPEND IT_IDOCMESS1.

CLEAR IT_IDOCMESS1.

CLEAR IT_DOCNUM.

ENDIF.

ENDLOOP.

SORT IT_IDOCMESS1 BY TEXT.

LOOP AT IT_IDOCMESS1 WHERE TEXT EQ SPACE.

SELECT SINGLE DESCRP FROM TEDS2 INTO TEDS2-DESCRP

WHERE STATUS = V_ERROR AND

LANGUA = 'EN'.

IT_IDOCMESS1-TEXT = TEDS2-DESCRP.

MODIFY IT_IDOCMESS1 INDEX SY-TABIX.

ENDLOOP.

LOOP AT IT_IDOCMESS1.

WRITE:/5 IT_IDOCMESS1-TEXT, 80 IT_IDOCMESS1-ERROR.

ABAP Code Sample to Report IDOCs in Error

© 2006 SAP AG The SAP Developer Network: http://sdn.sap.com 36

ENDLOOP.

*

ENDLOOP.

ENDFORM. " ERROR_LIST

*&---------------------------------------------------------------------*

*& Form UPDATE_DATABASE_TABLES

*&---------------------------------------------------------------------*

* text : This perform commits the database inserts

*----------------------------------------------------------------------*

* --> p1 text

* <-- p2 text

*----------------------------------------------------------------------*

FORM UPDATE_DATABASE_TABLES.

***********************************************************************

* Declaration of LOCAL Variables

***********************************************************************

DATA: L_REPID LIKE SY-REPID, " Program Name.

L_TIME LIKE SY-UZEIT, " Program Execution Time

L_DATE LIKE SY-DATUM, " Program Execution Date.

L_PRGID LIKE FRUN-PRGID."ABAP program name

*_ assigning the report name, executed date and executed time to local

*variables, which are used to insert in frun table

L_REPID = SY-REPID.

ABAP Code Sample to Report IDOCs in Error

© 2006 SAP AG The SAP Developer Network: http://sdn.sap.com 37

L_DATE = SY-DATUM.

L_TIME = SY-UZEIT.

* Insert or Update FRUN record that was populated earlier

MODIFY FRUN.

* The insertion takes place only once for a day.

* SELECT PRGID

* INTO L_PRGID

* FROM FRUN

* WHERE PRGID = L_REPID AND LDATU = L_DATE.

*

* IF SY-SUBRC <> 0.

* DELETE FROM ZIDOC WHERE SNO > 0.

CLEAR V_SNO.

SELECT COUNT( * ) FROM ZIDOC INTO V_SNO.

LOOP AT IT_OUTPUT.

IF IT_OUTPUT-WK1 <> 0.

V_SNO = V_SNO + 1.

MOVE IT_OUTPUT-BASEWEEK TO ZIDOC-BASEWEEK.

MOVE IT_OUTPUT-ERROR TO ZIDOC-ERROR.

MOVE IT_OUTPUT-MESSAGE TO ZIDOC-MESSAGE.

MOVE V_SNO TO ZIDOC-SNO.

MOVE IT_OUTPUT-WK1 TO ZIDOC-NO_OF_ERR.

MOVE 'WK1' TO ZIDOC-WEEK.

INSERT INTO ZIDOC VALUES ZIDOC.

CLEAR ZIDOC.

ABAP Code Sample to Report IDOCs in Error

© 2006 SAP AG The SAP Developer Network: http://sdn.sap.com 38

ENDIF.

IF IT_OUTPUT-WK2 <> 0.

MOVE IT_OUTPUT-BASEWEEK TO ZIDOC-BASEWEEK.

MOVE IT_OUTPUT-ERROR TO ZIDOC-ERROR.

MOVE IT_OUTPUT-MESSAGE TO ZIDOC-MESSAGE.

V_SNO = V_SNO + 1.

MOVE V_SNO TO ZIDOC-SNO.

MOVE IT_OUTPUT-WK2 TO ZIDOC-NO_OF_ERR.

MOVE 'WK2' TO ZIDOC-WEEK.

INSERT INTO ZIDOC VALUES ZIDOC.

CLEAR ZIDOC.

ENDIF.

IF IT_OUTPUT-WK3 <> 0.

MOVE IT_OUTPUT-BASEWEEK TO ZIDOC-BASEWEEK.

MOVE IT_OUTPUT-ERROR TO ZIDOC-ERROR.

MOVE IT_OUTPUT-MESSAGE TO ZIDOC-MESSAGE.

V_SNO = V_SNO + 1.

MOVE V_SNO TO ZIDOC-SNO.

MOVE IT_OUTPUT-WK3 TO ZIDOC-NO_OF_ERR.

MOVE 'WK3' TO ZIDOC-WEEK.

INSERT INTO ZIDOC VALUES ZIDOC.

CLEAR ZIDOC.

ABAP Code Sample to Report IDOCs in Error

© 2006 SAP AG The SAP Developer Network: http://sdn.sap.com 39

ENDIF.

IF IT_OUTPUT-WK4 <> 0.

MOVE IT_OUTPUT-BASEWEEK TO ZIDOC-BASEWEEK.

MOVE IT_OUTPUT-ERROR TO ZIDOC-ERROR.

MOVE IT_OUTPUT-MESSAGE TO ZIDOC-MESSAGE.

V_SNO = V_SNO + 1.

MOVE V_SNO TO ZIDOC-SNO.

MOVE IT_OUTPUT-WK4 TO ZIDOC-NO_OF_ERR.

MOVE 'WK4' TO ZIDOC-WEEK.

INSERT INTO ZIDOC VALUES ZIDOC.

CLEAR ZIDOC.

ENDIF.

IF IT_OUTPUT-WK5 <> 0.

MOVE IT_OUTPUT-BASEWEEK TO ZIDOC-BASEWEEK.

MOVE IT_OUTPUT-ERROR TO ZIDOC-ERROR.

MOVE IT_OUTPUT-MESSAGE TO ZIDOC-MESSAGE.

V_SNO = V_SNO + 1.

MOVE V_SNO TO ZIDOC-SNO.

MOVE IT_OUTPUT-WK5 TO ZIDOC-NO_OF_ERR.

MOVE 'WK5' TO ZIDOC-WEEK.

INSERT INTO ZIDOC VALUES ZIDOC.

CLEAR ZIDOC.

ABAP Code Sample to Report IDOCs in Error

© 2006 SAP AG The SAP Developer Network: http://sdn.sap.com 40

ENDIF.

* INSERT INTO ZIDOC VALUES ZIDOC.

ENDLOOP.

* ELSE.

* MESSAGE S001 WITH 'Extraction Program is already excuted for this day'

* .

* ENDIF.

* ENDSELECT.

ENDFORM. " UPDATE_DATABASE_TABLES

*---------------------------------------------------------------------*

* FORM UPDATE_LAST_RUN_TIME *

*---------------------------------------------------------------------*

* Update last run date and time for the report *

*---------------------------------------------------------------------*

FORM UPDATE_LAST_RUN_TIME.

***********************************************************************

* Declaration of LOCAL Variables

***********************************************************************

DATA: L_REPID LIKE SY-REPID, " Program Name.

L_TIME LIKE SY-UZEIT, " Program Execution Time

L_DATE LIKE SY-DATUM, " Program Execution Date.

L_PRGID LIKE FRUN-PRGID."ABAP program name

ABAP Code Sample to Report IDOCs in Error

© 2006 SAP AG The SAP Developer Network: http://sdn.sap.com 41

*_ assigning the report name, executed date and executed time to local

*variables, which are used to insert in frun table

L_REPID = SY-REPID.

L_DATE = SY-DATUM.

L_TIME = SY-UZEIT.

SELECT SINGLE

PRGID

INTO L_PRGID

FROM FRUN

WHERE PRGID = L_REPID.

MOVE:L_REPID TO FRUN-PRGID,

L_DATE TO FRUN-LDATU,

L_TIME TO FRUN-LZEIT.

* FRUN is updated during commit work later in the program

ENDFORM.

*&---------------------------------------------------------------------*

*& Form PREVIOUS_WEEK

*&---------------------------------------------------------------------*

* text

*----------------------------------------------------------------------*

* -->P_BASEWEEK text

*----------------------------------------------------------------------*

FORM PREVIOUS_WEEK.

* USING P_BASEWEEK P_MESSAGE P_ERROR.

ABAP Code Sample to Report IDOCs in Error

© 2006 SAP AG The SAP Developer Network: http://sdn.sap.com 42

DATA: V_LINES TYPE I.

CLEAR V_LINES.

SELECT * INTO TABLE IT_ZIDOC

FROM ZIDOC.

* WHERE

* BASEWEEK = P_BASEWEEK.

* AND

* MESSAGE = P_MESSAGE AND

* ERROR = P_ERROR.

IF SY-SUBRC = 0.

CLEAR V_TABIX.

LOOP AT IT_OUTPUT.

V_TABIX = SY-TABIX.

READ TABLE IT_ZIDOC WITH KEY BASEWEEK = IT_OUTPUT-BASEWEEK.

IF SY-SUBRC = 0.

LOOP AT IT_ZIDOC WHERE BASEWEEK = IT_OUTPUT-BASEWEEK AND

MESSAGE = IT_OUTPUT-MESSAGE AND

ERROR = IT_OUTPUT-ERROR.

CASE IT_ZIDOC-WEEK.

WHEN 'WK1'.

IT_OUTPUT-WK1 = IT_ZIDOC-NO_OF_ERR.

MODIFY IT_OUTPUT INDEX V_TABIX TRANSPORTING WK1.

WHEN 'WK2'.

IT_OUTPUT-WK2 = IT_ZIDOC-NO_OF_ERR.

MODIFY IT_OUTPUT INDEX V_TABIX TRANSPORTING WK2.

WHEN 'WK3'.

ABAP Code Sample to Report IDOCs in Error

© 2006 SAP AG The SAP Developer Network: http://sdn.sap.com 43

IT_OUTPUT-WK3 = IT_ZIDOC-NO_OF_ERR.

MODIFY IT_OUTPUT INDEX V_TABIX TRANSPORTING WK3.

WHEN 'WK4'.

IT_OUTPUT-WK4 = IT_ZIDOC-NO_OF_ERR.

MODIFY IT_OUTPUT INDEX V_TABIX TRANSPORTING WK4.

WHEN 'WK5'.

IT_OUTPUT-WK5 = IT_ZIDOC-NO_OF_ERR.

MODIFY IT_OUTPUT INDEX V_TABIX TRANSPORTING WK5.

ENDCASE.

ENDLOOP.

ELSE.

IT_OUTPUT-MESSAGE = IT_ZIDOC-MESSAGE.

IT_OUTPUT-ERROR = IT_ZIDOC-ERROR.

IT_OUTPUT-BASEWEEK = IT_ZIDOC-BASEWEEK.

CASE IT_ZIDOC-WEEK.

WHEN 'WK1'.

IT_OUTPUT-WK1 = IT_ZIDOC-NO_OF_ERR.

WHEN 'WK2'.

IT_OUTPUT-WK2 = IT_ZIDOC-NO_OF_ERR.

WHEN 'WK3'.

IT_OUTPUT-WK3 = IT_ZIDOC-NO_OF_ERR.

WHEN 'WK4'.

IT_OUTPUT-WK4 = IT_ZIDOC-NO_OF_ERR.

ABAP Code Sample to Report IDOCs in Error

© 2006 SAP AG The SAP Developer Network: http://sdn.sap.com 44

WHEN 'WK5'.

IT_OUTPUT-WK5 = IT_ZIDOC-NO_OF_ERR.

ENDCASE.

APPEND IT_OUTPUT.

CLEAR IT_OUTPUT.

ENDIF.

* MODIFY IT_OUTPUT INDEX V_TABIX TRANSPORTING WK1 WK2 WK3 WK4 WK5.

CLEAR V_TABIX.

ENDLOOP.

* ELSE.

* APPEND IT_OUTPUT.

* CLEAR IT_OUTPUT.

ENDIF.

ENDFORM. " PREVIOUS_WEEK

*&---------------------------------------------------------------------*

*& Form GET_DATA_DETAIL_LIST

*&---------------------------------------------------------------------*

* text

*----------------------------------------------------------------------*

* --> p1 text

* <-- p2 text

*----------------------------------------------------------------------*

FORM GET_DATA_DETAIL_LIST.

ABAP Code Sample to Report IDOCs in Error

© 2006 SAP AG The SAP Developer Network: http://sdn.sap.com 45

DATA: BEGIN OF IT_IDOC_STATUS OCCURS 0.

INCLUDE STRUCTURE EDIDS.

DATA: END OF IT_IDOC_STATUS.

DATA: IT_IDOCMESS_TEMP LIKE IT_IDOCMESS OCCURS 0 WITH HEADER LINE,

V_DATE LIKE SY-DATUM.

DATA: ERROR_COUNT TYPE I.

CLEAR: V_MESSAGE, V_ERROR.

DATA: V_SNO TYPE I, V_VAR1(3) TYPE C.

CLEAR V_SNO.

LOOP AT IT_OUTPUT.

CLEAR IT_IDOCMESS.

* REFRESH IT_IDOCMESS.

*

IT_DATE-LOW = IT_OUTPUT-BASEWEEK - 7.

IT_DATE-HIGH = IT_OUTPUT-BASEWEEK - 1.

SELECT STATUS MESTYP DOCNUM

FROM EDIDC

INTO TABLE IT_DOCNUM

WHERE MESTYP = IT_OUTPUT-MESSAGE AND

STATUS = IT_OUTPUT-ERROR AND

CREDAT BETWEEN IT_DATE-LOW AND IT_DATE-HIGH.

ERROR_COUNT = 1.

ABAP Code Sample to Report IDOCs in Error

© 2006 SAP AG The SAP Developer Network: http://sdn.sap.com 46

LOOP AT IT_DOCNUM.

*REFRESH IT_IDOC_STATUS.

CLEAR IT_IDOC_STATUS.

SELECT * FROM EDIDS INTO TABLE IT_IDOC_STATUS

WHERE DOCNUM = IT_DOCNUM-DOCNUM AND

STATUS = IT_DOCNUM-STATUS.

* Get most recent status record

SORT IT_IDOC_STATUS DESCENDING BY LOGDAT LOGTIM COUNTR.

READ TABLE IT_IDOC_STATUS INDEX 2.

IF SY-SUBRC <> 0 OR IT_IDOC_STATUS-STATXT = ''.

READ TABLE IT_IDOC_STATUS INDEX 1.

ENDIF.

IF IT_OUTPUT-WK5 <> 0.

V_VAR1 = 'WK5'.

ENDIF.

IF IT_OUTPUT-WK4 <> 0.

V_VAR1 = 'WK4'.

ENDIF.

IF IT_OUTPUT-WK3 <> 0.

V_VAR1 = 'WK3'.

ENDIF.

IF IT_OUTPUT-WK2 <> 0.

V_VAR1 = 'WK2'.

ENDIF.

IF IT_OUTPUT-WK1 <> 0.

V_VAR1 = 'WK1'.

ENDIF.

ABAP Code Sample to Report IDOCs in Error

© 2006 SAP AG The SAP Developer Network: http://sdn.sap.com 47

READ TABLE IT_IDOCMESS WITH KEY TEXT = IT_IDOC_STATUS-STATXT

BASEWEEK = IT_OUTPUT-BASEWEEK

MESSAGE = IT_OUTPUT-MESSAGE

ERROR = IT_OUTPUT-ERROR.

IF SY-SUBRC EQ 0.

IT_IDOCMESS-NO_OF_ERR = IT_IDOCMESS-NO_OF_ERR + 1.

MODIFY IT_IDOCMESS TRANSPORTING NO_OF_ERR

WHERE TEXT = IT_IDOC_STATUS-STATXT AND

BASEWEEK = IT_OUTPUT-BASEWEEK AND

MESSAGE = IT_OUTPUT-MESSAGE AND

ERROR = IT_OUTPUT-ERROR.

CONTINUE.

ELSE.

IT_IDOCMESS-BASEWEEK = IT_OUTPUT-BASEWEEK.

IT_IDOCMESS-MESSAGE = IT_OUTPUT-MESSAGE.

IT_IDOCMESS-ERROR = IT_OUTPUT-ERROR.

IT_IDOCMESS-TEXT = IT_IDOC_STATUS-STATXT.

IT_IDOCMESS-NO_OF_ERR = 1.

IT_IDOCMESS-WEEK = V_VAR1.

IT_IDOCMESS-SNO = V_SNO + 1.

V_SNO = V_SNO + 1.

APPEND IT_IDOCMESS.

CLEAR IT_IDOCMESS.

CLEAR IT_DOCNUM.

ENDIF.

ABAP Code Sample to Report IDOCs in Error

© 2006 SAP AG The SAP Developer Network: http://sdn.sap.com 48

ENDLOOP.

* LOOP AT IT_IDOCMESS.

* WRITE:/5 IT_IDOCMESS-TEXT, 80 IT_IDOCMESS-ERROR.

* ENDLOOP.

ENDLOOP.

SORT IT_IDOCMESS BY TEXT.

LOOP AT IT_IDOCMESS WHERE TEXT EQ SPACE OR

TEXT EQ '&'.

SELECT SINGLE DESCRP FROM TEDS2 INTO TEDS2-DESCRP

WHERE STATUS = V_ERROR AND

LANGUA = 'EN'.

IT_IDOCMESS-TEXT = TEDS2-DESCRP.

MODIFY IT_IDOCMESS INDEX SY-TABIX.

ENDLOOP.

PERFORM UPDATE_ZIPOPUP.

ENDFORM. " GET_DATA_DETAIL_LIST

*&---------------------------------------------------------------------*

*& Form UPDATE_ZIPOPUP

*&---------------------------------------------------------------------*

ABAP Code Sample to Report IDOCs in Error

© 2006 SAP AG The SAP Developer Network: http://sdn.sap.com 49

* text

*----------------------------------------------------------------------*

* --> p1 text

* <-- p2 text

*----------------------------------------------------------------------*

FORM UPDATE_ZIPOPUP.

DATA: IT_ZIPOPUP LIKE ZIPOPUP OCCURS 0 WITH HEADER LINE.

CLEAR V_SNO.

SORT IT_IDOCMESS BY BASEWEEK.

SELECT COUNT(*) FROM ZIPOPUP INTO V_SNO.

LOOP AT IT_IDOCMESS.

V_SNO = V_SNO + 1.

MOVE V_SNO TO IT_ZIPOPUP-SNO.

MOVE IT_IDOCMESS-BASEWEEK TO IT_ZIPOPUP-BASEWEEK.

MOVE IT_IDOCMESS-MESSAGE TO IT_ZIPOPUP-MESSAGE.

MOVE IT_IDOCMESS-ERROR TO IT_ZIPOPUP-ERROR.

MOVE IT_IDOCMESS-TEXT TO IT_ZIPOPUP-TEXT.

MOVE IT_IDOCMESS-NO_OF_ERR TO IT_ZIPOPUP-NO_OF_ERR.

MOVE IT_IDOCMESS-WEEK TO IT_ZIPOPUP-WEEK.

APPEND IT_ZIPOPUP.

CLEAR IT_ZIPOPUP.

ENDLOOP.

INSERT ZIPOPUP FROM TABLE IT_ZIPOPUP.

ABAP Code Sample to Report IDOCs in Error

© 2006 SAP AG The SAP Developer Network: http://sdn.sap.com 50

ENDFORM. " UPDATE_ZIPOPUP

*&---------------------------------------------------------------------*

*& Form ERROR_LIST

*&---------------------------------------------------------------------*

* text: This subroutine displayes the errors of baseweek

*----------------------------------------------------------------------*

* --> p1 text

* <-- p2 text

*----------------------------------------------------------------------*

FORM ERROR_LIST1.

DATA: BEGIN OF IT_IDOC_STATUS OCCURS 0.

INCLUDE STRUCTURE EDIDS.

DATA: END OF IT_IDOC_STATUS.

DATA: IT_IDOCMESS_TEMP LIKE IT_IDOCMESS OCCURS 0 WITH HEADER LINE,

V_DATE LIKE SY-DATUM.

DATA: ERROR_COUNT TYPE I.

CLEAR: V_MESSAGE, V_ERROR.

REFRESH IT_IDOCMESS1.

READ TABLE IT_OUTPUT WITH KEY CHK = 'X'.

ABAP Code Sample to Report IDOCs in Error

© 2006 SAP AG The SAP Developer Network: http://sdn.sap.com 51

IF SY-SUBRC <> 0.

MESSAGE W003.

ENDIF.

LOOP AT IT_OUTPUT WHERE CHK = 'X'.

SELECT SNO

BASEWEEK

MESSAGE

ERROR

TEXT

NO_OF_ERR

WEEK

APPENDING TABLE IT_IDOCMESS1

FROM ZIPOPUP

WHERE BASEWEEK = IT_OUTPUT-BASEWEEK AND

MESSAGE = IT_OUTPUT-MESSAGE AND

ERROR = IT_OUTPUT-ERROR.

SORT IT_IDOCMESS1 BY BASEWEEK MESSAGE ERROR.

LOOP AT IT_IDOCMESS1 WHERE TEXT EQ SPACE.

SELECT SINGLE DESCRP FROM TEDS2 INTO TEDS2-DESCRP

WHERE STATUS = V_ERROR AND

LANGUA = 'EN'.

IT_IDOCMESS1-TEXT = TEDS2-DESCRP.

ABAP Code Sample to Report IDOCs in Error

© 2006 SAP AG The SAP Developer Network: http://sdn.sap.com 52

MODIFY IT_IDOCMESS1 INDEX SY-TABIX.

ENDLOOP.

LOOP AT IT_IDOCMESS.

WRITE:/5 IT_IDOCMESS-TEXT, 80 IT_IDOCMESS-ERROR.

ENDLOOP.

ENDLOOP.

*// Here the code

CLEAR IT_IDOCMESS2.

REFRESH IT_IDOCMESS2.

LOOP AT IT_IDOCMESS1.

CLEAR V_TABIX.

V_TABIX = SY-TABIX.

MOVE: IT_IDOCMESS1-BASEWEEK TO IT_IDOCMESS2-BASEWEEK,

IT_IDOCMESS1-MESSAGE TO IT_IDOCMESS2-MESSAGE,

IT_IDOCMESS1-ERROR TO IT_IDOCMESS2-ERROR,

IT_IDOCMESS1-TEXT TO IT_IDOCMESS2-TEXT.

READ TABLE IT_IDOCMESS2 WITH KEY BASEWEEK = IT_IDOCMESS1-BASEWEEK

MESSAGE = IT_IDOCMESS1-MESSAGE

ERROR = IT_IDOCMESS1-ERROR

TEXT = IT_IDOCMESS1-TEXT.

IF SY-SUBRC = 0.

ABAP Code Sample to Report IDOCs in Error

© 2006 SAP AG The SAP Developer Network: http://sdn.sap.com 53

CASE IT_IDOCMESS1-WEEK.

WHEN 'WK1'.

IT_IDOCMESS2-WK1 = IT_IDOCMESS1-NO_OF_ERR.

MODIFY IT_IDOCMESS2 TRANSPORTING WK1

WHERE BASEWEEK = IT_IDOCMESS1-BASEWEEK AND

MESSAGE = IT_IDOCMESS1-MESSAGE AND

ERROR = IT_IDOCMESS1-ERROR AND

TEXT = IT_IDOCMESS1-TEXT.

WHEN 'WK2'.

IT_IDOCMESS2-WK2 = IT_IDOCMESS1-NO_OF_ERR.

MODIFY IT_IDOCMESS2 TRANSPORTING WK2

WHERE BASEWEEK = IT_IDOCMESS1-BASEWEEK AND

MESSAGE = IT_IDOCMESS1-MESSAGE AND

ERROR = IT_IDOCMESS1-ERROR AND

TEXT = IT_IDOCMESS1-TEXT.

WHEN 'WK3'.

IT_IDOCMESS2-WK3 = IT_IDOCMESS1-NO_OF_ERR.

MODIFY IT_IDOCMESS2 TRANSPORTING WK3

WHERE BASEWEEK = IT_IDOCMESS1-BASEWEEK AND

MESSAGE = IT_IDOCMESS1-MESSAGE AND

ERROR = IT_IDOCMESS1-ERROR AND

TEXT = IT_IDOCMESS1-TEXT.

WHEN 'WK4'.

ABAP Code Sample to Report IDOCs in Error

© 2006 SAP AG The SAP Developer Network: http://sdn.sap.com 54

IT_IDOCMESS2-WK4 = IT_IDOCMESS1-NO_OF_ERR.

MODIFY IT_IDOCMESS2 TRANSPORTING WK4

WHERE BASEWEEK = IT_IDOCMESS1-BASEWEEK AND

MESSAGE = IT_IDOCMESS1-MESSAGE AND

ERROR = IT_IDOCMESS1-ERROR AND

TEXT = IT_IDOCMESS1-TEXT.

WHEN 'WK5'.

IT_IDOCMESS2-WK5 = IT_IDOCMESS1-NO_OF_ERR.

MODIFY IT_IDOCMESS2 TRANSPORTING WK5

WHERE BASEWEEK = IT_IDOCMESS1-BASEWEEK AND

MESSAGE = IT_IDOCMESS1-MESSAGE AND

ERROR = IT_IDOCMESS1-ERROR AND

TEXT = IT_IDOCMESS1-TEXT.

ENDCASE.

ELSE.

CASE IT_IDOCMESS1-WEEK.

WHEN 'WK1'.

IT_IDOCMESS2-WK1 = IT_IDOCMESS1-NO_OF_ERR.

WHEN 'WK2'.

IT_IDOCMESS2-WK2 = IT_IDOCMESS1-NO_OF_ERR.

WHEN 'WK3'.

IT_IDOCMESS2-WK3 = IT_IDOCMESS1-NO_OF_ERR.

ABAP Code Sample to Report IDOCs in Error

© 2006 SAP AG The SAP Developer Network: http://sdn.sap.com 55

WHEN 'WK4'.

IT_IDOCMESS2-WK4 = IT_IDOCMESS1-NO_OF_ERR.

WHEN 'WK5'.

IT_IDOCMESS2-WK5 = IT_IDOCMESS1-NO_OF_ERR.

ENDCASE.

APPEND IT_IDOCMESS2.

CLEAR IT_IDOCMESS2.

ENDIF.

ENDLOOP.

CLEAR V_TABIX.

SORT IT_IDOCMESS2 BY BASEWEEK

MESSAGE

ERROR.

LOOP AT IT_IDOCMESS2.

V_TABIX = SY-TABIX.

V_TABIX = V_TABIX + 1.

READ TABLE IT_IDOCMESS2 INTO IT_IDOCMESS2_TEMP INDEX V_TABIX.

ABAP Code Sample to Report IDOCs in Error

© 2006 SAP AG The SAP Developer Network: http://sdn.sap.com

IF IT_IDOCMESS2-BASEWEEK = IT_IDOCMESS2_TEMP-BASEWEEK.

IT_IDOCMESS-BASEWEEK = ''.

CLEAR IT_IDOCMESS2-BASEWEEK.

MODIFY IT_IDOCMESS2 INDEX V_TABIX TRANSPORTING BASEWEEK.

ENDIF.

ENDLOOP.

ENDFORM. " ERROR_LIST

This is a sample of a hyper link in a document.

Author Bio

Mr. Suresh Revuru is an SAP System Analyst working for INTELLIGROUP INC., for more than 3 years.

Disclaimer & Liability Notice

This document may discuss sample coding or other information that does not include SAP official interfaces and therefore is not supported by SAP. Changes made based on this information are not supported and can be overwritten during an upgrade.

SAP will not be held liable for any damages caused by using or misusing the information, code or methods suggested in this document, and anyone using these methods does so at his/her own risk.

SAP offers no guarantees and assumes no responsibility or liability of any type with respect to the content of this technical article or code sample, including any liability resulting from incompatibility between the content within this document and the materials and services offered by SAP. You agree that you will not hold, or seek to hold, SAP responsible or liable with respect to the content of this document.

56