Application Development 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: 
3 REPLIES 3

Former Member
0 Kudos

Check with below one example :

REPORT ZPETROL_EXCLUDE .

TABLES SSCRFIELDS.

SELECTION-SCREEN BEGIN OF SCREEN 100.

SELECTION-SCREEN SKIP 9.

PARAMETERS NUMBER(200) TYPE C.

SELECTION-SCREEN SKIP 2.

SELECTION-SCREEN:

BEGIN OF LINE,

PUSHBUTTON 2(10) TEXT-001 USER-COMMAND PROC,

END OF LINE.

SELECTION-SCREEN END OF SCREEN 100.

CALL SCREEN 100.

AT SELECTION-SCREEN.

CASE SSCRFIELDS.

WHEN 'PROC'.

SET PARAMETER ID: 'NUM' FIELD NUMBER.

CALL TRANSACTION 'ZP_PALLOWANCE'.

LEAVE TO SCREEN 0.

ENDCASE.

SECOND PRG

**********

REPORT ZPR_PETROL_ALLOWANCE NO STANDARD PAGE

HEADING .

*-- Infotypes

INFOTYPES : 0000, "Actions

0002, "Personal Data

0008. "Basic pay details

*-- Tables

TABLES : PERNR, "Standard Selections for HR Master Data Reporting

PC207, "Payroll Results: Results Table

PCL1, "HR Cluster 1

PCL2, "HR Cluster 2

T510, "Pay scales

T549A, "Payroll areas

T549Q, "Payroll Periods

PA0002. "Personal details

*-- Internal Tables

*-- Internal Table Declaration For Holding The Data

DATA: BEGIN OF INT_PETROL OCCURS 0,

PERNR LIKE PA0008-PERNR, "Personnel Number

TRFST LIKE PA0008-TRFST, "Pay Scale Level

NAME(40), "Name of Employee

PALLOWANCE TYPE P DECIMALS 2, "Petrol Allowance Amount

END OF INT_PETROL.

DATA: BEGIN OF PA0015_DATA OCCURS 0,

PERNR LIKE PA0015-PERNR,

BETRG LIKE PA0015-BETRG,

END OF PA0015_DATA.

DATA:BEGIN OF INT_PETROL2 OCCURS 0,

PERNR LIKE PA0008-PERNR, "Personnel Number

VORNA LIKE PA0002-VORNA, "First Name

NACHN LIKE PA0002-NACHN, "Last Name

TRFST LIKE PA0008-TRFST, "Pay Scale Level

NAME(40), "Name of Employee

PALLOWANCE TYPE P DECIMALS 2, "Petrol Allowance Amount

END OF INT_PETROL2.

DATA : TITLE TYPE LVC_TITLE.

DATA: BEGIN OF PER_NO OCCURS 0,

PERNR LIKE PA0008-PERNR,

TRFST LIKE PA0008-TRFST,

END OF PER_NO.

DATA: BEGIN OF MSG OCCURS 0,

MSG1(100) TYPE C,

END OF MSG.

DATA: FLAG TYPE I VALUE '0',

DIS_FLAG TYPE I VALUE '0'.

DATA: INT_PETROL3 LIKE STANDARD TABLE OF INT_PETROL2 INITIAL SIZE 0

WITH HEADER LINE.

DATA: INT_PETROL1 LIKE STANDARD TABLE OF INT_PETROL INITIAL SIZE 0 WITH

HEADER LINE.

DATA: WA_PET_ALLOWANCE TYPE ZBPETROL_ALL. "WORKAREA FOR INSERTING

VALUES.

*DATA: P_LGART1 LIKE T512T-LGART VALUE '0010'. "CHANGE WAGE TYPE HERE

DATA: P_LGART1 LIKE T512T-LGART VALUE '0077'. "CHANGE WAGE TYPE HERE

DATA: BEGIN OF INT_0015 OCCURS 0,

PERNR(038),

BEGDA(010),

BETRG(018),

END OF INT_0015.

*-- Internal Table To Store Error Records.

DATA: E_INT_0015 LIKE INT_0015 OCCURS 0 WITH HEADER LINE.

*-- Batch Input Data of Single Transaction

DATA: BDCDATA LIKE BDCDATA OCCURS 0 WITH HEADER LINE.

*-- Internal Table For Export and Import Payroll Results

DATA: INT_RGDIR LIKE PC261 OCCURS 0 WITH HEADER LINE,

LGTXT LIKE T512T-LGTXT.

DATA: BEGIN OF EMP_NO OCCURS 0,

PERNR(4) TYPE C,

END OF EMP_NO.

DATA: BEGIN OF EMP_NO1 OCCURS 0,

PERNR TYPE I,

END OF EMP_NO1.

DATA EMPNO LIKE STANDARD TABLE OF EMP_NO INITIAL SIZE 0.

DATA EMPNO1 LIKE STANDARD TABLE OF EMP_NO1 INITIAL SIZE 0 WITH HEADER

