Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

Zmfs - Hw6: " Ls - Employee Type Zmfs - T - Employee

Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 8

ZMFS_HW6

report ZMFS_HW6.
tables: ZMFS_T_EMPLOYEE, ZMFS_T_LTAKE.

data: LT_EMPLOYEE type ZMFS_T_EMPLOYEE occurs 0 with header line,


" LS_EMPLOYEE type ZMFS_T_EMPLOYEE,
LT_LTAKE type ZMFS_T_LTAKE occurs 0 with header line,
GT_FCAT type LVC_T_FCAT,
" LS_FCAT type SLIS_FIELDCAT_ALV,
GV_NAME type SLIS_SELFIELD-FIELDNAME,
GV_PERNR type ZMFS_T_LTAKE-PERNR.

data: LV_FM_NAME type RS38L_FNAM,


GT_LTAKE type ZMFS_T_LTAKE occurs 0 with header line.

types: begin of GS_EMPLOYEE.


types: CHECKBOX type C.
include structure LT_EMPLOYEE.
types: end of GS_EMPLOYEE.

data: GT_EMPLOYEE type GS_EMPLOYEE occurs 0 with header line,


LS_EMPLOYEE type GS_EMPLOYEE.

perform BUILD_FIELDCAT changing GT_FCAT.

selection-screen begin of block B1 with frame title TEXT-010.


select-options: S_PERNR for ZMFS_T_EMPLOYEE-PERNR,
S_SNAME for ZMFS_T_EMPLOYEE-SNAME.
selection-screen end of block B1.

select * into table GT_EMPLOYEE


from ZMFS_T_EMPLOYEE
where PERNR in S_PERNR
and SNAME in S_SNAME.

end-of-selection.

call function 'REUSE_ALV_GRID_DISPLAY_LVC'


exporting
I_CALLBACK_PROGRAM = SY-REPID
I_CALLBACK_PF_STATUS_SET = 'SET_PF_STATUS'
I_CALLBACK_USER_COMMAND = 'ALV_USER_COMMAND'
I_STRUCTURE_NAME = 'ZMFS_T_EMPLOYEE'
IT_FIELDCAT_LVC = GT_FCAT
tables
T_OUTTAB = GT_EMPLOYEE
exceptions
PROGRAM_ERROR = 1
others = 2.
if SY-SUBRC <> 0.
" MESSAGE '' TYPE 'I'.
endif.
form SET_PF_STATUS using RT_EXTAB type SLIS_T_EXTAB.
set pf-status 'ZSTANDARD'.
endform.

form ALV_USER_COMMAND using R_UCOMM like SY-UCOMM


RS_SELFIELD type SLIS_SELFIELD.

case R_UCOMM.
when '&IC1'.
read table GT_EMPLOYEE into LS_EMPLOYEE index RS_SELFIELD-TABINDEX.
message LS_EMPLOYEE-ENAME type 'I'.

when '&FTH'.
perform CALL_SMARTFORM.

endcase.

endform.

form CALL_SMARTFORM.
select * into corresponding fields of table LT_LTAKE
from ZMFS_T_LTAKE
where PERNR eq LS_EMPLOYEE-PERNR.
GT_LTAKE[] = LT_LTAKE[].

call function 'SSF_FUNCTION_MODULE_NAME'


exporting
FORMNAME = 'ZMFS_EMPLOYEE_PRINT'
importing
FM_NAME = LV_FM_NAME
exceptions
NO_FORM = 1
NO_FUNCTION_MODULE = 2
others = 3.
if SY-SUBRC <> 0.
* Implement suitable error handling here
endif.

call function LV_FM_NAME


exporting
LT_EMPLOYEE = LS_EMPLOYEE
LT_LEAVES = LT_LTAKE
tables
GT_LEAVES = LT_LTAKE
GT_EMPLOYEE = GT_EMPLOYEE
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.
endform.
*&---------------------------------------------------------------------*
*& Form BUILD_FIELDCAT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* <--P_GT_FCAT text
*----------------------------------------------------------------------*
form BUILD_FIELDCAT changing P_GT_FCAT type LVC_T_FCAT.

data LS_FCAT type LVC_S_FCAT.

