L'ABAP pour les francophones

TYALGR
12 rue des tamaris 27240 Buis sur Damville
Tel : 09 52 06 57 30 Fax : 01 34 29 60 47 Email : contact [at] tyalgr.com
Connexion
 

Zephyr

ABAP

Aller à   
Rechercher
Auteur
Message Vue en arbre
ECIR ECIR
Posté le: 19 Février 2007 23:07:45
Sujet de la contribution: Obtention de l'historique des commandes d'achat

*
* 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
*
* Written by : SAP Basis, ABAP Programming and Other IMG Stuff
* http://www.sap-img.com
* 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



Haut 
Aller à   
Rechercher
© 2007 Ecir Consulting. Tous droits réservés.