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