Anda di halaman 1dari 27

*&---------------------------------------------------------------------*

*& Report ZONE_PAGE_EMPLOYEE_DETAILS


*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT

ZONE_PAGE_EMPLOYEE_DETAILS.

TABLES: PA0000,
PA0001,
PA0002,
PA9000,
PA9001,
PA0022,
T500P,
T001P,
T529T,
T517T,
***********************
PA0021,
T591S,
PA0023,
PA0016,
PA0105,
PA9003.

TYPES: BEGIN OF TY_PA0000,


PERNR TYPE PA0000-PERNR,
SUBTY TYPE PA0000-SUBTY,
OBJPS TYPE PA0000-OBJPS,
SPRPS TYPE PA0000-SPRPS,
ENDDA TYPE PA0000-ENDDA,
BEGDA TYPE PA0000-BEGDA,
MASSN TYPE PA0000-MASSN,
END OF TY_PA0000.
TYPES: BEGIN OF TY_PA0001,
PERNR TYPE PA0001-PERNR,
BEGDA TYPE PA0001-BEGDA,
BUKRS TYPE PA0001-BUKRS,
WERKS TYPE PA0001-WERKS,
PERSK TYPE PA0001-PERSK,
PLANS TYPE PA0001-PLANS,

BTRTL TYPE PA0001-BTRTL,


ENAME TYPE PA0001-ENAME,
OTYPE TYPE PA0001-OTYPE,
END OF TY_PA0001.
TYPES: BEGIN OF TY_HRP1001,
OTYPE TYPE HRP1001-OTYPE,
OBJID TYPE HRP1001-OBJID,
SUBTY TYPE HRP1001-SUBTY,
SOBID TYPE HRP1001-SOBID,
END OF TY_HRP1001.
TYPES: BEGIN OF TY_PA0002,
PERNR TYPE PA0002-PERNR,
NACHN TYPE PA0002-NACHN,
VORNA TYPE PA0002-VORNA,
GBDAT TYPE PA0002-GBDAT,
END OF TY_PA0002.

TYPES: BEGIN OF TY_PA9000,


PERNR TYPE PA9000-PERNR,
REFTELEPHONENPO TYPE PA9000-REFTELEPHONENPO,
END OF TY_PA9000.
TYPES: BEGIN OF TY_PA9001,
PERNR TYPE PA9001-PERNR,
ENDDA TYPE PA9001-ENDDA,
BEGDA TYPE PA9001-BEGDA,
RDESC TYPE PA9001-RDESC,
Z_YEAR TYPE PA9001-Z_YEAR,
LTIP_SHARES_NO TYPE PA9001-LTIP_SHARES_NO,
END OF TY_PA9001.
TYPES: BEGIN OF TY_PA0022,
PERNR TYPE PA0022-PERNR,
ENDDA TYPE PA0022-ENDDA,
INSTI TYPE PA0022-INSTI,
SLTP1 TYPE PA0022-SLTP1,
SLART TYPE PA0022-SLART,
END OF TY_PA0022.
TYPES: BEGIN OF TY_T500P,
PERSA TYPE T500P-PERSA,
*
BUKRS TYPE T500P-BUKRS,
NAME1 TYPE T500P-NAME1,
END OF TY_T500P.
TYPES: BEGIN OF TY_T001P,

WERKS TYPE T001P-WERKS,


BTRTL TYPE T001P-BTRTL,
BTEXT TYPE T001P-BTEXT,
END OF TY_T001P.
TYPES: BEGIN OF TY_T529T,
SPRSL TYPE T529T-SPRSL,
MASSN TYPE T529T-MASSN,
MNTXT TYPE T529T-MNTXT,
END OF TY_T529T.
TYPES: BEGIN OF TY_T503T,
SPRSL TYPE T503T-SPRSL,
PERSK TYPE T503T-PERSK,
PTEXT TYPE T503T-PTEXT,
END OF TY_T503T.
TYPES: BEGIN OF TY_T001,
BUKRS TYPE T001-BUKRS,
BUTXT TYPE T001-BUTXT,
END OF TY_T001.

TYPES: BEGIN OF TY_PA0021,


PERNR TYPE PA0021-PERNR,
SUBTY TYPE PA0021-SUBTY,
FAMSA TYPE PA0021-FAMSA,
FAVOR TYPE PA0021-FAVOR,
FANAM TYPE PA0021-FANAM,
QUALIFICATION TYPE PA0021-QUALIFICATION,
PROFESSION TYPE PA0021-PROFESSION,
END OF TY_PA0021.
TYPES: BEGIN OF TY_T591S,
SPRSL TYPE T591S-SPRSL,
INFTY TYPE T591S-INFTY,
SUBTY TYPE T591S-SUBTY,
STEXT TYPE T591S-STEXT,
END OF TY_T591S.
TYPES: BEGIN OF TY_PA0023,
PERNR TYPE PA0023-PERNR,
ENDDA TYPE PA0023-ENDDA,
BEGDA TYPE PA0023-BEGDA,
ARBGB TYPE PA0023-ARBGB,
ORT01 TYPE PA0023-ORT01,
PREVDESG TYPE PA0023-PREVDESG,
END OF TY_PA0023.

TYPES: BEGIN OF TY_PA0016,


PERNR TYPE PA0016-PERNR,
KONDT TYPE PA0016-KONDT,
END OF TY_PA0016.

TYPES: BEGIN OF TY_PA9003,


PERNR TYPE PA9003-PERNR,
LOC_AL TYPE PA9003-LOC_AL,
CTC TYPE PA9003-CTC,
HRD_AL TYPE PA9003-HRD_AL,
Q1 TYPE PA9003-Q1,
Q2 TYPE PA9003-Q2,
Q3 TYPE PA9003-Q3,
Q4 TYPE PA9003-Q4,
OALL TYPE PA9003-OALL,
H1 TYPE PA9003-H1,
H2 TYPE PA9003-H2,
END OF TY_PA9003.

