Monday, November 5, 2007

Interactive Report with OLE

REPORT Z_PM_ELE_PERMIT_TO_WRK NO STANDARD PAGE HEADING
MESSAGE-ID Z_MSGCLASS " Message class
LINE-SIZE 132. " Width of Report display
************************************************************************
* Report Name : Z_PM_RP_ELE_PERMIT_TO_WORK *
* Description : Plant Maintanence: Electrical Permit To Work *
* This report displays the following: *
* 1)Description of plant *
* 2)Work to be carried out *
* 3)Details of plant isolation and safety precaution*
* 4)Safety & Fire Manager *
* 5)General Manager *
* 6)Earths Applied *
* 7)Special Precautions to be taken *
* 8)Authorisation *
* 9)Reciept *
* 10)Detail of Work Completed *
* 11)Clearance *
* 12)Cancellation *
* based on Order No.Planning Plant & Requsted Date *
* *
* *
* Functional : *
* Developer : *
* Development class : *
************************************************************************
*----------------------------------------------------------------------*
* Request No. Created Date Developer name *
*----------------------------------------------------------------------*
* LD1K900757 21/03/2006 Harini.S
*----------------------------------------------------------------------*

*----------------------------------------------------------------------*
* INCLUDES *
*----------------------------------------------------------------------*
INCLUDE .
*----------------------------------------------------------------------*
* DATABASE TABLES *
*----------------------------------------------------------------------*
TABLES: AUFK, " Order master data
T357G, " Permits
ZPMPERMITS. " PM Permits Log
*---------------------------------------------------------------------*
* INTERNAL TABLE DECLARATION *
*---------------------------------------------------------------------*
*---- Internal table to hold PM Permits Log 'ZPMPERMITS'
DATA: IT_PERMITS LIKE ZPMPERMITS OCCURS 0 WITH HEADER LINE,
*---- Internal table to hold Permit conditions from ZMNTTEXT
IT_MNTTEXT LIKE ZMNTTEXT OCCURS 0 WITH HEADER LINE.

*---- Internal table to hold Maintenance Order Header Data 'AFIH'
DATA: BEGIN OF IT_AFIH OCCURS 10,
AUFNR LIKE AFIH-AUFNR, " Order Number(WO NO)
EQUNR LIKE AFIH-EQUNR, " Equipment number
ILOAN LIKE AFIH-ILOAN, " Location and acct assignment for tech obj
QMNUM LIKE AFIH-QMNUM, " Notification Number(WR No)
END OF IT_AFIH.

*---- Internal table to hold Equipment Short Texts
DATA: BEGIN OF IT_EQKT OCCURS 0,
EQUNR LIKE EQKT-EQUNR, " Equipment number
EQKTX LIKE EQKT-EQKTX, " Description of technical object
END OF IT_EQKT.

*---- Internal table to hold Text for Table 357GT
DATA : BEGIN OF IT_T357G_T OCCURS 0,
PMSOG LIKE T357G_T-PMSOG, " Permit Key
GNTXT LIKE T357G_T-GNTXT, " Short Text for Permit
END OF IT_T357G_T.

*--- Internal table to hold texts
DATA: IT_TLINE LIKE TLINE OCCURS 0 WITH HEADER LINE.

*------Internal table to hold Functional Location
DATA : BEGIN OF IT_ILOA OCCURS 0,
ILOAN LIKE ILOA-ILOAN, " Location and acc assignment for tec obj
TPLNR LIKE ILOA-TPLNR, " Functional Location
END OF IT_ILOA.

*------ Internal table to hold Functional Location: Short Texts
DATA : BEGIN OF IT_IFLOTX OCCURS 0,
TPLNR LIKE IFLOTX-TPLNR, " Functional Location
PLTXT LIKE IFLOTX-PLTXT, " Desc of functional location
END OF IT_IFLOTX.

*--- Internal table to hold texts for splitting
DATA: BEGIN OF IT_TEXT OCCURS 0,
TEXT(132), " Text
END OF IT_TEXT.

*--- Internal table to hold split texts
DATA: BEGIN OF IT_RTEXT OCCURS 0,
TEXT(132), " Text
END OF IT_RTEXT.
*---------------------------------------------------------------------*
* GLOBAL VARIABLE DECLARATION *
*---------------------------------------------------------------------*
DATA: V_MESG TYPE STRING, " Message
V_NAME LIKE THEAD-TDNAME, " Field Name
V_ID LIKE THEAD-TDID, " Text ID
V_FIELD(30), " Field
V_AUFNR LIKE ZPMPERMITS-AUFNR, " Object No
V_PMSOG LIKE ZPMPERMITS-PMSOG. " Permit Key

*---- Variables used to display the Report footer
DATA: V_FOOT1(125) TYPE C, " Footer String1
V_FOOT2(125) TYPE C. " Footer String2

*---- Variables used for Excel file download
DATA: V_SOURCE_FILE TYPE RLGRAP-FILENAME VALUE 'C:\SAMPLE1.XLS',
V_DESTINATION_FILE TYPE RLGRAP-FILENAME, " File Name
V_TITLE LIKE SPOP-TITEL, " File Path
V_DESC(132) TYPE C. " Description of Plant

*--- Variables used for Long Text Splitting
DATA: V_LEN TYPE I, " Variable Length
V_LEN1 TYPE I, " Var Length
V_LN TYPE I,
V_TEXT(132), " Text
V_TXT(132), " Text
V_OFFSET1 TYPE I, " Offset
V_OFFSET TYPE I. " Offset
*---------------------------------------------------------------------*
* FLAGS *
*---------------------------------------------------------------------*
DATA : F_STOP.

*---------------------------------------------------------------------*
* CONSTANTS *
*---------------------------------------------------------------------*
CONSTANTS: C_OBJECT LIKE THEAD-TDOBJECT VALUE 'IHSG', " Object Id
C_ELEC LIKE T357G_T-PMSOG VALUE 'ELEC'. " Permit Key
*---------------------------------------------------------------------*
* SELECTION SCREEN *
*---------------------------------------------------------------------*
SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-111.
SELECT-OPTIONS: S_AUFNR FOR AUFK-AUFNR OBLIGATORY, " Order Number
S_REQDT FOR ZPMPERMITS-REQDT. " Requested Date
PARAMETERS : P_IWERK LIKE ZPMPERMITS-IWERK OBLIGATORY. " Planning Plant
SELECTION-SCREEN END OF BLOCK B1.
*---------------------------------------------------------------------*
* START-OF-SELECTION *
*---------------------------------------------------------------------*
START-OF-SELECTION.
*--- Perform to get the Permit log details from the table 'ZPMPERMITS'
PERFORM GET_PERMIT_LOG_DETAILS.
*--- Perform to get the conditions for the Permit Keys
PERFORM GET_PERMIT_CONDITIONS.
*--- Perform to get Maintenance Order Header Data
PERFORM GET_AFIH_DATA.
*--- Perform to get Functional Location
PERFORM GET_FUNC_LOC_DATA.
*--- Perform to get Functional Location: Short Texts
PERFORM GET_FUNC_LOC_TEXT_DATA.
*--- Perform to get Text for Table 357GT
PERFORM GET_T357G_T_DATA.
*--- Perform to get Equipment Short Texts
PERFORM GET_EQUI_TEXTS.
*---------------------------------------------------------------------*
* END-OF-SELECTION *
*---------------------------------------------------------------------*
END-OF-SELECTION.
IF F_STOP = SPACE.
*--- Perform display the permits report
PERFORM DISPLAY_PERMITS.
ENDIF.
*---------------------------------------------------------------------*
* AT LINE-SELECTION
*---------------------------------------------------------------------*
AT LINE-SELECTION.

