Anda di halaman 1dari 29

form print. sy-spono FORM print_setting . IF p_djprn = 'X'.

CALL FUNCTION 'SET_PRINT_PARAMETERS' EXPORTING layout = 'X_65_132' line_count = 64 line_size = 140. ELSE. CALL FUNCTION 'SET_PRINT_PARAMETERS' EXPORTING layout = 'X_58_170' line_count = 58 line_size = 185. ENDIF. ENDFORM. " PRINT_SETTING Call function 'spool to otf' call function 'otf to pdf' sending pdf file to email function module.

*&---------------------------------------------------------------------* *& Report ZRPM_BDMATRIX *& *&---------------------------------------------------------------------* *& *& *&---------------------------------------------------------------------* report ZRPM_BDREASON line-size 80 *line-count 65 "Commented by Shweta Dwivedi 13-May-2010 GRDK930312 line-count 72 "Commented by Shweta Dwivedi 13-May-2010 GRDK930312 no standard page heading message-id ZPM. *&---------------------------------------------------------------------&* *~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~* *&---------------------------------------------------------------------&* *& Program Name : Breakdown Why-Why Analysis report &* *& Transaction Code : ZRMM_DATA &* *& Module : PM &* *& Package : ZPM &* *& Developed By : MURALIMOHAN REDDY &* *& Development Date : 10.3.2006 &* *& Progarm Type : 1 - Executable &* *& Transport Req : &* *&---------------------------------------------------------------------&* *& Object : &* *& &* *&--------------------------------------------------------------------&* *~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~* * GRDK930312 Shweta Dwivedi 13-May-2010 Text Lines addition under

* under recommandation 1 2 3 *&---------------------------------------------------------------------&* type-pools:SLIS. tables: ZTPM_WHYWHYANS, VIQMFE, VIQMUR, EQUI, KLAH, VIQMEL, S031, VIAUFKST, RIWO00, STXH, V_EQUI, T024I. "Maintenance planner groups data: V_DAY type I, V_HOURS type I. data: W_FM_NAME type RS38L_FNAM. "Name of function module **scelection screen selection-screen begin of block SEL1 with frame title TEXT-001 . parameter : P_WERK like VIQMEL-SWERK obligatory . "Maint Plant select-options: S_BEBER on S_INGRP up S_VAPLZ enter S_EQUNR o S_QMNUM S_DATE Date * od. parameter s_spmon for VIQMEL-BEBER, for VIQMEL-INGRP obligatory, for VIAUFKST-VAPLZ, for VIQMEL-EQUNR, for VIQMEL-QMNUM, for VIQMEL-AUSVN obligatory. for s031-spmon obligatory. "Heade require/Not "Plant secti "Planner Gro "Main Work C "Equipment N "MalFunction "Peri

: P_HEAD as checkbox default 'X'.

selection-screen end of block SEL1. **Internal table declaration **For selecting data from class data: begin of IT_EQP1 occurs 0, CLINT like KSSK-CLINT, OBJEK like KSSK-OBJEK, KLART like KSSK-KLART, HERST like EQUI-HERST, "Manufacturer TYPBZ like EQUI-TYPBZ, "Model no TIDNR like ITOB-TIDNR, "TechnicalIDNo EQKTX like EQKT-EQKTX, "Equipment description end of IT_EQP1. data: IT_NOTFDATA like ZSPM_WHY1 occurs 0 with header line. data: begin of IT_TEMP occurs 1, ARBPL like CRHD-ARBPL, OBJID like CRHD-OBJID. data end of IT_TEMP.

data: begin of IT_DAMAGE_CODE occurs 1, QMNUM like VIQMFE-QMNUM, FENUM like VIQMFE-FENUM, FEGRP like VIQMFE-FEGRP, FECOD like VIQMFE-FECOD, DTEXT like QPCT-KURZTEXT, OTGRP like VIQMFE-OTGRP, OTEIL like VIQMFE-OTEIL, OTEXT like QPCT-KURZTEXT, end of IT_DAMAGE_CODE. data: begin of IT_CUMHRS occurs 1, EQUNR like VIQMEL-EQUNR, OTGRP like VIQMFE-OTGRP, FECOD like VIQMFE-FECOD, QMNUM like VIQMFE-QMNUM, BDHRS type P decimals 2, FRQ type I, end of IT_CUMHRS. data: IT_CUMHRS_SUM like IT_CUMHRS occurs 0 with header line. data: begin of IT_ZDESC occurs 0. include structure ZTPM_WHYWHYANS. data: end of IT_ZDESC. data: begin of IT_CAUSE_CODE occurs 1, QMNUM like VIQMUR-QMNUM, FENUM like VIQMUR-FENUM, URNUM like VIQMUR-URNUM, URGRP like VIQMUR-URGRP, URCOD like VIQMUR-URCOD, URTXT like VIQMUR-URTXT, CTEXT like QPCT-KURZTEXT, CTEXT1 like QPCT-KURZTEXT, FLAG(3), end of IT_CAUSE_CODE. *data: it_cause_code like zspm_why2 occurs 0 with header line. data: begin of IT_OUTPUT occurs 1, QMNUM like VIQMUR-QMNUM, FENUM like VIQMUR-FENUM, INGRP like VIQMEL-INGRP, "Planner Group HERST like EQUI-HERST, "Manufacturer TYPBZ like EQUI-TYPBZ, "Model no EQUNR like VIQMEL-EQUNR, "equipment no EQUNR1(18) type N, "equipment no TIDNR like ITOB-TIDNR, "TechnicalIDNo EQKTX like EQKT-EQKTX, "Equipment description **Damage related OTGRP like FEGRP like FECOD like DTEXT like **Cause related URNUM like URGRP like URCOD like CTEXT like FRQNO type AUSZT type VIQMFE-OTGRP, VIQMFE-FEGRP, VIQMFE-FECOD, QPCT-KURZTEXT, VIQMUR-URNUM, VIQMUR-URGRP, VIQMUR-URCOD, QPCT-KURZTEXT, I, P decimals 2, "Object Part "Code Group - Problem "Damage code "Damage Text "Sequential Number for Cause "Code Group - Causes "Cause Code "Cause Text "Frequency "Duration

end of IT_OUTPUT. data: begin of IT_COSS occurs 0. include structure COSS. data: COST1 like COSS-WTG016, end of IT_COSS. data: begin of IT_COSP occurs 0. include structure COSP. data: COST2 like COSS-WTG016, end of IT_COSP. data: begin of IT_FRQYEAR occurs 0, QMNUM like VIQMEL-QMNUM, EQUNR like VIQMEL-EQUNR, AUSZT type P decimals 2, "Duration end of IT_FRQYEAR. data: begin of IT_DMYEAR occurs 0, EQUNR like VIQMEL-EQUNR, FECOD like VIQMFE-FECOD, QMNUM like VIQMFE-QMNUM, BDHRS type P decimals 2, FRQ type I, end of IT_DMYEAR. data: begin of IT_YCF occurs 0, EQUNR like VIQMEL-EQUNR, QMNUM like VIQMFE-QMNUM, FECOD like VIQMFE-FECOD, BDHRS type P decimals 2, FRQ type I, end of IT_YCF. data: IT_OB like TLINE occurs data: IT_WHY like TLINE occurs data: IT_RC like TLINE occurs data: IT_RM like TLINE occurs **data declaration data: V_TIME type SY-UZEIT, V_NAME1 like T001W-NAME1, V_OBJID like CRHD-OBJID, G_MFDATE like SY-DATUM, G_MLDATE like SY-DATUM. 0 0 0 0 with with with with header header header header line. line. line. line.

constants: C_KLART like KLAH-KLART value '002', "type 002--Equipment class ty pe C_PLNTY like MPOS-PLNTY value 'A', "type A--Genral Task List C_QMART like VIQMEL-QMART value 'M2'. "Notification type 'M2' data: V_DT_LOW type I, V_DT_HIGH type I, V_MON_LOW type I, V_MON_HIGH type I, V_YR_LOW type I, V_YR_HIGH type I. **Macros for Selection oprions printing data: V_CENTER01 V_CENTER02 V_RIGHT V_CONAME(34) type type type type P, P, P, C value 'GRASIM INDUSTRIES Ltd. CEMENT Mfg.'.

* data: IT_TEXTPOOL like TEXTPOOL occurs 0 with header line. *& Data declaration by GVS DATA: gd_recsize TYPE i. * Spool IDs

TYPES: BEGIN OF t_tbtcp. INCLUDE STRUCTURE tbtcp. TYPES: END OF t_tbtcp. DATA: it_tbtcp TYPE STANDARD TABLE OF t_tbtcp INITIAL SIZE 0, wa_tbtcp TYPE t_tbtcp. * Job Runtime Parameters DATA: gd_eventid LIKE tbtcm-eventid, gd_eventparm LIKE tbtcm-eventparm, gd_external_program_active LIKE tbtcm-xpgactive, gd_jobcount LIKE tbtcm-jobcount, gd_jobname LIKE tbtcm-jobname, gd_stepcount LIKE tbtcm-stepcount, gd_error TYPE sy-subrc, gd_reciever TYPE sy-subrc. DATA: w_recsize TYPE i. DATA: gd_subject LIKE sodocchgi1-obj_descr, it_mess_bod LIKE solisti1 OCCURS 0 WITH HEADER LINE, it_mess_att LIKE solisti1 OCCURS 0 WITH HEADER LINE, gd_sender_type LIKE soextreci1-adr_typ, gd_attachment_desc TYPE so_obj_nam, gd_attachment_name TYPE so_obj_des. * Spool to PDF conversions

DATA: gd_spool_nr LIKE tsp01-rqident, W_SPOOL_NR LIKE TSP01-RQIDENT, gd_destination LIKE rlgrap-filename, gd_bytecount LIKE tst01-dsize, gd_buffer TYPE string. * Binary store for PDF

DATA: BEGIN OF it_pdf_output OCCURS 0. INCLUDE STRUCTURE tline. DATA: END OF it_pdf_output. CONSTANTS: c_dev LIKE sy-sysid VALUE 'DEV', c_no(1) TYPE c VALUE 'X', c_device(4) TYPE c VALUE 'LOCL'. DATA : p_email LIKE somlreci1-receiver VALUE 'CBMKT_DEV02', p_sender LIKE somlreci1-receiver. DATA : SPNO LIKE TSP01-RQIDENT. DATA: X(1) TYPE i VALUE 1. *& End of data declaration

*& initialization INITIALIZATION. IF X < 1. X = X + 1. ENDIF. *----------------------------------------------------------------------* * Macro WRITE_SELECT_OPTION * *----------------------------------------------------------------------* define WRITE_SELECT_OPTION. CLEAR IT_TEXTPOOL. READ TABLE IT_TEXTPOOL WITH KEY ID ='S' KEY = &2. FORMAT COLOR COL_GROUP. IF IT_TEXTPOOL-ENTRY IS INITIAL. WRITE:/5 &2 . ELSE. SKIP. WRITE:/2 IT_TEXTPOOL-ENTRY+4 . ENDIF. * FORMAT COLOR COL_NEGATIVE. LOOP AT &1. WRITE: 27 &1-LOW . IF &1-HIGH <> ''. WRITE: 46 'To', 50 &1-HIGH . ENDIF. *---If Option is not 'EQ' or 'BT', write it---* IF &1-OPTION <> 'EQ' AND &1-OPTION <> 'BT'. WRITE: 71(2) &1-OPTION. ENDIF. *---If Sign is not Include, write it. IF &1-SIGN <> 'I'. WRITE: 74 'Excluded'. ENDIF. NEW-LINE. ENDLOOP. FORMAT COLOR OFF. end-of-definition. *----------------------------------------------------------------------* * Macro WRITE_PAREMETER * *----------------------------------------------------------------------* define WRITE_PARAMETER. CLEAR IT_TEXTPOOL. READ TABLE IT_TEXTPOOL WITH KEY ID ='S' KEY = &2. FORMAT COLOR COL_GROUP. IF IT_TEXTPOOL-ENTRY IS INITIAL. WRITE:/5 &2. ELSE. WRITE:/5 IT_TEXTPOOL-ENTRY+4. ENDIF. WRITE: 27 &1. FORMAT COLOR OFF. end-of-definition. **at selction-screen. at selection-screen on P_WERK. select single NAME1 into V_NAME1 from T001W where WERKS = P_WERK.

if SY-SUBRC <> 0. message E015(ZPM). endif. at selection-screen on S_DATE. V_DT_LOW = S_DATE-LOW+6(2). V_MON_LOW = S_DATE-LOW+4(2). V_YR_LOW = S_DATE-LOW+0(4). V_DT_HIGH = S_DATE-HIGH+6(2). V_MON_HIGH = S_DATE-HIGH+4(2). V_YR_HIGH = S_DATE-HIGH+0(4). if ( V_MON_HIGH ge 4 and ( V_MON_LOW = 1 or V_MON_LOW = 2 or V_MON_LOW = 3 ) ) and ( V_YR_LOW = V_YR_HIGH ). message E031(ZPM). endif. **start-of-selection. start-of-selection. ** Select Notfication from select perform F_SELECT_NITIFICATION_FROM_EQP. ** Select damage code perform F_SELECT_DAMAGE. ** Select Cause code perform F_SELECT_CAUSE. perform F_SELECT_YEARLY_FRQ. ** Formating Output perform F_OUTPUT. perform F_GET_WHY_WHY_DATA. perform F_WRITE_DATA. *& Converting output to pdf and sending mail to particular user PERFORM SPOOL_NO. PERFORM CONVERT_SPOOL_TO_PDF. PERFORM process_email. *&---------------------------------------------------------------------* *& Form f_select_nitification_from_eqp *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * --> p1 text * <-- p2 text *----------------------------------------------------------------------* form F_SELECT_NITIFICATION_FROM_EQP . data: L_OBJEK like KSSK-OBJEK, L_LINES type I. data: L_TEXT like BSVX-STTXT.

select QMNUM EQUNR AUSVN AUZTV AUSBS INGRP BEBER ARBPL ARBPLWERK IWERK AUSZ T AUFNR OBJNR into (IT_NOTFDATA-QMNUM, IT_NOTFDATA-EQUNR, IT_NOTFDATA-AUSVN, IT_NOTFD ATA-AUZTV, IT_NOTFDATA-AUSBS, IT_NOTFDATA-INGRP, IT_NOTFDATA-BEBER, IT_NOTFDATA-ARBPL, IT_NOTFDATA-ARBPLWERK, IT_NOTFDATA-IWERK, IT_NOTFDATA-AUSZT, IT_NOTFDATA-AUFNR, IT_NOTFDATA-OBJNR) "OBJNR added by Sameep 13/03/07 from VIQMEL where QMNUM QMART BEBER INGRP EQUNR AUSVN IWERK MSAUS AUSZT in S_QMNUM = C_QMART in S_BEBER in S_INGRP in S_EQUNR in S_DATE eq P_WERK = 'X' > 0. and and and and and and and and

append IT_NOTFDATA. endselect. **fOR SELECTING NOTIFICATION WITH STATUS 'NOCO' loop at IT_NOTFDATA. call function 'STATUS_TEXT_EDIT' exporting CLIENT = SY-MANDT FLG_USER_STAT = 'X' OBJNR = IT_NOTFDATA-OBJNR ONLY_ACTIVE = 'X' SPRAS = SY-LANGU importing LINE = L_TEXT exceptions OBJECT_NOT_FOUND = 1 others = 2. * Start of modification by Sameep Jain on 13/03/2007 * Ignore notifications set for Deletion if L_TEXT cs 'DLFL'. delete IT_NOTFDATA where OBJNR = IT_NOTFDATA-OBJNR. endif. * End of modification by Sameep Jain on 13/03/2007 if L_TEXT = 'OSNO'. delete IT_NOTFDATA where OBJNR = IT_NOTFDATA-OBJNR. endif.

endloop. loop at IT_NOTFDATA. *Begin of changes by psao 01/04/09 * SELECT SINGLE erlnam ernam erldat * INTO (it_notfdata-erlnam, it_notfdata-ernam, it_notfdata-erldat) * FROM qmsm * WHERE qmnum = it_notfdata-qmnum * AND manum = '0001'. select single ERLNAM ERNAM AENAM ERLDAT PETER WDVDAT

into (IT_NOTFDATA-ERLNAM, IT_NOTFDATA-ERNAM, IT_NOTFDATA-AENAM, IT_NOTFDATA-ERLDAT, IT_NOTFDATA-PETER, IT_NOTFDATA-WDVDAT) from QMSM where QMNUM = IT_NOTFDATA-QMNUM and MANUM = '0001'. *End of changes by psao 01/04/09 select single OBJNR into IT_NOTFDATA-OBJNR from VIAUFKST where AUFNR = IT_NOTFDATA-AUFNR. modify IT_NOTFDATA. select single EQKTX into IT_NOTFDATA-EQKTX from EQKT where EQUNR eq IT_NOTFDATA-EQUNR and SPRAS eq SY-LANGU. modify IT_NOTFDATA. endloop. loop at IT_NOTFDATA. select single ARBPL into IT_NOTFDATA-GEWRK from CRHD client specified where MANDT in ( select MANDT from T000 ) and OBJTY = 'A' and OBJID = IT_NOTFDATA-ARBPL and WERKS = IT_NOTFDATA-ARBPLWERK and VERWE = '0015' . if SY-SUBRC = 0. modify IT_NOTFDATA index SY-TABIX. endif. endloop. delete IT_NOTFDATA where GEWRK not in S_VAPLZ. loop at IT_NOTFDATA. select single * into corresponding fields of IT_COSS from COSS where OBJNR eq IT_NOTFDATA-OBJNR and WRTTP eq '04' and BEKNZ eq 'S'. append IT_COSS. select single * into corresponding fields of IT_COSP from COSP where OBJNR eq IT_NOTFDATA-OBJNR and WRTTP eq '04' and BEKNZ eq 'S'. append IT_COSP. endloop. loop at IT_COSS. IT_COSS-COST1 = IT_COSS-WTG001 + IT_COSS-WTG002 + IT_COSS-WTG003 + IT_COSS-W TG004 + IT_COSS-WTG005 + IT_COSS-WTG006 + IT_COSS-WTG007 + IT_COSS-WTG008 + IT_COSS-W TG009 + IT_COSS-WTG010 + IT_COSS-WTG011 + IT_COSS-WTG012 + IT_COSS-WTG013 + IT_COSS-W TG014 + IT_COSS-WTG015 + IT_COSS-WTG016. modify IT_COSS.

clear IT_COSS. endloop. loop at IT_COSP. IT_COSP-COST2 = IT_COSP-WTG001 + IT_COSP-WTG002 + IT_COSP-WTG003 + IT_COSP-W TG004 + IT_COSP-WTG005 + IT_COSP-WTG006 + IT_COSP-WTG007 + IT_COSP-WTG008 + IT_COSP-W TG009 + IT_COSP-WTG010 + IT_COSP-WTG011 + IT_COSP-WTG012 + IT_COSP-WTG013 + IT_COSP-W TG014 + IT_COSP-WTG015 + IT_COSP-WTG016. modify IT_COSP. clear IT_COSP. endloop. endform. " f_select_nitification_from_eqp *&---------------------------------------------------------------------* *& Form f_select_damage *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * --> p1 text * <-- p2 text *----------------------------------------------------------------------* form F_SELECT_DAMAGE . select QMNUM FENUM FEGRP FECOD OTGRP OTEIL into corresponding fields of table IT_DAMAGE_CODE from VIQMFE for all entries in IT_NOTFDATA where QMNUM = IT_NOTFDATA-QMNUM. **Damage description loop at IT_DAMAGE_CODE. select single KURZTEXT into IT_DAMAGE_CODE-DTEXT from QPCT where KATALOGART = 'C' and CODEGRUPPE = IT_DAMAGE_CODE-FEGRP and CODE = IT_DAMAGE_CODE-FECOD and SPRACHE = 'EN'. modify IT_DAMAGE_CODE index SY-TABIX transporting DTEXT. clear IT_DAMAGE_CODE. endloop. **Object description loop at IT_DAMAGE_CODE. select single KURZTEXT into IT_DAMAGE_CODE-OTEXT from QPCT where KATALOGART = 'B' and CODEGRUPPE = IT_DAMAGE_CODE-OTGRP and CODE = IT_DAMAGE_CODE-OTEIL and SPRACHE = 'EN'. modify IT_DAMAGE_CODE index SY-TABIX transporting OTEXT. clear IT_DAMAGE_CODE. endloop. endform. " f_select_damage *&---------------------------------------------------------------------* *& Form f_select_cause *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * --> p1 text

* <-- p2 text *----------------------------------------------------------------------* form F_SELECT_CAUSE . data: L_TEXT1(40), L_TEXT2(4). select QMNUM FENUM URNUM URGRP URCOD URTXT into corresponding fields of table IT_CAUSE_CODE from VIQMUR for all entries in IT_NOTFDATA where QMNUM = IT_NOTFDATA-QMNUM. loop at IT_CAUSE_CODE. select single KURZTEXT into IT_CAUSE_CODE-CTEXT1 from QPCT where KATALOGART = 5 and CODEGRUPPE = IT_CAUSE_CODE-URGRP and CODE = IT_CAUSE_CODE-URCOD and SPRACHE = 'EN'. if SY-SUBRC = 0. modify IT_CAUSE_CODE index SY-TABIX transporting CTEXT1. endif. IT_CAUSE_CODE-CTEXT = IT_CAUSE_CODE-URTXT. split IT_CAUSE_CODE-CTEXT at '-' into L_TEXT1 L_TEXT2. IT_CAUSE_CODE-CTEXT = L_TEXT1. condense L_TEXT2 . IT_CAUSE_CODE-FLAG = L_TEXT2. modify IT_CAUSE_CODE index SY-TABIX transporting CTEXT FLAG. clear IT_CAUSE_CODE. endloop. endform. " f_select_cause *&---------------------------------------------------------------------* *& Form f_output *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * --> p1 text * <-- p2 text *----------------------------------------------------------------------* form F_OUTPUT . data: L_QMNUM like VIQMEL-QMNUM. clear :IT_DAMAGE_CODE. loop at IT_DAMAGE_CODE. move IT_DAMAGE_CODE-QMNUM move IT_DAMAGE_CODE-OTGRP move IT_DAMAGE_CODE-FENUM move IT_DAMAGE_CODE-FEGRP move IT_DAMAGE_CODE-FECOD move IT_DAMAGE_CODE-DTEXT append IT_OUTPUT. endloop.

to to to to to to

IT_OUTPUT-QMNUM. IT_OUTPUT-OTGRP. IT_OUTPUT-FENUM. IT_OUTPUT-FEGRP. IT_OUTPUT-FECOD. IT_OUTPUT-DTEXT.

clear :IT_DAMAGE_CODE, IT_NOTFDATA. loop at IT_DAMAGE_CODE. read table IT_NOTFDATA with key QMNUM = IT_DAMAGE_CODE-QMNUM.

if SY-SUBRC = 0. move IT_NOTFDATA-EQUNR to IT_CUMHRS-EQUNR. IT_CUMHRS-BDHRS = IT_NOTFDATA-AUSZT / 3600. IT_CUMHRS-FRQ = 1. endif. move IT_DAMAGE_CODE-OTGRP to IT_CUMHRS-OTGRP. move IT_DAMAGE_CODE-FECOD to IT_CUMHRS-FECOD. move IT_DAMAGE_CODE-QMNUM to IT_CUMHRS-QMNUM. append IT_CUMHRS. endloop. clear :IT_DAMAGE_CODE, IT_NOTFDATA. sort IT_CUMHRS by EQUNR OTGRP FECOD. loop at IT_CUMHRS. clear L_QMNUM. L_QMNUM = IT_CUMHRS-QMNUM. at new FECOD. sum. move IT_CUMHRS-EQUNR to IT_CUMHRS_SUM-EQUNR. move IT_CUMHRS-BDHRS to IT_CUMHRS_SUM-BDHRS. move IT_CUMHRS-FECOD to IT_CUMHRS_SUM-FECOD. move L_QMNUM to IT_CUMHRS_SUM-QMNUM. move IT_CUMHRS-FRQ to IT_CUMHRS_SUM-FRQ. append IT_CUMHRS_SUM. endat. endloop. loop at IT_OUTPUT. select single EQKTX HERST TYPBZ TIDNR into (IT_OUTPUT-EQKTX, IT_OUTPUT-HERST, IT_OUTPUT-TYPBZ, IT_OUTPUT-TI DNR) from V_EQUI where EQUNR eq IT_OUTPUT-EQUNR. modify IT_OUTPUT. endloop. endform. " f_output **&---------------------------------------------------------------------* **& Form f_get_eqpt_details **&---------------------------------------------------------------------* ** text **----------------------------------------------------------------------* ** --> p1 text ** <-- p2 text **----------------------------------------------------------------------* *form f_get_eqpt_details . * * * loop at it_eqp1. * condense it_eqp1-objek. * select single herst typbz * into (it_eqp1-herst, it_eqp1-typbz ) * from equi * where equnr = it_eqp1-objek. * modify it_eqp1 index sy-tabix. * clear it_eqp1. * endloop. * loop at it_eqp1.

* * select single tidnr * into it_eqp1-tidnr * from equz * where equnr = it_eqp1-objek * and datbi ge sy-datum * and eqlfn = 1. * modify it_eqp1 index sy-tabix. * clear it_eqp1. * endloop. * loop at it_eqp1. * * select single eqktx * into it_eqp1-eqktx * from eqkt * where equnr = it_eqp1-objek * and spras = 'EN'. * modify it_eqp1 index sy-tabix. * clear it_eqp1. * endloop. *endform. " f_get_eqpt_details * ***************************************************************************** *&---------------------------------------------------------------------* *& Form f_get_dates *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * --> p1 text * <-- p2 text *----------------------------------------------------------------------* *&---------------------------------------------------------------------* *& Form f_get_why_why_data *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * --> p1 text * <-- p2 text *----------------------------------------------------------------------* form F_GET_WHY_WHY_DATA . select * into corresponding fields of table IT_ZDESC from ZTPM_WHYWHYANS for all entries in IT_NOTFDATA where ZZ_QMNUM eq IT_NOTFDATA-QMNUM. endform. " f_get_why_why_data *&---------------------------------------------------------------------* *& Form f_write_data *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * --> p1 text * <-- p2 text *----------------------------------------------------------------------* form F_WRITE_DATA . data: L_DUR type P decimals 2, L_EQKTX like EQKT-EQKTX,

L_COST like COSP-WTG001, L_INDEX type I, L_CCODE(4) type N. data: H_OBJNR like THEAD-TDNAME. "rm63t-objnr. data: LEXIST like VIQMEL-KZMLA. data: LINV like EQKT-KZLTX. data: LLANGU like SY-LANGU. constants: L_OB(2) value 'OB', L_WHY(2) value 'WH', L_RC(2) value 'RC', L_RM(2 ) value 'RM'. if P_HEAD = 'X'. write: 'Selection Options' color col_heading . WRITE_PARAMETER V_NAME1 'Plant :'(004). WRITE_SELECT_OPTION S_BEBER 'Plant section :'(005). WRITE_SELECT_OPTION S_INGRP 'Planner Group :'(007). WRITE_SELECT_OPTION S_DATE 'Period :'(006). write:/(80) SY-ULINE. endif. sort IT_NOTFDATA by BEBER AUSVN AUZTV. loop at IT_NOTFDATA. Changed by Ankur 09.09.11 at END OF QMNUM. NEW-PAGE. ENDAT. * End of Change by Ankur * clear: L_DUR, L_EQKTX. IT_NOTFDATA-DURATION = IT_NOTFDATA-AUSZT / 3600. clear: IT_DAMAGE_CODE, IT_CUMHRS_SUM, IT_YCF. read table IT_DAMAGE_CODE with key QMNUM = IT_NOTFDATA-QMNUM. read table IT_CUMHRS_SUM with key EQUNR = IT_NOTFDATA-EQUNR FECOD = IT_DAMA GE_CODE-FECOD. read table IT_YCF DE-FECOD. with key EQUNR = IT_NOTFDATA-EQUNR FECOD = IT_DAMAGE_CO

write:/(80) SY-ULINE. write:/1 SY-VLINE, 2(76) 'WHY WHY ANALYSIS REPORT' centered color col_heading , 80 SY-VLINE. write:/(80) SY-ULINE. write:/1 SY-VLINE, 2 'Date & Time of Occurence:',28 IT_NOTFDATA-AUSVN color col_normal intensified on, 41 IT_NOTFDATA-AUZTV color col_normal intensified on, * 55 'B/D durtn:',(10) it_notfdata-duration color col_normal Intensifi ed On, 80 SY-VLINE, /1 SY-VLINE, 2 'Notification No:', 20 IT_NOTFDATA-QMNUM color col_normal intensified on, 41 'Plant Section:', 56 IT_NOTFDATA-BEBER color col_normal intensifi

ed on, 80 SY-VLINE. write:/1 SY-VLINE, 2 'PlannerGroup:', 20 IT_NOTFDATA-INGRP color col_normal intensified on, 41 'Main WorkCtr:', 56 IT_NOTFDATA-GEWRK color col_normal intensifie d on, 80 SY-VLINE. write:/1 SY-VLINE, 80 SY-VLINE. write:/1 SY-VLINE, 2 'Equipment No & Desc:', 23(10) IT_NOTFDATA-EQUNR color col_normal intensified on, 35 IT_NOTFDATA-EQKTX color col_normal intensified on, 80 SY-VLINE. write:/1 SY-VLINE, 80 SY-VLINE. write:/1 SY-VLINE, 2 'Object part & Desc:', tensified on, 35 IT_DAMAGE_CODE-OTEXT 80 SY-VLINE, /1 SY-VLINE, 2 'Damage & Desc:', ntensified on, 35 IT_DAMAGE_CODE-DTEXT 80 SY-VLINE. 23 IT_DAMAGE_CODE-OTGRP color col_normal in color col_normal intensified on, 23 IT_DAMAGE_CODE-FEGRP color col_normal i color col_normal intensified on,

write:/1 SY-VLINE, 80 SY-VLINE. write:/1 SY-VLINE, 2 'Hrs Lost:', 13(10) IT_NOTFDATA-DURATION col_normal intensified on, 34 'Cum.Hrs:', 45(10) IT_CUMHRS_SUM-BDHRS col_normal intensified on, 56 'Cum.Frq:', (10) IT_CUMHRS_SUM-FRQ col_normal intensified on, 80 SY-VLINE, /1 SY-VLINE, 2 'YrCum.Hrs:', 13(10) IT_YCF-BDHRS l_normal intensified on, 34 'YrCum.Frq:', 45(10) IT_YCF-FRQ l_normal intensified on, 80 SY-VLINE. write:/(80) SY-ULINE. **&-------------------------Observation---------------------------------------------------&* H_OBJNR = IT_NOTFDATA-QMNUM. select single * from STXH where TDOBJECT = 'ZPMWHY' and TDNAME = H_OBJNR and TDID = 'ZPM1' left-justified color left-justified color left-justified color

left-justified color co left-justified color co

and TDSPRAS = 'E'. if SY-SUBRC = 0. call function 'READ_TEXT' exporting ID = 'ZPM1' LANGUAGE = 'E' NAME = H_OBJNR OBJECT = 'ZPMWHY' tables LINES = IT_OB. else. perform F_APPEND_SHORTTEXT tables IT_OB using IT_NOTFDATA-QMNUM L_OB. endif. write:/1 SY-VLINE, 2(76) 'Observation' centered color col_heading intensified on, 80 SY-VLINE. write:/(80) SY-ULINE. delete adjacent duplicates from IT_OB. loop at IT_OB. write:/1 SY-VLINE, 2 IT_OB-TDLINE, 80 SY-VLINE. endloop. write:/(80) SY-ULINE. **&-------------------------Possible Reasons----------------------------------------------&* write:/1 SY-VLINE, 2 ' Group' color col_heading , 10 SY-VLINE , 11(20) 'Cause codeText' centered color col_heading , 31 SY-VLINE, 32(38) 'Pos.Reason' centered color col_heading , 71 SY-VLINE, 72 'yes/no' color col_heading, 80 SY-VLINE. write:/(80) SY-ULINE. loop at IT_CAUSE_CODE where QMNUM = IT_NOTFDATA-QMNUM. write:/1 SY-VLINE, 2 IT_CAUSE_CODE-URGRP, 10 SY-VLINE , 11 IT_CAUSE_CODE-CTEXT1+0(20), 31 SY-VLINE, 32 IT_CAUSE_CODE-CTEXT, 71 SY-VLINE, 72 IT_CAUSE_CODE-FLAG, 80 SY-VLINE, /1 SY-VLINE, 10 SY-VLINE , 11 IT_CAUSE_CODE-CTEXT1+20(20), 31 SY-VLINE, 32 it_cause_code-ctext+19(20), 71 SY-VLINE, 80 SY-VLINE. endloop. write:/(80) SY-ULINE. **&-------------------------Why Analysis---------------------------------------------------&* select single * from STXH where TDOBJECT = 'ZPMWHY' and TDNAME = H_OBJNR

and TDID = 'ZPM2' and TDSPRAS = 'E'. if SY-SUBRC = 0. call function 'READ_TEXT' exporting ID = 'ZPM2' LANGUAGE = 'E' NAME = H_OBJNR OBJECT = 'ZPMWHY' tables LINES = IT_WHY. else. perform F_APPEND_SHORTTEXT tables IT_WHY using IT_NOTFDATA-QMNUM L_WHY. endif. write:/1 SY-VLINE, 2(76) 'Why Why Analysis' centered color col_heading intensified on, 80 SY-VLINE. write:/(80) SY-ULINE. delete adjacent duplicates from IT_WHY. loop at IT_WHY. write:/1 SY-VLINE, 2 IT_WHY-TDLINE, 80 SY-VLINE. endloop. write:/(80) SY-ULINE. **&-------------------------Rectifications---------------------------------------------------&* select single * from STXH where TDOBJECT = 'ZPMWHY' and TDNAME = H_OBJNR and TDID = 'ZPM3' and TDSPRAS = 'E'. if SY-SUBRC = 0. call function 'READ_TEXT' exporting ID = 'ZPM3' LANGUAGE = 'E' NAME = H_OBJNR OBJECT = 'ZPMWHY' tables LINES = IT_RC. else. perform F_APPEND_SHORTTEXT tables IT_RC using IT_NOTFDATA-QMNUM L_RC. endif. write:/1 SY-VLINE, 2(76) 'Rectifications' centered color col_heading intensified on, 80 SY-VLINE. write:/(80) SY-ULINE. delete adjacent duplicates from IT_RC. loop at IT_RC. write:/1 SY-VLINE, 2 IT_RC-TDLINE,

80 SY-VLINE. endloop. write:/(80) SY-ULINE. **&-------------------------Recommendations-------------------------------------------------&* *Begin of changes by psao 01/04/09 * SELECT SINGLE * FROM stxh * WHERE * tdobject = 'ZPMWHY' * AND tdname = h_objnr * AND tdid = 'ZPM4' * AND tdspras = 'E'. * IF sy-subrc = 0. * * CALL FUNCTION 'READ_TEXT' * EXPORTING * id = 'ZPM4' * language = 'E' * name = h_objnr * object = 'ZPMWHY' * TABLES * lines = it_rm. * ELSE. * PERFORM f_append_shorttext TABLES it_rm USING it_notfdata-qmnum l_rm. * ENDIF. perform F_APPEND_SHORTTEXT tables IT_RM using IT_NOTFDATA-QMNUM L_RM. *End of changes by psao 01/04/09 write:/1 SY-VLINE, 2(76) 'Recommendations 1' centered color col_heading intensified on, 80 SY-VLINE. write:/(80) SY-ULINE. delete adjacent duplicates from IT_RM. loop at IT_RM where TDFORMAT = 'RM'. write:/1 SY-VLINE, 2 IT_RM-TDLINE, 80 SY-VLINE. endloop. write:/(80) SY-ULINE. *&--START OF CHANGE BY NPANDEY write:/1 SY-VLINE, 2(76) 'Recommendations 2' centered color col_heading intensified on, 80 SY-VLINE. write:/(80) SY-ULINE. loop at IT_RM where TDFORMAT = 'R2'. write:/1 SY-VLINE, 2 IT_RM-TDLINE, 80 SY-VLINE. endloop. write:/(80) SY-ULINE. write:/1 SY-VLINE, 2(76) 'Recommendations 3' centered color col_heading intensified on, 80 SY-VLINE.

write:/(80) SY-ULINE. loop at IT_RM where TDFORMAT = 'R3'. write:/1 SY-VLINE, 2 IT_RM-TDLINE, 80 SY-VLINE. endloop. write:/(80) SY-ULINE. *&--END OF CHANGE BY NPANDEY **&-------------------------Footer-------------------------------------------------&* read table IT_COSS with key OBJNR = IT_NOTFDATA-OBJNR. read table IT_COSP with key OBJNR = IT_NOTFDATA-OBJNR. L_COST = IT_COSS-COST1 + IT_COSP-COST2. *Begin of changes by psao 01/04/09 * WRITE:/1 sy-vline, * 2 'Resper1:', 10 sy-vline, it_notfdata-erlnam, * 40 'Resper2:', 50 sy-vline, it_notfdata-ernam, * 80 sy-vline. write:/1 SY-VLINE, 2 'Res Pers1', 10 SY-VLINE, IT_NOTFDATA-ERLNAM, 24 SY-VLINE, 25 'Res Pers2:', 35 SY-VLINE, IT_NOTFDATA-ERNAM, 49 SY-VLINE, 50 'Res Pers3:', 60 SY-VLINE, IT_NOTFDATA-AENAM, 80 SY-VLINE. *End of changes by psao 01/04/09 write:/(80) SY-ULINE. *Begin of changes by psao 01/04/09 * WRITE:/1 sy-vline, * 2 'TgtDate:', 10 sy-vline, it_notfdata-erldat, 80 sy-vline. write:/1 SY-VLINE, 2 'Targ Dt1', 10 SY-VLINE, IT_NOTFDATA-ERLDAT, 24 SY-VLINE, 25 'Targ Dt2', 35 SY-VLINE, IT_NOTFDATA-PETER, 49 SY-VLINE, 50 'Targ Dt3', 60 SY-VLINE, IT_NOTFDATA-WDVDAT, 80 SY-VLINE. *End of changes by psao 01/04/09 write:/(80) SY-ULINE. clear:IT_OB, IT_WHY, IT_CAUSE_CODE, IT_RC, IT_RM. clear: L_COST, IT_COSS, IT_COSP. refresh: IT_OB, IT_WHY, IT_RC, IT_RM. write:/(80)' .' color 6. endloop. endform. " f_write_data *&---------------------------------------------------------------------* *& Form f_select_yearly_frq *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * --> p1 text * <-- p2 text

*----------------------------------------------------------------------* form F_SELECT_YEARLY_FRQ . data: L_DATE1 like SY-DATUM, L_DATE2 like SY-DATUM, L_YEAR(4), "Date from selection option L_YEAR1(4), " year start L_YEAR2(4), " year End L_YEAR3 type I, " year start L_YEAR4 type I, " year End L_MONTH type I. clear: L_YEAR, L_YEAR1, L_YEAR2, L_YEAR3, L_YEAR4, L_DATE1, L_DATE2. L_YEAR = S_DATE-LOW+0(4). clear: L_MONTH. L_MONTH = S_DATE-LOW+4(2). if L_MONTH = 1 or L_MONTH = 2 or L_MONTH = 3 . L_YEAR3 = L_YEAR - 1. L_YEAR1 = L_YEAR3. L_YEAR2 = L_YEAR. concatenate L_YEAR1 '04' '01' into L_DATE1. concatenate L_YEAR2 '03' '31' into L_DATE2. else. L_YEAR3 = L_YEAR + 1. L_YEAR1 = L_YEAR. L_YEAR2 = L_YEAR3. concatenate L_YEAR1 '04' '01' into L_DATE1. concatenate L_YEAR2 '03' '31' into L_DATE2. endif.

select QMNUM EQUNR AUSZT into corresponding fields of table IT_FRQYEAR from VIQMEL where QMART = C_QMART and AUSVN between L_DATE1 and L_DATE2 and IWERK eq P_WERK and MSAUS = 'X' and AUSZT > 0. loop at IT_FRQYEAR. select QMNUM FECOD into corresponding fields of IT_DMYEAR from VIQMFE where QMNUM eq IT_FRQYEAR-QMNUM. if SY-SUBRC = 0. IT_DMYEAR-BDHRS = IT_FRQYEAR-AUSZT / 3600. IT_DMYEAR-EQUNR = IT_FRQYEAR-EQUNR. IT_DMYEAR-FRQ = 1. append IT_DMYEAR. endif. endselect. endloop. sort IT_DMYEAR by EQUNR FECOD. loop at IT_DMYEAR. at new FECOD. sum.

IT_YCF-EQUNR = IT_YCF-BDHRS = IT_YCF-FRQ = IT_YCF-FECOD = append IT_YCF. endat. endloop.

IT_DMYEAR-EQUNR. IT_DMYEAR-BDHRS. IT_DMYEAR-FRQ. IT_DMYEAR-FECOD.

endform. " f_select_yearly_frq *&---------------------------------------------------------------------* *& Form f_append_shorttext *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * -->P_IT_OB text * -->P_IT_NOTFDATA_QMNUM text * -->P_1969 text *----------------------------------------------------------------------* form F_APPEND_SHORTTEXT tables P_IT structure IT_OB using P_QMNUM like VIQMEL-QMNUM P_TEXT like ZTPM_WHYWHYANS-ZZ_LINE. clear P_IT. refresh P_IT. clear IT_ZDESC. read table IT_ZDESC with key ZZ_QMNUM = P_QMNUM ZZ_LINE = P_TEXT. if P_TEXT = 'RM'. P_IT-TDFORMAT = 'RM'. endif. P_IT-TDLINE = IT_ZDESC-ZZ_LINE1. append P_IT. P_IT-TDLINE = IT_ZDESC-ZZ_LINE2. append P_IT. */ Start of change by Shweta Dwivedi 13-May-2010 GRDK930312 P_IT-TDLINE = IT_ZDESC-ZZ_LINE3. append P_IT. */ End of change by Shweta Dwivedi 13-May-2010 GRDK930312 *Begin of changes by psao dated 01/04/09 * p_it-tdline = it_zdesc-zz_line3. * APPEND p_it. * * p_it-tdline = it_zdesc-zz_line4. * APPEND p_it. if not P_TEXT = 'RM'. P_IT-TDLINE = IT_ZDESC-ZZ_LINE3. append P_IT. P_IT-TDLINE = IT_ZDESC-ZZ_LINE4. append P_IT. else. clear IT_ZDESC. read table IT_ZDESC with key ZZ_QMNUM = P_QMNUM ZZ_LINE = 'R2'. P_IT-TDFORMAT = 'R2'. P_IT-TDLINE = IT_ZDESC-ZZ_LINE1. append P_IT. */ Start of change by Shweta Dwivedi 13-May-2010 GRDK930312 P_IT-TDLINE = IT_ZDESC-ZZ_LINE2. append P_IT.

P_IT-TDLINE = IT_ZDESC-ZZ_LINE3. append P_IT. */ End of change by Shweta Dwivedi 13-May-2010 GRDK930312 clear IT_ZDESC. read table IT_ZDESC with key ZZ_QMNUM = P_QMNUM ZZ_LINE = 'R3'. P_IT-TDFORMAT = 'R3'. P_IT-TDLINE = IT_ZDESC-ZZ_LINE1. append P_IT. */ Start of change by Shweta Dwivedi 13-May-2010 GRDK930312 P_IT-TDLINE = IT_ZDESC-ZZ_LINE2. append P_IT. P_IT-TDLINE = IT_ZDESC-ZZ_LINE3. append P_IT. */ End of change by Shweta Dwivedi 13-May-2010 GRDK930312 endif. *End of changes by psao dated 01/04/09 endform. " f_append_shorttext *&---------------------------------------------------------------------* *& Form GET_JOB_DETAILS *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * --> p1 text * <-- p2 text *----------------------------------------------------------------------* FORM GET_JOB_DETAILS . CALL FUNCTION 'GET_JOB_RUNTIME_INFO' IMPORTING eventid eventparm = gd_eventid = gd_eventparm

external_program_active = gd_external_program_active jobcount jobname stepcount EXCEPTIONS no_runtime_info OTHERS = 1 = 2. = gd_jobcount = gd_jobname = gd_stepcount

ENDFORM. " GET_JOB_DETAILS *&---------------------------------------------------------------------* *& Form OBTAIN_SPOOL_ID *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * --> p1 text * <-- p2 text *----------------------------------------------------------------------*

FORM OBTAIN_SPOOL_ID . CHECK NOT ( gd_jobname IS INITIAL ). CHECK NOT ( gd_jobcount IS INITIAL ).

SELECT * FROM tbtcp INTO TABLE it_tbtcp WHERE AND AND AND ORDER BY jobname jobcount stepcount listident jobname jobcount stepcount. = gd_jobname = gd_jobcount = gd_stepcount <> '0000000000'

READ TABLE it_tbtcp INTO wa_tbtcp INDEX 1. IF sy-subrc = 0. message s004(zdd) with gd_spool_nr. gd_spool_nr = wa_tbtcp-listident. MESSAGE s004(zdd) WITH gd_spool_nr. ELSE. MESSAGE s005(zdd). ENDIF. ENDFORM. " OBTAIN_SPOOL_ID *&---------------------------------------------------------------------* *& Form CONVERT_SPOOL_TO_PDF *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * --> p1 text * <-- p2 text *----------------------------------------------------------------------* FORM CONVERT_SPOOL_TO_PDF . CALL FUNCTION 'CONVERT_ABAPSPOOLJOB_2_PDF' EXPORTING src_spoolid = SPNO no_dialog = c_no dst_device = c_device IMPORTING

pdf_bytecount TABLES pdf EXCEPTIONS err_no_abap_spooljob err_no_spooljob err_no_permission err_conv_not_possible err_bad_destdevice user_cancelled err_spoolerror err_temseerror err_btcjob_open_failed err_btcjob_submit_failed err_btcjob_close_failed OTHERS *

= gd_bytecount = it_pdf_output = = = = = = = = = = = = 1 2 3 4 5 6 7 8 9 10 11 12.

CHECK sy-subrc = 0. Transfer the 132-long strings to 255-long strings LOOP AT it_pdf_output. TRANSLATE it_pdf_output USING ' ~'. CONCATENATE gd_buffer it_pdf_output INTO gd_buffer. ENDLOOP. TRANSLATE gd_buffer USING '~ '. DO. it_mess_att = gd_buffer. APPEND it_mess_att. SHIFT gd_buffer LEFT BY 255 PLACES. IF gd_buffer IS INITIAL. EXIT. ENDIF. ENDDO.

ENDFORM. " CONVERT_SPOOL_TO_PDF *&---------------------------------------------------------------------* *& Form PROCESS_EMAIL *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * --> p1 text * <-- p2 text *----------------------------------------------------------------------* FORM PROCESS_EMAIL . DESCRIBE TABLE it_mess_att LINES gd_recsize. CHECK gd_recsize > 0. PERFORM send_email USING p_email. ENDFORM. " PROCESS_EMAIL *&---------------------------------------------------------------------* *& Form SEND_EMAIL *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * -->P_P_EMAIL1 text *----------------------------------------------------------------------*

FORM SEND_EMAIL USING

P_P_EMAIL1.

CHECK NOT ( p_email IS INITIAL ). REFRESH it_mess_bod. * Default subject matter gd_subject = 'Subject'. gd_attachment_desc = 'Attachname'. * CONCATENATE 'attach_name' ' ' INTO gd_attachment_name. it_mess_bod = 'Message Body text, line 1'. APPEND it_mess_bod. it_mess_bod = 'Message Body text, line 2...'. APPEND it_mess_bod. * If no sender specified - default blank IF p_sender EQ space. gd_sender_type = space. ELSE. gd_sender_type = 'INT'. ENDIF. * Send file by email as .xls speadsheet

PERFORM send_file_as_email_attachment tables it_mess_bod it_mess_att using p_email 'Example .xls documnet attachment' 'PDF' gd_attachment_name gd_attachment_desc p_sender gd_sender_type changing gd_error gd_reciever. ENDFORM. " SEND_EMAIL *&---------------------------------------------------------------------* *& Form SEND_FILE_AS_EMAIL_ATTACHMENT *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * -->P_IT_MESS_BOD text * -->P_IT_MESS_ATT text * -->P_P_EMAIL text * -->P_3261 text * -->P_3262 text * -->P_GD_ATTACHMENT_NAME text * -->P_GD_ATTACHMENT_DESC text * -->P_P_SENDER text * -->P_GD_SENDER_TYPE text * <--P_GD_ERROR text * <--P_GD_RECIEVER text *----------------------------------------------------------------------* FORM SEND_FILE_AS_EMAIL_ATTACHMENT TABLES it_message

it_attach using p_email p_mtitle p_format p_filename p_attdescription p_sender_address p_sender_addres_type changing p_error p_reciever. DATA: ld_error TYPE sy-subrc, ld_reciever TYPE sy-subrc, ld_mtitle LIKE sodocchgi1-obj_descr, ld_email LIKE somlreci1-receiver, ld_format TYPE so_obj_tp , ld_attdescription TYPE so_obj_nam , ld_attfilename TYPE so_obj_des , ld_sender_address LIKE soextreci1-receiver, ld_sender_address_type LIKE soextreci1-adr_typ, ld_receiver LIKE sy-subrc. data: t_packing_list like sopcklsti1 occurs 0 with header line, t_contents like solisti1 occurs 0 with header line, t_receivers like somlreci1 occurs 0 with header line, t_attachment like solisti1 occurs 0 with header line, t_object_header like solisti1 occurs 0 with header line, w_cnt type i, w_sent_all(1) type c, w_doc_data like sodocchgi1.

ld_email = p_email. ld_mtitle = p_mtitle. ld_format ld_attdescription ld_attfilename ld_sender_address ld_sender_address_type *

= = = = =

p_format. p_attdescription. p_filename. p_sender_address. p_sender_addres_type.

Fill the document data. w_doc_data-doc_size = 1.

Populate the subject/generic message attributes w_doc_data-obj_langu = sy-langu. w_doc_data-obj_name = 'SAPRPT'. w_doc_data-obj_descr = ld_mtitle . w_doc_data-sensitivty = 'F'.

Fill the document data and get size of attachment CLEAR w_doc_data. READ TABLE it_attach INDEX w_cnt. w_doc_data-doc_size = ( w_cnt - 1 ) * 255 + STRLEN( it_attach ). w_doc_data-obj_langu = sy-langu. w_doc_data-obj_name = 'SAPRPT'. w_doc_data-obj_descr = ld_mtitle.

w_doc_data-sensitivty = 'F'. CLEAR t_attachment. REFRESH t_attachment. t_attachment[] = it_attach[]. * Describe the body of the message CLEAR t_packing_list. REFRESH t_packing_list. t_packing_list-transf_bin t_packing_list-head_start t_packing_list-head_num = t_packing_list-body_start = space. = 1. 0. = 1.

DESCRIBE TABLE it_message LINES t_packing_list-body_num. t_packing_list-doc_type = 'RAW'. APPEND t_packing_list. * Create attachment notification t_packing_list-transf_bin t_packing_list-head_start t_packing_list-head_num t_packing_list-body_start = = = = 'X'. 1. 1. 1.

DESCRIBE TABLE t_attachment LINES t_packing_list-body_num. t_packing_list-doc_type t_packing_list-obj_descr t_packing_list-obj_name t_packing_list-doc_size APPEND t_packing_list. * = = = = ld_format. ld_attdescription. ld_attfilename. t_packing_list-body_num * 255.

Add the recipients email address CLEAR t_receivers. REFRESH t_receivers. t_receivers-receiver = ld_email. t_receivers-rec_type = 'B'. t_receivers-com_type = 'INT'. t_receivers-notif_del = 'X'. t_receivers-notif_ndel = 'X'. APPEND t_receivers. CALL FUNCTION 'SO_DOCUMENT_SEND_API1' EXPORTING document_data put_in_outbox sender_address sender_address_type commit_work IMPORTING sent_to_all TABLES = = = = = w_doc_data 'X' ld_sender_address ld_sender_address_type 'X'

= w_sent_all

packing_list contents_bin contents_txt receivers EXCEPTIONS too_many_receivers document_not_sent document_type_not_exist operation_no_authorization parameter_error x_error enqueue_error OTHERS * Populate zerror return code ld_error = sy-subrc. * Populate zreceiver return code

= = = = = = = = = = = =

t_packing_list t_attachment it_message t_receivers 1 2 3 4 5 6 7 8.

LOOP AT t_receivers. ld_receiver = t_receivers-retrn_code. ENDLOOP. ENDFORM. " SEND_FILE_AS_EMAIL_ATTACHMENT *&---------------------------------------------------------------------* *& Form SPOOL_NO *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * --> p1 text * <-- p2 text *----------------------------------------------------------------------* FORM SPOOL_NO . DATA: L_PARAMS TYPE PRI_PARAMS, L_VALID TYPE STRING, W_SPOOL_NR LIKE TSP01-RQIDENT. * TO GET PRINT PARAMETERS * CALL FUNCTION 'GET_PRINT_PARAMETERS' * IMPORTING * OUT_PARAMETERS = L_PARAMS * VALID = L_VALID. * IF SY-SUBRC <> 0. * ENDIF. CALL FUNCTION 'SET_PRINT_PARAMETERS' EXPORTING layout = 'X_65_80'. * line_count = 64 * line_size = 140. * Internal table for Selection Screen DATA: BEGIN OF I_RSPARAMS OCCURS 0. INCLUDE STRUCTURE RSPARAMS. DATA: END OF I_RSPARAMS. * Store the current selection screen details CALL FUNCTION 'RS_REFRESH_FROM_SELECTOPTIONS' EXPORTING CURR_REPORT = SY-REPID *IMPORTING * SP =

TABLES SELECTION_TABLE = I_RSPARAMS *EXCEPTIONS * NOT_FOUND = 1 * NO_REPORT = 2 * OTHERS = 3 . IF SY-SUBRC <> 0. *MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO * WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. ENDIF. *SUBMIT TO GET THE SPOOL NUMBER *IF SY-TABIX = '0'. *SUBMIT ZRPM_WHYWHY_A4_NEW WITH SELECTION-TABLE I_RSPARAMS * TO SAP-SPOOL * SPOOL PARAMETERS L_PARAMS * WITHOUT SPOOL DYNPRO * AND RETURN. *ENDIF. * SELECT THE RECENTLY CREATED SPOOL SELECT MAX( RQIDENT ) INTO W_SPOOL_NR FROM TSP01 WHERE RQCLIENT = SY-MANDT AND RQOWNER = SY-UNAME. SPNO = W_SPOOL_NR. ENDFORM. " SPOOL_NO

Anda mungkin juga menyukai