call function 'LVC_FIELDCATALOG_MERGE'


exporting
I_STRUCTURE_NAME = 'ZMFS_T_EMPLOYEE'
changing
CT_FIELDCAT = P_GT_FCAT.

clear LS_FCAT.
LS_FCAT-FIELDNAME = 'CHECKBOX'.
LS_FCAT-TABNAME = 'GT_EMPLOYEE'.
LS_FCAT-COL_POS = 14.
LS_FCAT-CHECKBOX = 'X'.
LS_FCAT-EDIT = 'X'.
LS_FCAT-COLTEXT = TEXT-F01.
LS_FCAT-TOOLTIP = TEXT-F02.
LS_FCAT-SELTEXT = TEXT-F03.
"LS_FCAT-OUTPUTLEN = 10.
append LS_FCAT to P_GT_FCAT.

endform.

REPORT zmfs_hw6_edit.
TABLES: zmfs_t_employee, zmfs_t_ltake.

DATA: lt_ltake TYPE zmfs_s_ltake OCCURS 0 WITH HEADER LINE,


lt_ltake2 TYPE zmfs_s_ltake OCCURS 0 WITH HEADER LINE,
gt_fcat TYPE lvc_t_fcat,
gv_name TYPE slis_selfield-fieldname,
gv_pernr TYPE zmfs_s_ltake-pernr,
gv_duration TYPE i.

DATA: lv_fm_name TYPE rs38l_fnam.

*- ALV Grid Tanımlamaları


* Field Catalog
DATA : gt_field TYPE slis_t_fieldcat_alv WITH HEADER LINE,
* Layout
gs_layout TYPE slis_layout_alv,
* Variant
gs_variant LIKE disvariant,
gv_save(1) TYPE c VALUE 'A',
* Sort
gt_sort TYPE slis_t_sortinfo_alv,
* Top_of_Page
gt_items TYPE slis_t_listheader.
DATA : BEGIN OF gt_employee OCCURS 0.
INCLUDE STRUCTURE zmfs_t_employee.
DATA : checkbox TYPE c,
mark TYPE c,
END OF gt_employee.

DATA : BEGIN OF gt_ltake OCCURS 0.


INCLUDE STRUCTURE zmfs_s_ltake.
DATA: duration TYPE i,
END OF gt_ltake.

DATA : ls_employee LIKE LINE OF gt_employee.

SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-010.


SELECT-OPTIONS: s_pernr FOR zmfs_t_employee-pernr,
s_sname FOR zmfs_t_employee-sname.
SELECTION-SCREEN END OF BLOCK b1.

START-OF-SELECTION.
PERFORM get_data.

END-OF-SELECTION.

PERFORM write_alv_grid.

FORM get_data.
SELECT * INTO CORRESPONDING FIELDS OF TABLE gt_employee
FROM zmfs_t_employee
WHERE pernr IN s_pernr
AND sname IN s_sname.

SELECT * INTO TABLE lt_ltake2


FROM zmfs_t_ltake.
ENDFORM.

FORM write_alv_grid .

PERFORM merge_fieldcat TABLES gt_field


USING 'GT_EMPLOYEE'.

PERFORM change_fieldcat TABLES gt_field.

PERFORM fill_alv_layout .

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'


EXPORTING
i_callback_program = sy-repid
i_callback_pf_status_set = 'SET_PF_STATUS'
i_callback_user_command = 'ALV_USER_COMMAND'
is_layout = gs_layout
it_fieldcat = gt_field[]
i_save = gv_save
is_variant = gs_variant
TABLES
t_outtab = gt_employee
EXCEPTIONS
program_error = 1
OTHERS = 2.

ENDFORM. " write_alv_grid

FORM merge_fieldcat TABLES p_field STRUCTURE gt_field


USING p_tabname TYPE slis_tabname.

CLEAR : p_field[] , p_field.

CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'


EXPORTING
i_program_name = sy-repid
i_internal_tabname = p_tabname
i_inclname = sy-repid
i_client_never_display = 'X'
i_bypassing_buffer = 'X'
CHANGING
ct_fieldcat = p_field[]
EXCEPTIONS
OTHERS = 3.

IF sy-subrc NE 0.
EXIT.
ENDIF.

