Application Development and Automation Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 
Read only

CODE FOR DATA RETRIEVAL FROM RT TABLE

Former Member
0 Likes
2,147

HELLO FRIENDS,

I HAVE A PROBLEM WHERE I WANT TO RETRIEVE DATA FROM RT TABLE BUT I AM NOT ABLE TO GET IT.

THIS IS MY CODE.

*&---------------------------------------------------------------------*
*& Report  ZABAP
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*

REPORT  ZABAP NO STANDARD PAGE HEADING LINE-SIZE 620.

TABLES: PERNR,PC261,T52DB,V_512W_D,T512T, T512W,HRPY_RGDIR,BNKA,T5R05, T500L.

INFOTYPES: 0001,0185,0000,0587,0588,0008,0002,0009,1001.

DATA: IN_RGDIR LIKE TABLE OF PC261 WITH HEADER LINE,
      WA_CRT LIKE PC208 OCCURS 0 WITH HEADER LINE,
      WA_RT LIKE TABLE OF PC207 WITH HEADER LINE,
*      WPBP LIKE TABLE OF PC205 WITH HEADER LINE,

      MYCRT LIKE TABLE OF PC208 WITH HEADER LINE,
      MYRT LIKE TABLE OF PC207 WITH HEADER LINE,
      RESULT TYPE PAY99_RESULT,
      PY_RESULT TYPE PAYIN_RESULT,
      EVAL_CLS LIKE T512T OCCURS 0 WITH HEADER LINE.

DATA: BEGIN OF LTX OCCURS 0,
      LTX LIKE T247-LTX,
      END OF LTX.

DATA: BEGIN OF RES OCCURS 0,
      LGART LIKE T512T-LGART,
      AKLAS LIKE T512W-AKLAS,
      STAT TYPE C,
      GESCH(10) TYPE C,
END OF RES.

DATA:  BANKA LIKE BNKA-BANKA,
       BTEXT LIKE T001P-BTEXT,
       STLTX LIKE T513S-STLTX,
       PLSTX LIKE T528T-PLSTX.

DATA:  MYSEQNR LIKE HRPY_RGDIR-SEQNR,
       SEQNR LIKE PC261-SEQNR,
       MYPERNR LIKE PERNR-PERNR.

START-OF-SELECTION.


WRITE: /1 SY-ULINE, SY-VLINE,'COMPANY CODE',
        20 SY-VLINE, 'PERSONNEL NO.',
        40 SY-VLINE, 'EMPLOYEE NAME',
        80 SY-VLINE, 'PF A/C NO',
        100 SY-VLINE, 'POSITION',
        120 SY-VLINE, 'JOB',
        140 SY-VLINE, 'BUSINESS AREA',
        160 SY-VLINE, 'PS LEVEL',
        180 SY-VLINE, 'PS GROUP',
        200 SY-VLINE, 'BANK ID',
        220 SY-VLINE, 'STATE',
        240 SY-VLINE, 'BANK NAME',
        260 SY-VLINE, 'PAN',
        280 SY-VLINE, 'DOB',
        300 SY-VLINE, 'GENDER',
        320 SY-VLINE, 'ACCOUNT NO.',
        340 SY-VLINE, 'BASIC',
        360 SY-VLINE, 'HRA',
        380 SY-VLINE, 'TRANSPORT',
        400 SY-VLINE, 'SUPPLEMENTARY',
        420 SY-VLINE, 'MEDICAL',
        440 SY-VLINE, 'LTA',
        460 SY-VLINE, 'DEPARTMENT',
        480 SY-VLINE, 'BRANCH NAME',
        500 SY-VLINE, 'PF',
        520 SY-VLINE, 'EMPLR PF',
        540 SY-VLINE, 'ESI',
        560 SY-VLINE, 'EMPLR ESI',
        580 SY-VLINE, 'MONTHLY CTC',
        600 SY-VLINE, 'ANNUAL CTC',
        620 SY-VLINE.

WRITE: SY-ULINE.

GET PERNR.

    RP_PROVIDE_FROM_FRST P0000 SPACE PN-BEGDA PN-ENDDA.
    RP_PROVIDE_FROM_LAST P0001 SPACE PN-BEGDA PN-ENDDA.
    RP_PROVIDE_FROM_LAST P0002 SPACE PN-BEGDA PN-ENDDA.
    RP_PROVIDE_FROM_LAST P0008 SPACE PN-BEGDA PN-ENDDA.
    RP_PROVIDE_FROM_LAST P0185 SPACE PN-BEGDA PN-ENDDA.
    RP_PROVIDE_FROM_FRST P0009 SPACE PN-BEGDA PN-ENDDA.

SELECT BTEXT FROM T001P INTO BTEXT WHERE BTRTL EQ P0001-BTRTL.
ENDSELECT.

SELECT BANKA FROM BNKA INTO BANKA WHERE BANKL EQ P0009-BANKL.
ENDSELECT.

SELECT STLTX FROM T513S INTO STLTX WHERE STELL EQ PERNR-STELL.
ENDSELECT.

SELECT PLSTX FROM T528T INTO PLSTX WHERE PLANS EQ PERNR-PLANS.
ENDSELECT.

IF P0002-GESCH = '1'.
RES-GESCH = 'MALE'.
ELSEIF P0002-GESCH = '2'.
RES-GESCH = 'FEMALE'.
ELSE.
RES-GESCH = 'UNKNOWN'.
ENDIF.

    WRITE: /1 SY-VLINE, PERNR-BUKRS,
            20 SY-VLINE, PERNR-PERNR,
            40 SY-VLINE, PERNR-ENAME,
            80 SY-VLINE, P0587-EEPFN,
            100 SY-VLINE, PLSTX,
            120 SY-VLINE, STLTX,
            140 SY-VLINE, P0001-GSBER,
            160 SY-VLINE, P0008-TRFST,
            180 SY-VLINE, P0008-TRFGR,
            200 SY-VLINE, P0009-BANKL,
            220 SY-VLINE, BTEXT,
            240 SY-VLINE, BANKA,
            260 SY-VLINE, P0185-ICNUM,
            280 SY-VLINE, P0002-GBDAT,
            300 SY-VLINE, RES-GESCH,
            320 SY-VLINE, P0009-BANKN.