GET CURSOR FIELD V_FIELD VALUE V_AUFNR.
*--- Restricting the generation of Secondary list to dbl click on AUFNR
IF V_FIELD = 'IT_PERMITS-AUFNR' OR V_FIELD = 'IT_PERMITS-PMSOG'.
V_PMSOG = IT_PERMITS-PMSOG.
*--- Perform to build the Header for the Report
PERFORM BUILD_HEADER.
*--- Set the PF-STATUS for creating a push button on app tool bar.
SET PF-STATUS 'ZGUIREPORT'.
*--- Perform to display the Report Output
PERFORM DISPLAY_REPORT.
*--- Perform to build the Footer for the Report
PERFORM BUILD_FOOTER.
ENDIF.

*---- At user command
AT USER-COMMAND.

CASE SY-UCOMM.
WHEN 'DOWNLOAD'.
*--- Perform to choose destination for downloading report to Excel
PERFORM CHOOSE_FILE CHANGING V_DESTINATION_FILE.
IF SY-SUBRC = 0 .
*--- Perform to call EXCEL download function
PERFORM CALL_EXCEL_DOWNLOAD.
*--- Success Message after Excel file download
V_MESG = 'File downloaded to'(001).
V_TITLE = 'File Path'(002).
CALL FUNCTION 'JVA_POPUP_TO_DISPLAY_TEXT'
EXPORTING
TITEL = V_TITLE
TEXTLINE1 = V_MESG
TEXTLINE2 = V_DESTINATION_FILE
START_COLUMN = 10
START_ROW = 20.
*--- Success Message on a popup after Excel file download
V_MESG = 'Successfully Downloaded Data'(003).
MESSAGE S002(ZLKPL_MSGCLASS) WITH V_MESG.
ENDIF.
*--- Navigation - to go back to Selection Screen
WHEN 'BACK' OR '%EX' OR 'RW'.
LEAVE PROGRAM.
ENDCASE.
*---------------------------------------------------------------------*
* END-OF-PAGE *
*---------------------------------------------------------------------*
END-OF-PAGE.
*---- Include for OLE controls
INCLUDE ZINCLUDE_OLE_EXCEL.
*&---------------------------------------------------------------------*
*& Form GET_PERMIT_LOG_DETAILS
*&---------------------------------------------------------------------*
*--- To get the Permit log details from the table 'ZPMPERMITS' based
* on the selection criteria.
*----------------------------------------------------------------------*
FORM GET_PERMIT_LOG_DETAILS.

*--- Select Construct to get the Permit log details
SELECT * FROM ZPMPERMITS
INTO TABLE IT_PERMITS
WHERE AUFNR IN S_AUFNR
AND IWERK = P_IWERK
AND PMSOG = C_ELEC
AND REQDT IN S_REQDT.
*--- Sorting by Order No
IF SY-SUBRC = 0.
SORT IT_PERMITS BY AUFNR.
ELSE.
MESSAGE S002(ZLKPL_MSGCLASS) WITH 'No Data Exists For The Selection Criteria'(072).
F_STOP = 'X'.
STOP.
ENDIF.

ENDFORM. " GET_PERMIT_LOG_DETAILS
*&---------------------------------------------------------------------*
*& Form GET_PERMIT_CONDITIONS
*&---------------------------------------------------------------------*
* To get the Permit conditions from the table ZMNTTEXT
*----------------------------------------------------------------------*
FORM GET_PERMIT_CONDITIONS.

IF NOT IT_PERMITS[] IS INITIAL.
*--- Select construct to get the permit conditions
SELECT * FROM ZMNTTEXT
INTO TABLE IT_MNTTEXT
FOR ALL ENTRIES IN IT_PERMITS
WHERE AUFNR = IT_PERMITS-AUFNR
AND COUNTER = IT_PERMITS-COUNTER.
IF SY-SUBRC = 0.
*--- Do nothing
ENDIF.
ENDIF.

ENDFORM. " GET_PERMIT_CONDITIONS
*&---------------------------------------------------------------------
*& Form GET_AFIH_DATA
*&---------------------------------------------------------------------
* To get the Maintenance Order Header Data
*----------------------------------------------------------------------
FORM GET_AFIH_DATA.

IF NOT IT_PERMITS[] IS INITIAL.
*--- Select construct to get the Maintenance Order Header Data
SELECT AUFNR EQUNR ILOAN QMNUM
FROM AFIH
INTO TABLE IT_AFIH
FOR ALL ENTRIES IN IT_PERMITS
WHERE AUFNR = IT_PERMITS-AUFNR.
IF SY-SUBRC = 0.
*--- Do Nothing
ENDIF.
ENDIF.

ENDFORM. " GET_AFIH_DATA
*&---------------------------------------------------------------------*
*& Form GET_T357G_T_DATA
*&---------------------------------------------------------------------*
* To get the Text for Table 357GT
*----------------------------------------------------------------------*
FORM GET_T357G_T_DATA.

*--- Internal table to hold Duplicate Permits
DATA: BEGIN OF LT_PERMIT OCCURS 0,
PMSOG LIKE T357G_T-PMSOG,
END OF LT_PERMIT.

IF NOT IT_PERMITS[] IS INITIAL.
*--- Looping at IT_PERMITS to get Text
LOOP AT IT_PERMITS.
LT_PERMIT-PMSOG = IT_PERMITS-PMSOG.
APPEND LT_PERMIT.
CLEAR LT_PERMIT.
ENDLOOP.
*--- Sorting
SORT LT_PERMIT.
DELETE ADJACENT DUPLICATES FROM LT_PERMIT COMPARING PMSOG.
*-- Select construct to get the Text for Table T357G
SELECT PMSOG GNTXT
FROM T357G_T
INTO TABLE IT_T357G_T
FOR ALL ENTRIES IN LT_PERMIT
WHERE PMSOG = LT_PERMIT-PMSOG
AND SPRAS = SY-LANGU.

IF SY-SUBRC <> 0.
*--- Do Nothing
ENDIF.
ENDIF.

ENDFORM. " GET_T357G_T_DATA
*&---------------------------------------------------------------------*
*& Form GET_EQUI_TEXTS
*&---------------------------------------------------------------------*
* To get the Equipment Texts
*----------------------------------------------------------------------*
FORM GET_EQUI_TEXTS .

IF NOT IT_AFIH[] IS INITIAL.
*--- Select construct to get the Equipment Details
SELECT EQUNR EQKTX
FROM EQKT
INTO TABLE IT_EQKT
FOR ALL ENTRIES IN IT_AFIH
WHERE EQUNR = IT_AFIH-EQUNR
AND SPRAS = SY-LANGU.
IF SY-SUBRC = 0.
*--- Do Nothing
ENDIF.
ENDIF.

