23 Ocak 2012 Pazartesi

Medeni Durum Bilgileri Raporu - Örnek ABAP Uygulaması 1

*&---------------------------------------------------------------------*
*&            Medeni Durum Bilgileri Raporu                      *
*&                                                                  *
*&---------------------------------------------------------------------*

REPORT ZHRRMD02 LINE-SIZE 121 NO STANDARD PAGE HEADING.

TABLES : HRP1000,
     T502T,
     T528T,
     T522T,
     PERNR.

INFOTYPES: 0000,
       0001,
       0002.

DATA: X   LIKE HRP1000-MC_SHORT,
  Y   LIKE HRP1000-MC_SHORT.
DATA: MYTOPLAM(4)    TYPE N,

  MALE-TOPLAM(4) TYPE N,
  FEMALE-TOPLAM(4)  TYPE N,
  ERKEK-TOPLAM(4)   TYPE N,
  KADIN-TOPLAM(4)   TYPE N,

  MARRI-TOPLAM(4)   TYPE N,
  SINGLE-TOPLAM(4)  TYPE N,
  WIDOW-TOPLAM(4)   TYPE N,
  DIVORCE-TOPLAM(4) TYPE N,

  EVLI-TOPLAM(4) TYPE N,
  BEKAR-TOPLAM(4)   TYPE N,
  DUL-TOPLAM(4) TYPE N,
  BOS-TOPLAM(4) TYPE N.

DATA:BEGIN OF INTTAB OCCURS 100,
  PERNR LIKE PERNR-PERNR,
  ENAME LIKE PERNR-ENAME,
  BEGDA LIKE P0000-BEGDA,
  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 T528T-PLSTX,
  PTEXT LIKE T503T-PTEXT,
  ATEXT LIKE T522T-ATEXT,
  FTEXT LIKE T502T-FTEXT,
  ANZKD LIKE P0002-ANZKD.
DATA: END OF INTTAB.

*-- Dep bazinda kontrol
DATA: INDEX LIKE SY-INDEX.

*-- Giris ekranina ilave
SELECTION-SCREEN BEGIN OF BLOCK BLOCK1 WITH FRAME TITLE TEXT-012.
SELECT-OPTIONS: MYDEPT FOR HRP1000-MC_SHORT.
SELECTION-SCREEN END OF BLOCK BLOCK1.

*------- PROGRAM BASLIYOR

START-OF-SELECTION.

*-- Istenilen Departman için
 LOOP AT MYDEPT.
X = MYDEPT-LOW.
MODIFY MYDEPT.
Y = MYDEPT-HIGH.
MODIFY MYDEPT.
 ENDLOOP.

*-- Pernr table' indan bilgilerin alinmasi
GET PERNR.

 PROVIDE PLANS ORGEH ANSVH PERSK  FROM P0001
      STAT2 BEGDA ENDDA     FROM P0000
                        BETWEEN PN/BEGDA AND PN/ENDDA.
IF P0000_VALID EQ 'X'.
  MOVE PERNR-PERNR TO INTTAB-PERNR.
  MOVE PERNR-ENAME TO INTTAB-ENAME.
  MOVE P0000-BEGDA TO INTTAB-BEGDA.
  IF P0001-PLANS NE SPACE AND
     P0000-STAT2 EQ '3'.
    PERFORM RE528.
  ENDIF.
ENDIF.
 ENDPROVIDE.
*---------------------------------------------------------------------*
*    FORM RE528                                                 *
*---------------------------------------------------------------------*
*    ........                                                   *
*---------------------------------------------------------------------*
FORM RE528.


*-- Pozisyon Text Bilgileri
 SELECT * FROM T528T
   WHERE
               SPRSL   EQ  SY-LANGU
         AND   PLANS   EQ  P0001-PLANS
         AND   ENDDA   EQ  P0000-ENDDA.

IF SY-SUBRC EQ 0.

*-- Organizasyon Text Bilgileri
  DESCRIBE TABLE MYDEPT LINES INDEX. "Dep Kontrolü için yapildi.
  IF NOT INDEX IS INITIAL .
    SELECT  SINGLE  * FROM HRP1000
             WHERE
                  OTYPE EQ  'O'        AND
                  OBJID EQ  P0001-ORGEH   AND
                  MC_SHORT  IN  MYDEPT     AND
                  LANGU EQ  SY-LANGU.
    CHECK SY-SUBRC EQ 0 .
  ELSE.
    CLEAR HRP1000 .
    SELECT  SINGLE  * FROM HRP1000
             WHERE
                  OTYPE EQ  'O'        AND
                  OBJID EQ  P0001-ORGEH   AND
                  MC_SHORT  IN  MYDEPT     AND
                  LANGU EQ  SY-LANGU.
  ENDIF .


*- Cinsiyet text Bilgileri
  SELECT SINGLE * FROM T522T
        WHERE
             ANRED  EQ P0002-GESCH  AND
             SPRSL  EQ SY-LANGU.

*-- Medeni Durum Text Bilgileri
  SELECT SINGLE * FROM T502T
        WHERE
            FAMST  EQ P0002-FAMST AND
            SPRSL  EQ SY-LANGU.

