REPORT ZRSD0113 .
TYPE-POOLS: SLIS.
TABLES:CDHDR.
DATA: BEGIN OF ITAB OCCURS 0,
OBJECTCLAS LIKE CDHDR-OBJECTCLAS,
USERNAME LIKE CDHDR-USERNAME,
UDATE LIKE CDHDR-UDATE,
OBJECTID LIKE CDHDR-OBJECTID,
TCODE LIKE CDHDR-TCODE,
UTIME LIKE CDHDR-UTIME,
CHANGENR LIKE CDHDR-CHANGENR ,
FTEXT(60) TYPE C,
F_OLD(30) TYPE C,
F_NEW(30) TYPE C,
END OF ITAB.
DATA: BEGIN OF DTAB OCCURS 0,
OBJECTCLAS LIKE CDHDR-OBJECTCLAS,
USERNAME LIKE CDHDR-USERNAME,
UDATE LIKE CDHDR-UDATE,
OBJECTID LIKE CDHDR-OBJECTID,
TCODE LIKE CDHDR-TCODE,
UTIME LIKE CDHDR-UTIME,
CHANGENR LIKE CDHDR-CHANGENR ,
FTEXT(60) TYPE C,
F_OLD(254) TYPE C,
F_NEW(254) TYPE C,
END OF DTAB.
DATA: GT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV, "ALV Field Catalog
LS_FIELDCAT TYPE SLIS_FIELDCAT_ALV,
G_LAYOUT TYPE SLIS_LAYOUT_ALV,
G_TITLE TYPE LVC_TITLE,
G_REPID LIKE SY-REPID,
G_VARIANT LIKE DISVARIANT, "Layout Variant
T_SORT TYPE SLIS_T_SORTINFO_ALV, "for subtotal
T_TOP_OF_PAGE TYPE SLIS_T_LISTHEADER. "ALV Top-of-page
DATA: ICDSHW LIKE CDSHW OCCURS 0 WITH HEADER LINE.
SELECT-OPTIONS: S_UNAME FOR CDHDR-USERNAME OBLIGATORY.
SELECT-OPTIONS: S_UDATE FOR CDHDR-UDATE.
*----------------------------------------------------------------------*
* INITIALIZATION *
*----------------------------------------------------------------------*
INITIALIZATION.
*----------------------------------------------------------------------*
* START-OF-SELECTION *
*----------------------------------------------------------------------*
START-OF-SELECTION.
PERFORM GET_DATA.
END-OF-SELECTION.
PERFORM SUB_OUTPUT_TO_ALV .
*&--------------------------------------------------------------------*
*& Form GET_DATA
*&--------------------------------------------------------------------*
* text
*---------------------------------------------------------------------*
FORM GET_DATA.
SELECT CDHDR~OBJECTID CDHDR~USERNAME CDHDR~CHANGENR
CDHDR~TCODE CDHDR~UDATE CDHDR~UTIME
INTO CORRESPONDING FIELDS OF TABLE ITAB
FROM CDHDR
WHERE CDHDR~USERNAME IN S_UNAME
AND CDHDR~UDATE IN S_UDATE
AND ( CDHDR~OBJECTCLAS = 'FAKTBELEG'
OR CDHDR~OBJECTCLAS = 'VERKBELEG').
LOOP AT ITAB.
DTAB-OBJECTID = ITAB-OBJECTID.
DTAB-USERNAME = ITAB-USERNAME.
DTAB-CHANGENR = ITAB-CHANGENR.
DTAB-TCODE = ITAB-TCODE.
DTAB-UDATE = ITAB-UDATE.
DTAB-UTIME = ITAB-UTIME.
CALL FUNCTION 'CHANGEDOCUMENT_READ_POSITIONS'
EXPORTING
CHANGENUMBER = DTAB-CHANGENR
TABLES
EDITPOS = ICDSHW
EXCEPTIONS
NO_POSITION_FOUND = 1
WRONG_ACCESS_TO_ARCHIVE = 2
OTHERS = 3.
IF SY-SUBRC = 0.
LOOP AT ICDSHW.
MOVE-CORRESPONDING ICDSHW TO DTAB.
APPEND DTAB.
ENDLOOP.
ENDIF.
ENDLOOP.
ENDFORM. "GET_DATA
*&--------------------------------------------------------------------*
*& Form SUB_OUTPUT_TO_ALV
*&--------------------------------------------------------------------*
* text
*---------------------------------------------------------------------*
FORM SUB_OUTPUT_TO_ALV.
G_LAYOUT-COLWIDTH_OPTIMIZE = 'X'.
CLEAR LS_FIELDCAT.
LS_FIELDCAT-TABNAME = 'DTAB'.
LS_FIELDCAT-FIELDNAME = 'OBJECTID'.
LS_FIELDCAT-SELTEXT_L = 'Sales order/Invoice'.
LS_FIELDCAT-NO_ZERO = 'X'.
APPEND LS_FIELDCAT TO GT_FIELDCAT.
CLEAR LS_FIELDCAT.
LS_FIELDCAT-TABNAME = 'DTAB'.
LS_FIELDCAT-FIELDNAME = 'USERNAME'.
LS_FIELDCAT-SELTEXT_L = 'User Name'.
LS_FIELDCAT-NO_ZERO = 'X'.
APPEND LS_FIELDCAT TO GT_FIELDCAT.
CLEAR LS_FIELDCAT.
LS_FIELDCAT-TABNAME = 'DTAB'.
LS_FIELDCAT-FIELDNAME = 'TCODE'.
LS_FIELDCAT-SELTEXT_L = 'TCODE'.
LS_FIELDCAT-NO_ZERO = 'X'.
APPEND LS_FIELDCAT TO GT_FIELDCAT.
CLEAR LS_FIELDCAT.
LS_FIELDCAT-TABNAME = 'DTAB'.
LS_FIELDCAT-FIELDNAME = 'UDATE'.
LS_FIELDCAT-SELTEXT_L = 'Change Date'.
LS_FIELDCAT-NO_ZERO = 'X'.
APPEND LS_FIELDCAT TO GT_FIELDCAT.
CLEAR LS_FIELDCAT.
LS_FIELDCAT-TABNAME = 'DTAB'.
LS_FIELDCAT-FIELDNAME = 'UTIME'.
LS_FIELDCAT-SELTEXT_L = 'Change Time'.
LS_FIELDCAT-NO_ZERO = 'X'.
APPEND LS_FIELDCAT TO GT_FIELDCAT.
CLEAR LS_FIELDCAT.
LS_FIELDCAT-TABNAME = 'DTAB'.
LS_FIELDCAT-FIELDNAME = 'FTEXT'.
LS_FIELDCAT-SELTEXT_L = 'Change filed description'.
LS_FIELDCAT-NO_ZERO = 'X'.
APPEND LS_FIELDCAT TO GT_FIELDCAT.
CLEAR LS_FIELDCAT.
LS_FIELDCAT-TABNAME = 'DTAB'.
LS_FIELDCAT-FIELDNAME = 'F_OLD'.
LS_FIELDCAT-SELTEXT_L = 'Change field’s old value'.
LS_FIELDCAT-NO_ZERO = 'X'.
APPEND LS_FIELDCAT TO GT_FIELDCAT.
CLEAR LS_FIELDCAT.
LS_FIELDCAT-TABNAME = 'DTAB'.
LS_FIELDCAT-FIELDNAME = 'F_NEW'.
LS_FIELDCAT-SELTEXT_L = 'Change field’s new value'.
LS_FIELDCAT-NO_ZERO = 'X'.
APPEND LS_FIELDCAT TO GT_FIELDCAT.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_GRID_TITLE = G_TITLE
IT_FIELDCAT = GT_FIELDCAT
I_CALLBACK_PROGRAM = G_REPID
IS_LAYOUT = G_LAYOUT
I_SAVE = 'A'
TABLES
T_OUTTAB = DTAB.
ENDFORM. "SUB_OUTPUT_TO_ALV