ENDFORM. " GET_EQUI_TEXTS
*&---------------------------------------------------------------------*
*& Form GET_FUNC_LOC_DATA
*&---------------------------------------------------------------------*
* To get the Functional Location
*----------------------------------------------------------------------*
FORM GET_FUNC_LOC_DATA.

IF NOT IT_AFIH[] IS INITIAL.
*--- Select construct to get the Functional Location
SELECT ILOAN TPLNR
FROM ILOA
INTO TABLE IT_ILOA
FOR ALL ENTRIES IN IT_AFIH
WHERE ILOAN = IT_AFIH-ILOAN.
IF SY-SUBRC = 0.
*---Do Nothing
ENDIF.
ENDIF.

ENDFORM. " GET_FUNC_LOC_DATA
*&---------------------------------------------------------------------*
*& Form GET_FUNC_LOC_TEXT_DATA.
*&---------------------------------------------------------------------*
* To get Functional Location: Short Texts
*----------------------------------------------------------------------*
FORM GET_FUNC_LOC_TEXT_DATA..

IF NOT IT_ILOA[] IS INITIAL.
*-- Select construct Functional Location: Short Texts
SELECT TPLNR PLTXT
FROM IFLOTX
INTO TABLE IT_IFLOTX
FOR ALL ENTRIES IN IT_ILOA
WHERE TPLNR = IT_ILOA-TPLNR
AND SPRAS = SY-LANGU.
IF SY-SUBRC = 0.
*---Do nothing
ENDIF.
ENDIF.

ENDFORM. " GET_FUNC_LOC_TEXT_DATA.
*&---------------------------------------------------------------------*
*& Form DISPLAY_PERMITS
*&---------------------------------------------------------------------*
*--- To display the Permits report
*----------------------------------------------------------------------*
FORM DISPLAY_PERMITS.

DATA: LV_COLR_FLG.
WRITE: /05(127) SY-ULINE,
/05(01) SY-VLINE.
FORMAT COLOR 1 INTENSIFIED ON.

*--- Column Headings
WRITE: 06(12) 'Order'(006),
18(01) SY-VLINE,
19(30) 'Permit Description'(067),
49(01) SY-VLINE,
50(12) 'Requested on'(009),
62(01) SY-VLINE,
63(13) 'Required from'(010),
76(01) SY-VLINE,
77(11) 'Required to'(011),
88(01) SY-VLINE,
89(10) 'Valid from'(012),
99(01) SY-VLINE,
100(10) 'Valid to'(013),
110(01) SY-VLINE,
111(20) 'Requested By'(068),
131(01) SY-VLINE.
FORMAT RESET.
WRITE: /05(127) SY-ULINE.
*--- Looping at IT_PERMITS for data
LOOP AT IT_PERMITS.
WRITE: /05(01) SY-VLINE.
IF LV_COLR_FLG = SPACE.
FORMAT COLOR 2 INTENSIFIED OFF.
LV_COLR_FLG = 'X'.
ELSE.
FORMAT COLOR 4 INTENSIFIED OFF.
CLEAR LV_COLR_FLG.
ENDIF.
*--- Report Contents
*--- Checking if no data exists & displaying message
IF IT_PERMITS[] IS INITIAL.
WRITE: 06(120) 'No Data Exists For The Given Selection Criterion'(014),
131(01) SY-VLINE.
ELSE.
*--- If data exists, display report
WRITE: 06(12) IT_PERMITS-AUFNR HOTSPOT ON,
18(01) SY-VLINE.
READ TABLE IT_T357G_T WITH KEY PMSOG = IT_PERMITS-PMSOG.
IF SY-SUBRC = 0.
WRITE: 19(30) IT_T357G_T-GNTXT,
49(01) SY-VLINE.
ENDIF.
WRITE: 50(12) IT_PERMITS-REQDT,
62(01) SY-VLINE,
63(13) IT_PERMITS-FRDAT,
76(01) SY-VLINE,
77(11) IT_PERMITS-TODAT,
88(01) SY-VLINE,
89(10) IT_PERMITS-VALFROM,
99(01) SY-VLINE,
100(10) IT_PERMITS-VALTO,
110(01) SY-VLINE,
111(20) IT_PERMITS-NAME1,
131(01) SY-VLINE.
FORMAT RESET.
HIDE IT_PERMITS-AUFNR.
HIDE IT_PERMITS-PMSOG.
ENDIF.
ENDLOOP.

WRITE: /05(127) SY-ULINE.

ENDFORM. " DISPLAY_PERMITS
*&---------------------------------------------------------------------*
*& Form BUILD_HEADER
*&---------------------------------------------------------------------*
* To build the Header for the report
*----------------------------------------------------------------------*
FORM BUILD_HEADER.

*--- Displaying the Header Text
WRITE: /05(128) SY-ULINE.
WRITE: /05(01) SY-VLINE,
35(01) SY-VLINE,
05(01) SY-VLINE,
65(39) 'Genting Lanco Power (India) Private Ltd'(015) CENTERED,
132(01) SY-VLINE,

*--- Displaying the Header Text
/05(01) SY-VLINE,
35(01) SY-VLINE,
35(01) SY-VLINE,
132(01) SY-VLINE,
/05(01) SY-VLINE,
67(34) 'Lanco Kondapalli Power Plant'(016) CENTERED,
35(01) SY-VLINE,
132(01) SY-VLINE,
132(01) SY-VLINE,
/05(01) SY-VLINE,
35(97) SY-ULINE,
132(01) SY-VLINE.

*--- Displaying the Header Text
READ TABLE IT_PERMITS WITH KEY AUFNR = IT_PERMITS-AUFNR.
IF SY-SUBRC = 0.
*---- Read table IT_T357G_T
READ TABLE IT_T357G_T WITH KEY PMSOG = IT_PERMITS-PMSOG.
IF SY-SUBRC = 0.
WRITE: /05(01) SY-VLINE,
35(01) SY-VLINE,
70(30) IT_T357G_T-GNTXT CENTERED,
132(01) SY-VLINE,
35(01) SY-VLINE.
ENDIF.
ENDIF.
WRITE: 05(01) SY-VLINE,
35(01) SY-VLINE,
132(01) SY-VLINE,
/05(01) SY-VLINE,
35(01) SY-VLINE,
05(01) SY-VLINE,
132(01) SY-VLINE,
*--- To Display Notification No
/40(06) 'WR No:'(019).
*---- Read table IT_AFIH to get corresponding Notification No
READ TABLE IT_AFIH WITH KEY AUFNR = IT_PERMITS-AUFNR.
IF SY-SUBRC = 0.
WRITE: 48(18) IT_AFIH-QMNUM.
ENDIF.
*--- To Display Order No
WRITE: 112(06) 'WO No:'(020).
*---- Read table IT_PERMITS to get Order No
READ TABLE IT_PERMITS WITH KEY AUFNR = IT_PERMITS-AUFNR.
IF SY-SUBRC = 0.
WRITE: 120(10) IT_PERMITS-AUFNR.
ENDIF.

WRITE: 05(01) SY-VLINE,
35(01) SY-VLINE,
132(01) SY-VLINE.
WRITE: /05(128) SY-ULINE.