LINE.

DATA LEN1 TYPE I.

DATA: ERR LIKE MESSAGE.

DATA TEMP_NUM(200) TYPE C.

*-- Includes

*-- International Include

INCLUDE RPC2CD09. "Cluster CD data definition

INCLUDE RPC2CA00. "Cluster CA Data-Definition

INCLUDE RPPPXD00. "Data Definition buffer PCL1/PCL2 Buffer INCLUDE RPPPXD10.

"Common part buffer PCL1/PCL2 INCLUDE RPPPXM00. "Buffer Handling routine

*-- Country Specific Include

INCLUDE PC2RXIN0. "Cluster IN data definition

INCLUDE RPC2RX09.

*-- ALV Declaration

TYPE-POOLS : SLIS.

DATA: INT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV WITH HEADER LINE,

INT_EVENTS TYPE SLIS_T_EVENT,

INT_LAYOUT TYPE SLIS_LAYOUT_ALV,

WS_EVENTS TYPE SLIS_ALV_EVENT,

WS_REPID LIKE SY-REPID.

*-- Initialization

INITIALIZATION.

WS_REPID = SY-REPID.

*-- At Selection-Screen

START-OF-SELECTION.

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

SELECTION-SCREEN BEGIN OF LINE.

SELECTION-SCREEN COMMENT 1(30) TEXT-002.

SELECTION-SCREEN POSITION 33.

PARAMETERS: P_RATE TYPE P DECIMALS 2.

SELECTION-SCREEN END OF LINE.

SELECTION-SCREEN END OF BLOCK B1.

SELECTION-SCREEN BEGIN OF BLOCK B2 WITH FRAME TITLE TEXT-003.

SELECTION-SCREEN BEGIN OF BLOCK B3.

PARAMETERS: P_UPLOAD AS CHECKBOX,

P_FG RADIOBUTTON GROUP G1,

P_BG RADIOBUTTON GROUP G1.

SELECTION-SCREEN END OF BLOCK B3.

SELECTION-SCREEN BEGIN OF BLOCK B4.

PARAMETERS: P_DI AS CHECKBOX.

SELECTION-SCREEN END OF BLOCK B4.

SELECTION-SCREEN END OF BLOCK B2.

AT SELECTION-SCREEN.

*-- Wate Type Text

SELECT SINGLE LGTXT INTO LGTXT FROM T512T WHERE SPRSL = 'E' AND

MOLGA = '40' AND LGART = P_LGART1 .

*-- Data Retrieval From Logical Database PNP

GET PERNR.

PROVIDE PERNR FROM P0000 VORNA NACHN FROM P0002 BETWEEN PN-BEGDA AND

PN-ENDDA.

INT_PETROL1-PERNR = P0000-PERNR.

CONCATENATE P0002-VORNA P0002-NACHN INTO INT_PETROL1-NAME SEPARATED

BY SPACE.

ENDPROVIDE.

*-- Clear Data

CLEAR: RGDIR, INT_RGDIR.

REFRESH: RGDIR, INT_RGDIR.

*-- Read All The Payroll Runs For An Employee

CD-KEY-PERNR = PERNR-PERNR.

RP-IMP-C2-CU.

CHECK RP-IMP-CD-SUBRC EQ 0.

*-- Clear Data

REFRESH: RT.

  • Read IN Cluster.

LOOP AT RGDIR WHERE FPBEG >= PN-BEGDA AND FPEND <= PN-ENDDA.

MOVE-CORRESPONDING RGDIR TO INT_RGDIR.

APPEND INT_RGDIR.

CLEAR INT_RGDIR.

ENDLOOP.

  • Read the last record.

SORT INT_RGDIR BY SEQNR DESCENDING.

READ TABLE INT_RGDIR INDEX 1.

RX-KEY-SEQNO = INT_RGDIR-SEQNR.

RX-KEY-PERNR = PERNR-PERNR.

RP-IMP-C2-IN.

CHECK RP-IMP-IN-SUBRC EQ 0.

READ TABLE RT WITH KEY LGART = P_LGART1.

IF SY-SUBRC = 0.

INT_PETROL1-PALLOWANCE = RT-BETRG.

ENDIF.

APPEND INT_PETROL1.

CLEAR INT_PETROL1.

SELECT TRFST PERNR

INTO CORRESPONDING FIELDS OF TABLE PER_NO

FROM PA0008

WHERE TRFST LIKE 'L%'

AND BET01 > 0.

SORT PER_NO.

DELETE ADJACENT DUPLICATES FROM PER_NO.

*-- END-OF-SELECTION.

END-OF-SELECTION.

LOOP AT INT_PETROL1.

READ TABLE PER_NO WITH KEY PERNR = INT_PETROL1-PERNR.

IF SY-SUBRC = 0.

INT_PETROL-TRFST = PER_NO-TRFST.

