








FUNCTION z_paym_xml_06
IMPORTING
VALUE(is_fpayh) LIKE fpayh
VALUE(is_fpayhx) LIKE fpayhx
VALUE(i_paymedium) TYPE xfeld OPTIONAL
EXPORTING
es_fpayhx_cref LIKE fpayhx_cref
TABLES
t_fpayp LIKE fpayp.
DATA: lv_tax_amt_abs TYPE fpayp-qsteu,
lv_waers TYPE isocd,
ls_extension TYPE dmee_exit_interface_aba,
lv_tax_amt_abs_conv(1500) TYPE c,
lv_tax_base_amt_sum_conv(1500) TYPE c,
ls_t059z TYPE t059z,
ls_t059g TYPE t059g,
lv_tax_category TYPE wt_withcd,
lv_tax_method TYPE witht,
lv_tax_forms_code TYPE qsrec,
lv_tax_amt_rate TYPE wt_qsatz,
lv_tax_base_amt_in_loc_curr TYPE wt_bs,
lv_tax_amt_in_loc_curr TYPE wt_wt,
lv_zland TYPE fpayh-zland,
lv_qekar TYPE t059z-qekar,
lv_wt_posin TYPE t059z-wt_posin,
lv_zspra TYPE fpayh-zspra,
lv_tax_ctgry_dtls TYPE text40,
lv__tax_ctnumber TYPE ctnumber.
FIELD-SYMBOLS: <fs_fpayp> TYPE fpayp.
*****WHT Logic*****
*Values for Amount Conversion
ls_extension-node_values-length = 20.
ls_extension-node-tree_type = 'PAYM'. "#EC NOTEXT
ls_extension-node-tree_id = is_fpayhx-formi.
ls_extension-node-version = 000.
ls_extension-node-cv_rule = 'AL.='. "#EC NOTEXT
ls_extension-node-length = 20.
LOOP AT t_fpayp ASSIGNING <fs_fpayp>.
*Standard logic used in CGI (notes from 2253571 necessary)
cl_idfi_cgi_dmee_utils=>get_tax_info(
EXPORTING
iv_doc2r = <fs_fpayp>-doc2r
iv_spras = is_fpayh-zspra
iv_zland = is_fpayh-zland
IMPORTING
ev_tax_category = lv_tax_category
ev_tax_ctnumber = lv_tax_ctnumber
ev_tax_method = lv_tax_method
ev_tax_forms_code = lv_tax_forms_code
ev_tax_ctgry_dtls = lv_tax_ctgry_dtls
ev_tax_amt_rate = lv_tax_amt_rate
ev_tax_amt_in_loc_curr = lv_tax_amt_in_loc_curr
ev_tax_base_amt_in_loc_curr = lv_tax_base_amt_in_loc_curr
).
<fs_fpayp>-zref01(10) = lv_tax_category.
<fs_fpayp>-zref01+10(10) = lv_tax_ctnumber.
<fs_fpayp>-zref01+20(10) = lv_tax_method.
<fs_fpayp>-zref01+30(10) = lv_tax_forms_code.
<fs_fpayp>-zref01+40(40) = lv_tax_ctgry_dtls.
<fs_fpayp>-zref01+80(10) = lv_tax_amt_rate.
lv_waers = <fs_fpayp>-waers. "currency of the item in ISO currency code format
lv_tax_amt_abs = abs( <fs_fpayp>-qsteu ). "for Amount absolute value needed
* Get Amount with Currency (Using Spell_Amount)
" Tax Amount
CALL METHOD cl_idfi_cgi_dmee_utils=>amount_with_curr
EXPORTING
iv_p_value = lv_tax_amt_abs
iv_currency = lv_waers
IMPORTING
ev_p_value = lv_tax_amt_abs.
CALL METHOD cl_idfi_cgi_dmee_utils=>convert
EXPORTING
iv_p_value = lv_tax_amt_abs
iv_currency = lv_waers
is_extension = ls_extension
iv_nation = ''
CHANGING
cv_o_value = lv_tax_amt_abs_conv.
<fs_fpayp>-zref01+90(20) = lv_tax_amt_abs_conv.
" Tax Base Amount
CALL METHOD cl_idfi_cgi_dmee_utils=>amount_with_curr
EXPORTING
iv_p_value = lv_tax_base_amt_in_loc_curr
iv_currency = lv_waers
IMPORTING
ev_p_value = lv_tax_base_amt_in_loc_curr.
CALL METHOD cl_idfi_cgi_dmee_utils=>convert
EXPORTING
iv_p_value = lv_tax_base_amt_in_loc_curr
iv_currency = lv_waers
is_extension = ls_extension
iv_nation = ''
CHANGING
cv_o_value = lv_tax_base_amt_sum_conv.
<fs_fpayp>-zref01+110(20) = lv_tax_base_amt_sum_conv.
*Read T059Z (Withholding tax code)
lv_zland = is_fpayh-zland.
PERFORM read_t059z USING lv_zland lv_tax_method lv_tax_category ls_t059z.
lv_qekar = ls_t059z-qekar.
lv_wt_posin = ls_t059z-wt_posin.
<fs_fpayp>-zref02(4) = lv_qekar.
<fs_fpayp>-zref02+4(1) = lv_wt_posin.
*Read T059G (Income Types: Names)
lv_zspra = is_fpayh-zspra.
PERFORM read_t059g USING lv_zspra lv_zland lv_qekar ls_t059g.
<fs_fpayp>-zref02+5(40) = ls_t059g-eatxt.
ENDLOOP.
ENDFUNCTION.
FORM read_t059z USING lv_zland lv_tax_method lv_tax_category ls_t059z.
STATICS: lss_t059z TYPE t059z.
IF lss_t059z-land1 <> lv_zland AND
lss_t059z-witht <> lv_tax_method AND
lss_t059z-wt_withcd <> lv_tax_category.
SELECT SINGLE * INTO ls_t059z FROM t059z WHERE
land1 = lv_zland AND
witht = lv_tax_method AND
wt_withcd = lv_tax_category.
IF sy-subrc = 0.
lss_t059z = ls_t059z.
ENDIF.
ENDIF.
ENDFORM.
FORM read_t059g USING lv_zspra lv_zland lv_qekar ls_t059g.
STATICS: lss_t059g TYPE t059g.
IF lss_t059g-land1 <> lv_zland AND
lss_t059g-qekar <> lv_qekar.
"First with logon BP language
SELECT SINGLE * INTO ls_t059g FROM t059g WHERE
spras = lv_zspra AND
land1 = lv_zland AND
qekar = lv_qekar.
IF sy-subrc = 0.
lss_t059g = ls_t059g.
ELSE.
"Then with any language
SELECT SINGLE * INTO ls_t059g FROM t059g WHERE
land1 = lv_zland AND
qekar = lv_qekar.
IF sy-subrc = 0.
lss_t059g = ls_t059g.
ENDIF.
ENDIF.
ENDIF.
ENDFORM.You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
| User | Count |
|---|---|
| 9 | |
| 5 | |
| 5 | |
| 5 | |
| 5 | |
| 5 | |
| 4 | |
| 4 | |
| 3 | |
| 3 |