Você está na página 1de 24

REPORT zhhr012_open_closed_vacancy

NO STANDARD PAGE HEADING


MESSAGE-ID zhhr
LINE-SIZE 132.
***********************************************************************
*
A M T R A K
*
*=====================================================================*
* Program Title
: R-HR-020-080-010 Open & Closed Vacancy Report*
* Author
: Sudha Srinivasan
*
* Date
: 27-JUNE-06
*
* SAP Change Request #: ECDK900523
*
*---------------------------------------------------------------------*
* Program Name : ZHHR012_OPEN_CLOSED_VACANCY
*
* Transaction : ZHR012
*
* FRICE ID
: R012
*
* Project
: iTrak - mySAP ERP 2005, ECC 6.0
*
* Description : This program sends the vacancy details of
*
*
applicants by APP districts and EEo category
*
* Type
: Report
*
* Run Freq
: Weekly
*
* Dev Class
: ZHHR
*
*---------------------------------------------------------------------*
*
MODIFICATION HISTORY
*
*---------------------------------------------------------------------*
* Request | Date
| ID
| Description
*
*---------------------------------------------------------------------*
* ECDK900523 27-Jun-06 SRINIVS Original Development
*
* ECDK900525 23-Aug-06 SRINIVS SS01- Report Headings and Corrections *
* ECDK900525 30-Aug-06 DEEGUPTA DK01- Remove ZTH_EVENT
*
* ECDK902166 15-Sep-06 DEEGUPTA DK02- Remove IT1007 Check from Clsd Vc*
***********************************************************************
*---------------------------------------------------------------------*
*
I N C L U D E
*
*---------------------------------------------------------------------*
INCLUDE: zzgeneric_include. " For finding the output file paths
*----------------------------------------------------------------------*
*
T Y P E S
*
*----------------------------------------------------------------------*
TYPE-POOLS: slis.
TYPES:
BEGIN OF t_pos,
plnobjid TYPE
status
TYPE
begda
TYPE
endda
TYPE
END OF t_pos,

hrp1007-objid,
hrp1007-status,
hrp1007-begda,
hrp1007-endda,

BEGIN OF t_actions,
pernr TYPE pa0000-pernr,
endda TYPE pa0000-endda,
begda TYPE pa0000-begda,
massn TYPE pa0000-massn,
massg TYPE pa0000-massg,
aedtm TYPE pa0000-aedtm,
stat2 TYPE pa0000-stat2,
END OF t_actions,

"Positions
"Position Status - 0(Open)/2(Filled)
"Begin Date
"End Date

"Personnel Number
"End Date
"Begin date
"Action Type
"Action Reason
"Change Date
"Status

BEGIN OF t_pernr,
pernr TYPE pb4002-pernr,
objid TYPE pb4002-objid,
begda TYPE pb4002-begda,
endda TYPE pb4002-endda,
END OF t_pernr,

"Applicant Number
"Applicant Position ID
"Begin date
"End Date

BEGIN OF t_rep,
applno
TYPE
vacnum
TYPE
vacdesc
TYPE
respo
TYPE
resrf
TYPE
stell
TYPE
eeoct
TYPE
orgeh
TYPE
orgtext
TYPE
persa
TYPE
patext
TYPE
stras
TYPE
ort01
TYPE
regio
TYPE
pstlz
TYPE
addrs(60) TYPE
btrtl
TYPE
trfg1
TYPE
pernr
TYPE
apsta
TYPE
strea
TYPE
persg
TYPE
appgrp(8) TYPE
nachn
TYPE
vorna
TYPE
gesch
TYPE
racky
TYPE
slart
TYPE
slabs
TYPE
edlvl
TYPE
edcert
TYPE
statx
TYPE
reatx
TYPE
int(1)
TYPE
begda
TYPE
END OF t_rep,

pb4002-pernr, "Personnel Number


pb4002-objid, "Vacancy Number
hrp1000-mc_stext, "Vacancy Description
t750x-respo, "Line Manager
t750x-resrf, "Responsible Person
hrp1001-objid, "Job
t5u13-eeoct, "EEO-1 Category
hrp1001-objid, "Department
hrp1000-stext, "Department Text
hrp1008-persa, "Personnel Area
t500p-name1, "Personnel Area Text
t500p-stras, "House number/street
t500p-ort01, "Address Line 1
t500p-regio, "State
t500p-pstlz, "Zip Code
c,
"Personnel Area Address
hrp1008-btrtl, "Personnel Subarea
hrp1005-trfg1, "Pay Scale Group
pa0001-pernr, "PERNR/Applicant no
pb4000-apsta, "Applicant Status
pb4000-strea, "Applicant status reason
pb0001-persg, "Applicant Group
c,
"Applicant Group Text
pb0002-nachn, "Applicant Last Name
pb0002-vorna, "Applicant First Name
pb0002-gesch, "Applicant Sex
pb0077-racky, "Ethnic Origin
pb0022-slart, "Educational Establishment
pb0022-slabs, "Certificate
t517t-stext, "Educational Establishment Text
t519t-stext, "Certificate Text
t751b-statx, "Applicant Status Text
t751c-reatx, "Applicant Status Reason Text
c,
"Interviewed
pa0000-begda, "Vacancy Filled Date

BEGIN OF t_out,
vacnum(8) TYPE
vacdesc(40) TYPE
respo(8)
TYPE
resrf(3)
TYPE
eeoct(2)
TYPE
orgtext(40) TYPE
persa(4)
TYPE
patext(30) TYPE
addrs(60) TYPE
btrtl(4)
TYPE
trfg1(8)
TYPE
pernr(8)
TYPE
apsta(1)
TYPE
appgrp(8) TYPE

c,
c,
c,
c,
c,
c,
c,
c,
c,
c,
c,
c,
c,
c,

" Size 426


"Vacancy Number
"Vacancy Description
"Line Manager
"Responsible Person
"EEO-1 Category
"Department Text
"Personnel Area
"Personnel Area Text
"Personnel Area Address
"Personnel Subarea
"Pay Scale Group
"PERNR/Applicant no
"Applicant Status
"Applicant Group Text

nachn(40)
vorna(40)
gesch(1)
racky(2)
edlvl(20)
edcert(40)
statx(20)
reatx(30)
int(1)
begda(8)
END OF t_out,

TYPE
TYPE
TYPE
TYPE
TYPE
TYPE
TYPE
TYPE
TYPE
TYPE

BEGIN OF t_file,
line(426) TYPE c,
END OF t_file.

c,
c,
c,
c,
c,
c,
c,
c,
c,
c,

"Applicant Last Name


"Applicant First Name
"Applicant Sex
"Ethnic Origin
"Educational Establishment Text
"Certificate Text
"Applicant Status Text
"Applicant Status Reason Text
"Interviewed
"Vacancy Filled Date

" Download

