23 Ocak 2012 Pazartesi

BAŞVURU DURUMU İZLEME - Örnek ABAP Uygulaması 4

REPORT ZHRREQ01 NO STANDARD PAGE HEADING MESSAGE-ID PN.
*-- Tables
TABLES: PB4000 ,
        T751B  .

*-- Internal Tables
DATA:BEGIN OF INTTAB OCCURS 10 ,
     PERNR    LIKE PB4000-PERNR,
     BEGDA    LIKE PB4000-BEGDA,
     ENDDA    LIKE PB4000-ENDDA,
     APSTA    LIKE PB4000-APSTA,
     STATX    LIKE T751B-STATX ,
     ERTXT(20)                 .
DATA: END OF INTTAB.

DATA:BEGIN OF P      OCCURS 10 ,
     PERNR    LIKE PB4000-PERNR,
     BEGDA    LIKE PB4000-BEGDA,
     ENDDA    LIKE PB4000-ENDDA,
     APSTA    LIKE PB4000-APSTA,
     STATX    LIKE T751B-STATX ,
     ERTXT(20)                 .
DATA: END OF P     .

DATA: BDCDATA LIKE BDCDATA OCCURS 0 WITH HEADER LINE,
      XT751B  LIKE T751B   OCCURS 0 WITH HEADER LINE.

*-- Macros
DEFINE P+.
CLEAR BDCDATA.
MOVE : &1   TO BDCDATA-PROGRAM   ,
       &2   TO BDCDATA-DYNPRO    ,
       'X'  TO BDCDATA-DYNBEGIN  .
APPEND BDCDATA.
END-OF-DEFINITION.

DEFINE F+.
CLEAR BDCDATA.
WRITE: &1   TO BDCDATA-FNAM      ,
       &2   TO BDCDATA-FVAL      .
APPEND BDCDATA.
END-OF-DEFINITION.

*-- Data
DATA :  FLAG ,
        FTAB ,
        CHANGES.
*---
SELECT-OPTIONS : PERNR FOR PB4000-PERNR,
                 APSTA FOR PB4000-APSTA.

*-- TOP_OF_PAGE
TOP-OF-PAGE.
  PERFORM TOP-OF-PAGE.

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


*----Start-of-selection.
START-OF-SELECTION.

  PERFORM SET_INITIAL_VALUES.
  PERFORM FILL_INTTAB.

END-OF-SELECTION.

*-- Ekrana Yazdirma
  PERFORM WRITE_LIST_TO_SCREEN.

*-- At user_command
AT USER-COMMAND.
  PERFORM AT_USER_COMMAND.

*&---------------------------------------------------------------------*
*&      Form  TOP-OF-PAGE
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM TOP-OF-PAGE.

  WRITE : /30 'BASVURU DURUM LISTESI' COLOR COL_BACKGROUND INVERSE.
  PERFORM TOP_OF_REQ.

ENDFORM.                               " TOP-OF-PAGE

*&---------------------------------------------------------------------*
*&      Form  TOP_OF_REQ
*&---------------------------------------------------------------------*
FORM TOP_OF_REQ.

  SKIP.
  ULINE (83).
  FORMAT INTENSIFIED OFF COLOR 6.
  WRITE : /1 '|' NO-GAP, (01)'C' NO-GAP.
  SET LEFT SCROLL-BOUNDARY.
  WRITE :    '|' NO-GAP, (09)TEXT-001 NO-GAP,  "pers.no.
             '|' NO-GAP, (11)TEXT-002 NO-GAP,  "begda
             '|' NO-GAP, (11)TEXT-003 NO-GAP,  "endda
             '|' NO-GAP, (11)TEXT-004 NO-GAP,  "apsta
             '|' NO-GAP, (21)TEXT-005 NO-GAP,  "Bas.Text
             '|' NO-GAP, (11)TEXT-006 NO-GAP,  "Açiklama
             '|'.
  ULINE (83).


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

  SELECT * FROM PB4000 WHERE PERNR IN PERNR
                       AND   APSTA IN APSTA
                       AND   ENDDA EQ '99991231'.

    READ TABLE XT751B WITH KEY APSTA = PB4000-APSTA.
    MOVE XT751B-STATX         TO INTTAB-STATX.

    MOVE-CORRESPONDING PB4000 TO INTTAB.
    APPEND INTTAB.
