Módulo: CÂMBIO EXPORTAÇÃO
Funcionalidade: Captação
Data/Hora da Publicação: 25/10/2006 00:00:00
Data/Hora Última Alteração: 18/02/2011 15:17:07
Descrição da Nota: CAPTAÇÃO MODIFICAÇÃO PRÉ PARCELA
Sintoma
Após vincular a primeira parcela de principal, o programa deverá permitir que seja alterado as
demais parcelas para ajustar com possiveis variações nas negociações. Alem disso, o programa nao faz
o estorno dos documentos contabeis apos erro no BI.
Solução
Foi adicionado o tratamento para evitar a modificação das parcelas vinculadas, permitir a
modificação nas parcelas não vinculadas e estorno das parcelas quando ocorre erro no BI.
6.0
Informações Complementares
----------------------------------------------------------------------------------------------------
Nota Número 02308 Data: 25/10/2006 Hora: 10:26:04
----------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------
Nota Número : 02308
Categoria : Melhoria
Prioridade : Média
Versão PW.CE : 6.0
Pacote : 00025
Agrupamento : 00137
----------------------------------------------------------------------------------------------------
Referência às notas relacionadas:
Número - Ordem - Descrição Breve
----------------------------------------------------------------------------------------------------
CAPTAÇÃO MODIFICAÇÃO PRÉ PARCELA
----------------------------------------------------------------------------------------------------
Palavras Chave:
CAPTAÇÃO MODIFICAÇÃO PRÉ PARCELA
----------------------------------------------------------------------------------------------------
Objetos da nota:
REPS /PWS/MZYCB001F01
REPS /PWS/MZYCB001F04
REPS /PWS/MZYCB001I01
REPS /PWS/MZYCB001TOP
MESS /PWS/ZYCBM304
----------------------------------------------------------------------------------------------------
Modificações efetuadas em MESS /PWS/ZYCBM304
* >> Início da inclusão:
304 Não é possível alterar parcela &1. Existe vinculação para essa parcela.
* << Fim da inclusão
----------------------------------------------------------------------------------------------------
Modificações efetuadas em REPS /PWS/MZYCB001F01
...
PERFORM modifica_principal.
v_flag_lanc = /pws/zycbe001-fdtjuros.
ENDFORM.
FORM refresh_dependent_tables USING p_ok value(p_okcode).
DATA: nrseqpre LIKE /pws/zycbt001-nrseqc.
* >> Início da inclusão: FORM REFRESH_DEPENDENT_TABLES
DATA: BEGIN OF itab_zycbt005_temp OCCURS 0.
INCLUDE STRUCTURE /pws/zycbt005.
DATA: END OF itab_zycbt005_temp.
CLEAR v_ok2.
IF ( ( /pws/zycbe001-tpcontr(1) EQ 'S' ) OR
( /pws/zycbe001-tpcontr(1) EQ 'P' ) ).
v_ok2 = 'X'.
SELECT *
FROM /pws/zycbt005
INTO TABLE itab_zycbt005_temp
WHERE nrseqc = /pws/zycbe001-nrseqc.
LOOP AT itab_zycbt002p.
READ TABLE itab_zycbt005_temp INDEX 1.
IF sy-subrc EQ '0'.
IF v_alterado EQ 'X'.
p_ok = 'N'.
MESSAGE i033 WITH text-229.
EXIT.
ENDIF.
READ TABLE itab_zycbt002p_ant WITH KEY
nrparc = itab_zycbt002p-nrparc.
IF sy-subrc EQ '0'.
IF ( itab_zycbt002p_ant-vlme NE itab_zycbt002p_ant-slvinc ).
IF ( itab_zycbt002p_ant-vlme NE itab_zycbt002p-vlme ) OR
( itab_zycbt002p_ant-nrdias NE itab_zycbt002p-nrdias ) OR
( itab_zycbt002p_ant-dtcrd NE itab_zycbt002p-dtcrd ) OR
( itab_zycbt002p_ant-txtinf NE itab_zycbt002p-txtinf ).
MESSAGE i304 WITH itab_zycbt002p-nrparc.
p_ok = 'N'.
ENDIF.
ENDIF.
ENDIF.
ENDIF.
ENDLOOP.
ELSE.
* << Fim da inclusão
SELECT nrinvoic INTO (/pws/zycbt005-nrinvoic)
FROM /pws/zycbt005 UP TO 1 ROWS
WHERE nrseqc = /pws/zycbe001-nrseqc.
p_ok = 'N'.
ENDSELECT.
...
...
WHERE nrseqc = /pws/zycbe001-nrseqc.
p_ok = 'N'.
ENDSELECT.
IF sy-subrc EQ 0.
MESSAGE i033 WITH text-232.
* >> Início da inclusão: FORM REFRESH_DEPENDENT_TABLES
ENDIF.
* << Fim da inclusão
ENDIF.
SELECT nrseq INTO (nrseqpre)
FROM /pws/zycbt061 UP TO 1 ROWS
WHERE nrseq_c = /pws/zycbe001-nrseqc.
p_ok = 'N'.
...
...
/pws/zycbe001-tpcontr(1) EQ 'T'.
MESSAGE i015 WITH text-260.
ENDIF.
v_nrseqc = /pws/zycbe001-nrseqc.
IF okcode NE 'ANLE'.
* >> Início da inclusão: FORM SAVE_CHANGES
if v_erro_bi is initial.
* << Fim da inclusão
v_status_s = '0'.
ENDIF.
* >> Início da inclusão: FORM SAVE_CHANGES
ENDIF.
* << Fim da inclusão
MOVE /pws/zycbe001-nrseqc TO /pws/zycbe074-nrseqc.
MOVE-CORRESPONDING /pws/zycbe074 TO /pws/zycbt074.
MODIFY /pws/zycbt074.
ENDIF.
CLEAR okcode.
...
...
/pws/zycbe001-fdtlanc NE wa_zycbt001-fdtlanc OR
/pws/zycbe001-vlme NE wa_zycbt001-vlme OR
/pws/zycbe001-txcneg NE wa_zycbt001-txcneg OR
/pws/zycbe001-fdtjuros NE wa_zycbt001-fdtjuros ) AND
/pws/zycbe001-status EQ 'C'.
* >> Início da inclusão: FORM SAVE_ZYCBT001_PRE
v_alterado = 'X'.
* << Fim da inclusão
PERFORM refresh_dependent_tables USING v_ok 'SAVE'.
* >> Início da inclusão: FORM SAVE_ZYCBT001_PRE
clear v_alterado.
* << Fim da inclusão
IF v_ok NE 'N'.
...
...
LOOP AT itab_zycbt002p_ant.
MOVE-CORRESPONDING itab_zycbt002p_ant TO itab_zycbt002p.
APPEND itab_zycbt002p.
ENDLOOP.
ENDIF.
* >> Início da inclusão: FORM SAVE_ZYCBT001_PRE
if v_erro_bi is initial.
* << Fim da inclusão
PERFORM save_zycbt002.
PERFORM save_zycbt003.
* >> Início da inclusão: FORM SAVE_ZYCBT001_PRE
else.
perform desfazer_alteracoes.
endif.
IF v_ok NE 'N' and v_ok2 NE 'X'.
* << Fim da inclusão
* >> Início da exclusão: FORM SAVE_ZYCBT001_PRE
IF v_ok NE 'N'.
* << Fim da exclusão
/pws/zycbe001-slvinc = /pws/zycbe001-slpagar =
/pws/zycbe001-slreserv = /pws/zycbe001-vlme.
ENDIF.
MODIFY /pws/zycbt001 FROM /pws/zycbe001.
IF wa_zycbt007-cfm = 'X'.
...
----------------------------------------------------------------------------------------------------
Modificações efetuadas em REPS /PWS/MZYCB001F04
...
MESSAGE s015 WITH text-258.
ENDIF.
ENDFORM.
FORM executa_fb08.
PERFORM mapeia_transacao.
* >> Início da inclusão: FORM EXECUTA_FB08
loop at itab_zycbe033.
if itab_zycbe033-belnr is initial.
itab_zycbe033-belnr = itab_rollback-belnr_novo.
CASE /pws/zycbe001-fdtlanc.
WHEN 'D'.
PERFORM verify_null_field USING /pws/zycbe001-dtdesem
'DTDESEM'
text-023.
itab_zycbe033-budat = /pws/zycbe001-dtdesem.
WHEN 'O'.
PERFORM verify_null_field USING /pws/zycbe001-dtcontr
'DTCONTR'
text-021.
itab_zycbe033-budat = /pws/zycbe001-dtcontr.
WHEN OTHERS.
PERFORM verify_null_field USING /pws/zycbe001-dtcred
'DTCRED'
text-022.
itab_zycbe033-budat = /pws/zycbe001-dtcred.
ENDCASE.
itab_zycbe033-bldat = itab_zycbe033-budat.
modify itab_zycbe033.
endif.
endloop.
* << Fim da inclusão
CALL FUNCTION '/PWS/ZYCB_TRANSACAO_FB08'
EXPORTING
v_modo = v_modo_bi
TABLES
t_dados = itab_zycbe033
...
...
READ TABLE itab_zycbt032 WITH KEY tcode = 'F-30'
tabela = '/PWS/ZYCBT002'
cpochv = /pws/zycbe001-nrseqc
tpmsg = 'S'.
IF sy-subrc EQ 0.
* >> Início da inclusão: FORM FILL_DATE_1_F30
CLEAR itab_rollback.
IF itab_zycbt002p-belnr2 IS INITIAL.
READ TABLE itab_rollback WITH KEY
belnr_novo = itab_zycbt002p-belnr.
IF sy-subrc EQ '0'.
READ TABLE itab_zycbt002p_ant WITH KEY
nrparc = itab_zycbt002p-nrparc.
WRITE itab_zycbt002p_ant-belnr TO itab_rollback-belnr_ant.
ELSE.
WRITE itab_zycbt002p-belnr TO itab_rollback-belnr_ant.
ENDIF.
ELSE.
READ TABLE itab_rollback WITH KEY
belnr_novo = itab_zycbt002p-belnr2.
IF sy-subrc EQ '0'.
READ TABLE itab_zycbt002p_ant WITH KEY
nrparc = itab_zycbt002p-nrparc.
WRITE itab_zycbt002p_ant-belnr2 TO itab_rollback-belnr_ant.
ELSE.
WRITE itab_zycbt002p-belnr2 TO itab_rollback-belnr_ant.
ENDIF.
ENDIF.
WRITE itab_zycbt032-belnr TO itab_rollback-belnr_novo.
WRITE 'X' TO itab_rollback-parcela.
APPEND itab_rollback.
* << Fim da inclusão
itab_zycbt002p-belnr = itab_zycbt032-belnr.
CLEAR itab_zycbt002p-belnr2.
itab_zycbt002p-slvinc = itab_zycbt002p-vlme.
MOVE: itab_zycbt032-belnr TO itab_contabil-belnr,
itab_zycbt002p-nrparc TO itab_contabil-nrparc,
...
...
LOOP AT itab_zycbt002p_exc.
v_valor = v_valor + itab_zycbt002p_exc-vlme.
itab_partidas-tcode = 'F-30'.
itab_partidas-tabela = '/PWS/ZYCBT002'.
itab_partidas-cpochv = itab_zycbe033-cpochv.
* >> Início da exclusão: FORM ALTERA_PARC_PT
IF itab_zycbt002p-belnr2 IS INITIAL.
* << Fim da exclusão
* >> Início da inclusão: FORM ALTERA_PARC_PT
IF itab_zycbt002p_exc-belnr2 IS INITIAL.
* << Fim da inclusão
itab_partidas-belnr = itab_zycbt002p_exc-belnr.
ELSE.
itab_partidas-belnr = itab_zycbt002p_exc-belnr2.
ENDIF.
CONCATENATE /pws/zycbe001-tpcontr
...
...
READ TABLE itab_zycbt032 WITH KEY tcode = 'F-30'
tabela = '/PWS/ZYCBT002'
cpochv = itab_zycbe033-cpochv
tpmsg = 'S'.
IF sy-subrc EQ 0.
* >> Início da inclusão: FORM ALTERA_PARC_PT
CLEAR itab_rollback.
WRITE itab_zycbt032-belnr TO itab_rollback-belnr_novo.
APPEND itab_rollback.
* << Fim da inclusão
READ table itab_zycbt002p with key v_flag = 'A'.
itab_zycbt002p-belnr = itab_zycbt032-belnr.
CLEAR itab_zycbt002p-belnr2.
itab_zycbt002p-slvinc = itab_zycbt002p-vlme.
MOVE: itab_zycbt032-belnr TO itab_contabil-belnr,
...
...
ENDIF.
ELSE.
CLEAR estorno_ok.
ENDIF.
ENDFORM.
* >> Início da inclusão:
FORM desfazer_alteracoes.
SORT itab_rollback BY belnr_novo DESCENDING.
LOOP AT itab_rollback.
itab_zycbe033-mandt = sy-mandt.
itab_zycbe033-tcode = 'FBRA'.
itab_zycbe033-tabela = '/PWS/ZYCBT001'.
itab_zycbe033-cpochv = /pws/zycbe001-nrseqc.
itab_zycbe033-belnr = itab_rollback-belnr_novo.
PERFORM verify_null_field USING /pws/zycbe001-bukrs
'BUKRS'
text-092.
itab_zycbe033-bukrs = /pws/zycbe001-bukrs.
CASE /pws/zycbe001-fdtlanc.
WHEN 'D'.
PERFORM verify_null_field USING /pws/zycbe001-dtdesem
'DTDESEM'
text-023.
itab_zycbe033-budat = /pws/zycbe001-dtdesem.
WHEN 'O'.
PERFORM verify_null_field USING /pws/zycbe001-dtcontr
'DTCONTR'
text-021.
itab_zycbe033-budat = /pws/zycbe001-dtcontr.
WHEN OTHERS.
PERFORM verify_null_field USING /pws/zycbe001-dtcred
'DTCRED'
text-022.
itab_zycbe033-budat = /pws/zycbe001-dtcred.
ENDCASE.
itab_zycbe033-bldat = itab_zycbe033-budat.
PERFORM determina_periodo USING itab_zycbe033-budat
CHANGING v_monat.
PERFORM determina_ano USING itab_zycbe033-budat
/pws/zycbe001-bukrs
CHANGING itab_zycbe033-budat(4).
CALL FUNCTION 'FI_PERIOD_CHECK'
EXPORTING
i_bukrs = itab_zycbe033-bukrs
i_gjahr = v_ano
i_koart = '+'
i_monat = v_monat
EXCEPTIONS
error_period = 1
error_period_acc = 2
OTHERS = 3.
IF sy-subrc = 0.
itab_zycbe033-stgrd = '01'.
ELSE.
itab_zycbe033-stgrd = '02'.
ENDIF.
APPEND itab_zycbe033.
CALL FUNCTION '/PWS/ZYCB_TRANSACAO_FBRA'
EXPORTING
v_modo = v_modo_bi
TABLES
t_dados = itab_zycbe033
t_campo = itab_zycbt034
t_zycbt032 = itab_zycbt032
EXCEPTIONS
campo_em_branco = 1
OTHERS = 2.
IF sy-subrc = 0.
PERFORM clear_date_batch.
PERFORM executa_fb08.
ENDIF.
ENDLOOP.
LOOP AT itab_zycbt002p.
READ TABLE itab_rollback WITH KEY
belnr_novo = itab_zycbt002p-belnr
parcela = 'X'.
IF sy-subrc EQ '0'.
READ TABLE itab_rollback WITH KEY
belnr_ant = itab_rollback-belnr_novo.
itab_zycbt002p-belnr = itab_rollback-belnr_ant.
ELSE.
READ TABLE itab_rollback WITH KEY
belnr_novo = itab_zycbt002p-belnr2
parcela = 'X'.
IF sy-subrc EQ '0'.
READ TABLE itab_rollback WITH KEY
belnr_ant = itab_rollback-belnr_novo.
itab_zycbt002p-belnr2 = itab_rollback-belnr_ant.
ENDIF.
ENDIF.
READ TABLE itab_zycbt002p_ant WITH KEY
belnr = itab_zycbt002p-belnr.
IF sy-subrc EQ '0'.
itab_zycbt002p-slvinc = itab_zycbt002p_ant-slvinc.
ENDIF.
MODIFY itab_zycbt002p.
ENDLOOP.
loop at itab_rollback.
read table itab_contabil with key
belnr = itab_rollback-belnr_novo.
if sy-subrc eq '0'.
delete itab_contabil index sy-tabix.
endif.
endloop.
CLEAR itab_rollback.
REFRESH itab_rollback.
ENDFORM.
* << Fim da inclusão
----------------------------------------------------------------------------------------------------
Modificações efetuadas em REPS /PWS/MZYCB001I01
...
CLEAR: v_belnr.
IF /pws/zycbe001-tpcontr NE 'A' AND
/pws/zycbe001-tpcontr NE 'C' AND
/pws/zycbe001-tpcontr NE 'DP' AND
/pws/zycbe001-tpcontr NE 'E'.
* >> Início da inclusão: MODULE USER_COMMAND_CB001
if v_erro_bi is initial.
* << Fim da inclusão
PERFORM mensagens USING v_belnr.
* >> Início da inclusão: MODULE USER_COMMAND_CB001
endif.
* << Fim da inclusão
ENDIF.
...
...
ENDIF.
WHEN 'DEL2'.
IF ts_contr-activetab = 'FC_PERP'.
IF itab_zycbt002p-vlme EQ itab_zycbt002p-slvinc OR
sy-tcode EQ c_transacao_c.
* >> Início da exclusão: MODULE USER_COMMAND_0104
CHECK v_status_s = '1' OR v_status_s IS INITIAL.
GET CURSOR LINE v_index_4.
CHECK NOT v_index_4 IS INITIAL.
v_index_4 = tc_perp-top_line + v_index_4 - 1.
READ TABLE itab_zycbt002p INDEX v_index_4.
* << Fim da exclusão
* >> Início da inclusão: MODULE USER_COMMAND_0104
loop at itab_zycbt002p where mark = 'X'.
* << Fim da inclusão
MOVE itab_zycbt002p TO itab_zycbt002p_exc.
APPEND itab_zycbt002p_exc.
* >> Início da inclusão: MODULE USER_COMMAND_0104
endloop.
* << Fim da inclusão
v_delete = 'S'.
* >> Início da inclusão: MODULE USER_COMMAND_0104
DELETE itab_zycbt002p WHERE mark = 'X'.
* << Fim da inclusão
* >> Início da exclusão: MODULE USER_COMMAND_0104
DELETE itab_zycbt002p INDEX v_index_4.
* << Fim da exclusão
* >> Início da inclusão: MODULE USER_COMMAND_0104
v_nrparc_i = '1'.
* << Fim da inclusão
LOOP AT itab_zycbt002p.
* >> Início da exclusão: MODULE USER_COMMAND_0104
v_nrparc_i = itab_zycbt002p-nrparc.
CHECK v_nrparc_i GT v_index_4.
v_nrparc = itab_zycbt002p-nrparc - 1.
itab_zycbt002p-nrparc = v_nrparc.
* << Fim da exclusão
* >> Início da inclusão: MODULE USER_COMMAND_0104
if itab_zycbt002p-nrparc GT v_nrparc_i.
itab_zycbt002p-nrparc = v_nrparc_i.
* << Fim da inclusão
MODIFY itab_zycbt002p.
* >> Início da inclusão: MODULE USER_COMMAND_0104
endif.
v_nrparc_i = v_nrparc_i + 1.
* << Fim da inclusão
ENDLOOP.
ENDIF.
* >> Início da exclusão: MODULE USER_COMMAND_0104
DELETE itab_zycbt002p WHERE mark = 'X'.
* << Fim da exclusão
v_del4 = 'X'.
CLEAR okcode.
ENDIF.
WHEN 'CLI'.
GET CURSOR FIELD v_campo VALUE v_valor LINE v_line.
...
...
IF v_dtfinal IS INITIAL.
v_dtfinal = v_dtaux.
ENDIF.
IF itab_zycbt002p-nrdias EQ '00000' AND
itab_zycbt002p-dtinicio = itab_zycbt002p-dtfinal.
* >> Início da inclusão: MODULE DIAS_PRINCIPAL
MOVE itab_zycbt002p to itab_zycbt002p_exc.
APPEND itab_zycbt002p_exc.
* << Fim da inclusão
DELETE itab_zycbt002p.
ENDIF.
ENDLOOP.
ENDMODULE.
MODULE juros_dp INPUT.
...
----------------------------------------------------------------------------------------------------
Modificações efetuadas em REPS /PWS/MZYCB001O01
...
WHEN '0104'.
CHECK NOT itab_zycbt002p[] IS INITIAL.
MOVE-CORRESPONDING itab_zycbt002p TO /pws/zycbe002p.
WRITE /pws/zycbe002p-slvinc CURRENCY /pws/zycbe002p-waers.
WRITE /pws/zycbe002p-vlme CURRENCY /pws/zycbe002p-waers.
* >> Início da inclusão: MODULE INSERT_LINE
if not itab_zycbt002p_ant[] is initial.
read table itab_zycbt002p_ant with key
nrparc = itab_zycbt002p-nrparc.
if sy-subrc eq '0'.
if itab_zycbt002p_ant-VLME NE itab_zycbt002p_ant-slvinc.
loop at screen.
screen-input = '0'.
MODIFY SCREEN.
endloop.
endif.
endif.
else.
endif.
* << Fim da inclusão
WHEN '0105'.
MOVE-CORRESPONDING itab_zycbt002 TO /pws/zycbe002.
WHEN '0114'.
MOVE-CORRESPONDING itab_zycbt216 TO /pws/zycbe216.
WHEN '0201'.
...
...
WHERE nrseqc = v_nrseqc.
SELECT * FROM /pws/zycbt002 INTO TABLE itab_zycbt002p
WHERE nrseqc = v_nrseqc
AND tpparc = 'P'
AND tpcontr EQ /pws/zycbe001-tpcontr.
* >> Início da inclusão: MODULE LOAD_ITAB_ZYCBT002
itab_zycbt002p_ant[] = itab_zycbt002p[].
* << Fim da inclusão
ENDIF.
ENDIF.
ELSEIF /pws/zycbe001-tpcontr(1) EQ 'T'.
IF itab_zycbt002p[] IS INITIAL.
PERFORM parcela_principal.
...
----------------------------------------------------------------------------------------------------
Modificações efetuadas em REPS /PWS/MZYCB001TOP
...
v_mode TYPE c,
v_nrmsg TYPE i VALUE 0.
DATA: BEGIN OF t_zycbt003_ant OCCURS 0.
INCLUDE STRUCTURE /pws/zycbt003.
DATA: END OF t_zycbt003_ant.
* >> Início da inclusão:
Data: v_alterado,
v_ok2.
DATA: BEGIN OF itab_rollback OCCURS 0,
belnr_novo type /pws/zycbt002-belnr,
belnr_ant type /pws/zycbt002-belnr,
parcela,
END OF itab_rollback.
* << Fim da inclusão