*--- Displaying the Header Text
WRITE: /05(01) SY-VLINE,
10(20) 'Responsible Person'(023),
37(01) SY-VLINE,
45(20) 'Revision No'(024),
65(01) SY-VLINE,
75(25) 'Revision Date'(025),
100(01) SY-VLINE,
113(05) 'Page'(027),
132(01) SY-VLINE,
/05(01) SY-VLINE,
37(01) SY-VLINE,
65(01) SY-VLINE,
100(01) SY-VLINE,
132(01) SY-VLINE.

*--- Displaying the Header Text
WRITE: /05(01) SY-VLINE,
10(20) 'Plant Shift Manager'(049),
37(01) SY-VLINE,
50(20) '0'(050),
65(01) SY-VLINE,
77(25) '14/10/00'(069),
100(01) SY-VLINE,
107(10) SY-PAGNO,
132(01) SY-VLINE.
WRITE : /05(128) SY-ULINE.
SKIP.

ENDFORM. " BUILD_HEADER
*&---------------------------------------------------------------------*
*& Form DISPLAY_REPORT
*&---------------------------------------------------------------------*
* To write the details report
*----------------------------------------------------------------------*
FORM DISPLAY_REPORT .

CLEAR: IT_TLINE,
IT_TLINE[].

DATA: LV_TEXT(132).
CLEAR IT_PERMITS.

*--- Conversion exit ALPHA, external->internal
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
INPUT = V_AUFNR
IMPORTING
OUTPUT = V_AUFNR.

*---- Read to get the long text corresponding to the Order No
READ TABLE IT_PERMITS WITH KEY AUFNR = V_AUFNR
PMSOG = V_PMSOG.
IF SY-SUBRC = 0.
*--- Description Of Plant
CLEAR LV_TEXT.
LV_TEXT = 'Description Of Plant:'(028).
CONDENSE LV_TEXT.

*--- Displaying Description Of Plant
WRITE: /05(128) SY-ULINE.
WRITE: /05(01) SY-VLINE,
06(73) LV_TEXT,
132(01) SY-VLINE,
/5(01) SY-VLINE,
132(01) SY-VLINE.
CLEAR LV_TEXT.

*--- Read Table IT_AFIH to get Order No
READ TABLE IT_AFIH WITH KEY AUFNR = IT_PERMITS-AUFNR.
IF SY-SUBRC = 0.
*--- Read Table IT_ILOA to get Location and acc assignment for tec objfor Description Of Plant
READ TABLE IT_ILOA WITH KEY ILOAN = IT_AFIH-ILOAN.
IF SY-SUBRC = 0.
CLEAR V_DESC.

*--- Read Table IT_IFLOTX to get Functional Location for Description Of Plant
READ TABLE IT_IFLOTX WITH KEY TPLNR = IT_ILOA-TPLNR.
IF SY-SUBRC = 0.
*--- Read Table IT_EQKT to get
READ TABLE IT_EQKT WITH KEY EQUNR = IT_AFIH-EQUNR.
IF SY-SUBRC = 0.
CONCATENATE IT_IFLOTX-PLTXT ';' IT_EQKT-EQKTX INTO V_DESC separated by space.
ELSE.
V_DESC = IT_IFLOTX-PLTXT.
ENDIF.
ELSE .
V_DESC = IT_EQKT-EQKTX.
ENDIF.
ENDIF.
ENDIF.
WRITE: 06 V_DESC.
WRITE: 132 SY-VLINE,
/05 SY-VLINE,
132 SY-VLINE.
*--- Displaying Work to be Carried out
LV_TEXT = 'Work to be Carried out:'(029).
CONDENSE LV_TEXT.

WRITE: /05(01) SY-VLINE,
06(73) LV_TEXT,
132(01) SY-VLINE.

CLEAR LV_TEXT.
CLEAR V_ID.
V_NAME = IT_PERMITS-OBJNR.
V_NAME+22(10) = IT_PERMITS-COUNTER.

*--- Getting Long Text using Read_Text for Work to be carried out
V_ID = 'ZWCO'.
*--- Perform to get the longtext and split it
PERFORM SPLIT_TEXT.
*--- Looping at IT_TEXT to get for Work to be carried out
LOOP AT IT_TEXT.
WRITE: /05(01) SY-VLINE,
06(125) IT_TEXT-TEXT,
132(01) SY-VLINE.
ENDLOOP.
WRITE: /5(01) SY-VLINE,
132(01) SY-VLINE.
*--- Displaying Details Of Plant Isolation And Safety Precautions Taken
CLEAR LV_TEXT.
LV_TEXT = 'Details Of Plant Isolation And Safety Precautions Taken:'(030).
CONDENSE LV_TEXT.

WRITE: /06(73) LV_TEXT ,
05(01) SY-VLINE,
132(01) SY-VLINE.
CLEAR LV_TEXT.
*--- Getting Long Text using Read_Text for Details Of Plant Isolation And Safety Precautions Taken
CLEAR V_ID.
V_ID = 'ZDOI'.
*--- Perform to get the longtext and split it
PERFORM SPLIT_TEXT.
*--- Looping at IT_TEXT to get Details Of Plant Isolation And Safety Precautions Taken
LOOP AT IT_TEXT.
WRITE: /05(01) SY-VLINE,
06(125) IT_TEXT-TEXT,
132(01) SY-VLINE.
ENDLOOP.
WRITE: /5(01) SY-VLINE,
132(01) SY-VLINE.

*--- Displaying Safety and Fire Manager
CLEAR LV_TEXT.
LV_TEXT = 'Safety and Fire Manager:'(031).
CONDENSE LV_TEXT.

WRITE: /05(01) SY-VLINE,
06(30) LV_TEXT,
132(01) SY-VLINE.
CLEAR LV_TEXT.
*--- Getting Long Text using Read_Text for Safety and Fire Manager
V_ID = 'ZSFM'.
*--- Perform to get the longtext and split it
PERFORM SPLIT_TEXT.
*--- Looping at IT_TEXT to get Safety and Fire Manager
LOOP AT IT_TEXT.
WRITE: /05(01) SY-VLINE,
06(125) IT_TEXT-TEXT,
132(01) SY-VLINE.
ENDLOOP.
WRITE: /5(01) SY-VLINE,
132(01) SY-VLINE.
*--- Displaying General Manager
CLEAR LV_TEXT.
LV_TEXT = 'General Manager:'(032).
CONDENSE LV_TEXT.

WRITE: /05(01) SY-VLINE,
06(30) LV_TEXT,
132(01) SY-VLINE,
/05(01) SY-VLINE,
132(01) SY-VLINE,
/05(01) SY-VLINE,
132(01) SY-VLINE.
*--- Displaying Earths applied
CLEAR LV_TEXT.
LV_TEXT = 'Earths applied:'(033).
CONDENSE LV_TEXT.

WRITE: /05(01) SY-VLINE,
06(30) LV_TEXT,
132(01) SY-VLINE.
CLEAR LV_TEXT.

*--- Displaying Earths applied text
WRITE: /05(01) SY-VLINE,
06(10) ' '(034),
132(01) SY-VLINE,
/05(01) SY-VLINE,
132(01) SY-VLINE.
*--- Displaying Special Precautions to be taken
LV_TEXT = 'Special Precautions to be taken:'(035).
CONDENSE LV_TEXT.

