23 Ocak 2012 Pazartesi

Devamsızlık Bilgileri Listesi - Örnek ABAP Uygulaması 2

*&---------------------------------------------------------------------*
*&             Devamsizlik Bilgileri Listesi                   *
*&                                                                                  *
*&     *
*&                                                                      *
*&---------------------------------------------------------------------*

REPORT ZHRY2001 LINE-SIZE 116 NO STANDARD PAGE HEADING.

*-- Table(s)
TABLES : PERNR,
     HRP1000,
     PA0005,
     PA2001.

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

*--- Internal Table(s)
DATA:BEGIN OF INTTAB OCCURS 10,
  PERNR LIKE PERNR-PERNR,
  ENAME LIKE PERNR-ENAME,
  HIRE LIKE P0000-BEGDA,
  FIRE LIKE P0000-ENDDA,
  ANSVH LIKE P0001-ANSVH,
  PERSK LIKE P0001-PERSK,
  MC_SHORT LIKE HRP1000-MC_SHORT,
  MC_STEXT LIKE HRP1000-MC_STEXT,
  PLANS LIKE P0001-PLANS,
  PLSTX LIKE HRP1000-STEXT.
DATA: END OF INTTAB.


DATA: XPA2001 LIKE PA2001  OCCURS 0 WITH HEADER LINE ,
  XPA0005 LIKE PA0005  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.

*-- Variables
DATA: MYTOPLAM(4)    TYPE N,
  TOP-UAN01      LIKE P0005-UAN01,
  TOP-ABRTG      LIKE P2001-ABRTG,
  TOP-KALAN      LIKE P2001-ABRTG,
  MYMAAS(15)     TYPE P.

*-- 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.

*-- 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.
SELECTION-SCREEN END OF BLOCK BLOCK1.

*------- PROGRAM BASLIYOR

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
*--
 PERFORM CALC_HIRE.
*--

*-- end-of-selection
END-OF-SELECTION.

*--  GUI Status Bilgisi
 SET PF-STATUS 'LIST'.
 PERFORM BODY.
 PERFORM TOTAL.

TOP-OF-PAGE.
 PERFORM WRITE_TOP_OF_HADER .      "Baslik Bilgisi

*&---------------------------------------------------------------------*
*&   Form  FORMAT
*&---------------------------------------------------------------------*
FORM FORMAT.
 ULINE (81).
 FORMAT   INTENSIFIED OFF COLOR 6.
 WRITE : /1 '|' NO-GAP,(09)TEXT-001 NO-GAP, "pers.no.
         '|' NO-GAP,(09)TEXT-004 NO-GAP, "Dep.Code
         '|' NO-GAP,(26)TEXT-002 NO-GAP. "Name and Surname

 SET LEFT SCROLL-BOUNDARY.

 WRITE:  '|' NO-GAP,(11)TEXT-003 NO-GAP,   "Giris Tarihi
      '|' NO-GAP,(11)TEXT-014 NO-GAP,   "Çikis Tarihi
      '|' NO-GAP,(08)TEXT-009 NO-GAP,   "Istihdam Kosullari
      '|'.
 ULINE (81).
 FORMAT  INTENSIFIED OFF COLOR 2.

ENDFORM.                            " FORMAT
*&---------------------------------------------------------------------*
*&   Form  BODY
*&---------------------------------------------------------------------*
FORM BODY.
 SORT INTTAB BY PERNR.
 CLEAR : MYTOPLAM.

 LOOP AT INTTAB.

CHECK INTTAB-MC_SHORT IN SHORT.
CHECK INTTAB-ANSVH IN ANSVH.

PERFORM FORMAT .

WRITE: / '|' NO-GAP,(08)INTTAB-PERNR NO-ZERO UNDER TEXT-001,
                                   "pers.no.
         '|' NO-GAP,(08)INTTAB-MC_SHORT UNDER TEXT-004,
                                   "Dep.Code
         '|' NO-GAP,(25)INTTAB-ENAME UNDER TEXT-002,
             SY-VLINE NO-GAP.   " Name and Surname

SET LEFT SCROLL-BOUNDARY.

WRITE:  '|' NO-GAP, (10)INTTAB-HIRE  UNDER TEXT-003, "begda
        '|' NO-GAP, (10)INTTAB-FIRE  UNDER TEXT-014, "endda
        '|' NO-GAP, (07)INTTAB-ANSVH UNDER TEXT-009, "istihdam ks
        '|'.
ULINE (81).
SKIP .
ADD 1 TO MYTOPLAM.

PERFORM  WRITE_HEADER_GENEL_BAKIS.

PERFORM WRITE_LIST_GENEL_BAKIS .

 ENDLOOP.
ENDFORM.                            " BODY
*---------------------------------------------------------------------*
*    FORM TOTAL                                                 *
*---------------------------------------------------------------------*
FORM TOTAL.
 SKIP.
 WRITE :/ TEXT-017,MYTOPLAM NO-ZERO COLOR COL_NEGATIVE.

ENDFORM.                            " TOTAL
*&---------------------------------------------------------------------*
*&   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
             MC_SHORT  IN  SHORT      AND
             LANGU EQ  SY-LANGU
             ORDER BY OBJID.

*-- Devamsizlik Bilgileri
 SELECT *   FROM  PA2001 INTO TABLE XPA2001 .
