TABLES : PERNR,
HRP1000,
T503T,
T528T.
INFOTYPES: 0000,
0001,
0002,
0032,
9001,
9004.
DATA: X LIKE HRP1000-MC_SHORT,
Y LIKE HRP1000-MC_SHORT,
MYTOPLAM(4) TYPE N,
BEGDA_DT LIKE P0000-BEGDA,
ENDDA_DT LIKE P0000-ENDDA,
COUNT1 TYPE N,
COUNT2 TYPE N,
IHBAR(5) 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 HRP1000-STEXT,
PTEXT LIKE T503T-PTEXT,
SSKNO LIKE P9004-SSKNO,
FATER LIKE P9001-FATER,
GBORT LIKE P0002-GBORT,
GBDAT LIKE P0002-GBDAT,
* ihbar like p2010-anzhl,
TEL01 LIKE P0032-TEL01.
DATA: END OF INTTAB.
DATA: XT528T LIKE T528T 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,
END OF DEP.
DATA:BEGIN OF BDC_TAB OCCURS 5. "IS
INCLUDE STRUCTURE BDCDATA.
DATA: END OF BDC_TAB.
PARAMETER MAPNAME DEFAULT SY-UNAME LIKE RPTAXXXX-MAP_NAME. "IS
DATA: FNAME(128), FTYPE(3), FSIZE TYPE I. "IS
DATA:BEGIN OF REC OCCURS 10 , "IS
PERNR(8),
* begda(8),
* anzhl(5),
IHBAR(5),
END OF REC.
*-- Giris ekranina ilave
SELECTION-SCREEN BEGIN OF BLOCK BLOCK1 WITH FRAME TITLE TEXT-012.
SELECT-OPTIONS: SHORT FOR HRP1000-MC_SHORT.
PARAMETERS : BEGDA LIKE SY-DATUM,
ENDDA LIKE SY-DATUM,
IHBTRH LIKE SY-DATUM.
SELECTION-SCREEN END OF BLOCK BLOCK1.
*------- PROGRAM BASLIYOR
START-OF-SELECTION.
PERFORM SET_INITIAL_VALUES.
GET PERNR.
COUNT1 = 0.
COUNT2 = 0.
*-- Ise giris tarihi
LOOP AT P0000 WHERE BEGDA BETWEEN PNPBEGDA AND PNPENDDA
AND MASSN IN PNPMASSN.
COUNT2 = COUNT2 + 1.
ENDLOOP.
CHECK SY-SUBRC EQ 0.
MOVE P0000-BEGDA TO INTTAB-BEGDA.
RP-PROVIDE-FROM-LAST P0001 SPACE P0000-BEGDA P0000-ENDDA.
IF SY-SUBRC EQ 0.
READ TABLE XT503T WITH KEY PERSK = P0001-PERSK.
ENDIF.
*-- Isten çikmismi ?
LOOP AT P0000 WHERE BEGDA BETWEEN PNPBEGDA AND PNPENDDA AND
MASSN EQ '10'.
COUNT1 = COUNT1 + 1.
ENDLOOP.
CHECK COUNT1 NE COUNT2.
*-- Pozisyon degistirmis ?
LOOP AT P0000 WHERE BEGDA BETWEEN PNPBEGDA AND PNPENDDA
AND MASSN EQ '02'.
ENDLOOP.
IF SY-SUBRC EQ 0.
RP-PROVIDE-FROM-LAST P0001 SPACE P0000-BEGDA P0000-ENDDA.
READ TABLE XT503T WITH KEY PERSK = P0001-PERSK.
ENDIF.
*--- istenen departmanmi ?
READ TABLE DEP WITH KEY P0001-ORGEH.
CHECK SY-SUBRC EQ 0.
PERFORM RE528.
END-OF-SELECTION.
*-- GUI Status Bilgisi
SET PF-STATUS 'LIST'.
PERFORM BODY.
PERFORM BATCH_INPUT.
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 150 PLACES.
WHEN 'P003'.
SCROLL LIST LEFT BY 150 PLACES.
WHEN 'S000'.
PERFORM BODY.
PERFORM TOTAL.
WHEN 'S001'.
PERFORM NAME.
PERFORM TOTAL.
ENDCASE.
TOP-OF-PAGE DURING LINE-SELECTION.
PERFORM FORMAT.
*---------------------------------------------------------------------*
* FORM RE528 *
*---------------------------------------------------------------------*
* ........ *
*---------------------------------------------------------------------*
FORM RE528.
*-- Clear Islemleri
* clear: xt503t, xt528t,
CLEAR: P0002, P0032, P9004, P9001.
*-- Loop Islemleri
LOOP AT P0002 WHERE BEGDA LE P0000-ENDDA AND
ENDDA GE P0000-BEGDA.
ENDLOOP.
* loop at p0032 where begda le p0000-endda and
* endda ge p0000-begda.
LOOP AT P0032 .
* write :/1 begda,' ',p0000-endda.
ENDLOOP.
LOOP AT P9001 WHERE BEGDA LE P0000-ENDDA AND
ENDDA GE P0000-BEGDA.
ENDLOOP.
LOOP AT P9004 WHERE BEGDA LE P0000-ENDDA AND
ENDDA GE P0000-BEGDA.
ENDLOOP.
* read table xt503t with key persk = p0001-persk.
READ TABLE XT528T WITH KEY PLANS = P0001-PLANS.
*-- Internal Table Atama Islemleri
MOVE PERNR-PERNR TO INTTAB-PERNR.
MOVE PERNR-ENAME TO INTTAB-ENAME.
MOVE P0001-PLANS TO INTTAB-PLANS.
MOVE XT528T-PLSTX TO INTTAB-PLSTX.
MOVE P0001-ANSVH TO INTTAB-ANSVH.
MOVE XT503T-PTEXT TO INTTAB-PTEXT.
MOVE P9004-SSKNO TO INTTAB-SSKNO.
MOVE P0001-PERSK TO INTTAB-PERSK.
MOVE P0032-TEL01 TO INTTAB-TEL01.
MOVE DEP-SHORT TO INTTAB-MC_SHORT.
MOVE DEP-STEXT TO INTTAB-MC_STEXT.
MOVE P9001-FATER TO INTTAB-FATER.
MOVE P0002-GBORT TO INTTAB-GBORT.
MOVE P0002-GBDAT TO INTTAB-GBDAT.
APPEND INTTAB.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form FORMAT
*&---------------------------------------------------------------------*
* text *
*----------------------------------------------------------------------*
FORM FORMAT.
WRITE : /100 TEXT-013 COLOR COL_BACKGROUND INVERSE.
SKIP.
ULINE (228).
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
'|' NO-GAP,(11)'Ihbar günü' NO-GAP, "Entry Date
* '|' no-gap,(16)text-014 no-gap, "Father Name
* '|' no-gap,(16)text-015 no-gap, "Birthplace
* '|' no-gap,(11)text-016 no-gap, "Birthdate
* '|' no-gap,(9)text-004 no-gap, "Dep.Code
* '|' no-gap,(41)text-005 no-gap, "Dept Name
* '|' no-gap,(26)text-006 no-gap, "Position
* '|' no-gap,(3)text-007 no-gap, "SG
* '|' no-gap,(21)text-008 no-gap, "Sub. Group Text
* '|' no-gap,(13)text-009 no-gap, "SSK No
* '|' no-gap,(5)text-010 no-gap, "Cont.
* '|' no-gap,(6)text-011 no-gap, "Ext.
'|'.
ULINE (30).
ENDFORM. " FORMAT
*&---------------------------------------------------------------------*
*& Form BODY
*&---------------------------------------------------------------------*
* text *
*----------------------------------------------------------------------*
FORM BODY.
SORT INTTAB BY PERNR.
FORMAT INTENSIFIED OFF COLOR 3.
CLEAR MYTOPLAM.
LOOP AT INTTAB.
CHECK INTTAB-MC_SHORT IN SHORT.
IF BEGDA NE '18000101'. "Begda degiskenin bos geçilmesi kontrolü
CHECK INTTAB-BEGDA GE BEGDA_DT AND INTTAB-BEGDA LE ENDDA_DT.
* write :/1 begda,' ',endda,' ',inttab-begda.
ENDIF.
WRITE: / '|' NO-GAP,(8)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.
*reak-point.
IF IHBTRH = 0 . " bossa
IHBTRH = '19990101'.
ENDIF.
IHBAR = IHBTRH - INTTAB-BEGDA.
MOVE INTTAB-PERNR TO REC-PERNR.
MOVE IHBAR TO REC-IHBAR.
APPEND REC.
WRITE: SY-VLINE NO-GAP, (10)INTTAB-BEGDA UNDER TEXT-003,
"Entry Date
SY-VLINE NO-GAP, (10)REC-IHBAR UNDER 'Ihbar günü',
* sy-vline no-gap, (15)inttab-fater under text-014,
* "Father Name
* sy-vline no-gap, (15)inttab-gbort under text-015,
* "Birthplace
* sy-vline no-gap, (10)inttab-gbdat under text-016,
* "Birthdate
* sy-vline no-gap, (8)inttab-mc_short under text-004,
* "Dep.Code
* '|' no-gap, (40)inttab-mc_stext under text-005, "Dept Name
* '|' no-gap, (25)inttab-plstx under text-006, "position
* '|' no-gap, (2)inttab-persk under text-007, "SG
* '|' no-gap,(20)inttab-ptext under text-008, "Sub. Group Text
* '|' no-gap, (12)inttab-sskno under text-009, "SSK No
* '|' no-gap, (4)inttab-ansvh under text-010, "Contract
* '|' no-gap, (5)inttab-tel01 under text-011, "Tel01
'|'.
ADD 1 TO MYTOPLAM.
ENDLOOP.
ULINE (30).
ENDFORM. " BODY
*&-----------------------------------------------------------------*
*& Isme gore sirali *
*&-----------------------------------------------------------------*
FORM NAME.
SORT INTTAB BY ENAME.
FORMAT INTENSIFIED OFF COLOR 3.
CLEAR MYTOPLAM.
LOOP AT INTTAB.
CHECK INTTAB-MC_SHORT IN SHORT.
CHECK INTTAB-BEGDA GE BEGDA_DT AND INTTAB-BEGDA LE ENDDA_DT.
WRITE: / '|' NO-GAP,(8)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
SY-VLINE NO-GAP, (15)INTTAB-FATER UNDER TEXT-014,
"Father Name
SY-VLINE NO-GAP, (15)INTTAB-GBORT UNDER TEXT-015,
"Birthplace
SY-VLINE NO-GAP, (10)INTTAB-GBDAT UNDER TEXT-016,
"Birthdate
SY-VLINE NO-GAP, (8)INTTAB-MC_SHORT UNDER TEXT-004,
"Dep.Code
'|' NO-GAP, (40)INTTAB-MC_STEXT UNDER TEXT-005, "Dept Name
'|' NO-GAP, (25)INTTAB-PLSTX UNDER TEXT-006, "position
'|' NO-GAP, (2)INTTAB-PERSK UNDER TEXT-007, "SG
'|' NO-GAP,(20)INTTAB-PTEXT UNDER TEXT-008, "Sub. Group Text
'|' NO-GAP, (12)INTTAB-SSKNO UNDER TEXT-009, "SSK No
'|' NO-GAP, (4)INTTAB-ANSVH UNDER TEXT-010, "Contract
'|' NO-GAP, (5)INTTAB-TEL01 UNDER TEXT-011, "Tel01
'|'.
ADD 1 TO MYTOPLAM.
ENDLOOP.
ULINE (228).
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.
*--- set date
IF BEGDA EQ 0. "Ekrandan begda degiskenin bos geçilmesi
MOVE '18000101' TO BEGDA. MOVE BEGDA TO PNPBEGDA.
MOVE '99991231' TO ENDDA. MOVE ENDDA TO PNPENDDA.
ELSE.
MOVE BEGDA TO BEGDA_DT. "Ekranda bir tarih araliginin girilmesi
MOVE ENDDA TO ENDDA_DT.
ENDIF.
*--- set massn islemler dizisi
MOVE : 'I' TO PNPMASSN-SIGN,
'EQ' TO PNPMASSN-OPTION,
'01' TO PNPMASSN-LOW.
APPEND PNPMASSN. CLEAR PNPMASSN.
MOVE : 'I' TO PNPMASSN-SIGN,
'EQ' TO PNPMASSN-OPTION,
'12' TO PNPMASSN-LOW.
APPEND PNPMASSN. CLEAR PNPMASSN.
*---- departman listesi
SELECT OBJID MC_SHORT MC_STEXT 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.
*-- Pozisyon textleri listesi
SELECT * FROM T528T INTO TABLE XT528T WHERE SPRSL EQ SY-LANGU
AND OTYPE EQ 'S'.
*-- Çalisan grup textleri listesi
SELECT * FROM T503T INTO TABLE XT503T WHERE SPRSL EQ SY-LANGU.
ENDFORM. " SET_INITIAL_VALUES
*&---------------------------------------------------------------------*
*& Form BATCH_INPUT
*&---------------------------------------------------------------------*
* text *
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM BATCH_INPUT.
*call function 'UPLOAD'
* exporting
* filename = 'C\WORK\019.TXT'
* filetype = 'ASC'
* importing
* filesize = fsize
* act_filename = fname
* act_filetype = ftype
* tables
* data_tab = rec
* exceptions
* conversion_error = 1
* invalid_table_width = 2
* invalid_type = 3.
*write: / 'upload tamam'.
*if sy-subrc ne 0. exit. endif.
CALL FUNCTION 'BDC_OPEN_GROUP'
EXPORTING
CLIENT = SY-MANDT
GROUP = MAPNAME
USER = SY-UNAME.
LOOP AT REC .
PERFORM BASLA.
ENDLOOP .
CALL FUNCTION 'BDC_CLOSE_GROUP'.
ENDFORM. " BATCH_INPUT
*&---------------------------------------------------------------------*
*& Form BASLA
*&---------------------------------------------------------------------*
* text *
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM BASLA.
PERFORM DEG USING 'SAPMP50A' '1000' .
PERFORM YAZ USING 'RP50G-PERNR' REC-PERNR .
PERFORM YAZ USING 'RP50G-CHOIC' '2010'.
PERFORM YAZ USING 'RP50G-SUBTY' '5500'.
PERFORM YAZ USING 'BDC_OKCODE' '/6'.
*******0000 COPY EVENTS
PERFORM DEG USING 'MP200000' '2450'.
PERFORM YAZ USING 'P2010-BEGDA' '01011999'.
PERFORM YAZ USING 'P2010-ANZHL' REC-IHBAR.
PERFORM YAZ USING 'Q2010-EITXT' 'Saat '.
PERFORM YAZ USING 'BDC_OKCODE' '/11'.
CALL FUNCTION 'BDC_INSERT'
EXPORTING
TCODE = 'PA30'
TABLES
DYNPROTAB = BDC_TAB.
REFRESH BDC_TAB.
ENDFORM. " BASLA
*&---------------------------------------------------------------------*
*& Form DEG
*&---------------------------------------------------------------------*
* text *
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM DEG USING PROGRAM DYNPRO.
CLEAR BDC_TAB.
BDC_TAB-PROGRAM = PROGRAM.
BDC_TAB-DYNPRO = DYNPRO.
BDC_TAB-DYNBEGIN = 'X'.
APPEND BDC_TAB.
ENDFORM. " DEG
*&---------------------------------------------------------------------*
*& Form YAZ
*&---------------------------------------------------------------------*
* text *
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM YAZ USING FNAM FVAL.
CLEAR BDC_TAB.
BDC_TAB-FNAM = FNAM.
BDC_TAB-FVAL = FVAL.
APPEND BDC_TAB.
ENDFORM. " YAZ
Hiç yorum yok:
Yorum Gönder