IF PNP-SW-FOUND EQ '1'.
      DO 20 TIMES VARYING P0008-LGA01 FROM P0008-LGA01 NEXT  P0008-LGA02
                  VARYING P0008-BET01 FROM P0008-BET01 NEXT  P0008-BET02.

        IF P0008-LGA01 = '1000'.
        WRITE: 340 SY-VLINE, P0008-BET01.
        ELSE.
        WRITE: 340 SY-VLINE, 360 SY-VLINE.
        ENDIF.

        IF P0008-LGA01 = '1001'.
        WRITE: 360 SY-VLINE, P0008-BET01.
        ELSE.
        WRITE: 380 SY-VLINE.
        ENDIF.

        IF P0008-LGA01 = '1002'.
        WRITE: 380 SY-VLINE, P0008-BET01.
        ELSE.
        WRITE: 400 SY-VLINE.
        ENDIF.

        IF P0008-LGA01 = '1005'.
        WRITE: 400 SY-VLINE, P0008-BET01.
        ELSE.
        WRITE: 420 SY-VLINE.
        ENDIF.

        IF P0008-LGA01 = '1003'.
        WRITE: 420 SY-VLINE, P0008-BET01.
        ELSE.
        WRITE: 440 SY-VLINE.
        ENDIF.

        IF P0008-LGA01 = '1004'.
        WRITE: 440 SY-VLINE, P0008-BET01.
        ELSE.
        WRITE: 460 SY-VLINE.
        ENDIF.
     ENDDO.
    ENDIF.

PROVIDE * FROM P0185 BETWEEN PN-BEGDA AND PN-ENDDA WHERE P0185-SUBTY = '20'.
WRITE: 460 SY-VLINE, P0185-ICNUM.
ENDPROVIDE.
WRITE: 480 SY-VLINE, P0001-WERKS, 500 SY-VLINE.

WRITE: / SY-ULINE.

CALL FUNCTION 'CU_READ_RGDIR'
  EXPORTING
    PERSNR                   = PERNR-PERNR
* IMPORTING
*   MOLGA                    = MOLGA
  TABLES
    IN_RGDIR                 = IN_RGDIR.


  CALL FUNCTION 'CD_READ_LAST'
    EXPORTING
      BEGIN_DATE      = PN-BEGDA
      END_DATE        = PN-ENDDA
    IMPORTING
      OUT_SEQNR       = SEQNR
    TABLES
      RGDIR           = IN_RGDIR
    EXCEPTIONS
      NO_RECORD_FOUND = 1
      OTHERS          = 2.
*  IF SY-SUBRC <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
*  ENDIF.


CHECK SY-SUBRC = 0.

    CALL FUNCTION 'PYXX_READ_PAYROLL_RESULT'
      EXPORTING
        CLUSTERID                    = 'IN'
        EMPLOYEENUMBER               = PERNR-PERNR
        SEQUENCENUMBER               = SEQNR
      CHANGING
        PAYROLL_RESULT               = PY_RESULT
      EXCEPTIONS
        ILLEGAL_ISOCODE_OR_CLUSTERID = 1
        ERROR_GENERATING_IMPORT      = 2
        IMPORT_MISMATCH_ERROR        = 3
        SUBPOOL_DIR_FULL             = 4
        NO_READ_AUTHORITY            = 5
        NO_RECORD_FOUND              = 6
        VERSIONS_DO_NOT_MATCH        = 7
        ERROR_READING_ARCHIVE        = 8
        ERROR_READING_RELID          = 9
        OTHERS                       = 10.

****************CRT***************************
*    MYCRT[] = PY_RESULT-INTER-CRT .
*
*    LOOP AT MYCRT.
*      READ TABLE RES WITH KEY LGART = MYCRT-LGART.
*
*      IF MYCRT-LGART = '/101'.
*        WRITE /320  MYCRT-BETRG.
*      ENDIF.
*    ENDLOOP.

****************RT***************************

  MYRT[] = PY_RESULT-INTER-RT .

    LOOP AT MYRT.
      READ TABLE RES WITH KEY LGART = MYRT-LGART.
      IF MYRT-LGART = '/3F1'.
           WRITE: 500 SY-VLINE, MYRT-BETRG.
      ELSE.
           WRITE: 520 SY-VLINE.
      ENDIF.

      IF MYRT-LGART = '/3F3'.
           WRITE: 520  SY-VLINE, MYRT-BETRG.
      ELSE.
           WRITE: 540 SY-VLINE.
      ENDIF.

      IF MYRT-LGART = '/3E1'.
           WRITE: 540 SY-VLINE, MYRT-BETRG.
      ELSE.
           WRITE: 560 SY-VLINE.
      ENDIF.

      IF MYRT-LGART = '/3E2'.
           WRITE: 560 SY-VLINE, MYRT-BETRG.
       ELSE.
           WRITE: 580 SY-VLINE.
      ENDIF.

      IF MYRT-LGART = '/101'.
           WRITE: 580 SY-VLINE, MYRT-BETRG.
      ELSE.
           WRITE: 600 SY-VLINE.
      ENDIF.

      IF MYRT-LGART = '/416'.
           WRITE: 600 SY-VLINE, MYRT-BETRG.
      ELSE.
           WRITE: 620 SY-VLINE.
      ENDIF.
    ENDLOOP.

CLEAR: MYRT[].

WRITE: 620 SY-VLINE.
WRITE: /1 SY-ULINE.

PLS CHECK IF THERE IS SOME PROBLEM IN THE CODE AND SUGGEST CORRECTIONS AS THE PROGRAM GIVES OUTPUT IN THE STATUS BAR "NO PAYROLL RESULTS FOUND FOR THE PERSONNEL NUMBER".

REGARDS,

AMEET

2 REPLIES 2
Read only

Former Member
0 Likes
1,233

Hi