*----------------------------------------------------------------------*
*
D A T A D E C L A R A T I O N S
*
*----------------------------------------------------------------------*
*
Table Data containing the position details with Postion status
DATA: it_pos TYPE STANDARD TABLE OF t_pos,
st_pos TYPE t_pos,
*
Table Data containing the action data for each pernr
it_actions TYPE STANDARD TABLE OF t_actions,
st_actions TYPE t_actions,
*
Table Data containing the applicant data for vacant positions
it_pernr TYPE STANDARD TABLE OF t_pernr,
st_pernr TYPE t_pernr,
*
Table Data containing the Vacany report details
it_rep TYPE STANDARD TABLE OF t_rep,
st_rep TYPE t_rep,
*
Download Fixed Length File
it_file TYPE TABLE OF t_file,
st_file TYPE t_file,
*
For Header
lst_hdr TYPE t_out,
*
For Interface
st_out TYPE t_out,
it_out TYPE TABLE OF t_out,
*
Events
st_events TYPE zth_events,
*
ALV
*
For Field catalog
it_fieldcat TYPE STANDARD TABLE OF slis_fieldcat_alv,
st_fieldcat TYPE slis_fieldcat_alv,
*
For ALV header display
it_listheader TYPE STANDARD TABLE OF slis_listheader,
st_listheader TYPE slis_listheader,
*
Sort
it_sort
TYPE slis_t_sortinfo_alv,
st_sort
TYPE slis_sortinfo_alv,
*
For ALV Event
it_events TYPE slis_t_event,
*
For Layout structure
st_layout TYPE slis_layout_alv.
*
MACRO used for catlog preparation.
DEFINE f_cat.
st_fieldcat-col_pos

= &1.

st_fieldcat-tabname = 'IT_REP'.
st_fieldcat-fieldname = &2.
if &3 = 'G'.
st_fieldcat-no_out = 'X'.
st_fieldcat-tech = 'X'.
endif.
st_fieldcat-datatype = &3.
st_fieldcat-seltext_s = &4.
st_fieldcat-seltext_l = &5.
append st_fieldcat to it_fieldcat.
clear st_fieldcat.
END-OF-DEFINITION.
*----------------------------------------------------------------------*
*
C O N S T A N T S
*
*----------------------------------------------------------------------*
CONSTANTS:
c_tab(1) TYPE c VALUE cl_abap_char_utilities=>horizontal_tab.
*----------------------------------------------------------------------*
*
G L O B A L D E C L A R A T I O N S
*
*----------------------------------------------------------------------*
DATA: g_repid
TYPE sy-repid,
g_flag(1) TYPE c.
"Flag
*----------------------------------------------------------------------*
*
S E L E C T I O N S C R E E N S
*
*----------------------------------------------------------------------*
SELECTION-SCREEN BEGIN OF BLOCK blk1 WITH FRAME TITLE text-ss1.
SELECT-OPTIONS s_rdate FOR sy-datum NO-EXTENSION.
SELECTION-SCREEN END OF BLOCK blk1.
SELECTION-SCREEN BEGIN OF BLOCK blk2 WITH FRAME TITLE text-ss2.
SELECTION-SCREEN BEGIN OF LINE.
PARAMETERS: p_cvac RADIOBUTTON GROUP rad1 DEFAULT 'X'
USER-COMMAND f1.
SELECTION-SCREEN COMMENT 5(30) text-015 FOR FIELD p_cvac.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN BEGIN OF LINE.
PARAMETERS : p_ovac RADIOBUTTON GROUP rad1.
SELECTION-SCREEN COMMENT 5(30) text-016 FOR FIELD p_ovac.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN END OF BLOCK blk2.
SELECTION-SCREEN BEGIN OF BLOCK blk4 WITH FRAME TITLE text-ss4.
SELECTION-SCREEN BEGIN OF LINE.
* Create File
PARAMETERS: p_creat AS CHECKBOX.
SELECTION-SCREEN COMMENT 5(16) text-ss5 FOR FIELD p_creat.
* Header
PARAMETERS: p_headr AS CHECKBOX.
SELECTION-SCREEN COMMENT 25(23) text-ss6 FOR FIELD p_headr.
* Delimit Character
PARAMETERS: p_dlchr(1) TYPE c.
SELECTION-SCREEN COMMENT 52(27) text-ss7 FOR FIELD p_dlchr.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN SKIP 1.
* Application Server
SELECTION-SCREEN BEGIN OF LINE.
PARAMETERS: p_appl RADIOBUTTON GROUP rad2 USER-COMMAND f2
MODIF ID sc1 DEFAULT 'X'.
SELECTION-SCREEN COMMENT 5(30) text-017 FOR FIELD p_appl.

SELECTION-SCREEN END OF LINE.


* Application Server Logical File
PARAMETERS: p_logfn TYPE filename-fileintern MODIF ID sc2
DEFAULT 'Z_REP_HR_FILEPATH' NO-DISPLAY.
PARAMETERS: p_appdir TYPE char4 MODIF ID kc DEFAULT 'R012'.
* Application Server Download File Name
PARAMETERS: p_appfn TYPE rlgrap-filename MODIF ID sc1.
* Presentation Server
SELECTION-SCREEN BEGIN OF LINE.
PARAMETERS : p_pres RADIOBUTTON GROUP rad2.
SELECTION-SCREEN COMMENT 5(30) text-018 FOR FIELD p_pres.
SELECTION-SCREEN END OF LINE.
* Presentation server file details
PARAMETERS: p_prdir TYPE ibipparms-path MODIF ID sc2.
PARAMETERS: p_prefn TYPE ibipparms-path MODIF ID sc2. "Input file
SELECTION-SCREEN END OF BLOCK blk4.
*----------------------------------------------------------------------*
*
INITIALIZATION
*----------------------------------------------------------------------*
INITIALIZATION.
* DK01- Start of Delete
* IF NOT p_cvac IS INITIAL.
*
SELECT SINGLE * FROM zth_events INTO st_events
*
WHERE interface = 'R012'
*
AND filecode = 'C'.
*
IF sy-subrc EQ 0.
*
s_rdate-sign = 'I'. s_rdate-option = 'EQ'.
*
s_rdate-low = st_events-endda + 1.
*
s_rdate-high = sy-datum. APPEND s_rdate. " SS01+
*
ENDIF.
* ENDIF.
* IF NOT p_ovac IS INITIAL.
*
SELECT SINGLE * FROM zth_events INTO st_events
*
WHERE interface = 'R012'
*
AND filecode = 'O'.
*
IF sy-subrc EQ 0.
*
s_rdate-sign = 'I'. s_rdate-option = 'EQ'.
*
s_rdate-low = st_events-endda + 1.
*
s_rdate-high = sy-datum. APPEND s_rdate. " SS01+
*
ENDIF.
* ENDIF.
* DK01- End of Delete
*----------------------------------------------------------------------*
*
AT S E L E C T I O N
S C R E E N
O U T P U T
*----------------------------------------------------------------------*
AT SELECTION-SCREEN OUTPUT.
PERFORM selection_screen_output.
*----------------------------------------------------------------------*
*
AT S E L E C T I O N
S C R E E N
*----------------------------------------------------------------------*
AT SELECTION-SCREEN.
IF s_rdate-low IS INITIAL OR
s_rdate-high IS INITIAL.
*
Please enter data selection period {from and to}.
MESSAGE e304(zhhr).
ELSE.
* DK01+ Start of Insert