WRITE: /05(01) SY-VLINE,
06(73) LV_TEXT,
132(01) SY-VLINE.
CLEAR LV_TEXT.
*--- Getting Long Text using Read_Text for Special Precautions to be taken
CLEAR V_ID.
V_ID = 'ZOPR'.
*--- Perform to get the longtext and split it
PERFORM SPLIT_TEXT.
*--- Looping at IT_TEXT to get Special Precautions to be taken
LOOP AT IT_TEXT.
WRITE: /05(01) SY-VLINE,
06(125) IT_TEXT-TEXT,
132(01) SY-VLINE.
ENDLOOP.

WRITE: /05(01) SY-VLINE,
132(01) SY-VLINE.
WRITE: /05(128) SY-ULINE.

*--- Displaying Authorization
LV_TEXT = 'AUTHORIZATION:'(036).
CONDENSE LV_TEXT.

WRITE: /05(01) SY-VLINE,
06(73) LV_TEXT,
132(01) SY-VLINE,
05(01) SY-VLINE,
40(20) 'Lock Out Bolt1 No:'(037),
62(15) IT_PERMITS-LOCKBN1,
85(21) 'Lock Out Key1 No:'(038),
106(15) IT_PERMITS-LOCKKN1,
132(01) SY-VLINE,
/05(01) SY-VLINE,
40(20) 'Lock Out Bolt2 No:'(070),
62(20) IT_PERMITS-LOCKBN2,
85(21) 'Lock Out Key2 No:'(071),
106(20) IT_PERMITS-LOCKKN2,
132(01) SY-VLINE,
/05(01) SY-VLINE,
132(01) SY-VLINE,
/05(01) SY-VLINE,
10(10) 'Signature:'(039),
21 SY-ULINE(17),
40(05) 'Name'(040),
46 SY-ULINE(20),
80(05) 'Time'(041),
87 SY-ULINE(15),
110(05) 'Date'(042),
116 SY-ULINE(15),
132(01) SY-VLINE,
132(01) SY-VLINE,
*--- Authorised Person
/05(01) SY-VLINE,
20(30) '(Authorised Person)'(043),
132(01) SY-VLINE,
/05(128) SY-ULINE.
*--- Displaying Receipt
CLEAR LV_TEXT.
LV_TEXT = 'RECEIPT:'(066).
CONDENSE LV_TEXT.

WRITE: /05(01) SY-VLINE,
06(73) LV_TEXT,
132(01) SY-VLINE.
WRITE: 15(106) 'I have read this form and understand the special precautions to be taken during the job execution'(062),
/05(01) SY-VLINE,
132(01) SY-VLINE,
/05(01) SY-VLINE,
132(01) SY-VLINE,
/05(01) SY-VLINE,
10(10) 'Signature:'(039),
21 SY-ULINE(17),
40(05) 'Name:'(040),
46 SY-ULINE(18),
65(08) 'Company:'(045),
74 SY-ULINE(20),
96(05) 'Time:'(041),
102 SY-ULINE(10),
114(05) 'Date:'(042),
121(10) SY-ULINE(10),
132(10) SY-VLINE,
*--- Competent Person in Charge of Work
/05(01) SY-VLINE,
20(80) '(Competent Person in Charge of Work)'(064),
132(01) SY-VLINE,
/05(128) SY-ULINE.

*--- Displaying Detail of Work Completed
CLEAR LV_TEXT.
LV_TEXT = 'Detail of Work Completed:'(047).
CONDENSE LV_TEXT.

WRITE: /05(01) SY-VLINE,
06(28) LV_TEXT,
132(01) SY-VLINE.
CLEAR LV_TEXT.
*--- Getting Long Text using Read_Text for Detail of Work Completed
CLEAR V_ID.
V_ID = 'ZMNT'.
*--- Perform to get the longtext and split it
PERFORM SPLIT_TEXT.
*--- Looping at IT_TEXT to get Detail of Work Completed
LOOP AT IT_TEXT.

WRITE: /05(01) SY-VLINE,
06(125) IT_TEXT-TEXT,
132(01) SY-VLINE.
ENDLOOP.

WRITE : 132(01) SY-VLINE,
/05(01) SY-VLINE,
132(01) SY-VLINE,
06 SY-ULINE(126).
*--- Displaying Clearance (Competent Person in Charge of Work)
WRITE: /05(01) SY-VLINE,
06(115) 'CLEARANCE: Work as above completed / stopped,all tools material removed, area cleaned and men in charge withdrawn'(048),
132(01) SY-VLINE,
/05(01) SY-VLINE,
132(01) SY-VLINE,
/05(01) SY-VLINE,
10(10) 'Signature:'(039),
21 SY-ULINE(17),
40(05) 'Name:'(040),
46 SY-ULINE(18),
65(08) 'Company:'(045),
74 SY-ULINE(20),
96(05) 'Time:'(041),
102 SY-ULINE(10),
114(05) 'Date:'(042),
121(10) SY-ULINE(10),
132(10) SY-VLINE,
/05(01) SY-VLINE,
20(80) '(Competent Person in Charge of Work)'(064),
132(01) SY-VLINE,
05(01) SY-VLINE,
/05(128) SY-ULINE(128),
132(01) SY-VLINE.

*--- Displaying CANCELLATION: All copies of this PERMIT TO WORK
*--- are hereby cancelled
LV_TEXT = 'CANCELLATION: All copies of this PERMIT TO WORK are hereby cancelled'(052).
CONDENSE LV_TEXT.
WRITE: /05(01) SY-VLINE,
06(73) LV_TEXT,
132(01) SY-VLINE,
/05(01) SY-VLINE,
132(01) SY-VLINE,
132(01) SY-VLINE,
/05(01) SY-VLINE,
132(01) SY-VLINE,
/05(01) SY-VLINE,
10(10) 'Signature:'(039),
21 SY-ULINE(17),
40(05) 'Name'(040),
46 SY-ULINE(20),
80(05) 'Time'(041),
87 SY-ULINE(15),
110(05) 'Date'(042),
116 SY-ULINE(15),
132(01) SY-VLINE,
/05 SY-VLINE,
20(100) '(Authorised Person)'(043),
132 SY-VLINE.
WRITE: /05(128) SY-ULINE.
CLEAR LV_TEXT.
CLEAR IT_PERMITS.
ENDIF.
ENDFORM. " DISPLAY_OUTPUT
*&---------------------------------------------------------------------
*
*& Form BUILD_FOOTER
*&---------------------------------------------------------------------
*
*--- Footer for the report
*----------------------------------------------------------------------
*
FORM BUILD_FOOTER.

*--- Assigining footer text to Variables
V_FOOT1 ='We reserve all rights of this document and the information therein. Reproduction, use or disclosure to third parties'(053).
V_FOOT2 ='without authority is strictly forbidden.Genting Lanco Power(India)Private Limited 1999'(054).

WRITE : /05(128) SY-ULINE.
WRITE: /05(01) SY-VLINE,
06(125) V_FOOT1 ,
132(01) SY-VLINE,
/05(01) SY-VLINE,
06(125) V_FOOT2 ,
132(01) SY-VLINE,
/05(01) SY-VLINE,
132(01) SY-VLINE.
WRITE : /05(128) SY-ULINE.

ENDFORM. " BUILD_FOOTER
*&---------------------------------------------------------------------*
*& Form GET_LONGTEXT
*&---------------------------------------------------------------------*
* To get the Long Text for the Permits
*----------------------------------------------------------------------*
FORM GET_LONGTEXT.