*    break-point.
  ENDSELECT.

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

  SET PF-STATUS 'ZPCALAC' EXCLUDING  FTAB.
  SORT INTTAB BY PERNR.

  LOOP AT INTTAB.

    FORMAT RESET.
    FORMAT COLOR COL_NORMAL.
    IF CHANGES = ' '.
      FORMAT INTENSIFIED OFF.
      CHANGES = 'X'.
    ELSE.
      FORMAT INTENSIFIED ON .
      CHANGES = ' '.
    ENDIF.

    WRITE : /1 '|' NO-GAP, FLAG AS CHECKBOX, SY-VLINE.
    SET LEFT SCROLL-BOUNDARY.
    WRITE :3   '|', (08)INTTAB-PERNR NO-ZERO UNDER TEXT-001,
               '|', (10)INTTAB-BEGDA         UNDER TEXT-002,
               '|', (10)INTTAB-ENDDA         UNDER TEXT-003,
               '|', (10)INTTAB-APSTA         UNDER TEXT-004,
               '|', (20)INTTAB-STATX         UNDER TEXT-005,
               '|', (10)INTTAB-ERTXT         UNDER TEXT-006,
               '|'.

    HIDE INTTAB.

  ENDLOOP.

  ULINE (83).

ENDFORM.                               " WRITE_LIST_TO_SCREEN
*&---------------------------------------------------------------------*
*&      Form  AT_USER_COMMAND
*&---------------------------------------------------------------------*
FORM AT_USER_COMMAND.
*--
  CASE SY-UCOMM.
    WHEN 'MALL'.   PERFORM MARK_ALL_LINES USING 'X'.
    WHEN 'MDEL'.   PERFORM MARK_ALL_LINES USING SPACE.
    WHEN 'UPDATE'. PERFORM BEGIN_TO_BATCH_FOR_UPDATE.
  ENDCASE.
*--

  SET PF-STATUS 'ZPCALAC'               .

ENDFORM.                               " AT_USER_COMMAND
*&---------------------------------------------------------------------*
*&      Form  BEGIN TO BATCH FOR UPDATE
*&---------------------------------------------------------------------*
FORM BEGIN_TO_BATCH_FOR_UPDATE.
  DO.
    CLEAR FLAG.
    READ LINE SY-INDEX FIELD VALUE FLAG.
    IF SY-SUBRC > 0.
      EXIT.
    ENDIF.
    CHECK FLAG NE SPACE.

    PERFORM FILL_BDCTAB_FOR_UPDATE.

    CALL TRANSACTION 'PB40' USING BDCDATA MODE 'N'.

*   if sy-subrc eq 0.
*     modify current line
*       field value flag from space
*           inttab-ertxt from 'KAYIT YARATILDI'
*       line format input off color col_negative.
*   else.
      MODIFY CURRENT LINE
        FIELD VALUE FLAG FROM SPACE
            INTTAB-ERTXT FROM 'KAYIT YARATILDI'
        LINE FORMAT INPUT OFF COLOR COL_NEGATIVE.
*   endif.
  ENDDO.
ENDFORM.                               " BEGIN_TO_BATCH_FOR_UPDATE
*&---------------------------------------------------------------------*
*&      Form  MARK_ALL_LINES
*&---------------------------------------------------------------------*
FORM MARK_ALL_LINES USING    MARK.
  DO.
    READ LINE SY-INDEX FIELD VALUE FLAG      INTO FLAG
                                     P-ERTXT INTO P-ERTXT.
    IF SY-SUBRC > 0.  EXIT.  ENDIF.
    CHECK P-ERTXT EQ SPACE.
    MOVE MARK TO FLAG.
    MODIFY LINE SY-INDEX FIELD VALUE FLAG.
  ENDDO.
ENDFORM.                               " MARK_ALL_LINES
*&---------------------------------------------------------------------*
*&      Form  SET_INITIAL_VALUES
*&---------------------------------------------------------------------*
FORM SET_INITIAL_VALUES.

SELECT * FROM T751B INTO TABLE XT751B
                    WHERE LANGU  EQ SY-LANGU.

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

  REFRESH BDCDATA.
  P+           'SAPMP50A'        '4200'         .
  F+ :         'RPAPP-APLNO'     INTTAB-PERNR   ,
               'RP50G-SELEC(3)'  'X'            ,
               'BDC_OKCODE'      'PICK'         .
  P+           'MP400000'        '2000'         .
  F+ :         'BDC_OKCODE'      'UPD'          .
  P+           'SAPMPAP3'        '2000'         .
  F+ :         'PC3AC-APACT'     '015'          ,
               'PC3AC-PERNR'     '00000000'     ,
               'BDC_OKCODE'      'SUPP'         .


ENDFORM.                    " FILL_BDCTAB_FOR_UPDATE

Hiç yorum yok:

Yorum Gönder