TYPES: BEGIN OF TY_T517T,


SPRSL TYPE T517T-SPRSL,
SLART TYPE T517T-SLART,
STEXT TYPE T517T-STEXT,
KURKZ TYPE T517T-KURKZ,
END OF TY_T517T.
TYPES: BEGIN OF TY_PA0105,
PERNR TYPE PA0105-PERNR,
SUBTY TYPE PA0105-SUBTY,
USRID TYPE PA0105-USRID,
END OF TY_PA0105.
*****************************************************************************
***********************************
*****************************************************************************
************************************
TYPES: BEGIN OF TY_SUB1,
PERNR TYPE PA0001-PERNR,
BEGDA TYPE PA0001-BEGDA,
PTEXT TYPE T503T-PTEXT,
LOCATION TYPE T503T-PTEXT,
BTEXT TYPE T001P-BTEXT,
BUTXT TYPE T001-BUTXT,
PLANS TYPE PA0001-PLANS,
*
SOBID TYPE HRP1001-SOBID,
OTYPE TYPE HRP1001-OTYPE,

END OF TY_SUB1.
TYPES: BEGIN OF TY_REP,
PERNR TYPE PA0001-PERNR,
PLANS TYPE PA0001-PLANS,
OTYPE TYPE PA0001-OTYPE,
ENAME TYPE PA0001-ENAME,
END OF TY_REP.
TYPES: BEGIN OF TY_SUB2,
PERNR TYPE PA0001-PERNR,
BEGDA TYPE PA0000-BEGDA,
MNTXT TYPE T529T-MNTXT,
END OF TY_SUB2.
TYPES: BEGIN OF TY_SUB3,
PERNR TYPE PA0001-PERNR,
BEGDA TYPE PA0000-BEGDA,
MASSN TYPE PA0000-MASSN,
END OF TY_SUB3.
TYPES: BEGIN OF TY_SUB4,
PERNR TYPE PA0001-PERNR,
QUALIFICATION TYPE STRING,
INSTI TYPE PA0022-INSTI,
END OF TY_SUB4.
*****************************************************************************
*************************************
*****************************************************************************
*************************************
*TYPES: BEGIN OF TY_BLOCK1,
*
QUALIFICATION(40)," TYPE STRING,
*
INSTI TYPE PA0022-INSTI,
*
NAMEB1(40)," TYPE STRING,
*
GBDAT(40)," TYPE STRING,
*
REFTELEPHONENPO TYPE PA9000-REFTELEPHONENPO,
*
Z_YEAR TYPE PA9001-Z_YEAR,
*
PTEXT TYPE T503T-PTEXT,
*
LOCATION TYPE T503T-PTEXT,
*
BTEXT TYPE T001P-BTEXT,
*
BUTXT TYPE T001-BUTXT,
*
BEGDA(40)," TYPE STRING,
*
MNTXT TYPE T529T-MNTXT,
*
RNAMEB1 TYPE PA0001-ENAME,
*
ELEV(40)," TYPE STRING,
*
END OF TY_BLOCK1.

*TYPES:
*
*
*

BEGIN OF TY_BLOCK2,
NAMEB2 TYPE STRING,
STEXT TYPE T591S-STEXT,
END OF TY_BLOCK2.

*TYPES:
*
*
*

BEGIN OF TY_BLOCK3,
YEARS3 TYPE STRING,
RDESC TYPE PA9001-RDESC,
END OF TY_BLOCK3.

*TYPES:
*
*
*

BEGIN OF TY_BLOCK8,
YEARS8 TYPE STRING,
LTIP_SHARES_NO TYPE PA9001-LTIP_SHARES_NO,
END OF TY_BLOCK8.

*TYPES:
*
*
*

BEGIN OF TY_BLOCK4,
BEGDA TYPE PA0000-BEGDA,
PTEXT TYPE T503T-PTEXT,
END OF TY_BLOCK4.

*TYPES: BEGIN OF TY_BLOCK5,


*
*
PERNR TYPE PA0023-PERNR,
*
ARBGB TYPE PA0023-ARBGB,
*
ORT01 TYPE PA0023-ORT01,
*
PREVDESG TYPE PA0023-PREVDESG,
*
PREV_EXP TYPE STRING,
*
YEARS5 TYPE STRING,
*
END OF TY_BLOCK5.
*TYPES: BEGIN OF TY_BLOCK6,
*
PRV_BLOCK6 TYPE STRING,
*
EXP_GROUP TYPE STRING,
*
TOTAL_EXP TYPE STRING,
*
END OF TY_BLOCK6.
*TYPES: BEGIN OF TY_BLOCK7,
*
LOC_AL TYPE PA9003-LOC_AL,
*
CTC TYPE PA9003-CTC,
*
HRD_AL TYPE PA9003-HRD_AL,
*
OALL TYPE PA9003-OALL,
*
RS TYPE PA9003-H2,
*
TOTAL TYPE STRING,
*
END OF TY_BLOCK7.
*****************************************************************************
***********************************
*****************************************************************************
***********************************

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