*
*
*

*
*

IF s_rdate-low > sy-datum.


Begin Date should not be after Today.
MESSAGE e317(zhhr).
ENDIF.
DK01+ End of Insert
PERFORM validate_dates.
" DK01ENDIF.
CHECK NOT p_creat IS INITIAL.
CHECK sy-ucomm EQ 'ONLI' OR sy-ucomm = 'SJOB'.
Validate the selection criteria entered on the selection-screen
Check if the input/output file details are entered
PERFORM zvalidate_sel_screen USING p_appl
p_logfn
p_appdir
p_appfn
p_pres
p_prefn
p_prdir.

*----------------------------------------------------------------------*
*
AT SELECTION-SCREEN ON VALUE REQUEST
*
*----------------------------------------------------------------------*
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_prdir.
PERFORM f4_help_directory_browser CHANGING p_prdir.
*----------------------------------------------------------------------*
*
M A I N
P R O C E S S I N G F L O W
*
*----------------------------------------------------------------------*
START-OF-SELECTION.
IF NOT p_creat IS INITIAL.
* Derive the file names
PERFORM z_get_file_names.
ENDIF.
IF p_cvac = 'X'.
* Get the Vacancy data for all closed positions
PERFORM get_new_actions.
* Retrieve data for closed vacancies based on actions
PERFORM process_closed_vac.
ELSEIF p_ovac = 'X'.
* Get the Vacancy data for all closed positions
PERFORM get_vacant_pos.
LOOP AT it_pos INTO st_pos.
* Retrieve data for Open vacancies
PERFORM open_vac_rep_data USING st_pos-plnobjid
st_pos-begda
st_pos-endda.
ENDLOOP.
ENDIF.
*----------------------------------------------------------------------*
*
E N D - O F - S E L E C T I O N
*
*----------------------------------------------------------------------*
END-OF-SELECTION.
SORT it_rep BY vacnum.
IF NOT p_creat IS INITIAL.
REFRESH it_file.
* Move the contents to IT_FILE
PERFORM prepare_output.
* Download the files

*
*
*
*
*
*
*

IF p_pres = c_true .
Onto presentation server
PERFORM z_download_files_to_pre.
ENDIF.
IF p_appl = c_true .
Onto application server
PERFORM z_download_files_to_app.
ENDIF.
DK01- Start of Delete
IF g_ret_code IS INITIAL.
PERFORM update_event.
ENDIF.
DK01- End of Delete
ENDIF.
Display Report
PERFORM zwrite_report.

*&---------------------------------------------------------------------*
*&
Form selection_screen_output
*&---------------------------------------------------------------------*
*
Selection Screen Output
*----------------------------------------------------------------------*
FORM selection_screen_output .
DATA : l_date TYPE d.
l_date = s_rdate-high.
IF sy-ucomm = 'F1' OR
s_rdate[] IS INITIAL.
REFRESH s_rdate.
IF NOT p_cvac IS INITIAL.
SELECT SINGLE * FROM zth_events INTO st_events
WHERE interface = 'R012'
AND filecode = 'C'.
IF sy-subrc EQ 0.
s_rdate-sign = 'I'. s_rdate-option = 'EQ'.
s_rdate-low = st_events-endda + 1.
s_rdate-high = l_date. APPEND s_rdate.
ENDIF.
ENDIF.
IF NOT p_ovac IS INITIAL.
SELECT SINGLE * FROM zth_events INTO st_events
WHERE interface = 'R012'
AND filecode = 'O'.
IF sy-subrc EQ 0.
s_rdate-sign = 'I'. s_rdate-option = 'EQ'.
s_rdate-low = st_events-endda + 1.
s_rdate-high = l_date. APPEND s_rdate.
ENDIF.
ENDIF.
ENDIF.
*
*

LOOP AT SCREEN.
If the application server radiobutton is selected then disable the
Presentation server fields
IF p_appl = c_true.
IF screen-name = 'P_PRDIR'.
screen-input = 0.
CLEAR p_prdir.
ENDIF.
IF screen-name = 'P_PREFN'.
screen-input = 0.

CLEAR p_prefn.
ENDIF.
IF screen-name = 'P_APPDIR'.
screen-input = 0.
ENDIF.
ENDIF.
IF p_pres = c_true.
* If the presentaion server radiobutton is selected then disable the
* application server fields
IF screen-name = 'P_APPDIR'.
screen-input = 0.
ENDIF.
IF screen-name = 'P_APPFN'.
screen-input = 0.
CLEAR p_appfn.
ENDIF.
ENDIF.
MODIFY SCREEN.
ENDLOOP.
ENDFORM.
" selection_screen_output
*&---------------------------------------------------------------------*
*&
Form prepare_output
*&---------------------------------------------------------------------*
*
Prepare Output to be Downloaded
*----------------------------------------------------------------------*
FORM prepare_output .
DATA: l_dchar(1) TYPE c.
"Delimit Character
l_dchar = p_dlchr.
IF p_dlchr = 'T'.
" Tab
l_dchar = c_tab.
ENDIF.
* Get the Required Heading
PERFORM get_header.
LOOP AT it_rep INTO st_rep.
IF NOT p_headr IS INITIAL.
AT FIRST.
IF NOT l_dchar IS INITIAL.
*
Delimited Heading
PERFORM concatenate_headr.
ELSE.
st_file-line = lst_hdr.
ENDIF.
APPEND st_file TO it_file. CLEAR st_file.
ENDAT.
ENDIF.
MOVE-CORRESPONDING st_rep TO st_out.
IF NOT l_dchar IS INITIAL.
*
Delimit Record
PERFORM concatenate_out.
ELSE.
st_file-line = st_out.
ENDIF.
APPEND st_file TO it_file. CLEAR st_file.
ENDLOOP.
ENDFORM.
" prepare_output
*&---------------------------------------------------------------------*
*&
Form get_header

