Вы находитесь на странице: 1из 6

FUNCTION isu_inv_aggregated_bill.

*"--------------------------------------------------------------------
--
*"*"Lokale Schnittstelle:
*" IMPORTING
*" REFERENCE(X_PARAM) TYPE ISU21_INVOICE_PARAM
*" CHANGING
*" REFERENCE(XY_WA_IIU) TYPE ISU21_INVOICE_UNIT
*" EXCEPTIONS
*" IU_ERROR
*" SYSTEM_ERROR
*" NOT_QUALIFIED
*"--------------------------------------------------------------------
--
DATA: it_aggfkkop LIKE fkkop OCCURS 0 WITH HEADER LINE,
it_taxdata TYPE ederegtaxaggbill_tab,
it_taxdata_st TYPE ederegtaxaggbill_tab,
it_taxdata_bb TYPE ederegtaxaggbill_tab,
it_taxdata_op TYPE ederegtaxaggbill_tab,
ls_taxdata TYPE ederegtaxaggbill,
lv_ethim_tax TYPE boole-boole.

FIELD-SYMBOLS: <fkkcl> TYPE fkkcl.


* --- Aggregierte Rechnung in VKKDOC aufnehmen
PERFORM read_vkkdoc_id TABLES xy_wa_iiu-t_vkk_doc_id
USING co_vkkdoc_aggrbi wa_vkk_doc.

LOOP AT xy_wa_iiu-t_eitr INTO wa_eitr WHERE bel_art = co_bel_art_v.

LOOP AT xy_wa_iiu-t_open_item INTO wa_fkkcl


WHERE xmark IS INITIAL AND
opbel = wa_eitr-belnr.

wa_fkkcl-xmark = co_true.
MODIFY xy_wa_iiu-t_open_item FROM wa_fkkcl TRANSPORTING xmark.
APPEND wa_fkkcl TO wa_vkk_doc-t_fkkcl.
ENDLOOP.

* --- im Druckbeleg werden auch ausgeglichene Positionen dargestellt


CLEAR t_fkkop[].
CALL FUNCTION 'FKK_BP_LINE_ITEMS_SELECT'
EXPORTING
i_opbel = wa_eitr-belnr
ix_opbel = 'X'
TABLES
pt_fkkop = t_fkkop.

APPEND LINES OF t_fkkop TO it_aggfkkop.

ENDLOOP.

CHECK sy-subrc EQ 0.

CLEAR: t_fkkcl[], wa_fkkcl.


LOOP AT it_aggfkkop
WHERE waers NE xy_wa_iiu-unit_param-waers.
DELETE it_aggfkkop.
MOVE-CORRESPONDING it_aggfkkop TO wa_fkkcl.
APPEND wa_fkkcl TO t_fkkcl.
ENDLOOP.
CALL FUNCTION 'FKK_OPEN_ITEM_CONVERT_CURRENCY'
EXPORTING
i_clearing_currency = xy_wa_iiu-unit_param-waers
i_clearing_date = x_param-budat
TABLES
t_fkkcl = t_fkkcl
EXCEPTIONS
error_message = 1
OTHERS = 2.
IF sy-subrc = 1.
mac_msg_putx co_msg_error sy-msgno sy-msgid
sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4 iu_error.
ELSEIF sy-subrc <> 0.
mac_msg_others sy-subrc 'FKK_OPEN_ITEM_CONVERT_CURRENCY'.
ENDIF.

* FKK_OPEN_ITEM_CONVERT_CURRENCY is not converting the field STTAX


* So we do it here in a similar way as e.g. SBETW inside of the
* function
LOOP AT t_fkkcl ASSIGNING <fkkcl>.
<fkkcl>-ori_sttax = <fkkcl>-sttax.
CHECK <fkkcl>-oriwa NE <fkkcl>-waers.
IF <fkkcl>-oribt NE 0.
<fkkcl>-sttax = <fkkcl>-sttax * <fkkcl>-betrw / <fkkcl>-oribt.
ELSE.
<fkkcl>-sttax = 0.
ENDIF.
ENDLOOP.
LOOP AT t_fkkcl INTO wa_fkkcl.
MOVE-CORRESPONDING wa_fkkcl TO it_aggfkkop.
APPEND it_aggfkkop.
ENDLOOP.

LOOP AT it_aggfkkop.
IF xy_wa_iiu-unit_param-faedn IS INITIAL OR
xy_wa_iiu-unit_param-faedn > it_aggfkkop-faedn.
xy_wa_iiu-unit_param-faedn = it_aggfkkop-faedn.
xy_wa_iiu-unit_param-faeds = it_aggfkkop-faeds.
xy_wa_iiu-unit_param-sktpz = it_aggfkkop-sktpz.
ENDIF.
ENDLOOP.

*--- Innerhalb einer OPUPK nach OPUPZ verdichten