MODIFY INT_PETROL1 FROM INT_PETROL TRANSPORTING TRFST.

ENDIF.

ENDLOOP.

SORT INT_PETROL1.

DELETE ADJACENT DUPLICATES FROM INT_PETROL1.

CONCATENATE 'From' ' : ' PN-BEGDA6(2) '.' PN-BEGDA4(2) '.' PN-

BEGDA+0(4)

' To' ' : ' PN-ENDDA6(2) '.' PN-ENDDA4(2) '.' PN-ENDDA+0(4)

INTO TITLE.

IF P_DI = 'X'. "TO DISPLAY PETROL ALLOWANCE ONLY

IF PNPTIMRA = 'X'. "CHECK OTHER PERIOD CHECKED

DIS_FLAG = 1.

ENDIF.

IF PNPTIMR9 = 'X'. "CHECK TO SEE CURRENT PERIOD SELECTED

  • CASES - NO RATE GIVEN, RATE GIVEN

  • CURRENT PERIOD UPLOADED BUT PAYROLL NOT WRITTEN SO NO RESULT FROM LDB

SELECT RATE INTO P_RATE FROM ZBPETROL_ALL WHERE BEGDA = PN- BEGDA AND ENDDA = PN-ENDDA.

ENDSELECT.

IF SY-DBCNT = 0.

MESSAGE I455(0) WITH 'NO PETROL RATE EXSISTS'.

ELSE.

FLAG = 1.

ENDIF. "OF SY-DBCNT

IF P_RATE > 0 AND FLAG = 1. " PETROL RATE EXSISTS.

SELECT PERNR SUM( BETRG ) INTO TABLE PA0015_DATA

FROM PA0015

WHERE BEGDA BETWEEN PN-BEGDA AND PN-ENDDA

GROUP BY PERNR.

SELECT APERNR ATRFST BVORNA BNACHN

INTO CORRESPONDING FIELDS OF TABLE INT_PETROL3

FROM PA0008 AS A

INNER JOIN PA0002 AS B ON BPERNR = APERNR

WHERE A~TRFST LIKE 'L%'

AND A~BET01 > 0.

SORT INT_PETROL3.

DELETE ADJACENT DUPLICATES FROM INT_PETROL3.

REFRESH INT_PETROL1.

LOOP AT INT_PETROL3 INTO INT_PETROL2. "loop to transport

employee name

CONCATENATE INT_PETROL2-VORNA INT_PETROL2-NACHN INTO

INT_PETROL2-NAME SEPARATED BY SPACE.

MODIFY INT_PETROL3 FROM INT_PETROL2 TRANSPORTING NAME.

ENDLOOP.

LOOP AT INT_PETROL3 INTO INT_PETROL2. "loop to transport

one

table to another table

READ TABLE PA0015_DATA WITH KEY PERNR = INT_PETROL2-PERNR.

IF SY-SUBRC = 0.

INT_PETROL-PERNR = INT_PETROL2-PERNR.

INT_PETROL-TRFST = INT_PETROL2-TRFST.

INT_PETROL-NAME = INT_PETROL2-NAME.

INT_PETROL-PALLOWANCE = PA0015_DATA-BETRG.

APPEND INT_PETROL TO INT_PETROL1.

ENDIF.

ENDLOOP.

DIS_FLAG = 1.

ENDIF. "P_RATE > 0 AND FLAG = 1.

IF P_RATE > 0 AND FLAG = 0. "CURRENT PERIOD AND DATA NOT UPLOADED

SELECT APERNR ATRFST BVORNA BNACHN

INTO CORRESPONDING FIELDS OF TABLE INT_PETROL3

FROM PA0008 AS A

INNER JOIN PA0002 AS B ON BPERNR = APERNR

WHERE A~TRFST LIKE 'L%'

AND A~BET01 > 0.

SORT INT_PETROL3.

DELETE ADJACENT DUPLICATES FROM INT_PETROL3.

REFRESH INT_PETROL1.

LOOP AT INT_PETROL3 INTO INT_PETROL2. "loop to transport

employee name

CONCATENATE INT_PETROL2-VORNA INT_PETROL2-NACHN INTO

INT_PETROL2-NAME SEPARATED BY SPACE.

MODIFY INT_PETROL3 FROM INT_PETROL2 TRANSPORTING NAME.

ENDLOOP.

PERFORM GET_VALUE. "TO CONVERT THE FIRST SCREEN PERNR INTO

NUMBER FORMATE

LOOP AT INT_PETROL3 INTO INT_PETROL2. "loop to transport

one

table to another table

READ TABLE EMPNO1 WITH KEY PERNR = INT_PETROL2-PERNR.

IF SY-SUBRC <> 0.

INT_PETROL-PERNR = INT_PETROL2-PERNR.

INT_PETROL-TRFST = INT_PETROL2-TRFST.

INT_PETROL-NAME = INT_PETROL2-NAME.