*---- Refreshing the Header and Contents of the table ITAB
CLEAR: IT_TLINE,
IT_TLINE[].

CALL FUNCTION 'READ_TEXT'
EXPORTING
CLIENT = SY-MANDT
ID = V_ID
LANGUAGE = SY-LANGU
NAME = V_NAME
OBJECT = C_OBJECT
* ARCHIVE_HANDLE = 0
* LOCAL_CAT = ' '
* IMPORTING
* HEADER =
TABLES
LINES = IT_TLINE
EXCEPTIONS
ID = 1
LANGUAGE = 2
NAME = 3
NOT_FOUND = 4
OBJECT = 5
REFERENCE_CHECK = 6
WRONG_ACCESS_TO_ARCHIVE = 7
OTHERS = 8 .

ENDFORM. " GET_LONGTEXT

*&---------------------------------------------------------------------*
*& Form CALL_EXCEL_DOWNLOAD
*&---------------------------------------------------------------------*
* To Call EXCEL download function
*----------------------------------------------------------------------*
FORM CALL_EXCEL_DOWNLOAD.

DATA: LV_LINES TYPE I, "Number of lines
LV_MESG(50) TYPE C, "Message
LV_ROW TYPE I, "Current Row
LV_LINE1 TYPE I.

*------ Show progress of the download operation
LV_MESG = ' Initialising Excel...'(055).
PERFORM SHOW_PROGRESS USING LV_MESG.

*----- Perform to create an OLE Excel Object
PERFORM CREATE_OLE_OBJECTS.

*----- Perform to Open an Existing OLE Excel Template
PERFORM OPEN_OLE_TEMPLATE USING V_SOURCE_FILE.

*----- Perform to draw a border for the Header Data of Report
PERFORM BUILD_BORDER USING 5 2 12 1.
PERFORM BUILD_BORDER USING 1 2 12 2.

*------ Show progress of the download operation
LV_MESG = ' Downloading Data to Excel...'(056).
PERFORM SHOW_PROGRESS USING LV_MESG.

*----- Fill Header Information to active Excel sheet
PERFORM FILL_CELL USING 1 5 1 'Genting Lanco Power (India) Private Ltd'(015).
PERFORM FILL_CELL USING 2 5 1 ' Lanco Kondapalli Power Plant'(016).
PERFORM FILL_CELL USING 4 6 1 IT_T357G_T-GNTXT.

*--- Reading table IT_AFIH for WO No
READ TABLE IT_AFIH WITH KEY AUFNR = IT_PERMITS-AUFNR.
*----- To Display Notification Number
PERFORM FILL_CELL USING 5 3 1 'WR No'(019).
PERFORM FILL_CELL USING 5 4 1 IT_AFIH-QMNUM.
*----- To Display Order Number
PERFORM FILL_CELL USING 5 10 1 'WO No'(020).
PERFORM FILL_CELL USING 5 11 1 IT_AFIH-AUFNR.

*---To Display Additional Header Information on Excel sheet
PERFORM FILL_CELL USING 7 1 1 'Responsible Person'(023).
PERFORM FILL_CELL USING 9 1 0 'Plant Shift Manager'(049).
*----- Border for Responsible Person
PERFORM BUILD_BORDER USING 6 3 1 10.

*--- To Display Revision No
PERFORM FILL_CELL USING 7 5 1 'Revision No'(024).
PERFORM FILL_CELL USING 9 5 0 '0'(050) .
*----- Border for Revision No
PERFORM BUILD_BORDER USING 6 6 1 10.

*--- To Display Revision Date
PERFORM FILL_CELL USING 7 8 1 'Revision Date'(025).
PERFORM FILL_CELL USING 9 8 0 '14/10/00'(069).
*--- Border for Revision Date
PERFORM BUILD_BORDER USING 6 9 1 10.

*--- To Display Page no.
PERFORM FILL_CELL USING 7 11 1 'Page'(027).
PERFORM FILL_CELL USING 9 11 0 '1'(057).
*----- Border for Page
PERFORM BUILD_BORDER USING 6 12 1 10.
*---
LV_LINES = 12.

*------- Fill Columns & headings to active Excel sheet
*----- For Full content border
LV_LINE1 = LV_LINES.

*--- Incrementing Line count
LV_LINES = LV_LINES + 1.
*----- To Display Description Of Plant
PERFORM FILL_CELL USING LV_LINES 1 4 'Description Of Plant'(028).
*--- Incrementing Line count
LV_LINES = LV_LINES + 2.
PERFORM FILL_CELL USING LV_LINES 1 0 V_DESC.
*--- Incrementing Line count
LV_LINES = LV_LINES + 2.

*--- Getting Long Text using Read_Text for Work to be carried out
PERFORM FILL_CELL USING LV_LINES 1 4 'Work to be carried out:'(029).
*--- Incrementing Line count
LV_LINES = LV_LINES + 1.

*---- Read to get the long text corresponding to the Order No
READ TABLE IT_PERMITS WITH KEY AUFNR = V_AUFNR
PMSOG = V_PMSOG.
CLEAR V_ID.
V_ID = 'ZWCO'.
V_NAME = IT_PERMITS-OBJNR.
V_NAME+22(10) = IT_PERMITS-COUNTER.

*--- Perform to get the longtext and split it
PERFORM SPLIT_TEXT.
*--- Looping at IT_TEXT to get Work to be carried out
LOOP AT IT_TEXT.
LV_LINES = LV_LINES + 1.
PERFORM FILL_CELL USING LV_LINES 1 0 IT_TEXT-TEXT.
ENDLOOP.

*--- Incrementing Line count
LV_LINES = LV_LINES + 2.

*--- Getting Long Text using Read_Text for Details Of Plant Isolation
*--- And Safety Precautions Taken
PERFORM FILL_CELL USING LV_LINES 1 4 'Details Of Plant Isolation And Safety Precautions Taken'(030).

*--- Incrementing Line count
LV_LINES = LV_LINES + 1.

CLEAR V_ID.
V_ID = 'ZDOI'.
V_NAME = IT_PERMITS-OBJNR.
V_NAME+22(10) = IT_PERMITS-COUNTER.

*--- Perform to get the longtext and split it
PERFORM SPLIT_TEXT.

*--- Looping at IT_TEXT to get Details Of Plant Isolation And Safety Precautions Taken
LOOP AT IT_TEXT.
LV_LINES = LV_LINES + 1.
PERFORM FILL_CELL USING LV_LINES 1 0 IT_TEXT-TEXT.
ENDLOOP.

*--- Incrementing Line count
LV_LINES = LV_LINES + 2.

*--- Getting Long Text using Read_Text for Safety and Fire Manager:
PERFORM FILL_CELL USING LV_LINES 1 4 'Safety and Fire Manager:'(031).

*--- Incrementing Line count
LV_LINES = LV_LINES + 1.

CLEAR V_ID.
V_ID = 'ZSFM'.
V_NAME = IT_PERMITS-OBJNR.
V_NAME+22(10) = IT_PERMITS-COUNTER.

