Manual Instructions
Manual Instructions
7. Copy the Following Code in the Report.( Delete Existing Code REPORT ZIND_AUDIT_REPORT)
*&---------------------------------------------------------------------
*
*& Report ZIND_AUDIT_REPORT
*&
*&---------------------------------------------------------------------
*
*&
*&
*&---------------------------------------------------------------------
*
8. Double Click on INCLUDE ZIND_AUDIT_REPT_TOP, and Copy the Code written below.( Delete
any existing codes or comments).
*&---------------------------------------------------------------------
*
*& Include ZIND_AUDIT_REPT_TOP
*&---------------------------------------------------------------------
*
TABLES: bset,
bseg,
vbak,
vbrk,
lfa1,
kna1,
bkpf.
DATA: cur_bkpf TYPE cursor, " Get the data from database table bkpf.
cur_bset TYPE cursor,
cur_bseg TYPE cursor,
cur_kna1 TYPE cursor,
cur_vbrp TYPE cursor,
cur_lfa1 TYPE cursor.
9. Double Click on INCLUDE ZIND_AUDIT_REPT_SCR. Copy the Code Snippet written Below. (Delete
any existing code or comments).
*&---------------------------------------------------------------------
*
*& Include ZIND_AUDIT_REPT_SCR
*&---------------------------------------------------------------------
*
"Generate output
PARAMETERS p_crt_ot TYPE c AS CHECKBOX DEFAULT 'X'. "#EC NOTEXT
AT SELECTION-SCREEN OUTPUT.
IF post_dat = abap_true.
LOOP AT SCREEN.
IF screen-group1 = 'S2'
OR screen-group1 = 'S3'.
screen-input = 0.
MODIFY SCREEN.
ENDIF.
ENDLOOP.
ELSEIF acc_doc = abap_true.
LOOP AT SCREEN.
IF screen-group1 = 'S1'.
screen-input = 0.
MODIFY SCREEN.
ENDIF.
ENDLOOP.
ENDIF.
START-OF-SELECTION.
PERFORM validation.
IF p_sel_sd = abap_true.
PERFORM read_sd_invoices.
ELSE.
PERFORM read_mm_invoices.
ENDIF.
END-OF-SELECTION.
IF p_crt_ot = 'X'.
PERFORM generate_output.
ENDIF.
PERFORM display_data.
10. Double Click on INCLUDE ZIND_AUDIT_REPT_F01. Copy the Code snippet written below.
*&---------------------------------------------------------------------*
*& Include ZIND_AUDIT_REPT_F01
*&---------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& Form READ_SD_INVOICES
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM read_sd_invoices .
*----------------------------------------------------------------------------
---------------
* For VAT IN Reporting Fetch MM side Invoice Details for the Company Code and
Date range
* 1. Fetch BELNR,BKTXT,BLDAT,MONAT from BKPF table and pass it to DMEE tree t
able
* 2. Fetch STCEG,HWBAS,HWSTE from BSET table and pass it to the DMEE tree tab
le
* 3. Fetch
*----------------------------------------------------------------------------
---------------
*----------------------------------------------------------------------------
---------------
* Fetch Documents from BKPF Table
*----------------------------------------------------------------------------
---------------
IF acc_doc IS INITIAL.
OPEN CURSOR cur_bkpf
FOR SELECT bukrs
belnr
gjahr
blart
bldat
awtyp
budat
monat
xblnr
bktxt
waers
xreversal
tcode
awkey
FROM bkpf
WHERE bukrs = p_bukrs
AND budat IN p_dat.
ELSE.
OPEN CURSOR cur_bkpf
FOR SELECT bukrs
belnr
gjahr
blart
bldat
awtyp
budat
monat
xblnr
bktxt
waers
xreversal
tcode
awkey
FROM bkpf
WHERE bukrs = p_bukrs
AND belnr IN p_doc
AND gjahr = p_fis.
ENDIF.
"--> If Entries are found in BFKP table,prcess them
IF sy-subrc = 0.
FETCH NEXT CURSOR cur_bkpf INTO CORRESPONDING FIELDS OF TABLE it_bkpf.
IF sy-subrc = 0.
"--> Delete Documents which are Sales sided
DELETE it_bkpf WHERE awtyp = 'RMRP'.
"--> Delete Documents which are not Billing Documents.
DELETE it_bkpf WHERE awtyp NE 'VBRK'
AND awtyp NE 'BKPF'.
"--> Delete Rebate Documents
DELETE it_bkpf WHERE tcode EQ 'VBOF'.
"--> Delete where tcode is initial
DELETE it_bkpf WHERE tcode IS INITIAL.
DELETE it_bkpf WHERE awtyp EQ 'BKPF'
AND tcode NE 'FV70'
AND tcode NE 'FBVB'.
lt_bkpf[] = it_bkpf[].
ELSE.
MESSAGE 'No Billing Documents Found for the Given Fiscal Period' TYPE '
S' DISPLAY LIKE 'E'.
LEAVE LIST-PROCESSING.
ENDIF.
ELSE.
MESSAGE 'No VAT Details Found for the Given Billing Documents' TYPE '
S' DISPLAY LIKE 'E'.
LEAVE LIST-PROCESSING.
ENDIF.
*----------------------------------------------------------------------------
---------------
* Fetch Customer Number from BSEG Table
*----------------------------------------------------------------------------
---------------
OPEN CURSOR cur_bseg
FOR SELECT bukrs
belnr
gjahr
buzei
koart
kunnr
lifnr
vbeln
FROM bseg
FOR ALL ENTRIES IN it_bkpf
WHERE bukrs = it_bkpf-bukrs
AND belnr = it_bkpf-belnr
AND gjahr = it_bkpf-gjahr.
ELSE.
"==> Error
ENDIF.
*----------------------------------------------------------------------------
---------------
* Fetch Customer Details from KNA1 Table
*----------------------------------------------------------------------------
---------------
IF it_bseg IS NOT INITIAL.
OPEN CURSOR cur_kna1
FOR SELECT kunnr
name1
stcd1
ort01
regio
pstlz
stras
adrnr
FROM kna1
FOR ALL ENTRIES IN it_bseg
WHERE kunnr = it_bseg-kunnr.
ELSE.
"==> Error
ENDIF.
ELSE.
"==> Error
ENDIF.
ENDIF.
"--> FIll the Output DME tree table
PERFORM fill_dme_tree_table_sd.
ENDIF.
ENDFORM. " READ_SD_INVOICES
*&---------------------------------------------------------------------*
*& Form READ_MM_INVOICES
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM read_mm_invoices .
*----------------------------------------------------------------------------
---------------
* For VAT IN Reporting Fetch MM side Invoice Details for the Company Code and
Date range
* 1. Fetch BELNR,BKTXT,BLDAT,MONAT from BKPF table and pass it to DMEE tree t
able
* 2. Fetch STCEG,HWBAS,HWSTE from BSET table and pass it to the DMEE tree tab
le
* 3. Fetch
*----------------------------------------------------------------------------
---------------
DATA: ls_bseg TYPE st_bseg,
ls_sel_opt TYPE selopt,
it_sel_opt TYPE TABLE OF selopt.
*----------------------------------------------------------------------------
---------------
* Fetch Documents from BKPF Table
*----------------------------------------------------------------------------
---------------
IF acc_doc IS INITIAL.
OPEN CURSOR cur_bkpf
FOR SELECT bukrs
belnr
gjahr
blart
bldat
awtyp
budat
monat
xblnr
bktxt
waers
xreversal
tcode
awkey
FROM bkpf
WHERE bukrs = p_bukrs
AND budat IN p_dat.
ELSE.
OPEN CURSOR cur_bkpf
FOR SELECT bukrs
belnr
gjahr
blart
bldat
awtyp
budat
monat
xblnr
bktxt
waers
xreversal
tcode
awkey
FROM bkpf
WHERE bukrs = p_bukrs
AND belnr IN p_doc
AND gjahr = p_fis.
ENDIF.
ELSE.
MESSAGE 'No Billing Documents Found for the Given Fiscal Period' TYPE '
S' DISPLAY LIKE 'E'.
LEAVE LIST-PROCESSING.
ENDIF.
ELSE.
MESSAGE 'No VAT Details found for the Billing Documents' TYPE 'S' DIS
PLAY LIKE 'E'.
LEAVE LIST-PROCESSING.
ENDIF.
*----------------------------------------------------------------------------
---------------
* Fetch Vendor Number from BSEG Table
*----------------------------------------------------------------------------
---------------
OPEN CURSOR cur_bseg
FOR SELECT bukrs
belnr
gjahr
buzei
lifnr
FROM bseg
FOR ALL ENTRIES IN it_bkpf
WHERE bukrs = it_bkpf-bukrs
AND belnr = it_bkpf-belnr
AND gjahr = it_bkpf-gjahr.
*----------------------------------------------------------------------------
---------------
* Fetch Vendor Address and Name from LFA1 table
*----------------------------------------------------------------------------
---------------
IF it_bseg IS NOT INITIAL.
OPEN CURSOR cur_lfa1
FOR SELECT lifnr
name1
stras
ort01
regio
pstlz
stceg
FROM lfa1
FOR ALL ENTRIES IN it_bseg
WHERE lifnr = it_bseg-lifnr.
ELSE.
"==> Error
ENDIF.
"--> Throw error if no entries found in BSET table
ELSE.
"==> Error
ENDIF.
ENDIF.
"-->Close DME-Engine
CALL FUNCTION 'DMEE_END'
EXPORTING
param = ls_dme_parameters
uparam = par_dmea "899205
TABLES
file_output = lt_dme_file.
* ERROR_OUTPUT =
IF gv_bukrs_land IS INITIAL .
gv_bukrs_land = lv_bukrs_land.
ENDIF.
"--> For all Billing Documents fill entry in DMEE output structure
LOOP AT it_bkpf INTO ls_bkpf.
CLEAR: st_vat_out, ls_bset,st_vat_out,st_vat_line,st_vat_item, lv_waers.
"--> Document Types will be Same.
st_vat_out-fk = 'FK'.
st_vat_out-lt = 'LT'.
st_vat_out-revised_code = rev_tax.
st_vat_out-faktur_number = ls_bkpf-belnr.
st_vat_out-monat = ls_bkpf-monat.
st_vat_out-gjahr = ls_bkpf-gjahr.
st_vat_out-bldat = ls_bkpf-bldat.
st_vat_out-belnr = ls_bkpf-belnr.
"--> For parallel cursor get the index of the current reoord
READ TABLE it_bset INTO ls_bset WITH KEY bukrs = ls_bkpf-bukrs
belnr = ls_bkpf-belnr
gjahr = ls_bkpf-bldat.
IF sy-subrc = 0.
SELECT SINGLE waers FROM t001 INTO lv_waers WHERE bukrs = ls_bkpf-
bukrs.
st_vat_out-tax_base_amnt = lv_amt .
CLEAR lv_amt .
CALL FUNCTION 'BAPI_CURRENCY_CONV_TO_EXTERNAL'
EXPORTING
currency = lv_waers
amount_internal = ls_bset-hwste
IMPORTING
amount_external = lv_amt.
st_vat_out-tot_vat_amnt = lv_amt .
IF ls_bkpf-blart = 'DZ'.
CLEAR lv_amt .
CALL FUNCTION 'BAPI_CURRENCY_CONV_TO_EXTERNAL'
EXPORTING
currency = lv_waers
amount_internal = ls_bset-hwbas
IMPORTING
amount_external = lv_amt.
st_vat_out-tot_base_dp = lv_amt .
CLEAR lv_amt.
CALL FUNCTION 'BAPI_CURRENCY_CONV_TO_EXTERNAL'
EXPORTING
currency = lv_waers
amount_internal = ls_bset-hwste
IMPORTING
amount_external = lv_amt.
st_vat_out-tot_vat_dp = lv_amt .
ENDIF.
ENDIF.
IF ls_bset-ktosl = 'PPNBM'.
CLEAR lv_amt.
CALL FUNCTION 'BAPI_CURRENCY_CONV_TO_EXTERNAL'
EXPORTING
currency = lv_waers
amount_internal = ls_bset-hwste
IMPORTING
amount_external = lv_amt.
st_vat_out-tot_lux_tax = lv_amt .
IF ls_bkpf-blart = 'DZ'.
CLEAR lv_amt .
CALL FUNCTION 'BAPI_CURRENCY_CONV_TO_EXTERNAL'
EXPORTING
currency = lv_waers
amount_internal = ls_bset-hwste
IMPORTING
amount_external = lv_amt.
st_vat_out-tot_lux_dp = lv_amt .
ENDIF.
ENDIF.
ENDIF.
"--> For parallel cursor get the index of the current reoord
READ TABLE it_bseg INTO ls_bseg WITH KEY bukrs = ls_bkpf-bukrs
belnr = ls_bkpf-belnr
gjahr = ls_bkpf-bldat.
IF sy-subrc = 0.
SELECT SINGLE kunnr taxkd FROM knvi INTO CORRESPONDING FIELDS OF ls_knv
i WHERE kunnr = ls_bseg-kunnr.
IF sy-subrc = 0.
st_vat_out-trans_type = ls_knvi-taxkd.
ENDIF.
CLEAR lv_bezei.
SELECT SINGLE house_num1 house_num2 country str_suppl3 str_suppl1 cit
y2 city1 region post_code1 tel_number FROM adrc INTO CORRESPONDING FIELDS OF
ls_adrc WHERE addrnumber = ls_kna1-adrnr.
SELECT SINGLE bezei FROM t005u INTO lv_bezei WHERE bland = ls_kna1-
regio AND land1 EQ ls_adrc-country.
CONCATENATE ls_kna1-stras ls_adrc-house_num1 ls_kna1-
ort01 lv_bezei ls_kna1-pstlz ls_adrc-country INTO lv_addr SEPARATED BY space.
st_vat_out-address = lv_addr.
st_vat_out-part_stceg = ls_kna1-stcd1.
st_vat_out-part_name1 = ls_kna1-name1.
st_vat_out-part_address = ls_kna1-stras.
IF ls_kna1-stras IS INITIAL.
st_vat_out-addr1_data = '-'.
ELSE.
st_vat_out-addr1_data = ls_kna1-stras.
ENDIF.
IF ls_adrc-house_num2 IS INITIAL.
st_vat_out-house_num2 = '-'.
ELSE.
st_vat_out-house_num2 = ls_adrc-house_num2.
ENDIF.
IF ls_adrc-house_num1 IS INITIAL.
st_vat_out-house_num1 = '-'.
ELSE.
st_vat_out-house_num1 = ls_adrc-house_num1.
ENDIF.
IF ls_adrc-str_suppl1 IS INITIAL.
st_vat_out-str_suppl1 = '-'.
ELSE.
st_vat_out-str_suppl1 = ls_adrc-str_suppl1.
ENDIF.
IF ls_adrc-str_suppl2 IS INITIAL.
st_vat_out-str_suppl2 = '-'.
ELSE.
st_vat_out-str_suppl2 = ls_adrc-str_suppl2.
ENDIF.
IF ls_adrc-city2 IS INITIAL.
st_vat_out-city2 = '-'.
ELSE.
st_vat_out-city2 = ls_adrc-city2.
ENDIF.
IF ls_adrc-city1 IS INITIAL.
st_vat_out-city1 = '-'.
ELSE.
st_vat_out-city1 = ls_adrc-city1.
ENDIF.
IF ls_adrc-region IS INITIAL.
st_vat_out-region = '-'.
ELSE.
st_vat_out-region = ls_adrc-region.
ENDIF.
IF ls_adrc-post_code1 IS INITIAL.
st_vat_out-post_code1 = '-'.
ELSE.
st_vat_out-post_code1 = ls_adrc-post_code1.
ENDIF.
IF ls_adrc-tel_number IS INITIAL.
st_vat_out-tel_number = '-'.
ELSE.
st_vat_out-tel_number = ls_adrc-tel_number.
ENDIF.
ENDIF.
CLEAR it_konv.
IF ls_bkpf-knumv IS NOT INITIAL.
SELECT * FROM konv INTO TABLE it_konv WHERE knumv = ls_bkpf-
knumv.
ELSE.
SELECT * FROM konv INTO TABLE it_konv WHERE knumv = ls_vbrk-
knumv.
ENDIF.
IF sy-subrc = 0.
READ TABLE it_konv INTO ls_konv WITH KEY kschl = 'ZPR0'
kposn = ls_vbrp-posnr.
st_vat_out_line-kbetr = ls_konv-kbetr / 10.
st_vat_out_line-total_price = ls_konv-kbetr / 10.
READ TABLE it_konv INTO ls_konv WITH KEY kschl = 'ZD01'
kposn = ls_vbrp-posnr.
st_vat_out_line-discount = ls_konv-kwert / 10.
READ TABLE it_konv INTO ls_konv WITH KEY kschl = 'ZPPN'
kposn = ls_vbrp-posnr.
st_vat_out_line-tax_bas_amnt = ls_konv-kawrt / 10.
st_vat_out_line-vat = ls_konv-kwert.
READ TABLE it_konv INTO ls_konv WITH KEY kschl = 'ZPBM'
kposn = ls_vbrp-posnr.
st_vat_out_line-tarif_lux_tax = ls_konv-kwert / 10.
st_vat_out_line-luxury_tax = st_vat_out_line-
total_price * st_vat_out_line-fkimg.
ENDIF.
INSERT st_vat_out_line INTO TABLE it_vat_line.
ENDLOOP.
ELSE.
CLEAR: st_vat_out_line.
st_vat_out_line-belnr = ls_bkpf-belnr.
st_vat_out_line-of_faktur = 'OF'.
INSERT st_vat_out_line INTO TABLE it_vat_line.
ENDIF.
ELSE.
CLEAR: st_vat_out_line.
st_vat_out_line-belnr = ls_bkpf-belnr.
st_vat_out_line-of_faktur = 'OF'.
INSERT st_vat_out_line INTO TABLE it_vat_line.
ENDIF.
ENDIF.
ENDLOOP.
"--> For all Billing Documents fill entry in DMEE output structure
LOOP AT it_bkpf INTO ls_bkpf.
CLEAR: st_vat_in, ls_bset, lv_index.
st_vat_in-doc_type = 'FM'.
st_vat_in-bktxt = ls_bkpf-belnr.
st_vat_in-monat = ls_bkpf-monat.
st_vat_in-gjahr = ls_bkpf-gjahr.
st_vat_in-bldat = ls_bkpf-bldat.
"--> For parallel cursor get the index of the current reoord
READ TABLE it_bset INTO ls_bset WITH KEY bukrs = ls_bkpf-bukrs
belnr = ls_bkpf-belnr
gjahr = ls_bkpf-gjahr.
IF sy-subrc = 0.
SELECT SINGLE waers FROM t001 INTO lv_waers WHERE bukrs = ls_bkpf-
bukrs.
IF sy-subrc = 0.
CLEAR lv_amt .
CALL FUNCTION 'BAPI_CURRENCY_CONV_TO_EXTERNAL'
EXPORTING
currency = lv_waers
amount_internal = ls_bset-hwbas
IMPORTING
amount_external = lv_amt.
CLEAR lv_amt .
CALL FUNCTION 'BAPI_CURRENCY_CONV_TO_EXTERNAL'
EXPORTING
currency = lv_waers
amount_internal = ls_bset-hwste
IMPORTING
amount_external = lv_amt.
"--> For parallel cursor get the index of the current reoord
READ TABLE it_bseg INTO ls_bseg WITH KEY bukrs = ls_bkpf-bukrs
belnr = ls_bkpf-belnr
gjahr = ls_bkpf-gjahr.
IF sy-subrc = 0.
READ TABLE it_lfa1 INTO ls_lfa1 WITH KEY lifnr = ls_bseg-lifnr.
IF sy-subrc = 0.
st_vat_in-name1 = ls_lfa1-name1.
CONCATENATE ls_lfa1-ort01 ls_lfa1-stras ls_lfa1-regio ls_lfa1-
pstlz INTO lv_addr.
st_vat_in-address = lv_addr.
st_vat_in-stceg = ls_lfa1-stceg.
ENDIF.
ENDIF.
ELSE.
CALL FUNCTION 'FILE_VALIDATE_NAME'
EXPORTING
logical_filename = gc_filename
parameter_1 = sy-cprog
CHANGING
physical_filename = par_file
EXCEPTIONS
OTHERS = 1.
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.
l_file_name = par_file. " Convertion
CALL FUNCTION 'FI_PAYM_FILE_OPEN'
EXPORTING
i_temse_name = par_tems
i_file_name = l_file_name.
IF p_sel_sd = abap_true.
CLEAR: st_vat_out,st_vat_line.
TRY.
cl_salv_table=>factory(
EXPORTING
list_display = if_salv_c_bool_sap=>false
container_name = 'DISPLAY_VAT_DATA'
IMPORTING
r_salv_table = lo_table
CHANGING
t_table = it_disp ).
CATCH cx_salv_msg. "#EC NO_HANDLER
*--> Error
LEAVE LIST-PROCESSING.
ENDTRY.
ELSE.
TRY.
cl_salv_table=>factory(
EXPORTING
list_display = if_salv_c_bool_sap=>false
container_name = 'DISPLAY_VAT_DATA'
IMPORTING
r_salv_table = lo_table
CHANGING
t_table = it_vat_in ).
CATCH cx_salv_msg. "#EC NO_HANDLER
LEAVE LIST-PROCESSING.
ENDTRY.
ENDIF.
lo_functions = lo_table->get_functions( ).
lo_settings = lo_table->get_display_settings( ).
IF p_sel_sd = abap_true.
lo_settings->set_list_header( 'VAT OUT' ).
ELSE.
lo_settings->set_list_header( 'VAT IN' ).
ENDIF.
IF p_sel_mm = abap_true.
DATA: lo_cols TYPE REF TO cl_salv_columns.
lo_cols = lo_table->get_columns( ).
gr_columns = lo_table->get_columns( ).
gr_columns->set_optimize( abap_true ).
lo_functions->set_all( abap_true ).