Académique Documents
Professionnel Documents
Culture Documents
allowance and the other program gives the petrol allowance to employees.
FIRST PRG ********* 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, PC207, PCL1, PCL2, T510, T549A, T549Q, PA0002. "Standard Selections for HR Master Data Reporting "Payroll Results: Results Table "HR Cluster 1 "HR Cluster 2 "Pay scales "Payroll areas "Payroll Periods "Personal details
*-- Internal Tables *-- Internal Table Declaration For Holding The Data
DATA: BEGIN OF INT_PETROL OCCURS 0, PERNR LIKE PA0008-PERNR, TRFST LIKE PA0008-TRFST, NAME(40), PALLOWANCE TYPE P DECIMALS 2, END OF INT_PETROL. DATA: BEGIN OF PA0015_DATA OCCURS 0, PERNR LIKE PA0015-PERNR, BETRG LIKE PA0015-BETRG, END OF PA0015_DATA.
"Personnel Number "Pay Scale Level "Name of Employee "Petrol Allowance Amount
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. VALUES. "WORKAREA FOR INSERTING
*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-BEGDA+6(2) '.' PN-BEGDA+4(2) '.' PNBEGDA+0(4) ' To' ' : ' PN-ENDDA+6(2) '.' PN-ENDDA+4(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 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 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 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 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. NUMBER FORMATE "TO CONVERT THE FIRST SCREEN PERNR INTO
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-ENDDA+6(2) PN-ENDDA+4(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 DYPNO EFELD FNAME PROGR IMP_DECIMALS IMPORTING ERROR IFELD MESSG MSGLN
= ' ' = ',' = 'STRING' = ' ' = EMP_NO-PERNR = ' ' = ' ' = '0' = = EMP_NO1-PERNR = ERR =
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 PERFORM BDC_FIELD PERFORM BDC_FIELD PERFORM BDC_FIELD PERFORM BDC_FIELD PERFORM BDC_FIELD PERFORM BDC_DYNPRO PERFORM BDC_FIELD PERFORM BDC_FIELD PERFORM BDC_FIELD ALSO PERFORM BDC_FIELD PERFORM BDC_FIELD PERFORM BDC_FIELD PERFORM BDC_DYNPRO PERFORM BDC_FIELD PERFORM BDC_FIELD PERFORM BDC_FIELD ALSO USING 'SAPMP50A' '1000'. USING 'BDC_OKCODE' '=INS'. USING 'RP50G-PERNR' INT_0015-PERNR. USING 'RP50G-TIMR6' 'X'. USING 'BDC_CURSOR' 'RP50G-CHOIC'. USING 'RP50G-CHOIC' '0015'. USING 'MP001500' '2000'. USING 'BDC_CURSOR' 'Q0015-BETRG'. USING 'BDC_OKCODE' '/00'. USING 'P0015-LGART' '0077'. "CHANGE WAGE TYPE HERE USING 'Q0015-BETRG' INT_0015-BETRG. USING 'P0015-WAERS' 'INR'. USING 'P0015-BEGDA' INT_0015-BEGDA. USING 'MP001500' '2000'. USING 'BDC_CURSOR' 'P0015-LGART'. USING 'BDC_OKCODE' '=UPD'. USING 'P0015-LGART' '0077'. "CHANGE WAGE TYPE HERE
USING 'Q0015-BETRG' INT_0015-BETRG. USING 'P0015-WAERS' 'INR'. USING 'P0015-BEGDA' INT_0015-BEGDA. "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
* 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
*&-------------------------------------------------------------------* * 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