Home Sample Code ABAP Reports Purchase Order History Mass Display
|
|
|
|
Purchase Order History Mass Display |
|
|
|
|
Written by Anon.
|
|
Monday, 16 July 2007 |
Instead of checking your Purchase Order History one at a time, you can now mass display or print them with this customized abap report.
* You can request report by : * 1. Change date * 2. User Name * 3. Purchase Order Number * 4. Vendor Code
REPORT ZPOCHANGE LINE-SIZE 132 NO STANDARD PAGE HEADING LINE-COUNT 065(001) MESSAGE-ID VR.
TABLES: DD04T, CDHDR, CDPOS, DD03L, DD41V, T685T, VBPA, TPART, KONVC, EKKO.
SELECT-OPTIONS: XUDATE FOR CDHDR-UDATE, XNAME FOR CDHDR-USERNAME, XEBELN FOR EKKO-EBELN, XLIFNR FOR EKKO-LIFNR.
SELECTION-SCREEN SKIP. * TEXT-001 - Sorting Sequence SELECTION-SCREEN BEGIN OF BLOCK BLK1 WITH FRAME TITLE TEXT-001. PARAMETERS: SUDATE RADIOBUTTON GROUP R1, SNAME RADIOBUTTON GROUP R1, SOBID RADIOBUTTON GROUP R1. SELECTION-SCREEN END OF BLOCK BLK1.
DATA: WFLAG, WCHANGENR LIKE CDHDR-CHANGENR.
DATA: INDTEXT(60) TYPE C.
DATA: BEGIN OF ICDHDR OCCURS 50. INCLUDE STRUCTURE CDHDR. DATA: END OF ICDHDR.
DATA: BEGIN OF ICDSHW OCCURS 50. INCLUDE STRUCTURE CDSHW. DATA: END OF ICDSHW.
DATA: BEGIN OF EKKEY, EBELN LIKE EKET-EBELN, EBELP LIKE EKET-EBELP, ETENR LIKE EKET-ETENR,
END OF EKKEY.
DATA: BEGIN OF ITAB OCCURS 50, BEGIN OF EKKEY, EBELN LIKE EKET-EBELN, EBELP LIKE EKET-EBELP,
ETENR LIKE EKET-ETENR, END OF EKKEY, CHANGENR LIKE CDHDR-CHANGENR, UDATE LIKE CDHDR-UDATE, UTIME LIKE CDHDR-UTIME, USERNAME LIKE CDHDR-USERNAME, CHNGIND LIKE CDSHW-CHNGIND, FTEXT LIKE CDSHW-FTEXT, OUTLEN LIKE CDSHW-OUTLEN, F_OLD LIKE CDSHW-F_OLD, F_NEW LIKE CDSHW-F_NEW, END OF ITAB.
DATA: OLD_OBJECTID LIKE CDHDR-OBJECTID.
FIELD-SYMBOLS: , .
SELECT * FROM EKKO WHERE EBELN IN XEBELN AND LIFNR IN XLIFNR. CLEAR CDHDR. CLEAR CDPOS. CDHDR-OBJECTCLAS = 'EINKBELEG'. CDHDR-OBJECTID = EKKO-EBELN. PERFORM GETCHGDOCS. ENDSELECT.
IF SUDATE = 'X'. SORT ITAB BY UDATE EKKEY-EBELN CHANGENR EKKEY-EBELP EKKEY-ETENR. ELSEIF SNAME = 'X'. SORT ITAB BY USERNAME EKKEY-EBELN CHANGENR EKKEY-EBELP EKKEY-ETENR. ELSE. SORT ITAB BY EKKEY-EBELN CHANGENR EKKEY-EBELP EKKEY-ETENR. ENDIF.
LOOP AT ITAB. CLEAR: INDTEXT, EKKEY. CASE ITAB-CHNGIND. WHEN 'U'. INDTEXT(50) = ITAB-FTEXT. INDTEXT+51 = TEXT-020. CONDENSE INDTEXT. WHEN 'D'. INDTEXT = TEXT-021. WHEN 'E'. INDTEXT(5) = ITAB-FTEXT. INDTEXT+51 = TEXT-021. CONDENSE INDTEXT. WHEN 'I'. INDTEXT = TEXT-022. ENDCASE. RESERVE 4 LINES. IF WCHANGENR NE ITAB-CHANGENR. WCHANGENR = ITAB-CHANGENR. EKKEY = ITAB-EKKEY. WRITE:/ ITAB-UDATE UNDER 'Change Date', ITAB-UTIME UNDER 'Time', ITAB-USERNAME UNDER 'User Name', ITAB-EKKEY-EBELN UNDER 'PO No', ITAB-EKKEY-EBELP UNDER 'Item', ITAB-EKKEY-ETENR UNDER 'Sch No', INDTEXT UNDER 'Changes'. ELSEIF ITAB-EKKEY NE EKKEY. WRITE:/ ITAB-EKKEY-EBELP UNDER 'Item', ITAB-EKKEY-ETENR UNDER 'Sch No', INDTEXT UNDER 'Changes'.
ENDIF.
CASE ITAB-CHNGIND. WHEN 'U'. ASSIGN ITAB-F_OLD(ITAB-OUTLEN) TO . ASSIGN ITAB-F_NEW(ITAB-OUTLEN) TO . WRITE: / TEXT-023 UNDER 'Changes', . WRITE: / TEXT-024 UNDER 'Changes', . WHEN 'E'. ASSIGN ITAB-F_OLD(ITAB-OUTLEN) TO . WRITE: TEXT-023 UNDER 'Changes', . ENDCASE. SKIP. ENDLOOP.
TOP-OF-PAGE. WRITE:/ SY-DATUM,SY-UZEIT, 50 'P U R C H A S E O R D E R H I S T O R Y', 120 'Page', SY-PAGNO. WRITE: / SY-REPID, 60 'Purchase Orders Changes'. SKIP. ULINE. IF SUDATE = 'X'. WRITE:/001 'Change Date', 014 'Time', 024 'User Name', 038 'PO No', 050 'Item', 057 'Sch No', 065 'Changes'. ELSEIF SOBID = 'X'. WRITE:/001 'PO No', 013 'Item', 020 'Sch No', 028 'Change Date', 041 'Time', 051 'User Name', 065 'Changes'. ELSE. WRITE:/001 'User Name', 015 'Change Date', 028 'Time', 038 'PO No', 050 'Item', 057 'Sch No', 065 'Changes'. ENDIF. ULINE.
FORM GETCHGDOCS. CALL FUNCTION 'CHANGEDOCUMENT_READ_HEADERS' EXPORTING DATE_OF_CHANGE = CDHDR-UDATE OBJECTCLASS = CDHDR-OBJECTCLAS OBJECTID = CDHDR-OBJECTID TIME_OF_CHANGE = CDHDR-UTIME USERNAME = CDHDR-USERNAME TABLES I_CDHDR = ICDHDR EXCEPTIONS NO_POSITION_FOUND = 1 OTHERS = 2.
CHECK SY-SUBRC EQ 0. DELETE ICDHDR WHERE CHANGE_IND EQ 'I'. CHECK NOT ICDHDR[] IS INITIAL. LOOP AT ICDHDR. CHECK ICDHDR-UDATE IN XUDATE. CHECK ICDHDR-USERNAME IN XNAME. CALL FUNCTION 'CHANGEDOCUMENT_READ_POSITIONS' EXPORTING CHANGENUMBER = ICDHDR-CHANGENR IMPORTING HEADER = CDHDR TABLES EDITPOS = ICDSHW EXCEPTIONS NO_POSITION_FOUND = 1 OTHERS = 2. CHECK SY-SUBRC EQ 0. LOOP AT ICDSHW. CHECK ICDSHW-TEXT_CASE EQ SPACE. MOVE-CORRESPONDING ICDSHW TO ITAB. MOVE-CORRESPONDING ICDHDR TO ITAB. MOVE ICDSHW-TABKEY+3 TO ITAB-EKKEY. APPEND ITAB. ENDLOOP. ENDLOOP. ENDFORM. * * END OF PROGRAM |
|
|
|