23 Ocak 2012 Pazartesi

Geçici Personel Izleme Listesi - Örnek ABAP Uygulaması 9

REPORT ZHRRGPI1 LINE-SIZE 185 NO STANDARD PAGE HEADING.
*-- Table(s)
TABLES : PERNR,
         HRP1000,
         T528T,
         T531S,
         T503T.

*-- Infotype(s)
INFOTYPES: 0000, 0001, 0002, 0019 .

*--- Internal Table(s)
DATA:BEGIN OF P OCCURS 10,
      PERNR    LIKE PERNR-PERNR,
      ENAME    LIKE PERNR-ENAME,
      HIRE     LIKE P0000-BEGDA,       "ISE GIRIS TARIHI
      FIRE     LIKE P0000-ENDDA,       "ISten çikis TARIHI
      MC_SHORT LIKE HRP1000-MC_SHORT,  "Departman kodu
      MC_STEXT LIKE HRP1000-MC_STEXT,  "Departman text
*     plstx    like t528t-plstx,       "Pozisyon text
*     persk    like p0001-persk,       "Çalisan Altgrup
*     ptext    like t503t-ptext,       "Çalisan Altgrup Text
      ANSVH    LIKE P0001-ANSVH,       "Istihdam Kosullari
      TMART    LIKE P0019-TMART,       "Tarih türü
      TMTXT    LIKE T531S-TMTXT,       "Tarih türü izleme metni
      TERMN    LIKE P0019-TERMN,       "Sözlesme Sonu
      MNDAT    LIKE P0019-MNDAT.       "Ihbar Tarihi
DATA: END OF P.

DATA: XT528T LIKE T528T OCCURS 0 WITH HEADER LINE,
      XT531S LIKE T531S OCCURS 0 WITH HEADER LINE,
      XT503T LIKE T503T OCCURS 0 WITH HEADER LINE.

*-- Departman Listesi
DATA: BEGIN OF DEP OCCURS 0,
     OBJID  LIKE HRP1000-OBJID,
     SHORT  LIKE HRP1000-MC_SHORT,
     STEXT  LIKE HRP1000-MC_STEXT,
     BEGDA  LIKE HRP1000-BEGDA   ,
     ENDDA  LIKE HRP1000-ENDDA   ,
    END OF DEP .

*-- RP_HIRE_FIRE
DATA: HIREDATE LIKE P0000-BEGDA,
      FIREDATE LIKE P0000-ENDDA.
DATA: BEGIN OF PHIFI OCCURS 5.
        INCLUDE STRUCTURE PHIFI.
DATA: END OF PHIFI.

*-- Variables
DATA: MYTOPLAM(4)       TYPE N,
      BEGDA             LIKE P0000-BEGDA,
      ENDDA             LIKE P0000-ENDDA,
      C01               LIKE SY-COLNO VALUE 180.

*-- Giris ekranina ilave
SELECTION-SCREEN BEGIN OF BLOCK BLOCK1 WITH FRAME TITLE TEXT-012.
SELECT-OPTIONS: HI_FI    FOR P0001-BEGDA
                DEFAULT '19800101'
                TO      SY-DATUM .
SELECT-OPTIONS: SHORT    FOR HRP1000-MC_SHORT,
                ANSVH    FOR P0001-ANSVH DEFAULT 'TE'.
*               persk    for p0001-persk.
SELECTION-SCREEN END OF BLOCK BLOCK1.

*-------     PROGRAM BASLIYOR
*initialization.
*  rp-sel-ein-aus-init.    "Istihdam Durumu <> 0 islemi

START-OF-SELECTION.

  PERFORM SET_INITIAL_VALUES .

GET PERNR.
*--
  CALL FUNCTION 'RP_HIRE_FIRE'
       EXPORTING
            BEG       = PN-BEGDA
            END       = PN-ENDDA
       IMPORTING
            HIRE_DATE = HIREDATE
            FIRE_DATE = FIREDATE
       TABLES
            PP0000    = P0000          "input
            PP0001    = P0001          "input
            PPHIFI    = PHIFI.         "output
*----
* write :/1 hiredate,' ',firedate.
*---

  PERFORM CALC_HIRE.

*-- end-of-selection
END-OF-SELECTION.
*--  GUI Status Bilgisi
  SET PF-STATUS 'LIST'.
  PERFORM BODY.
  PERFORM TOTAL.

TOP-OF-PAGE.
  PERFORM FORMAT .

