Create a Billing Document Changes Report

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 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章