APPEND INT_PETROL TO INT_PETROL1.

ENDIF.

ENDLOOP.

PERFORM CAL_ALLOWANCE.

ENDIF. " OF P_RATE > 0

DIS_FLAG = 1.

ENDIF. " OF CURRENT PERIOD CHECK.

ENDIF. " OF CHECK DISPLAY.

*----BDC

IF P_UPLOAD = 'X'.

IF PNPTIMRA = 'X'. "CHECK OTHER PERIOD CHECKED

MESSAGE I455(0) WITH 'Petrol Allowance cannot be uploaded'.

LEAVE SCREEN.

ENDIF.

IF P_RATE > 0.

  • IF P_RATE > 0 OR P_RATE = 0.

IF PNPTIMR9 = 'X'. "CHECK TO SEE CURRENT PERIOD SELECTED

WA_PET_ALLOWANCE-BEGDA = PN-BEGDA.

WA_PET_ALLOWANCE-ENDDA = PN-ENDDA.

WA_PET_ALLOWANCE-RATE = P_RATE.

WA_PET_ALLOWANCE-CURR = 'INR'.

INSERT INTO ZBPETROL_ALL VALUES WA_PET_ALLOWANCE.

SELECT A~PERNR A~TRFST B~VORNA B~NACHN

INTO CORRESPONDING FIELDS OF TABLE INT_PETROL3

FROM PA0008 AS A

INNER JOIN PA0002 AS B ON B~PERNR = A~PERNR

WHERE A~TRFST IN ('L1' , 'L2' , 'L3')

AND A~BET01 > 0.

SORT INT_PETROL3.

DELETE ADJACENT DUPLICATES FROM INT_PETROL3.

REFRESH INT_PETROL1.

LOOP AT INT_PETROL3 INTO INT_PETROL2. "loop to transport

employee name

CONCATENATE INT_PETROL2-VORNA INT_PETROL2-NACHN INTO

INT_PETROL2-NAME SEPARATED BY SPACE.

MODIFY INT_PETROL3 FROM INT_PETROL2 TRANSPORTING NAME.

ENDLOOP.

PERFORM GET_VALUE. "TO CONVERT THE FIRST SCREEN PERNR INTO

NUMBER FORMATE

LOOP AT INT_PETROL3 INTO INT_PETROL2. "loop to transport

one

table to another table

READ TABLE EMPNO1 WITH KEY PERNR = INT_PETROL2-PERNR.

IF SY-SUBRC <> 0.

INT_PETROL-PERNR = INT_PETROL2-PERNR.

INT_PETROL-TRFST = INT_PETROL2-TRFST.

INT_PETROL-NAME = INT_PETROL2-NAME.

APPEND INT_PETROL TO INT_PETROL1.

ENDIF.

ENDLOOP.

PERFORM CAL_ALLOWANCE.

DIS_FLAG = 1.

SORT INT_PETROL1.

LOOP AT INT_PETROL1.

MOVE: INT_PETROL1-PERNR TO INT_0015-PERNR,

INT_PETROL1-PALLOWANCE TO INT_0015-BETRG.

CONCATENATE PN-ENDDA6(2) PN-ENDDA4(2) PN-ENDDA+0(4) INTO

INT_0015-BEGDA SEPARATED BY '.'.

APPEND INT_0015.

CLEAR INT_0015.

ENDLOOP.

LOOP AT INT_0015.

PERFORM F_BDCDATA.

IF P_FG = 'X'.

CALL TRANSACTION 'PA30' USING BDCDATA MODE 'A' UPDATE 'S'.

ELSE.

CALL TRANSACTION 'PA30' USING BDCDATA MODE 'N' UPDATE 'S'.

ENDIF.

*-- Handling Error records.

IF SY-SUBRC <> 0.

*-- Handling Error Messages

PERFORM ERROR_MSG.

MOVE-CORRESPONDING INT_0015 TO E_INT_0015.

APPEND E_INT_0015.

CLEAR E_INT_0015.

ENDIF.

REFRESH BDCDATA.

ENDLOOP.

*-- Downloading Error Records.

CALL FUNCTION 'GUI_DOWNLOAD'

EXPORTING

FILENAME = 'C:\Errors.Txt'

FILETYPE = 'ASC'

TABLES

DATA_TAB = E_INT_0015.

*-- Downloading Error Messages.

CALL FUNCTION 'GUI_DOWNLOAD'

EXPORTING

FILENAME = 'C:\Err_Msg.Txt'

FILETYPE = 'ASC'

TABLES

DATA_TAB = MSG.

ENDIF. " FOR CURRENT PERIOD

  • ENDIF.

ELSE.

MESSAGE I455(0) WITH 'Enter Petrol Rate'.

LEAVE TO SCREEN 0.

ENDIF. " FOR PETROL RATE

ENDIF. " FOR UPLOAD

IF DIS_FLAG = 1.