*&---------------------------------------------------------------------*
* Fill Column Headings into Structure
*----------------------------------------------------------------------*
FORM get_header .
* Column Header Line
lst_hdr-vacnum = 'VacNum'(101).
lst_hdr-vacdesc = 'VacDesc'(102).
lst_hdr-respo
= 'LineMgr'(103).
lst_hdr-resrf
= 'RespPer'(104).
lst_hdr-eeoct
= 'EEO-1'(105).
lst_hdr-orgtext = 'Dept'(106).
lst_hdr-persa
= 'PA'(107).
lst_hdr-patext = 'PA_Text'(108).
lst_hdr-addrs
= 'PA_Add'(109).
lst_hdr-btrtl
= 'PSA'(110).
lst_hdr-trfg1
= 'PayScGrp'(111).
lst_hdr-pernr
= 'AppNum'(112).
lst_hdr-apsta
= 'AppStat'(113).
lst_hdr-appgrp = 'AppGrp'(114).
lst_hdr-nachn
= 'L_Name'(115).
lst_hdr-vorna
= 'F_Name'(116).
lst_hdr-gesch
= 'Gender'(117).
lst_hdr-racky
= 'EO'(118).
lst_hdr-edlvl
= 'EdLvl'(119).
lst_hdr-edcert = 'EdCert'(120).
lst_hdr-statx
= 'VacAssgSt'(121).
lst_hdr-reatx
= 'VacAssgRea'(122).
lst_hdr-int
= 'I'(123).
lst_hdr-begda
= 'VacFilDat'(124).
ENDFORM.
" get_header
*&---------------------------------------------------------------------*
*&
Form concatenate_headr
*&---------------------------------------------------------------------*
* Get Delimited Header
*----------------------------------------------------------------------*
FORM concatenate_headr .
DATA: l_dchar(1) TYPE c.
"Delimit Character
l_dchar = p_dlchr.
IF p_dlchr = 'T'.
" Tab
l_dchar = c_tab.
ENDIF.
CONCATENATE lst_hdr-vacnum
lst_hdr-vacdesc
lst_hdr-respo
lst_hdr-resrf
lst_hdr-eeoct
lst_hdr-orgtext
lst_hdr-persa
lst_hdr-patext
lst_hdr-addrs
lst_hdr-btrtl
lst_hdr-trfg1
lst_hdr-pernr
lst_hdr-apsta
lst_hdr-appgrp
lst_hdr-nachn
lst_hdr-vorna
lst_hdr-gesch
lst_hdr-racky

lst_hdr-edlvl
lst_hdr-edcert
lst_hdr-statx
lst_hdr-reatx
lst_hdr-int
lst_hdr-begda
INTO st_file-line SEPARATED BY l_dchar.
ENDFORM.
" concatenate_headr
*&---------------------------------------------------------------------*
*&
Form concatenate_out
*&---------------------------------------------------------------------*
*
Record with Delimiter
*----------------------------------------------------------------------*
FORM concatenate_out .
DATA: l_dchar(1) TYPE c.
"Delimit Character
l_dchar = p_dlchr.
IF p_dlchr = 'T'.
" Tab
l_dchar = c_tab.
ENDIF.
CONCATENATE st_out-vacnum
st_out-vacdesc
st_out-respo
st_out-resrf
st_out-eeoct
st_out-orgtext
st_out-persa
st_out-patext
st_out-addrs
st_out-btrtl
st_out-trfg1
st_out-pernr
st_out-apsta
st_out-appgrp
st_out-nachn
st_out-vorna
st_out-gesch
st_out-racky
st_out-edlvl
st_out-edcert
st_out-statx
st_out-reatx
st_out-int
st_out-begda
INTO st_file-line SEPARATED BY l_dchar.
ENDFORM.
" concatenate_out
*&---------------------------------------------------------------------*
*&
Form zwrite_report
*&---------------------------------------------------------------------*
*
Display ALV Report
*----------------------------------------------------------------------*
FORM zwrite_report .
* Prepare ALV field catalog for display
PERFORM create_catalog.
* Sorting
PERFORM create_sort.
* Preparing Layout structure
PERFORM set_layout.
* Prepare ALV Event

PERFORM fill_events.
* Prepare ALV header for display
PERFORM list_header.
* Call ALV
g_repid = sy-repid.
CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
EXPORTING
i_callback_program = g_repid
is_layout
= st_layout
it_fieldcat
= it_fieldcat
it_sort
= it_sort
it_events
= it_events
TABLES
t_outtab
= it_rep
EXCEPTIONS
program_error
= 1
OTHERS
= 2.
IF sy-subrc <> 0.
MESSAGE i301(zhhr).
ENDIF.
ENDFORM.
" zwrite_report
*&---------------------------------------------------------------------*
*&
Form z_download_files_to_pre
*&---------------------------------------------------------------------*
*
Download the files into the presentation server
*----------------------------------------------------------------------*
FORM z_download_files_to_pre .
DATA: l_filename TYPE string, "Filename
l_tablename TYPE char20. "Tablename
* Download the processed file
l_filename = g_outp_fn.
l_tablename = 'IT_FILE'(020).
PERFORM z_pre_download USING l_filename l_tablename.
IF NOT g_ret_code IS INITIAL.
MESSAGE i302 WITH g_outp_fn.
ENDIF.
ENDFORM.
" z_download_files_to_pre
*&---------------------------------------------------------------------*
*&
Form z_download_files_to_app
*&---------------------------------------------------------------------*
*
Download all the files to Application server
*----------------------------------------------------------------------*
FORM z_download_files_to_app .
DATA: l_filename TYPE string. "Filename
* Download the processed file
l_filename = g_outp_fn.
PERFORM z_file_download USING l_filename.
IF NOT g_ret_code IS INITIAL.
MESSAGE i302 WITH g_outp_fn.
ENDIF.
ENDFORM.
" z_download_files_to_app
*&---------------------------------------------------------------------*
*&
Form z_file_download
*&---------------------------------------------------------------------*
*
Download file on applicatin server
*----------------------------------------------------------------------*
FORM z_file_download USING pv_filename TYPE any.
* Open the file
OPEN DATASET pv_filename FOR OUTPUT IN TEXT MODE ENCODING DEFAULT.