See the sample report which uses data retrival from RT

report zovertime

line-size 252

line-count 60(1)

no standard page heading

message-id zndc.

***********************************************************************

  • Database Tables & Infotypes

***********************************************************************

tables: pcl1, " HR Cluster1

pcl2, " HR Cluster1

pa0003, " Master data - Payroll Status

cskt, " Cost Center Texts

t528t, " Positions Texts

t513s, " Job Titles

pernr, " Logical PNP

t001p, " Personnel Subarea

t500p, " Personnel Area

t501, " Employee Group

t503k, " Employee Subgroup

csks. " Cost Center

infotypes:0000,0001.

*include rpclst00.

include rpc2rx00.

include rpc2rxx0.

include rpc2cd00.

*include rpc2ps00.

*include rpc2pt00.

*include rpcfvp00.

*include rpcfdc10.

*include rpcfdc00.

include rpppxd00.

include rpppxd10.

***********************************************************************

  • Declaration of Internal Tables

***********************************************************************

  • Internal Table for Output Data

data: begin of rep_tab occurs 0,

kostl like pa0001-kostl, " Cost Center

pernr like pa0001-pernr, " Personal Number

ename like pa0001-ename, " Employee Name

ctext like cskt-ltext, " Cost Center Text

ptext like t528t-plstx, " Position Text

ot1 type p decimals 2, " Jan OT Amount

ot2 type p decimals 2, " Feb OT Amount

ot3 type p decimals 2, " Mar OT Amount

ot4 type p decimals 2, " Apr OT Amount

ot5 type p decimals 2, " May OT Amount

ot6 type p decimals 2, " Jun OT Amount

ot7 type p decimals 2, " Jul OT Amount

ot8 type p decimals 2, " Aug OT Amount

ot9 type p decimals 2, " Sep OT Amount

ot10 type p decimals 2, " Oct OT Amount

ot11 type p decimals 2, " Nov OT Amount

ot12 type p decimals 2, " Dec OT Amount

ott type p decimals 2, " Total OT Amount

end of rep_tab.

***********************************************************************

  • Declaration of Variables

***********************************************************************

data: v_mon(2) type n, " Month

v_no type i, " Data Lines

v_year(4) type c, " Year

v_date like sy-datum, " Date

v_date1 like sy-datum, " Date

v_seqnr like pc261-seqnr. " Sequence No.

***********************************************************************

  • Declaration of Constants

***********************************************************************

data: c_type like hrp1001-otype value 'S', " Object Type

c_kokrs like cskt-kokrs value '1000', " Controlling Area

c_date1 like sy-datum value '18000101', " Date

c_date2 like sy-datum value '99991231', " Date

c_x type c value 'X', " Sign

  • c_mon(2) type c value '01', " Month

c_val1(2) type c value '31', " Date

c_val2(2) type c value '12', " Month Type

c_val like p0041-dar01 value '01', " Date Type

c_lgart1 like p0008-lga01 value '0722', " Wage Type

c_lgart2 like p0008-lga01 value '0723', " Wage Type

c_1(2) type n value '01', " Month1

c_2(2) type n value '02', " Month2

c_3(2) type n value '03', " Month3

c_4(2) type n value '04', " Month4

c_5(2) type n value '05', " Month5

c_6(2) type n value '06', " Month6

c_7(2) type n value '07', " Month7

c_8(2) type n value '08', " Month8

c_9(2) type n value '09', " Month9

c_10(2) type n value '10', " Month10

c_11(2) type n value '11', " Month11

c_12(2) type n value '12'. " Month12

***********************************************************************

  • Selection-screen

***********************************************************************

parameters:

p_year like pc2b0-pabrj obligatory. " Payroll Year

***********************************************************************

  • At selection-screen

***********************************************************************

at selection-screen.

  • Validate the Selection Screen fields

perform validate_screen.

***********************************************************************

  • Start-of-Selection

***********************************************************************

start-of-selection.

  • Selection of Period

perform get_period.

  • Get PERNR from LDB

get pernr.

  • Get the Master data from infotype 0001

perform get_master_data.

***********************************************************************

  • Top-of-page

***********************************************************************

top-of-page.

  • Write the Report and Column Headings

perform top_of_page.

***********************************************************************

  • End-of-Page

***********************************************************************

end-of-page.

write /1(252) sy-uline.

***********************************************************************

  • End-of-Selection

***********************************************************************

end-of-selection.

  • Display the Output Report.

perform display_report.

***********************************************************************

  • Form-Routines

***********************************************************************

&----


*& Form validate_screen

&----


  • Validation of selection Screen fields

----


form validate_screen.

  • Validation of Cost Center

clear csks.

if not pnpkostl[] is initial.

select single kostl

into csks-kostl

from csks

where kostl in pnpkostl.

if sy-subrc <> 0.

message e999 with 'Invalid Cost Center'(003).

endif.

endif.

  • Validation of Personnel Number

clear pa0003.

if not pnppernr[] is initial.

select pernr

from pa0003 up to 1 rows

into pa0003-pernr

where pernr in pnppernr.

endselect.

if sy-subrc <> 0.

message e999 with 'Incorrect Personal Number Entered'(002).

endif.

endif.

  • Validation of Personnel Area

clear t500p.

if not pnpwerks[] is initial.

select persa

from t500p up to 1 rows

into t500p-persa

where persa in pnpwerks.

endselect.

if sy-subrc <> 0.

message e999 with 'Incorrect Personnel Area Entered'(001).

endif.

endif.

  • Validation of Personnel Sub Area

clear t001p.

if not pnpbtrtl[] is initial.

select btrtl

from t001p up to 1 rows

into t001p-btrtl

where btrtl in pnpbtrtl.

endselect.

if sy-subrc <> 0.

message e999 with 'Incorrect Personnel Sub Area Entered'(037).

endif.

endif.

  • Validation of Employee Group

clear t501.

if not pnppersg[] is initial.

select persg

from t501 up to 1 rows

into t501-persg

where persg in pnppersg.

endselect.

if sy-subrc <> 0.