PARAMETERS: P_PERNR TYPE PA0000-PERNR.
SELECTION-SCREEN: END OF BLOCK B1 .
*****************************************************************************
***********************************
*****************************************************************************
***********************************
DATA: IT_PA0000 TYPE TABLE OF TY_PA0000,
WA_PA0000 TYPE TY_PA0000,
IT_PA0001 TYPE TABLE OF TY_PA0001,
WA_PA0001 TYPE TY_PA0001,
IT_PA0002 TYPE TABLE OF TY_PA0002,
WA_PA0002 TYPE TY_PA0002,
IT_PA0022 TYPE TABLE OF TY_PA0022,
WA_PA0022 TYPE TY_PA0022,
IT_PA0105 TYPE TABLE OF TY_PA0105,
WA_PA0105 TYPE TY_PA0105,
IT_T500P TYPE TABLE OF TY_T500P,
WA_T500P TYPE TY_T500P,
IT_T001P TYPE TABLE OF TY_T001P,
WA_T001P TYPE TY_T001P,
IT_T529T TYPE TABLE OF TY_T529T,
WA_T529T TYPE TY_T529T,
IT_T503T TYPE TABLE OF TY_T503T,
WA_T503T TYPE TY_T503T,
IT_T001 TYPE TABLE OF TY_T001,
WA_T001 TYPE TY_T001,
IT_PA9001 TYPE TABLE OF TY_PA9001,
WA_PA9001 TYPE TY_PA9001,
IT_PA0021 TYPE TABLE OF TY_PA0021,
WA_PA0021 TYPE TY_PA0021,
IT_T591S TYPE TABLE OF TY_T591S,
WA_T591S TYPE TY_T591S,
IT_PA0023 TYPE TABLE OF TY_PA0023,
WA_PA0023 TYPE TY_PA0023,
IT_PA0016 TYPE TABLE OF TY_PA0016,
WA_PA0016 TYPE TY_PA0016,
IT_PA9003 TYPE TABLE OF TY_PA9003,
WA_PA9003 TYPE TY_PA9003,
IT_HRP1001 TYPE TABLE OF TY_HRP1001,
WA_HRP1001 TYPE TY_HRP1001,
IT_T517T TYPE TABLE OF TY_T517T,
WA_T517T TYPE TY_T517T.
*****************************************************************************
************************************
********************************`********************************************

************************************
DATA: IT_SUB1 TYPE TABLE OF TY_SUB1,
WA_SUB1 TYPE TY_SUB1,
IT_SUB2 TYPE TABLE OF TY_SUB2,
WA_SUB2 TYPE TY_SUB2,
IT_SUB3 TYPE TABLE OF TY_SUB3,
WA_SUB3 TYPE TY_SUB3,
IT_SUB4 TYPE TABLE OF TY_SUB4,
WA_SUB4 TYPE TY_SUB4,
IT_REP TYPE TABLE OF TY_REP,
WA_REP TYPE TY_REP.

DATA: IT_BLOCK1
WA_BLOCK1
IT_BLOCK2
WA_BLOCK2
IT_BLOCK3
WA_BLOCK3
IT_BLOCK8
WA_BLOCK8
IT_BLOCK4
WA_BLOCK4
IT_BLOCK5
WA_BLOCK5
IT_BLOCK6
WA_BLOCK6
IT_BLOCK7
WA_BLOCK7

TYPE
TYPE
TYPE
TYPE
TYPE
TYPE
TYPE
TYPE
TYPE
TYPE
TYPE
TYPE
TYPE
TYPE
TYPE
TYPE

TABLE OF ZBLOCK1,
ZBLOCK1,
TABLE OF ZBLOCK2,
ZBLOCK2,
TABLE OF ZBLOCK3,
ZBLOCK3,
TABLE OF ZBLOCK8,
ZBLOCK8,
TABLE OF ZBLOCK4,
ZBLOCK4,
TABLE OF ZBLOCK5,
ZBLOCK5,
TABLE OF ZBLOCK6,
ZBLOCK6,
TABLE OF ZBLOCK7,"TY_BLOCK7,"ZBLOCK7,
ZBLOCK7."TY_BLOCK7."ZBLOCK7.

DATA: FM_NAME TYPE RS38L_FNAM,


QUALIFICATION TYPE STRING,
NAMEB1 TYPE STRING,
NAMEB2 TYPE STRING,
BEGYEAR TYPE DATUM,
ENDYEAR TYPE DATUM,
INTERNAL_DATS TYPE STRING,
YEARS TYPE STRING,
PREV_EXP TYPE STRING,
PRV_BLOCK6 TYPE STRING,
EXP_GROUP TYPE STRING,
PPS TYPE STRING,
TOTAL_EXP TYPE STRING,
STAR TYPE STRING,
TOTAL TYPE STRING.

RS TYPE STRING.

*****************************************************************************
***********************************
*****************************************************************************
***********************************
**********DATA FOR SMARTFORM TO PDF CONVERT**********************************
**********************************
DATA:
w_form_name TYPE tdsfname VALUE 'Z_ONE_PAGE_EMPLOYE_DETAILS',
w_fmodule TYPE rs38l_fnam,
w_cparam TYPE ssfctrlop,
w_outoptions TYPE ssfcompop,
W_bin_filesize TYPE i, " Binary File Size
w_FILE_NAME type string,
w_File_path type string,
w_FULL_PATH type string.
* Internal tables declaration
* Internal table to hold the OTF data
DATA:
t_otf TYPE itcoo OCCURS 0 WITH HEADER LINE,
* Internal table to hold OTF data recd from the SMARTFORM
t_otf_from_fm TYPE ssfcrescl,
* Internal table to hold the data from the FM CONVERT_OTF
T_pdf_tab LIKE tline OCCURS 0 WITH HEADER LINE.

* This function module call is used to retrieve the name of the Function
* module generated when the SMARTFORM is activated
*****************************************************************************
***********************************
*****************************************************************************
***********************************
START-OF-SELECTION.
PERFORM GET_DATA_BLOCK1.
PERFORM GET_DATA_BLOCK2.
PERFORM GET_DATA_BLOCK3. " BLOCK8 IS INCLUDED.
PERFORM GET_DATA_BLOCK4.
PERFORM GET_DATA_BLOCK5.
PERFORM GET_DATA_BLOCK6.
PERFORM GET_DATA_BLOCK7.
PERFORM SMART_FORM.
*&---------------------------------------------------------------------*
*&
Form GET_DATA_BLOCK1

*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
* --> p1
text
* <-- p2
text
*----------------------------------------------------------------------*
FORM GET_DATA_BLOCK1 .
SELECT
PERNR
SUBTY
OBJPS
SPRPS
ENDDA
BEGDA
MASSN
FROM PA0000
INTO TABLE IT_PA0000
WHERE PERNR = P_PERNR.
SELECT
SPRSL
MASSN
MNTXT
FROM T529T
INTO TABLE IT_T529T
FOR ALL ENTRIES IN IT_PA0000
WHERE MASSN = IT_PA0000-MASSN
AND SPRSL = 'EN'.

SELECT
PERNR
BEGDA
BUKRS
WERKS
PERSK
PLANS
BTRTL
ENAME
OTYPE
FROM PA0001
INTO TABLE IT_PA0001
WHERE PERNR = P_PERNR.
SORT IT_PA0001 BY BEGDA DESCENDING.
DELETE ADJACENT DUPLICATES FROM IT_PA0001.

SELECT

OTYPE
OBJID
SUBTY
SOBID
INTO TABLE IT_HRP1001
FROM HRP1001
FOR ALL ENTRIES IN IT_PA0001
WHERE OBJID = IT_PA0001-PLANS.
SELECT
SPRSL
PERSK
PTEXT
INTO TABLE IT_T503T
FROM T503T
FOR ALL ENTRIES IN IT_PA0001
WHERE PERSK = IT_PA0001-PERSK AND
SPRSL = 'EN'.
SELECT
PERSA
NAME1
INTO TABLE IT_T500P
FROM T500P
FOR ALL ENTRIES IN IT_PA0001
WHERE PERSA = IT_PA0001-WERKS.
SELECT
BUKRS
BUTXT
INTO TABLE IT_T001
FROM T001
FOR ALL ENTRIES IN IT_PA0001
WHERE BUKRS = IT_PA0001-BUKRS.

SELECT
WERKS
BTRTL
BTEXT
INTO TABLE IT_T001P
FROM T001P
FOR ALL ENTRIES IN IT_PA0001
WHERE BTRTL = IT_PA0001-BTRTL.

SELECT
PERNR
NACHN

VORNA
GBDAT
FROM PA0002
INTO TABLE IT_PA0002
WHERE PERNR = P_PERNR.
SELECT
PERNR
ENDDA
INSTI
SLTP1
SLART
FROM PA0022
INTO TABLE IT_PA0022
WHERE PERNR = P_PERNR.
SORT IT_PA0022 BY ENDDA DESCENDING.
SELECT
SPRSL
SLART
STEXT
KURKZ
FROM T517T
INTO TABLE IT_T517T
FOR ALL ENTRIES IN IT_PA0022
WHERE SLART = IT_PA0022-SLART AND
SPRSL = 'EN'.
SELECT
PERNR
SUBTY
USRID
INTO TABLE IT_PA0105
FROM PA0105
WHERE PERNR = P_PERNR
AND SUBTY = 'CELL'.

SELECT
PERNR
ENDDA
BEGDA
RDESC
Z_YEAR
LTIP_SHARES_NO
INTO TABLE IT_PA9001
FROM PA9001
WHERE PERNR = P_PERNR.

LOOP AT IT_PA0001 INTO WA_PA0001.


WA_SUB1-PERNR = WA_PA0001-PERNR.
WA_SUB1-BEGDA = WA_PA0001-BEGDA.
READ TABLE IT_HRP1001 INTO WA_HRP1001 WITH KEY OBJID = WA_PA0001-PLANS .
IF SY-SUBRC = 0.
IF WA_HRP1001-SUBTY = 'A002'.
WA_SUB1-PLANS = WA_HRP1001-SOBID.
WA_SUB1-OTYPE = WA_HRP1001-OTYPE.
ENDIF.
ENDIF.
READ TABLE IT_T503T INTO WA_T503T WITH KEY PERSK = WA_PA0001-PERSK.
IF SY-SUBRC = 0.
WA_SUB1-PTEXT = WA_T503T-PTEXT.
ENDIF.
READ TABLE IT_T500P INTO WA_T500P WITH KEY PERSA = WA_PA0001-WERKS.
IF SY-SUBRC = 0.
WA_SUB1-LOCATION = WA_T500P-NAME1.
ENDIF.
READ TABLE IT_T001P INTO WA_T001P WITH KEY BTRTL = WA_PA0001-BTRTL.
IF SY-SUBRC = 0.
WA_SUB1-BTEXT = WA_T001P-BTEXT.
ENDIF.

READ TABLE IT_T001 INTO WA_T001 WITH KEY BUKRS = WA_PA0001-BUKRS.


IF SY-SUBRC = 0.
WA_SUB1-BUTXT = WA_T001-BUTXT.
ENDIF.
AT END OF PERNR.
APPEND WA_SUB1 TO IT_SUB1.
SORT IT_SUB1 BY BEGDA DESCENDING.
ENDAT.
ENDLOOP.
CLEAR: WA_PA0001,
WA_SUB1.
SELECT
PERNR
PLANS
OTYPE
ENAME
FROM PA0001

INTO TABLE IT_REP


FOR ALL ENTRIES IN IT_SUB1
WHERE PLANS = IT_SUB1-PLANS.

LOOP AT IT_PA0000 INTO WA_PA0000 ." WHERE MASSN = ('26','29','30','ZE').


*
MASSN = '29'AND
*
MASSN = '30' AND
*
MASSN = 'ZE'.
WA_SUB2-PERNR = WA_PA0000-PERNR.
WA_SUB3-PERNR = WA_PA0000-PERNR.
IF WA_PA0000-MASSN = '26' OR
WA_PA0000-MASSN = '29' OR
WA_PA0000-MASSN = '30' OR
WA_PA0000-MASSN = 'ZE'.
WA_SUB2-BEGDA = WA_PA0000-BEGDA.
READ TABLE IT_T529T INTO WA_T529T WITH KEY MASSN = WA_PA0000-MASSN.
IF SY-SUBRC = 0.
WA_SUB2-MNTXT = WA_T529T-MNTXT.
ENDIF.
APPEND WA_SUB2 TO IT_SUB2.
SORT IT_SUB2 BY BEGDA DESCENDING.
ELSEIF WA_PA0000-MASSN = '36'.
WA_SUB3-MASSN = WA_PA0000-MASSN.
WA_SUB3-BEGDA = WA_PA0000-BEGDA.
APPEND WA_SUB3 TO IT_SUB3.
SORT IT_SUB3 BY BEGDA DESCENDING.
ENDIF.
ENDLOOP.
CLEAR: WA_SUB2,
WA_SUB3.
LOOP AT IT_PA0022 INTO WA_PA0022.
WA_SUB4-PERNR = WA_PA0022-PERNR.
WA_SUB4-INSTI = WA_PA0022-INSTI.
* READ TABLE IT_PA0022 INTO WA_PA0022 WITH KEY PERNR = WA_SUB1-PERNR.
*
IF SY-SUBRC = 0.
*
CONCATENATE WA_PA0022-SLTP1 WA_PA0022ENDDA INTO QUALIFICATION SEPARATED BY ' '.
*
WA_BLOCK1-QUALIFICATION = QUALIFICATION.
*
WA_BLOCK1-INSTI = WA_PA0022-INSTI.
*
ENDIF.

*
*
*

CALL FUNCTION 'CONVERT_DATE_TO_EXTERNAL'


EXPORTING
DATE_INTERNAL
= WA_PA0022-ENDDA
IMPORTING
DATE_EXTERNAL
= INTERNAL_DATS
EXCEPTIONS
DATE_INTERNAL_IS_INVALID
= 1
OTHERS
= 2
.
IF SY-SUBRC <> 0.
Implement suitable error handling here
ENDIF.
READ TABLE IT_T517T INTO WA_T517T WITH KEY SLART = WA_PA0022-SLART.

CONCATENATE WA_T517TSTEXT INTERNAL_DATS INTO QUALIFICATION SEPARATED BY ' '.


WA_SUB4-QUALIFICATION = QUALIFICATION.
APPEND WA_SUB4 TO IT_SUB4.
ENDLOOP.
CLEAR:INTERNAL_DATS.
LOOP AT IT_SUB1 INTO WA_SUB1 FROM 1 TO 1.
WA_BLOCK1-PTEXT = WA_SUB1-PTEXT.
WA_BLOCK1-LOCATION = WA_SUB1-LOCATION.
WA_BLOCK1-BTEXT = WA_SUB1-BTEXT.
WA_BLOCK1-BUTXT = WA_SUB1-BUTXT.

READ TABLE IT_REP INTO WA_REP WITH KEY OTYPE = WA_SUB1-OTYPE.


IF SY-SUBRC = 0.
WA_BLOCK1-RNAMEB1 = WA_REP-ENAME.
ENDIF.
READ TABLE IT_PA0002 INTO WA_PA0002 WITH KEY PERNR = WA_SUB1-PERNR.
CONCATENATE WA_PA0002-VORNA WA_PA0002-NACHN INTO NAMEB1 SEPARATED BY ' '.

*
*
*

CALL FUNCTION 'CONVERT_DATE_TO_EXTERNAL'


EXPORTING
DATE_INTERNAL
= WA_PA0002-GBDAT
IMPORTING
DATE_EXTERNAL
= INTERNAL_DATS
EXCEPTIONS
DATE_INTERNAL_IS_INVALID
= 1
OTHERS
= 2
.
IF SY-SUBRC <> 0.

* Implement suitable error handling here


ENDIF.

IF SY-SUBRC = 0.
WA_BLOCK1-NAMEB1 = NAMEB1.
WA_BLOCK1-GBDAT = INTERNAL_DATS.
ENDIF.
CLEAR: INTERNAL_DATS.
READ TABLE IT_PA0105 INTO WA_PA0105 WITH KEY PERNR = WA_SUB1-PERNR.
IF SY-SUBRC = 0.
WA_BLOCK1-USRID = WA_PA0105-USRID.
ENDIF.

READ TABLE IT_PA9001 INTO WA_PA9001 WITH KEY PERNR = WA_SUB1-PERNR.


IF SY-SUBRC = 0.
IF WA_PA9001-Z_YEAR > 0.
CONCATENATE WA_PA9001-Z_YEAR 'Yes' INTO STAR SEPARATED BY ','.
WA_BLOCK1-Z_YEAR = STAR. "WA_PA9001-Z_YEAR.
ELSE.
WA_BLOCK1-Z_YEAR = 'No'.
ENDIF.
ENDIF.

READ TABLE IT_SUB4 INTO WA_SUB4 WITH KEY PERNR = WA_SUB1-PERNR.


IF SY-SUBRC = 0.
*
CONCATENATE WA_PA0022-SLTP1 WA_PA0022ENDDA INTO QUALIFICATION SEPARATED BY ' '.
WA_BLOCK1-QUALIFICATION = WA_SUB4-QUALIFICATION.
WA_BLOCK1-INSTI = WA_SUB4-INSTI.
ENDIF.
READ TABLE IT_SUB2 INTO WA_SUB2 WITH KEY PERNR = WA_SUB1-PERNR.

*
*
*

CALL FUNCTION 'CONVERT_DATE_TO_EXTERNAL'


EXPORTING
DATE_INTERNAL
= WA_SUB2-BEGDA
IMPORTING
DATE_EXTERNAL
= INTERNAL_DATS
EXCEPTIONS
DATE_INTERNAL_IS_INVALID
= 1
OTHERS
= 2
.
IF SY-SUBRC <> 0.
Implement suitable error handling here
ENDIF.
IF SY-SUBRC = 0.

WA_BLOCK1-BEGDA = INTERNAL_DATS.
WA_BLOCK1-MNTXT = WA_SUB2-MNTXT.
ENDIF.
CLEAR: INTERNAL_DATS.
READ TABLE IT_SUB3 INTO WA_SUB3 WITH KEY PERNR = WA_SUB1-PERNR.

*
*
*

CALL FUNCTION 'CONVERT_DATE_TO_EXTERNAL'


EXPORTING
DATE_INTERNAL
= WA_SUB3-BEGDA
IMPORTING
DATE_EXTERNAL
= INTERNAL_DATS
EXCEPTIONS
DATE_INTERNAL_IS_INVALID
= 1
OTHERS
= 2
.
IF SY-SUBRC <> 0.
Implement suitable error handling here
ENDIF.

IF SY-SUBRC = 0.
WA_BLOCK1-ELEV = INTERNAL_DATS.
ENDIF.
CLEAR: INTERNAL_DATS.
APPEND WA_BLOCK1 TO IT_BLOCK1.
CLEAR: STAR.
ENDLOOP.
ENDFORM.
" GET_DATA_BLOCK1
*&---------------------------------------------------------------------*
*&
Form GET_DATA_BLOCK2
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
* --> p1
text
* <-- p2
text
*----------------------------------------------------------------------*
FORM GET_DATA_BLOCK2 .
SELECT
PERNR
SUBTY
FAMSA
FAVOR
FANAM
QUALIFICATION
PROFESSION
FROM PA0021
INTO TABLE IT_PA0021
WHERE PERNR = P_PERNR.

SELECT
SPRSL
INFTY
SUBTY
STEXT
FROM T591S
INTO TABLE IT_T591S
FOR ALL ENTRIES IN IT_PA0021
WHERE SUBTY = IT_PA0021-SUBTY AND
INFTY = '0021' AND
SPRSL = 'EN'.
LOOP AT IT_PA0021 INTO WA_PA0021.
WA_BLOCK2-QUALIFICATION = WA_PA0021-QUALIFICATION.
WA_BLOCK2-PROFESSION = WA_PA0021-PROFESSION.
CONCATENATE WA_PA0021-FAVOR WA_PA0021-FANAM INTO NAMEB2 SEPARATED BY ' '.
WA_BLOCK2-NAMEB2 = NAMEB2.
READ TABLE IT_T591S INTO WA_T591S WITH KEY SUBTY = WA_PA0021-SUBTY.
WA_BLOCK2-STEXT = WA_T591S-STEXT.
APPEND WA_BLOCK2 TO IT_BLOCK2.
ENDLOOP.
ENDFORM.
" GET_DATA_BLOCK2
*&---------------------------------------------------------------------*
*&
Form GET_DATA_BLOCK3
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
* --> p1
text
* <-- p2
text
*----------------------------------------------------------------------*
FORM GET_DATA_BLOCK3 .
SORT IT_PA9001 BY BEGDA DESCENDING.
LOOP AT IT_PA9001 INTO WA_PA9001 FROM 1 TO 3.
BEGYEAR(4) = WA_PA9001-BEGDA.
ENDYEAR(4) = WA_PA9001-ENDDA.
CONCATENATE BEGYEAR(4) ENDYEAR(4) INTO YEARS SEPARATED BY '-'.
WA_BLOCK3-YEARS3 = YEARS.
WA_BLOCK3-RDESC = WA_PA9001-RDESC.
APPEND WA_BLOCK3 TO IT_BLOCK3.
WA_BLOCK8-YEARS8 = YEARS.
WA_BLOCK8-LTIP_SHARES_NO = WA_PA9001-LTIP_SHARES_NO.

APPEND WA_BLOCK8 TO IT_BLOCK8.

ENDLOOP.
CLEAR: BEGYEAR(4),
ENDYEAR(4),
YEARS.
ENDFORM.
" GET_DATA_BLOCK3
*&---------------------------------------------------------------------*
*&
Form GET_DATA_BLOCK4
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
* --> p1
text
* <-- p2
text
*----------------------------------------------------------------------*
FORM GET_DATA_BLOCK4 .
LOOP AT IT_SUB3 INTO WA_SUB3.

*
*
*

CALL FUNCTION 'CONVERT_DATE_TO_EXTERNAL'


EXPORTING
DATE_INTERNAL
= WA_SUB3-BEGDA
IMPORTING
DATE_EXTERNAL
= INTERNAL_DATS
EXCEPTIONS
DATE_INTERNAL_IS_INVALID
= 1
OTHERS
= 2
.
IF SY-SUBRC <> 0.
Implement suitable error handling here
ENDIF.
WA_BLOCK4-BEGDA = INTERNAL_DATS.
READ TABLE IT_SUB1 INTO WA_SUB1 WITH KEY BEGDA = WA_SUB3-BEGDA.
IF SY-SUBRC = 0.
LOOP AT IT_SUB1 INTO WA_SUB1 WHERE PERNR = WA_SUB3-PERNR.
WA_BLOCK4-PTEXT = WA_SUB1-PTEXT.
ENDIF.

APPEND WA_BLOCK4 TO IT_BLOCK4.


CLEAR: WA_SUB1.
ENDLOOP.
ENDLOOP.
CLEAR: INTERNAL_DATS.
ENDFORM.
" GET_DATA_BLOCK4
*&---------------------------------------------------------------------*
*&
Form GET_DATA_BLOCK5
*&---------------------------------------------------------------------*
*
*

*
text
*----------------------------------------------------------------------*
* --> p1
text
* <-- p2
text
*----------------------------------------------------------------------*
FORM GET_DATA_BLOCK5 .
SELECT
PERNR
ENDDA
BEGDA
ARBGB
ORT01
PREVDESG
FROM PA0023
INTO TABLE IT_PA0023
WHERE PERNR = P_PERNR.
SORT IT_PA0023 BY BEGDA DESCENDING.
LOOP AT IT_PA0023 INTO WA_PA0023." FROM 1 TO 3.
BEGYEAR(4) = WA_PA0023-BEGDA.
ENDYEAR(4) = WA_PA0023-ENDDA.
PREV_EXP = PREV_EXP + ENDYEAR(4) - BEGYEAR(4).
CONCATENATE BEGYEAR(4) ENDYEAR(4) INTO YEARS SEPARATED BY '-'.
WA_BLOCK5-PERNR = WA_PA0023-PERNR.
WA_BLOCK5-YEARS5 = YEARS.
WA_BLOCK5-ARBGB = WA_PA0023-ARBGB.
WA_BLOCK5-PREVDESG = WA_PA0023-PREVDESG.
WA_BLOCK5-ORT01 = WA_PA0023-ORT01.
WA_BLOCK5-PREV_EXP = PREV_EXP.
APPEND WA_BLOCK5 TO IT_BLOCK5.
CLEAR: PREV_EXP,
YEARS.
ENDLOOP.
CLEAR: BEGYEAR(4),
ENDYEAR(4),
YEARS,
PREV_EXP.
ENDFORM.
" GET_DATA_BLOCK5
*&---------------------------------------------------------------------*
*&
Form GET_DATA_BLOCK6
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
* --> p1
text
* <-- p2
text

*----------------------------------------------------------------------*
FORM GET_DATA_BLOCK6 .
SELECT
PERNR
KONDT
FROM PA0016
INTO TABLE IT_PA0016
WHERE PERNR = P_PERNR.
LOOP AT IT_BLOCK5 INTO WA_BLOCK5.
PRV_BLOCK6 = PRV_BLOCK6 + WA_BLOCK5-PREV_EXP.
WA_BLOCK6-PRV_BLOCK6 = PRV_BLOCK6.

READ TABLE IT_PA0016 INTO WA_PA0016 WITH KEY PERNR = WA_BLOCK5-PERNR.


BEGYEAR(4) = WA_PA0016-KONDT.
READ TABLE IT_SUB2 INTO WA_SUB2 WITH KEY PERNR = WA_BLOCK5-PERNR.
ENDYEAR(4) = SY-DATUM.
EXP_GROUP = ENDYEAR(4) - BEGYEAR(4).
WA_BLOCK6-EXP_GROUP = EXP_GROUP.
TOTAL_EXP = PRV_BLOCK6 + EXP_GROUP.
WA_BLOCK6-TOTAL_EXP = TOTAL_EXP.
AT END OF PERNR.
APPEND WA_BLOCK6 TO IT_BLOCK6.
ENDAT.
ENDLOOP.

ENDFORM.
" GET_DATA_BLOCK6
*&---------------------------------------------------------------------*
*&
Form GET_DATA_BLOCK7
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
* --> p1
text
* <-- p2
text
*----------------------------------------------------------------------*
FORM GET_DATA_BLOCK7 .
SELECT
PERNR
LOC_AL
CTC
HRD_AL
Q1
Q2
Q3

Q4
OALL
H1
H2
FROM PA9003
INTO TABLE IT_PA9003
WHERE PERNR = P_PERNR.

LOOP AT IT_PA9003 INTO WA_PA9003.


IF WA_BLOCK7-PARTICULARS = 'LOCATION ALLOWENCES'.
WA_BLOCK7-LOC_AL = WA_PA9003-LOC_AL / 100000.
ELSEIF WA_BLOCK7-PARTICULARS = 'CURRENT CTC'.
WA_BLOCK7-CTC = WA_PA9003-CTC / 100000.

ELSEIF WA_BLOCK7-PARTICULARS = 'HARDSHIP ALLOWENCES'.


WA_BLOCK7-HRD_AL = WA_PA9003-HRD_AL / 100000.

ELSEIF WA_BLOCK7-PARTICULARS = 'PPS'.


PPS = PPS + WA_PA9003-Q1 + WA_PA9003-Q2 +
WA_PA9003-Q3 + WA_PA9003-Q4 +
WA_PA9003-H1 + WA_PA9003-H2.
WA_BLOCK7-RS = PPS / 100000.

ELSEIF WA_BLOCK7-PARTICULARS = 'OTHER INCENTIVES'.


WA_BLOCK7-OALL = WA_PA9003-OALL / 100000.
*
ENDIF.
TOTAL = TOTAL + WA_BLOCK7-LOC_AL + WA_BLOCK7-CTC + WA_BLOCK7HRD_AL + WA_BLOCK7-RS + WA_BLOCK7-OALL.
WA_BLOCK7-TOTAL = TOTAL.
AT END OF PERNR.
APPEND WA_BLOCK7 TO IT_BLOCK7.
ENDAT.
ENDLOOP.
ENDFORM.
" GET_DATA_BLOCK7
*&---------------------------------------------------------------------*
*&
Form SMART_FORM
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
* --> p1
text
* <-- p2
text
*----------------------------------------------------------------------*
FORM SMART_FORM .
CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'
EXPORTING
formname = w_form_name

* VARIANT = ' '


* DIRECT_CALL = ' '
IMPORTING
fm_name = w_fmodule
EXCEPTIONS
no_form = 1
no_function_module = 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.
* Calling the SMARTFORM using the function module retrieved above
* GET_OTF parameter in the CONTROL_PARAMETERS is set to get the OTF
* format of the output

w_cparam-no_dialog = 'X'.
w_cparam-preview = space. " Suppressing the dialog box
" for print preview
w_cparam-getotf = 'X'.
* Printer name to be used is provided in the export parameter
* OUTPUT_OPTIONS
w_outoptions-tddest = 'LP01'.

CALL FUNCTION w_fmodule "'/1BCDWB/SF00000152'


EXPORTING
*
ARCHIVE_INDEX
=
*
ARCHIVE_INDEX_TAB
=
*
ARCHIVE_PARAMETERS
=
CONTROL_PARAMETERS
= w_cparam
*
MAIL_APPL_OBJ
=
*
MAIL_RECIPIENT
=
*
MAIL_SENDER
=
OUTPUT_OPTIONS
= w_outoptions
*
USER_SETTINGS
= 'X'
P_PERNR
= P_PERNR
IMPORTING
*
DOCUMENT_OUTPUT_INFO
=
JOB_OUTPUT_INFO
= t_otf_from_fm
*
JOB_OUTPUT_OPTIONS
=
TABLES
IT_BLOCK1
= IT_BLOCK1
IT_BLOCK2
= IT_BLOCK2

IT_BLOCK3
= IT_BLOCK3
IT_BLOCK4
= IT_BLOCK4
IT_BLOCK5
= IT_BLOCK5
IT_BLOCK6
= IT_BLOCK6
IT_BLOCK7
= IT_BLOCK7
IT_BLOCK8
= IT_BLOCK8
* EXCEPTIONS
*
FORMATTING_ERROR
= 1
*
INTERNAL_ERROR
= 2
*
SEND_ERROR
= 3
*
USER_CANCELED
= 4
*
OTHERS
= 5
.
IF SY-SUBRC <> 0.
* Implement suitable error handling here
ENDIF.

t_otf[] = t_otf_from_fm-otfdata[].
* Function Module CONVERT_OTF is used to convert the OTF format to PDF
CALL FUNCTION 'CONVERT_OTF'
EXPORTING
FORMAT = 'PDF'
MAX_LINEWIDTH = 132
* ARCHIVE_INDEX = ' '
* COPYNUMBER = 0
* ASCII_BIDI_VIS2LOG = ' '
* PDF_DELETE_OTFTAB = ' '
IMPORTING
BIN_FILESIZE = W_bin_filesize
* BIN_FILE =
TABLES
otf = T_OTF
lines = T_pdf_tab
EXCEPTIONS
ERR_MAX_LINEWIDTH = 1
ERR_FORMAT = 2
ERR_CONV_NOT_POSSIBLE = 3
ERR_BAD_OTF = 4
OTHERS = 5
.
IF sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
* To display File SAVE dialog window

CALL METHOD cl_gui_frontend_services=>file_save_dialog


* EXPORTING
* WINDOW_TITLE =
* DEFAULT_EXTENSION =
* DEFAULT_FILE_NAME =
* FILE_FILTER =
* INITIAL_DIRECTORY =
* WITH_ENCODING =
* PROMPT_ON_OVERWRITE = 'X'
CHANGING
filename = w_FILE_NAME
path = w_FILE_PATH
fullpath = w_FULL_PATH
* USER_ACTION =
* FILE_ENCODING =
EXCEPTIONS
CNTL_ERROR = 1
ERROR_NO_GUI = 2
NOT_SUPPORTED_BY_GUI = 3
others = 4
.
IF sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.

* Use the FM GUI_DOWNLOAD to download the generated PDF file onto the
* presentation server
CALL FUNCTION 'GUI_DOWNLOAD'
EXPORTING
BIN_FILESIZE = W_bin_filesize
filename = w_FILE_NAME
FILETYPE = 'BIN'
* APPEND = ' '
* WRITE_FIELD_SEPARATOR = ' '
* HEADER = '00'
* TRUNC_TRAILING_BLANKS = ' '
* WRITE_LF = 'X'
* COL_SELECT = ' '
* COL_SELECT_MASK = ' '
* DAT_MODE = ' '
* CONFIRM_OVERWRITE = ' '
* NO_AUTH_CHECK = ' '
* CODEPAGE = ' '
* IGNORE_CERR = ABAP_TRUE
* REPLACEMENT = '#'
* WRITE_BOM = ' '

* TRUNC_TRAILING_BLANKS_EOL = 'X'
* WK1_N_FORMAT = ' '
* WK1_N_SIZE = ' '
* WK1_T_FORMAT = ' '
* WK1_T_SIZE = ' '
* IMPORTING
* FILELENGTH =
tables
data_tab = T_pdf_tab
* FIELDNAMES =
* EXCEPTIONS
* FILE_WRITE_ERROR = 1
* NO_BATCH = 2
* GUI_REFUSE_FILETRANSFER = 3
* INVALID_TYPE = 4
* NO_AUTHORITY = 5
* UNKNOWN_ERROR = 6
* HEADER_NOT_ALLOWED = 7
* SEPARATOR_NOT_ALLOWED = 8
* FILESIZE_NOT_ALLOWED = 9
* HEADER_TOO_LONG = 10
* DP_ERROR_CREATE = 11
* DP_ERROR_SEND = 12
* DP_ERROR_WRITE = 13
* UNKNOWN_DP_ERROR = 14
* ACCESS_DENIED = 15
* DP_OUT_OF_MEMORY = 16
* DISK_FULL = 17
* DP_TIMEOUT = 18
* FILE_NOT_FOUND = 19
* DATAPROVIDER_EXCEPTION = 20
* CONTROL_FLUSH_ERROR = 21
* OTHERS = 22
.
IF sy-subrc = 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
CALL FUNCTION 'POPUP_TO_INFORM'
EXPORTING
TITEL = 'Success!'
TXT1 = T_pdf_tab
TXT2 = 'SUCCESSFULLY
DOWNLOADED.'
TXT3 = 'PLEASE CHECK THE PATH.'.
ELSE.
CALL FUNCTION 'POPUP_TO_INFORM'
EXPORTING
TITEL = 'Error!'
TXT1 = T_pdf_tab

TXT2
ENDIF.
ENDFORM.

= 'NOT DOWNLOADED.'.

" SMART_FORM

Anda mungkin juga menyukai