INT_LAYOUT-SUBTOTALS_TEXT = TEXT-004.

INT_LAYOUT-TOTALS_TEXT = TEXT-004.

INT_LAYOUT-ZEBRA = 'X'.

PERFORM FILL_FIELDCAT.

PERFORM GET_EVENTS_ALV.

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'

EXPORTING

I_CALLBACK_PROGRAM = WS_REPID

IS_LAYOUT = INT_LAYOUT

IT_FIELDCAT = INT_FIELDCAT[]

I_DEFAULT = 'X'

I_SAVE = 'X'

IT_EVENTS = INT_EVENTS

TABLES

T_OUTTAB = INT_PETROL1

EXCEPTIONS

PROGRAM_ERROR = 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.

ENDIF.

*&----


-


*

*& Form GET_VALUE

*&----


-


*

  • text

*----


-


*

FORM GET_VALUE.

GET PARAMETER ID: 'NUM' FIELD TEMP_NUM.

IF TEMP_NUM <> ''.

LEN1 = STRLEN( TEMP_NUM ).

PERFORM GET_PERNR.

APPEND TEMP_NUM TO EMPNO.

LOOP AT EMPNO INTO EMP_NO.

CALL FUNCTION 'CHECK_AND_CONVERT_NUMERICS'

EXPORTING

  • DFELD = ' '

DMZEI = ','

DTYPE = 'STRING'

  • DYPNO = ' '

EFELD = EMP_NO-PERNR

  • FNAME = ' '

  • PROGR = ' '

  • IMP_DECIMALS = '0'

IMPORTING

  • ERROR =

IFELD = EMP_NO1-PERNR

MESSG = ERR

  • MSGLN =

.

IF ( ERR-MSGID = '' ).

APPEND EMP_NO1 TO EMPNO1.

CLEAR EMP_NO1-PERNR.

ELSE.

MESSAGE I455(0) WITH 'Could not convert employee number'.

LEAVE TO SCREEN 0.

ENDIF.

ENDLOOP.

ENDIF.

ENDFORM. "GET_VALUE

*&----


-


*

*& Form GET_PERNR

*&----


-


*

  • text

*----


-


*

FORM GET_PERNR.

SPLIT TEMP_NUM AT ',' INTO EMP_NO TEMP_NUM.

APPEND EMP_NO TO EMPNO.

CLEAR EMP_NO.

SEARCH TEMP_NUM FOR ','.

IF SY-SUBRC = 0.

PERFORM GET_PERNR.

ENDIF.

ENDFORM. "GET_PERNR

*&----


-


*

*& Form ERROR_MSG

*&----


-


*

  • text

*----


-


*

  • --> p1 text

  • <-- p2 text

*----


-


*

FORM ERROR_MSG.

IF SY-SUBRC <> 0.

CALL FUNCTION 'FORMAT_MESSAGE'

EXPORTING

LANG = SY-LANGU

IMPORTING

MSG = MSG-MSG1.

APPEND MSG.

CLEAR MSG.

ENDIF.

ENDFORM. "ERROR_MSG

*&----


-


*

*& Form F_BDCDATA

*&----


-


*

  • text

*----


-


*

FORM F_BDCDATA.

PERFORM BDC_DYNPRO USING 'SAPMP50A' '1000'.

PERFORM BDC_FIELD USING 'BDC_OKCODE'

'=INS'.

PERFORM BDC_FIELD USING 'RP50G-PERNR'

INT_0015-PERNR.

PERFORM BDC_FIELD USING 'RP50G-TIMR6'

'X'.

PERFORM BDC_FIELD USING 'BDC_CURSOR'

'RP50G-CHOIC'.

PERFORM BDC_FIELD USING 'RP50G-CHOIC'

'0015'.

PERFORM BDC_DYNPRO USING 'MP001500' '2000'.

PERFORM BDC_FIELD USING 'BDC_CURSOR'

'Q0015-BETRG'.

PERFORM BDC_FIELD USING 'BDC_OKCODE'

'/00'.

PERFORM BDC_FIELD USING 'P0015-LGART'

'0077'. "CHANGE WAGE TYPE HERE

ALSO

PERFORM BDC_FIELD USING 'Q0015-BETRG'

INT_0015-BETRG.

PERFORM BDC_FIELD USING 'P0015-WAERS'

'INR'.

PERFORM BDC_FIELD USING 'P0015-BEGDA'

INT_0015-BEGDA.

PERFORM BDC_DYNPRO USING 'MP001500' '2000'.

PERFORM BDC_FIELD USING 'BDC_CURSOR'

'P0015-LGART'.

PERFORM BDC_FIELD USING 'BDC_OKCODE'

'=UPD'.

PERFORM BDC_FIELD USING 'P0015-LGART'

'0077'. "CHANGE WAGE TYPE HERE

ALSO

PERFORM BDC_FIELD USING 'Q0015-BETRG'

INT_0015-BETRG.