message e999 with 'Incorrect Employee Group Entered'(038).

endif.

endif.

  • Validation of Employee Sub Group

clear t503k.

if not pnppersk[] is initial.

select persk

from t503k up to 1 rows

into t503k-persk

where persk in pnppersk.

endselect.

if sy-subrc <> 0.

message e999 with 'Incorrect Employee Sub Group Entered'(039).

endif.

endif.

endform. "validate_screen

&----


*& Form get_period

&----


  • Get the Correct Period based on Selection screen selection

----


form get_period.

clear: v_year,v_mon, v_date, v_date1.

v_year = sy-datum+0(4).

v_mon = sy-datum+4(2).

if pnptimr1 = c_x. " Current Date

pnpbegda = sy-datum.

pnpendda = sy-datum.

elseif pnptimr2 = c_x. " Current Month

concatenate v_year v_mon c_val into v_date.

concatenate v_year v_mon c_val1 into v_date1.

pnpbegda = v_date.

pnpendda = v_date1.

elseif pnptimr3 = c_x. " Current Year

concatenate v_year c_val c_val into v_date.

concatenate v_year c_val2 c_val1 into v_date1.

pnpbegda = v_date.

pnpendda = v_date1.

elseif pnptimr4 = c_x. " Upto Today

pnpbegda = c_date1.

pnpendda = sy-datum.

elseif pnptimr5 = c_x. " From Today

pnpbegda = sy-datum.

pnpendda = c_date2.

else.

if ( pnpbegda is initial and pnpendda is initial ).

pnpbegda = c_date1.

pnpendda = c_date2.

elseif pnpbegda is initial and not pnpendda is initial.

pnpbegda = c_date1.

pnpendda = pnpendda.

elseif not ( pnpbegda is initial and pnpendda is initial ).

pnpbegda = pnpbegda.

pnpendda = pnpendda.

endif.

endif.

endform. "get_period

&----


*& Form get_master_data

&----


  • Get the Master Data from Database Tables PA0001,0002,0003

*----


form get_master_data.

  • Get data from Respective Infotypes

rp_provide_from_last p0001 space pnpbegda pnpendda.

if p0001-kostl in pnpkostl.

rep_tab-kostl = p0001-kostl.

rep_tab-pernr = p0001-pernr.

rep_tab-ename = p0001-ename.

  • Get the Position Text

clear t528t-plstx.

select single plstx into t528t-plstx from t528t

where plans = p0001-plans and

otype = c_type and

sprsl = sy-langu.

if sy-subrc = 0.

rep_tab-ptext = t528t-plstx.

endif.

  • Get the Cost Center Text

clear cskt-ltext.

select single ltext into cskt-ltext from cskt

where spras = sy-langu and

kokrs = c_kokrs and

kostl = p0001-kostl.

if sy-subrc = 0.

rep_tab-ctext = cskt-ltext.

endif.

  • Get the Overtime Payment Data

perform get_ot_data.

rep_tab-ott = rep_tab-ot1 + rep_tab-ot2 + rep_tab-ot3 +

rep_tab-ot4 + rep_tab-ot5 + rep_tab-ot6 +

rep_tab-ot7 + rep_tab-ot8 + rep_tab-ot9 +

rep_tab-ot10 + rep_tab-ot11 + rep_tab-ot12.

append rep_tab.

clear rep_tab.

endif.

sort rep_tab by kostl pernr.

delete rep_tab where kostl = ' '.

delete rep_tab where ott = 0.

endform. "get_master_data

&----


*& Form get_ot_data

&----


  • Get the Overtime Payment Data

*----


form get_ot_data.

cd-key = pernr-pernr.

rp-imp-c2-cd.

sort rgdir by seqnr.

  • To get sequence number for the payroll period

loop at rgdir where void is initial

and reversal is initial

and outofseq is initial

and srtza eq 'A'.

if rgdir-fpper+0(4) = p_year.

  • To consider offcycle run data

if not rgdir-ocrsn is initial.

v_seqnr = rgdir-seqnr.

exit.

endif.

v_seqnr = rgdir-seqnr.

endif.

if not v_seqnr is initial.

perform import_rx.

endif.

perform process_wagetypes.

endloop.

endform. "get_ot_data

include rpppxm00.

&----


*& Form Import_rx

&----


  • Import the RX data from Clusters

----


form import_rx.

rx-key-pernr = cd-key-pernr.

rx-key-seqno = v_seqnr.

rp-init-buffer.

rp-imp-c2-rx.

endform. " Import_rx

&----


*& Form Process_wagetypes

&----


  • Calculate the Overtime Amount based on Wage types

----


form process_wagetypes.

loop at rt.

if rt-lgart = c_lgart1 or rt-lgart = c_lgart2.

if rgdir-fpper+0(4) = p_year.

v_mon = rgdir-fpper+4(2).

case v_mon .

when c_1.

rep_tab-ot1 = rep_tab-ot1 + rt-betrg.

when c_2.

rep_tab-ot2 = rep_tab-ot2 + rt-betrg.

when c_3.

rep_tab-ot3 = rep_tab-ot3 + rt-betrg.

when c_4.

rep_tab-ot4 = rep_tab-ot4 + rt-betrg.

when c_5.

rep_tab-ot5 = rep_tab-ot5 + rt-betrg.

when c_6.

rep_tab-ot6 = rep_tab-ot6 + rt-betrg.

when c_7.

rep_tab-ot7 = rep_tab-ot7 + rt-betrg.

when c_8.

rep_tab-ot8 = rep_tab-ot8 + rt-betrg.

when c_9.

rep_tab-ot9 = rep_tab-ot9 + rt-betrg.

when c_10.

rep_tab-ot10 = rep_tab-ot10 + rt-betrg.

when c_11.

rep_tab-ot11 = rep_tab-ot11 + rt-betrg.

when c_12.

rep_tab-ot12 = rep_tab-ot12 + rt-betrg.

endcase.

endif.

endif.

endloop.

endform. "process_wagetypes

&----


*& Form top_of_page

