ABAP program for Mass Purchase Order History Display
This is a customized ABAP report for mass Purchase Order history display instead of checking one a time.
* * Mass display or print Purchase Order History * * 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: <F_OLD>, <F_NEW>. 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 <F_OLD>. ASSIGN ITAB-F_NEW(ITAB-OUTLEN) TO <F_NEW>. WRITE: / TEXT-023 UNDER 'Changes', <F_OLD>. WRITE: / TEXT-024 UNDER 'Changes', <F_NEW>. WHEN 'E'. ASSIGN ITAB-F_OLD(ITAB-OUTLEN) TO <F_OLD>. WRITE: TEXT-023 UNDER 'Changes', <F_OLD>. 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
Related SAP Tutorials & References
- Source Code for create subscreen in your ABAP Program* Source Code for create subscreen in your ABAP Program * * This report will...
- Batch Input with ‘Call Transaction’ – Sample ABAP program CodeRequirement: Choose a transaction and write a Batch Input program with 'Call Transaction'. Do not...
- Useful standard Reports used in SAP Financial AccountingThis documentation covers the details of Useful standard Reports used in SAP Financial AccountingGENERAL LEDGERInformation...
- SAP BDC interview Questions & Answers1. What is full form of BDC Session? Batch Data Communication Session. 2. What are...
- SAP SD Transaction codesList of Important and useful Transaction codes used in SAP sales and distribution module.Customer XD01 ...
- Web Dynpro for ABAP | webdynpro samples and tutorialWebDynpro for ABAP (WD4A, WDA) is the SAP standard UI ( user interface) technology for...
- SAP ABAP dialog program ( Transactions) Interview questions What is a transaction? - A transaction is dialog program that change data objects...
- SAP Early watch service introductionIntroduction and details about SAP early watch service. Purpose This process identifies potential problems early,...
- SAP ABAP Modularization Interview Questions Does every ABAP/4 have a modular structure? Yes. What is Modularization and its benefits?...
- Interview Questions about SAP Logical database Preparation of the data records by the L.D.B and reading of the data records...
Google: Facebook:
