The report is created using dynamic internal table creation.
The Main Program
***********************************************************************
* Description:This program will read the payroll results and display *
* them on ALV report.It will also compare the salary data *
* between the provided date ranges *
***********************************************************************
REPORT zhrpy01.
***********************************************************************
* INCLUDES *
***********************************************************************
"---Include for all types and data
INCLUDE zhrpy01_top.
"---Include for selection screen
INCLUDE zhrpy01_screen.
"---Include for class and methods
INCLUDE zhrpy01_class.
"---Include for PBO
INCLUDE zhrpy01_pbo.
"---Include for PAI
INCLUDE zhrpy01_pai.
*&--------------------------------------------------------------------*
*& INITIALIZATION
*&--------------------------------------------------------------------*
INITIALIZATION.
"--initialize default data
CREATE OBJECT o_sal_comp.
*&--------------------------------------------------------------------*
*& AT SELECTION SCREEN
*&--------------------------------------------------------------------*
AT SELECTION-SCREEN.
IF o_sal_comp IS NOT BOUND.
CREATE OBJECT o_sal_comp.
ENDIF.
*---Validate screen
o_sal_comp->m_validate_screen( ).
*&--------------------------------------------------------------------*
*& START OF SELECTION
*&--------------------------------------------------------------------*
START-OF-SELECTION.
*&--------------------------------------------------------------------*
*& Build field catalog first and than create dynamic table
*&--------------------------------------------------------------------*
o_sal_comp->m_build_field_catalog( ).
CLEAR it_saldata.
*&--------------------------------------------------------------------*
*& GET PERNR
*&--------------------------------------------------------------------*
GET pernr.
UNASSIGN <x_empdata>.
APPEND INITIAL LINE TO it_empdata ASSIGNING <x_empdata>.
IF <x_empdata> IS ASSIGNED.
*&--------------------------------------------------------------------*
* Get Action details
rp-provide-from-last p0000 space s_date-low s_date-high.
IF pnp-sw-found = c_1 AND p0000-stat2 = c_3.
*&--------------------------------------------------------------------*
* Get organnization details
rp-provide-from-last p0001 space s_date-low s_date-high.
IF pnp-sw-found = c_1.
*&---PERNR
<x_empdata>-pernr = p0001-pernr.
*&---Employee Name
<x_empdata>-ename = p0001-ename.
*&---Cost Center
<x_empdata>-kostl = p0001-kostl.
*&---Department
<x_empdata>-zzdept1 = p0001-zzdept1.
*&---Section
<x_empdata>-btrtl = p0001-btrtl.
*&---Grade
<x_empdata>-persk = p0001-persk.
*&---SBU
<x_empdata>-zzsbu1 = p0001-zzsbu1.
*&---Segment
<x_empdata>-zzseg1 = p0001-zzseg1.
*&---Payroll Area
<x_empdata>-abkrs = p0001-abkrs.
ENDIF.
*&--------------------------------------------------------------------*
* Get Bank details
rp-provide-from-last p0009 space s_date-low s_date-high.
IF pnp-sw-found = c_1.
*&---Bank Key
<x_empdata>-bankl = p0009-bankl.
*&---Account Number
<x_empdata>-bankn = p0009-bankn.
ENDIF.
*&--------------------------------------------------------------------*
* Get Dates
rp-provide-from-last p0041 space s_date-low s_date-high.
IF pnp-sw-found = c_1.
CLEAR :gv_dar,gv_dat.
*&---------------------------------------------------------------------*
*& Do loop to check for hire date or original hire date
DO 12 TIMES VARYING gv_dar FROM p0041-dar01 NEXT
p0041-dar02
VARYING gv_dat FROM p0041-dat01 NEXT
p0041-dat02.
*&---------------------------------------------------------------------*
*& Check for Original date
IF gv_dar = c_92.
<x_empdata>-jdate = gv_dat.
*&---------------------------------------------------------------------*
*& Check for hire date
ELSEIF gv_dar = c_95.
<x_empdata>-rdate = gv_dat.
ENDIF.
CLEAR: gv_dar, gv_dat.
ENDDO.
ENDIF.
ENDIF.
*&---------------------------------------------------------------------*
*& Get Salary Details
*&---------------------------------------------------------------------*
*& Reading of the Payresult for all the Periods
CLEAR: it_rgdir,it_rgdir_tmp,gv_relid,gv_type, gv_typename,
ref_payresult, gv_molga, gv_type_1,gv_tadir.
*&---------------------------------------------------------------------*
* Get Sequence numbers
CALL FUNCTION 'CU_READ_RGDIR'
EXPORTING
persnr = pernr-pernr
TABLES
in_rgdir = it_rgdir
EXCEPTIONS
no_record_found = 1
OTHERS = 2.
IF sy-subrc = 0.
*&---------------------------------------------------------------------*
*PYXX_GET_RELID_FROM_PERNR
CALL FUNCTION 'PYXX_GET_RELID_FROM_PERNR'
EXPORTING
employee = pernr-pernr
IMPORTING
relid = gv_relid
molga = gv_molga
EXCEPTIONS
error_reading_infotype_0001 = 1
error_reading_molga = 2
error_reading_relid = 3
OTHERS = 4.
IF sy-subrc NE 0.
ENDIF.
*&---------------------------------------------------------------------*
*Verify the relid
SELECT SINGLE typename
FROM t52relid
INTO gv_type
WHERE relid EQ gv_relid
AND tabname = 'PCL2'.
IF sy-subrc NE 0.
gv_relid = 'IN'.
gv_type = 'PAYIN_RESULT'.
ENDIF.
gv_typename = gv_type.
CREATE DATA ref_payresult TYPE (gv_typename).
ASSIGN ref_payresult->* TO <x_payresult>.
* SRTZA--Status Of records.
* SRTZA = 'A' --Current Result.
* DELETE it_rgdir WHERE srtza NE 'A'.
* PAYTY --> Payment Type ( Regular or Bonus)
* PAYTY = SPACE --'Regular Payroll'.
* PAYTY = 'B' --> 'Bonus'.
*&---------------------------------------------------------------------*
*Get Payroll Result
IF it_rgdir IS NOT INITIAL.
it_rgdir_tmp = it_rgdir.
SORT it_rgdir_tmp BY seqnr DESCENDING.
LOOP AT it_monthrange ASSIGNING <x_monthrange> WHERE type = c_s.
LOOP AT it_rgdir_tmp INTO wa_rgdir WHERE abkrs IN pnpabkrs
AND srtza = 'A'
AND fpbeg <= <x_monthrange>-endda
AND fpend >= <x_monthrange>-begda .
CALL FUNCTION 'PYXX_READ_PAYROLL_RESULT'
EXPORTING
clusterid = gv_relid
employeenumber = pernr-pernr
sequencenumber = wa_rgdir-seqnr
CHANGING
payroll_result = <x_payresult>
EXCEPTIONS
illegal_isocode_or_clusterid = 1
error_generating_import = 2
import_mismatch_error = 3
subpool_dir_full = 4
no_read_authority = 5
no_record_found = 6
versions_do_not_match = 7
error_reading_archive = 8
error_reading_relid = 9
OTHERS = 10.
IF sy-subrc EQ 0.
ASSIGN COMPONENT 'INTER-RT'
OF STRUCTURE <x_payresult> TO <x_rt>.
LOOP AT <x_rt> INTO wa_rt.
UNASSIGN <x_saldata>.
APPEND INITIAL LINE TO it_saldata ASSIGNING <x_saldata>.
IF <x_saldata> IS ASSIGNED.
<x_saldata>-pernr = pernr-pernr.
<x_saldata>-lgart = wa_rt-lgart.
<x_saldata>-betrg = wa_rt-betrg.
<x_saldata>-pabrj = <x_monthrange>-pabrj.
<x_saldata>-pabrp = <x_monthrange>-pabrp.
<x_saldata>-begda = <x_monthrange>-begda.
<x_saldata>-endda = <x_monthrange>-endda.
<x_saldata>-payty = wa_rgdir-payty.
CONCATENATE c_s <x_monthrange>-monthnm <x_monthrange>-begda+0(4)
INTO <x_saldata>-month.
ENDIF.
ENDLOOP.
ENDIF.
ENDLOOP.
ENDLOOP.
*&---------------------------------------------------------------------*
*If Comparison to be made
IF s_cdate IS NOT INITIAL.
LOOP AT it_monthrange ASSIGNING <x_monthrange> WHERE type = c_c.
CLEAR : wa_rgdir,wa_rt,<x_rt>,<x_payresult>.
LOOP AT it_rgdir_tmp INTO wa_rgdir WHERE abkrs IN pnpabkrs
AND srtza = 'A'
AND fpbeg <= <x_monthrange>-endda
AND fpend >= <x_monthrange>-begda .
CALL FUNCTION 'PYXX_READ_PAYROLL_RESULT'
EXPORTING
clusterid = gv_relid
employeenumber = pernr-pernr
sequencenumber = wa_rgdir-seqnr
CHANGING
payroll_result = <x_payresult>
EXCEPTIONS
illegal_isocode_or_clusterid = 1
error_generating_import = 2
import_mismatch_error = 3
subpool_dir_full = 4
no_read_authority = 5
no_record_found = 6
versions_do_not_match = 7
error_reading_archive = 8
error_reading_relid = 9
OTHERS = 10.
IF sy-subrc EQ 0.
UNASSIGN <x_rt>.
ASSIGN COMPONENT 'INTER-RT'
OF STRUCTURE <x_payresult> TO <x_rt>.
LOOP AT <x_rt> INTO wa_rt.
UNASSIGN <x_saldata>.
APPEND INITIAL LINE TO it_saldata ASSIGNING <x_saldata>.
IF <x_saldata> IS ASSIGNED.
<x_saldata>-pernr = pernr-pernr.
<x_saldata>-lgart = wa_rt-lgart.
<x_saldata>-betrg = wa_rt-betrg.
<x_saldata>-pabrj = <x_monthrange>-pabrj.
<x_saldata>-pabrp = <x_monthrange>-pabrp.
<x_saldata>-begda = <x_monthrange>-begda.
<x_saldata>-endda = <x_monthrange>-endda.
<x_saldata>-payty = wa_rgdir-payty.
CONCATENATE c_c <x_monthrange>-monthnm <x_monthrange>-begda+0(4)
INTO <x_saldata>-month.
ENDIF.
ENDLOOP.
ENDIF.
ENDLOOP.
ENDLOOP.
ENDIF.
ENDIF.
ENDIF.
ENDIF.
*&--------------------------------------------------------------------*
*& END OF SELECTION
*&--------------------------------------------------------------------*
END-OF-SELECTION.
IF it_saldata IS NOT INITIAL.
CLEAR: it_wagedata.
o_sal_comp->m_get_wage_data( ).
o_sal_comp->m_populate_final_table( ).
IF <x_final> IS ASSIGNED.
o_sal_comp->m_display_data( ).
ELSE.
MESSAGE text-054 TYPE c_e.
ENDIF.
ENDIF.
*&---------------------------------------------------------------------*
*& Include ZHRPY01_TOP
*&---------------------------------------------------------------------*
CLASS cl_salary_comparison DEFINITION DEFERRED.
************************************************************************
*Tables *
************************************************************************
TABLES:
pernr, pcl1, pcl2, pc260, pc261, pc207,t549a,t52ek,t52ep.
INFOTYPES:
0000, 0001,0041,0009.
************************************************************************
*Objects *
************************************************************************
DATA :
o_sal_comp TYPE REF TO cl_salary_comparison ,
o_cc TYPE REF TO cl_gui_custom_container ,
o_split TYPE REF TO cl_gui_easy_splitter_container ,
o_top_cntnr TYPE REF TO cl_gui_container ,
o_btm_cntnr TYPE REF TO cl_gui_container ,
o_doc TYPE REF TO cl_dd_document , "Document
o_alv TYPE REF TO cl_gui_alv_grid .
************************************************************************
*Constants *
************************************************************************
CONSTANTS : c_e TYPE c VALUE 'E' ,
c_i TYPE c VALUE 'I' ,
c_c TYPE c VALUE 'C' ,
c_s TYPE c VALUE 'S' ,
c_x TYPE c VALUE 'X' ,
c_1 TYPE c VALUE '1' ,
c_2 TYPE c VALUE '2' ,
c_3 TYPE c VALUE '3' ,
c_92(2) TYPE c VALUE '92' ,
c_95(2) TYPE c VALUE '95' ,
c_40(2) TYPE c VALUE '40' ,
c_char(4) TYPE c VALUE 'STRG',
c_curr(4) TYPE c VALUE 'CURR',
c_dats(4) TYPE c VALUE 'DATS'.
************************************************************************
*Global Data *
************************************************************************
DATA : gv_colpos TYPE i VALUE 1 ,
gv_dar TYPE datar ,
gv_dat TYPE dardt ,
gv_relid TYPE t500l-relid ,
gv_type TYPE t52relid-typename,
gv_typename TYPE hrpclx_type ,
ref_payresult TYPE REF TO data ,
gv_molga TYPE molga ,
gv_type_1 TYPE tadir-obj_name ,
gv_tadir TYPE tadir-obj_name .
************************************************************************
*Types *
************************************************************************
TYPES:
*&---------------------------------------------------------------------*
* Employee Data
*&---------------------------------------------------------------------*
BEGIN OF ty_empdata ,
pernr TYPE pernr_d , "Employee Number
ename TYPE emnam , "Employee Name
jdate TYPE sy-datum , "Joining Date
rdate TYPE sy-datum , "Resignation Date
kostl TYPE kostl , "Cost center
zzdept1 TYPE zzdept1 , "Department
btrtl TYPE btrtl , "Section
persk TYPE persk , "Employee Sub Group
zzsbu1 TYPE zzsbu1 , "SBU
zzseg1 TYPE zzseg1 , "Segment
abkrs TYPE abkrs , "Payroll Area
bankl TYPE bankk , "Bank Key
bankn TYPE bankn , "Account Number
stat2 TYPE stat2 , "Employee Status
END OF ty_empdata ,
*&---------------------------------------------------------------------*
*Salary Data
*&---------------------------------------------------------------------*
BEGIN OF ty_saldata ,
pernr TYPE pernr_d , "Employee Number
lgart TYPE lgart , "Wage type
pabrj TYPE pabrj ,
pabrp TYPE pabrp ,
payty type c ,
begda TYPE begda ,
endda TYPE endda ,
betrg TYPE maxbt , "amount
expct TYPE sy-datum , "Expense Category
month(20) type c ,
END OF ty_saldata ,
*&---------------------------------------------------------------------*
*Wage Type Symbolic Account
*&---------------------------------------------------------------------*
BEGIN OF ty_wagedata ,
lgart TYPE lgart , "Wage type
symko TYPE p_komok40 , "Symbolic Account
END OF ty_wagedata ,
*&---------------------------------------------------------------------*
*Wage Type GL Account
*&---------------------------------------------------------------------*
BEGIN OF ty_gldata ,
symko TYPE p_komok40 , "Symbolic Account
konth TYPE saknr , "GL Account number
END OF ty_gldata ,
*&---------------------------------------------------------------------*
*Month Range
*&---------------------------------------------------------------------*
BEGIN OF ty_monthrange ,
type TYPE c , "type
month(2) TYPE c , "Month No
monthnm TYPE t247-ltx , "Name
year(4) TYPE c , "year
permo TYPE permo ,
pabrj TYPE pabrj ,
pabrp TYPE pabrp ,
begda TYPE begda ,
endda TYPE endda ,
END OF ty_monthrange ,
*&---------------------------------------------------------------------*
*Wage Type Text
*&---------------------------------------------------------------------*
BEGIN OF ty_wagetypetext ,
LGART TYPE LGART ,
LGTXT TYPE LGTXT ,
END OF ty_wagetypetext ,
************************************************************************
*Field symbols *
************************************************************************
FIELD-SYMBOLS:
<x_empdata> TYPE ty_empdata ,
<x_saldata> TYPE ty_saldata ,
<x_csaldata> TYPE ty_saldata ,
<x_wagedata> TYPE ty_wagedata ,
<x_gldata> TYPE ty_gldata ,
<x_monthrange> TYPE ty_monthrange ,
<x_final> TYPE STANDARD TABLE ,
<x_wfinal> ,
<x_field> ,
<x_payresult> TYPE ANY ,
<x_rt> TYPE hrpay99_rt ,
<x_wagetypetext> TYPE ty_wagetypetext .
************************************************************************
*Global tables *
************************************************************************
DATA:
it_empdata TYPE STANDARD TABLE OF ty_empdata ,
it_saldata TYPE STANDARD TABLE OF ty_saldata ,
it_wagedata TYPE STANDARD TABLE OF ty_wagedata ,
it_gldata TYPE STANDARD TABLE OF ty_gldata ,
it_csaldata TYPE STANDARD TABLE OF ty_saldata ,
it_rgdir TYPE STANDARD TABLE OF pc261 ,
it_rgdir_tmp TYPE STANDARD TABLE OF pc261 ,
it_monthrange TYPE STANDARD TABLE OF ty_monthrange ,
it_fieldcatalog TYPE lvc_t_fcat ,
it_wagetypetext type STANDARD TABLE OF ty_wagetypetext .
************************************************************************
*Global Work Area *
************************************************************************
DATA:
wa_rt TYPE pc207 ,
wa_rgdir TYPE pc261 ,
wa_fieldcatalog TYPE lvc_s_fcat ,
wa_layout TYPE lvc_s_layo .
The Selection Screen
*&---------------------------------------------------------------------*
*& Include ZHRPY01_SCREEN
*&---------------------------------------------------------------------*
************************************************************************
*& Selection screen
************************************************************************
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-000.
SELECT-OPTIONS : s_date FOR sy-datum , "Date Range
s_cdate FOR sy-datum . "Compare date
SELECTION-SCREEN END OF BLOCK b1.
The Class Include
*&---------------------------------------------------------------------*
*& Include ZHRPY01_CLASS
*&---------------------------------------------------------------------*
*----------------------------------------------------------------------*
* CLASS cl_salary_comparison DEFINITION
*----------------------------------------------------------------------*
* Class Definition to define methods
*----------------------------------------------------------------------*
CLASS cl_salary_comparison DEFINITION FINAL.
PUBLIC SECTION.
*----------------------------------------------------------------------*
* DATA
*----------------------------------------------------------------------*
*----------------------------------------------------------------------*
* METHODS
*----------------------------------------------------------------------*
METHODS:
*---Method to validate screen inputs
m_validate_screen ,
*---Method to build field catalog
m_build_field_catalog ,
*---Method to get the GL accoung for wage type
m_get_wage_data ,
*---Method to populate final table
m_populate_final_table ,
*---Method to display data
m_display_data ,
*---Method to display alv
m_display_alv .
PRIVATE SECTION.
METHODS:
*---Method to build field catalog
m_create_dynmc_table ,
*---Method to build field catalog
m_set_layout ,
*---Method to prepare top of page
m_prepare_topofpage ,
*---Method to set field catalog
m_set_field_catalog
IMPORTING p_field TYPE lvc_fname
p_seltext TYPE lvc_txt
p_dosum TYPE lvc_dosum
p_datatype TYPE datatype_d.
ENDCLASS. "cl_Salary_comparison DEFINITION
*----------------------------------------------------------------------*
* CLASS cl_salary_comparison IMPLEMENTATION
*----------------------------------------------------------------------*
* Class implementation to implement methods
*----------------------------------------------------------------------*
CLASS cl_salary_comparison IMPLEMENTATION.
*----------------------------------------------------------------------*
* CLASS m_validate_screen
*----------------------------------------------------------------------*
* To Validate screen
*----------------------------------------------------------------------*
METHOD m_validate_screen.
*---Validate the Date
IF s_date IS INITIAL.
MESSAGE text-002 TYPE c_e.
ENDIF.
IF s_date-low IS NOT INITIAL AND s_date-high IS INITIAL.
MESSAGE text-003 TYPE c_e.
ENDIF.
IF s_date-low IS INITIAL AND s_date-high IS NOT INITIAL.
MESSAGE text-003 TYPE c_e.
ENDIF.
*---Validate the comparison Date
IF s_cdate-low IS NOT INITIAL AND s_cdate-high IS INITIAL.
MESSAGE text-003 TYPE c_e.
ENDIF.
IF s_cdate-low IS INITIAL AND s_cdate-high IS NOT INITIAL.
MESSAGE text-003 TYPE c_e.
ENDIF.
ENDMETHOD. "m_validate_screen
*----------------------------------------------------------------------*
* Method m_display_data
*----------------------------------------------------------------------*
* To display data
*----------------------------------------------------------------------*
METHOD m_display_data.
m_set_layout( ).
CALL SCREEN 100.
ENDMETHOD. "m_display_data
*----------------------------------------------------------------------*
* Method m_set_layout_catalog
*----------------------------------------------------------------------*
* To set field catalogs
*----------------------------------------------------------------------*
METHOD m_set_layout.
wa_layout-zebra = c_x.
wa_layout-numc_total = c_x.
wa_layout-cwidth_opt = c_x.
ENDMETHOD. "m_set_layout_catalog
*----------------------------------------------------------------------*
* Method m_build_field_catalog
*----------------------------------------------------------------------*
* To build field catalogs
*----------------------------------------------------------------------*
METHOD m_build_field_catalog.
DATA:it_t549q TYPE STANDARD TABLE OF t549q .
FIELD-SYMBOLS: <lx_t549q> LIKE LINE OF it_t549q ,
<x_monthrange> LIKE LINE OF it_monthrange .
DATA:lv_month TYPE t247-ltx ,
lv_month1 TYPE t247-ltx ,
lv_field TYPE lvc_fname ,
lv_seltext TYPE lvc_txt .
CLEAR it_fieldcatalog.
*---PERNR
CALL METHOD m_set_field_catalog
EXPORTING
p_field = text-005
p_seltext = text-006
p_dosum = space
p_datatype = c_char.
*---Name
CALL METHOD m_set_field_catalog
EXPORTING
p_field = text-007
p_seltext = text-008
p_dosum = space
p_datatype = c_char.
*---Joining Date
CALL METHOD m_set_field_catalog
EXPORTING
p_field = text-009
p_seltext = text-010
p_dosum = space
p_datatype = c_dats.
*---Resignation Date
CALL METHOD m_set_field_catalog
EXPORTING
p_field = text-011
p_seltext = text-012
p_dosum = space
p_datatype = c_dats.
*---Cost Center
CALL METHOD m_set_field_catalog
EXPORTING
p_field = text-013
p_seltext = text-014
p_dosum = space
p_datatype = c_char.
*---Department
CALL METHOD m_set_field_catalog
EXPORTING
p_field = text-015
p_seltext = text-016
p_dosum = space
p_datatype = c_char.
*---Section
CALL METHOD m_set_field_catalog
EXPORTING
p_field = text-017
p_seltext = text-018
p_dosum = space
p_datatype = c_char.
*---Grade
CALL METHOD m_set_field_catalog
EXPORTING
p_field = text-019
p_seltext = text-020
p_dosum = space
p_datatype = c_char.
*---SBU
CALL METHOD m_set_field_catalog
EXPORTING
p_field = text-021
p_seltext = text-022
p_dosum = space
p_datatype = c_char.
*---Segment
CALL METHOD m_set_field_catalog
EXPORTING
p_field = text-023
p_seltext = text-024
p_dosum = space
p_datatype = c_char.
*---Payroll Area
CALL METHOD m_set_field_catalog
EXPORTING
p_field = text-025
p_seltext = text-026
p_dosum = space
p_datatype = c_char.
*---Bank Key
CALL METHOD m_set_field_catalog
EXPORTING
p_field = text-027
p_seltext = text-028
p_dosum = space
p_datatype = c_char.
*---Account Number
CALL METHOD m_set_field_catalog
EXPORTING
p_field = text-029
p_seltext = text-030
p_dosum = space
p_datatype = c_char.
*---Wage Type
CALL METHOD m_set_field_catalog
EXPORTING
p_field = text-046
p_seltext = text-047
p_dosum = space
p_datatype = c_char.
*---Wage Type Text
CALL METHOD m_set_field_catalog
EXPORTING
p_field = text-055
p_seltext = text-056
p_dosum = space
p_datatype = c_char.
*---Symbolic Account
CALL METHOD m_set_field_catalog
EXPORTING
p_field = text-048
p_seltext = text-049
p_dosum = space
p_datatype = c_char.
*---GL Account
CALL METHOD m_set_field_catalog
EXPORTING
p_field = text-050
p_seltext = text-051
p_dosum = space
p_datatype = c_char.
*---Expense Category
CALL METHOD m_set_field_catalog
EXPORTING
p_field = text-052
p_seltext = text-053
p_dosum = space
p_datatype = c_char.
*----------------------------------------------------------------------*
*Dynamic Columns
CLEAR it_monthrange.
CALL FUNCTION 'HR_PAYROLL_PERIODS_GET'
EXPORTING
get_begda = s_date-low
get_endda = s_date-high
* GET_PERMO = RPTIME_PERIOD
* IMPORTING
* GET_PABRJ =
* GET_PABRP =
TABLES
get_periods = it_t549q
EXCEPTIONS
no_period_found = 1
no_valid_permo = 2
OTHERS = 3
.
IF sy-subrc <> 0.
MESSAGE text-031 TYPE c_e.
ELSE.
LOOP AT it_t549q ASSIGNING <lx_t549q>.
CLEAR lv_month.
CALL FUNCTION 'ISP_GET_MONTH_NAME'
EXPORTING
date = <lx_t549q>-begda
language = sy-langu
* MONTH_NUMBER = '00'
IMPORTING
langu_back = sy-langu
longtext = lv_month
* SHORTTEXT =
EXCEPTIONS
calendar_id = 1
date_error = 2
not_found = 3
wrong_input = 4
OTHERS = 5.
IF sy-subrc <> 0.
MESSAGE text-032 TYPE c_e.
ELSE.
TRANSLATE lv_month TO UPPER CASE.
UNASSIGN <x_monthrange>.
APPEND INITIAL LINE TO it_monthrange ASSIGNING <x_monthrange>.
IF <x_monthrange> IS ASSIGNED.
<x_monthrange>-type = c_s."s IS USED FOR DATE RANGE MONTHS
<x_monthrange>-month = <lx_t549q>-begda+4(2).
<x_monthrange>-monthnm = lv_month.
<x_monthrange>-year = <lx_t549q>-begda+0(4).
<x_monthrange>-permo = <lx_t549q>-permo.
<x_monthrange>-pabrj = <lx_t549q>-pabrj.
<x_monthrange>-pabrp = <lx_t549q>-pabrp.
<x_monthrange>-begda = <lx_t549q>-begda.
<x_monthrange>-endda = <lx_t549q>-endda .
CLEAR lv_field.
CONCATENATE c_s lv_month <lx_t549q>-begda+0(4) INTO lv_field.
CLEAR lv_seltext.
CONCATENATE lv_month <lx_t549q>-begda+0(4) INTO lv_seltext SEPARATED BY '-'.
CALL METHOD m_set_field_catalog
EXPORTING
p_field = lv_field
p_seltext = lv_seltext
p_dosum = c_x
p_datatype = c_curr.
ENDIF.
ENDIF.
ENDLOOP.
ENDIF.
*----------------------------------------------------------------------*
*If comparison to be made
IF s_cdate IS NOT INITIAL.
CLEAR it_t549q.
CALL FUNCTION 'HR_PAYROLL_PERIODS_GET'
EXPORTING
get_begda = s_cdate-low
get_endda = s_cdate-high
* GET_PERMO = RPTIME_PERIOD
* IMPORTING
* GET_PABRJ =
* GET_PABRP =
TABLES
get_periods = it_t549q
EXCEPTIONS
no_period_found = 1
no_valid_permo = 2
OTHERS = 3.
IF sy-subrc <> 0.
MESSAGE text-031 TYPE c_e.
ELSE.
LOOP AT it_t549q ASSIGNING <lx_t549q>.
CLEAR: lv_month1,lv_month.
CALL FUNCTION 'ISP_GET_MONTH_NAME'
EXPORTING
date = <lx_t549q>-begda
language = sy-langu
* MONTH_NUMBER = '00'
IMPORTING
langu_back = sy-langu
longtext = lv_month
* SHORTTEXT =
EXCEPTIONS
calendar_id = 1
date_error = 2
not_found = 3
wrong_input = 4
OTHERS = 5.
IF sy-subrc <> 0.
MESSAGE text-032 TYPE c_e.
ELSE.
TRANSLATE lv_month TO UPPER CASE.
UNASSIGN <x_monthrange>.
APPEND INITIAL LINE TO it_monthrange ASSIGNING <x_monthrange>.
IF <x_monthrange> IS ASSIGNED.
<x_monthrange>-type = c_c."c IS USED FOR DATE RANGE MONTHS
<x_monthrange>-month = <lx_t549q>-begda+4(2).
<x_monthrange>-monthnm = lv_month.
<x_monthrange>-year = <lx_t549q>-begda+0(4).
<x_monthrange>-permo = <lx_t549q>-permo.
<x_monthrange>-pabrj = <lx_t549q>-pabrj.
<x_monthrange>-pabrp = <lx_t549q>-pabrp.
<x_monthrange>-begda = <lx_t549q>-begda.
<x_monthrange>-endda = <lx_t549q>-endda .
CLEAR lv_field.
CONCATENATE c_c lv_month <lx_t549q>-begda+0(4) INTO lv_field.
CLEAR lv_seltext.
CONCATENATE lv_month <lx_t549q>-begda+0(4) INTO lv_seltext SEPARATED BY '-'.
CALL METHOD m_set_field_catalog
EXPORTING
p_field = lv_field
p_seltext = lv_seltext
p_dosum = c_x
p_datatype = c_curr.
ENDIF.
ENDIF.
ENDLOOP.
ENDIF.
ENDIF.
*-- Actual Paid
CALL METHOD m_set_field_catalog
EXPORTING
p_field = text-035
p_seltext = text-036
p_dosum = c_x
p_datatype = c_curr.
*Create dynamic table
m_create_dynmc_table( ).
*&---------------------------------------------------------------------*
* Create dynamic work area and assign to FS
DATA :lr_line TYPE REF TO data.
CREATE DATA lr_line LIKE LINE OF <x_final>.
ASSIGN lr_line->* TO <x_wfinal>.
ENDMETHOD. "m_build_field_catalog
*----------------------------------------------------------------------*
* Method m_set_field_catalog
*----------------------------------------------------------------------*
* To set field catalogs
*----------------------------------------------------------------------*
METHOD m_set_field_catalog.
*----------------------------------------------------------------------*
*Populate fieldcatalog for Dynamic table
CLEAR wa_fieldcatalog.
wa_fieldcatalog-fieldname = p_field. "Field Name
wa_fieldcatalog-seltext = p_seltext. "Text
wa_fieldcatalog-coltext = p_seltext.
wa_fieldcatalog-do_sum = p_dosum.
wa_fieldcatalog-col_pos = gv_colpos. "Column position
wa_fieldcatalog-datatype = p_datatype.
APPEND wa_fieldcatalog TO it_fieldcatalog.
**----------------------------------------------------------------------*
**Populate ALV fieldcatalogs
* CLEAR wa_fieldcat.
* wa_fieldcat-fieldname = p_field.
* wa_fieldcat-seltext_m = p_seltext.
* wa_fieldcat-col_pos = gv_colpos.
* APPEND wa_fieldcat TO it_fieldcat.
* gv_colpos = gv_colpos + 1.
ENDMETHOD. "m_set_field_catalog
*----------------------------------------------------------------------*
* Method m_set_layout_catalog
*----------------------------------------------------------------------*
* To set field catalogs
*----------------------------------------------------------------------*
METHOD m_create_dynmc_table.
DATA: lt_final TYPE REF TO data.
CALL METHOD cl_alv_table_create=>create_dynamic_table
EXPORTING
it_fieldcatalog = it_fieldcatalog
IMPORTING
ep_table = lt_final.
*----------------------------------------------------------------------*
*& Assign retrived structure to a field symbol
UNASSIGN <x_final>.
ASSIGN lt_final->* TO <x_final>.
CLEAR: wa_fieldcatalog.
ENDMETHOD. "m_create_dynmc_table
*----------------------------------------------------------------------*
* Method m_get_wage_data
*----------------------------------------------------------------------*
* To get wage type data
*----------------------------------------------------------------------*
METHOD m_get_wage_data.
DATA : lt_temp TYPE STANDARD TABLE OF ty_saldata ,
lt_temp1 TYPE STANDARD TABLE OF ty_wagedata,
lt_return_tab TYPE STANDARD TABLE OF bapiret2,
lw_return_tab LIKE LINE OF lt_return_tab,
lw_t52ek TYPE t52ek,
lw_t52ep TYPE t52ep,
lv_process TYPE ktosl,
lv_gl_act TYPE acct_det_bf-gl_account.
FIELD-SYMBOLS: <lx_temp1> TYPE ty_wagedata,
<lx_gldata> TYPE ty_gldata.
CLEAR: it_wagedata,it_gldata.
*----------------------------------------------------------------------*
* Copy table of salary details into temp table to get unique wage types
lt_temp = it_saldata.
SORT lt_temp BY lgart ASCENDING.
*----------------------------------------------------------------------*
* Delete duplicate wagetypes
DELETE ADJACENT DUPLICATES FROM lt_temp COMPARING lgart.
*----------------------------------------------------------------------*
* Get budgeted data
CLEAR it_budgetdata.
SELECT pernr frdat todat fyear lgart betrg
FROM zbudget_upload
INTO TABLE it_budgetdata
FOR ALL ENTRIES IN lt_temp
WHERE pernr = lt_temp-pernr
AND frdat <= s_date-high
AND todat >= s_date-low
AND lgart = lt_temp-lgart.
IF sy-subrc = 0.
SORT it_budgetdata BY pernr lgart ASCENDING.
ENDIF.
*----------------------------------------------------------------------*
* Get Wage type texts
CLEAR it_wagetypetext.
SELECT lgart lgtxt
FROM t512t
INTO TABLE it_wagetypetext
FOR ALL ENTRIES IN lt_temp
WHERE sprsl = sy-langu AND
molga = c_40 AND
lgart = lt_temp-lgart.
IF sy-subrc = 0.
SORT it_wagetypetext BY lgart ASCENDING.
ENDIF.
*----------------------------------------------------------------------*
* Get symbolic account for filtered wagetypes
SELECT lgart symko
FROM t52el
INTO TABLE it_wagedata
FOR ALL ENTRIES IN lt_temp
WHERE molga = c_40 AND
lgart = lt_temp-lgart AND
seqno > 0 AND
endda >= sy-datum.
* AND
* sign = '-' .
IF sy-subrc = 0.
*----------------------------------------------------------------------*
* Below code is written to get the GL Account for symbolic accounts
*----------------------------------------------------------------------*
* Copy the data of wage types ( Symbolic account ) into temp table
lt_temp1 = it_wagedata.
SORT lt_temp1 BY symko ASCENDING.
*----------------------------------------------------------------------*
* Delete duplicate symbolic accounts
DELETE ADJACENT DUPLICATES FROM lt_temp1 COMPARING symko.
*----------------------------------------------------------------------*
* Loop the temp table to get the GL account
LOOP AT lt_temp1 ASSIGNING <lx_temp1>.
*----------------------------------------------------------------------*
* Retrive the account assignment type
SELECT SINGLE *
FROM t52ek
INTO lw_t52ek
WHERE symko = <lx_temp1>-symko.
IF sy-subrc EQ 0.
*----------------------------------------------------------------------*
* Retrive the account process
SELECT SINGLE *
FROM t52ep
INTO lw_t52ep
WHERE koart = lw_t52ek-koart.
IF sy-subrc EQ 0.
CLEAR: lv_process,lt_return_tab.
CONCATENATE 'HR' lw_t52ep-kttyp INTO lv_process.
*----------------------------------------------------------------------*
* Call the function module with below stated parameters and get the
* GL account associated with Symbolic account
CALL FUNCTION 'HRPP_FI_ACCT_DET_HR'
EXPORTING
companycode = 'DFPL'
process = lv_process
symb_acct = <lx_temp1>-symko
eg_acct_det = ''
add_modif = ''
IMPORTING
gl_account_debit = lv_gl_act
* gl_account_credit = account_table-account_credit
TABLES
return_tab = lt_return_tab.
*----------------------------------------------------------------------*
* Check the return table for error
IF lt_return_tab IS NOT INITIAL.
READ TABLE lt_return_tab INTO lw_return_tab
WITH KEY type = c_e.
IF sy-subrc = 0.
MESSAGE text-043 TYPE c_e.
ELSE.
UNASSIGN <lx_gldata>.
APPEND INITIAL LINE TO it_gldata ASSIGNING <lx_gldata>.
IF <lx_gldata> IS ASSIGNED.
<lx_gldata>-symko = <lx_temp1>-symko.
<lx_gldata>-konth = lv_gl_act.
ENDIF.
ENDIF.
ELSE.
UNASSIGN <lx_gldata>.
APPEND INITIAL LINE TO it_gldata ASSIGNING <lx_gldata>.
IF <lx_gldata> IS ASSIGNED.
<lx_gldata>-symko = <lx_temp1>-symko.
<lx_gldata>-konth = lv_gl_act.
ENDIF.
ENDIF.
ENDIF.
ENDIF.
ENDLOOP.
ENDIF.
ENDMETHOD. "m_get_wage_data
*----------------------------------------------------------------------*
* m_populate_final_table
*----------------------------------------------------------------------*
* To populate the final table to process
*----------------------------------------------------------------------*
METHOD m_populate_final_table.
DATA : lv_date(10) TYPE c,
lv_month(25) TYPE c,
lv_type TYPE c,
lv_budgeted(15) TYPE p DECIMALS 2,
lv_actual(15) TYPE p DECIMALS 2,
lv_percent(5) TYPE p DECIMALS 2.
*--------------------------------------------------------------------*
SORT it_saldata BY pernr lgart pabrj pabrp payty month ASCENDING betrg DESCENDING.
* DELETE ADJACENT DUPLICATES FROM it_saldata COMPARING pernr lgart pabrj pabrp month.
SORT it_csaldata BY pernr lgart pabrj pabrp ASCENDING.
SORT it_empdata BY pernr ASCENDING.
SORT it_wagedata BY lgart ASCENDING.
SORT it_gldata BY symko ASCENDING.
SORT it_monthrange BY pabrj pabrp ASCENDING.
*--------------------------------------------------------------------*
LOOP AT it_saldata ASSIGNING <x_saldata>.
AT NEW lgart.
APPEND INITIAL LINE TO <x_final> ASSIGNING <x_wfinal>.
ENDAT.
*--------------------------------------------------------------------*
IF <x_wfinal> IS ASSIGNED.
READ TABLE it_empdata ASSIGNING <x_empdata>
WITH KEY pernr = <x_saldata>-pernr
BINARY SEARCH.
IF <x_empdata> IS ASSIGNED.
*pernr
*--------------------------------------------------------------------*
UNASSIGN <x_field>.
ASSIGN COMPONENT text-005
OF STRUCTURE <x_wfinal> TO <x_field>.
IF <x_field> IS ASSIGNED.
<x_field> = <x_saldata>-pernr.
ENDIF.
*empname
*--------------------------------------------------------------------*
UNASSIGN <x_field>.
ASSIGN COMPONENT text-007
OF STRUCTURE <x_wfinal> TO <x_field>.
IF <x_field> IS ASSIGNED.
<x_field> = <x_empdata>-ename.
ENDIF.
*Joinind date
*--------------------------------------------------------------------*
IF <x_empdata>-jdate IS NOT INITIAL.
UNASSIGN <x_field>.
ASSIGN COMPONENT text-009
OF STRUCTURE <x_wfinal> TO <x_field>.
IF <x_field> IS ASSIGNED.
<x_field> = <x_empdata>-jdate.
ENDIF.
ENDIF.
*Resignation Date
*--------------------------------------------------------------------*
IF <x_empdata>-rdate IS NOT INITIAL.
UNASSIGN <x_field>.
ASSIGN COMPONENT text-011
OF STRUCTURE <x_wfinal> TO <x_field>.
IF <x_field> IS ASSIGNED.
<x_field> = <x_empdata>-rdate.
ENDIF.
ENDIF.
*Cost Center
*--------------------------------------------------------------------*
UNASSIGN <x_field>.
ASSIGN COMPONENT text-013
OF STRUCTURE <x_wfinal> TO <x_field>.
IF <x_field> IS ASSIGNED.
<x_field> = <x_empdata>-kostl.
ENDIF.
*Department
*--------------------------------------------------------------------*
UNASSIGN <x_field>.
ASSIGN COMPONENT text-015
OF STRUCTURE <x_wfinal> TO <x_field>.
IF <x_field> IS ASSIGNED.
<x_field> = <x_empdata>-zzdept1.
ENDIF.
*Section
*--------------------------------------------------------------------*
UNASSIGN <x_field>.
ASSIGN COMPONENT text-017
OF STRUCTURE <x_wfinal> TO <x_field>.
IF <x_field> IS ASSIGNED.
<x_field> = <x_empdata>-btrtl.
ENDIF.
*Grade
*--------------------------------------------------------------------*
UNASSIGN <x_field>.
ASSIGN COMPONENT text-019
OF STRUCTURE <x_wfinal> TO <x_field>.
IF <x_field> IS ASSIGNED.
<x_field> = <x_empdata>-persk.
ENDIF.
*SBU
*--------------------------------------------------------------------*
UNASSIGN <x_field>.
ASSIGN COMPONENT text-021
OF STRUCTURE <x_wfinal> TO <x_field>.
IF <x_field> IS ASSIGNED.
<x_field> = <x_empdata>-zzsbu1.
ENDIF.
*Segment
*--------------------------------------------------------------------*
UNASSIGN <x_field>.
ASSIGN COMPONENT text-023
OF STRUCTURE <x_wfinal> TO <x_field>.
IF <x_field> IS ASSIGNED.
<x_field> = <x_empdata>-zzseg1.
ENDIF.
*Payroll area
*--------------------------------------------------------------------*
UNASSIGN <x_field>.
ASSIGN COMPONENT text-025
OF STRUCTURE <x_wfinal> TO <x_field>.
IF <x_field> IS ASSIGNED.
<x_field> = <x_empdata>-abkrs.
ENDIF.
*Baank Key
*--------------------------------------------------------------------*
UNASSIGN <x_field>.
ASSIGN COMPONENT text-027
OF STRUCTURE <x_wfinal> TO <x_field>.
IF <x_field> IS ASSIGNED.
<x_field> = <x_empdata>-bankl.
ENDIF.
*Account Number
*--------------------------------------------------------------------*
UNASSIGN <x_field>.
ASSIGN COMPONENT text-029
OF STRUCTURE <x_wfinal> TO <x_field>.
IF <x_field> IS ASSIGNED.
<x_field> = <x_empdata>-bankn.
ENDIF.
*Wage Type
*--------------------------------------------------------------------*
UNASSIGN <x_field>.
ASSIGN COMPONENT text-046
OF STRUCTURE <x_wfinal> TO <x_field>.
IF <x_field> IS ASSIGNED.
<x_field> = <x_saldata>-lgart.
*Wage type text
UNASSIGN <x_wagetypetext> .
READ TABLE it_wagetypetext ASSIGNING <x_wagetypetext>
WITH KEY lgart = <x_saldata>-lgart
BINARY SEARCH.
IF <x_wagetypetext> IS ASSIGNED.
UNASSIGN <x_field>.
ASSIGN COMPONENT text-055
OF STRUCTURE <x_wfinal> TO <x_field>.
IF <x_field> IS ASSIGNED.
<x_field> = <x_wagetypetext>-lgtxt.
ENDIF.
ENDIF.
UNASSIGN <x_wagedata> .
READ TABLE it_wagedata ASSIGNING <x_wagedata>
WITH KEY lgart = <x_saldata>-lgart
BINARY SEARCH.
*Symbolic account
IF <x_wagedata> IS ASSIGNED.
UNASSIGN <x_field>.
ASSIGN COMPONENT text-048
OF STRUCTURE <x_wfinal> TO <x_field>.
IF <x_field> IS ASSIGNED.
<x_field> = <x_wagedata>-symko.
UNASSIGN <x_gldata>.
READ TABLE it_gldata ASSIGNING <x_gldata>
WITH KEY symko = <x_wagedata>-symko
BINARY SEARCH.
*GL account
*--------------------------------------------------------------------*
IF <x_gldata> IS ASSIGNED.
UNASSIGN <x_field>.
ASSIGN COMPONENT text-050
OF STRUCTURE <x_wfinal> TO <x_field>.
IF <x_field> IS ASSIGNED.
<x_field> = <x_gldata>-konth.
ENDIF.
ENDIF.
*--------------------------------------------------------------------*
ENDIF.
ENDIF.
ENDIF.
*Wage Type value
UNASSIGN <x_monthrange>.
READ TABLE it_monthrange ASSIGNING <x_monthrange>
WITH KEY pabrj = <x_saldata>-pabrj
pabrp = <x_saldata>-pabrp
type = <x_saldata>-month+0(1).
IF <x_monthrange> IS ASSIGNED.
CLEAR lv_type.
lv_type = <x_monthrange>-type.
IF lv_type = c_s.
CONCATENATE c_s <x_monthrange>-monthnm <x_monthrange>-year
INTO lv_month.
ELSE.
CONCATENATE c_c <x_monthrange>-monthnm <x_monthrange>-year
INTO lv_month.
ENDIF.
CONDENSE lv_month.
UNASSIGN <x_field>.
ASSIGN COMPONENT lv_month
OF STRUCTURE <x_wfinal> TO <x_field>.
IF <x_field> IS ASSIGNED.
IF <x_saldata>-payty = ''.
<x_field> = <x_saldata>-betrg.
ELSE.
<x_field> = <x_field> + <x_saldata>-betrg.
ENDIF.
ENDIF.
ENDIF.
*--------------------------------------------------------------------*
*Actual Paid
IF lv_type = c_s.
UNASSIGN <x_field>.
ASSIGN COMPONENT text-035
OF STRUCTURE <x_wfinal> TO <x_field>.
IF <x_field> IS ASSIGNED.
<x_field> = <x_field> + <x_saldata>-betrg.
ENDIF.
ENDIF.
*--------------------------------------------------------------------*
ENDIF.
ENDIF.
ENDLOOP.
ENDMETHOD. "m_populate_final_table
METHOD m_display_alv.
IF <x_final> IS ASSIGNED.
IF o_alv IS NOT BOUND.
"Create object for first container
CREATE OBJECT o_cc
EXPORTING
container_name = 'CC_SALDATA'
EXCEPTIONS
cntl_error = 1
cntl_system_error = 2
create_error = 3
lifetime_error = 4
lifetime_dynpro_dynpro_link = 5
OTHERS = 6.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ELSE.
*----------------------------------------------------------------------*
*Create object for first ALV grid
*----------------------------------------------------------------------*
CREATE OBJECT o_split "split container obj
EXPORTING
parent = o_cc
sash_position = 20
with_border = 1
EXCEPTIONS
cntl_error = 1
cntl_system_error = 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.
o_top_cntnr = o_split->top_left_container .
o_btm_cntnr = o_split->bottom_right_container .
CREATE OBJECT o_doc
EXPORTING
style = 'ALV_GRID'.
o_sal_comp->m_prepare_topofpage( ).
CREATE OBJECT o_alv
EXPORTING
i_parent = o_btm_cntnr
EXCEPTIONS
error_cntl_create = 1
error_cntl_init = 2
error_cntl_link = 3
error_dp_create = 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.
ELSE.
CALL METHOD o_alv->list_processing_events
EXPORTING
i_event_name = 'TOP_OF_PAGE'
i_dyndoc_id = o_doc.
"Display ALV grid
CALL METHOD o_alv->set_table_for_first_display
EXPORTING
is_layout = wa_layout
CHANGING
it_fieldcatalog = it_fieldcatalog
it_outtab = <x_final>
EXCEPTIONS
invalid_parameter_combination = 1
program_error = 2
too_many_lines = 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.
ENDIF.
ENDIF.
ELSE.
o_alv->refresh_table_display( ).
ENDIF.
ELSE.
MESSAGE text-054 TYPE c_e.
ENDIF.
ENDMETHOD. "m_display_alv
METHOD m_prepare_topofpage.
DATA : lv_daterange TYPE sdydo_text_element.
*&---------------------------------------------------------------------*
*& Report Title
CALL METHOD o_doc->add_text
EXPORTING
text = text-044
sap_fontsize = cl_dd_area=>medium
sap_emphasis = cl_dd_area=>strong.
CALL METHOD o_doc->new_line.
*&---------------------------------------------------------------------*
*& Date Range
CONCATENATE text-045 ` ` s_date-low+4(2) '.'
s_date-low+6(2) '.' s_date-low+0(4) 'To' s_date-high+4(2) '.'
s_date-high+6(2) '.' s_date-high+0(4)
INTO lv_daterange SEPARATED BY space.
CALL METHOD o_doc->add_text
EXPORTING
text = lv_daterange
sap_fontsize = cl_dd_area=>medium
sap_emphasis = cl_dd_area=>strong.
CALL METHOD o_doc->new_line.
CALL METHOD o_doc->display_document
EXPORTING
parent = o_top_cntnr
EXCEPTIONS
html_display_error = 1
OTHERS = 2.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
ENDMETHOD. "m_prepare_topofpage
ENDCLASS. "cl_salary_comparison IMPLEMENTATION
The PBO Include
*&---------------------------------------------------------------------*
*& Include ZHRPY01_PBO
*&---------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& Module STATUS_0100 OUTPUT
*&---------------------------------------------------------------------*
* Status at screen 100
*----------------------------------------------------------------------*
module STATUS_0100 output.
SET PF-STATUS 'Z_SALCOMP'.
* SET TITLEBAR 'xxx'.
endmodule. " STATUS_0100 OUTPUT
*&---------------------------------------------------------------------*
*& Module DISPLAY_ALV OUTPUT
*&---------------------------------------------------------------------*
* Display ALV grid
*----------------------------------------------------------------------*
module DISPLAY_ALV output.
o_sal_comp->m_display_alv( ).
endmodule. " DISPLAY_ALV OUTPUT
The PAI Include
*&---------------------------------------------------------------------*
*& Include ZHRPY01_PAI
*&---------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& Module USER_COMMAND_0100 INPUT
*&---------------------------------------------------------------------*
* User command on screen 100
*----------------------------------------------------------------------*
MODULE user_command_0100 INPUT.
CASE sy-ucomm .
WHEN 'BACK' OR 'RW' OR '%EX' .
LEAVE SCREEN .
ENDCASE .
ENDMODULE. " USER_COMMAND_0100 INPUT
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
User | Count |
---|---|
2 | |
2 | |
2 | |
2 | |
2 | |
1 | |
1 | |
1 | |
1 | |
1 |