&----


  • Write the Report and Column Headings

----


form top_of_page.

format color col_heading on.

write: /1(252) 'NATIONAL DRILLING COMPANY'(010) centered,

/1(252) 'Overtime Payments Details'(011) centered.

format color off.

if pnptimr1 = c_x. " Current Date

write: /2 'Period From :'(036), sy-datum, 'To:'(006), sy-datum.

elseif pnptimr2 = c_x. " Current Month

write: /2 'Period From :'(036), v_date, 'To:'(006), v_date1.

elseif pnptimr3 = c_x. " Current Year

write: /2 'Period From :'(036), v_date, 'To:'(006), v_date1.

elseif pnptimr4 = c_x. " Upto Today

write: /2 'Period From :'(036), c_date1, 'To:'(006), sy-datum.

elseif pnptimr5 = c_x. " From Today

write: /2 'Period From :'(036), sy-datum, 'To:'(006), c_date2.

else.

if ( pnpbegda is initial and pnpendda is initial ).

write: /2 'Period From :'(036), c_date1, 'To:'(006), c_date2.

elseif pnpbegda is initial and not pnpendda is initial.

write: /2 'Period From :'(036), c_date1, 'To:'(006), pnpendda.

elseif not ( pnpbegda is initial and pnpendda is initial ).

write: /2 'Period From :'(036), pnpbegda,

'To:'(006), pnpendda.

endif.

endif.

write: 219 'Report Run Date:'(018), sy-datum.

if not pnpkostl[] is initial.

if pnpkostl-high is initial.

write: /2 'Cost Center :'(004), pnpkostl-low,

219 'Time :'(020), sy-uzeit.

else.

write: /2 'Cost Center From:'(005), pnpkostl-low+7(3),

'To:'(006), pnpkostl-high,

219 'Time :'(020), sy-uzeit.

endif.

else.

write: /219 'Time :'(020), sy-uzeit.

endif.

if not pnppernr[] is initial.

if pnppernr-high is initial.

write: /2 'Personal Number :'(007), pnppernr-low,

219 'User :'(021), sy-uname.

else.

write: /2 'Personal No.From:'(008), pnppernr-low,

'To:'(006), pnppernr-high,

219 'User :'(021), sy-uname.

endif.

else.

write: /219 'User :'(021), sy-uname.

endif.

write: /219 'Page No :'(022), sy-pagno.

format color col_heading.

write /1(252) sy-uline.

write:/1 sy-vline, 10 sy-vline,

41 sy-vline,

67 sy-vline, 68(167) 'Overtime Payments(Dirhams)'(013) centered,

235 sy-vline,252 sy-vline.

format color col_heading.

write:/1 sy-vline, 2(8) 'Emp #'(019) centered,

10 sy-vline, 11(30) 'Employee Name'(012) centered,

41 sy-vline, 42(25) 'Position'(014) centered,

67 sy-vline, 68(167) sy-uline,

235 sy-vline,236(16) 'Total'(017) centered,

252 sy-vline.

write:/1 sy-vline, 10 sy-vline,

41 sy-vline,

67 sy-vline, 68(13) 'JANUARY'(024) centered,

81 sy-vline, 82(13) 'FEBRUARY'(025) centered,

95 sy-vline, 96(13) 'MARCH'(026) centered,

109 sy-vline,110(13) 'APRIL'(027) centered,

123 sy-vline,124(13) 'MAY'(028) centered,

137 sy-vline,138(13) 'JUNE'(029) centered,

151 sy-vline,152(13) 'JULY'(030) centered,

165 sy-vline,166(13) 'AUGUST'(031) centered,

179 sy-vline,180(13) 'SEPTEMBER'(032) centered,

193 sy-vline,194(13) 'OCTOBER'(033) centered,

207 sy-vline,208(13) 'NOVEMBER'(034) centered,

221 sy-vline,222(13) 'DECEMBER'(035) centered,

235 sy-vline,252 sy-vline.

format color off.

write /1(252) sy-uline.

endform. "top_of_page

&----


*& Form Display_report

&----


  • Write the Report Output

----


form display_report.

clear v_no.

describe table rep_tab lines v_no.

if v_no = 0.

message i999 with

'No Data found for the entered Selection'(015).

endif.

loop at rep_tab.

format color 3.

at new kostl.

read table rep_tab index sy-tabix.

write:/1 sy-vline, 2(12) 'Cost Center:'(009),

14(10) rep_tab-kostl,

25(30) rep_tab-ctext,

252 sy-vline.

format color off.

write /1(252) sy-uline.

endat.

format color col_normal.

write: /1 sy-vline, 2(8) rep_tab-pernr,

10 sy-vline, 11(30) rep_tab-ename,

41 sy-vline, 42(25) rep_tab-ptext,

67 sy-vline, 68(13) rep_tab-ot1 no-zero,

81 sy-vline, 82(13) rep_tab-ot2 no-zero,

95 sy-vline, 96(13) rep_tab-ot3 no-zero,

109 sy-vline,110(13) rep_tab-ot4 no-zero,

123 sy-vline,124(13) rep_tab-ot5 no-zero,

137 sy-vline,138(13) rep_tab-ot6 no-zero,

151 sy-vline,152(13) rep_tab-ot7 no-zero,

165 sy-vline,166(13) rep_tab-ot8 no-zero,

179 sy-vline,180(13) rep_tab-ot9 no-zero,

193 sy-vline,194(13) rep_tab-ot10 no-zero,

207 sy-vline,208(13) rep_tab-ot11 no-zero,

221 sy-vline,222(13) rep_tab-ot12 no-zero,

235 sy-vline,236(16) rep_tab-ott no-zero,

252 sy-vline.

at end of kostl.

write /1(252) sy-uline.

endat.

format color off.

at last.

sum.

format color 1.

write: /1 sy-vline,

10 sy-vline, 11(30) 'Total'(017) centered,

41 sy-vline,

67 sy-vline, 68(13) rep_tab-ot1 no-zero,

81 sy-vline, 82(13) rep_tab-ot2 no-zero,