*&---------------------------------------------------------------------*
*&      Form  FORMAT
*&---------------------------------------------------------------------*
FORM FORMAT.
  WRITE : /60 TEXT-013 COLOR COL_BACKGROUND INVERSE.
  SKIP.
  ULINE AT (C01).
  FORMAT   INTENSIFIED OFF COLOR 6.
  WRITE : /1 '|' NO-GAP,(09)TEXT-001 NO-GAP,    "Pers.no.
             '|' NO-GAP,(26)TEXT-002 NO-GAP,    "Name and Surname
             '|' NO-GAP,(11)TEXT-003 NO-GAP,    "Giris Tarihi
             '|' NO-GAP,(11)TEXT-026 NO-GAP,    "Çikis Tarihi
             '|' NO-GAP,(10)TEXT-004 NO-GAP,    "Bölüm Kodu
             '|' NO-GAP,(41)TEXT-005 NO-GAP,    "Bölüm Adi
*            '|' no-gap,(26)text-006 no-gap,    "Pozisyon
*            '|' no-gap,(07)text-007 no-gap,    "Çalisan Altgrup
*            '|' no-gap,(21)text-008 no-gap,    "Çalisan Altgrup Text
             '|' NO-GAP,(08)TEXT-009 NO-GAP,    "Istihdam Kosullari
             '|' NO-GAP,(07)TEXT-020 NO-GAP,    "Tarih Türü
             '|' NO-GAP,(20)TEXT-021 NO-GAP,    "Tarih Türü Izleme Metni
             '|' NO-GAP,(13)TEXT-022 NO-GAP,    "Sözlesme Sonu
             '|' NO-GAP,(12)TEXT-023 NO-GAP,    "Ihbar Tarihi
             '|' .
  ULINE AT (C01).
ENDFORM.                               " FORMAT
*&---------------------------------------------------------------------*
*&      Form  BODY
*&---------------------------------------------------------------------*
FORM BODY.
  FORMAT COLOR COL_NORMAL INTENSIFIED OFF.
  SORT P BY PERNR HIRE.
  CLEAR : MYTOPLAM .
  LOOP AT P.

    CHECK P-MC_SHORT  IN SHORT.
    CHECK P-ANSVH  IN ANSVH.
*   check p-persk  in persk.

    WRITE: /01 SY-VLINE NO-GAP,
          (08) P-PERNR NO-ZERO UNDER TEXT-001, " pers.no
               SY-VLINE NO-GAP,
          (25) P-ENAME    UNDER TEXT-002,      " Name and Surname
               SY-VLINE NO-GAP,
          (10) P-HIRE    UNDER TEXT-003,       " Giris tarihi
               SY-VLINE NO-GAP,
          (10) P-FIRE    UNDER TEXT-026,       " Çikis Tarihi
               SY-VLINE NO-GAP ,
          (09) P-MC_SHORT UNDER TEXT-004,      " Bölüm kodu
               SY-VLINE NO-GAP ,
          (40) P-MC_STEXT UNDER TEXT-005,      " Bölüm adi
               SY-VLINE NO-GAP ,
*         (25) p-plstx    under text-006,      " Pozisyon
*              sy-vline no-gap ,
*         (06) p-persk    under text-007,      " Çalisan Altgrup
*              sy-vline no-gap ,
*         (20) p-ptext    under text-008,      " Çalisan Altgrup Text
*              sy-vline no-gap ,
          (07) P-ANSVH    UNDER TEXT-009,      " Istihdam Kosullari
               SY-VLINE NO-GAP ,
          (06) P-TMART    UNDER TEXT-020,      " Tarih Türü
               SY-VLINE NO-GAP ,
          (19) P-TMTXT    UNDER TEXT-021,      " Tarih Türü Izleme Metni
               SY-VLINE NO-GAP ,
          (12) P-TERMN    UNDER TEXT-022,      " Sözlesme Sonu
               SY-VLINE NO-GAP ,
          (11) P-MNDAT    UNDER TEXT-023,      " Ihbar Tarihi
               SY-VLINE NO-GAP .
    ADD: 1     TO MYTOPLAM .
  ENDLOOP.
  ULINE AT (C01).
ENDFORM.                               " BODY
*---------------------------------------------------------------------*
*       FORM TOTAL                                                    *
*---------------------------------------------------------------------*
FORM TOTAL.
  SKIP.
  WRITE :/ TEXT-017,
           MYTOPLAM NO-ZERO COLOR COL_NEGATIVE .