ENDFORM. "list_merge_fieldcat

FORM change_fieldcat TABLES pt_field STRUCTURE gt_field .

LOOP AT pt_field .

CLEAR : pt_field-key .

CASE pt_field-fieldname.
WHEN 'STATU'.
pt_field-seltext_m = 'Onay Durum'.
pt_field-icon = 'X' .
pt_field-key = 'X' .
WHEN 'PERNR'.
pt_field-no_convext = 'X'.
WHEN 'STATU_WF'.
pt_field-seltext_m = 'WF Durum' .

WHEN 'TOP_WI_ID'.
pt_field-no_out = 'X' .
WHEN OTHERS.
ENDCASE.
pt_field-ddictxt = 'M'.
MODIFY pt_field .
ENDLOOP.

ENDFORM. " CHANGE_FIELDCAT


*----------------------------------------------------------------------*
FORM fill_alv_layout.
gs_layout-no_input = 'X' .
gs_layout-info_fieldname = 'COLOR'.
gs_layout-colwidth_optimize = 'X' .
gs_layout-box_fieldname = 'MARK' .
gs_layout-max_linesize = 1023.
gs_layout-get_selinfos = 'X'.
gs_layout-detail_popup = 'X'.
gs_layout-zebra = 'X'.
gs_layout-edit_mode = '2'.
ENDFORM. " fill_alv_layout
*&------------------------------------------------
FORM set_pf_status USING rt_extab TYPE slis_t_extab.
SET PF-STATUS 'ZSTANDARD'.
ENDFORM.

FORM alv_user_command USING r_ucomm LIKE sy-ucomm


rs_selfield TYPE slis_selfield.

CASE r_ucomm.
WHEN '&IC1'.
READ TABLE gt_employee INTO ls_employee INDEX
rs_selfield-tabindex.
MESSAGE ls_employee-ename TYPE 'I'.

WHEN 'PRINT'.
PERFORM call_smartform.

ENDCASE.

ENDFORM.

FORM call_smartform.

REFRESH gt_ltake.
REFRESH lt_ltake.

LOOP AT gt_employee WHERE mark EQ 'X'.


MOVE-CORRESPONDING gt_employee TO lt_ltake.
APPEND lt_ltake.
ENDLOOP.

READ TABLE gt_employee WITH KEY mark = abap_true TRANSPORTING NO


FIELDS.
IF sy-subrc NE 0.
MESSAGE 'Bir kayıt seçiniz...' TYPE 'I'.
EXIT.

ELSE.
LOOP AT lt_ltake.
LOOP AT lt_ltake2.
IF lt_ltake2-pernr EQ lt_ltake-pernr.
MOVE-CORRESPONDING lt_ltake2 TO gt_ltake.
PERFORM calc_days.
gt_ltake-durtn = gv_duration + 1.
APPEND gt_ltake.
ENDIF.
ENDLOOP.
ENDLOOP.
ENDIF.

"gt_ltake[] = lt_ltake[].

CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'


EXPORTING
formname = 'ZMFS_EMPLOYEE_PRINT'
IMPORTING
fm_name = lv_fm_name
EXCEPTIONS
no_form = 1
no_function_module = 2
OTHERS = 3.
IF sy-subrc <> 0.
* Implement suitable error handling here
ENDIF.

CALL FUNCTION lv_fm_name


EXPORTING
lt_leaves = lt_ltake
TABLES
gt_leaves = gt_ltake
gt_employee = gt_employee
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.

ENDFORM.

FORM calc_days .

CALL FUNCTION 'DAYS_BETWEEN_TWO_DATES'


EXPORTING
i_datum_bis = lt_ltake2-endda
i_datum_von = lt_ltake2-begda
* I_KZ_EXCL_VON = '0'
* I_KZ_INCL_BIS = '0'
* I_KZ_ULT_BIS = ' '
* I_KZ_ULT_VON = ' '
* I_STGMETH = '0'
* I_SZBMETH = '1'
IMPORTING
e_tage = gv_duration
EXCEPTIONS
days_method_not_defined = 1
OTHERS = 2.
IF sy-subrc <> 0.
* Implement suitable error handling here
ENDIF.

ENDFORM.

You might also like