95 sy-vline, 96(13) rep_tab-ot3 no-zero,

109 sy-vline,110(13) rep_tab-ot4 no-zero,

123 sy-vline,124(13) rep_tab-ot5 no-zero,

137 sy-vline,138(13) rep_tab-ot6 no-zero,

151 sy-vline,152(13) rep_tab-ot7 no-zero,

165 sy-vline,166(13) rep_tab-ot8 no-zero,

179 sy-vline,180(13) rep_tab-ot9 no-zero,

193 sy-vline,194(13) rep_tab-ot10 no-zero,

207 sy-vline,208(13) rep_tab-ot11 no-zero,

221 sy-vline,222(13) rep_tab-ot12 no-zero,

235 sy-vline,236(16) rep_tab-ott no-zero,

252 sy-vline.

write /1(252) sy-uline.

endat.

format color off.

endloop.

endform. "display_report

<b>Reward points for useful Answers</b>

Regards

Anji

Read only

0 Likes
1,233

hi,

try this code,

REPORT ZIM_HR_NOTIFY_CASH_PAYMENT_FN.

************************************************************************

  • TABLES

************************************************************************

TABLES: PA9973,

PA0001,

PA0041,

PA0009,

PA0008,

PA0105,

PC207,

PC209.

************************************************************************

  • SELECT-OPTIONS *

************************************************************************

SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001.

SELECT-OPTIONS: S_PERNR FOR PA9973-PERNR.

PARAMETERS: TESTRUN RADIOBUTTON GROUP G1,

SENDMAIL RADIOBUTTON GROUP G1.

PARAMETERS: PERIOD LIKE SY-DATUM DEFAULT SY-DATUM.

SELECTION-SCREEN END OF BLOCK B1.

************************************************************************

  • TYPES *

************************************************************************

TYPES: BEGIN OF T_PA9973,

PERNR LIKE PA9973-PERNR,

END OF T_PA9973,

BEGIN OF T_PA0001,

PERNR LIKE PA0001-PERNR,

SNAME LIKE PA0001-SNAME,

END OF T_PA0001,

BEGIN OF T_PA0000,

PERNR LIKE PA0000-PERNR,

BEGDA LIKE PA0000-BEGDA,

MASSN LIKE PA0000-MASSN,

END OF T_PA0000,

BEGIN OF T_PA0041,

PERNR LIKE PA0041-PERNR,

DAT01 LIKE PA0041-DAT01,

DAR01 LIKE PA0041-DAR01,

END OF T_PA0041,

BEGIN OF T_DATA,

PERNR LIKE PA0001-PERNR,

SNAME LIKE PA0001-SNAME,

BEGDA LIKE PA0000-BEGDA,

DAT01 LIKE PA0041-DAT01,

BETRG LIKE PC209-BETRG,

LGART LIKE PC207-LGART,

ZLSCH LIKE PC209-ZLSCH,

USRID LIKE PA0105-USRID,

WAERS LIKE PC209-WAERS,

END OF T_DATA,

BEGIN OF T_EMAIL,

PERNR LIKE PA0105-PERNR,

USRTY LIKE PA0105-USRTY,

USRID LIKE PA0105-USRID,

END OF T_EMAIL.

************************************************************************

  • DATA *

************************************************************************

***********WORK AREAS**********

DATA: WA_PA9973 TYPE T_PA9973,

WA_PA0001 TYPE T_PA0001,

WA_PA0000 TYPE T_PA0000,

WA_PA0041 TYPE T_PA0041,

WA_DATA TYPE T_DATA,

WA_EMAIL TYPE T_EMAIL.

*********INTERNAL TABLES*******

DATA:IT_PA9973 TYPE STANDARD TABLE OF T_PA9973,

IT_PA0001 TYPE STANDARD TABLE OF T_PA0001,

IT_PA0000 TYPE STANDARD TABLE OF T_PA0000,

IT_PA0041 TYPE STANDARD TABLE OF T_PA0041,

IT_DATA TYPE STANDARD TABLE OF T_DATA,

IT_EMAIL TYPE STANDARD TABLE OF T_EMAIL.

DATA : BEGIN OF RT OCCURS 0. "result table

INCLUDE STRUCTURE PC207.

DATA : END OF RT.

DATA : BEGIN OF BT OCCURS 0. "BANK DETAIL

INCLUDE STRUCTURE PC209.

DATA : END OF BT.

DATA : MOLGA LIKE T512T-MOLGA VALUE '10'.

DATA : BEGIN OF it_RX OCCURS 0.

INCLUDE STRUCTURE PC200.

DATA : END OF it_RX.

DATA : BEGIN OF IT_RGDIR OCCURS 0.

INCLUDE STRUCTURE PC261.

DATA : END OF IT_RGDIR.

DATA : BEGDA LIKE PA0000-BEGDA.

DATA : ENDDA LIKE PA0000-ENDDA.

DATA:P_YEAR LIKE T549S-PABRJ.

DATA:P_PERIOD LIKE T549S-PABRP.

DATA:IT_PA0001A LIKE PA0001 OCCURS 0 WITH HEADER LINE.

P_YEAR = PERIOD+0(4).

P_PERIOD = PERIOD+3(2).

************************************************************************

  • PROCESSING LOGIC *

************************************************************************

SELECT DISTINCT PERNR

FROM PA9973

INTO TABLE IT_PA9973

WHERE PERNR IN S_PERNR

AND CASH = 'X' AND ACIND = 'X' AND ASELD = 'X' AND ININD = 'X'.

IF SY-SUBRC = 0.

IF IT_PA9973[] IS NOT INITIAL.

SELECT PERNR SNAME BEGDA

FROM PA0001

INTO CORRESPONDING FIELDS OF TABLE IT_PA0001

FOR ALL ENTRIES IN IT_PA9973

WHERE PERNR = IT_PA9973-PERNR.

ENDIF.

IF IT_PA9973[] IS NOT INITIAL.

SELECT PERNR BEGDA MASSN

FROM PA0000