PERFORM BDC_FIELD USING 'P0015-WAERS'

'INR'.

PERFORM BDC_FIELD USING 'P0015-BEGDA'

INT_0015-BEGDA.

ENDFORM. "F_BDCDATA

*&----


-


*

*& Form BDC_DYNPRO

*&----


-


*

  • text

*----


-


*

  • -->P_0732 text

  • -->P_0733 text

*----


-


*

FORM BDC_DYNPRO USING VALUE(P_0732) TYPE C

VALUE(P_0733) TYPE C.

CLEAR BDCDATA.

BDCDATA-PROGRAM = P_0732.

BDCDATA-DYNPRO = P_0733.

BDCDATA-DYNBEGIN = 'X'.

APPEND BDCDATA.

ENDFORM. " BDC_DYNPRO

*&----


-


*

*& Form BDC_FIELD

*&----


-


*

  • text

*----


-


*

  • -->P_0755 text

  • -->P_0756 text

*----


-


*

FORM BDC_FIELD USING VALUE(P_0755) TYPE C

VALUE(P_0756) TYPE C.

CLEAR BDCDATA.

BDCDATA-FNAM = P_0755.

BDCDATA-FVAL = P_0756.

APPEND BDCDATA.

ENDFORM. " BDC_FIELD

*&----


-


*

*& Form CAL_ALLOWANCE

*&----


-


*

  • text

*----


-


*

FORM CAL_ALLOWANCE.

LOOP AT INT_PETROL1 INTO INT_PETROL.

IF INT_PETROL-TRFST = 'L1'.

INT_PETROL-PALLOWANCE = P_RATE * 100. "CHANGE TO SELECT WHEN

DISPLAY

ELSEIF INT_PETROL-TRFST = 'L2'.

INT_PETROL-PALLOWANCE = P_RATE * 150.

ELSEIF INT_PETROL-TRFST = 'L3'.

INT_PETROL-PALLOWANCE = P_RATE * 150.

ELSEIF INT_PETROL-TRFST = 'L4'.

  • INT_PETROL-PALLOWANCE = P_RATE * 200.

ELSEIF INT_PETROL-TRFST = 'L5'.

  • INT_PETROL-PALLOWANCE = P_RATE * 250.

ENDIF.

MODIFY INT_PETROL1 FROM INT_PETROL TRANSPORTING PALLOWANCE.

ENDLOOP.

ENDFORM. "CAL_ALLOWANCE

*&----


-


*

*& Form FILL_FIELDCAT

*&----


-


*

  • text

*----


-


*

  • --> p1 text

  • <-- p2 text

*----


-


*

FORM FILL_FIELDCAT.

INT_FIELDCAT-COL_POS = 1.

INT_FIELDCAT-TABNAME = 'INT_PETROL1'.

INT_FIELDCAT-FIELDNAME = 'PERNR'.

INT_FIELDCAT-SELTEXT_L = TEXT-005.

INT_FIELDCAT-OUTPUTLEN = 10.

INT_FIELDCAT-KEY = 'X'.

APPEND INT_FIELDCAT.

CLEAR INT_FIELDCAT.

INT_FIELDCAT-COL_POS = 2.

INT_FIELDCAT-TABNAME = 'INT_PETROL1'.

INT_FIELDCAT-FIELDNAME = 'NAME'.

INT_FIELDCAT-SELTEXT_L = TEXT-006.

INT_FIELDCAT-OUTPUTLEN = 25.

INT_FIELDCAT-KEY = 'X'.

APPEND INT_FIELDCAT.

CLEAR INT_FIELDCAT.

INT_FIELDCAT-COL_POS = 3.

INT_FIELDCAT-TABNAME = 'INT_PETROL1'.

INT_FIELDCAT-FIELDNAME = 'TRFST'.

INT_FIELDCAT-SELTEXT_L = TEXT-007.

INT_FIELDCAT-OUTPUTLEN = 5.

INT_FIELDCAT-KEY = 'X'.

APPEND INT_FIELDCAT.

CLEAR INT_FIELDCAT.

INT_FIELDCAT-COL_POS = 4.

INT_FIELDCAT-TABNAME = 'INT_PETROL1'.

INT_FIELDCAT-FIELDNAME = 'PALLOWANCE'.

INT_FIELDCAT-SELTEXT_L = TEXT-008.

INT_FIELDCAT-OUTPUTLEN = 16.

INT_FIELDCAT-KEY = 'X'.

APPEND INT_FIELDCAT.

CLEAR INT_FIELDCAT.

ENDFORM. " FILL_FIELDCAT

*&----


-


*

*& Form GET_EVENTS_ALV

*&----


-


*

  • text

*----


-


*

  • --> p1 text

  • <-- p2 text

*----


-


*

FORM GET_EVENTS_ALV.

CALL FUNCTION 'REUSE_ALV_EVENTS_GET'

EXPORTING

I_LIST_TYPE = 1