IF sy-subrc = 0.
LOOP AT it_file INTO st_file.
*
Tranfer the data from the internal table
TRANSFER st_file TO pv_filename LENGTH 426.
ENDLOOP.
* Close the file
CLOSE DATASET pv_filename.
ENDIF.
ENDFORM.
" z_file_download
*&---------------------------------------------------------------------*
*&
Form create_catalog
*&---------------------------------------------------------------------*
*
Prepare Field Catalog for ALV Display
*----------------------------------------------------------------------*
FORM create_catalog .
REFRESH it_fieldcat.
f_cat 01 'VACNUM'
' '
'VacNum'(s01)
'Vacancy Number'(c01).
f_cat 02 'VACDESC' ' '
'VacDesc'(s02)
'Vacancy Description'(c02).
f_cat 03 'RESPO'
' '
'LineMgr'(s03)
'Line Manager'(c03).
f_cat 04 'RESRF'
' '
'RespPer'(s04)
'Responsible Person'(c04).
f_cat 05 'EEOCT'
' '
'EEO-1'(s05)
'EEO-1 Category'(c05).
f_cat 06 'ORGTEXT' ' '
'Dept'(s06)
'Department'(c06).
f_cat 07 'PERSA'
' '
'PersArea'(s07)
'Personnel Area'(c07).
f_cat 08 'PATEXT'
' '
'PA_Text'(s08)
'Personnel Area Text'(c08).
f_cat 09 'ADDRS'
' '
'PA_Add'(s09)
'Personnel Area Address'(c09).
f_cat 10 'BTRTL'
' '
'PersSubArea'(s10) 'Personnel Subarea'(c10).
f_cat 11 'TRFG1'
' '
'PayScGrp'(s11)
'Pay Scale Group'(c11).
f_cat 12 'PERNR'
' '
'AppNum'(s12)
'Applicant Number'(c12).
f_cat 13 'APSTA'
' '
'AppStat'(s13)
'Applicant Status'(c13).
f_cat 14 'APPGRP'
' '
'AppGrp'(s14)
'Applicant Group'(c14).
f_cat 15 'NACHN'
' '
'L_Name'(s15)
'Last Name'(c15).
f_cat 16 'VORNA'
' '
'F_Name'(s16)
'First Name'(c16).
f_cat 17 'GESCH'
' '
'Gender'(s17)
'Gender'(c17).
f_cat 18 'RACKY'
' '
'EthOrg'(s18)
'Ethnic Origin'(c18).
f_cat 19 'EDLVL'
' '
'EdLvl'(s19)
'Educational Level'(c19).
f_cat 20 'EDCERT'
' '
'EdCert'(s20)
'Educational Certificate'(c20)
.
f_cat 21 'STATX'
' '
'VacAssgSt'(s21)
'Vacancy Assignment Status'(c2
1).
f_cat 22 'REATX'
' '
'VacAssgRea'(s22) 'Vacancy Assignment Reason'(c2
2).
f_cat 23 'INT'
' '
'Int'(s23)
'Interviewed'(c23).
f_cat 24 'BEGDA'
'DATS' 'VacFillDte'(s24) 'Vacancy Filled Date'(c24).
f_cat 25 'APPLNO'
'G'
' '
' '.
f_cat 26 'STELL'
'G'
' '
' '.
f_cat 27 'ORGEH'
'G'
' '
' '.
f_cat 28 'STRAS'
'G'
' '
' '.
f_cat 29 'ORT01'
'G'
' '
' '.
f_cat 30 'REGIO'
'G'
' '
' '.
f_cat 31 'PSTLZ'
'G'
' '
' '.
f_cat 32 'STREA'
'G'
' '
' '.
f_cat 33 'PERSG'
'G'
' '
' '.
f_cat 34 'SLART'
'G'
' '
' '.
f_cat 35 'SLABS'
'G'
' '
' '.
ENDFORM.
" create_catalog
*&---------------------------------------------------------------------*
*&
Form set_layout
*&---------------------------------------------------------------------*
*
Set Layout Structure
*----------------------------------------------------------------------*

FORM set_layout .
st_layout-colwidth_optimize = c_true.
" Optimizes Length
st_layout-zebra = c_true.
" Alternate Colors
st_layout-max_linesize = 455.
st_layout-min_linesize = 80.
st_layout-window_titlebar =
'R-HR-020-080-010 Open & Closed Vacancy Report'(l25).
ENDFORM.
" set_layout
*&---------------------------------------------------------------------*
*&
Form fill_events
*&---------------------------------------------------------------------*
*
Fill Events ( Get top_of_page)
*----------------------------------------------------------------------*
FORM fill_events .
DATA: ls_event TYPE slis_alv_event.
* Getting all the related events using the below function module
CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
EXPORTING
i_list_type = 0 "simple list REUSE_ALV_LIST_DISPLAY
IMPORTING
et_events = it_events.
* Bulding in Events
READ TABLE it_events WITH KEY name = slis_ev_top_of_page
INTO ls_event.
IF sy-subrc = 0.
MOVE slis_ev_top_of_page TO ls_event-form.
MODIFY it_events FROM ls_event INDEX sy-tabix
TRANSPORTING form.
ENDIF.
ENDFORM.
" fill_events
*---------------------------------------------------------------------*
*
FORM top_of_page
*
*---------------------------------------------------------------------*
* Top of page event for basic list display
*
*---------------------------------------------------------------------*
FORM top_of_page .
"#EC CALLED
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
it_list_commentary = it_listheader.
ENDFORM.
" top_of_page
*&---------------------------------------------------------------------*
*&
Form list_header
*&---------------------------------------------------------------------*
*
Get Header for Display
*----------------------------------------------------------------------*
FORM list_header .
DATA : l_char(10) TYPE c,
l_len TYPE i,
l_text TYPE string.
REFRESH it_listheader.
st_listheader-typ = 'H'.
* st_listheader-info = 'Closed Vacancy & Applts by APP Dist.'(h44). "SS01*Begin: SS01+
IF p_ovac = 'X'.
l_text = 'Open Vacancy Report'(h45).
ELSEIF p_cvac = 'X'.
l_text = 'Closed Vacancy Report'(h46).

ENDIF.
st_listheader-info = l_text.
*End: SS01+
APPEND st_listheader TO it_listheader. CLEAR st_listheader.
st_listheader-typ = 'S'.
st_listheader-key = 'Run On:'(h05).
WRITE sy-uzeit TO l_char.
WRITE sy-datum TO st_listheader-info.
CONCATENATE st_listheader-info l_char INTO st_listheader-info
SEPARATED BY space.
APPEND st_listheader TO it_listheader. CLEAR st_listheader.
st_listheader-typ = 'S'.
st_listheader-key = 'Period :'(h07).
WRITE s_rdate-low TO st_listheader-info.
WRITE s_rdate-high TO l_char.
CONCATENATE st_listheader-info 'To: '(h11)
l_char INTO st_listheader-info
SEPARATED BY space.
APPEND st_listheader TO it_listheader. CLEAR st_listheader.
st_listheader-typ = 'S'.
st_listheader-key = 'Recs Processed'(h09).
DESCRIBE TABLE it_rep LINES sy-index.
WRITE sy-index TO st_listheader-info LEFT-JUSTIFIED.
APPEND st_listheader TO it_listheader. CLEAR st_listheader.
IF NOT p_creat IS INITIAL.
l_len = STRLEN( g_outp_fn ).
IF l_len > 60.
st_listheader-typ = 'S'.
st_listheader-key = 'Downloaded File'(h10).
st_listheader-info = g_outp_fn+0(60).
APPEND st_listheader TO it_listheader. CLEAR st_listheader.
l_len = l_len - 60.
st_listheader-typ = 'S'.
*
st_listheader-key = 'Downloaded File'(h10).
st_listheader-info = g_outp_fn+60(l_len).
APPEND st_listheader TO it_listheader. CLEAR st_listheader.
ELSE.
st_listheader-typ = 'S'.
st_listheader-key = 'Downloaded File'(h10).
st_listheader-info = g_outp_fn.
APPEND st_listheader TO it_listheader. CLEAR st_listheader.
ENDIF.
ENDIF.
ENDFORM.
" list_header
*&---------------------------------------------------------------------*
*&
Form get_new_actions
*&---------------------------------------------------------------------*
*
Get the actions data for each PERNR
*----------------------------------------------------------------------*
FORM get_new_actions .
*Get the actions data for all Hire actions
SELECT pernr endda begda massn massg aedtm stat2
FROM pa0000
INTO TABLE it_actions