*--- Perform to get the longtext and split it
PERFORM SPLIT_TEXT.
*--- Looping at IT_TEXT to get Safety and Fire Manager
LOOP AT IT_TEXT.
LV_LINES = LV_LINES + 1.
PERFORM FILL_CELL USING LV_LINES 1 0 IT_TEXT-TEXT.
ENDLOOP.
*--- Incrementing Line count
LV_LINES = LV_LINES + 2.

*--- To Display General Manager
PERFORM FILL_CELL USING LV_LINES 1 4 'General Manager:'(032).
*--- Incrementing Line count
LV_LINES = LV_LINES + 2.

*--- To Display Earths applied
PERFORM FILL_CELL USING LV_LINES 1 4 'Earths applied:'(033).
*--- Incrementing Line count
LV_LINES = LV_LINES + 1.
PERFORM FILL_CELL USING LV_LINES 1 0 ' '(034).
*--- Incrementing Line count
LV_LINES = LV_LINES + 3.

*--- Getting Long Text using Read_Text for Special Precautions to be taken
PERFORM FILL_CELL USING LV_LINES 1 4 'Special Precautions to be taken:'(035).
*--- Incrementing Line count
LV_LINES = LV_LINES + 1.

CLEAR V_ID.
V_ID = 'ZOPR'.
V_NAME = IT_PERMITS-OBJNR.
V_NAME+22(10) = IT_PERMITS-COUNTER.

*--- Perform to get the longtext and split it
PERFORM SPLIT_TEXT.
*--- Looping at IT_TEXT to get Special Precautions to be taken
LOOP AT IT_TEXT.
LV_LINES = LV_LINES + 1.
PERFORM FILL_CELL USING LV_LINES 1 0 IT_TEXT-TEXT.
ENDLOOP.
*--- Incrementing Line count
LV_LINES = LV_LINES + 1.

*----- Border for the details box
PERFORM BUILD_BORDER USING LV_LINE1 1 12 LV_LINES.
LV_LINE1 = LV_LINES + 1.

*--- Incrementing Line count
LV_LINES = LV_LINES + 2.

*--- To Display Authorization box
PERFORM FILL_CELL USING LV_LINES 1 4 'AUTHORIZATION:'(036).
PERFORM FILL_CELL USING LV_LINES 5 4 'Lock Out Bolt1 No:'(037).
PERFORM FILL_CELL USING LV_LINES 7 4 IT_PERMITS-LOCKBN1.
PERFORM FILL_CELL USING LV_LINES 9 4 'Lock Out Key1 No:'(038).
PERFORM FILL_CELL USING LV_LINES 11 4 IT_PERMITS-LOCKKN1.

*--- Incrementing Line count
LV_LINES = LV_LINES + 1.

PERFORM FILL_CELL USING LV_LINES 5 4 'Lock Out Bolt2 No:'(070).
PERFORM FILL_CELL USING LV_LINES 7 4 IT_PERMITS-LOCKBN2.
PERFORM FILL_CELL USING LV_LINES 9 4 'Lock Out Key2 No:'(071).
PERFORM FILL_CELL USING LV_LINES 11 4 IT_PERMITS-LOCKKN2.

*--- Incrementing Line count
LV_LINES = LV_LINES + 3.

PERFORM FILL_CELL USING LV_LINES 1 4 'Signature: _________________ Name: ______________________'(058).
PERFORM FILL_CELL USING LV_LINES 9 4 'Time: __________ Date: _________'(059).

*--- Incrementing Line count
LV_LINES = LV_LINES + 1.
PERFORM FILL_CELL USING LV_LINES 2 4 '(Authorised Person)'(043).
LV_LINES = LV_LINES + 1.

*----- Border for the Authorisations box
PERFORM BUILD_BORDER USING LV_LINE1 1 12 LV_LINES.
*----- For Full content border
LV_LINE1 = LV_LINES + 1.

*--- Incrementing Line count
LV_LINES = LV_LINES + 2.

*--- To Display Receipt box
PERFORM FILL_CELL USING LV_LINES 1 4 'RECEIPT:'(066).
PERFORM FILL_CELL USING LV_LINES 2 4 'I have read this form and understand the special precautions to be taken during the job execution'(062).

*--- Incrementing Line count
LV_LINES = LV_LINES + 2.

PERFORM FILL_CELL USING LV_LINES 1 4 'Signature: _________________ Name: ______________________'(058).
PERFORM FILL_CELL USING LV_LINES 6 4 'Company: _________________ Time: __________ Date: _________'(060).

*--- Incrementing Line count
LV_LINES = LV_LINES + 1.

PERFORM FILL_CELL USING LV_LINES 2 4 '(Competent Person in Charge of Work)'(064).
*--- Incrementing Line count
LV_LINES = LV_LINES + 1.

*----- Border for the RECEIPT box
PERFORM BUILD_BORDER USING LV_LINE1 1 12 LV_LINES.
*----- For Full content border
LV_LINE1 = LV_LINES + 1.
*--- Incrementing Line count
LV_LINES = LV_LINES + 2.

*--- To Display Detail of Work Completed box
PERFORM FILL_CELL USING LV_LINES 1 4 'Detail of Work Completed:'(047).
*--- Incrementing Line count
LV_LINES = LV_LINES + 1.

CLEAR V_ID.
V_ID = 'ZMNT'.
V_NAME = IT_PERMITS-OBJNR.
V_NAME+22(10) = IT_PERMITS-COUNTER.

*--- Perform to get the longtext and split it
PERFORM SPLIT_TEXT.
*--- Looping at IT_TEXT to get Detail of Work Completed
LOOP AT IT_TEXT.
LV_LINES = LV_LINES + 1.
PERFORM FILL_CELL USING LV_LINES 1 0 IT_TEXT-TEXT.
ENDLOOP.
*--- Incrementing Line count
LV_LINES = LV_LINES + 1.

*----- Border for the Detail of work completed
PERFORM BUILD_BORDER USING LV_LINE1 1 12 LV_LINES.
*----- For Full content border
LV_LINE1 = LV_LINES + 1.

*--- Incrementing Line count
LV_LINES = LV_LINES + 2.

*--- To Display Clearance box
PERFORM FILL_CELL USING LV_LINES 1 4 'CLEARANCE: Work as above completed / stopped,all tools material removed, area cleaned and men in charge withdrawn'(048).
*--- Incrementing Line count
LV_LINES = LV_LINES + 3.

PERFORM FILL_CELL USING LV_LINES 1 4 'Signature: _________________ Name: ______________________'(058).
PERFORM FILL_CELL USING LV_LINES 6 4 'Company: ________________ Time: __________ Date: _________'(060).

*--- Incrementing Line count
LV_LINES = LV_LINES + 1.

*--- To Display Competent Person in Charge of Work
PERFORM FILL_CELL USING LV_LINES 2 4 '(Competent Person in Charge of Work)'(064).

*--- Incrementing Line count
LV_LINES = LV_LINES + 1.
*----- Border for the Detail of Clearance
PERFORM BUILD_BORDER USING LV_LINE1 1 12 LV_LINES.

*--- Incrementing Line count
LV_LINES = LV_LINES + 2.

*--- To Display Cancellation box
PERFORM FILL_CELL USING LV_LINES 1 4 'CANCELLATION: All copies of this PERMIT TO WORK are hereby cancelled'(052).

*--- Incrementing Line count
LV_LINES = LV_LINES + 3.