IMPORTING

ET_EVENTS = INT_EVENTS[]

EXCEPTIONS

LIST_TYPE_WRONG = 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.

READ TABLE INT_EVENTS INTO WS_EVENTS WITH KEY NAME =

SLIS_EV_TOP_OF_PAGE.

IF SY-SUBRC = 0.

WS_EVENTS-FORM = 'TOP'.

MODIFY INT_EVENTS FROM WS_EVENTS INDEX SY-TABIX.

ENDIF.

ENDFORM. " GET_EVENTS_ALV

*&----


-


*

*& Form TOP-OF-PAGE

*&----


-


*

  • text

*----


-


*

FORM TOP.

*-- ALV Declarations

DATA: WS_HEADER TYPE SLIS_T_LISTHEADER,

WA_HEADER TYPE SLIS_LISTHEADER.

*-- Title

WA_HEADER-TYP = 'H'.

WA_HEADER-INFO = TEXT-009.

APPEND WA_HEADER TO WS_HEADER.

CLEAR WA_HEADER.

WA_HEADER-TYP = 'H'.

WA_HEADER-INFO = TITLE.

APPEND WA_HEADER TO WS_HEADER.

CLEAR WA_HEADER.

WA_HEADER-TYP = 'H'.

WA_HEADER-INFO = ' '.

APPEND WA_HEADER TO WS_HEADER.

CLEAR WA_HEADER.

WA_HEADER-TYP = 'H'.

WA_HEADER-INFO = ' '.

APPEND WA_HEADER TO WS_HEADER.

CLEAR WA_HEADER.

CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'

EXPORTING

IT_LIST_COMMENTARY = WS_HEADER

I_LOGO = 'LOGO'.

ENDFORM. "TOP-OF-PAGE

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

HR deals with the INFOTYPES which are similar to Tables in General ABAP.

There are different ways of fetching data from these infotypes.

There are different areas in HR LIKE Personal Admn, Orgn Management, Benefits, Time amangement, Event Management, Payroll etc

Infotypes for these areas are different from one another area.

storing of records data in each type of area is different

LDBS like PNP are used in HR programing.

Instead of Select.. we use some ROUTINES and PROVIDE..ENDPROVIDE.. etc

and in the case of Pay roll we use Clusters and we Import and Export them for data fetching.

On the whole Normal ABAP is different from HR abap.

For Personal Admn the Infotypes start with PA0000 to PA1999

Time Related Infotypes start with PA2000 to PA2999.

Orgn related Infotypes start with HRP1000 to HRP1999.

All custom developed infotypes stsrat with PA9000 onwards.

In payroll processing we use Clusters like PCL1,2,3 and 4.

Instead of Select query we use PROVIDE and ENDPROVIDE..

You have to assign a Logical Database in the attributes PNP.

Go through the SAp doc for HR programming and start doing.

http://www.sapdevelopment.co.uk/hr/hrhome.htm

See:

http://help.sap.com/saphelp_46c/helpdata/en/4f/d5268a575e11d189270000e8322f96/content.htm

sites regarding hr-abap:

http://www.sapdevelopment.co.uk/hr/hrhome.htm

http://help.sap.com/printdocu/core/Print46c/en/data/pdf/PAPA/PAPA.pdf

http://help.sap.com/printdocu/core/Print46c/en/data/pdf/PAPD/PAPD.pdf

http://help.sap.com/printdocu/core/Print46c/en/data/pdf/PYINT/PYINT_BASICS.pdf

http://www.atomhr.com/training/Technical_Topics_in_HR.htm

http://www.planetsap.com/hr_abap_main_page.htm

You can see some Standard Program examples in this one ...

http://www.sapdevelopment.co.uk/programs/programshr.htm

http://searchsap.techtarget.com/originalContent/0,289142,sid21_gci1030179,00.html?Offer=SAlgwn12604#...

http://www.erpgenie.com/faq/hr.htm.

http://www.planetsap.com/hr_abap_main_page.htm

http://www.sapbrain.com/TUTORIALS/FUNCTIONAL/HR_tutorial.html

These are the FAQ's that might helps you as well.

http://www.sap-img.com/human/hr-faq.htm

http://www.sapgenie.com/faq/hr.htm

http://www.planetsap.com/hr_abap_main_page.htm

http://www.atomhr.com/library_full.htm

HR Long texts Upload

Look at the below link

Please refer to the following sample program for accessing PCH LDB.

For concept to start with refer url:

http://www.sap-press.de/download/dateien/860/sappress_mysap_hr_technical_principles2.pdf

It contains info regarding PCH Reporting.

REPORT zhsol010.

TABLES: objec, gdstr.

INFOTYPES: 0002, 0006, 1003.

DATA: stabs LIKE p1003-stabs,

name LIKE p0001-ename.

INITIALIZATION.

pchotype = 'O'.

pchwegid = 'O-S-P'.

GET objec.