CLEAR: t_fkkop[], wa_fkkop.
SORT it_aggfkkop BY opbel opupw opupk opupz.
LOOP AT it_aggfkkop.
IF wa_fkkop-opbel IS INITIAL.
wa_fkkop = it_aggfkkop.
ELSEIF wa_fkkop-opbel NE it_aggfkkop-opbel OR
wa_fkkop-opupw NE it_aggfkkop-opupw OR
wa_fkkop-opupk NE it_aggfkkop-opupk.
APPEND wa_fkkop TO t_fkkop.
wa_fkkop = it_aggfkkop.
ELSE.
ADD it_aggfkkop-betrw TO wa_fkkop-betrw.
ADD it_aggfkkop-betrh TO wa_fkkop-betrh.
ADD it_aggfkkop-betr2 TO wa_fkkop-betr2.
ADD it_aggfkkop-betr3 TO wa_fkkop-betr3.
ADD it_aggfkkop-augbt TO wa_fkkop-augbt.
ADD it_aggfkkop-sttax TO wa_fkkop-sttax.
ADD it_aggfkkop-sctax TO wa_fkkop-sctax.
ENDIF.
ENDLOOP.
IF NOT wa_fkkop-opbel IS INITIAL.
APPEND wa_fkkop TO t_fkkop.
ENDIF.

LOOP AT t_fkkop INTO it_aggfkkop.


CLEAR: it_aggfkkop[].
APPEND it_aggfkkop.
*--- Bruttozeile aufbauen
CALL FUNCTION 'ISU_INV_CREATE_ITEM_FROM_FKKOP'
EXPORTING
x_belzart = co_belzart_aggrbi
TABLES
xt_fkkop = it_aggfkkop
CHANGING
xy_print_doc = xy_wa_iiu-print_doc
EXCEPTIONS
iu_error = 1
system_error = 2
not_qualified = 3
OTHERS = 4.

IF sy-subrc = 1.
mac_msg_repeat co_msg_error iu_error.
ELSEIF sy-subrc = 2.
mac_msg_repeat co_msg_error system_error.
ELSEIF sy-subrc = 3.
mac_msg_repeat co_msg_error not_qualified.
ELSEIF sy-subrc <> 0.
mac_msg_others sy-subrc 'ISU_INV_CREATE_ITEM_FROM_FKKOP'.
ENDIF.

*--- Steuerbeträge ermitteln und in den Druckbeleg aufnehmen


CLEAR: it_taxdata[], it_taxdata_st[], it_taxdata_bb[],
it_taxdata_op.

* new logic for tax line creation


* it_taxdata only newly posted tax
* it_taxdata_st tax calculated based on line type SUBT
* it_taxdata_bb tax of deducted budget billing amounts
* it_taxdata_op tax of other FICA items included with the invoi
ce

*--- check customizing for posting aggr. bill with tax determination -
-*
CLEAR lv_ethim_tax.
CALL FUNCTION 'ISU_DB_DEREGSWITCHSYST_SELECT'
IMPORTING
e_xtax_on_agg_post = lv_ethim_tax
EXCEPTIONS
customizing_not_defined = 1
OTHERS = 2.
IF sy-subrc NE 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-
msgv4 RAISING iu_error.
ELSE.
IF NOT lv_ethim_tax IS INITIAL.
CLEAR: ls_taxdata, it_taxdata[].
MOVE-CORRESPONDING it_aggfkkop TO ls_taxdata.
APPEND ls_taxdata TO it_taxdata.
ELSE.
mac_prot_log_off.
PERFORM joblog_supress_msg_on_handler.
CALL FUNCTION 'ISU_DEREG_GET_TAX_FOR_AGG_DOC'
EXPORTING
i_opbel = it_aggfkkop-opbel
i_waers = it_aggfkkop-waers
TABLES
t_taxdata = it_taxdata
t_taxdata_st = it_taxdata_st
t_taxdata_bb = it_taxdata_bb
t_taxdata_op = it_taxdata_op
EXCEPTIONS
error = 1
OTHERS = 2.
mac_prot_log_on.
PERFORM joblog_show_msgs_on_handler.
IF sy-subrc = 1.
mac_msg_putx co_msg_error sy-msgno sy-msgid sy-msgv1
sy-msgv2 sy-msgv3 sy-msgv4 iu_error.
ELSEIF sy-subrc <> 0.
mac_msg_others sy-subrc 'ISU_DEREG_GET_TAX_FOR_AGG_DOC'.
ENDIF.
ENDIF.
ENDIF.

PERFORM agg_tax_erdz_create
USING xy_wa_iiu-print_doc it_aggfkkop-opbel
it_aggfkkop-bukrs it_aggfkkop-waers:
it_taxdata co_belzart_aggrtx,
it_taxdata_st co_belzart_agtxst,
it_taxdata_bb co_belzart_agtxbb,
it_taxdata_op co_belzart_agtxop.

ENDLOOP.

* VKK-Doc wird in Folgeprogrammen nur beachtet, wenn der Kopf FKKKO


* nicht initial ist -> mind. ein Feld Versorgen (Ak)
wa_vkk_doc-fkkko-bldat = x_param-bldat.
* VKK-Doc Sammelrechnung aktualisieren
PERFORM update_vkkdoc_id TABLES xy_wa_iiu-t_vkk_doc_id
USING co_vkkdoc_aggrbi wa_vkk_doc.

ENDFUNCTION.

Вам также может понравиться