*-- Erkek Kadin sayisinin bulunmasi
  IF SY-LANGU = 'E'.            "Dil   = E
    IF P0002-GESCH = '1'.       "Cinsiyet = E
      ADD 1 TO   MALE-TOPLAM.
    ELSE.
      ADD 1 TO   FEMALE-TOPLAM.
    ENDIF.
  ELSEIF P0002-GESCH = '1'.
    ADD 1 TO   ERKEK-TOPLAM.
  ELSE.
    ADD 1 TO   KADIN-TOPLAM.
  ENDIF.

*-- Evli, Bekar, Dul ve Bosanmis Eleman Sayisinin Bulunmasi
  IF SY-LANGU = 'E'.
    if t502t-ftext = 'Marri.'.
      ADD 1 TO MARRI-TOPLAM.
    elseif t502t-ftext = 'Single'.
      ADD 1 TO SINGLE-TOPLAM.
    elseif t502t-ftext = 'Widow'.
      ADD 1 TO WIDOW-TOPLAM.
    ELSE.
      ADD 1 TO DIVORCE-TOPLAM.
    ENDIF.
  ENDIF.
  IF SY-LANGU = 'T'.
    if t502t-ftext = 'Evli'.
      ADD 1 TO EVLI-TOPLAM.
    elseif t502t-ftext = 'Bekar'.
      ADD 1 TO BEKAR-TOPLAM.
    elseif t502t-ftext = 'Dul'.
      ADD 1 TO DUL-TOPLAM.
    ELSE.
      ADD 1 TO BOS-TOPLAM.
    ENDIF.
  ENDIF.



*-- Clear Islemleri
* if sy-subrc ne 0.
*    clear t503t-ptext.
* endif.

* if p0032-pernr ne pernr-pernr.
*    clear p0032.
* endif.

* if p9004-pernr ne pernr-pernr.
*    clear p9004.
* endif.

*-- Internal Table Atama Islemleri
  MOVE P0001-PLANS   TO INTTAB-PLANS.
  MOVE T528T-PLSTX   TO INTTAB-PLSTX.
  MOVE P0001-ANSVH   TO INTTAB-ANSVH.
* move t503t-ptext   to inttab-ptext.
  MOVE P0001-PERSK   TO INTTAB-PERSK.
  MOVE HRP1000-MC_SHORT TO INTTAB-MC_SHORT.
  MOVE HRP1000-MC_STEXT TO INTTAB-MC_STEXT.
  MOVE T522T-ATEXT   TO INTTAB-ATEXT.
  MOVE T502T-FTEXT   TO INTTAB-FTEXT.
  MOVE P0002-ANZKD   TO INTTAB-ANZKD.

  APPEND INTTAB.
ENDIF.
EXIT.
 ENDSELECT.
ENDFORM.

*-------------  PROGRAM SONU
END-OF-SELECTION.

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

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

AT USER-COMMAND.
 CASE SY-UCOMM.
WHEN 'P000'.
  SCROLL LIST RIGHT BY 22 PLACES.
WHEN 'P001'.
  SCROLL LIST LEFT  BY 22 PLACES.
WHEN 'P002'.
  SCROLL LIST RIGHT BY 100 PLACES.
WHEN 'P003'.
  SCROLL LIST LEFT  BY 100 PLACES.

WHEN 'S000'.
  PERFORM BODY.
  PERFORM TOTAL.
WHEN 'S001'.
  PERFORM NAME.
  PERFORM TOTAL.
 ENDCASE.

TOP-OF-PAGE DURING LINE-SELECTION.
 PERFORM FORMAT.

*&---------------------------------------------------------------------*
*&   Form  FORMAT
*&---------------------------------------------------------------------*
*    text                                                        *
*----------------------------------------------------------------------*
*  -->  p1     text
*  <--  p2     text
*----------------------------------------------------------------------*
FORM FORMAT.
 WRITE : /55 TEXT-020 COLOR COL_BACKGROUND INVERSE.
 SKIP.
 ULINE (121).
 FORMAT   INTENSIFIED OFF COLOR 6.
 WRITE : /1 '|' NO-GAP, (9)TEXT-001 NO-GAP, "pers.no.
      '|' NO-GAP,(26)TEXT-002 NO-GAP.   "Name and Surname
 SET LEFT SCROLL-BOUNDARY.
* write:  '|' no-gap,(11)text-003 no-gap,   "Entry Date
 WRITE:  '|' NO-GAP,(09)TEXT-004 NO-GAP,   "Dep.Code
      '|' NO-GAP,(41)TEXT-005 NO-GAP,   "Dept Name
      '|' NO-GAP,(08)TEXT-006 NO-GAP,   "Marital Status
      '|' NO-GAP,(08)TEXT-007 NO-GAP,   "Sex
      '|' NO-GAP,(12)TEXT-008 NO-GAP,   "Child No
      '|'.
 ULINE (121).