IF objec-otype = 'S'.

CLEAR stabs.

LOOP AT p1003 WHERE begda LE pc-endda

AND endda GE pc-begda.

IF p1003-stabs = 'X'.

stabs = 'X'.

WRITE : / objec-objid, objec-short, objec-stext.

ENDIF.

ENDLOOP.

ENDIF.

IF objec-otype = 'P' AND stabs = 'X'.

PROVIDE vorna nachn FROM p0002

subty telnr FROM p0006

BETWEEN pc-begda and pc-endda

WHERE p0006-subty = '1'.

IF p0006_valid = 'X'.

CONCATENATE p0002-vorna p0002-nachn INTO name

SEPARATED BY space.

WRITE: / name, p0006-telnr.

SKIP.

ENDIF.

ENDPROVIDE.

ENDIF.

sample code:

REPORT zpwtest .

TABLES : t001 .

TYPE-POOLS slis .

DATA : t_t001 TYPE TABLE OF t001 ,

t_abaplist TYPE TABLE OF abaplist .

DATA : w_abaplist TYPE abaplist .

SELECT-OPTIONS : s_bukrs FOR t001-bukrs OBLIGATORY .

PARAMETERS : p_list TYPE c NO-DISPLAY .

START-OF-SELECTION .

IF sy-batch = 'X' AND p_list IS INITIAL .

  • Submit report and get list in memory

SUBMIT zpwtest EXPORTING LIST TO MEMORY

WITH s_bukrs IN s_bukrs

WITH p_list = 'X'

AND RETURN.

  • Get the list from memory.

CALL FUNCTION 'LIST_FROM_MEMORY'

TABLES

listobject = t_abaplist

EXCEPTIONS

not_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.

  • Send report to mail receipent

PERFORM send_mail .

ELSE.

PERFORM select_data .

PERFORM display_data .

ENDIF.

*SO_NEW_DOCUMENT_SEND_API1

&----


*& Form select_data

&----


FORM select_data.

SELECT *

INTO TABLE t_t001

FROM t001

WHERE bukrs IN s_bukrs .

ENDFORM. " select_data

&----


*& Form display_data

&----


FORM display_data.

CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'

EXPORTING

i_structure_name = 'T001'

TABLES

t_outtab = t_t001

EXCEPTIONS

program_error = 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.

ENDFORM. " display_data

&----


*& Form send_mail

&----


FORM send_mail.

DATA: message_content LIKE soli OCCURS 10 WITH HEADER LINE,

receiver_list LIKE soos1 OCCURS 5 WITH HEADER LINE,

packing_list LIKE soxpl OCCURS 2 WITH HEADER LINE,

listobject LIKE abaplist OCCURS 10,

compressed_attachment LIKE soli OCCURS 100 WITH HEADER LINE,

w_object_hd_change LIKE sood1,

compressed_size LIKE sy-index.

  • Fot external email id

  • receiver_list-recextnam = 'XXXXXXXXXXXX@XXXXXX.COM'.

  • receiver_list-recesc = 'E'.

  • receiver_list-sndart = 'INT'.

  • receiver_list-sndpri = '1'.

  • FOr internal email id

receiver_list-recnam = sy-uname .

receiver_list-esc_des = 'B'.

APPEND receiver_list.

  • General data

w_object_hd_change-objla = sy-langu.

w_object_hd_change-objnam = 'Object name'.

w_object_hd_change-objsns = 'P'.

  • Mail subject

w_object_hd_change-objdes = 'Message subject'.

  • Mail body

APPEND 'Message content' TO message_content.

CALL FUNCTION 'TABLE_COMPRESS'

IMPORTING

compressed_size = compressed_size

TABLES

in = t_abaplist

out = compressed_attachment.

DESCRIBE TABLE compressed_attachment.

CLEAR packing_list.

packing_list-transf_bin = 'X'.

packing_list-head_start = 0.

packing_list-head_num = 0.

packing_list-body_start = 1.

packing_list-body_num = sy-tfill.

packing_list-objtp = 'ALI'.

packing_list-objnam = 'Object name'.

packing_list-objdes = 'Attachment description'.

packing_list-objlen = compressed_size.

APPEND packing_list.

CALL FUNCTION 'SO_OBJECT_SEND'

EXPORTING

object_hd_change = w_object_hd_change

object_type = 'RAW'

owner = sy-uname

TABLES

objcont = message_content

receivers = receiver_list

packing_list = packing_list

att_cont = compressed_attachment.

ENDFORM. " send_mail

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

Check this links,

https://forums.sdn.sap.com/click.jspa?searchID=4564732&messageID=3009173

https://forums.sdn.sap.com/click.jspa?searchID=4564732&messageID=2198920

https://forums.sdn.sap.com/click.jspa?searchID=4564732&messageID=1714842

https://forums.sdn.sap.com/click.jspa?searchID=4564732&messageID=2232979

Regards

vasu