Professional Documents
Culture Documents
Zfi Accounting Doc Prin
Zfi Accounting Doc Prin
*& Report ZFI_ACCOUNTING_DOC_PRINT
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
*----------------------------------------------------------------------*
* DESCRIPTION: Accounting Document Printing
* AUTHOR: <dlw_olivia> <DELAWARE>
* DATE : <11/04/2019>
*
*----------------------------------------------------------------------*
* CHANGE HISTORY
* Date Changed by Defect/RFC Description
*----------------------------------------------------------------------*
* 11/04/2019 dlw_olivia D66K900114 Initial version
* 25/04/2019 dlw_olivia D66K900443 code review
* 29/04/2019 dlw_olivia D66K900663 code review
*----------------------------------------------------------------------*
REPORT zfi_accounting_doc_print MESSAGE-ID zmess.
INCLUDE zfi_accounting_doc_print_top."data definition
INCLUDE zfi_accounting_doc_print_sel."selection screen
INCLUDE zfi_accounting_doc_print_form."form
*&---------------------------------------------------------------------*
*& Include ZFI_ACCOUNTING_DOC_PRINT_TOP
*&---------------------------------------------------------------------*
*----------------------------------------------------------------------*
* DESCRIPTION: Accounting Document Printing
* AUTHOR: <dlw_olivia> <DELAWARE>
* DATE : <11/04/2019>
*
*----------------------------------------------------------------------*
* CHANGE HISTORY
* Date Changed by Defect/RFC Description
*----------------------------------------------------------------------*
* 11/04/2019 dlw_olivia D66K900114 Initial version
* 25/04/2019 dlw_olivia D66K900443 code review
* 29/04/2019 dlw_olivia D66K900663 code review
*----------------------------------------------------------------------*
TABLES: bkpf.
TYPE-POOLS: slis.
TYPES BEGIN OF gy_tab.
TYPES docln TYPE docln6.
INCLUDE TYPE zfi_s_accounting_print.
TYPES END OF gy_tab.
DATA:
* gt_bkpf TYPE TABLE OF zfi_s_accounting_print,"all related data
* gt_bkpf2 TYPE TABLE OF zfi_s_accounting_print,"alv display data
* gt_bkpf3 TYPE SORTED TABLE OF zfi_s_accounting_print WITH UNIQUE KEY BUKRS BELNR BLART B
* gt_print TYPE TABLE OF zfi_s_accounting_print,"all data need to print
* gt_print_page TYPE TABLE OF zfi_s_accounting_print,"every page data need to print
gt_bkpf TYPE TABLE OF gy_tab, "all related data
gt_bkpf2 TYPE TABLE OF gy_tab, "alv display data
gt_bkpf3 TYPE SORTED TABLE OF gy_tab WITH UNIQUE KEY bukrs belnr blart budat, "alv
gt_print TYPE TABLE OF gy_tab, "all data need to print
gt_print_page TYPE TABLE OF gy_tab, "every page data need to print
gt_print_page2 TYPE TABLE OF zfi_s_accounting_print, "every page data need to print
gs_bkpf LIKE LINE OF gt_bkpf,
gv_v1 TYPE char30, "variables table name
gv_v2 TYPE char2, "save 'ZH' or 'EN'
gv_v3 TYPE char1, "save '1' or 'E'
gv_low TYPE char255, "variables table low value
gt_fieldcat TYPE slis_t_fieldcat_alv,
gs_fieldcat TYPE slis_fieldcat_alv,
gv_repid TYPE sy-repid,
gs_layout TYPE slis_layout_alv.
CONSTANTS: gc_c1 TYPE char30 VALUE 'ZFI_CURRENCY_',
gc_zh TYPE char2 VALUE 'ZH',
gc_en TYPE char2 VALUE 'EN',
gc_c2 TYPE char1 VALUE '1',
gc_c3 TYPE char1 VALUE 'E',
gc_c4 TYPE char1 VALUE 'X',
gc_c5 TYPE char1 VALUE 'S',
gc_c6 TYPE char1 VALUE 'H',
gc_c7 TYPE char1 VALUE '_',
gc_c8 TYPE char5 VALUE 'CKBOX',
gc_c9 TYPE char5 VALUE 'PRINT',
gc_c10 TYPE char3 VALUE 'ALL',
gc_c11 TYPE char3 VALUE 'SAL',
gc_v TYPE bstat_d VALUE 'V',
gc_w TYPE bstat_d VALUE 'W',
gc_view TYPE dd02v-tabname VALUE 'ZFI_T_CHECKED'. "add by 20200811 D66K903184
KEY BUKRS BELNR BLART BUDAT,"alv be selected data
a need to print
belnr blart budat, "alv be selected data
d to print
20200811 D66K903184
*&---------------------------------------------------------------------*
*& Include ZFI_ACCOUNTING_DOC_PRINT_SEL
*&---------------------------------------------------------------------*
*----------------------------------------------------------------------*
* DESCRIPTION: Accounting Document Printing
* AUTHOR: <dlw_olivia> <DELAWARE>
* DATE : <11/04/2019>
*
*----------------------------------------------------------------------*
* CHANGE HISTORY
* Date Changed by Defect/RFC Description
*----------------------------------------------------------------------*
* 11/04/2019 dlw_olivia D66K900114 Initial version
* 25/04/2019 dlw_olivia D66K900443 code review
* 29/04/2019 dlw_olivia D66K900663 code review
* 11/08/2020 dlw_icey D66K903184 maintain checked by table
*----------------------------------------------------------------------*
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE TEXT-001.
PARAMETERS: p_bukrs LIKE bkpf-bukrs OBLIGATORY,
p_gjahr LIKE bkpf-gjahr OBLIGATORY DEFAULT sy-datum+0(4).
SELECT-OPTIONS: s_monat FOR bkpf-monat OBLIGATORY DEFAULT sy-datum+4(2),
s_blart FOR bkpf-blart,
s_belnr FOR bkpf-belnr.
PARAMETERS: p_usnam LIKE bkpf-usnam.
SELECTION-SCREEN SKIP 1.
SELECTION-SCREEN COMMENT /1(10) co_lan.
PARAMETERS: rb_cn RADIOBUTTON GROUP g1 DEFAULT 'X',
rb_en RADIOBUTTON GROUP g1,
rb_check RADIOBUTTON GROUP g1 . "add by 20200811 D66K903184
SELECTION-SCREEN END OF BLOCK b1.
AT SELECTION-SCREEN OUTPUT.
co_lan = TEXT-007.
START-OF-SELECTION.
AUTHORITY-CHECK OBJECT 'F_BKPF_BUK'
ID 'BUKRS' FIELD p_bukrs
ID 'ACTVT' FIELD '03'. " 03 display
IF sy-subrc <> 0.
MESSAGE s065 WITH p_bukrs DISPLAY LIKE 'E'.
LEAVE LIST-PROCESSING.
ENDIF.
IF rb_check <> gc_c4."add by 20200811 D66K903184
IF rb_cn = gc_c4.
gv_v2 = gc_zh.
gv_v3 = gc_c2.
ELSEIF rb_en = gc_c4.
gv_v2 = gc_en.
gv_v3 = gc_c3.
ENDIF.
PERFORM f_get_data.
IF gt_bkpf[] IS INITIAL.
MESSAGE s049 DISPLAY LIKE 'E'.
LEAVE LIST-PROCESSING.
ENDIF.
PERFORM f_display_alv.
*begin of insertion by 20200811 D66K903184
ELSE.
PERFORM frm_call_view USING gc_view.
ENDIF.
*end of insertion by 20200811 D66K903184
*&---------------------------------------------------------------------*
*& Include ZFI_ACCOUNTING_DOC_PRINT_FORM
*&---------------------------------------------------------------------*
*----------------------------------------------------------------------*
* DESCRIPTION: Accounting Document Printing
* AUTHOR: <dlw_olivia> <DELAWARE>
* DATE : <11/04/2019>
*
*----------------------------------------------------------------------*
* CHANGE HISTORY
* Date Changed by Defect/RFC Description
*----------------------------------------------------------------------*
* 11/04/2019 dlw_olivia D66K900114 Initial version
* 25/04/2019 dlw_olivia D66K900443 code review
* 29/04/2019 dlw_olivia D66K900663 code review
* 19/07/2019 dlw_olivia D66K901552 modify table acdoca
* 11/08/2020 dlw_icey D66K903184 maintain checked by table
*----------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& Form f_GET_DATA
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM f_get_data .
* begin of modify D66K901552
* SELECT a~bukrs,
* a~belnr,
* a~blart,
* a~budat,
* a~xblnr,
* b~sgtxt,
* b~xref2,
* b~hkont,
* e~txt20,
* f~name1 AS name1_k,
* g~name1 AS name1_l,
* h~txt50,
* i~ktext,
* i~ltext,
* j~ktext AS ktext_c,
* j~ktext AS ltext_c,
* b~xnegp,
* b~shkzg,
* b~dmbtr,
* a~usnam,
* a~ppnam
* INTO CORRESPONDING FIELDS OF TABLE @gt_bkpf
* FROM bkpf AS a
* LEFT JOIN bseg AS b ON a~bukrs = b~bukrs AND a~belnr = b~belnr AND a~gjahr = b~gjahr
* LEFT JOIN skat AS e ON b~hkont = e~saknr AND e~spras = @gv_v3
* LEFT JOIN kna1 AS f ON b~kunnr = f~kunnr
* LEFT JOIN lfa1 AS g ON b~lifnr = g~lifnr
* LEFT JOIN anla AS h ON b~anln1 = h~anln1 AND b~bukrs = h~bukrs"changed the bukrs
* LEFT JOIN cskt AS i ON b~kostl = i~kostl
* LEFT JOIN coas AS j ON b~aufnr = j~aufnr
* WHERE a~bukrs = @p_bukrs
* AND a~gjahr = @p_gjahr
* AND a~monat IN @s_monat
* AND a~blart IN @s_blart
* AND a~belnr IN @s_belnr
* .
SELECT
b~docln,
a~bukrs,
a~belnr,
a~blart,
a~budat,
a~xblnr,
b~sgtxt,
c~xref2,
b~racct AS hkont,
e~txt20,
f~name1 AS name1_k,
g~name1 AS name1_l,
h~txt50,
i~ktext,
i~ltext,
j~ktext AS ktext_c,
j~ktext AS ltext_c,
* c~xnegp,
b~drcrk AS shkzg,
b~hsl AS dmbtr,
a~usnam,
a~ppnam
FROM bkpf AS a
LEFT JOIN acdoca AS b ON a~bukrs = b~rbukrs AND a~belnr = b~belnr AND a~gjahr = b~gjahr
LEFT JOIN bseg AS c ON b~rbukrs = c~bukrs AND b~belnr = c~belnr AND b~gjahr = c~gjahr
AND c~buzei = b~buzei
* AND concat( '000',CAST( c~buzei AS CHAR( 3 ) ) ) = b~docln
LEFT JOIN skat AS e ON b~racct = e~saknr AND e~spras = @gv_v3
LEFT JOIN kna1 AS f ON b~kunnr = f~kunnr
LEFT JOIN lfa1 AS g ON b~lifnr = g~lifnr
LEFT JOIN anla AS h ON b~anln1 = h~anln1 AND b~rbukrs = h~bukrs"changed the bukrs
LEFT JOIN cskt AS i ON b~rcntr = i~kostl AND i~spras = @gc_c3
LEFT JOIN coas AS j ON b~aufnr = j~aufnr
WHERE a~bukrs = @p_bukrs
AND a~gjahr = @p_gjahr
AND a~monat IN @s_monat
AND a~blart IN @s_blart
AND a~belnr IN @s_belnr
AND a~bstat <> @gc_v
AND a~bstat <> @gc_w
INTO CORRESPONDING FIELDS OF TABLE @gt_bkpf
.
* end of modify D66K901552
IF p_usnam IS NOT INITIAL.
DELETE gt_bkpf WHERE usnam <> p_usnam.
ENDIF.
SELECT SINGLE name1, name2, waers
INTO @DATA(lt_name)
FROM t001
LEFT JOIN adrc ON t001~adrnr = adrc~addrnumber
WHERE t001~bukrs = @p_bukrs.
CONCATENATE gc_c1 lt_name-waers gc_c7 gv_v2 INTO gv_v1.
SELECT SINGLE low FROM tvarvc INTO gv_low WHERE name = gv_v1.
*begin of insertion by 20200811 D66K903184
SELECT a~usnam , a~ppnam
FROM zfi_t_checked AS a
INTO TABLE @DATA(lt_checked)
FOR ALL ENTRIES IN @gt_bkpf
WHERE usnam = @gt_bkpf-usnam.
*end of insertion by 20200811 D66K903184
LOOP AT gt_bkpf INTO gs_bkpf.
* begin of modify D66K901552
* IF gs_bkpf-xnegp = '' AND gs_bkpf-shkzg = gc_c5.
* gs_bkpf-debit = gs_bkpf-dmbtr.
* ELSEIF gs_bkpf-xnegp = gc_c4 AND gs_bkpf-shkzg = gc_c6.
* gs_bkpf-debit = - gs_bkpf-dmbtr.
* ENDIF.
* IF gs_bkpf-xnegp = '' AND gs_bkpf-shkzg = gc_c6.
* gs_bkpf-credit = gs_bkpf-dmbtr.
* ELSEIF gs_bkpf-xnegp = gc_c4 AND gs_bkpf-shkzg = gc_c5.
* gs_bkpf-credit = - gs_bkpf-dmbtr.
* ENDIF.
IF gs_bkpf-shkzg = gc_c5.
gs_bkpf-debit = gs_bkpf-dmbtr.
ELSEIF gs_bkpf-shkzg = gc_c6.
gs_bkpf-credit = - gs_bkpf-dmbtr.
ENDIF.
* end of modify D66K901552
gs_bkpf-name1 = lt_name-name1.
gs_bkpf-name2 = lt_name-name2.
gs_bkpf-waers = lt_name-waers.
gs_bkpf-unit = gv_low.
* MODIFY gt_bkpf FROM gs_bkpf TRANSPORTING debit credit unit name1 name2 waers. delete by 202
*begin of insertion by 20200811 D66K903184
gs_bkpf-checked = VALUE #( lt_checked[ usnam = gs_bkpf-usnam ]-ppnam OPTIONAL ).
MODIFY gt_bkpf FROM gs_bkpf TRANSPORTING debit credit unit name1 name2 waers checked.
*end of insertion by 20200811 D66K903184
ENDLOOP.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form f_DISPLAY_ALV
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM f_display_alv .
PERFORM f_get_layout.
PERFORM f_get_fieldcat.
gv_repid = sy-repid.
CLEAR gt_bkpf2[].
MOVE-CORRESPONDING gt_bkpf[] TO gt_bkpf2[].
SORT gt_bkpf2[] BY bukrs belnr blart budat.
DELETE ADJACENT DUPLICATES FROM gt_bkpf2[] COMPARING bukrs belnr blart budat.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = gv_repid
i_callback_pf_status_set = 'F_PF_STATUS'
i_callback_user_command = 'F_USER_COMMAND'
is_layout = gs_layout
it_fieldcat = gt_fieldcat[]
i_save = 'X'
TABLES
t_outtab = gt_bkpf2[]
EXCEPTIONS
program_error = 1
OTHERS = 2.
IF sy-subrc <> 0.
ENDIF.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form f_GET_LAYOUT
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM f_get_layout .
gs_layout-zebra = gc_c4.
gs_layout-colwidth_optimize = gc_c4.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form f_GET_FIELDCAT
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM f_get_fieldcat .
DEFINE din.
gs_fieldcat-fieldname = &1.
gs_fieldcat-seltext_l = TEXT-&2.
gs_fieldcat-col_pos = &3.
CASE &1.
WHEN gc_c8.
gs_fieldcat-checkbox = gc_c4.
gs_fieldcat-edit = gc_c4.
WHEN OTHERS.
ENDCASE.
APPEND gs_fieldcat TO gt_fieldcat.
CLEAR gs_fieldcat.
END-OF-DEFINITION.
din:
'CKBOX' 002 '1',
'BUKRS' 003 '2',
'BELNR' 004 '3',
'BLART' 005 '4',
'BUDAT' 006 '5'.
ENDFORM.
FORM f_pf_status USING rt_extab TYPE slis_t_extab.
SET PF-STATUS 'Z_PF_STATUS'.
ENDFORM.
FORM f_user_command USING gv_fcode LIKE sy-ucomm
gv_field TYPE slis_selfield.
DATA: l_grid TYPE REF TO cl_gui_alv_grid.
CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
IMPORTING
e_grid = l_grid.
CALL METHOD l_grid->check_changed_data.
CASE gv_fcode.
WHEN gc_c9.
PERFORM f_get_print_data.
PERFORM f_print_sf.
WHEN gc_c10.
LOOP AT gt_bkpf2 INTO gs_bkpf.
IF gs_bkpf-ckbox = ''.
gs_bkpf-ckbox = gc_c4.
ENDIF.
MODIFY gt_bkpf2 FROM gs_bkpf.
ENDLOOP.
gv_field-refresh = gc_c4.
WHEN gc_c11.
LOOP AT gt_bkpf2 INTO gs_bkpf.
IF gs_bkpf-ckbox = gc_c4.
gs_bkpf-ckbox = ''.
ENDIF.
MODIFY gt_bkpf2 FROM gs_bkpf.
ENDLOOP.
gv_field-refresh = gc_c4.
ENDCASE.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form f_GET_PRINT_DATA
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM f_get_print_data .
CLEAR gt_print[].
CLEAR gt_bkpf3[].
IF line_exists( gt_bkpf2[ ckbox = '' ] ).
gt_bkpf3[] = gt_bkpf2[].
DELETE gt_bkpf3 WHERE ckbox <> gc_c4.
gt_print[] = FILTER #( gt_bkpf IN gt_bkpf3
WHERE bukrs = bukrs
AND belnr = belnr
AND blart = blart
AND budat = budat ).
ELSE.
gt_bkpf3[] = gt_bkpf2[].
gt_print[] = gt_bkpf[].
ENDIF.
* begin of modify D66K901552
SORT gt_print BY belnr docln.
SORT gt_print BY shkzg DESCENDING.
* end of modify D66K901552
ENDFORM.
*&---------------------------------------------------------------------*
*& Form f_PRINT_SF
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM f_print_sf .
DATA lv_sf TYPE rs38l_fnam.
DATA: ls_control_para TYPE ssfctrlop.
CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'
EXPORTING
formname = 'ZSF_FI_ACCOUNTING_PRINT'
* formname = 'ZSF_FI_ACCOUNTING_PRINT_COPY2'
IMPORTING
fm_name = lv_sf
EXCEPTIONS
no_form = 1
no_function_module = 2
OTHERS = 3.
IF sy-subrc <> 0.
ENDIF.
LOOP AT gt_bkpf3 INTO gs_bkpf.
LOOP AT gt_print INTO DATA(ls_print).
IF ls_print-bukrs = gs_bkpf-bukrs
AND ls_print-belnr = gs_bkpf-belnr
AND ls_print-blart = gs_bkpf-blart
AND ls_print-budat = gs_bkpf-budat.
IF ls_print-unit IS INITIAL.
MESSAGE e015 WITH ls_print-waers.
ENDIF.
APPEND ls_print TO gt_print_page[].
ENDIF.
ENDLOOP.
ls_control_para-no_close = gc_c4.
ls_control_para-no_open = gc_c4.
AT FIRST.
ls_control_para-no_open = space.
ENDAT.
AT LAST.
ls_control_para-no_close = space.
ENDAT.
IF rb_cn = gc_c4.
ls_control_para-langu = gc_c2.
ELSEIF rb_en = gc_c4.
ls_control_para-langu = gc_c3.
ENDIF.
MOVE-CORRESPONDING gt_print_page[] TO gt_print_page2[].
CALL FUNCTION lv_sf
EXPORTING
control_parameters = ls_control_para
TABLES
gt_bkpf = gt_print_page2[]
EXCEPTIONS
formatting_error = 1
internal_error = 2
send_error = 3
user_canceled = 4
OTHERS = 5.
IF sy-subrc <> 0.
ENDIF.
CLEAR gt_print_page[].
ENDLOOP.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_CALL_VIEW
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> GC_VIEW
*&---------------------------------------------------------------------*
*begin of insertion by 20200811 D66K903184
FORM frm_call_view USING p_gc_view.
CALL FUNCTION 'VIEW_MAINTENANCE_CALL'
EXPORTING
action = 'U'
view_name = p_gc_view
no_warning_for_clientindep = 'X'
EXCEPTIONS
client_reference = 1
foreign_lock = 2
invalid_action = 3
no_clientindependent_auth = 4
no_database_function = 5
no_editor_function = 6
no_show_auth = 7
no_tvdir_entry = 8
no_upd_auth = 9
only_show_allowed = 10
system_failure = 11
unknown_field_in_dba_sellist = 12
view_not_found = 13
maintenance_prohibited = 14
OTHERS = 15.
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.
*end of insertion by 20200811 D66K903184
AND a~gjahr = b~gjahr
hanged the bukrs
AND a~gjahr = b~gjahr
AND b~gjahr = c~gjahr
hanged the bukrs
me2 waers. delete by 20200811 D66K903184
OPTIONAL ).
e2 waers checked.
"Call view function
zfi_s_accounting_print