ZONE_PAGE_EMPLOYEE_DETAILS.
TABLES: PA0000,
PA0001,
PA0002,
PA9000,
PA9001,
PA0022,
T500P,
T001P,
T529T,
T517T,
***********************
PA0021,
T591S,
PA0023,
PA0016,
PA0105,
PA9003.
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.
************************************
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.
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.
*
*
*
*
*
*
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.
*
*
*
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.
*
*
*
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.
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.
*
*
*
*
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.
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.
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'.
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
* 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