WHERE ( massn = '10' OR


massn = '11' OR
massn = '12' OR
massn = '14' )
AND aedtm GE s_rdate-low
AND aedtm LE s_rdate-high.
* Get the actions date for transfer/promotion/demotion
SELECT pernr endda begda massn massg aedtm
FROM pa0302
APPENDING TABLE it_actions
WHERE ( massn = '16' OR
massn = '18' OR
massn = '20' )
AND aedtm GE s_rdate-low
AND aedtm LE s_rdate-high.
* Sort the actions data based on PERNR,begin date and action type
SORT it_actions DESCENDING BY pernr begda massn .
* Delete the adjacent entries so that only the latest action
* for the PERNR remains in the internal table
* DELETE ADJACENT DUPLICATES FROM it_actions COMPARING pernr.
ENDFORM.
" get_new_actions
*&---------------------------------------------------------------------*
*&
Form Process_Closed_Vac
*&---------------------------------------------------------------------*
*
Process Closed Vacancies
*----------------------------------------------------------------------*
FORM process_closed_vac.
DATA: l_index TYPE sy-tabix,
l_plans TYPE pa0001-plans,
l_objid TYPE hrp1001-objid,
l_massn TYPE pa0000-massn.
CLEAR: l_plans, l_objid, l_massn.
*For each PERNR in the actions data
LOOP AT it_actions INTO st_actions.
l_index = sy-tabix.
* If the position for the PERNR exists with filled status
* check if the there is any action type 'No show'
* exists after hire action date, for the same employee
SELECT massn UP TO 1 ROWS FROM pa0000 INTO l_massn
WHERE pernr = st_actions-pernr
AND begda GE st_actions-begda
AND ( massn = '50' OR
massn = '51' ).
ENDSELECT.
* If action 'No Show' exists for the employee, then
* delete that entry from the actions table.
* This PERNR will not be processed further.
IF sy-subrc EQ 0.
DELETE it_actions INDEX l_index.
CONTINUE.
ENDIF.
* Get the position details
CLEAR l_plans.
SELECT plans UP TO 1 ROWS FROM pa0001 INTO l_plans
WHERE pernr = st_actions-pernr
AND begda <= st_actions-begda
AND endda >= st_actions-begda.

ENDSELECT.
IF sy-subrc = 0.
l_objid = l_plans.
* DK02- Start of Delete
**
Check if the position exists in HRP1007 table
*
SELECT objid UP TO 1 ROWS FROM hrp1007
*
INTO l_objid
*
WHERE plvar = '01'
*
AND otype = 'S'
**
AND objid = l_plans "SS01*
AND objid = l_objid
"SS01+
*
AND istat = '1'
**
AND begda <= st_actions-begda "SS01**
AND endda >= st_actions-endda. "SS01*
AND begda <= st_actions-endda
"SS01+
*
AND endda >= st_actions-begda. "SS01+
*
ENDSELECT.
*
IF sy-subrc = 0.
* DK02- End of Delete
*
Vacancy found, get the closed vacncy data for the PERNR
PERFORM closed_vac_rep_data USING l_objid
st_actions-begda
st_actions-begda.
*
ENDIF.
" DK02ENDIF.
* Begin: SS01+
CLEAR st_actions.
* End: SS01ENDLOOP.
ENDFORM.
"Process_Closed_Vac
*&---------------------------------------------------------------------*
*&
Form closed_vac_rep_data
*&---------------------------------------------------------------------*
*
Get the closed Vacancy data for all the PERNRs
*----------------------------------------------------------------------*
FORM closed_vac_rep_data USING value(pv_objid) TYPE hrp1001-objid
value(pv_begda) TYPE p0000-begda
value(pv_endda) TYPE p0000-endda.
* SELECT SINGLE pernr FROM pb4005 INTO st_rep-applno
*
WHERE empnr = st_actions-pernr
*
AND begda <= pv_endda
*
AND endda >= pv_begda.
** If no application number is found for the PERNR, exit the block.
* IF sy-subrc NE 0.
SELECT aplno UP TO 1 ROWS FROM pa0139 INTO st_rep-applno
WHERE pernr = st_actions-pernr.
ENDSELECT.
IF sy-subrc NE 0.
*
EXIT.
* Begin : SS01+
CLEAR st_rep-applno.
* End : SS01+
ENDIF.
* ENDIF.
* Get the Position details for the PERNR
PERFORM get_position_details USING pv_objid pv_begda pv_endda.
* Get the Applicant/Personnel Number
st_rep-pernr = st_actions-pernr.
* Begin : SS01+

IF NOT st_rep-applno IS INITIAL.


* End : SS01+
* Get the corresponding applicant data for the PERNR
PERFORM get_applicant_data
USING st_rep-applno pv_begda pv_endda.
"DK01+
*
PERFORM get_applicant_data
*
USING st_rep-applno s_rdate-low s_rdate-high."SS01+
* Begin : SS01+
ENDIF.
* End : SS01+
* Get the Vacancy Filled Date
st_rep-begda = pv_begda.
* Done
APPEND st_rep TO it_rep. CLEAR st_rep.
ENDFORM.
" closed_vac_rep_data
*&---------------------------------------------------------------------*
*&
Form open_vac_rep_data
*&---------------------------------------------------------------------*
*
Get the Open Vacancy data for all the applicants
*----------------------------------------------------------------------*
FORM open_vac_rep_data USING value(pv_objid) TYPE hrp1000-objid
value(pv_begda) TYPE d
value(pv_endda) TYPE d.
DATA: l_appl(1) TYPE c.
CLEAR l_appl.
CLEAR st_rep.
* Get the Position details for each of the open vacancy
PERFORM get_position_details USING pv_objid pv_begda pv_endda.
* For each applicant assigned to the vacancyhe applicant data
LOOP AT it_pernr INTO st_pernr WHERE objid = pv_objid.
st_rep-pernr = st_pernr-pernr.
* Get the applicant data
*
PERFORM get_applicant_data USING st_pernr-pernr pv_begda pv_endda. "SS01PERFORM get_applicant_data USING st_pernr-pernr s_rdate-low s_rdate-high."SS
01+
* Set the flag to indicate that an applicant was assigned to the vacancy
l_appl = 'X'.
APPEND st_rep TO it_rep.
ENDLOOP.
* Even if there is no applicant assigned to the vacancy append
* the vacant position details only
IF l_appl IS INITIAL.
APPEND st_rep TO it_rep.
ENDIF.
CLEAR st_rep.
ENDFORM.
" open_vac_rep_data
*&---------------------------------------------------------------------*
*&
Form get_position_details
*&---------------------------------------------------------------------*
*
Get the position details
*----------------------------------------------------------------------*
FORM get_position_details USING value(pv_objid) TYPE hrp1001-objid
value(pv_begda) TYPE p0000-begda
value(pv_endda) TYPE p0000-endda.
DATA: l_objid TYPE hrp1001-objid,
l_sobid TYPE hrp1001-sobid.

