ZMM_GE_PRINT
*&---------------------------------------------------------------------*
*& Report
ZMM_GE_PRINT
*&
*&---------------------------------------------------------------------*
*& To Print
Gate Entry/Exit details
*&
*& Developer:
Raghu Ramadugu
*&---------------------------------------------------------------------*
REPORT zmm_ge_print
MESSAGE-ID zmm_ge_msg.
INCLUDE zmm_ge_print_top.
"Declarations
INCLUDE zmm_ge_print_s01.
"Selection Screen and validations
INCLUDE zmm_ge_print_d01.
"Fetching data
INCLUDE zmm_ge_print_f01.
"Subroutines
*****************************************************************************************************************
*&---------------------------------------------------------------------*
*& Include ZMM_GE_PRINT_TOP
*&---------------------------------------------------------------------*
TYPES: BEGIN OF tty_entry,
gate_trans_no TYPE zzm_transno , "Gate Entry/Exit Number
zyear TYPE zzm_gate_year , "Creation year
trans_type TYPE zzm_trans_typ , "Transit Type
werks TYPE werks_d , "Plant
deleted TYPE zzm_delflag, "Deleted Flag
entry_crdt TYPE zzm_ge_date , "Gate Entry Date
entry_crtim TYPE zzm_ge_time , "Entry Time
entry_crby TYPE zzm_ge_id , "Entry Created By
enty_entby TYPE
zzm_ge_name1 , "Gate Entry Entered By
entry_gate_no TYPE zzm_gatenum , "Gate No
exit_crdt TYPE zzm_ex_date , "Exit date
exit_crtim TYPE zzm_ex_time , "Exit Time
exit_crby TYPE zzm_ex_id , "Exit Created By
enty_exby TYPE zzm_ge_name2
, "Exit Entered By
Name
exit_gate_no TYPE zzm_gatenum , "Gate No
trans_mode TYPE zzm_mode
, "Mode of
Transport
vhcl_type TYPE zzm_vhcl_type , "Vehicle type
vhcl_no TYPE zzm_vhcl_no , "vehicle No
drvr_name TYPE zzm_drvr_nm , "Driver name
drvr_no TYPE zzm_drvr_no , "Driver Licence no
vhcl_stat TYPE zzm_vhcl_stat , "Vehicle Status
lifnr TYPE lifnr, "Account Number of
Vendor or Creditor
END OF
tty_entry,
BEGIN OF
tty_zmm_ge_vtd,
vhcl_type TYPE
zzm_vhcl_type, "Vehicle
type
vhcl_des TYPE zzm_vhcl_des, "Vehicle Description
END OF
tty_zmm_ge_vtd,
BEGIN OF
tty_zmm_ge_gno,
entry_gate_no TYPE
zzm_gatenum, "Gate
No
entry_gate_name TYPE
zzm_gatename, "Gate Name
exit_gate_name TYPE
zzm_gatename1, "Gate
Name(Exit)
END OF
tty_zmm_ge_gno,
BEGIN OF
tty_lifnr,
lifnr TYPE lifnr, "Account Number of
Vendor or Creditor
name1 TYPE name1, "Vendor Name
END OF
tty_lifnr.
DATA: gi_entry
TYPE TABLE OF zmm_ge_print_s,
li_entry TYPE TABLE OF tty_entry,
gi_lifnr TYPE TABLE OF tty_lifnr,
gi_vhcl TYPE TABLE OF tty_zmm_ge_vtd,
gi_gate TYPE TABLE OF tty_zmm_ge_gno,
gs_entry TYPE zmm_ge_print_s,
gi_field TYPE slis_t_fieldcat_alv,
gs_field TYPE slis_fieldcat_alv,
li_entry1 LIKE li_entry,
ls_entry TYPE tty_entry,
gs_vhcl TYPE tty_zmm_ge_vtd,
gs_lifnr TYPE tty_lifnr,
v_gate_entry TYPE
zmm_ge-gate_trans_no,
v_gate_exit TYPE
zmm_ge-gate_trans_no,
v_year TYPE zzm_gate_year,
v_werks TYPE t001w-werks,
gs_gate TYPE tty_zmm_ge_gno,
wa_funcnm TYPE funcname,
fp_outputparams TYPE
sfpoutputparams,
fp_docparams TYPE sfpdocparams,
fp_formoutput TYPE
fpformoutput,
output_file TYPE string,
data_tab TYPE TABLE OF x255,
filename TYPE string,
path TYPE string,
fullpath TYPE string,
wt_file TYPE filetable,
default_extension TYPE string VALUE 'PDF',
lv_filelength TYPE i,
lt_rawtab TYPE TABLE OF char255,
wa_data_tab LIKE LINE OF
lt_rawtab,
wa_data_tab1 TYPE xstring,
lo_fp TYPE REF TO if_fp VALUE IS INITIAL,
lo_fpex TYPE REF TO cx_fp_runtime VALUE IS INITIAL,
lo_pdfobj TYPE REF TO if_fp_pdf_object VALUE IS
INITIAL,
pdf_data TYPE xstring,
xml_data TYPE xstring,
lt_xml_data TYPE STANDARD
TABLE OF xstring,
t_return TYPE STANDARD TABLE OF bapiret2,
t_per_info TYPE STANDARD TABLE OF smum_xmltb,
tag_open TYPE tdsfflag,
user_data TYPE soudatai1,
user TYPE soudnamei1,
lv_xml_data_string TYPE string.
CONSTANTS: c_s TYPE c VALUE 'S',
c_e TYPE c VALUE 'E',
c_x TYPE c VALUE 'X',
c_struc TYPE
dd02l-tabname VALUE 'ZMM_GE_PRINT_S',
c_fname TYPE
fpname VALUE 'ZMM_GE_ADOBE',
c_sel(3) TYPE c VALUE 'SEL',
c_entry_gate_no(20) TYPE c VALUE 'ENTRY_GATE_NO',
c_exit_gate_no(20) TYPE c VALUE 'EXIT_GATE_NO',
c_created_by(20) TYPE c VALUE 'CREATED_BY',
c_pf_status TYPE slis_formname VALUE
'ZMM_PF_STATUS_F05',
c_second_page TYPE
slis_formname VALUE 'ZMM_SECOND_PAGE_F04',
c_01(2) TYPE c VALUE '01',
c_02(2) TYPE c VALUE '02',
c_print TYPE
syst-ucomm VALUE 'PRINT',
c_menu TYPE
gui_status VALUE 'ZMM_GE_MENU',
c_zgent_print TYPE
sy-tcode VALUE 'ZGENT_PRINT',
c_zgext_print TYPE
sy-tcode VALUE 'ZGEXT_PRINT',
c_0 TYPE c VALUE '0',
c_md1(3) TYPE c VALUE 'MD1',
c_md2(3) TYPE c VALUE 'MD2'.
FIELD-SYMBOLS: <fs_fcat> LIKE gi_field,
<fs> LIKE gs_field,
<fs_gs> LIKE gs_entry,
<fs_ls> LIKE ls_entry,
<fs_gi> LIKE gi_entry,
<fs_li> LIKE li_entry.
**********************************************************************
*&---------------------------------------------------------------------*
*& Include ZMM_GE_PRINT_S01
*&---------------------------------------------------------------------*
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE
text-a01.
SELECT-OPTIONS: s_gent
FOR v_gate_entry MODIF ID md1,
s_gext FOR v_gate_exit MODIF ID
md2,
s_year FOR v_year NO INTERVALS
OBLIGATORY,
s_werks FOR v_werks.
SELECTION-SCREEN END OF BLOCK b1.
AT SELECTION-SCREEN ON s_gent.
SELECT
gate_trans_no INTO v_gate_entry FROM zmm_ge UP TO 1 ROWS
WHERE gate_trans_no IN s_gent.
ENDSELECT.
IF sy-subrc
<> 0.
MESSAGE e101
DISPLAY LIKE c_s.
ENDIF.
AT SELECTION-SCREEN
ON s_gext.
SELECT
gate_trans_no INTO v_gate_exit FROM zmm_ge UP TO 1 ROWS
WHERE gate_trans_no IN s_gext.
ENDSELECT.
IF sy-subrc
<> 0.
MESSAGE e106
DISPLAY LIKE c_s.
ENDIF.
AT SELECTION-SCREEN ON s_year.
SELECT zyear INTO
v_year FROM zmm_ge UP TO 1 ROWS
WHERE
zyear IN s_year.
ENDSELECT.
IF sy-subrc
<> 0.
MESSAGE e102
DISPLAY LIKE c_s.
ENDIF.
AT SELECTION-SCREEN ON s_werks.
SELECT werks INTO
v_werks FROM t001w UP TO 1 ROWS
WHERE
werks IN s_werks.
ENDSELECT.
IF sy-subrc
<> 0.
MESSAGE e103
DISPLAY LIKE c_s.
ENDIF.
AT SELECTION-SCREEN OUTPUT.
LOOP AT SCREEN.
IF sy-tcode =
c_zgent_print.
IF
screen-group1 = c_md2.
screen-active
= c_0.
MODIFY
SCREEN.
ENDIF.
ELSEIF sy-tcode =
c_zgext_print.
IF
screen-group1 = c_md1.
screen-active
= c_0.
MODIFY
SCREEN.
ENDIF.
ENDIF.
ENDLOOP.
***************************************************************************************************************************
*&---------------------------------------------------------------------*
*& Include ZMM_GE_PRINT_D01
*&---------------------------------------------------------------------*
START-OF-SELECTION.
PERFORM
zmm_get_data_f01. "Fetch
data from database tables
END-OF-SELECTION.
PERFORM
zmm_display_data_f02. "Display
data
***************************************************************************
*&---------------------------------------------------------------------*
*& Include ZMM_GE_PRINT_F01
*&---------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& Form second_page
*&---------------------------------------------------------------------*
* Subroutine
to select radiobutton in ALV Grid display
*----------------------------------------------------------------------*
*
-->P_UCOMM Function code
that PAI triggered
*
-->P_SELFIELD Information cursor position ALV
*----------------------------------------------------------------------*
FORM zmm_second_page_f04 USING p_ucomm
TYPE sy-ucomm
p_selfield TYPE slis_selfield.
ASSIGN: gs_entry TO <fs_gs>,
gi_entry
TO <fs_gi>.
IF sy-ucomm =
c_print.
EXIT.
ENDIF.
IF
p_selfield-fieldname = c_sel.
SORT
<fs_gi> BY sel.
READ TABLE
<fs_gi> ASSIGNING <fs_gs> WITH KEY sel = icon_radiobutton BINARY
SEARCH.
IF sy-subrc = 0.
<fs_gs>-sel = icon_wd_radio_button_empty.
ENDIF.
SORT
<fs_gi> BY gate_trans_no.
READ TABLE
<fs_gi> ASSIGNING <fs_gs> INDEX p_selfield-tabindex.
<fs_gs>-sel
= icon_radiobutton.
ENDIF.
p_selfield-refresh
= c_x.
CLEAR
<fs_gs>.
ENDFORM.
"second_page
*&---------------------------------------------------------------------*
*& Form pf_status
*&---------------------------------------------------------------------*
* Subroutine to
print Gate Entry/Exit details
*----------------------------------------------------------------------*
*
-->RT_EXTAB Excluding table
(function codes)
*----------------------------------------------------------------------*
FORM zmm_pf_status_f05 USING rt_extab TYPE slis_t_extab.
SET PF-STATUS
c_menu.
IF sy-ucomm =
c_print.
SORT gi_entry BY
sel.
READ TABLE
gi_entry INTO gs_entry WITH KEY sel = icon_radiobutton BINARY SEARCH.
IF sy-subrc = 0.
user-sapname =
sy-uname.
PERFORM
zmm_user_name_f03 USING user CHANGING user_data. "Get user fullname
gs_entry-created_by = user_data-fullname.
CALL FUNCTION
'FP_FUNCTION_MODULE_NAME'
EXPORTING
i_name = c_fname
IMPORTING
e_funcname
= wa_funcnm.
fp_outputparams-reqnew = c_x.
CALL FUNCTION
'FP_JOB_OPEN'
CHANGING
ie_outputparams = fp_outputparams
EXCEPTIONS
cancel = 1
usage_error = 2
system_error = 3
internal_error = 4
OTHERS = 5.
IF sy-subrc
<> 0.
MESSAGE ID
sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3
sy-msgv4.
ENDIF.
fp_docparams-langu = sy-langu.
fp_docparams-fillable = c_x.
fp_docparams-dynamic = c_x.
CALL FUNCTION
wa_funcnm
EXPORTING
/1bcdwb/docparams = fp_docparams
struct = gs_entry
IMPORTING
/1bcdwb/formoutput = fp_formoutput
EXCEPTIONS
usage_error = 1
system_error = 2
internal_error = 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.
CALL FUNCTION
'FP_JOB_CLOSE'
EXCEPTIONS
usage_error = 1
system_error = 2
internal_error = 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.
ELSE.
IF sy-tcode =
c_zgent_print.
MESSAGE i100
DISPLAY LIKE c_s.
ELSEIF sy-tcode
= c_zgext_print.
MESSAGE i104
DISPLAY LIKE c_s.
ENDIF.
ENDIF.
ENDIF.
ENDFORM.
"pf_status
*&---------------------------------------------------------------------*
*& Form USER_NAME
*&---------------------------------------------------------------------*
* Get user
fullname
*----------------------------------------------------------------------*
*
-->P_USER SAPoffice: SAP
Name and SAPoffice Name of a User
*
<--P_USER_DATA SAPoffice: Data
of an Office User
*----------------------------------------------------------------------*
FORM zmm_user_name_f03
USING p_user TYPE soudnamei1
CHANGING p_user_data TYPE soudatai1.
CLEAR p_user_data.
CALL FUNCTION
'SO_USER_READ_API1'
EXPORTING
user = p_user
IMPORTING
user_data = p_user_data
EXCEPTIONS
user_not_exist = 1
parameter_error
= 2
x_error = 3
OTHERS = 4.
ENDFORM.
" USER_NAME
*&---------------------------------------------------------------------*
*& Form ZMM_GET_DATA_F01
*&---------------------------------------------------------------------*
* Fetch data
from database tables
*----------------------------------------------------------------------*
FORM zmm_get_data_f01 .
IF sy-tcode =
c_zgent_print.
SELECT
gate_trans_no
zyear
trans_type
werks
deleted
entry_crdt
entry_crtim
entry_crby
enty_entby
entry_gate_no
exit_crdt
exit_crtim
exit_crby
enty_exby
exit_gate_no
trans_mode
vhcl_type
vhcl_no
drvr_name
drvr_no
vhcl_stat
lifnr
FROM zmm_ge INTO TABLE li_entry
WHERE gate_trans_no IN s_gent
AND zyear IN s_year
AND werks IN s_werks
AND trans_type = c_01
AND deleted NE c_x.
IF sy-subrc
<> 0.
MESSAGE s105
DISPLAY LIKE c_e.
LEAVE
LIST-PROCESSING.
ENDIF.
ELSEIF sy-tcode =
c_zgext_print.
SELECT
gate_trans_no
zyear
trans_type
werks
deleted
entry_crdt
entry_crtim
entry_crby
enty_entby
entry_gate_no
exit_crdt
exit_crtim
exit_crby
enty_exby
exit_gate_no
trans_mode
vhcl_type
vhcl_no
drvr_name
drvr_no
vhcl_stat
lifnr FROM
zmm_ge INTO TABLE li_entry
WHERE gate_trans_no IN s_gext
AND zyear IN s_year
AND werks IN s_werks
AND trans_type = c_02
AND deleted NE c_x.
IF sy-subrc
<> 0.
MESSAGE s105
DISPLAY LIKE c_e.
CALL
TRANSACTION c_zgext_print.
LEAVE
LIST-PROCESSING.
ENDIF.
ENDIF.
IF li_entry IS NOT
INITIAL.
SELECT vhcl_type
vhcl_des FROM zmm_ge_vtd INTO TABLE gi_vhcl.
SELECT
entry_gate_no
entry_gate_name
exit_gate_name
FROM
zmm_ge_gno INTO TABLE gi_gate.
SORT li_entry BY
lifnr.
li_entry1[] =
li_entry[].
DELETE ADJACENT
DUPLICATES FROM li_entry1 COMPARING lifnr.
SELECT lifnr
name1 INTO
TABLE gi_lifnr FROM lfa1
FOR
ALL ENTRIES IN li_entry
WHERE lifnr = li_entry-lifnr.
ENDIF.
ENDFORM.
" ZMM_GET_DATA_F01
*&---------------------------------------------------------------------*
*& Form ZMM_DISPLAY_DATA_F02
*&---------------------------------------------------------------------*
* Display data
*----------------------------------------------------------------------*
FORM zmm_display_data_f02 .
SORT gi_gate BY
entry_gate_no.
SORT gi_lifnr BY
lifnr.
SORT gi_vhcl BY
vhcl_type.
LOOP AT li_entry
INTO ls_entry.
READ TABLE
gi_vhcl INTO gs_vhcl WITH KEY vhcl_type = ls_entry-vhcl_type.
MOVE:
ls_entry-drvr_name TO
gs_entry-drvr_name,
ls_entry-drvr_no TO
gs_entry-drvr_no,
ls_entry-entry_crdt TO
gs_entry-entry_crdt,
ls_entry-entry_crtim TO
gs_entry-entry_crtim,
ls_entry-entry_gate_no TO
gs_entry-entry_gate_no,
ls_entry-enty_entby TO
gs_entry-enty_entby,
ls_entry-enty_exby TO
gs_entry-enty_exby,
ls_entry-exit_crdt TO
gs_entry-exit_crdt,
ls_entry-exit_crtim TO gs_entry-exit_crtim,
ls_entry-exit_gate_no TO
gs_entry-exit_gate_no,
ls_entry-gate_trans_no TO
gs_entry-gate_trans_no,
ls_entry-lifnr TO
gs_entry-lifnr,
ls_entry-trans_mode TO
gs_entry-trans_mode,
ls_entry-vhcl_no TO
gs_entry-vhcl_no,
ls_entry-vhcl_stat TO
gs_entry-vhcl_stat,
ls_entry-werks TO
gs_entry-werks,
ls_entry-zyear TO
gs_entry-zyear.
READ TABLE
gi_lifnr INTO gs_lifnr WITH KEY lifnr = ls_entry-lifnr BINARY SEARCH.
IF sy-subrc = 0.
gs_entry-v_name
= gs_lifnr-name1.
ENDIF.
READ TABLE
gi_gate INTO gs_gate WITH KEY
entry_gate_no = ls_entry-entry_gate_no BINARY SEARCH.
IF sy-subrc = 0.
gs_entry-entry_gate_des = gs_gate-entry_gate_name.
ENDIF.
READ TABLE
gi_gate INTO gs_gate WITH KEY
entry_gate_no = ls_entry-exit_gate_no BINARY SEARCH.
IF sy-subrc = 0.
gs_entry-exit_gate_des = gs_gate-exit_gate_name.
ENDIF.
IF
ls_entry-trans_type = c_01.
gs_entry-trans_des = text-t01.
ELSEIF
ls_entry-trans_type = c_02.
gs_entry-trans_des = text-t02.
user-sapname =
ls_entry-exit_crby.
PERFORM
zmm_user_name_f03 USING user CHANGING user_data. "Get user fullname
gs_entry-exit_crby =
user_data-fullname.
CLEAR
user_data.
ENDIF.
gs_entry-vhcl_des =
gs_vhcl-vhcl_des.
gs_entry-sel = icon_wd_radio_button_empty.
user-sapname = ls_entry-entry_crby.
PERFORM
zmm_user_name_f03 USING user CHANGING user_data. "Get user fullname
gs_entry-entry_crby =
user_data-fullname.
CLEAR user_data.
APPEND gs_entry
TO gi_entry.
CLEAR: gs_entry,
gs_vhcl, gs_gate, ls_entry, gs_lifnr.
ENDLOOP.
REFRESH: gi_vhcl,
gi_gate, li_entry, gi_lifnr.
SORT gi_entry BY
gate_trans_no.
ASSIGN: gi_field TO
<fs_fcat>,
gs_field TO
<fs>.
CALL FUNCTION
'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
i_program_name = sy-repid
i_structure_name = c_struc
CHANGING
ct_fieldcat =
<fs_fcat>
EXCEPTIONS
inconsistent_interface = 1
program_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.
IF sy-subrc = 0.
READ TABLE
<fs_fcat> ASSIGNING <fs> WITH KEY fieldname = c_sel.
<fs>-hotspot = c_x.
READ TABLE
<fs_fcat> ASSIGNING <fs> WITH KEY fieldname = c_created_by.
<fs>-no_out = c_x.
READ TABLE
<fs_fcat> ASSIGNING <fs> WITH KEY fieldname = c_entry_gate_no.
<fs>-no_out = c_x.
READ TABLE
<fs_fcat> ASSIGNING <fs> WITH KEY fieldname = c_exit_gate_no.
<fs>-no_out = c_x.
ENDIF.
CALL FUNCTION
'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program =
sy-repid
i_callback_pf_status_set = c_pf_status
i_callback_user_command =
c_second_page
it_fieldcat = <fs_fcat>
TABLES
t_outtab = gi_entry
EXCEPTIONS
program_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.
ENDFORM.
" ZMM_DISPLAY_DATA_F02
No comments:
Post a Comment