Módulo: DOC. IMPORTAÇÃO
Funcionalidade: Prestação de Contas
Data/Hora da Publicação: 02/06/2009 00:00:00
Data/Hora Última Alteração: 23/02/2011 09:33:57
Descrição da Nota: VERIFICAÇÃO AMPLIADA
Sintoma
Verificação ampliada
Solução
Verificação ampliada
7.0
Produto:
Nota
Descrição
Informações Complementares
----------------------------------------------------------------------------------------------------
Nota Número 08484 Data: 02/06/2009 Hora: 14:42:22
----------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------
Nota Número : 08484
Categoria : Melhoria
Prioridade : Baixa
Versão PW.CE : 7.0
Pacote : 00009
Agrupamento : 00102
----------------------------------------------------------------------------------------------------
Referência às notas relacionadas:
Número - Ordem - Versão - Pacote - Descrição Breve
02278 - 00001 - 6.0 - 00025 - AO CONSULTAR PRESTAÇÃO DE CONTAS NÃO APARECE NENHUMA DESPESA.
03103 - 00002 - 6.0 - 00026 - PRESTAÇÃO DE CONTAS
04089 - 00003 - 7.0 - 00002 - LANÇA BASE DE CALCULO DE IMPOSTO NO BATCH INPUT MAS NÃO CALCULA O
06128 - 00004 - 7.0 - 00004 - TRATAMENTO DAS MENSAGENS DE ESTORNO DA PRESTAÇÃO DE CONTAS
07812 - 00005 - 7.0 - 00008 - UTILIZA TIPO DE CONTA INCORRETO NO BATCH INPUT DA F-51
----------------------------------------------------------------------------------------------------
VERIFICAÇÃO AMPLIADA
----------------------------------------------------------------------------------------------------
Palavras Chave:
VERIFICAÇÃO - AMPLIADA - PRESTAÇÃO - CONTAS
/PWS/SAPMZYCI007
----------------------------------------------------------------------------------------------------
Objetos da nota:
REPS /PWS/MZYCI007F01
REPS /PWS/MZYCI007F02
----------------------------------------------------------------------------------------------------
Modificações efetuadas em REPS /PWS/MZYCI007F01
...
frggrs = /pws/zyglt343-frggrs
frggrt = /pws/zyglt343-frggrt
frggrqa = /pws/zyglt343-frggrqa
frggrqi = /pws/zyglt343-frggrqi
TABLES
t_contas = t_contas
EXCEPTIONS
estrategia_invalida = 1
parametros_invalidos = 2
OTHERS = 3.
* >> Início da inclusão: FORM ATUALIZA_TELA
IF sy-subrc NE 0.
CLEAR: /pws/zyglt340.
ENDIF.
* << Fim da inclusão
ENDIF.
IF e_subrc NE 0.
IF e_subrc EQ 1.
MESSAGE i110.
v_exit = 'X'.
ELSEIF e_subrc EQ 2.
MESSAGE i015 WITH text-094.
v_exit = 'X'.
ENDIF.
EXIT.
...
...
* >> Início da exclusão: FORM SELECIONA_DOCUMENTO
FORM seleciona_documento.
DATA: v_nradto2 LIKE /pws/zycie008-nradto VALUE space.
CLEAR: v_campo, v_valor.
v_status = '0'.
GET CURSOR FIELD v_campo VALUE v_valor.
IF v_campo EQ '/PWS/ZYCIE008-NRADTO'.
CLEAR: v_nradto, v_nradto2.
MOVE: v_valor TO v_nradto2.
READ TABLE it_tab_aux WITH KEY nradto = v_nradto2.
IF NOT it_tab_aux-dtincl IS INITIAL AND
NOT it_tab_aux-vlmi IS INITIAL AND
NOT it_tab_aux-dtvencto IS INITIAL.
MOVE: it_tab_aux-embarca TO /pws/zycie008-embarca,
it_tab_aux-nrseq TO /pws/zycie008-nrseq,
it_tab_aux-nradto TO /pws/zycie008-nradto,
it_tab_aux-dtincl TO /pws/zycie008-dtincl,
it_tab_aux-dtvencto TO /pws/zycie008-dtvencto,
it_tab_aux-werks TO /pws/zycie008-werks,
it_tab_aux-bukrs TO /pws/zycie008-bukrs,
it_tab_aux-vlmi TO /pws/zycie008-vlmi.
PERFORM exibe_dados.
tc2-top_line = 1.
CALL SCREEN '0300'.
ENDIF.
ELSE.
MESSAGE s015 WITH text-002.
ENDIF.
CLEAR ok_code.
ENDFORM.
FORM seleciona_dados.
PERFORM select_tables.
PERFORM preenche_tc2.
ENDFORM.
* << Fim da exclusão
...
...
* >> Início da exclusão: FORM EXIBE_DADOS
FORM exibe_dados.
PERFORM preenche_tc2.
ENDFORM.
* << Fim da exclusão
...
...
* >> Início da exclusão: FORM DELETA_ITEM
FORM deleta_item.
LOOP AT it_zycit027_aux WHERE mark = 'X'.
DELETE it_zycit027_aux INDEX sy-tabix.
DELETE FROM /pws/zycit027
WHERE nrseq EQ /pws/zycie026-nrseq
AND nradto EQ /pws/zycie026-nradto
AND tpdesp EQ it_zycit027_aux-tpdesp.
CLEAR: it_zycit027_aux, ok_code.
ENDLOOP.
PERFORM atualiza_tela.
IF sy-subrc EQ 0.
MESSAGE i015 WITH text-007.
ENDIF.
ENDFORM.
* << Fim da exclusão
...
...
FORM acessa_documento.
GET CURSOR FIELD v_campo VALUE v_valor.
IF v_campo EQ '/PWS/ZYCIE026-DOCFAT' OR v_campo EQ
'/PWS/ZYCIE026-DOCOMP'.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
input = v_valor
IMPORTING
* >> Início da exclusão: FORM ACESSA_DOCUMENTO
output = i_belnr
EXCEPTIONS
OTHERS = 1.
* << Fim da exclusão
* >> Início da inclusão: FORM ACESSA_DOCUMENTO
output = i_belnr.
* << Fim da inclusão
SELECT SINGLE dtaprov FROM /pws/zycit026
INTO wa_dtaprova
WHERE nrseq = /pws/zycie026-nrseq
AND nradto = /pws/zycie026-nradto
AND nrpres = /pws/zycie026-nrpres.
i_gjahr = wa_dtaprova.
IF sy-subrc EQ 0.
CALL FUNCTION '/PWS/ZYGL_OBTEM_ANO_CONTABIL'
EXPORTING
v_bukrs = /pws/zycie026-bukrs
...
...
IMPORTING
v_year = v_ano
EXCEPTIONS
variante_de_exercicio = 1
data_nao_encontrada = 2
empresa_nao_encontrada = 3
period_in_not_valid = 4
period_not_assigned = 5
version_undefined = 6
OTHERS = 7.
* >> Início da inclusão: FORM ACESSA_DOCUMENTO
IF sy-subrc NE 0.
CLEAR: v_ano.
ENDIF.
* << Fim da inclusão
SET PARAMETER ID 'BUK' FIELD /pws/zycie026-bukrs.
SET PARAMETER ID 'BLN' FIELD i_belnr.
SET PARAMETER ID 'GJR' FIELD v_ano.
SELECT SINGLE belnr FROM bkpf INTO vaux_belnr
WHERE bukrs = /pws/zycie026-bukrs
AND belnr = i_belnr
AND gjahr = v_ano.
AUTHORITY-CHECK OBJECT 'S_TCODE'
ID 'TCD' FIELD 'FB03'.
IF sy-subrc EQ 0.
...
...
* >> Início da exclusão: FORM TRANSACAO_FBV0_APROVA
FORM transacao_fbv0_aprova.
CHECK /pws/zycie026-totdep NE 0.
READ TABLE it_zycbt133 WITH KEY bukrs = text-022
codmod = text-009
vaprov = text-024.
IF sy-subrc = 0.
it_zycbe033-tcode = text-029.
it_zycbe033-tabela = text-012.
it_zycbe033-bldat = sy-datlo.
PERFORM verify_null_field USING /pws/zycie026-bukrs
'BUKRS'
text-023.
it_zycbe033-bukrs = /pws/zycie026-bukrs.
PERFORM verify_null_field USING /pws/zycie026-docfat
'DOCFAT'
text-025.
it_zycbe033-belnr = /pws/zycie026-docfat.
it_zycbe033-gjahs = sy-datlo+0(4).
it_zycbe033-cpochv = /pws/zycie026-nrseq.
APPEND it_zycbe033.
PERFORM call_fbv0.
ENDIF.
PERFORM limpa_tabela_transacao.
ENDFORM.
* << Fim da exclusão
...
...
* >> Início da exclusão: FORM CALL_TRANSACTION_F51
FORM call_transaction_f51.
ENDFORM.
* << Fim da exclusão
...
...
* >> Início da exclusão: FORM SELECIONA_DOCFATURA_F43
FORM seleciona_docfatura_f43.
ENDFORM.
FORM call_fbv0.
LOOP AT it_zycbt034.
CONCATENATE it_zycbt034-descricao '(Embarque/Adiantamento:'
it_zycbt034-conteudo ')' INTO v_descricao.
MESSAGE i016 WITH v_descricao.
ENDLOOP.
IF it_zycbt034 IS INITIAL.
IF sy-subrc EQ 0.
PERFORM atualiza_fbv0.
ELSE.
LOOP AT it_zycbt034.
CONCATENATE it_zycbt034-descricao '(Embarque/Adiantamento:'
it_zycbt034-conteudo ')' INTO v_descricao.
MESSAGE i016 WITH v_descricao.
ENDLOOP.
ENDIF.
ELSE.
LOOP AT it_zycbt034.
CONCATENATE it_zycbt034-descricao '(Embarque/Adiantamento:'
it_zycbt034-conteudo ')' INTO v_descricao.
MESSAGE i016 WITH v_descricao.
ENDLOOP.
ENDIF.
CLEAR v_belnr.
ENDFORM.
FORM atualiza_fbv0.
READ TABLE it_zycbt032 WITH KEY tcode = text-026
tabela = text-012
cpochv = /pws/zycie026-nrseq
tpmsg = 'S'.
IF sy-subrc EQ 0.
v_belnr = /pws/zycie026-docfat.
SELECT SINGLE belnr FROM bkpf INTO vaux_belnr
WHERE bukrs EQ /pws/zycie026-bukrs
AND belnr EQ v_belnr
AND gjahr EQ sy-datlo+0(4)
AND bstat EQ 'V'.
IF sy-subrc EQ 0.
EXIT.
ENDIF.
MESSAGE i057 WITH /pws/zycie026-docfat.
v_fbv0_a = 'S'.
IF /pws/zycie026-nradto IS INITIAL.
/pws/zycie026-status = 'A'.
MODIFY /pws/zycit026 FROM /pws/zycie026.
ENDIF.
COMMIT WORK.
ELSE.
LOOP AT it_zycbt032.
MESSAGE i015 WITH it_zycbt032-msg+0(50)
it_zycbt032-msg+50(50).
ENDLOOP.
ENDIF.
ENDFORM.
* << Fim da exclusão
...
...
titel = text-032
IMPORTING
answer = v_modo_bi
TABLES
t_spopli = itab_modo
EXCEPTIONS
not_enough_answers = 1
too_much_answers = 2
too_much_marks = 3
OTHERS = 4.
* >> Início da inclusão: FORM MODO_BATCH_INPUT
IF sy-subrc NE 0.
REFRESH: itab_modo.
ENDIF.
* << Fim da inclusão
IF v_modo_bi EQ '3'.
v_modo_bi = 'A'.
ELSEIF v_modo_bi EQ '2'.
v_modo_bi = 'E'.
ELSEIF v_modo_bi EQ '1'.
v_modo_bi = 'N'.
ENDIF.
ENDFORM.
...
----------------------------------------------------------------------------------------------------
Modificações efetuadas em REPS /PWS/MZYCI007F02
...
* >> Início da exclusão: FORM REVERSE_DOCUMENT_FBV0
FORM reverse_document_fbv0.
DATA: v_belnr LIKE /pws/zycbe031-belnr_p.
DATA: v_nradto1 LIKE bseg-sgtxt.
DATA: v_sgtxt LIKE bseg-sgtxt,
v_zuonr LIKE bseg-zuonr,
v_xblnr LIKE bkpf-xblnr,
v_bktxt LIKE bkpf-bktxt.
CHECK NOT /pws/zycie026-docfat IS INITIAL.
PERFORM clear_date_batch.
v_belnr = /pws/zycie026-docfat.
it_zycbe033-mandt = sy-mandt.
it_zycbe033-tcode = 'FBV0'.
it_zycbe033-tabela = text-012.
it_zycbe033-cpochv = /pws/zycie026-nrseq.
it_zycbe033-belnr = /pws/zycie026-docfat.
it_zycbe033-bukrs = /pws/zycie026-bukrs.
it_zycbe033-bldat = /pws/zycie026-dtaprov.
it_zycbe033-budat = /pws/zycie026-dtlanc.
it_zycbe033-bktxt = /pws/zycbt007-bktxt.
LOOP AT it_zycbt035.
CLEAR: v_nradto1, v_zuonr, v_xblnr, v_nradto1.
CALL FUNCTION '/PWS/ZYCI_TEXTOS_CONTABEIS'
EXPORTING
v_nrseq = /pws/zycie026-nrseq
v_codeven = '010P'
v_ktosl = it_zycbt035-ktosl
v_nfserv = /pws/zycie026-nfserv
v_nrpres = /pws/zycie026-nrpres
IMPORTING
v_zuonr = v_zuonr
v_xblnr = v_xblnr
v_sgtxt = v_nradto1.
it_zycbt035-d_xblnr = it_zycbt035-c_xblnr = /pws/zycie026-refpres.
it_zycbt035-d_zuonr = it_zycbt035-c_zuonr = v_zuonr.
it_zycbt035-d_sgtxt = it_zycbt035-c_sgtxt = v_nradto1.
MODIFY it_zycbt035.
ENDLOOP.
CLEAR: v_nradto1, v_zuonr, v_xblnr, v_sgtxt, v_bktxt .
CALL FUNCTION '/PWS/ZYCI_TEXTOS_CONTABEIS'
EXPORTING
v_nrseq = /pws/zycie026-nrseq
v_codeven = '010P'
v_nfserv = /pws/zycie026-nfserv
v_nrpres = /pws/zycie026-nrpres
IMPORTING
v_xblnr = v_xblnr
v_zuonr = v_zuonr
v_sgtxt = v_sgtxt
v_bktxt = v_bktxt.
it_zycbe033-d_zuonr = it_zycbe033-c_zuonr = v_zuonr.
it_zycbe033-d_sgtxt = it_zycbe033-c_sgtxt = v_sgtxt.
it_zycbe033-bktxt = v_bktxt.
it_zycbe033-xblnr = /pws/zycie026-refpres.
APPEND it_zycbe033.
IF sy-subrc = 0.
READ TABLE it_zycbt032 WITH KEY tcode = 'FBV0'
tabela = text-012
cpochv = /pws/zycie026-nrseq
tpmsg = 'S'.
IF sy-subrc EQ 0.
MESSAGE i060 WITH v_belnr.
CLEAR: /pws/zycie026-docfat, /pws/zycie026-dtaprov.
MODIFY /pws/zycit026 FROM /pws/zycie026.
COMMIT WORK .
ELSE.
LOOP AT it_zycbt032.
MESSAGE i015 WITH it_zycbt032-msg.
ENDLOOP.
PERFORM verifica_estorno_r3 USING v_answer.
IF v_answer = 'J'.
CLEAR: /pws/zycie026-docfat, /pws/zycie026-dtaprov,
/pws/zycie026-status.
MODIFY /pws/zycit026 FROM /pws/zycie026.
COMMIT WORK.
ENDIF.
ENDIF.
ELSE.
LOOP AT it_zycbt034.
MESSAGE i016 WITH it_zycbt034-descricao.
ENDLOOP.
PERFORM verifica_estorno_r3 USING v_answer.
IF v_answer = 'J'.
CLEAR: /pws/zycie026-docfat, /pws/zycie026-dtaprov.
MODIFY /pws/zycit026 FROM /pws/zycie026.
COMMIT WORK.
ENDIF.
ENDIF.
ENDFORM.
* << Fim da exclusão
...
...
FORM popup_message USING p_textline1
p_titel.
CALL FUNCTION 'POPUP_TO_CONFIRM_STEP'
EXPORTING
defaultoption = 'N'
textline1 = p_textline1
titel = p_titel
IMPORTING
* >> Início da exclusão: FORM POPUP_MESSAGE
answer = v_answer
EXCEPTIONS
OTHERS = 1.
* << Fim da exclusão
* >> Início da inclusão: FORM POPUP_MESSAGE
answer = v_answer.
* << Fim da inclusão
ENDFORM.
* >> Início da exclusão: FORM GRAVAR_CUSTOS
FORM gravar_custos.
DATA: v_lines TYPE i,
v_index LIKE sy-tabix,
v_valor_real LIKE /pws/zycie036-vlreal,
v_fretei_tot LIKE itab_despesa_custo-vldp,
v_tot_fre LIKE itab_despesa_custo-vldp,
v_cod_sisc LIKE /pws/zycit019-codigo,
v_real LIKE /pws/zycit003-vlreal,
v_tot_real LIKE /pws/zycit003-vlreal.
CLEAR : v_tot_ii, v_tot_ipi, v_tot_icms.
SELECT SINGLE * FROM j_1bbranch
WHERE bukrs = /pws/zycie026-bukrs
AND branch = /pws/zycie026-j_1bbranch.
SELECT SINGLE * FROM adrc WHERE addrnumber = j_1bbranch-adrnr.
SELECT SINGLE * FROM /pws/zycbt007 WHERE bukrs = /pws/zycie026-bukrs.
SELECT SINGLE land1
FROM t001
INTO t001-land1
WHERE bukrs = /pws/zycie026-bukrs.
SELECT * FROM /pws/zycit019
INTO TABLE it_despesa
WHERE regio EQ adrc-region AND
land1 EQ t001-land1.
IF sy-subrc NE 0.
SELECT * FROM /pws/zycit019
INTO TABLE it_despesa
WHERE regio EQ space AND
land1 EQ t001-land1.
ENDIF.
FREE it_zycit027_aux2.
LOOP AT it_zycit027_aux.
MOVE-CORRESPONDING it_zycit027_aux TO it_zycit027_aux2.
CLEAR it_despesa.
READ TABLE it_despesa WITH KEY tpdesp = it_zycit027_aux-tpdesp.
IF sy-subrc EQ 0 AND it_zycit027_aux-vldp NE 0.
MOVE it_despesa-codigo TO it_zycit027_aux2-codigo.
APPEND it_zycit027_aux2.
ENDIF.
ENDLOOP.
FREE itab_despesa_custo.
LOOP AT it_zycit027_aux2.
itab_despesa_custo-codigo = it_zycit027_aux2-codigo.
itab_despesa_custo-vldp = it_zycit027_aux2-vldp.
COLLECT itab_despesa_custo.
ENDLOOP.
SELECT SINGLE * FROM /pws/zycit001 WHERE nrseq = /pws/zycie026-nrseq.
SELECT SINGLE * FROM /pws/zycbt007
WHERE bukrs EQ /pws/zycie026-bukrs.
IF sy-subrc NE 0.
MESSAGE e120.
ENDIF.
IF NOT itab_despesa_custo[] IS INITIAL.
SELECT * FROM /pws/zycit036 INTO TABLE itab_zycit036
FOR ALL ENTRIES IN itab_despesa_custo
WHERE nrseq = /pws/zycie026-nrseq
AND codigo = itab_despesa_custo-codigo.
ENDIF.
SELECT * FROM /pws/zycit039 INTO TABLE itab_zycit039
WHERE codmod EQ 'D' AND
land1 EQ t001-land1.
IF sy-subrc NE 0.
SELECT * FROM /pws/zycit039 INTO TABLE itab_zycit039
WHERE codmod EQ 'D'.
ENDIF.
LOOP AT itab_zycit036 WHERE codigo = 'FRETEI' AND origem = 'PC'.
v_fretei_tot = v_fretei_tot + itab_zycit036-vlreal.
ENDLOOP.
DATA: v_tot LIKE /pws/zycie003-netpr.
CLEAR: v_tot_ntgew, v_tot_real.
LOOP AT it_zycit003.
v_tot = v_tot + ( it_zycit003-netpr * it_zycit003-qtd_iten ).
v_tot_ntgew = v_tot_ntgew + it_zycit003-ntgew.
v_tot_real = v_tot_real +
( it_zycit003-vlreal * it_zycit003-qtd_iten ).
ENDLOOP.
SELECT SINGLE * FROM /pws/zycit000 WHERE land1 EQ t001-land1.
IF sy-subrc NE 0.
SELECT SINGLE * FROM /pws/zycit000.
ENDIF.
SELECT SINGLE codigo FROM /pws/zycit019 INTO v_cod_sisc
WHERE tpdesp = /pws/zycit000-cod_sisc AND
land1 EQ t001-land1. "#EC CI_NOFIRST
LOOP AT itab_despesa_custo.
IF ( itab_despesa_custo-codigo = v_cod_sisc AND
NOT /pws/zycit000-flag_txsisc IS INITIAL AND
/pws/zycit001-tpdecl = 'DI' ) OR
itab_despesa_custo-codigo = 'II' OR
itab_despesa_custo-codigo = 'IPI' OR
itab_despesa_custo-codigo = 'ICMS'.
IF /pws/zycit001-regime = '04'.
SELECT * FROM /pws/zycit443 INTO TABLE itab_zycit443
WHERE nrseq = /pws/zycie026-nrseq. "#EC CI_NOFIRST
IF NOT itab_zycit443[] IS INITIAL.
SELECT * FROM /pws/zycit451 INTO TABLE itab_zycit451
FOR ALL ENTRIES IN itab_zycit443
WHERE nrseqda = itab_zycit443-nrseqda.
ENDIF.
CLEAR: v_tot_ii, v_tot_ipi, v_tot_icms.
LOOP AT itab_zycit443.
v_tot_ii = itab_zycit443-vlii + v_tot_ii.
v_tot_ipi = itab_zycit443-vlipi + v_tot_ipi.
v_tot_icms = itab_zycit443-vlicms + v_tot_icms.
ENDLOOP.
ELSE.
SELECT * FROM /pws/zycit100 INTO TABLE itab_zycit100
WHERE nrseq = /pws/zycie026-nrseq. "#EC CI_NOFIRST
IF NOT itab_zycit100[] IS INITIAL.
SELECT * FROM /pws/zycit116 INTO TABLE itab_zycit116
FOR ALL ENTRIES IN itab_zycit100
WHERE nrseqdi = itab_zycit100-nrseqdi.
ENDIF.
CLEAR: v_tot_ii, v_tot_ipi, v_tot_icms.
LOOP AT itab_zycit100.
v_tot_ii = itab_zycit100-vlii + v_tot_ii.
v_tot_ipi = itab_zycit100-vlipi + v_tot_ipi.
v_tot_icms = itab_zycit100-vlicms + v_tot_icms.
ENDLOOP.
ENDIF.
IF itab_despesa_custo-codigo = v_cod_sisc.
PERFORM rateio_sisco.
ELSEIF itab_despesa_custo-codigo = 'IPI'.
IF /pws/zycit001-regime = '04' AND /pws/zycit001-tpdecl = 'DI'.
PERFORM rateio_imposto USING v_tot_ipi
itab_zycit443-vlipi.
ELSE.
PERFORM rateio_imposto USING v_tot_ipi
itab_zycit100-vlipi.
ENDIF.
ELSEIF itab_despesa_custo-codigo = 'ICMS'.
IF /pws/zycit001-regime = '04' AND /pws/zycit001-tpdecl = 'DI'.
PERFORM rateio_imposto USING v_tot_icms
itab_zycit443-vlicms.
ELSE.
PERFORM rateio_imposto USING v_tot_icms
itab_zycit100-vlicms.
ENDIF.
ELSEIF itab_despesa_custo-codigo = 'II'.
IF /pws/zycit001-regime = '04' AND /pws/zycit001-tpdecl = 'DI'.
PERFORM rateio_imposto USING v_tot_ii
itab_zycit443-vlii.
ELSE.
PERFORM rateio_imposto USING v_tot_ii
itab_zycit100-vlii.
ENDIF.
ENDIF.
ELSE.
DESCRIBE TABLE it_zycit003 LINES v_lines.
CLEAR itab_zycit039.
READ TABLE itab_zycit039 WITH KEY
codigo = itab_despesa_custo-codigo.
CLEAR v_tot_vldp.
LOOP AT it_zycit003.
v_index = sy-tabix.
READ TABLE itab_zycit036 WITH KEY
nrseq = it_zycit003-nrseq
ebeln = it_zycit003-ebeln
ebelp = it_zycit003-ebelp
codigo = itab_despesa_custo-codigo
origem = 'PC'.
IF sy-subrc NE 0.
/pws/zycie036-nrseq = it_zycit003-nrseq.
/pws/zycie036-ebeln = it_zycit003-ebeln.
/pws/zycie036-ebelp = it_zycit003-ebelp.
/pws/zycie036-codigo = itab_despesa_custo-codigo.
/pws/zycie036-waers_real = /pws/zycbt007-waersb.
/pws/zycie036-bukrs = /pws/zycie026-bukrs.
/pws/zycie036-werks = /pws/zycie026-werks.
/pws/zycie036-embarca = /pws/zycie026-embarca.
/pws/zycie036-origem = 'PC'.
/pws/zycie036-codmod = 'D'.
/pws/zycie036-status = 'M'.
/pws/zycie036-vlreal_emb = itab_despesa_custo-vldp.
/pws/zycie036-waers_emb = /pws/zycbt007-waersb.
/pws/zycie036-nrseqori = /pws/zycie026-nrpres.
/pws/zycie036-usernamec = sy-uname.
/pws/zycie036-dtuserc = sy-datlo.
/pws/zycie036-hruserc = sy-uzeit.
CLEAR: /pws/zycie036-vlmov.
v_plan = it_zycit003-netpr * it_zycit003-qtd_iten.
v_real = it_zycit003-vlreal * it_zycit003-qtd_iten.
IF v_lines = v_index.
/pws/zycie036-vlreal = itab_despesa_custo-vldp - v_tot_vldp.
ELSE.
IF itab_zycit039-divabs EQ 'X'.
/pws/zycie036-vlreal = itab_despesa_custo-vldp / v_lines.
ELSEIF itab_zycit039-peso = 'X'.
/pws/zycie036-vlreal = itab_despesa_custo-vldp *
it_zycit003-ntgew / v_tot_ntgew.
ELSEIF itab_zycit039-proporplan = 'X'.
/pws/zycie036-vlreal = ( v_plan / v_tot ) *
itab_despesa_custo-vldp.
ELSE.
/pws/zycie036-vlreal = ( v_real / v_tot_real ) *
itab_despesa_custo-vldp.
ENDIF.
v_tot_vldp = v_tot_vldp + /pws/zycie036-vlreal.
ENDIF.
MODIFY /pws/zycit036 FROM /pws/zycie036.
/pws/zycit001-status_e = 'A'.
MODIFY /pws/zycit001 FROM /pws/zycit001.
ELSE.
MOVE itab_zycit036 TO /pws/zycie036.
/pws/zycie036-vlreal_emb = itab_despesa_custo-vldp +
/pws/zycie036-vlreal_emb.
/pws/zycie036-waers_emb = /pws/zycbt007-waersb.
/pws/zycie036-waers_real = /pws/zycbt007-waersb.
IF /pws/zycie036-codigo = 'FRETEI'.
IF itab_zycit036-vlreal <= 0.
CLEAR: /pws/zycie036-vlmov.
v_plan = it_zycit003-netpr * it_zycit003-qtd_iten.
IF v_lines = v_index.
v_valor_real = itab_despesa_custo-vldp - v_tot_vldp.
/pws/zycie036-vlreal = v_valor_real +
/pws/zycie036-vlreal.
ELSE.
IF itab_zycit039-divabs EQ 'X'.
v_valor_real = itab_despesa_custo-vldp / v_lines.
/pws/zycie036-vlreal = v_valor_real +
/pws/zycie036-vlreal.
ELSEIF itab_zycit039-peso = 'X'.
v_valor_real = itab_despesa_custo-vldp *
it_zycit003-ntgew / v_tot_ntgew.
/pws/zycie036-vlreal = v_valor_real +
/pws/zycie036-vlreal.
ELSEIF itab_zycit039-proporplan = 'X'.
v_valor_real = ( v_plan / v_tot ) *
itab_despesa_custo-vldp.
/pws/zycie036-vlreal = v_valor_real + v_valor_real.
ELSE.
v_valor_real = ( v_real / v_tot_real ) *
itab_despesa_custo-vldp.
/pws/zycie036-vlreal = v_valor_real + v_valor_real.
ENDIF.
v_tot_vldp = v_tot_vldp + /pws/zycie036-vlreal.
ENDIF.
ELSE.
IF v_lines = v_index.
v_valor_real = itab_despesa_custo-vldp - v_tot_fre.
/pws/zycie036-vlreal = v_valor_real +
/pws/zycie036-vlreal.
/pws/zycie036-vlreal_emb = itab_despesa_custo-vldp +
/pws/zycie036-vlreal_emb.
ELSE.
IF itab_zycit039-divabs EQ 'X'.
v_valor_real = itab_despesa_custo-vldp / v_lines.
/pws/zycie036-vlreal = v_valor_real +
/pws/zycie036-vlreal.
ELSEIF itab_zycit039-peso = 'X'.
v_valor_real = itab_despesa_custo-vldp *
it_zycit003-ntgew / v_tot_ntgew.
/pws/zycie036-vlreal = v_valor_real +
/pws/zycie036-vlreal.
ELSE.
v_valor_real = itab_despesa_custo-vldp *
( itab_zycit036-vlreal / v_fretei_tot ).
/pws/zycie036-vlreal = v_valor_real + v_valor_real.
ENDIF.
v_tot_fre = v_tot_fre + v_valor_real.
ENDIF.
ENDIF.
ELSE.
IF v_lines = v_index.
v_valor_real = itab_despesa_custo-vldp - v_tot_vldp.
/pws/zycie036-vlreal = v_valor_real +
/pws/zycie036-vlreal.
ELSE.
IF itab_zycit039-divabs EQ 'X'.
v_valor_real = itab_despesa_custo-vldp / v_lines.
/pws/zycie036-vlreal = v_valor_real +
/pws/zycie036-vlreal.
ELSEIF itab_zycit039-peso EQ 'X'.
v_valor_real = itab_despesa_custo-vldp *
it_zycit003-ntgew / v_tot_ntgew.
/pws/zycie036-vlreal = v_valor_real +
/pws/zycie036-vlreal.
ELSEIF itab_zycit039-proporplan EQ 'X'.
v_plan = it_zycit003-netpr * it_zycit003-qtd_iten.
v_valor_real = ( v_plan / v_tot ) *
itab_despesa_custo-vldp.
/pws/zycie036-vlreal = v_valor_real +
/pws/zycie036-vlreal.
ELSE.
v_real = it_zycit003-vlreal * it_zycit003-qtd_iten.
v_valor_real = ( v_real / v_tot_real ) *
itab_despesa_custo-vldp.
/pws/zycie036-vlreal = v_valor_real +
/pws/zycie036-vlreal.
ENDIF.
v_tot_vldp = v_tot_vldp + v_valor_real.
ENDIF.
ENDIF.
/pws/zycit001-status_e = 'A'.
MODIFY /pws/zycit001 FROM /pws/zycit001.
MODIFY /pws/zycit036 FROM /pws/zycie036.
ENDIF.
ENDLOOP.
ENDIF.
ENDLOOP.
ENDFORM.
FORM converter_documento.
IF NOT v_belnr IS INITIAL.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
input = v_belnr
IMPORTING
output = v_belnr2
EXCEPTIONS
OTHERS = 1.
ENDIF.
ENDFORM.
* << Fim da exclusão
...
...
CALL FUNCTION 'DEQUEUE_EFLFB1AS'
EXPORTING
mode_lfb1 = 'S'
mandt = sy-mandt
lifnr = p_v_lifnr
bukrs = p_v_bukrs
x_lifnr = ' '
x_bukrs = ' '
_scope = '3'
_synchron = ' '
* >> Início da exclusão: FORM UNLOCK_FORNECEDOR
_collect = ' '
EXCEPTIONS
OTHERS = 1.
* << Fim da exclusão
* >> Início da inclusão: FORM UNLOCK_FORNECEDOR
_collect = ' '.
* << Fim da inclusão
ENDFORM.
...
...
* >> Início da exclusão: FORM ESTORNA_CUSTO
FORM estorna_custo.
DATA: v_qtdi TYPE i,
v_vlrc LIKE /pws/zycie036-vlreal,
v_congelamov,
v_vldp_est LIKE /pws/zycit036-vlreal,
v_tabix LIKE sy-tabix,
v_cod_sisc LIKE /pws/zycit019-codigo,
v_tot_real LIKE /pws/zycit003-vlreal,
v_idx_imp LIKE sy-tabix ,
v_idx2_imp LIKE sy-tabix ,
v_tot_imp LIKE /pws/zycit049-vldp ,
v_dif_imp LIKE /pws/zycit049-vldp .
CLEAR : v_tot_ii ,
v_tot_ipi ,
v_tot_icms ,
v_sisco_dif ,
v_sisco_acum.
REFRESH: itab_zycit039, it_zycit003, itab_zycit036.
SELECT SINGLE * FROM /pws/zycit001 WHERE nrseq = /pws/zycie026-nrseq.
SELECT SINGLE land1
FROM t001
INTO t001-land1
WHERE bukrs = /pws/zycie026-bukrs.
SELECT * FROM /pws/zycit039 INTO TABLE itab_zycit039
WHERE codmod EQ 'D' AND
land1 EQ t001-land1.
IF sy-subrc NE 0.
SELECT * FROM /pws/zycit039 INTO TABLE itab_zycit039
WHERE codmod EQ 'D'.
ENDIF.
SELECT * FROM /pws/zycit003 INTO TABLE it_zycit003 WHERE
nrseq = /pws/zycie026-nrseq
AND servico NE 'X'.
DESCRIBE TABLE it_zycit003 LINES v_qtdi.
SELECT * FROM /pws/zycit019 INTO TABLE it_despesa WHERE
land1 EQ t001-land1. "#EC CI_NOFIRST
IF sy-subrc NE 0.
SELECT * FROM /pws/zycit019 INTO TABLE it_despesa. "#EC CI_NOWHERE
ENDIF.
FREE: it_zycit027_aux2.
LOOP AT it_zycit027_aux.
MOVE-CORRESPONDING it_zycit027_aux TO it_zycit027_aux2.
CLEAR it_despesa.
READ TABLE it_despesa WITH KEY tpdesp = it_zycit027_aux-tpdesp.
IF sy-subrc EQ 0 AND it_zycit027_aux-vldp NE 0.
MOVE it_despesa-codigo TO it_zycit027_aux2-codigo.
APPEND it_zycit027_aux2.
ENDIF.
ENDLOOP.
FREE itab_despesa_custo.
LOOP AT it_zycit027_aux2.
itab_despesa_custo-codigo = it_zycit027_aux2-codigo.
itab_despesa_custo-vldp = it_zycit027_aux2-vldp.
COLLECT itab_despesa_custo.
ENDLOOP.
IF NOT itab_despesa_custo[] IS INITIAL.
SELECT * FROM /pws/zycit036 INTO TABLE itab_zycit036
FOR ALL ENTRIES IN itab_despesa_custo
WHERE nrseq = /pws/zycie026-nrseq AND
origem = 'PC' AND
codigo = itab_despesa_custo-codigo.
ENDIF.
SELECT SINGLE * FROM /pws/zycit000 WHERE land1 EQ t001-land1.
IF sy-subrc NE 0.
SELECT SINGLE * FROM /pws/zycit000.
ENDIF.
SELECT SINGLE codigo FROM /pws/zycit019 INTO v_cod_sisc
WHERE tpdesp = /pws/zycit000-cod_sisc AND
land1 EQ t001-land1. "#EC CI_NOFIRST
IF sy-subrc NE 0.
SELECT SINGLE codigo FROM /pws/zycit019 INTO v_cod_sisc
WHERE tpdesp = /pws/zycit000-cod_sisc. "#EC CI_NOFIRST
ENDIF.
DATA: v_tot LIKE /pws/zycie003-netpr.
CLEAR: v_tot_ntgew, v_tot_real.
LOOP AT it_zycit003.
v_tot = v_tot + ( it_zycit003-netpr * it_zycit003-qtd_iten ).
v_tot_ntgew = v_tot_ntgew + it_zycit003-ntgew.
v_tot_real = v_tot_real +
( it_zycit003-vlreal * it_zycit003-qtd_iten ).
ENDLOOP.
DESCRIBE TABLE it_zycit003 LINES v_line.
LOOP AT itab_despesa_custo.
IF ( ( itab_despesa_custo-codigo = v_cod_sisc
AND NOT /pws/zycit000-flag_txsisc IS INITIAL ) OR
itab_despesa_custo-codigo EQ 'IPI' OR
itab_despesa_custo-codigo EQ 'ICMS' OR
itab_despesa_custo-codigo EQ 'II' ) AND
/pws/zycit001-regime NE '04'.
SELECT * FROM /pws/zycit100 INTO TABLE itab_zycit100
WHERE nrseq = /pws/zycie026-nrseq. "#EC CI_NOFIRST
IF NOT itab_zycit100[] IS INITIAL.
SELECT * FROM /pws/zycit116 INTO TABLE itab_zycit116
FOR ALL ENTRIES IN itab_zycit100
WHERE nrseqdi = itab_zycit100-nrseqdi.
ENDIF.
CLEAR: v_tot_ii,
v_tot_ipi,
v_tot_icms.
LOOP AT itab_zycit100.
v_tot_ii = itab_zycit100-vlii + v_tot_ii.
v_tot_ipi = itab_zycit100-vlipi + v_tot_ipi.
v_tot_icms = itab_zycit100-vlicms + v_tot_icms.
ENDLOOP.
LOOP AT itab_zycit116.
LOOP AT itab_zycit100 WHERE adicao = itab_zycit116-adicao.
itab_zycit116-nr_itens = itab_zycit116-nr_itens + 1.
ENDLOOP.
MODIFY itab_zycit116.
ENDLOOP.
IF itab_despesa_custo-codigo EQ v_cod_sisc.
DESCRIBE TABLE itab_zycit116 LINES v_tabix.
v_sisco1 = ( itab_despesa_custo-vldp -
/pws/zycit000-txsis_fix ) / v_tabix.
v_sisco2 = /pws/zycit000-txsis_fix / v_tabix.
v_sisco3 = v_sisco1 + v_sisco2.
LOOP AT itab_zycit116.
CLEAR: v_tabix, v_sisco_tot.
v_sisco_item = v_sisco3 / itab_zycit116-nr_itens.
LOOP AT itab_zycit100 WHERE adicao = itab_zycit116-adicao.
v_tabix = v_tabix + 1.
IF v_tabix = itab_zycit116-nr_itens.
itab_zycit100-vl_sisco = v_sisco3 - v_sisco_tot.
ELSE.
itab_zycit100-vl_sisco = v_sisco_item.
v_sisco_tot = v_sisco_tot + v_sisco_item.
ENDIF.
v_sisco_acum = v_sisco_acum + itab_zycit100-vl_sisco.
MODIFY itab_zycit100.
ENDLOOP.
ENDLOOP.
CLEAR v_tabix.
DESCRIBE TABLE itab_zycit100 LINES v_tabix.
READ TABLE itab_zycit100 INDEX v_tabix.
v_sisco_dif = v_sisco_acum - itab_despesa_custo-vldp.
IF v_sisco_dif NE 0.
itab_zycit100-vl_sisco = itab_zycit100-vl_sisco - v_sisco_dif.
MODIFY itab_zycit100 INDEX v_tabix TRANSPORTING vl_sisco.
ENDIF.
LOOP AT itab_zycit100.
READ TABLE itab_zycit036 WITH KEY nrseq = itab_zycit100-nrseq
ebeln = itab_zycit100-ebeln
ebelp = itab_zycit100-ebelp
codigo = itab_despesa_custo-codigo
origem = 'PC'.
itab_zycit036-vlreal =
itab_zycit036-vlreal - itab_zycit100-vl_sisco.
SELECT SINGLE congelamov FROM /pws/zycit036 INTO v_congelamov
WHERE nrseq = itab_zycit036-nrseq AND
ebeln = itab_zycit036-ebeln AND
ebelp = itab_zycit036-ebelp AND
congelamov = 'X'.
IF itab_zycit036-vlreal IS INITIAL AND v_congelamov NE 'X'.
DELETE FROM /pws/zycit036 WHERE
nrseq = itab_zycit036-nrseq AND
ebeln = itab_zycit036-ebeln AND
ebelp = itab_zycit036-ebelp AND
codigo = itab_zycit036-codigo AND
origem = itab_zycit036-origem.
ELSE.
MODIFY /pws/zycit036 FROM itab_zycit036.
ENDIF.
ENDLOOP.
ELSEIF itab_despesa_custo-codigo EQ 'IPI'.
CLEAR: v_idx_imp,
v_idx2_imp,
v_tot_imp,
v_dif_imp.
DESCRIBE TABLE itab_zycit100 LINES v_idx_imp.
LOOP AT itab_zycit100.
v_idx2_imp = v_idx2_imp + 1.
CLEAR v_tot_vldp.
READ TABLE itab_zycit036 WITH KEY
nrseq = itab_zycit100-nrseq
ebeln = itab_zycit100-ebeln
ebelp = itab_zycit100-ebelp
codigo = itab_despesa_custo-codigo
origem = 'PC'.
IF sy-subrc EQ 0.
v_tot_vldp = itab_despesa_custo-vldp *
( itab_zycit100-vlipi / v_tot_ipi ).
v_tot_imp = v_tot_imp + v_tot_vldp.
IF v_idx_imp EQ v_idx2_imp.
v_dif_imp = v_tot_imp - itab_despesa_custo-vldp.
IF v_dif_imp NE 0.
v_tot_vldp = v_tot_vldp - v_dif_imp.
ENDIF.
ENDIF.
itab_zycit036-vlreal = itab_zycit036-vlreal - v_tot_vldp.
MODIFY itab_zycit036 INDEX sy-tabix.
SELECT SINGLE congelamov FROM /pws/zycit036 INTO
v_congelamov
WHERE nrseq = itab_zycit036-nrseq AND
ebeln = itab_zycit036-ebeln AND
ebelp = itab_zycit036-ebelp AND
congelamov = 'X'.
IF itab_zycit036-vlreal IS INITIAL AND v_congelamov NE 'X'.
DELETE FROM /pws/zycit036 WHERE
nrseq = itab_zycit036-nrseq AND
ebeln = itab_zycit036-ebeln AND
ebelp = itab_zycit036-ebelp AND
codigo = itab_zycit036-codigo AND
origem = itab_zycit036-origem.
ELSE.
MODIFY /pws/zycit036 FROM itab_zycit036.
ENDIF.
ENDIF.
ENDLOOP.
ELSEIF itab_despesa_custo-codigo EQ 'ICMS'.
CLEAR: v_idx_imp,
v_idx2_imp,
v_tot_imp,
v_dif_imp.
DESCRIBE TABLE itab_zycit100 LINES v_idx_imp.
LOOP AT itab_zycit100.
v_idx2_imp = v_idx2_imp + 1.
CLEAR v_tot_vldp.
READ TABLE itab_zycit036 WITH KEY
nrseq = itab_zycit100-nrseq
ebeln = itab_zycit100-ebeln
ebelp = itab_zycit100-ebelp
codigo = itab_despesa_custo-codigo
origem = 'PC'.
IF sy-subrc EQ 0.
v_tot_vldp = itab_despesa_custo-vldp *
( itab_zycit100-vlicms / v_tot_icms ).
v_tot_imp = v_tot_imp + v_tot_vldp.
IF v_idx_imp EQ v_idx2_imp.
v_dif_imp = v_tot_imp - itab_despesa_custo-vldp.
IF v_dif_imp NE 0.
v_tot_vldp = v_tot_vldp - v_dif_imp.
ENDIF.
ENDIF.
itab_zycit036-vlreal = itab_zycit036-vlreal - v_tot_vldp.
MODIFY itab_zycit036 INDEX sy-tabix.
SELECT SINGLE congelamov FROM /pws/zycit036 INTO
v_congelamov
WHERE nrseq = itab_zycit036-nrseq AND
ebeln = itab_zycit036-ebeln AND
ebelp = itab_zycit036-ebelp AND
congelamov = 'X'.
IF itab_zycit036-vlreal IS INITIAL AND v_congelamov NE 'X'.
DELETE FROM /pws/zycit036 WHERE
nrseq = itab_zycit036-nrseq AND
ebeln = itab_zycit036-ebeln AND
ebelp = itab_zycit036-ebelp AND
codigo = itab_zycit036-codigo AND
origem = itab_zycit036-origem.
ELSE.
MODIFY /pws/zycit036 FROM itab_zycit036.
ENDIF.
ENDIF.
ENDLOOP.
ELSEIF itab_despesa_custo-codigo EQ 'II'.
CLEAR: v_idx_imp,
v_idx2_imp,
v_tot_imp,
v_dif_imp.
DESCRIBE TABLE itab_zycit100 LINES v_idx_imp.
LOOP AT itab_zycit100.
v_idx2_imp = v_idx2_imp + 1.
CLEAR v_tot_vldp.
READ TABLE itab_zycit036 WITH KEY
nrseq = itab_zycit100-nrseq
ebeln = itab_zycit100-ebeln
ebelp = itab_zycit100-ebelp
codigo = itab_despesa_custo-codigo
origem = 'PC'.
IF sy-subrc EQ 0.
v_tot_vldp = itab_despesa_custo-vldp *
( itab_zycit100-vlii / v_tot_ii ).
v_tot_imp = v_tot_imp + v_tot_vldp.
IF v_idx_imp EQ v_idx2_imp.
v_dif_imp = v_tot_imp - itab_despesa_custo-vldp.
IF v_dif_imp NE 0.
v_tot_vldp = v_tot_vldp - v_dif_imp.
ENDIF.
ENDIF.
itab_zycit036-vlreal = v_tot_vldp - itab_zycit036-vlreal.
MODIFY itab_zycit036 INDEX sy-tabix.
SELECT SINGLE congelamov FROM /pws/zycit036 INTO
v_congelamov
WHERE nrseq = itab_zycit036-nrseq AND
ebeln = itab_zycit036-ebeln AND
ebelp = itab_zycit036-ebelp AND
congelamov = 'X'.
IF itab_zycit036-vlreal IS INITIAL AND v_congelamov NE 'X'.
DELETE FROM /pws/zycit036 WHERE
nrseq = itab_zycit036-nrseq AND
ebeln = itab_zycit036-ebeln AND
ebelp = itab_zycit036-ebelp AND
codigo = itab_zycit036-codigo AND
origem = itab_zycit036-origem.
ELSE.
MODIFY /pws/zycit036 FROM itab_zycit036.
ENDIF.
ENDIF.
ENDLOOP.
ENDIF.
ELSEIF /pws/zycit001-regime NE '04'.
READ TABLE itab_zycit039 WITH KEY
codigo = itab_despesa_custo-codigo.
CLEAR v_vldp_est.
LOOP AT it_zycit003.
v_tabix = sy-tabix.
READ TABLE itab_zycit036 WITH KEY
nrseq = it_zycit003-nrseq
ebeln = it_zycit003-ebeln
ebelp = it_zycit003-ebelp
codigo = itab_despesa_custo-codigo.
MOVE itab_zycit036 TO /pws/zycie036.
IF v_line = v_tabix.
v_vlrc = itab_despesa_custo-vldp - v_vldp_est.
ELSE.
IF itab_zycit039-divabs EQ 'X'.
v_vlrc = itab_despesa_custo-vldp / v_qtdi.
ELSEIF itab_zycit039-peso EQ 'X'.
v_vlrc = itab_despesa_custo-vldp * it_zycit003-ntgew /
v_tot_ntgew.
ELSEIF itab_zycit039-proporplan EQ 'X'.
v_vlrc = it_zycit003-netpr * it_zycit003-qtd_iten
/ v_tot * itab_despesa_custo-vldp.
ELSE.
v_vlrc = it_zycit003-vlreal * it_zycit003-qtd_iten
/ v_tot_real * itab_despesa_custo-vldp.
ENDIF.
v_vldp_est = v_vldp_est + v_vlrc.
ENDIF.
/pws/zycie036-vlreal = /pws/zycie036-vlreal - v_vlrc.
SELECT SINGLE congelamov FROM /pws/zycit036 INTO v_congelamov
WHERE nrseq = /pws/zycie036-nrseq AND
ebeln = /pws/zycie036-ebeln AND
ebelp = /pws/zycie036-ebelp AND
congelamov = 'X'.
IF /pws/zycie036-vlreal IS INITIAL AND v_congelamov NE 'X'.
DELETE FROM /pws/zycit036 WHERE
nrseq = /pws/zycie036-nrseq AND
ebeln = /pws/zycie036-ebeln AND
ebelp = /pws/zycie036-ebelp AND
codigo = /pws/zycie036-codigo AND
origem = /pws/zycie036-origem.
ELSE.
MODIFY /pws/zycit036 FROM /pws/zycie036.
ENDIF.
ENDLOOP.
ELSE.
READ TABLE itab_zycit039 WITH KEY
codigo = itab_despesa_custo-codigo.
CLEAR v_vldp_est.
LOOP AT it_zycit003.
v_tabix = sy-tabix.
READ TABLE itab_zycit036 WITH KEY
nrseq = it_zycit003-nrseq
ebeln = it_zycit003-ebeln
ebelp = it_zycit003-ebelp
codigo = itab_despesa_custo-codigo.
MOVE itab_zycit036 TO /pws/zycie036.
CLEAR /pws/zycie036-vlreal .
SELECT SINGLE congelamov FROM /pws/zycit036 INTO v_congelamov
WHERE nrseq = /pws/zycie036-nrseq AND
ebeln = /pws/zycie036-ebeln AND
ebelp = /pws/zycie036-ebelp AND
congelamov = 'X'.
IF /pws/zycie036-vlreal IS INITIAL AND v_congelamov NE 'X'.
DELETE FROM /pws/zycit036 WHERE
nrseq = /pws/zycie036-nrseq AND
ebeln = /pws/zycie036-ebeln AND
ebelp = /pws/zycie036-ebelp AND
codigo = /pws/zycie036-codigo AND
origem = /pws/zycie036-origem.
ELSE.
MODIFY /pws/zycit036 FROM /pws/zycie036.
ENDIF.
ENDLOOP.
ENDIF.
ENDLOOP.
ENDFORM.
* << Fim da exclusão
...
...
* >> Início da exclusão: FORM REVERSE_DOCUMENT_FBRA
FORM reverse_document_fbra USING p_v_dtaprov.
ENDFORM.
FORM rateio_imposto USING v_tot
v_unit.
DATA: v_idx_aux LIKE sy-index ,
v_tot_imp LIKE /pws/zycit049-vldp ,
v_idx_imp LIKE sy-tabix ,
v_idx_imp2 LIKE sy-tabix ,
v_dif_imp LIKE /pws/zycit049-vldp.
CLEAR v_tot_vldp.
IF /pws/zycit001-regime = '04' AND /pws/zycit001-tpdecl = 'DI'.
DESCRIBE TABLE itab_zycit443 LINES v_idx_imp.
LOOP AT itab_zycit443.
v_idx_imp2 = v_idx_imp2 + 1.
READ TABLE itab_zycit036 WITH KEY nrseq = itab_zycit443-nrseq
ebeln = itab_zycit443-ebeln
ebelp = itab_zycit443-ebelp
codigo = itab_despesa_custo-codigo
origem = 'PC'.
v_idx_aux = sy-index.
IF sy-subrc NE 0.
/pws/zycie036-nrseq = itab_zycit443-nrseq.
/pws/zycie036-ebeln = itab_zycit443-ebeln.
/pws/zycie036-ebelp = itab_zycit443-ebelp.
/pws/zycie036-codigo = itab_despesa_custo-codigo.
/pws/zycie036-waers_real = /pws/zycbt007-waersb.
/pws/zycie036-bukrs = /pws/zycie026-bukrs.
/pws/zycie036-werks = /pws/zycie026-werks.
/pws/zycie036-embarca = /pws/zycie026-embarca.
/pws/zycie036-origem = 'PC'.
/pws/zycie036-codmod = 'D'.
/pws/zycie036-status = 'M'.
/pws/zycie036-vlreal_emb = itab_despesa_custo-vldp.
/pws/zycie036-waers_emb = /pws/zycbt007-waersb.
/pws/zycie036-vlreal = itab_despesa_custo-vldp *
( v_unit / v_tot ).
v_tot_imp = v_tot_imp + /pws/zycie036-vlreal.
IF v_idx_imp2 EQ v_idx_imp.
v_dif_imp = v_tot_imp - itab_despesa_custo-vldp.
IF v_dif_imp NE 0.
/pws/zycie036-vlreal = /pws/zycie036-vlreal - v_dif_imp.
ENDIF.
ENDIF.
CLEAR: /pws/zycie036-vlmov.
MODIFY /pws/zycit036 FROM /pws/zycie036.
ELSE.
itab_zycit036-vlreal_emb = itab_zycit036-vlreal_emb +
itab_despesa_custo-vldp.
itab_zycit036-vlreal = itab_zycit036-vlreal +
( itab_despesa_custo-vldp * ( v_unit / v_tot ) ).
v_tot_imp = v_tot_imp + /pws/zycie036-vlreal.
IF v_idx_imp2 EQ v_idx_imp.
v_dif_imp = v_tot_imp - itab_despesa_custo-vldp.
IF v_dif_imp NE 0.
/pws/zycie036-vlreal = /pws/zycie036-vlreal - v_dif_imp.
ENDIF.
ENDIF.
MODIFY itab_zycit036 INDEX v_idx_aux.
MODIFY /pws/zycit036 FROM itab_zycit036.
ENDIF.
ENDLOOP.
ELSE.
DESCRIBE TABLE itab_zycit100 LINES v_idx_imp.
LOOP AT itab_zycit100.
v_idx_imp2 = v_idx_imp2 + 1.
READ TABLE itab_zycit036 WITH KEY nrseq = itab_zycit100-nrseq
ebeln = itab_zycit100-ebeln
ebelp = itab_zycit100-ebelp
codigo = itab_despesa_custo-codigo
origem = 'PC'.
v_idx_aux = sy-index.
IF sy-subrc NE 0.
/pws/zycie036-nrseq = itab_zycit100-nrseq.
/pws/zycie036-ebeln = itab_zycit100-ebeln.
/pws/zycie036-ebelp = itab_zycit100-ebelp.
/pws/zycie036-codigo = itab_despesa_custo-codigo.
/pws/zycie036-waers_real = /pws/zycbt007-waersb.
/pws/zycie036-bukrs = /pws/zycie026-bukrs.
/pws/zycie036-werks = /pws/zycie026-werks.
/pws/zycie036-embarca = /pws/zycie026-embarca.
/pws/zycie036-origem = 'PC'.
/pws/zycie036-codmod = 'D'.
/pws/zycie036-status = 'M'.
/pws/zycie036-vlreal_emb = itab_despesa_custo-vldp.
/pws/zycie036-waers_emb = /pws/zycbt007-waersb.
/pws/zycie036-vlreal = itab_despesa_custo-vldp *
( v_unit / v_tot ).
v_tot_imp = v_tot_imp + /pws/zycie036-vlreal.
IF v_idx_imp2 EQ v_idx_imp.
v_dif_imp = v_tot_imp - itab_despesa_custo-vldp.
IF v_dif_imp NE 0.
/pws/zycie036-vlreal = /pws/zycie036-vlreal - v_dif_imp.
ENDIF.
ENDIF.
CLEAR: /pws/zycie036-vlmov.
MODIFY /pws/zycit036 FROM /pws/zycie036.
ELSE.
itab_zycit036-vlreal_emb = itab_zycit036-vlreal_emb +
itab_despesa_custo-vldp.
itab_zycit036-vlreal = itab_zycit036-vlreal +
( itab_despesa_custo-vldp * ( v_unit / v_tot ) ).
v_tot_imp = v_tot_imp + /pws/zycie036-vlreal.
IF v_idx_imp2 EQ v_idx_imp.
v_dif_imp = v_tot_imp - itab_despesa_custo-vldp.
IF v_dif_imp NE 0.
/pws/zycie036-vlreal = /pws/zycie036-vlreal - v_dif_imp.
ENDIF.
ENDIF.
MODIFY itab_zycit036 INDEX v_idx_aux.
MODIFY /pws/zycit036 FROM itab_zycit036.
ENDIF.
ENDLOOP.
ENDIF.
ENDFORM.
FORM rateio_sisco.
DATA: v_idx2 LIKE sy-tabix.
CLEAR: v_sisco_acum,
v_sisco_dif .
IF /pws/zycit001-regime = '04' AND /pws/zycit001-tpdecl = 'DI'.
LOOP AT itab_zycit451.
LOOP AT itab_zycit443 WHERE adicao = itab_zycit451-adicao.
itab_zycit451-nr_itens = itab_zycit451-nr_itens + 1.
ENDLOOP.
MODIFY itab_zycit451.
ENDLOOP.
DESCRIBE TABLE itab_zycit451 LINES v_lines.
v_sisco1 = ( itab_despesa_custo-vldp -
/pws/zycit000-txsis_fix ) / v_lines.
v_sisco2 = /pws/zycit000-txsis_fix / v_lines.
v_sisco3 = v_sisco1 + v_sisco2.
LOOP AT itab_zycit451.
CLEAR: v_lines, v_sisco_tot.
v_sisco_item = v_sisco3 / itab_zycit116-nr_itens.
LOOP AT itab_zycit443 WHERE adicao = itab_zycit451-adicao.
v_lines = v_lines + 1.
IF v_lines = itab_zycit451-nr_itens.
itab_zycit443-vl_sisco = v_sisco3 - v_sisco_tot.
ELSE.
itab_zycit443-vl_sisco = v_sisco_item.
v_sisco_tot = v_sisco_tot + v_sisco_item.
ENDIF.
v_sisco_acum = v_sisco_acum + itab_zycit443-vl_sisco.
MODIFY itab_zycit443.
ENDLOOP.
ENDLOOP.
DESCRIBE TABLE itab_zycit443 LINES v_idx2.
READ TABLE itab_zycit443 INDEX v_idx2.
v_sisco_dif = v_sisco_acum - itab_despesa_custo-vldp.
IF v_sisco_dif NE 0.
itab_zycit443-vl_sisco = itab_zycit443-vl_sisco - v_sisco_dif.
MODIFY itab_zycit443 INDEX v_idx2 TRANSPORTING vl_sisco.
ENDIF.
LOOP AT itab_zycit443.
READ TABLE itab_zycit036 WITH KEY nrseq = itab_zycit443-nrseq
ebeln = itab_zycit443-ebeln
ebelp = itab_zycit443-ebelp
codigo = itab_despesa_custo-codigo
origem = 'PC'.
IF sy-subrc NE 0.
/pws/zycie036-nrseq = itab_zycit443-nrseq.
/pws/zycie036-ebeln = itab_zycit443-ebeln.
/pws/zycie036-ebelp = itab_zycit443-ebelp.
/pws/zycie036-codigo = itab_despesa_custo-codigo.
/pws/zycie036-waers_real = /pws/zycbt007-waersb.
/pws/zycie036-bukrs = /pws/zycie026-bukrs.
/pws/zycie036-werks = /pws/zycie026-werks.
/pws/zycie036-embarca = /pws/zycie026-embarca.
/pws/zycie036-origem = 'PC'.
/pws/zycie036-codmod = 'D'.
/pws/zycie036-status = 'M'.
/pws/zycie036-vlreal_emb = itab_despesa_custo-vldp.
/pws/zycie036-waers_emb = /pws/zycbt007-waersb.
/pws/zycie036-vlreal = itab_zycit443-vl_sisco.
CLEAR: /pws/zycie036-vlmov.
MODIFY /pws/zycit036 FROM /pws/zycie036.
ELSE.
itab_zycit036-vlreal_emb = itab_zycit036-vlreal_emb +
itab_zycit443-vl_sisco.
itab_zycit036-vlreal = itab_zycit036-vlreal +
itab_zycit443-vl_sisco.
MODIFY /pws/zycit036 FROM itab_zycit036.
ENDIF.
ENDLOOP.
ELSE.
LOOP AT itab_zycit116.
LOOP AT itab_zycit100 WHERE adicao = itab_zycit116-adicao.
itab_zycit116-nr_itens = itab_zycit116-nr_itens + 1.
ENDLOOP.
MODIFY itab_zycit116.
ENDLOOP.
DESCRIBE TABLE itab_zycit116 LINES v_lines.
v_sisco1 = ( itab_despesa_custo-vldp -
/pws/zycit000-txsis_fix ) / v_lines.
v_sisco2 = /pws/zycit000-txsis_fix / v_lines.
v_sisco3 = v_sisco1 + v_sisco2.
LOOP AT itab_zycit116.
CLEAR: v_lines, v_sisco_tot.
v_sisco_item = v_sisco3 / itab_zycit116-nr_itens.
LOOP AT itab_zycit100 WHERE adicao = itab_zycit116-adicao.
v_lines = v_lines + 1.
IF v_lines = itab_zycit116-nr_itens.
itab_zycit100-vl_sisco = v_sisco3 - v_sisco_tot.
ELSE.
itab_zycit100-vl_sisco = v_sisco_item.
v_sisco_tot = v_sisco_tot + v_sisco_item.
ENDIF.
v_sisco_acum = v_sisco_acum + itab_zycit100-vl_sisco.
MODIFY itab_zycit100.
ENDLOOP.
ENDLOOP.
DESCRIBE TABLE itab_zycit100 LINES v_idx2.
READ TABLE itab_zycit100 INDEX v_idx2.
v_sisco_dif = v_sisco_acum - itab_despesa_custo-vldp.
IF v_sisco_dif NE 0.
itab_zycit100-vl_sisco = itab_zycit100-vl_sisco - v_sisco_dif.
MODIFY itab_zycit100 INDEX v_idx2 TRANSPORTING vl_sisco.
ENDIF.
LOOP AT itab_zycit100.
READ TABLE itab_zycit036 WITH KEY nrseq = itab_zycit100-nrseq
ebeln = itab_zycit100-ebeln
ebelp = itab_zycit100-ebelp
codigo = itab_despesa_custo-codigo
origem = 'PC'.
IF sy-subrc NE 0.
/pws/zycie036-nrseq = itab_zycit100-nrseq.
/pws/zycie036-ebeln = itab_zycit100-ebeln.
/pws/zycie036-ebelp = itab_zycit100-ebelp.
/pws/zycie036-codigo = itab_despesa_custo-codigo.
/pws/zycie036-waers_real = /pws/zycbt007-waersb.
/pws/zycie036-bukrs = /pws/zycie026-bukrs.
/pws/zycie036-werks = /pws/zycie026-werks.
/pws/zycie036-embarca = /pws/zycie026-embarca.
/pws/zycie036-origem = 'PC'.
/pws/zycie036-codmod = 'D'.
/pws/zycie036-status = 'M'.
/pws/zycie036-vlreal_emb = itab_despesa_custo-vldp.
/pws/zycie036-waers_emb = /pws/zycbt007-waersb.
/pws/zycie036-vlreal = itab_zycit100-vl_sisco.
CLEAR: /pws/zycie036-vlmov.
MODIFY /pws/zycit036 FROM /pws/zycie036.
ELSE.
itab_zycit036-vlreal_emb = itab_zycit036-vlreal_emb +
itab_zycit100-vl_sisco.
itab_zycit036-vlreal = itab_zycit036-vlreal +
itab_zycit100-vl_sisco.
MODIFY /pws/zycit036 FROM itab_zycit036.
ENDIF.
ENDLOOP.
ENDIF.
ENDFORM.
* << Fim da exclusão
...
...
bukrs = p_bukrs
ktosl = p_ktosl
werks = p_werks
bklas = p_bklas
codaux1 = p_codaux1
codaux2 = p_codaux2
codaux3 = p_codaux3
TABLES
account = p_cta
EXCEPTIONS
* >> Início da exclusão: FORM SEEK_ACCOUNT_NUMBER
key_not_found = 1
rules_not_found = 2
OTHERS = 3.
* << Fim da exclusão
* >> Início da inclusão: FORM SEEK_ACCOUNT_NUMBER
key_not_found = 0
rules_not_found = 0
OTHERS = 0.
* << Fim da inclusão
ENDFORM.
...
...
* >> Início da exclusão: FORM EXISTE_PS
FORM existe_ps.
DATA: v_wrbtrps LIKE /pws/zycbe033-wrbtrirrf,
c_taxa_ps TYPE p DECIMALS 1 VALUE '1.5'.
CLEAR: v_wrbtrps, v_valorps, lfbw, it_despesa, t059minmax,
v_flagps, v_qsshh, v_qbshh, v_xqfor.
SELECT SINGLE * FROM j_1bbranch
WHERE bukrs = /pws/zycie026-bukrs
AND branch = /pws/zycie026-j_1bbranch.
SELECT SINGLE * FROM adrc
WHERE addrnumber = j_1bbranch-adrnr.
CLEAR v_catcs.
SELECT SINGLE catsap FROM /pws/zycit212 INTO v_catip
WHERE impdesc = 'PIS'.
REFRESH it_despesa.
SELECT * FROM /pws/zycit019
INTO TABLE it_despesa
WHERE regio EQ adrc-region AND
land1 EQ t001-land1.
IF sy-subrc NE 0.
SELECT * FROM /pws/zycit019
INTO TABLE it_despesa
WHERE regio EQ space AND
land1 EQ t001-land1.
ENDIF.
SELECT SINGLE * FROM lfbw WHERE lifnr = /pws/zycie026-despach
AND bukrs = /pws/zycie026-bukrs
AND witht = v_catip
AND wt_withcd NE space.
IF sy-subrc EQ 0 AND
lfbw-wt_withcd IS INITIAL.
SELECT SINGLE wt_withcd FROM /pws/zycit353 INTO lfbw-wt_withcd
WHERE werks EQ /pws/zycie026-werks
AND witht EQ v_catip.
IF sy-subrc EQ 0.
MOVE 'X' TO lfbw-wt_subjct.
ENDIF.
ENDIF.
IF lfbw-wt_subjct EQ 'X'.
v_impostos ='S'.
ENDIF.
SELECT SINGLE qsatz qproz xqfor
INTO (v_taxa_ps, v_quota_ps, v_xqfor)
FROM t059z
WHERE witht EQ v_catip
AND land1 EQ t001-land1
AND wt_withcd EQ lfbw-wt_withcd.
CLEAR t059minmax.
SELECT SINGLE *
FROM t059minmax
WHERE land1 EQ t001-land1
AND witht EQ v_catip
AND wt_withcd EQ lfbw-wt_withcd
AND waers EQ /pws/zycbt007-waersb.
IF sy-subrc NE 0 AND lfbw-wt_subjct EQ 'X'.
v_ps = 'S'.
LOOP AT it_zycit027_aux.
READ TABLE it_despesa WITH KEY tpdesp = it_zycit027_aux-tpdesp
basepis = 'X'.
IF sy-subrc EQ 0 .
v_wrbtrps = it_zycit027_aux-vldp +
v_wrbtrps.
ENDIF.
ENDLOOP.
v_valorps = ( v_wrbtrps * v_taxa_ps ) / 100.
IF NOT t059minmax-wt_wtmin IS INITIAL.
IF v_valorps GE t059minmax-wt_wtmin.
CLEAR ok_code.
v_flagps = 'X'.
EXIT.
ENDIF.
ENDIF.
CLEAR t059minmax.
SELECT SINGLE *
FROM t059minmax
WHERE land1 EQ t001-land1
AND witht EQ v_catir
AND waers EQ /pws/zycbt007-waersb.
IF NOT t059minmax-wt_wtmin IS INITIAL.
IF v_valorps GE t059minmax-wt_wtmin.
CLEAR ok_code.
v_flagps = 'X'.
EXIT.
ENDIF.
ENDIF.
ELSEIF lfbw-wt_subjct EQ 'X' AND sy-subrc EQ 0.
v_ps = 'S'.
v_impostos ='S'.
SELECT *
FROM t059fb
INTO TABLE itab_t059fb
WHERE land1 EQ 'BR' AND
witht EQ v_catip AND
wt_withcd EQ lfbw-wt_withcd AND
wt_valid <= sy-datlo.
SORT itab_t059fb BY wt_bbasb.
SELECT SINGLE *
FROM t059p
WHERE land1 EQ 'BR' AND
witht EQ v_catip AND
wt_accpt EQ '3'.
IF sy-subrc EQ '0'.
CLEAR: v_mes, v_ano, i, v_data.
MOVE sy-datlo+4(2) TO v_mes.
MOVE sy-datlo(4) TO v_ano.
i = strlen( v_mes ).
IF i = 1.
CONCATENATE v_ano '0' v_mes '01' INTO v_data.
ELSE.
CONCATENATE v_ano v_mes '01' INTO v_data.
ENDIF.
SELECT docfat
FROM /pws/zycit026
INTO TABLE itab_doc
WHERE bukrs EQ /pws/zycie026-bukrs AND
dtlanc >= v_data AND
status EQ 'A'. "#EC CI_NOFIELD
IF NOT itab_doc[] IS INITIAL.
SELECT SINGLE * FROM /pws/zycbt011 INTO wa_zycbt011
WHERE codeven = text-010
AND bukrs EQ /pws/zycie026-bukrs
AND codmod = text-009.
SELECT *
FROM bkpf
INTO TABLE itab_bkpf
FOR ALL ENTRIES IN itab_doc
WHERE bukrs EQ /pws/zycie026-bukrs AND
blart EQ wa_zycbt011-blart AND
tcode EQ 'FB01' AND
stgrd EQ ' ' AND
monat EQ /pws/zycie026-dtlanc+04(02) AND
gjahr EQ /pws/zycie026-dtlanc(04) AND
belnr EQ itab_doc-belnr.
ENDIF.
IF NOT itab_bkpf[] IS INITIAL.
SELECT *
FROM with_item
INTO TABLE itab_with_item
FOR ALL ENTRIES IN itab_bkpf
WHERE bukrs EQ /pws/zycie026-bukrs AND
witht EQ v_catip AND
wt_acco EQ /pws/zycie026-despach AND
wt_withcd EQ lfbw-wt_withcd AND
belnr EQ itab_bkpf-belnr.
ENDIF.
LOOP AT itab_with_item.
v_qsshh = abs( itab_with_item-wt_qsshh ) + v_qsshh.
v_qbshh = abs( itab_with_item-wt_qbshh ) + v_qbshh.
ENDLOOP.
READ TABLE itab_t059fb INDEX 1.
IF v_qsshh < itab_t059fb-wt_bbasb.
LOOP AT it_zycit027_aux.
READ TABLE it_despesa WITH KEY tpdesp = it_zycit027_aux-tpdesp
basepis = 'X'.
IF sy-subrc EQ 0 .
v_wrbtrps = it_zycit027_aux-vldp +
v_wrbtrps.
ENDIF.
ENDLOOP.
v_wrbtrps = v_qsshh + v_wrbtrps.
IF v_wrbtrps > itab_t059fb-wt_bbasb.
READ TABLE itab_t059fb INDEX 2.
v_valorps = ( v_wrbtrps * itab_t059fb-qsatz ) / 100.
ELSE.
CLEAR v_valorps.
ENDIF.
ELSE.
LOOP AT it_zycit027_aux.
READ TABLE it_despesa WITH KEY tpdesp = it_zycit027_aux-tpdesp
basepis = 'X'.
IF sy-subrc EQ 0 .
v_wrbtrps = it_zycit027_aux-vldp +
v_wrbtrps.
ENDIF.
ENDLOOP.
READ TABLE itab_t059fb INDEX 2.
v_valorps = ( v_wrbtrps * itab_t059fb-qsatz ) / 100.
ENDIF.
ELSE.
ENDIF.
ENDIF.
ENDFORM.
FORM existe_cs.
DATA: v_wrbtrcs LIKE /pws/zycbe033-wrbtrirrf,
c_taxa_cs TYPE p DECIMALS 1 VALUE '1.5'.
CLEAR: v_wrbtrcs, v_valorcs, lfbw, it_despesa, t059minmax,
v_flagcs, v_qsshh, v_qbshh, v_xqfor.
SELECT SINGLE * FROM j_1bbranch
WHERE bukrs = /pws/zycie026-bukrs
AND branch = /pws/zycie026-j_1bbranch.
SELECT SINGLE * FROM adrc
WHERE addrnumber = j_1bbranch-adrnr.
CLEAR v_catcs.
SELECT SINGLE catsap FROM /pws/zycit212 INTO v_catcs
WHERE impdesc = 'CSLL'.
REFRESH it_despesa.
SELECT * FROM /pws/zycit019
INTO TABLE it_despesa
WHERE regio EQ adrc-region AND
land1 EQ t001-land1.
IF sy-subrc NE 0.
SELECT * FROM /pws/zycit019
INTO TABLE it_despesa
WHERE regio EQ space AND
land1 EQ space.
ENDIF.
SELECT SINGLE * FROM lfbw WHERE lifnr = /pws/zycie026-despach
AND bukrs = /pws/zycie026-bukrs
AND witht = v_catcs
AND wt_withcd NE space.
IF sy-subrc EQ 0 AND
lfbw-wt_withcd IS INITIAL.
SELECT SINGLE wt_withcd FROM /pws/zycit353 INTO lfbw-wt_withcd
WHERE werks EQ /pws/zycie026-werks
AND witht EQ v_catcs.
IF sy-subrc EQ 0.
MOVE 'X' TO lfbw-wt_subjct.
ENDIF.
ENDIF.
IF lfbw-wt_subjct = 'X'.
v_impostos ='S'.
ENDIF.
SELECT SINGLE qsatz qproz xqfor
INTO (v_taxa_cs, v_quota_cs, v_xqfor)
FROM t059z
WHERE witht EQ v_catcs
AND land1 EQ t001-land1
AND wt_withcd EQ lfbw-wt_withcd.
CLEAR t059minmax.
SELECT SINGLE *
FROM t059minmax
WHERE land1 EQ t001-land1
AND witht EQ v_catcs
AND wt_withcd EQ lfbw-wt_withcd
AND waers EQ /pws/zycbt007-waersb.
IF sy-subrc NE 0 AND lfbw-wt_subjct EQ 'X'.
v_cs = 'S'.
LOOP AT it_zycit027_aux.
READ TABLE it_despesa WITH KEY tpdesp = it_zycit027_aux-tpdesp
basecsll = 'X'.
IF sy-subrc EQ 0 .
v_wrbtrcs = it_zycit027_aux-vldp +
v_wrbtrcs.
ENDIF.
ENDLOOP.
v_valorcs = ( v_wrbtrcs * v_taxa_cs ) / 100.
IF NOT t059minmax-wt_wtmin IS INITIAL.
IF v_valorcs GE t059minmax-wt_wtmin.
CLEAR ok_code.
v_flagcs = 'X'.
EXIT.
ENDIF.
ENDIF.
CLEAR t059minmax.
SELECT SINGLE *
FROM t059minmax
WHERE land1 EQ t001-land1
AND witht EQ v_catcs
AND waers EQ /pws/zycbt007-waersb.
IF NOT t059minmax-wt_wtmin IS INITIAL.
IF v_valorcs GE t059minmax-wt_wtmin.
CLEAR ok_code.
v_flagcs = 'X'.
EXIT.
ENDIF.
ENDIF.
ELSEIF lfbw-wt_subjct EQ 'X' AND sy-subrc EQ 0.
v_cs = 'S'.
v_impostos ='S'.
SELECT *
FROM t059fb
INTO TABLE itab_t059fb
WHERE land1 EQ 'BR' AND
witht EQ v_catcs AND
wt_withcd EQ lfbw-wt_withcd AND
wt_valid <= sy-datlo.
SORT itab_t059fb BY wt_bbasb.
SELECT SINGLE *
FROM t059p
WHERE land1 EQ 'BR' AND
witht EQ v_catcs AND
wt_accpt EQ '3'.
IF sy-subrc EQ '0'.
MOVE sy-datlo+4(2) TO v_mes.
MOVE sy-datlo(4) TO v_ano.
i = strlen( v_mes ).
IF i = 1.
CONCATENATE v_ano '0' v_mes '01' INTO v_data.
ELSE.
CONCATENATE v_ano v_mes '01' INTO v_data.
ENDIF.
SELECT docfat
FROM /pws/zycit026
INTO TABLE itab_doc
WHERE bukrs EQ /pws/zycie026-bukrs AND
dtlanc >= v_data AND
status EQ 'A'. "#EC CI_NOFIELD
IF NOT itab_doc[] IS INITIAL.
SELECT SINGLE * FROM /pws/zycbt011 INTO wa_zycbt011
WHERE codeven = text-010
AND bukrs EQ /pws/zycie026-bukrs
AND codmod = text-009.
SELECT *
FROM bkpf
INTO TABLE itab_bkpf
FOR ALL ENTRIES IN itab_doc
WHERE bukrs EQ /pws/zycie026-bukrs AND
blart EQ wa_zycbt011-blart AND
tcode EQ 'FB01' AND
stgrd EQ ' ' AND
monat EQ /pws/zycie026-dtlanc+04(02) AND
gjahr EQ /pws/zycie026-dtlanc(04) AND
belnr EQ itab_doc-belnr.
ENDIF.
IF NOT itab_bkpf[] IS INITIAL.
SELECT *
FROM with_item
INTO TABLE itab_with_item
FOR ALL ENTRIES IN itab_bkpf
WHERE bukrs EQ /pws/zycie026-bukrs AND
witht EQ v_catcs AND
wt_acco EQ /pws/zycie026-despach AND
wt_withcd EQ lfbw-wt_withcd AND
belnr = itab_bkpf-belnr.
ENDIF.
LOOP AT itab_with_item.
v_qsshh = abs( itab_with_item-wt_qsshh ) + v_qsshh.
v_qbshh = abs( itab_with_item-wt_qbshh ) + v_qbshh.
ENDLOOP.
READ TABLE itab_t059fb INDEX 1.
IF v_qsshh < itab_t059fb-wt_bbasb.
LOOP AT it_zycit027_aux.
READ TABLE it_despesa WITH KEY tpdesp = it_zycit027_aux-tpdesp
basecsll = 'X'.
IF sy-subrc EQ 0 .
v_wrbtrcs = it_zycit027_aux-vldp +
v_wrbtrcs.
ENDIF.
ENDLOOP.
v_wrbtrcs = v_qsshh + v_wrbtrcs.
IF v_wrbtrcs > itab_t059fb-wt_bbasb.
READ TABLE itab_t059fb INDEX 2.
v_valorcs = ( v_wrbtrcs * itab_t059fb-qsatz ) / 100.
ELSE.
CLEAR v_valorcs.
ENDIF.
ELSE.
LOOP AT it_zycit027_aux.
READ TABLE it_despesa WITH KEY tpdesp = it_zycit027_aux-tpdesp
basecsll = 'X'.
IF sy-subrc EQ 0 .
v_wrbtrcs = it_zycit027_aux-vldp +
v_wrbtrcs.
ENDIF.
ENDLOOP.
READ TABLE itab_t059fb INDEX 2.
v_valorcs = ( v_wrbtrcs * itab_t059fb-qsatz ) / 100.
ENDIF.
ELSE.
ENDIF.
ENDIF.
ENDFORM.
FORM existe_cf.
DATA: v_wrbtrcf LIKE /pws/zycbe033-wrbtrirrf,
c_taxa_cf TYPE p DECIMALS 1 VALUE '1.5',
itab_bkpf LIKE bkpf OCCURS 0 WITH HEADER LINE.
CLEAR: v_wrbtrcf, v_valorcf, lfbw, it_despesa, t059minmax,
v_flagcf, v_xqfor, v_qsshh, v_qbshh.
SELECT SINGLE * FROM j_1bbranch
WHERE bukrs = /pws/zycie026-bukrs
AND branch = /pws/zycie026-j_1bbranch.
SELECT SINGLE * FROM adrc
WHERE addrnumber = j_1bbranch-adrnr.
CLEAR v_catcf.
SELECT SINGLE catsap FROM /pws/zycit212 INTO v_catcf
WHERE impdesc = 'COFINS'.
REFRESH it_despesa.
SELECT * FROM /pws/zycit019
INTO TABLE it_despesa
WHERE regio EQ adrc-region AND
land1 EQ t001-land1.
IF sy-subrc NE 0.
SELECT * FROM /pws/zycit019
INTO TABLE it_despesa
WHERE regio EQ space AND
land1 EQ t001-land1.
ENDIF.
SELECT SINGLE * FROM lfbw WHERE lifnr = /pws/zycie026-despach
AND bukrs = /pws/zycie026-bukrs
AND witht = v_catcf
AND wt_withcd NE space.
IF sy-subrc EQ 0 AND lfbw-wt_withcd IS INITIAL.
SELECT SINGLE wt_withcd FROM /pws/zycit353 INTO lfbw-wt_withcd
WHERE werks EQ /pws/zycie026-werks
AND witht EQ v_catcf.
IF sy-subrc EQ 0.
MOVE 'X' TO lfbw-wt_subjct.
ENDIF.
ENDIF.
IF lfbw-wt_subjct EQ 'X'.
v_impostos ='S'.
ENDIF.
SELECT SINGLE qsatz qproz xqfor
INTO (v_taxa_cf, v_quota_cf, v_xqfor)
FROM t059z
WHERE witht EQ v_catcf
AND land1 EQ t001-land1
AND wt_withcd EQ lfbw-wt_withcd.
CLEAR t059minmax.
SELECT SINGLE *
FROM t059minmax
WHERE land1 EQ t001-land1
AND witht EQ v_catcf
AND wt_withcd EQ lfbw-wt_withcd
AND waers EQ /pws/zycbt007-waersb.
IF sy-subrc NE 0 AND lfbw-wt_subjct EQ 'X'.
v_cf = 'S'.
LOOP AT it_zycit027_aux.
READ TABLE it_despesa WITH KEY tpdesp = it_zycit027_aux-tpdesp
basecofins = 'X'.
IF sy-subrc EQ 0 .
v_wrbtrcf = it_zycit027_aux-vldp +
v_wrbtrcf.
ENDIF.
ENDLOOP.
v_valorcf = ( v_wrbtrcf * v_taxa_cf ) / 100.
IF NOT t059minmax-wt_wtmin IS INITIAL.
IF v_valorcf GE t059minmax-wt_wtmin.
CLEAR ok_code.
v_flagcf = 'X'.
EXIT.
ENDIF.
ENDIF.
CLEAR t059minmax.
SELECT SINGLE *
FROM t059minmax
WHERE land1 EQ t001-land1
AND witht EQ v_catcf
AND waers EQ /pws/zycbt007-waersb.
IF NOT t059minmax-wt_wtmin IS INITIAL.
IF v_valorcf GE t059minmax-wt_wtmin.
CLEAR ok_code.
v_flagcf = 'X'.
EXIT.
ENDIF.
ENDIF.
ELSEIF lfbw-wt_subjct EQ 'X' AND sy-subrc EQ 0.
v_cf = 'S'.
v_impostos ='S'.
SELECT *
FROM t059fb
INTO TABLE itab_t059fb
WHERE land1 EQ 'BR' AND
witht EQ v_catcf AND
wt_withcd EQ lfbw-wt_withcd AND
wt_valid <= sy-datlo.
SORT itab_t059fb BY wt_bbasb.
SELECT SINGLE *
FROM t059p
WHERE land1 EQ 'BR' AND
witht EQ v_catcf AND
wt_accpt EQ '3'.
IF sy-subrc EQ '0'.
MOVE sy-datlo+4(2) TO v_mes.
MOVE sy-datlo(4) TO v_ano.
i = strlen( v_mes ).
IF i = 1.
CONCATENATE v_ano '0' v_mes '01' INTO v_data.
ELSE.
CONCATENATE v_ano v_mes '01' INTO v_data.
ENDIF.
SELECT docfat
FROM /pws/zycit026
INTO TABLE itab_doc
WHERE bukrs EQ /pws/zycie026-bukrs AND
dtlanc >= v_data AND
status EQ 'A'. "#EC CI_NOFIELD
IF NOT itab_doc[] IS INITIAL.
SELECT SINGLE * FROM /pws/zycbt011 INTO wa_zycbt011
WHERE codeven = text-010
AND bukrs EQ /pws/zycie026-bukrs
AND codmod = text-009.
SELECT *
FROM bkpf
INTO TABLE itab_bkpf
FOR ALL ENTRIES IN itab_doc
WHERE bukrs EQ /pws/zycie026-bukrs AND
blart EQ wa_zycbt011-blart AND
tcode EQ 'FB01' AND
stgrd EQ ' ' AND
monat EQ /pws/zycie026-dtlanc+04(02) AND
gjahr EQ /pws/zycie026-dtlanc(04) AND
belnr EQ itab_doc-belnr.
ENDIF.
IF NOT itab_bkpf[] IS INITIAL.
SELECT *
FROM with_item
INTO TABLE itab_with_item
FOR ALL ENTRIES IN itab_bkpf
WHERE bukrs EQ /pws/zycie026-bukrs AND
witht EQ v_catcf AND
wt_acco EQ /pws/zycie026-despach AND
wt_withcd EQ lfbw-wt_withcd AND
belnr EQ itab_bkpf-belnr.
ENDIF.
LOOP AT itab_with_item.
v_qsshh = abs( itab_with_item-wt_qsshh ) + v_qsshh.
v_qbshh = abs( itab_with_item-wt_qbshh ) + v_qbshh.
ENDLOOP.
READ TABLE itab_t059fb INDEX 1.
IF v_qsshh < itab_t059fb-wt_bbasb.
LOOP AT it_zycit027_aux.
READ TABLE it_despesa WITH KEY tpdesp = it_zycit027_aux-tpdesp
basecofins = 'X'.
IF sy-subrc EQ 0 .
v_wrbtrcf = it_zycit027_aux-vldp +
v_wrbtrcf.
ENDIF.
ENDLOOP.
v_wrbtrcf = v_qsshh + v_wrbtrcf.
IF v_wrbtrcf > itab_t059fb-wt_bbasb.
READ TABLE itab_t059fb INDEX 2.
v_valorcf = ( v_wrbtrcf * itab_t059fb-qsatz ) / 100.
ELSE.
CLEAR v_valorcf.
ENDIF.
ELSE.
LOOP AT it_zycit027_aux.
READ TABLE it_despesa WITH KEY tpdesp = it_zycit027_aux-tpdesp
basecofins = 'X'.
IF sy-subrc EQ 0 .
v_wrbtrcf = it_zycit027_aux-vldp +
v_wrbtrcf.
ENDIF.
ENDLOOP.
READ TABLE itab_t059fb INDEX 2.
v_valorcf = ( v_wrbtrcf * itab_t059fb-qsatz ) / 100.
ENDIF.
ELSE.
ENDIF.
ENDIF.
ENDFORM.
FORM verifica_centro_l2.
CLEAR: it_zycbe035-d_prctr, it_zycbe035-c_prctr.
IF it_lanca_aux3-knttp IS INITIAL AND it_lanca_aux3-matuse NE '3'.
CLEAR itab_marc. REFRESH itab_marc.
SELECT SINGLE matnr prctr FROM marc INTO itab_marc
WHERE matnr EQ it_ekpo-matnr AND
werks EQ it_ekpo-werks.
IF sy-subrc NE 0.
SELECT SINGLE matnr prctr FROM marc INTO itab_marc
WHERE matnr EQ it_ekpo-matnr.
ENDIF.
it_zycbe035-d_prctr = itab_marc-prctr.
it_zycbe035-c_prctr = itab_marc-prctr.
ELSEIF it_lanca_aux3-knttp = 'K' AND it_lanca_aux3-matuse NE '3'.
CLEAR itab_csks. REFRESH itab_csks.
SELECT SINGLE kostl kokrs prctr FROM csks INTO itab_csks
WHERE kostl EQ itab_ekkn-kostl
AND kokrs EQ itab_ekkn-kokrs.
it_zycbe035-d_prctr = itab_csks-prctr.
it_zycbe035-c_prctr = itab_csks-prctr.
ELSEIF it_lanca_aux3-knttp = 'F' AND it_lanca_aux3-matuse NE '3'.
CLEAR itab_aufk. REFRESH itab_aufk.
SELECT SINGLE aufnr prctr FROM aufk INTO itab_aufk
WHERE aufnr EQ itab_ekkn-aufnr.
it_zycbe035-d_prctr = itab_aufk-prctr.
it_zycbe035-c_prctr = itab_aufk-prctr.
ENDIF.
ENDFORM.
FORM trata_decimais USING p_moeda
CHANGING p_valor.
SELECT SINGLE * FROM tcurx INTO wa_tcurx WHERE currkey = p_moeda.
IF sy-subrc <> 0.
wa_tcurx-currdec = 2.
ENDIF.
p_valor = p_valor * ( 10 ** ( wa_tcurx-currdec - 2 ) ).
ENDFORM.
* << Fim da exclusão
...
...
CLEAR itab_zyglt100.
REFRESH itab_zyglt100.
CALL FUNCTION '/PWS/ZYGL_BUSCA_EXIT_CLIENTE'
EXPORTING
i_codmod = p_modulo
i_func = p_func
i_zexit = p_exit
TABLES
itab_zyglt100 = itab_zyglt100
EXCEPTIONS
* >> Início da exclusão: FORM VERIFICA_EXIT
i_codmod_nao_encontrado = 1
i_func_nao_encontrado = 2
i_zexit_nao_encontrado = 3
OTHERS = 4.
* << Fim da exclusão
* >> Início da inclusão: FORM VERIFICA_EXIT
i_codmod_nao_encontrado = 0
i_func_nao_encontrado = 0
i_zexit_nao_encontrado = 0
OTHERS = 0.
* << Fim da inclusão
ENDFORM.
...
...
* >> Início da exclusão: FORM EXISTE_IS
FORM existe_is.
CLEAR v_catis.
SELECT SINGLE catsap FROM /pws/zycit212 INTO v_catis
WHERE impdesc = 'ISS'.
SELECT SINGLE * FROM lfbw WHERE lifnr = /pws/zycie026-despach
AND bukrs = /pws/zycie026-bukrs
AND witht = v_catis
AND wt_withcd NE space.
IF sy-subrc EQ 0 AND
lfbw-wt_withcd IS INITIAL.
SELECT SINGLE wt_withcd FROM /pws/zycit353 INTO lfbw-wt_withcd
WHERE werks EQ /pws/zycie026-werks
AND witht EQ v_catis.
IF sy-subrc EQ 0.
MOVE 'X' TO lfbw-wt_subjct.
ENDIF.
ENDIF.
IF lfbw-wt_subjct EQ 'X' AND v_xqfor EQ ' '.
v_impostos ='S'.
ENDIF.
ENDFORM.
* << Fim da exclusão
...
...
p_werks = /pws/zycie026-werks
p_cod_mod = 'D'
p_okcode = sy-ucomm
p_adto = v_adto
TABLES
itab_despesa = itab_despesa
itab_imposto = itab_imposto
itab_with_item_aux = itab_with_item
itab_bkpf_aux = itab_bkpf
EXCEPTIONS
* >> Início da exclusão: FORM EXISTE_IMPOSTO
centro_em_branco = 1
OTHERS = 2.
* << Fim da exclusão
* >> Início da inclusão: FORM EXISTE_IMPOSTO
centro_em_branco = 0
OTHERS = 0.
* << Fim da inclusão
IF sy-subrc <> 0.
ENDIF.
ENDIF.
ENDFORM.
...