ENDFORM.                            " FORMAT
*&---------------------------------------------------------------------*
*&   Form  BODY
*&---------------------------------------------------------------------*
*    text                                                        *
*----------------------------------------------------------------------*
FORM BODY.
 SORT INTTAB BY PERNR.
 FORMAT  INTENSIFIED OFF COLOR 3.
 CLEAR MYTOPLAM.
 LOOP AT INTTAB.
WRITE: / '|' NO-GAP,(08)INTTAB-PERNR NO-ZERO UNDER TEXT-001,
                                   "pers.no.
         '|' NO-GAP,(25)INTTAB-ENAME UNDER TEXT-002,
             SY-VLINE NO-GAP.   " Name and Surname

SET LEFT SCROLL-BOUNDARY.

*   write: sy-vline no-gap, (10)inttab-begda under text-003,
*                                    "Entry Date
WRITE: SY-VLINE NO-GAP, (08)INTTAB-MC_SHORT UNDER TEXT-004,
                                   "Dep.Code
          '|' NO-GAP,(40)INTTAB-MC_STEXT UNDER TEXT-005, "Dept Name
          '|' NO-GAP,(07)INTTAB-FTEXT UNDER TEXT-006, "Mar. Sta
          '|' NO-GAP,(07)INTTAB-ATEXT UNDER TEXT-007,   "Sex
          '|' NO-GAP,(11)INTTAB-ANZKD UNDER TEXT-008, "Child no
          '|'.
ADD 1 TO MYTOPLAM.
 ENDLOOP.
 ULINE (121).

ENDFORM.                            " BODY
*&--------------------------------------------------------------------*
*&       Isme gore sirali                                       *
*&--------------------------------------------------------------------*
FORM NAME.
 SORT INTTAB BY ENAME.
 FORMAT  INTENSIFIED OFF COLOR 3.
 CLEAR MYTOPLAM.
 LOOP AT INTTAB.
WRITE: / '|' NO-GAP,(08)INTTAB-PERNR NO-ZERO UNDER TEXT-001,
                                   "pers.no.
         '|' NO-GAP,(25)INTTAB-ENAME UNDER TEXT-002,
             SY-VLINE NO-GAP.   " Name and Surname

SET LEFT SCROLL-BOUNDARY.

WRITE: SY-VLINE NO-GAP, (08)INTTAB-MC_SHORT UNDER TEXT-004,
                                   "Dep.Code
          '|' NO-GAP,(40)INTTAB-MC_STEXT UNDER TEXT-005, "Dept Name
          '|' NO-GAP,(07)INTTAB-FTEXT UNDER TEXT-006, "Mar. Sta
          '|' NO-GAP,(07)INTTAB-ATEXT UNDER TEXT-007,   "Sex
          '|' NO-GAP,(11)INTTAB-ANZKD UNDER TEXT-008, "Child no
          '|'.
ADD 1 TO MYTOPLAM.
 ENDLOOP.
 ULINE (182).

ENDFORM.                            "BODY

*---------------------------------------------------------------------*
*    FORM TOTAL                                                 *
*---------------------------------------------------------------------*
*    ........                                                   *
*---------------------------------------------------------------------*
FORM TOTAL.
 IF SY-LANGU = 'E'.
WRITE :/ TEXT-013, FEMALE-TOPLAM NO-ZERO  COLOR COL_NEGATIVE,
       / TEXT-014, MALE-TOPLAM NO-ZERO COLOR COL_NEGATIVE,
       / TEXT-015, MARRI-TOPLAM NO-ZERO  COLOR COL_NEGATIVE,
       / TEXT-016, SINGLE-TOPLAM NO-ZERO COLOR COL_NEGATIVE,
       / TEXT-017, WIDOW-TOPLAM NO-ZERO COLOR COL_NEGATIVE,
       / TEXT-018, DIVORCE-TOPLAM NO-ZERO  COLOR COL_NEGATIVE,
       / TEXT-019, MYTOPLAM NO-ZERO COLOR COL_POSITIVE INTENSIFIED.

 ELSE.
WRITE :/ 'Toplam Kadin Sayisi = ',KADIN-TOPLAM NO-ZERO
                                      COLOR COL_NEGATIVE.
WRITE :/ 'Toplam Erkek Sayisi = ',ERKEK-TOPLAM NO-ZERO
                                     COLOR COL_NEGATIVE.
WRITE :/ 'Toplam Evli Sayisi  = ',EVLI-TOPLAM NO-ZERO
                                      COLOR COL_NEGATIVE.
WRITE :/ 'Toplam Bekar Sayisi = ',BEKAR-TOPLAM NO-ZERO
                                       COLOR COL_NEGATIVE.
WRITE :/ 'Toplam Dul Sayisi   = ',DUL-TOPLAM NO-ZERO
                                     COLOR COL_NEGATIVE.
WRITE :/ 'Toplam Bosanmis Sayisi = ',BOS-TOPLAM NO-ZERO
                                     COLOR COL_NEGATIVE.
WRITE :/ 'Toplam Personel Sayisi = ',MYTOPLAM NO-ZERO
                                    COLOR COL_POSITIVE INTENSIFIED.
 ENDIF.

ENDFORM.                            " TOTAL

Hiç yorum yok:

Yorum Gönder