ENDFORM.                               " TOTAL
*&---------------------------------------------------------------------*
*&      Form  WRITE_TOP_OF_HEADER
*&---------------------------------------------------------------------*
FORM WRITE_TOP_OF_HEADER.

  WRITE : /35 TEXT-013 COLOR COL_BACKGROUND INVERSE.
  SKIP.

ENDFORM.                               " WRITE_TOP_OF_HEADER
*&---------------------------------------------------------------------*
*&      Form  CALC_HIRE
*&---------------------------------------------------------------------*
FORM CALC_HIRE.
* check h_hire between hi_fi-low and hi_fi-high.
  CHECK HIREDATE BETWEEN HI_FI-LOW AND HI_FI-HIGH.
  RP-PROVIDE-FROM-LAST P0001 SPACE HI_FI-HIGH HI_FI-HIGH.
  PROVIDE * FROM P0019 BETWEEN PN-BEGDA AND PN-ENDDA.
*  write:/1 pn/begda,' ',pn/endda.
*-- Çalisan Altgroup
  READ TABLE XT503T WITH KEY PERSK = P0001-PERSK .
* check sy-subrc eq 0 .

*-- Istenilen Departman
* read table dep with key p0001-orgeh .            " TL. 25.10.2000
* check sy-subrc eq 0 .                            " TL. 25.10.2000
  LOOP AT DEP WHERE OBJID = P0001-ORGEH   AND      " TL. 25.10.2000
                    ENDDA = '99991231' .           " TL. 25.10.2000
  ENDLOOP.                                         " TL. 25.10.2000
  CHECK SY-SUBRC EQ 0 .                            " TL. 25.10.2000

*-- Istenilen Pozisyon
  READ TABLE XT528T WITH KEY PLANS = P0001-PLANS .
* check sy-subrc eq 0 .

*-- Tarih izleme metni texti bulunuyor
  READ TABLE XT531S WITH KEY TMART = P0019-TMART .

  PERFORM FILL_P.

  ENDPROVIDE.
ENDFORM.                               " CALC_HIRE
*&---------------------------------------------------------------------*
*&      Form  FILL_P
*&---------------------------------------------------------------------*
FORM FILL_P.

*-- Istenilen tarih araliginda bilginin bulunmasi
  CHECK FIREDATE GE HI_FI-HIGH .

  MOVE: PERNR-PERNR   TO P-PERNR,
        P0001-ENAME   TO P-ENAME,
        HIREDATE      TO P-HIRE,
        FIREDATE      TO P-FIRE,
        DEP-SHORT     TO P-MC_SHORT,
        DEP-STEXT     TO P-MC_STEXT,
*       xt528t-plstx  to p-plstx,
*       p0001-persk   to p-persk,
*       xt503t-ptext  to p-ptext,
        P0001-ANSVH   TO P-ANSVH,
        P0019-TMART   TO P-TMART,
        XT531S-TMTXT  TO P-TMTXT,
        P0019-TERMN   TO P-TERMN,
        P0019-MNDAT   TO P-MNDAT.
  APPEND P.

*-- Clear
  CLEAR : P0002, P0019, XT528T, XT503T, XT531S, DEP.

ENDFORM.                               " FILL_P
*&---------------------------------------------------------------------*
*&      Form  SET_INITIAL_VALUES
*&---------------------------------------------------------------------*
FORM SET_INITIAL_VALUES.

*-- Departman Listesi
  SELECT OBJID MC_SHORT MC_STEXT BEGDA ENDDA FROM HRP1000 INTO TABLE DEP
       WHERE OTYPE   EQ 'O'      AND
             PLVAR   EQ '01'     AND
             LANGU   EQ SY-LANGU
        ORDER  BY OBJID .

*-- Pozisyon Text Listesi
  SELECT * FROM T528T INTO TABLE XT528T WHERE SPRSL  EQ SY-LANGU
                                        AND   OTYPE  EQ 'S'.
*-- Çalisan AltGroup Listesi
  SELECT * FROM T503T INTO TABLE XT503T WHERE SPRSL  EQ SY-LANGU .

*-- Tarih Izleme Textleri (P0019 için)
  SELECT * FROM T531S INTO TABLE XT531S WHERE SPRSL  EQ SY-LANGU .

ENDFORM.                               " SET_INITIAL_VALUES

Hiç yorum yok:

Yorum Gönder