* Get the position/vacancy number


st_rep-vacnum = pv_objid.
* Get the position/vacancy description
SELECT mc_stext UP TO 1 ROWS FROM hrp1000
WHERE plvar
AND istat
AND otype
AND objid
AND begda
AND endda
ENDSELECT.
IF sy-subrc NE 0.
CLEAR st_rep-vacdesc.
ENDIF.

INTO st_rep-vacdesc
= '01'
= '1'
= 'S'
= pv_objid
<= pv_endda
>= pv_begda.

* Get the line manager ID & Personnel Officer ID for the vacancy
SELECT respo resrf UP TO 1 ROWS FROM t750x
INTO (st_rep-respo,st_rep-resrf)
WHERE otype = 'S'
AND objid = pv_objid
AND begda <= pv_endda
AND endda >= pv_begda.
ENDSELECT.
IF sy-subrc NE 0.
CLEAR : st_rep-respo, st_rep-resrf.
ENDIF.
* Get the Job ID for that position
CLEAR l_sobid.
SELECT sobid UP TO 1 ROWS FROM hrp1001 INTO l_sobid
WHERE plvar = '01'
AND otype = 'S'
AND objid = pv_objid
AND istat = '1'
AND rsign = 'B'
AND relat = '007'
AND sclas = 'C'
AND begda <= pv_endda
AND endda >= pv_begda.
ENDSELECT.
IF sy-subrc = 0.
st_rep-stell = l_sobid.
ENDIF.
*Get the EEO category for the Job
SELECT eeoct UP TO 1 ROWS FROM t5u13 INTO st_rep-eeoct
WHERE stell = l_sobid
AND begda <= pv_endda
AND endda >= pv_begda.
ENDSELECT.
IF sy-subrc NE 0.
CLEAR st_rep-eeoct.
ENDIF.
*Get the Org. Unit ID for department
CLEAR l_sobid.
SELECT sobid UP TO 1 ROWS FROM hrp1001 INTO l_sobid
WHERE plvar = '01'
AND istat = '1'
AND otype = 'S'

AND
AND
AND
AND
AND
AND

objid
rsign
relat
sclas
begda
endda

= pv_objid
= 'A'
= '003'
= 'O'
<= pv_endda
>= pv_begda.

ENDSELECT.
IF sy-subrc EQ 0.
st_rep-orgeh = l_sobid.
ENDIF.
* Get the Org. Unit Text
l_objid = l_sobid .
SELECT stext UP TO 1 ROWS FROM hrp1000 INTO st_rep-orgtext
WHERE plvar = '01'
AND istat = '1'
AND otype = 'O'
AND objid = l_objid
AND begda <= pv_endda
AND endda >= pv_begda.
ENDSELECT.
IF sy-subrc NE 0.
CLEAR st_rep-orgtext.
ENDIF.
* Get Personnel Area for the position
SELECT persa UP TO 1 ROWS FROM hrp1008 INTO st_rep-persa
WHERE plvar = '01'
AND otype = 'S'
AND objid = pv_objid
AND istat = '1'
AND begda <= pv_endda
AND endda >= pv_begda.
ENDSELECT.
IF sy-subrc NE 0.
CLEAR st_rep-persa.
ENDIF.
* Get Personnel Area Text & Address details for the position
SELECT SINGLE name1 stras ort01 regio pstlz
FROM t500p
INTO (st_rep-patext,st_rep-stras,st_rep-ort01,
st_rep-regio,st_rep-pstlz)
WHERE persa = st_rep-persa.
IF sy-subrc NE 0.
CLEAR : st_rep-patext, st_rep-stras, st_rep-ort01,
st_rep-regio, st_rep-pstlz.
ELSE.
* Concatenate the address details
*SS01- Start
*
CONCATENATE st_rep-stras st_rep-ort01 st_rep-regio
*
st_rep-pstlz INTO st_rep-addrs .
*SS01- End
*SS01+ Start
CONCATENATE st_rep-stras st_rep-ort01 st_rep-regio
INTO st_rep-addrs SEPARATED BY ', '.
CONCATENATE st_rep-addrs st_rep-pstlz
INTO st_rep-addrs SEPARATED BY space.
*SS01+ End
ENDIF.
* Get the Personnel Sub Area

l_objid = pv_objid.
SELECT btrtl UP TO 1 ROWS FROM hrp1008 INTO st_rep-btrtl
WHERE plvar = '01'
AND otype = 'S'
AND objid = l_objid
AND istat = '1'
AND begda <= pv_endda
AND endda >= pv_begda.
ENDSELECT.
IF sy-subrc NE 0.
CLEAR st_rep-btrtl.
ENDIF.
* Get the Pay Scale Group
l_objid = st_rep-stell.
SELECT trfg1 UP TO 1 ROWS FROM hrp1005 INTO st_rep-trfg1
WHERE plvar = '01'
AND otype = 'C'
AND objid = l_objid
AND istat = '1'
AND begda <= pv_endda
AND endda >= pv_begda.
ENDSELECT.
IF sy-subrc NE 0.
CLEAR st_rep-trfg1.
ENDIF.
ENDFORM.
"get_position_details
*&---------------------------------------------------------------------*
*&
Form get_applicant_data
*&---------------------------------------------------------------------*
*
Get the applicant details
*----------------------------------------------------------------------*
FORM get_applicant_data USING value(pv_applno) TYPE pb4000-pernr
value(pv_begda) TYPE d
value(pv_endda) TYPE d.
DATA : l_date TYPE d.
* Get the Applicant Status
SELECT apsta strea UP TO 1 ROWS FROM pb4000
INTO (st_rep-apsta,st_rep-strea)
WHERE pernr = pv_applno
AND begda <= pv_endda
AND endda >= pv_begda.
ENDSELECT.
IF sy-subrc NE 0.
CLEAR: st_rep-apsta, st_rep-strea.
ENDIF.
* Get the Employee Group
SELECT persg UP TO 1 ROWS FROM pb0001 INTO
WHERE pernr
AND begda
AND endda
ENDSELECT.
IF sy-subrc NE 0.
CLEAR st_rep-persg.
ENDIF.
* Applicant Group
IF st_rep-persg = '1'.

st_rep-persg
= pv_applno
<= pv_endda
>= pv_begda.

