Módulo: DOC. IMPORTAÇÃO
Funcionalidade: Função
Data/Hora da Publicação: 23/06/2008 00:00:00
Data/Hora Última Alteração: 22/02/2011 16:32:14
Descrição da Nota: RETENÇÃO DE IMPOSTOS PARA CONTA COM ACUMULO
Sintoma
O valor de imposto retido calculado pela função /PWS/ZYGL_IMPOSTO está diferente do calculado pelo
SAP.
Solução
Ajustada função para calcular o acumulado para as contas da mesma forma que o SAP.
Informações Complementares
----------------------------------------------------------------------------------------------------
Nota Número 06827 Data: 23/06/2008 Hora: 11:07:54
----------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------
Nota Número : 06827
Categoria : Erro de Programa
Prioridade : Alta
Versão PW.CE : 7.0
Pacote : 00006
Agrupamento : 00053
----------------------------------------------------------------------------------------------------
Referência às notas relacionadas:
Número - Ordem - Versão - Pacote - Descrição Breve
00105 - 00001 - 6.0 - 00021 - DESPESAS EXPORTAÇÃO
05660 - 00002 - 7.0 - 00004 - IMPLEMENTADO NA FUNÇÃO ZYGL_IMPOSTO DE Nº DE DOCUMENTO COMPENSAÇÃ
----------------------------------------------------------------------------------------------------
RETENÇÃO DE IMPOSTOS PARA CONTA COM ACUMULO
----------------------------------------------------------------------------------------------------
Palavras Chave:
IMPOSTOS - ACUMULO - CONTA - FUNÇÃO
/PWS/ZYGL_IMPOSTO
----------------------------------------------------------------------------------------------------
Objetos da nota:
FUNC /PWS/ZYGL_IMPOSTO
REPS /PWS/LZYGLGF2F01
REPS /PWS/LZYGLGF2TOP
----------------------------------------------------------------------------------------------------
Modificações efetuadas em FUNC /PWS/ZYGL_IMPOSTO
...
DATA: BEGIN OF itab_with_item OCCURS 1000,
belnr LIKE with_item-belnr,
gjahr LIKE with_item-gjahr,
witht LIKE with_item-witht,
wt_withcd LIKE with_item-wt_withcd,
wt_qsshh LIKE with_item-wt_qsshh,
wt_qbshh LIKE with_item-wt_qbshh,
augbl like with_item-augbl,
END OF itab_with_item.
DATA itab_t059pp LIKE v_t059pp OCCURS 0 WITH HEADER LINE.
* >> Início da inclusão: FUNCTION /PWS/ZYGL_IMPOSTO
TYPES: BEGIN OF acc_int_struc,
type LIKE wtak-witht,
code LIKE wtak-wt_withcd,
base LIKE wtak-wt_bs01,
amnt LIKE wtak-wt_wt01,
hamnt LIKE wtak-wt_hlp01,
hamnta LIKE wtak-wt_hlpa01,
END OF acc_int_struc.
DATA: itab_acc_int_tab TYPE acc_int_struc OCCURS 0 WITH HEADER LINE.
DATA: itab_acc_int_tab2 TYPE acc_int_struc OCCURS 0 WITH HEADER LINE.
DATA: v_glvor(4) TYPE c VALUE 'RFBU'.
DATA: v_data TYPE sy-datum .
* << Fim da inclusão
CLEAR v_first_day.
IF p_dtlanc IS INITIAL.
MOVE sy-datum+4(2) TO v_mes.
MOVE sy-datum(4) TO v_ano.
MOVE sy-datum TO v_date.
ELSE.
MOVE p_dtlanc+4(2) TO v_mes.
MOVE p_dtlanc(4) TO v_ano.
MOVE p_dtlanc TO v_date.
ENDIF.
...
...
CLEAR t001-land1.
SELECT SINGLE land1 FROM t001
INTO t001-land1
WHERE bukrs = p_bukrs .
SELECT SINGLE * FROM /pws/zycbt007
WHERE bukrs = p_bukrs .
CLEAR itab_zyglt378. REFRESH itab_zyglt378.
SELECT *
FROM /pws/zyglt378
INTO TABLE itab_zyglt378
* >> Início da exclusão: FUNCTION /PWS/ZYGL_IMPOSTO
WHERE codmod EQ p_cod_mod. "#EC CI_NOFIRST
* << Fim da exclusão
* >> Início da inclusão: FUNCTION /PWS/ZYGL_IMPOSTO
WHERE codmod EQ p_cod_mod. "#EC CI_NOFIRST
* << Fim da inclusão
DELETE itab_zyglt378 WHERE witht IS initial.
DELETE itab_zyglt378 WHERE bukrs NE space AND
bukrs NE p_bukrs.
DELETE itab_zyglt378 WHERE land1 NE space AND
land1 NE t001-land1.
DELETE itab_zyglt378 WHERE regio NE space AND
regio NE p_regio.
SORT itab_zyglt378 BY codmod ASCENDING
cod_desp ASCENDING
witht ASCENDING
...
...
IF sy-subrc = 0.
SELECT belnr gjahr witht wt_withcd wt_qsshh wt_qbshh augbl
FROM with_item
INTO TABLE itab_with_item
WHERE bukrs EQ p_bukrs AND
witht IN s_witht AND
wt_acco EQ p_lifnr AND
gjahr EQ v_ano.
ENDIF.
ENDIF.
* >> Início da inclusão: FUNCTION /PWS/ZYGL_IMPOSTO
REFRESH itab_acc_int_tab2.
IF p_dtlanc IS INITIAL.
v_data = sy-datum.
ELSE.
v_data = p_dtlanc.
ENDIF.
LOOP AT itab_t059p.
CHECK itab_t059p-wt_accpt <> 0.
REFRESH itab_acc_int_tab.
PERFORM fi_wt_fill_acc_int_tab
TABLES itab_acc_int_tab
USING p_bukrs
'K'
p_lifnr
itab_t059p
v_data
v_glvor .
LOOP AT itab_acc_int_tab.
APPEND itab_acc_int_tab TO itab_acc_int_tab2.
ENDLOOP.
ENDLOOP.
* << Fim da inclusão
SORT itab_imposto BY cod_impo.
LOOP AT itab_with_item.
READ TABLE itab_imposto WITH KEY
cod_impo = itab_with_item-witht
BINARY SEARCH.
IF sy-subrc NE 0.
DELETE itab_with_item.
ENDIF.
ENDLOOP.
LOOP AT itab_with_item
* >> Início da exclusão: FUNCTION /PWS/ZYGL_IMPOSTO
WHERE wt_qsshh >= '0.00'."#EC PORTABLE
* << Fim da exclusão
* >> Início da inclusão: FUNCTION /PWS/ZYGL_IMPOSTO
WHERE wt_qsshh >= '0.00'. "#EC PORTABLE
* << Fim da inclusão
DELETE itab_with_item .
ENDLOOP.
LOOP AT itab_with_item.
READ TABLE itab_lfbw WITH KEY
wt_withcd = itab_with_item-wt_withcd
witht = itab_with_item-witht.
IF sy-subrc NE 0.
DELETE itab_with_item.
ENDIF.
ENDLOOP.
...
...
SORT itab_t059minmax BY wt_withcd wt_date DESCENDING.
READ TABLE itab_t059minmax INDEX 1.
ENDIF.
CLEAR t059p.
SELECT SINGLE *
FROM t059p
WHERE land1 EQ t001-land1 AND
witht EQ itab_imposto-cod_impo.
CHECK NOT t059p-wt_dopost IS INITIAL.
IF NOT itab_t059minmax[] IS INITIAL.
* >> Início da exclusão: FUNCTION /PWS/ZYGL_IMPOSTO
LOOP AT itab_with_item WHERE witht EQ itab_imposto-cod_impo.
if t059p-wt_postm ne '1' and itab_with_item-AUGBL is initial.
continue.
endif.
CLEAR itab_bkpf.
READ TABLE itab_bkpf WITH KEY bukrs = p_bukrs
belnr = itab_with_item-belnr
gjahr = itab_with_item-gjahr
stblg = ''.
IF sy-subrc EQ 0.
v_qsshh = abs( itab_with_item-wt_qsshh ) + v_qsshh.
v_qbshh = abs( itab_with_item-wt_qbshh ) + v_qbshh.
ENDIF.
* << Fim da exclusão
* >> Início da inclusão: FUNCTION /PWS/ZYGL_IMPOSTO
LOOP AT itab_acc_int_tab2 WHERE TYPE EQ itab_imposto-cod_impo.
v_qsshh = abs( itab_acc_int_tab2-base ) + v_qsshh.
v_qbshh = abs( itab_acc_int_tab2-amnt ) + v_qbshh.
* << Fim da inclusão
ENDLOOP.
v_total = itab_imposto-vl_base + v_qsshh.
IF t059p-wt_mainta EQ '1'.
READ TABLE itab_t059minmax
WITH KEY land1 = t001-land1
wt_withcd = ' '
witht = itab_imposto-cod_impo.
ELSE.
READ TABLE itab_t059minmax
WITH KEY land1 = t001-land1
...
...
ENDIF.
IF v_total >= itab_t059minmax-wt_wtminb.
IF NOT v_qsatz IS INITIAL.
IF v_qbshh < itab_t059minmax-wt_wtbex.
v_total = v_total -
( itab_t059minmax-wt_wtbex - v_qbshh ).
ENDIF.
itab_imposto-vl_imposto = ( ( v_total *
v_qsatz ) / 100 ) - v_qbshh.
ENDIF.
* >> Início da exclusão: FUNCTION /PWS/ZYGL_IMPOSTO
IF itab_imposto-vl_imposto < '0.00' ."#EC PORTABLE
* << Fim da exclusão
* >> Início da inclusão: FUNCTION /PWS/ZYGL_IMPOSTO
IF itab_imposto-vl_imposto < '0.00' . "#EC PORTABLE
* << Fim da inclusão
CLEAR itab_imposto-vl_imposto.
ENDIF.
ELSE.
CLEAR itab_imposto-vl_imposto.
ENDIF.
ENDIF.
ELSE.
CLEAR itab_t059fb. REFRESH itab_t059fb.
SELECT *
FROM t059fb
...
...
IF NOT v_qsshh IS INITIAL AND
NOT v_qbshh IS INITIAL.
itab_imposto-vl_imposto = ( ( v_total *
itab_t059fb-qsatz ) / 100 ) -
( ( v_qsshh *
itab_t059fb-qsatz ) / 100 ).
ELSE.
itab_imposto-vl_imposto = ( ( v_total *
itab_t059fb-qsatz ) / 100 ).
ENDIF.
* >> Início da exclusão: FUNCTION /PWS/ZYGL_IMPOSTO
IF itab_imposto-vl_imposto < '0.00' ."#EC PORTABLE
* << Fim da exclusão
* >> Início da inclusão: FUNCTION /PWS/ZYGL_IMPOSTO
IF itab_imposto-vl_imposto < '0.00' . "#EC PORTABLE
* << Fim da inclusão
CLEAR itab_imposto-vl_imposto.
ENDIF.
ELSE.
CLEAR itab_imposto-vl_imposto.
ENDIF.
ENDIF.
ENDIF.
MODIFY itab_imposto.
ENDLOOP.
CLEAR itab_lfbw. REFRESH itab_lfbw.
...
----------------------------------------------------------------------------------------------------
Modificações efetuadas em REPS /PWS/LZYGLGF2F01
...
ENDIF.
ENDFORM.
form preenche_tab_exec_call_transac tables p_itab_ctu_params
structure itab_ctu_params
using p_mode
p_update.
p_itab_ctu_params-dismode = p_mode.
p_itab_ctu_params-updmode = p_update.
APPEND p_itab_ctu_params.
endform.
* >> Início da inclusão:
FORM fi_wt_fill_acc_int_tab TABLES o_acc_tab TYPE acc_int_tab_struc
USING value(i_bukrs) LIKE t001-bukrs
value(i_koart) LIKE bseg-koart
value(i_acct) LIKE bseg-lifnr
value(i_t059p) STRUCTURE t059p
value(i_budat) LIKE bkpf-budat
value(i_glvor) LIKE bkpf-glvor.
DATA: h_wtak LIKE wtak OCCURS 1 WITH HEADER LINE,
h_wtad LIKE wtad OCCURS 1 WITH HEADER LINE.
PERFORM fi_wt_read_accumulation_tables TABLES h_wtak
h_wtad
USING i_bukrs
i_koart
i_acct
i_t059p-witht
i_budat
i_glvor.
PERFORM fi_wt_prepare_acc_int_tab TABLES o_acc_tab
h_wtak
h_wtad
USING i_koart
i_t059p-wt_accpt
i_budat.
ENDFORM.
FORM fi_wt_read_accumulation_tables TABLES o_wtak STRUCTURE wtak
o_wtad STRUCTURE wtad
USING value(i_bukrs) LIKE t001-bukrs
value(i_koart) LIKE bseg-koart
value(i_acct) LIKE bseg-lifnr
value(i_type) LIKE t059p-witht
value(i_budat) LIKE bkpf-budat
value(i_glvor) LIKE bkpf-glvor.
DATA: hjahr LIKE wtak-wt_caly,
h_buk_tab LIKE regus OCCURS 1 WITH HEADER LINE,
h_wtak LIKE wtak OCCURS 1 WITH HEADER LINE,
h_wtad LIKE wtad OCCURS 1 WITH HEADER LINE.
CLEAR: o_wtak, o_wtad.
REFRESH: o_wtak, o_wtad.
CLEAR h_buk_tab.
REFRESH h_buk_tab.
hjahr = i_budat(4).
h_buk_tab-bukrs = i_bukrs.
APPEND h_buk_tab.
IF i_koart = char_k.
CALL FUNCTION 'FI_WT_GET_X_WTAK'
EXPORTING
i_lifnr = i_acct
TABLES
t_wtak = h_wtak
i_buk_tab = h_buk_tab.
READ TABLE h_wtak WITH KEY bukrs = i_bukrs
lifnr = i_acct
witht = i_type.
IF sy-subrc <> 0 OR i_glvor EQ 'RMRP'.
CALL FUNCTION 'FI_WT_READ_WTAK'
EXPORTING
i_bukrs = i_bukrs
i_lifnr = i_acct
i_witht = i_type
TABLES
t_wtak = o_wtak
EXCEPTIONS
no_entry_found = 1
OTHERS = 2.
IF l_trace_active = 'X'
AND sy-cprog = 'RFWT1000'.
DATA: l_base_amnt LIKE with_item-wt_qsshh,
l_wt_amount LIKE with_item-wt_qsshh,
l_hlp_amount LIKE with_item-wt_qsshh,
l_hlp_amounta LIKE with_item-wt_qsshh,
i_code LIKE t059z-wt_withcd,
l_hwaer LIKE bkpf-hwaer,
hmonth LIKE bkpf-monat,
l_counter.
hmonth = i_budat+4(2).
CLEAR l_counter.
l_hwaer = i_wtax_trace-waers.
LOOP AT i_wtax_trace WHERE bukrs = i_bukrs
AND text = 'ACCUMK'
AND witht = i_type
AND wt_acco = i_acct.
i_code = i_wtax_trace-wt_withcd.
l_counter = l_counter + 1.
CASE l_counter.
WHEN '1'. l_base_amnt = i_wtax_trace-dmbtr.
WHEN '2'. l_wt_amount = i_wtax_trace-dmbtr.
WHEN '3'. l_hlp_amount = i_wtax_trace-dmbtr.
WHEN '4'.
l_hlp_amounta = i_wtax_trace-dmbtr.
EXIT.
ENDCASE.
ENDLOOP.
i_wtax_trace-waers = l_hwaer.
IF sy-subrc = 0.
CLEAR o_wtak.
REFRESH o_wtak.
PERFORM fi_wt_accumulation_table_add TABLES o_wtak
o_wtad
USING char_k
i_bukrs
i_acct
hmonth
hjahr
i_type
i_code
l_base_amnt
l_wt_amount
l_hlp_amount
l_hlp_amounta.
ENDIF.
ENDIF.
LOOP AT o_wtak.
h_wtak = o_wtak.
APPEND h_wtak.
ENDLOOP.
CALL FUNCTION 'FI_WT_PUT_X_WTAK'
EXPORTING
i_lifnr = i_acct
TABLES
t_wtak = h_wtak
i_buk_tab = h_buk_tab.
ELSE.
LOOP AT h_wtak WHERE bukrs = i_bukrs
AND lifnr = i_acct
AND witht = i_type.
o_wtak = h_wtak.
APPEND o_wtak.
ENDLOOP.
ENDIF.
ELSEIF i_koart = char_d.
CALL FUNCTION 'FI_WT_GET_X_WTAD'
EXPORTING
i_kunnr = i_acct
TABLES
t_wtad = h_wtad
i_buk_tab = h_buk_tab.
READ TABLE h_wtad WITH KEY bukrs = i_bukrs
kunnr = i_acct
witht = i_type.
IF sy-subrc <> 0 OR i_glvor EQ 'RMRP'.
CALL FUNCTION 'FI_WT_READ_WTAD'
EXPORTING
i_bukrs = i_bukrs
i_kunnr = i_acct
i_witht = i_type
TABLES
t_wtad = o_wtad
EXCEPTIONS
no_entry_found = 1
OTHERS = 2.
LOOP AT o_wtad.
h_wtad = o_wtad.
APPEND h_wtad.
ENDLOOP.
CALL FUNCTION 'FI_WT_PUT_X_WTAD'
EXPORTING
i_kunnr = i_acct
TABLES
t_wtad = h_wtad
i_buk_tab = h_buk_tab.
ELSE.
LOOP AT h_wtad WHERE bukrs = i_bukrs
AND kunnr = i_acct
AND witht = i_type.
o_wtad = h_wtad.
APPEND o_wtad.
ENDLOOP.
ENDIF.
ENDIF.
ENDFORM.
FORM fi_wt_prepare_acc_int_tab TABLES o_acc_tab TYPE acc_int_tab_struc
i_wtak STRUCTURE wtak
i_wtad STRUCTURE wtad
USING value(i_koart) LIKE bseg-koart
value(i_pattern) LIKE t059p-wt_accpt
value(i_budat) LIKE bkpf-budat.
DATA: j_tab LIKE wtak OCCURS 1 WITH HEADER LINE.
DATA: hmonth LIKE bkpf-monat.
DATA: BEGIN OF looptab_struc,
lifnr LIKE wtak-lifnr,
bukrs LIKE wtak-bukrs,
witht LIKE wtak-witht,
wt_withcd LIKE wtak-wt_withcd,
END OF looptab_struc.
DATA: l_tab LIKE wtak OCCURS 1 WITH HEADER LINE,
n_tab LIKE wtak OCCURS 1 WITH HEADER LINE,
looptab LIKE looptab_struc OCCURS 1 WITH HEADER LINE.
DATA: startmonth LIKE bkpf-monat,
month LIKE bkpf-monat,
hjahr LIKE wtak-wt_caly,
ljahr LIKE wtak-wt_caly,
njahr LIKE wtak-wt_caly.
DATA: h_base(13) TYPE c,
h_amnt(13) TYPE c,
h_hamnt(14) TYPE c,
h_hamnta(15) TYPE c,
s_base LIKE wtak-wt_bs01,
s_amnt LIKE wtak-wt_wt01,
s_hamnt LIKE wtak-wt_hlp01,
s_hamnta LIKE wtak-wt_hlpa01.
FIELD-SYMBOLS: <h_base> TYPE ANY,
<h_amnt> TYPE ANY,
<h_hamnt> TYPE ANY,
<h_hamnta> TYPE ANY.
CONSTANTS: c_base(10) TYPE c VALUE '_TAB-WT_BS',
c_amnt(10) TYPE c VALUE '_TAB-WT_WT',
c_hamnt(11) TYPE c VALUE '_TAB-WT_HLP',
c_hamnta(12) TYPE c VALUE '_TAB-WT_HLPA'.
hmonth = i_budat+4(2).
hjahr = i_budat(4).
ljahr = i_budat(4) - 1.
njahr = i_budat(4) + 1.
IF i_koart = char_k.
LOOP AT i_wtak.
IF i_wtak-wt_caly = hjahr.
j_tab = i_wtak.
APPEND j_tab.
ELSE.
IF i_wtak-wt_caly = ljahr.
l_tab = i_wtak.
APPEND l_tab.
ELSE.
IF i_wtak-wt_caly = njahr.
n_tab = i_wtak.
APPEND n_tab.
ENDIF.
ENDIF.
ENDIF.
ENDLOOP.
ELSEIF i_koart = char_d.
LOOP AT i_wtad.
IF i_wtad-wt_caly = hjahr.
j_tab = i_wtad.
APPEND j_tab.
ELSE.
IF i_wtad-wt_caly = ljahr.
l_tab = i_wtad.
APPEND l_tab.
ELSE.
IF i_wtad-wt_caly = njahr.
n_tab = i_wtad.
APPEND n_tab.
ENDIF.
ENDIF.
ENDIF.
ENDLOOP.
ENDIF.
CASE i_pattern.
WHEN '1' OR 'A'.
LOOP AT j_tab.
o_acc_tab-type = j_tab-witht.
o_acc_tab-code = j_tab-wt_withcd.
o_acc_tab-base =
j_tab-wt_bs01 + j_tab-wt_bs02 +
j_tab-wt_bs03 + j_tab-wt_bs04 +
j_tab-wt_bs05 + j_tab-wt_bs06 +
j_tab-wt_bs07 + j_tab-wt_bs08 +
j_tab-wt_bs09 + j_tab-wt_bs10 +
j_tab-wt_bs11 + j_tab-wt_bs12.
o_acc_tab-amnt =
j_tab-wt_wt01 + j_tab-wt_wt02 +
j_tab-wt_wt03 + j_tab-wt_wt04 +
j_tab-wt_wt05 + j_tab-wt_wt06 +
j_tab-wt_wt07 + j_tab-wt_wt08 +
j_tab-wt_wt09 + j_tab-wt_wt10 +
j_tab-wt_wt11 + j_tab-wt_wt12.
o_acc_tab-hamnt =
j_tab-wt_hlp01 + j_tab-wt_hlp02 +
j_tab-wt_hlp03 + j_tab-wt_hlp04 +
j_tab-wt_hlp05 + j_tab-wt_hlp06 +
j_tab-wt_hlp07 + j_tab-wt_hlp08 +
j_tab-wt_hlp09 + j_tab-wt_hlp10 +
j_tab-wt_hlp11 + j_tab-wt_hlp12.
o_acc_tab-hamnta =
j_tab-wt_hlpa01 + j_tab-wt_hlpa02 +
j_tab-wt_hlpa03 + j_tab-wt_hlpa04 +
j_tab-wt_hlpa05 + j_tab-wt_hlpa06 +
j_tab-wt_hlpa07 + j_tab-wt_hlpa08 +
j_tab-wt_hlpa09 + j_tab-wt_hlpa10 +
j_tab-wt_hlpa11 + j_tab-wt_hlpa12.
APPEND o_acc_tab.
ENDLOOP.
WHEN '2'.
LOOP AT j_tab.
o_acc_tab-type = j_tab-witht.
o_acc_tab-code = j_tab-wt_withcd.
IF hmonth = '01' OR hmonth = '02' OR hmonth = '03'.
o_acc_tab-base = j_tab-wt_bs01 +
j_tab-wt_bs02 +
j_tab-wt_bs03.
o_acc_tab-amnt = j_tab-wt_wt01 +
j_tab-wt_wt02 +
j_tab-wt_wt03.
o_acc_tab-hamnt = j_tab-wt_hlp01 +
j_tab-wt_hlp02 +
j_tab-wt_hlp03.
o_acc_tab-hamnta = j_tab-wt_hlpa01 +
j_tab-wt_hlpa02 +
j_tab-wt_hlpa03.
ELSEIF hmonth = '04' OR hmonth = '05' OR hmonth = '06'.
o_acc_tab-base = j_tab-wt_bs04 +
j_tab-wt_bs05 +
j_tab-wt_bs06.
o_acc_tab-amnt = j_tab-wt_wt04 +
j_tab-wt_wt05 +
j_tab-wt_wt06.
o_acc_tab-hamnt = j_tab-wt_hlp04 +
j_tab-wt_hlp05 +
j_tab-wt_hlp06.
o_acc_tab-hamnta = j_tab-wt_hlpa04 +
j_tab-wt_hlpa05 +
j_tab-wt_hlpa06.
ELSEIF hmonth = '07' OR hmonth = '08' OR hmonth = '09'.
o_acc_tab-base = j_tab-wt_bs07 +
j_tab-wt_bs08 +
j_tab-wt_bs09.
o_acc_tab-amnt = j_tab-wt_wt07 +
j_tab-wt_wt08 +
j_tab-wt_wt09.
o_acc_tab-hamnt = j_tab-wt_hlp07 +
j_tab-wt_hlp08 +
j_tab-wt_hlp09.
o_acc_tab-hamnta = j_tab-wt_hlpa07 +
j_tab-wt_hlpa08 +
j_tab-wt_hlpa09.
ELSEIF hmonth = '10' OR hmonth = '11' OR hmonth = '12'.
o_acc_tab-base = j_tab-wt_bs10 +
j_tab-wt_bs11 +
j_tab-wt_bs12.
o_acc_tab-amnt = j_tab-wt_wt10 +
j_tab-wt_wt11 +
j_tab-wt_wt12.
o_acc_tab-hamnt = j_tab-wt_hlp10 +
j_tab-wt_hlp11 +
j_tab-wt_hlp12.
o_acc_tab-hamnta = j_tab-wt_hlpa10 +
j_tab-wt_hlpa11 +
j_tab-wt_hlpa12.
ENDIF.
APPEND o_acc_tab.
ENDLOOP.
WHEN '3'.
LOOP AT j_tab.
o_acc_tab-type = j_tab-witht.
o_acc_tab-code = j_tab-wt_withcd.
CASE hmonth.
WHEN '01'.
o_acc_tab-base = j_tab-wt_bs01.
o_acc_tab-amnt = j_tab-wt_wt01.
o_acc_tab-hamnt = j_tab-wt_hlp01.
o_acc_tab-hamnta = j_tab-wt_hlpa01.
WHEN '02'.
o_acc_tab-base = j_tab-wt_bs02.
o_acc_tab-amnt = j_tab-wt_wt02.
o_acc_tab-hamnt = j_tab-wt_hlp02.
o_acc_tab-hamnta = j_tab-wt_hlpa02.
WHEN '03'.
o_acc_tab-base = j_tab-wt_bs03.
o_acc_tab-amnt = j_tab-wt_wt03.
o_acc_tab-hamnt = j_tab-wt_hlp03.
o_acc_tab-hamnta = j_tab-wt_hlpa03.
WHEN '04'.
o_acc_tab-base = j_tab-wt_bs04.
o_acc_tab-amnt = j_tab-wt_wt04.
o_acc_tab-hamnt = j_tab-wt_hlp04.
o_acc_tab-hamnta = j_tab-wt_hlpa04.
WHEN '05'.
o_acc_tab-base = j_tab-wt_bs05.
o_acc_tab-amnt = j_tab-wt_wt05.
o_acc_tab-hamnt = j_tab-wt_hlp05.
o_acc_tab-hamnta = j_tab-wt_hlpa05.
WHEN '06'.
o_acc_tab-base = j_tab-wt_bs06.
o_acc_tab-amnt = j_tab-wt_wt06.
o_acc_tab-hamnt = j_tab-wt_hlp06.
o_acc_tab-hamnta = j_tab-wt_hlpa06.
WHEN '07'.
o_acc_tab-base = j_tab-wt_bs07.
o_acc_tab-amnt = j_tab-wt_wt07.
o_acc_tab-hamnt = j_tab-wt_hlp07.
o_acc_tab-hamnta = j_tab-wt_hlpa07.
WHEN '08'.
o_acc_tab-base = j_tab-wt_bs08.
o_acc_tab-amnt = j_tab-wt_wt08.
o_acc_tab-hamnt = j_tab-wt_hlp08.
o_acc_tab-hamnta = j_tab-wt_hlpa08.
WHEN '09'.
o_acc_tab-base = j_tab-wt_bs09.
o_acc_tab-amnt = j_tab-wt_wt09.
o_acc_tab-hamnt = j_tab-wt_hlp09.
o_acc_tab-hamnta = j_tab-wt_hlpa09.
WHEN '10'.
o_acc_tab-base = j_tab-wt_bs10.
o_acc_tab-amnt = j_tab-wt_wt10.
o_acc_tab-hamnt = j_tab-wt_hlp10.
o_acc_tab-hamnta = j_tab-wt_hlpa10.
WHEN '11'.
o_acc_tab-base = j_tab-wt_bs11.
o_acc_tab-amnt = j_tab-wt_wt11.
o_acc_tab-hamnt = j_tab-wt_hlp11.
o_acc_tab-hamnta = j_tab-wt_hlpa11.
WHEN '12'.
o_acc_tab-base = j_tab-wt_bs12.
o_acc_tab-amnt = j_tab-wt_wt12.
o_acc_tab-hamnt = j_tab-wt_hlp12.
o_acc_tab-hamnta = j_tab-wt_hlpa12.
ENDCASE.
APPEND o_acc_tab.
ENDLOOP.
WHEN 'B' OR 'C' OR 'D' OR 'E' OR
'F' OR 'G' OR 'H' OR 'I' OR
'J' OR 'K' OR 'L'.
CASE i_pattern.
WHEN 'B'.
startmonth = '02'.
WHEN 'C'.
startmonth = '03'.
WHEN 'D'.
startmonth = '04'.
WHEN 'E'.
startmonth = '05'.
WHEN 'F'.
startmonth = '06'.
WHEN 'G'.
startmonth = '07'.
WHEN 'H'.
startmonth = '08'.
WHEN 'I'.
startmonth = '09'.
WHEN 'J'.
startmonth = '10'.
WHEN 'K'.
startmonth = '11'.
WHEN 'L'.
startmonth = '12'.
ENDCASE.
IF i_koart = char_k.
LOOP AT i_wtak.
CLEAR looptab.
MOVE-CORRESPONDING i_wtak TO looptab.
COLLECT looptab.
ENDLOOP.
ELSEIF i_koart = char_d.
LOOP AT i_wtad.
CLEAR looptab.
MOVE-CORRESPONDING i_wtad TO looptab.
looptab-lifnr = i_wtad-kunnr.
COLLECT looptab.
ENDLOOP.
ENDIF.
LOOP AT looptab.
o_acc_tab-type = looptab-witht.
o_acc_tab-code = looptab-wt_withcd.
CLEAR: l_tab, n_tab, j_tab.
READ TABLE j_tab WITH KEY bukrs = looptab-bukrs
lifnr = looptab-lifnr
wt_caly = hjahr
witht = looptab-witht
wt_withcd = looptab-wt_withcd.
READ TABLE l_tab WITH KEY bukrs = looptab-bukrs
lifnr = looptab-lifnr
wt_caly = ljahr
witht = looptab-witht
wt_withcd = looptab-wt_withcd.
READ TABLE n_tab WITH KEY bukrs = looptab-bukrs
lifnr = looptab-lifnr
wt_caly = njahr
witht = looptab-witht
wt_withcd = looptab-wt_withcd.
CLEAR: s_base, s_amnt, s_hamnt, s_hamnta.
IF startmonth LE hmonth.
month = startmonth.
WHILE month LE 12.
CONCATENATE 'J' c_base month INTO h_base.
ASSIGN (h_base) TO <h_base>.
s_base = s_base + <h_base>.
CONCATENATE 'J' c_amnt month INTO h_amnt.
ASSIGN (h_amnt) TO <h_amnt>.
s_amnt = s_amnt + <h_amnt>.
CONCATENATE 'J' c_hamnt month INTO h_hamnt.
ASSIGN (h_hamnt) TO <h_hamnt>.
s_hamnt = s_hamnt + <h_hamnt>.
CONCATENATE 'J' c_hamnta month INTO h_hamnta.
ASSIGN (h_hamnta) TO <h_hamnta>.
s_hamnta = s_hamnta + <h_hamnta>.
month = month + 1.
ENDWHILE.
month = 01.
WHILE month < startmonth.
CONCATENATE 'N' c_base month INTO h_base.
ASSIGN (h_base) TO <h_base>.
s_base = s_base + <h_base>.
CONCATENATE 'N' c_amnt month INTO h_amnt.
ASSIGN (h_amnt) TO <h_amnt>.
s_amnt = s_amnt + <h_amnt>.
CONCATENATE 'N' c_hamnt month INTO h_hamnt.
ASSIGN (h_hamnt) TO <h_hamnt>.
s_hamnt = s_hamnt + <h_hamnt>.
CONCATENATE 'N' c_hamnta month INTO h_hamnta.
ASSIGN (h_hamnta) TO <h_hamnta>.
s_hamnta = s_hamnta + <h_hamnta>.
month = month + 1.
ENDWHILE.
ELSE.
month = startmonth.
WHILE month LE 12.
CONCATENATE 'L' c_base month INTO h_base.
ASSIGN (h_base) TO <h_base>.
s_base = s_base + <h_base>.
CONCATENATE 'L' c_amnt month INTO h_amnt.
ASSIGN (h_amnt) TO <h_amnt>.
s_amnt = s_amnt + <h_amnt>.
CONCATENATE 'L' c_hamnt month INTO h_hamnt.
ASSIGN (h_hamnt) TO <h_hamnt>.
s_hamnt = s_hamnt + <h_hamnt>.
CONCATENATE 'L' c_hamnta month INTO h_hamnta.
ASSIGN (h_hamnta) TO <h_hamnta>.
s_hamnta = s_hamnta + <h_hamnta>.
month = month + 1.
ENDWHILE.
month = 01.
WHILE month < startmonth.
CONCATENATE 'J' c_base month INTO h_base.
ASSIGN (h_base) TO <h_base>.
s_base = s_base + <h_base>.
CONCATENATE 'J' c_amnt month INTO h_amnt.
ASSIGN (h_amnt) TO <h_amnt>.
s_amnt = s_amnt + <h_amnt>.
CONCATENATE 'J' c_hamnt month INTO h_hamnt.
ASSIGN (h_hamnt) TO <h_hamnt>.
s_hamnt = s_hamnt + <h_hamnt>.
CONCATENATE 'J' c_hamnta month INTO h_hamnta.
ASSIGN (h_hamnta) TO <h_hamnta>.
s_hamnta = s_hamnta + <h_hamnta>.
month = month + 1.
ENDWHILE.
ENDIF.
o_acc_tab-base = s_base.
o_acc_tab-amnt = s_amnt.
o_acc_tab-hamnt = s_hamnt.
o_acc_tab-hamnta = s_hamnta.
APPEND o_acc_tab.
ENDLOOP.
ENDCASE.
ENDFORM.
FORM fi_wt_accumulation_table_add
TABLES yacck STRUCTURE wtak
yaccd STRUCTURE wtad
USING value(i_koart) LIKE bseg-koart
value(i_bukrs) LIKE t001-bukrs
value(i_acct) LIKE bseg-lifnr
value(i_monat) LIKE bkpf-monat
value(i_jahr) LIKE wtak-wt_caly
value(i_witht) LIKE t059p-witht
value(i_code) LIKE t059z-wt_withcd
value(i_base) LIKE with_item-wt_qsshh
value(i_amnt) LIKE with_item-wt_qbshh
value(i_hamnt) LIKE with_item-wt_qbshh
value(i_hamnta) LIKE with_item-wt_qbshh.
IF i_koart = char_k.
CLEAR yacck.
CASE i_monat.
WHEN '01'.
yacck-wt_bs01 = yacck-wt_bs01 + i_base.
yacck-wt_wt01 = yacck-wt_wt01 + i_amnt.
yacck-wt_hlp01 = yacck-wt_hlp01 + i_hamnt.
yacck-wt_hlpa01 = yacck-wt_hlpa01 + i_hamnta.
WHEN '02'.
yacck-wt_bs02 = yacck-wt_bs02 + i_base.
yacck-wt_wt02 = yacck-wt_wt02 + i_amnt.
yacck-wt_hlp02 = yacck-wt_hlp02 + i_hamnt.
yacck-wt_hlpa02 = yacck-wt_hlpa02 + i_hamnta.
WHEN '03'.
yacck-wt_bs03 = yacck-wt_bs03 + i_base.
yacck-wt_wt03 = yacck-wt_wt03 + i_amnt.
yacck-wt_hlp03 = yacck-wt_hlp03 + i_hamnt.
yacck-wt_hlpa03 = yacck-wt_hlpa03 + i_hamnta.
WHEN '04'.
yacck-wt_bs04 = yacck-wt_bs04 + i_base.
yacck-wt_wt04 = yacck-wt_wt04 + i_amnt.
yacck-wt_hlp04 = yacck-wt_hlp04 + i_hamnt.
yacck-wt_hlpa04 = yacck-wt_hlpa04 + i_hamnta.
WHEN '05'.
yacck-wt_bs05 = yacck-wt_bs05 + i_base.
yacck-wt_wt05 = yacck-wt_wt05 + i_amnt.
yacck-wt_hlp05 = yacck-wt_hlp05 + i_hamnt.
yacck-wt_hlpa05 = yacck-wt_hlpa05 + i_hamnta.
WHEN '06'.
yacck-wt_bs06 = yacck-wt_bs06 + i_base.
yacck-wt_wt06 = yacck-wt_wt06 + i_amnt.
yacck-wt_hlp06 = yacck-wt_hlp06 + i_hamnt.
yacck-wt_hlpa06 = yacck-wt_hlpa06 + i_hamnta.
WHEN '07'.
yacck-wt_bs07 = yacck-wt_bs07 + i_base.
yacck-wt_wt07 = yacck-wt_wt07 + i_amnt.
yacck-wt_hlp07 = yacck-wt_hlp07 + i_hamnt.
yacck-wt_hlpa07 = yacck-wt_hlpa07 + i_hamnta.
WHEN '08'.
yacck-wt_bs08 = yacck-wt_bs08 + i_base.
yacck-wt_wt08 = yacck-wt_wt08 + i_amnt.
yacck-wt_hlp08 = yacck-wt_hlp08 + i_hamnt.
yacck-wt_hlpa08 = yacck-wt_hlpa08 + i_hamnta.
WHEN '09'.
yacck-wt_bs09 = yacck-wt_bs09 + i_base.
yacck-wt_wt09 = yacck-wt_wt09 + i_amnt.
yacck-wt_hlp09 = yacck-wt_hlp09 + i_hamnt.
yacck-wt_hlpa09 = yacck-wt_hlpa09 + i_hamnta.
WHEN '10'.
yacck-wt_bs10 = yacck-wt_bs10 + i_base.
yacck-wt_wt10 = yacck-wt_wt10 + i_amnt.
yacck-wt_hlp10 = yacck-wt_hlp10 + i_hamnt.
yacck-wt_hlpa10 = yacck-wt_hlpa10 + i_hamnta.
WHEN '11'.
yacck-wt_bs11 = yacck-wt_bs11 + i_base.
yacck-wt_wt11 = yacck-wt_wt11 + i_amnt.
yacck-wt_hlp11 = yacck-wt_hlp11 + i_hamnt.
yacck-wt_hlpa11 = yacck-wt_hlpa11 + i_hamnta.
WHEN '12'.
yacck-wt_bs12 = yacck-wt_bs12 + i_base.
yacck-wt_wt12 = yacck-wt_wt12 + i_amnt.
yacck-wt_hlp12 = yacck-wt_hlp12 + i_hamnt.
yacck-wt_hlpa12 = yacck-wt_hlpa12 + i_hamnta.
ENDCASE.
yacck-bukrs = i_bukrs.
yacck-lifnr = i_acct.
yacck-wt_caly = i_jahr.
yacck-witht = i_witht.
yacck-wt_withcd = i_code.
COLLECT yacck.
ELSEIF i_koart = char_d.
CLEAR yaccd.
CASE i_monat.
WHEN '01'.
yaccd-wt_bs01 = yaccd-wt_bs01 + i_base.
yaccd-wt_wt01 = yaccd-wt_wt01 + i_amnt.
yaccd-wt_hlp01 = yaccd-wt_hlp01 + i_hamnt.
yaccd-wt_hlpa01 = yaccd-wt_hlpa01 + i_hamnta.
WHEN '02'.
yaccd-wt_bs02 = yaccd-wt_bs02 + i_base.
yaccd-wt_wt02 = yaccd-wt_wt02 + i_amnt.
yaccd-wt_hlp02 = yaccd-wt_hlp02 + i_hamnt.
yaccd-wt_hlpa02 = yaccd-wt_hlpa02 + i_hamnta.
WHEN '03'.
yaccd-wt_bs03 = yaccd-wt_bs03 + i_base.
yaccd-wt_wt03 = yaccd-wt_wt03 + i_amnt.
yaccd-wt_hlp03 = yaccd-wt_hlp03 + i_hamnt.
yaccd-wt_hlpa03 = yaccd-wt_hlpa03 + i_hamnta.
WHEN '04'.
yaccd-wt_bs04 = yaccd-wt_bs04 + i_base.
yaccd-wt_wt04 = yaccd-wt_wt04 + i_amnt.
yaccd-wt_hlp04 = yaccd-wt_hlp04 + i_hamnt.
yaccd-wt_hlpa04 = yaccd-wt_hlpa04 + i_hamnta.
WHEN '05'.
yaccd-wt_bs05 = yaccd-wt_bs05 + i_base.
yaccd-wt_wt05 = yaccd-wt_wt05 + i_amnt.
yaccd-wt_hlp05 = yaccd-wt_hlp05 + i_hamnt.
yaccd-wt_hlpa05 = yaccd-wt_hlpa05 + i_hamnta.
WHEN '06'.
yaccd-wt_bs06 = yaccd-wt_bs06 + i_base.
yaccd-wt_wt06 = yaccd-wt_wt06 + i_amnt.
yaccd-wt_hlp06 = yaccd-wt_hlp06 + i_hamnt.
yaccd-wt_hlpa06 = yaccd-wt_hlpa06 + i_hamnta.
WHEN '07'.
yaccd-wt_bs07 = yaccd-wt_bs07 + i_base.
yaccd-wt_wt07 = yaccd-wt_wt07 + i_amnt.
yaccd-wt_hlp07 = yaccd-wt_hlp07 + i_hamnt.
yaccd-wt_hlpa07 = yaccd-wt_hlpa07 + i_hamnta.
WHEN '08'.
yaccd-wt_bs08 = yaccd-wt_bs08 + i_base.
yaccd-wt_wt08 = yaccd-wt_wt08 + i_amnt.
yaccd-wt_hlp08 = yaccd-wt_hlp08 + i_hamnt.
yaccd-wt_hlpa08 = yaccd-wt_hlpa08 + i_hamnta.
WHEN '09'.
yaccd-wt_bs09 = yaccd-wt_bs09 + i_base.
yaccd-wt_wt09 = yaccd-wt_wt09 + i_amnt.
yaccd-wt_hlp09 = yaccd-wt_hlp09 + i_hamnt.
yaccd-wt_hlpa09 = yaccd-wt_hlpa09 + i_hamnta.
WHEN '10'.
yaccd-wt_bs10 = yaccd-wt_bs10 + i_base.
yaccd-wt_wt10 = yaccd-wt_wt10 + i_amnt.
yaccd-wt_hlp10 = yaccd-wt_hlp10 + i_hamnt.
yaccd-wt_hlpa10 = yaccd-wt_hlpa10 + i_hamnta.
WHEN '11'.
yaccd-wt_bs11 = yaccd-wt_bs11 + i_base.
yaccd-wt_wt11 = yaccd-wt_wt11 + i_amnt.
yaccd-wt_hlp11 = yaccd-wt_hlp11 + i_hamnt.
yaccd-wt_hlpa11 = yaccd-wt_hlpa11 + i_hamnta.
WHEN '12'.
yaccd-wt_bs12 = yaccd-wt_bs12 + i_base.
yaccd-wt_wt12 = yaccd-wt_wt12 + i_amnt.
yaccd-wt_hlp12 = yaccd-wt_hlp12 + i_hamnt.
yaccd-wt_hlpa12 = yaccd-wt_hlpa12 + i_hamnta.
ENDCASE.
yaccd-bukrs = i_bukrs.
yaccd-kunnr = i_acct.
yaccd-wt_caly = i_jahr.
yaccd-witht = i_witht.
yaccd-wt_withcd = i_code.
COLLECT yaccd.
ENDIF.
ENDFORM.
* << Fim da inclusão
----------------------------------------------------------------------------------------------------
Modificações efetuadas em REPS /PWS/LZYGLGF2TOP
...
data: begin of itab_empresas occurs 10,
bukrs like skb1-bukrs,
conta like skb1-saknr,
end of itab_empresas.
data: v_input LIKE screen-input,
v_output LIKE screen-output,
v_required LIKE screen-required,
v_invisible LIKE screen-invisible.
data wa_RPY_DYFATC type RPY_DYFATC occurs 0 with header line.
data itab_ctu_params like ctu_params OCCURS 0 WITH HEADER LINE.
* >> Início da inclusão:
TYPES: BEGIN OF acc_int_struc,
type LIKE wtak-witht,
code LIKE wtak-wt_withcd,
base LIKE wtak-wt_bs01,
amnt LIKE wtak-wt_wt01,
hamnt LIKE wtak-wt_hlp01,
hamnta LIKE wtak-wt_hlpa01,
END OF acc_int_struc.
TYPES: acc_int_tab_struc TYPE acc_int_struc OCCURS 1.
TYPES: BEGIN OF wtax_trace_type,
belnr LIKE with_itemx-belnr,
gjahr LIKE with_itemx-gjahr,
bukrs LIKE with_item-bukrs,
buzei LIKE with_item-buzei,
wt_acco LIKE with_item-wt_acco,
witht LIKE with_item-witht,
wt_withcd LIKE with_item-wt_withcd,
text(8) TYPE c,
dmbtr LIKE bseg-dmbtr,
waers LIKE bkpf-waers,
payment TYPE c,
END OF wtax_trace_type.
DATA: i_wtax_trace TYPE STANDARD TABLE OF wtax_trace_type
WITH HEADER LINE,
l_trace_active TYPE c.
INCLUDE inclkons.
* << Fim da inclusão