INTO CORRESPONDING FIELDS OF TABLE IT_PA0000

FOR ALL ENTRIES IN IT_PA9973

WHERE PERNR = IT_PA9973-PERNR

AND MASSN = '01'.

ENDIF.

IF IT_PA9973[] IS NOT INITIAL.

SELECT PERNR DAT01 DAR01

FROM PA0041

INTO CORRESPONDING FIELDS OF TABLE IT_PA0041

FOR ALL ENTRIES IN IT_PA9973

WHERE PERNR = IT_PA9973-PERNR

AND DAR01 = '01'.

ENDIF.

IF IT_PA9973[] IS NOT INITIAL.

SELECT DISTINCT PERNR ABKRS

FROM PA0001

INTO CORRESPONDING FIELDS OF TABLE IT_PA0001A

WHERE PERNR = WA_PA9973-PERNR.

ENDIF.

IF IT_PA9973[] IS NOT INITIAL.

SELECT PERNR USRID

FROM PA0105

INTO CORRESPONDING FIELDS OF TABLE IT_EMAIL

FOR ALL ENTRIES IN IT_PA9973

WHERE PERNR = IT_PA9973-PERNR

AND USRTY = '0001'

OR USRTY = 'MAIL' .

ENDIF.

ELSE.

WRITE:/ 'NOT RECIEVED'.

ENDIF.

************************************************************************

  • TEST RUN *

************************************************************************

IF TESTRUN = 'X'.

SKIP.

SKIP.

ULINE (92).

WRITE:/ SY-VLINE ,35 ' AWARD RECIEVED EMPLOYEES' COLOR COL_HEADING,92

SY-VLINE .

ULINE (92).

WRITE:/ SY-VLINE ,'EMPLOYEE NAME' COLOR COL_HEADING,SY-VLINE,18 'HIREDATE' COLOR COL_HEADING,

28 SY-VLINE,30 'SERVICE DATE' COLOR COL_HEADING,44 SY-VLINE,

45 ' AMOUNT' COLOR COL_HEADING,70

SY-VLINE,72 'PAY.METHOD' COLOR COL_HEADING,82 SY-VLINE,

83 'WAGE TYPE' COLOR COL_HEADING,92 SY-VLINE.

ULINE (92).

PERFORM IT_COLLECT_DATA.

LOOP AT IT_DATA INTO WA_DATA.

WRITE:/ SY-VLINE,WA_DATA-SNAME COLOR COL_BACKGROUND,17 SY-VLINE,18

WA_DATA-BEGDA COLOR COL_BACKGROUND,28

SY-VLINE,30 WA_DATA-DAT01 COLOR COL_BACKGROUND,44 SY-VLINE,45

WA_DATA-BETRG, WA_DATA-WAERS COLOR COL_BACKGROUND,70 SY-VLINE,75 WA_DATA-ZLSCH COLOR COL_BACKGROUND,

82 SY-VLINE,83 WA_DATA-LGART COLOR COL_BACKGROUND,92 SY-VLINE.

ENDLOOP.

ULINE (92).

ENDIF.

**********************************************************************

  • SEND MAIL *

**********************************************************************

IF SENDMAIL = 'X'.

PERFORM IT_COLLECT_DATA.

LOOP AT IT_DATA INTO WA_DATA.

IF WA_DATA-USRID NS '@'.

ON CHANGE OF WA_DATA-USRID.

DATA: OBJPACK LIKE SOPCKLSTI1 OCCURS 2 WITH HEADER LINE.

DATA: OBJHEAD LIKE SOLISTI1 OCCURS 1 WITH HEADER LINE.

DATA: OBJBIN LIKE SOLISTI1 OCCURS 10 WITH HEADER LINE.

DATA: OBJTXT LIKE SOLISTI1 OCCURS 10 WITH HEADER LINE.

DATA: OBJTXT1 LIKE SOLISTI1 OCCURS 10 WITH HEADER LINE.

DATA: RECLIST LIKE SOMLRECI1 OCCURS 5 WITH HEADER LINE.

DATA: DOC_CHNG LIKE SODOCCHGI1.

DATA: TAB_LINES LIKE SY-TABIX.

  • Creating the document to be sent

*

DOC_CHNG-OBJ_NAME = 'OFFER'.

DOC_CHNG-OBJ_DESCR = 'Service Award Cash Payment'.

OBJTXT = 'This is to inform you that your service award cash:'.

APPEND OBJTXT.

OBJTXT = WA_DATA-BETRG.

  • OBJTXT1 = WA_DATA-WAERS.

  • CONCATENATE WA_DATA-BETRG WA_DATA-WAERS

  • INTO OBJTXT SEPARATED BY space.

APPEND OBJTXT.

OBJTXT = 'Wage type:'.

APPEND OBJTXT.

OBJTXT = WA_DATA-LGART.

APPEND OBJTXT.

OBJTXT = 'is paid through your monthly salary as Direct Deposit'.

APPEND OBJTXT.

DESCRIBE TABLE OBJTXT LINES TAB_LINES.

READ TABLE OBJTXT INDEX TAB_LINES.

DOC_CHNG-DOC_SIZE = ( TAB_LINES - 1 ) * 255 + STRLEN( OBJTXT ).

  • Creating the entry for the compressed document

CLEAR OBJPACK-TRANSF_BIN.

OBJPACK-HEAD_START = 1.

OBJPACK-HEAD_NUM = 0.

OBJPACK-BODY_START = 1.

OBJPACK-BODY_NUM = TAB_LINES.

OBJPACK-DOC_TYPE = 'RAW'.

APPEND OBJPACK.

  • Creating the document attachment

  • (Assume the data in OBJBIN are given in BMP format)

OBJBIN = ' \O/ '. APPEND OBJBIN.

OBJBIN = ' | '. APPEND OBJBIN.

OBJBIN = ' / \ '. APPEND OBJBIN.

DESCRIBE TABLE OBJBIN LINES TAB_LINES.

OBJHEAD = 'picasso.bmp'. APPEND OBJHEAD.

  • Creating the entry for the compressed attachment