st_rep-appgrp = 'External'(t01).
ELSE.
st_rep-appgrp = 'Internal'(t02).
ENDIF.
* Get the First Name,Last Name and Sex
SELECT nachn vorna gesch UP TO 1 ROWS FROM pb0002
INTO (st_rep-nachn,st_rep-vorna,st_rep-gesch)
WHERE pernr = pv_applno
AND begda <= pv_endda
AND endda >= pv_begda.
ENDSELECT.
IF sy-subrc NE 0.
CLEAR: st_rep-nachn, st_rep-vorna, st_rep-gesch.
ENDIF.
*Get the Etnic Origin
SELECT racky UP TO 1 ROWS FROM pb0077
WHERE pernr
AND begda
AND endda
ENDSELECT.
IF sy-subrc NE 0.
CLEAR st_rep-racky.
ENDIF.

INTO st_rep-racky
= pv_applno
<= pv_endda
>= pv_begda.

*Get the Educational Establishment and Certificate


SELECT endda slart slabs UP TO 1 ROWS FROM pb0022
INTO (l_date,st_rep-slart,st_rep-slabs)
WHERE pernr = pv_applno
ORDER BY endda DESCENDING.
ENDSELECT.
IF sy-subrc NE 0.
CLEAR: st_rep-slart, st_rep-slabs.
ELSE.
* Get the Educational Establishment Text
SELECT SINGLE stext FROM t517t INTO st_rep-edlvl
WHERE sprsl = sy-langu
AND slart = st_rep-slart.
IF sy-subrc NE 0.
CLEAR st_rep-edlvl.
ENDIF.
*

Get the Certificate Text


SELECT SINGLE stext FROM t519t INTO st_rep-edcert
WHERE sprsl = sy-langu
AND slabs = st_rep-slabs.
IF sy-subrc NE 0.
CLEAR st_rep-edcert.
ENDIF.
ENDIF.

* Get the Vacancy Assignment Status Text


SELECT SINGLE statx FROM t751b INTO st_rep-statx
WHERE langu = sy-langu
AND apsta = st_rep-apsta.
IF sy-subrc NE 0.
CLEAR st_rep-statx.
ENDIF.

* Get the Vacancy Assignment Reason Text


SELECT SINGLE reatx FROM t751c INTO st_rep-reatx
WHERE langu = sy-langu
AND strea = st_rep-strea.
IF sy-subrc NE 0.
CLEAR st_rep-reatx.
ENDIF.
* Get the status for interviewed based on the Applicant Status
IF st_rep-apsta = '7' OR
st_rep-apsta = '2' OR
st_rep-apsta = '6' OR
st_rep-apsta = '5' OR
st_rep-strea = '21'.
st_rep-int = 'Y'.
ELSE.
st_rep-int = 'N'.
ENDIF.
ENDFORM.
"get_applicant_data
*&---------------------------------------------------------------------*
*&
Form z_get_file_names
*&---------------------------------------------------------------------*
*
Get the file names
*----------------------------------------------------------------------*
FORM z_get_file_names .
IF p_pres = c_true.
* Get filenames (input/output) for Presentation server load.
PERFORM zget_pres_file_names USING p_prefn
p_prdir.
ELSEIF p_appl = c_true.
PERFORM zget_appl_file_names USING p_logfn
p_appfn
p_appdir
CHANGING g_flag .
ENDIF.
ENDFORM.
" z_get_file_names
*&---------------------------------------------------------------------*
*&
Form get_vacant_pos
*&---------------------------------------------------------------------*
*
Get the vacant positions
*----------------------------------------------------------------------*
FORM get_vacant_pos .
* Get the Vacancy data for all open positions
SELECT objid status begda endda FROM hrp1007
INTO TABLE it_pos
WHERE plvar = '01'
AND otype = 'S'
AND istat = '1'
AND status = '0'
AND begda <= s_rdate-high
AND endda >= s_rdate-low.
* For each applicant number for a single position
* get the following details
SORT it_pos DESCENDING BY plnobjid endda.
DELETE ADJACENT DUPLICATES FROM it_pos COMPARING plnobjid.
SORT it_pos BY plnobjid.
IF NOT it_pos[] IS INITIAL.
SELECT pernr objid begda endda FROM pb4002
INTO TABLE it_pernr

FOR ALL ENTRIES IN it_pos


WHERE otype = 'S'
AND objid = it_pos-plnobjid
AND begda <= it_pos-endda
AND endda >= it_pos-begda.
SORT it_pernr DESCENDING BY objid pernr begda.
DELETE ADJACENT DUPLICATES FROM it_pernr COMPARING objid pernr.
SORT it_pernr BY objid pernr.
ENDIF.
ENDFORM.
" get_vacant_pos
* DK01- Start of Delete
*&---------------------------------------------------------------------*
*&
Form update_event
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
*FORM update_event .
* st_events-interface = 'R012'(h13).
* st_events-period = 'Weekly'(h14).
* st_events-begda = s_rdate-low.
* st_events-endda = s_rdate-high.
* st_events-rundate = sy-datum.
* st_events-runtime = sy-uzeit.
* IF NOT p_cvac IS INITIAL.
*
st_events-filecode = 'C'.
* ENDIF.
* IF NOT p_ovac IS INITIAL.
*
st_events-filecode = 'O'.
* ENDIF.
* MODIFY zth_events FROM st_events.
* IF sy-subrc NE 0.
** ZTH_EVENTS Update Failed for Key &.
*
MESSAGE e303 WITH st_events.
* ENDIF.
*ENDFORM.
" update_event
*&---------------------------------------------------------------------*
*&
Form validate_dates
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
*FORM validate_dates .
* DATA : l_date TYPE d.
* IF NOT p_cvac IS INITIAL.
*
SELECT SINGLE * FROM zth_events INTO st_events
*
WHERE interface = 'R012'
*
AND filecode = 'C'.
*
IF sy-subrc EQ 0.
*
l_date = st_events-endda + 1.
*
IF s_rdate-low NE l_date.
**
Last file downloaded for closed vacancy was up to &.
*
MESSAGE e315(zhhr) WITH st_events-endda.
*
ENDIF.
*
ENDIF.
* ENDIF.
* IF NOT p_ovac IS INITIAL.
*
SELECT SINGLE * FROM zth_events INTO st_events
*
WHERE interface = 'R012'
*
AND filecode = 'O'.
*
IF sy-subrc EQ 0.

*
l_date = st_events-endda + 1.
*
IF s_rdate-low NE l_date.
**
Last file downloaded for open vacancy was up to &.
*
MESSAGE e316(zhhr) WITH st_events-endda.
*
ENDIF.
*
ENDIF.
* ENDIF.
*ENDFORM.
" validate_dates
* DK01- End of Delete
* DK01+ Start of Insert
*&---------------------------------------------------------------------*
*&
Form create_sort
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
* --> p1
text
* <-- p2
text
*----------------------------------------------------------------------*
FORM create_sort .
REFRESH it_sort.
st_sort-fieldname = 'VACNUM'.
st_sort-tabname = 'IT_REP'.
* st_sort-subtot = c_true.
" Subtotal by Field
st_sort-up = c_true.
APPEND st_sort TO it_sort. CLEAR it_sort.
ENDFORM.
" create_sort
* DK01+ End of Insert

Você também pode gostar