PERFORM FILL_CELL USING LV_LINES 1 4 'Signature: _________________ Name: ______________________'(058).
PERFORM FILL_CELL USING LV_LINES 9 4 'Time: __________ Date: _________'(059).
*--- Incrementing Line count
LV_LINES = LV_LINES + 1.
PERFORM FILL_CELL USING LV_LINES 2 6 '(Authorised Person)'(043).
*--- Incrementing Line count
LV_LINES = LV_LINES + 1.

*----- Border for the Detail of Cancellation
PERFORM BUILD_BORDER USING LV_LINE1 1 12 LV_LINES.
*--- Incrementing Line count
LV_LINES = LV_LINES + 2.

*----- For Full content border
LV_LINE1 = LV_LINES + 1.

*------ Fill the Footer Data into the Active Excel Object
LV_ROW = LV_LINES + 2.

*--- Filling the footer texts
V_FOOT1 = 'We reserve all rights of this document and the information therein. Reproduction, use or disclosure to third parties'(053).
V_FOOT2 = 'without authority is strictly forbidden.Genting Lanco Power(India)Private Limited 1999'(054).

*--- Incrementing Line count
LV_LINES = LV_LINES + 1.

*--- Row Incremanting
LV_ROW = LV_LINES + 2.
*----- Border for the Detail of Disclaimer
PERFORM BUILD_BORDER USING LV_LINES 12 1 LV_ROW.
PERFORM FILL_CELL USING LV_LINES 1 1 V_FOOT1.
*--- Incrementing Line count
LV_LINES = LV_LINES + 1.
PERFORM FILL_CELL USING LV_LINES 1 1 V_FOOT2.

*------ Show progress of the download operation
LV_MESG = 'Saving Excel File...'(061).
PERFORM SHOW_PROGRESS USING LV_MESG.

*----- Perform to Save the OLE Object to a destination File
PERFORM SAVE_OLE_OBJECT USING V_DESTINATION_FILE.

*----- Perform to free all the OLE Objects
PERFORM FREE_OLE_OBJECTS.

ENDFORM. " CALL_EXCEL_DOWNLOAD

*&---------------------------------------------------------------------*
*& Form CHOOSE_FILE *
*&---------------------------------------------------------------------*
* form to choose destination for downloading report to Excel *
*----------------------------------------------------------------------*

FORM CHOOSE_FILE CHANGING F_FILE TYPE RLGRAP-FILENAME.

DATA: IFILE TYPE FILETABLE.
DATA: XFILE LIKE LINE OF IFILE.
DATA: RC TYPE I.

CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOG
EXPORTING
* WINDOW_TITLE =
DEFAULT_EXTENSION = 'XLS'
DEFAULT_FILENAME = 'Electrical_Permit_To_Work'
FILE_FILTER = '*.XLS'
* WITH_ENCODING =
INITIAL_DIRECTORY = 'C:\'
* MULTISELECTION =
CHANGING
FILE_TABLE = IFILE
RC = RC
* USER_ACTION =
* FILE_ENCODING =
* exceptions
* file_open_dialog_failed = 1
* cntl_error = 2
* error_no_gui = 3
* not_supported_by_gui = 4
* others = 5
.

READ TABLE IFILE INTO XFILE INDEX 1.
IF SY-SUBRC = 0 .
F_FILE = XFILE-FILENAME.
ENDIF.

ENDFORM. " CHOOSE_FILE

*&---------------------------------------------------------------------*
*& Form SHOW_PROGRESS
*&---------------------------------------------------------------------*
* Indicate the progress of download process
*----------------------------------------------------------------------*
FORM SHOW_PROGRESS USING P_TEXT . "LV_COUNT.

CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'
EXPORTING
* PERCENTAGE = LV_COUNT
TEXT = P_TEXT
EXCEPTIONS
OTHERS = 1.

ENDFORM. " SHOW_PROGRESS

*&---------------------------------------------------------------------*
*& Form SPLIT_TEXT
*&---------------------------------------------------------------------*
* To Split Long text into lines
*----------------------------------------------------------------------*
FORM SPLIT_TEXT .

DATA: LV_TEXT(350),
LV_STRLEN TYPE I,
LV_TXT(255),
LV_RTEXT(350),
LV_LEN TYPE I,
LV_FLAG.

V_NAME = IT_PERMITS-OBJNR.
V_NAME+22(10) = IT_PERMITS-COUNTER.

CLEAR: IT_TLINE, IT_TLINE[], IT_TEXT, IT_TEXT[], IT_RTEXT, IT_RTEXT[].
*--- Perform to get Long Text
PERFORM GET_LONGTEXT." USING V_ID.

LV_LEN = 125.

LOOP AT IT_TLINE.

IF lv_flag = space.
LV_TEXT = IT_TLINE-TDLINE.
lv_flag = 'X'.
CONTINUE.
ENDIF.

LV_TXT = IT_TLINE-TDLINE.
*---To calculate string length
LV_STRLEN = STRLEN( LV_TEXT ).

IF IT_TLINE-TDFORMAT = SPACE.
*--- to concatenate lv_text with LV_TXT
CONCATENATE LV_TEXT LV_TXT INTO LV_TEXT SEPARATED BY SPACE.
LV_STRLEN = STRLEN( LV_TEXT ).
ELSEIF LV_TEXT IS NOT INITIAL AND LV_STRLEN < 125.
IT_TEXT-TEXT = LV_TEXT.
APPEND IT_TEXT.
CLEAR: IT_TEXT , LV_TEXT.
LV_STRLEN = 0.
LV_TEXT = LV_TXT.
CONTINUE.
ENDIF.

* ---Check whether the length is greater than the length of a single line
IF LV_STRLEN > 125 .
DO.
LV_LEN = LV_LEN - 1.
IF LV_TEXT+LV_LEN(1) = SPACE.
LV_LEN = LV_LEN + 1.
LV_STRLEN = LV_STRLEN - LV_LEN.
LV_RTEXT = LV_TEXT+LV_LEN(LV_STRLEN) .
IT_TEXT-TEXT = LV_TEXT+0(LV_LEN).
APPEND IT_TEXT.
CLEAR: IT_TEXT, LV_TEXT.
EXIT.
ENDIF.
ENDDO.
*----to calculate the string length
LV_STRLEN = STRLEN( LV_RTEXT ).

WHILE LV_STRLEN > 125.
IT_TEXT-TEXT = LV_RTEXT+0(125).
APPEND IT_TEXT.
CLEAR: IT_TEXT , LV_TEXT.
LV_STRLEN = LV_STRLEN - 125.
LV_RTEXT = LV_RTEXT+125(LV_STRLEN).
LV_STRLEN = STRLEN( LV_RTEXT ).
ENDWHILE.
LV_TEXT = LV_RTEXT.

ELSEIF IT_TLINE-TDFORMAT NE SPACE..

IT_TEXT-TEXT = LV_TEXT.
APPEND IT_TEXT.
CLEAR: IT_TEXT , LV_TEXT.
LV_TEXT = LV_TXT.
ENDIF.
*--- to initialise LV_LEN to 125
LV_LEN = 125.

ENDLOOP.

IT_TEXT-TEXT = LV_TEXT.
APPEND IT_TEXT.
CLEAR: IT_TEXT , LV_TEXT.

ENDFORM. " SPLIT_TEXT

No comments: