Módulo: CÂMBIO EXPORTAÇÃO
Funcionalidade: Rotina Mensal
Data/Hora da Publicação: 16/03/2006 00:00:00
Data/Hora Última Alteração: 18/02/2011 15:04:19
Descrição da Nota: ROTINA MENSAL EXPORTAÇÃO - ESTORNO MENSAL - DATA LANÇAMENTO ESTORNO
Sintoma
Quando esta parametrizado para ser último dia útil do mês e a rotina mensal é em fechamento
intermediário, não joga o dia correto para estorno. Quando esta parametrizado para ser o primeiro
dia útil do mês, ele não verifica se o dia é feriado, apenas final de semana.
Solução
Se for fechamento intermediário, jogar o último dia do mês. Verificar se o dia útil selecionado é
feriado.
6.0
Informações Complementares
----------------------------------------------------------------------------------------------------
Nota Número 01033 Data: 16/03/2006 Hora: 11:25:03
----------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------
Nota Número : 01033
Categoria : Erro de Programa
Prioridade : Média
Versão PW.CE : 6.0
Pacote : 00022
Agrupamento : 00105
----------------------------------------------------------------------------------------------------
Referência às notas relacionadas:
Número - Ordem - Descrição Breve
----------------------------------------------------------------------------------------------------
ROTINA MENSAL EXPORTAÇÃO - ESTORNO MENSAL - DATA LANÇAMENTO ESTORNO
----------------------------------------------------------------------------------------------------
Palavras Chave:
ROTINA MENSAL EXPORTAÇÃO ESTORNO MENSAL
DATA LANÇAMENTO ESTORNO DIA UTIL FECHAMENTO INTERMEDIARIO
----------------------------------------------------------------------------------------------------
Objetos da nota:
REPS /PWS/ZYCBR003
----------------------------------------------------------------------------------------------------
Modificações efetuadas em REPS /PWS/ZYCBR003
Contexto: FORM mapeia_transacao.
itab_zycbe033-tcode = 'FB08'.
itab_zycbe033-tabela = '/PWS/ZYCBT154'.
CONCATENATE itab_zycbt154-codmodul itab_zycbt154-tpcontr
itab_zycbt154-bco itab_zycbt154-dtcont
itab_zycbt154-bukrs itab_zycbt154-gsber
itab_zycbt154-waers itab_zycbt154-d_newko
itab_zycbt154-c_newko INTO itab_zycbe033-cpochv.
itab_zycbe033-belnr = itab_zycbt154-belnr_pr.
itab_zycbe033-bukrs = itab_zycbt154-bukrs.
itab_zycbe033-gjahs = itab_zycbt154-dtcont(4).
* Verifica o parâmetro da tabela /PWS/ZYCBT007, para a data do estorno
* Se estiver parametrizada na tabela /PWS/ZYCBT007-DATAESTORNO = 'UDM',
* a data a ser utilizada para o estorno é o que foi digitada.
v_data = s_dtentr.
IF wa_zycbt007-dataestorno EQ 'PDM'. "1º dia do mês seguinte
CONCATENATE v_data(6) '01' INTO v_data.
ELSEIF wa_zycbt007-dataestorno EQ 'PDU'. "1º dia útil mês seguinte
CONCATENATE v_data(6) '01' INTO v_data.
PERFORM converte_data.
* <<Inicio Inclusão>>
ELSEIF wa_zycbt007-dataestorno EQ 'UDM'. "Último dia mês seguinte
IF s_rbinte = 'X'.
CALL FUNCTION 'LAST_DAY_OF_MONTHS'
EXPORTING
day_in = v_data
IMPORTING
last_day_of_month = v_data
EXCEPTIONS
day_in_no_date = 1
OTHERS = 2.
ENDIF.
* <<Fim Inclusão>>
ELSEIF wa_zycbt007-dataestorno EQ 'UDU'. "Último dia útil mês seguinte
* <<Inicio Inclusão>>
IF s_rbinte = 'X'.
CALL FUNCTION 'LAST_DAY_OF_MONTHS'
EXPORTING
day_in = v_data
IMPORTING
last_day_of_month = v_data
EXCEPTIONS
day_in_no_date = 1
OTHERS = 2.
ENDIF.
* <<Fim Inclusão>>
PERFORM converte_data.
ENDIF.
* Data para estorno do documento contábil.
itab_zycbe033-budat = v_data.
itab_zycbe033-bldat = s_dtentr.
* Faz a verificação do período em aberto.
PERFORM determina_periodo USING itab_zycbe033-budat
itab_zycbe033-bukrs
CHANGING v_monat.
PERFORM determina_ano USING itab_zycbe033-budat
itab_zycbe033-bukrs
CHANGING v_ano.
...
endform.
Contexto: FORM converte_data.
CLEAR: itab_period, v_confirm, v_txt_f.
REFRESH itab_period.
CALL FUNCTION 'DAY_ATTRIBUTES_GET'
EXPORTING
factory_calendar = wa_zycbt007-hcalidbr
holiday_calendar = wa_zycbt007-hcalidbr
date_from = v_data
date_to = v_data
language = text-102
TABLES
day_attributes = itab_period
EXCEPTIONS
factory_calendar_not_found = 1
holiday_calendar_not_found = 2
date_has_invalid_format = 3
date_inconsistency = 4
OTHERS = 5.
READ TABLE itab_period WITH KEY weekday = 6.
IF sy-subrc EQ 0.
PERFORM verifica_dia.
ELSE.
READ TABLE itab_period WITH KEY weekday = 7.
IF sy-subrc EQ 0.
PERFORM verifica_dia.
* <<Inicio Inclusão>>
ELSE.
LOOP AT itab_period WHERE NOT txt_short IS initial
OR NOT txt_long IS initial.
PERFORM verifica_dia.
ENDLOOP.
* <<Fim Inclusão>>
ENDIF.
ENDIF.
ENDFORM. " converte_data