*-- Izine Hak kazanma
 SELECT *   FROM  PA0005 INTO TABLE XPA0005 .

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

 WRITE : /1 'GENEL BAKIS' COLOR 1 INTENSIFIED  .
 ULINE .
 FORMAT INTENSIFIED OFF COLOR 1.
 WRITE :/1  '|' NO-GAP, (11)TEXT-G01 NO-GAP,  "Ba.Tarih
         '|' NO-GAP, (11)TEXT-G02 NO-GAP,  "Bi.Tarihi
         '|' NO-GAP, (06)TEXT-G03 NO-GAP,  "Dv.Türü
         '|' NO-GAP, (09)TEXT-G04 NO-GAP,  "Ba.Saati
         '|' NO-GAP, (09)TEXT-G05 NO-GAP,  "Bi.Saati
*         '|' no-gap, (11)text-g06 no-gap,  "Dvms.Saatleri
         '|' NO-GAP, (11)TEXT-G07 NO-GAP,  "Dv.Günü
         '|' NO-GAP, (11)TEXT-G08 NO-GAP,  "Talep Edilen
         '|' NO-GAP, (11)TEXT-G09 NO-GAP,  "Toplam Izin
         '|' NO-GAP, (15)TEXT-G10 NO-GAP,  "T.Talep Edilen
         '|' NO-GAP, (11)TEXT-G11 NO-GAP,  "Kalan Izin
         '|'.
 ULINE .

ENDFORM.                            " WRITE_HEADER_GENEL_BAKIS
*&---------------------------------------------------------------------*
*&   Form  WRITE_LIST_GENEL_BAKIS
*&---------------------------------------------------------------------*
FORM WRITE_LIST_GENEL_BAKIS.

 CLEAR : TOP-ABRTG.
*--
 SORT XPA2001 BY BEGDA.
*--
 FORMAT COLOR COL_NORMAL INTENSIFIED OFF.
 LOOP AT XPA2001 WHERE AWART EQ '0280'.

IF XPA2001-PERNR EQ INTTAB-PERNR.

LOOP AT XPA0005 WHERE PERNR EQ XPA2001-PERNR.
  TOP-UAN01 = TOP-UAN01 + XPA0005-UAN01.
ENDLOOP.

TOP-ABRTG = TOP-ABRTG + XPA2001-ABRTG.
TOP-KALAN = TOP-UAN01 - TOP-ABRTG.

WRITE:/1 '|', (10)XPA2001-BEGDA UNDER TEXT-G01 ,  "Ba.Tarih
         '|', (10)XPA2001-ENDDA UNDER TEXT-G02 ,  "Bi.Tarih
         '|', (05)XPA2001-AWART UNDER TEXT-G03 ,  "Devamsz.Türü
         '|', (08)XPA2001-BEGUZ UNDER TEXT-G04 ,  "Ba.Saati
         '|', (08)XPA2001-ENDUZ UNDER TEXT-G05 ,  "Bi.Saati
*         '|', (10)xpa2001-stdaz under text-g06 ,  "Dv.Saatleri
         '|', (10)XPA2001-ABWTG UNDER TEXT-G07 ,  "Dv.Günü
         '|', (10)XPA2001-ABRTG UNDER TEXT-G08 ,  "Talep Edilen
         '|', (10)TOP-UAN01      UNDER TEXT-G09 ,  "Toplam Izin
         '|', (14)TOP-ABRTG      UNDER TEXT-G10 ,  "T.Talep edile
         '|', (10)TOP-KALAN      UNDER TEXT-G11 ,  "Kalan Izin
         '|'.

ENDIF.

 CLEAR : TOP-UAN01, XPA0005.

 ENDLOOP.
 ULINE .
 SKIP.
ENDFORM.                            " WRITE_LIST_GENEL_BAKIS
*&---------------------------------------------------------------------*
*&   Form  WRITE_TOP_OF_HADER
*&---------------------------------------------------------------------*
FORM WRITE_TOP_OF_HADER.
 WRITE : /35 TEXT-013 COLOR COL_BACKGROUND INVERSE.
 SKIP.

ENDFORM.                            " WRITE_TOP_OF_HADER
*&---------------------------------------------------------------------*
*&   Form  CALC_HIRE
*&---------------------------------------------------------------------*
FORM CALC_HIRE.
 CHECK HIREDATE BETWEEN HI_FI-LOW AND HI_FI-HIGH.
 RP-PROVIDE-FROM-LAST P0001 SPACE HI_FI-HIGH HI_FI-HIGH.

*-- Istenilen Departman
 READ TABLE DEP WITH KEY P0001-ORGEH.
 CHECK SY-SUBRC EQ 0.
* write :/1 p0001-pernr,dep-short.
 PERFORM FILL_INTTAB.

ENDFORM.                            " CALC_HIRE
*&---------------------------------------------------------------------*
*&   Form  FILL_INTTAB
*&---------------------------------------------------------------------*
FORM FILL_INTTAB.

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

*-- Internal Table Atama Islemleri
 MOVE : PERNR-PERNR   TO INTTAB-PERNR,
     PERNR-ENAME   TO INTTAB-ENAME,
     HIREDATE      TO INTTAB-HIRE,
     FIREDATE      TO INTTAB-FIRE,
     P0001-PLANS   TO INTTAB-PLANS,
     PERNR-ANSVH   TO INTTAB-ANSVH,
     P0001-PERSK   TO INTTAB-PERSK,
     DEP-SHORT     TO INTTAB-MC_SHORT,
     DEP-STEXT     TO INTTAB-MC_STEXT.
 APPEND INTTAB.

*-- Clear
 CLEAR : INTTAB, XPA2001, DEP .
ENDFORM.                            " FILL_INTTAB

Hiç yorum yok:

Yorum Gönder