OBJPACK-TRANSF_BIN = 'X'.

OBJPACK-HEAD_START = 1.

OBJPACK-HEAD_NUM = 1.

OBJPACK-BODY_START = 1.

OBJPACK-BODY_NUM = TAB_LINES.

OBJPACK-DOC_TYPE = 'BMP'.

OBJPACK-OBJ_NAME = 'ATTACHMENT'.

OBJPACK-OBJ_DESCR = 'Reproduction object 138'.

OBJPACK-DOC_SIZE = TAB_LINES * 255.

APPEND OBJPACK..

  • Entering names in the distribution list

  • IF WA_DATA-USRID CS '@'.

*

  • RECLIST-RECEIVER = WA_DATA-USRID.

*

  • RECLIST-REC_TYPE = 'U'.

*

  • APPEND RECLIST.

*

  • perform f1.

*

  • endif.

RECLIST-RECEIVER = WA_DATA-USRID.

RECLIST-REC_TYPE = 'B'.

APPEND RECLIST.

perform f1.

  • *

CLEAR :OBJTXT,RECLIST.

REFRESH :OBJTXT,RECLIST.

*

ENDON.

ENDIF.

ENDLOOP.

  • LOOP AT RECLIST.

  • WRITE:/ RECLIST-RECEIVER.

  • ENDLOOP.

**perform f1.

  • PERFORM F1.

ENDIF.

*RECLIST-RECEIVER = 'sarvadi_imran@yahoo.com'.

*

*RECLIST-REC_TYPE = 'U'.

*

*APPEND RECLIST.

  • Sending the document

form f1.

CALL FUNCTION 'SO_NEW_DOCUMENT_ATT_SEND_API1'

EXPORTING

DOCUMENT_DATA = DOC_CHNG

PUT_IN_OUTBOX = 'X'

COMMIT_WORK = 'X'

  • IMPORTING

  • SENT_TO_ALL = 'X'

*

TABLES

PACKING_LIST = OBJPACK

OBJECT_HEADER = OBJHEAD

CONTENTS_BIN = OBJBIN

CONTENTS_TXT = OBJTXT

RECEIVERS = RECLIST

EXCEPTIONS

TOO_MANY_RECEIVERS = 1

DOCUMENT_NOT_SENT = 2

OPERATION_NO_AUTHORIZATION = 4

OTHERS = 99.

CASE SY-SUBRC.

WHEN 0.

WRITE: / 'Result of the send process:'.

LOOP AT RECLIST.

WRITE: / RECLIST-RECEIVER(48), ':'.

IF RECLIST-RETRN_CODE = 0.

WRITE 'sent successfully'.

ELSE.

WRITE 'not sent'.

ENDIF.

ENDLOOP.

WHEN 1.

WRITE: / 'no authorization to send to the specified number of'.

WHEN 2.

WRITE: / 'document could not be sent to the recipients:',

WA_DATA-USRID.

WHEN 4.

WRITE: / 'no authorization to send !'.

WHEN OTHERS.

WRITE: / 'error occurred during sending !'.

ENDCASE.

*CLEAR OBJTXT.

*CLEAR RECLIST.

endform.

***********************************************************************

  • FORMS *

***********************************************************************

<b>FORM IT_COLLECT_DATA.

LOOP AT IT_PA9973 INTO WA_PA9973.

READ TABLE IT_PA0001 INTO WA_PA0001 WITH KEY PERNR = WA_PA9973-PERNR.

READ TABLE IT_PA0000 INTO WA_PA0000 WITH KEY PERNR = WA_PA9973-PERNR.

READ TABLE IT_PA0041 INTO WA_PA0041 WITH KEY PERNR = WA_PA9973-PERNR.

READ TABLE IT_EMAIL INTO WA_EMAIL WITH KEY PERNR = WA_PA9973-PERNR.

it_RX-PERNR = WA_PA9973-PERNR.

CALL FUNCTION 'CU_READ_RGDIR'

EXPORTING

PERSNR = WA_PA9973-PERNR

  • BUFFER = BUFFER

  • NO_AUTHORITY_CHECK = ' '

IMPORTING

MOLGA = MOLGA

TABLES

IN_RGDIR = IT_RGDIR

  • EXCEPTIONS

  • NO_RECORD_FOUND = 1

.

LOOP AT IT_PA0001A.

CALL FUNCTION 'HR_GB_PERIOD_DATES'

EXPORTING

ABKRS = IT_PA0001A-ABKRS

  • PERMO = PERMO

PABRJ = P_YEAR

PABRP = P_PERIOD

IMPORTING

BEGDA = BEGDA

ENDDA = ENDDA

  • EXCEPTIONS

  • PERIOD_NOT_FOUND = 1

.

LOOP AT IT_RGDIR WHERE FPBEG = BEGDA.

IF SY-SUBRC EQ 0.

it_RX-SEQNO = IT_RGDIR-SEQNR.

APPEND it_RX.

IMPORT RT FROM DATABASE PCL2(RU) ID it_RX.

IF NOT RT[] IS INITIAL.

IMPORT BT FROM DATABASE PCL2(RU) ID it_RX.

IF NOT BT[] IS INITIAL.

LOOP AT RT.

LOOP AT BT WHERE LGART = RT-LGART.

WA_DATA-USRID = WA_EMAIL-USRID.

WA_DATA-SNAME = WA_PA0001-SNAME.

WA_DATA-BEGDA = WA_PA0000-BEGDA.

WA_DATA-DAT01 = WA_PA0041-DAT01.

WA_DATA-BETRG = BT-BETRG.

WA_DATA-ZLSCH = BT-ZLSCH.

WA_DATA-LGART = RT-LGART.

WA_DATA-PERNR = WA_PA9973-PERNR.

WA_DATA-WAERS = BT-WAERS.

APPEND WA_DATA TO IT_DATA.

ENDLOOP.

ENDLOOP.

ENDIF.

ENDIF.

ENDIF.

ENDLOOP.

</b>

ENDLOOP.

ENDLOOP.

ENDFORM.