CE PLUS - Nota 004895

Módulo: DOC. IMPORTAÇÃO

Funcionalidade: DI

Data/Hora da Publicação: 03/10/2007 00:00:00

Data/Hora Última Alteração: 22/02/2011 13:50:15

Descrição da Nota: NÃO GERA VARIAÇÃO P/MATERIAIS DE CENTROS DE LUCROS DIFERENTES

Sintoma

Em processo com materiais de centros de lucros diferentes, o sistema nao gera a variação cambial

para todos os itens.

 

 

Solução

considerar centro de lucro para fazer a variação cambial da DI.

 

Versões Tratadas

7.0


Pré-Requisitos

Produto:

Nota

Descrição

ERRO NA DI AO FAZER VARIAÇÃO CAMBIAL.

LANÇAR O CENTRO DE CUSTO NA RECLASSIFICAÇÃO DE IA.

ESTA NOTA CRIA A FUNÇÃO DE RECLASSIFICAÇÃO DE IA

DECLARAÇÃO DE IMPORTAÇÃO (DI) - VARIAÇÃO CAMBIAL

Informações Complementares

----------------------------------------------------------------------------------------------------

Nota Número 04895 Data: 03/10/2007 Hora: 15:05:50

----------------------------------------------------------------------------------------------------

 

----------------------------------------------------------------------------------------------------

Nota Número              : 04895

Categoria                : Erro de Programa

Prioridade               : Alta

Versão PW.CE             : 7.0

Pacote                   : 00003

Agrupamento              : 00015

----------------------------------------------------------------------------------------------------

Referência às notas relacionadas:

Número - Ordem - Versão - Pacote - Descrição Breve

 

03047  - 00001 - 6.0    - 00026  - ESTA NOTA CRIA A FUNÇÃO DE RECLASSIFICAÇÃO DE IA

04090  - 00002 - 7.0    - 00002  - LANÇAR O CENTRO DE CUSTO NA RECLASSIFICAÇÃO DE IA.

04287  - 00003 - 7.0    - 00002  - DECLARAÇÃO DE IMPORTAÇÃO (DI) - VARIAÇÃO CAMBIAL

04390  - 00003 - 7.0    - 00002  - ERRO NA DI AO FAZER VARIAÇÃO CAMBIAL.

----------------------------------------------------------------------------------------------------

NÃO GERA VARIAÇÃO P/MATERIAIS DE CENTROS DE LUCROS DIFERENTES

----------------------------------------------------------------------------------------------------

Palavras Chave:

VARIAÇÃO CAMBIAL - DI - CENTRO DE LUCRO - CENTRO DE CUSTO

ITENS DIFERENTES

----------------------------------------------------------------------------------------------------

Objetos da nota:

FUNC /PWS/ZYCI_RECLASSIFICACAO_IA

REPS /PWS/LZYCIGF2F01

REPS /PWS/LZYCIGF2TOP

 

----------------------------------------------------------------------------------------------------

Modificações efetuadas em REPS /PWS/LZYCIGF2TOP

 

*Ir no grupo de função /PWS/ZYCIGF2, Programa Básico e selecionar INCLUDE /PWS/LZYCIGF2TOP.

 

...

DATA: BEGIN OF itab_di OCCURS 0,

        hkont      LIKE bsis-hkont,

        vlseg      LIKE /pws/zycit100-vlseg,

        vlfre      LIKE /pws/zycit100-vlfre,

        vlfob      LIKE /pws/zycit100-vlfob,

        vldi       LIKE /pws/zycit100-vlfob,

        vlfren     LIKE /pws/zycit100-vlfre,

        kostl      type ekkn-kostl,

        prctr      type ekkn-prctr,

      END OF itab_di .

* >> Início da inclusão:

DATA: BEGIN OF itab_di_aux OCCURS 0,

        hkont      LIKE bsis-hkont,

        vlseg      LIKE /pws/zycit100-vlseg,

        vlfre      LIKE /pws/zycit100-vlfre,

        vlfob      LIKE /pws/zycit100-vlfob,

        vldi       LIKE /pws/zycit100-vlfob,

        vlfren     LIKE /pws/zycit100-vlfre,

        kostl      type ekkn-kostl,

        prctr      type ekkn-prctr,

      END OF itab_di_aux .

* << Fim da inclusão

  DATA: BEGIN OF itab_matuse OCCURS 0    ,

          ebeln      TYPE ekpo-ebeln     ,

          ebelp      TYPE ekpo-ebelp     ,

          matnr      TYPE ekpo-matnr     ,

          bwtar      TYPE ekpo-bwtar     ,

          j_1bmatuse TYPE ekpo-j_1bmatuse,

          knttp      TYPE ekpo-knttp     ,

          werks      TYPE t001w-werks    ,

          bwkey      TYPE mbew-bwkey     ,

      reclassifica ,

...

 

----------------------------------------------------------------------------------------------------

Modificações efetuadas em FUNC /PWS/ZYCI_RECLASSIFICACAO_IA

 

...

          dmbtr    TYPE bsis-dmbtr       ,

          wrbtr    TYPE bsis-wrbtr       ,

          belnr    TYPE bsis-belnr       ,

          buzei    TYPE bsis-buzei       ,

          tpfatura TYPE /pws/zycit006-tpfatura,

        END OF itab_bsis_aux1.

  DATA: BEGIN OF itab_zycit132 OCCURS 0.

          INCLUDE STRUCTURE /pws/zycit132.

  DATA: END OF itab_zycit132.

  REFRESH: itab_di, itab_bsis_aux, itab_matuse_aux2, itab_matuse_aux,

* >> Início da exclusão: FUNCTION /PWS/ZYCI_RECLASSIFICACAO_IA

           itab_bsis, itab_matuse.

* << Fim da exclusão

* >> Início da inclusão: FUNCTION /PWS/ZYCI_RECLASSIFICACAO_IA

           itab_bsis, itab_matuse, itab_di_aux.

* << Fim da inclusão

  CLEAR: itab_di, itab_bsis_aux, itab_matuse_aux2, itab_matuse_aux,

* >> Início da exclusão: FUNCTION /PWS/ZYCI_RECLASSIFICACAO_IA

         itab_bsis, itab_matuse.

* << Fim da exclusão

* >> Início da inclusão: FUNCTION /PWS/ZYCI_RECLASSIFICACAO_IA

         itab_bsis, itab_matuse, itab_di_aux.

* << Fim da inclusão

  DATA:

      itab_zycit094    TYPE /pws/zycie094    OCCURS 0 WITH HEADER LINE,

      itab_zycit006    TYPE /pws/zycit006    OCCURS 0 WITH HEADER LINE,

...

 

...

      ENDIF.

    ENDIF.

    PERFORM retorna_decimais USING /pws/zycie085-waersfre

                             CHANGING itab_di-vlfren.

    itab_di-vldi = itab_di-vlfob + itab_di-vlseg +

          itab_di-vlfre + itab_di-vlfren.

   itab_matuse-reclassifica = 'X' .

   modify itab_matuse transporting reclassifica

                           where     ebeln = t_zycit100-ebeln

                           and       ebelp = t_zycit100-ebelp.

* >> Início da inclusão: FUNCTION /PWS/ZYCI_RECLASSIFICACAO_IA

    move itab_di to itab_di_aux.

    clear: itab_di-prctr, itab_di-kostl.

* << Fim da inclusão

    COLLECT itab_di.

    CLEAR   itab_di.

* >> Início da inclusão: FUNCTION /PWS/ZYCI_RECLASSIFICACAO_IA

    collect itab_di_aux.

    CLEAR   itab_di_aux.

* << Fim da inclusão

  ENDLOOP.

  CLEAR: v_rec_ia, v_rec_ia_1.

  LOOP AT itab_matuse_aux2.

    FREE: t_zycbt032, itab_contas.

...

 

 

----------------------------------------------------------------------------------------------------

Modificações efetuadas em REPS /PWS/LZYCIGF2F01

 

...

 

FORM move_lanctos USING    p_valor

                           vl_variacao.

  DATA: v_conta          TYPE hkont,

        vl_variacao_aux  TYPE p DECIMALS 2,

        v_valor_variacao TYPE p DECIMALS 2,

* >> Início da exclusão: FORM MOVE_LANCTOS

        v_diferenca      TYPE p DECIMALS 2.

* << Fim da exclusão

* >> Início da inclusão: FORM MOVE_LANCTOS

        v_diferenca      TYPE p DECIMALS 2,

        v_cont TYPE i,

        v_variacao       TYPE p DECIMALS 2,

        vL_total         TYPE p DECIMALS 2.

* << Fim da inclusão

  MOVE vl_variacao TO vl_variacao_aux.

  IF vl_variacao_aux < 0.

    v_valor_variacao = itab_bsis_aux-dmbtr - ABS( vl_variacao_aux ).

  ELSE.

    v_valor_variacao = itab_bsis_aux-dmbtr + ABS( vl_variacao_aux ).

  ENDIF.

  v_diferenca = v_valor_variacao - p_valor.

  IF ( v_diferenca < 1

   AND v_diferenca > -1

   AND v_diferenca NE 0 ).

...

 

...

      itab_contas-d_newko = itab_cta-konth.

    ELSE.

      READ TABLE itab_cta INDEX 1.

      itab_contas-bschl  = '40'.

      itab_contas-wrbtr  = abs( vl_variacao ).

      itab_contas-d_newko = itab_cta-konts.

    ENDIF.

    APPEND itab_contas.

    CLEAR itab_contas.

  ENDIF.

* >> Início da exclusão: FORM MOVE_LANCTOS

  itab_contas-c_kostl = itab_contas-d_kostl = itab_di-kostl.

* << Fim da exclusão

* >> Início da inclusão: FORM MOVE_LANCTOS

  CLEAR: v_cont, vL_total.

  LOOP AT itab_di_aux WHERE

     hkont = itab_matuse_aux2-hkont.

    v_cont = v_cont + 1.

    IF /pws/zycit031-inco1_ci = 'FOB'.

      vL_total = vL_total +  itab_di_aux-vlfob .

    ELSEIF /pws/zycit031-inco1_ci = 'C&F'.

      vL_total = vL_total +

      itab_di_aux-vlfob + itab_di_aux-vlfre + itab_di_aux-vlfren.

    ELSEIF /pws/zycit031-inco1_ci = 'CIF'.

      vL_total = vL_total +

      itab_di_aux-vlfob + itab_di_aux-vlfre + itab_di_aux-vlfren +

                      itab_di_aux-vlseg.

    endif.

  ENDLOOP.

  CLEAR v_variacao.

  LOOP AT itab_di_aux WHERE

     hkont = itab_matuse_aux2-hkont.

    v_cont = v_cont - 1 .

    IF v_cont = 0.

      itab_contas-wrbtr  =  p_valor - v_variacao.

    ELSE.

      IF /pws/zycit031-inco1_ci = 'FOB'.

        itab_contas-wrbtr  =

           p_valor * ( itab_di_aux-vlfob /  vL_total ).

      ELSEIF /pws/zycit031-inco1_ci = 'C&F'.

        itab_contas-wrbtr  =

           p_valor * ( ( itab_di_aux-vlfob + itab_di_aux-vlfre +

           itab_di_aux-vlfren ) /  vL_total ).

      ELSEIF /pws/zycit031-inco1_ci = 'CIF'.

        itab_contas-wrbtr  = p_valor * ( ( itab_di_aux-vlfob +

     itab_di_aux-vlfre + itab_di_aux-vlfren +  itab_di_aux-vlseg ) /

          vL_total ).

      ENDIF.

      v_variacao = v_variacao + itab_contas-wrbtr.

    ENDIF.

    itab_contas-c_kostl = itab_contas-d_kostl = itab_di_aux-kostl.

* << Fim da inclusão

  IF /pws/zycit000-clucro_ia NE space.

* >> Início da exclusão: FORM MOVE_LANCTOS

    itab_contas-c_prctr = itab_contas-d_prctr = itab_di-prctr.

* << Fim da exclusão

* >> Início da inclusão: FORM MOVE_LANCTOS

      itab_contas-c_prctr = itab_contas-d_prctr = itab_di_aux-prctr.

* << Fim da inclusão

  ENDIF.

  itab_contas-tcode  = 'F-51'.

  itab_contas-mandt  = sy-mandt.

  itab_contas-tabela = '/PWS/ZYCIT044'.

  itab_contas-bschl  = '40'.

* >> Início da exclusão: FORM MOVE_LANCTOS

  itab_contas-wrbtr  =  p_valor .

* << Fim da exclusão

  itab_contas-d_newko = itab_bsis_aux-hkont.

  APPEND itab_contas.

  CLEAR itab_contas.

* >> Início da inclusão: FORM MOVE_LANCTOS

  ENDLOOP.

* << Fim da inclusão

ENDFORM.

FORM move_lanctos_f05 USING vl_variacao.

  DATA: v_conta    TYPE hkont,

* >> Início da exclusão: FORM MOVE_LANCTOS_F05

        v_variadec TYPE /pws/zycit085-vlfre.

* << Fim da exclusão

* >> Início da inclusão: FORM MOVE_LANCTOS_F05

        v_variadec TYPE /pws/zycit085-vlfre,

        v_cont TYPE i,

        v_variacao       TYPE p DECIMALS 2,

        vL_total         TYPE p DECIMALS 2,

        p_valor          TYPE p DECIMALS 2.

* << Fim da inclusão

  CLEAR v_erro_f05.

  itab_contas-tcode  = 'F-05'.

  itab_contas-mandt  = sy-mandt.

  itab_contas-tabela = '/PWS/ZYCIT044'.

  IF vl_variacao > 0.

    itab_contas-bschl  = '40'.

  ELSEIF vl_variacao < 0.

    itab_contas-bschl  = '50'.

  ELSE .

    v_erro_f05 = 'S'.

  ENDIF.

  v_variadec = vl_variacao.

  itab_contas-wrbtr  = abs( v_variadec ).

* >> Início da inclusão: FORM MOVE_LANCTOS_F05

  p_valor = itab_contas-wrbtr.

  CLEAR: v_cont, vL_total.

  LOOP AT itab_di_aux WHERE

     hkont = itab_matuse_aux2-hkont.

    v_cont = v_cont + 1.

    IF /pws/zycit031-inco1_ci = 'FOB'.

      vL_total = vL_total +  itab_di_aux-vlfob .

    ELSEIF /pws/zycit031-inco1_ci = 'C&F'.

      vL_total = vL_total +

      itab_di_aux-vlfob + itab_di_aux-vlfre + itab_di_aux-vlfren.

    ELSEIF /pws/zycit031-inco1_ci = 'CIF'.

      vL_total = vL_total +

      itab_di_aux-vlfob + itab_di_aux-vlfre + itab_di_aux-vlfren +

                      itab_di_aux-vlseg.

    endif.

  ENDLOOP.

  CLEAR v_variacao.

  LOOP AT itab_di_aux WHERE

     hkont = itab_matuse_aux2-hkont.

    v_cont = v_cont - 1 .

    IF v_cont = 0.

      itab_contas-wrbtr  =  p_valor - v_variacao.

    ELSE.

      IF /pws/zycit031-inco1_ci = 'FOB'.

        itab_contas-wrbtr  =

           p_valor * ( itab_di_aux-vlfob /  vL_total ).

      ELSEIF /pws/zycit031-inco1_ci = 'C&F'.

        itab_contas-wrbtr  =

           p_valor * ( ( itab_di_aux-vlfob + itab_di_aux-vlfre +

           itab_di_aux-vlfren ) /  vL_total ).

      ELSEIF /pws/zycit031-inco1_ci = 'CIF'.

        itab_contas-wrbtr  = p_valor * ( ( itab_di_aux-vlfob +

     itab_di_aux-vlfre + itab_di_aux-vlfren +  itab_di_aux-vlseg ) /

          vL_total ).

      ENDIF.

      v_variacao = v_variacao + itab_contas-wrbtr.

    ENDIF.

  itab_contas-tcode  = 'F-05'.

  itab_contas-mandt  = sy-mandt.

  itab_contas-tabela = '/PWS/ZYCIT044'.

  IF vl_variacao > 0.

    itab_contas-bschl  = '40'.

  ELSEIF vl_variacao < 0.

    itab_contas-bschl  = '50'.

  ELSE .

    v_erro_f05 = 'S'.

  ENDIF.

* << Fim da inclusão

* >> Início da exclusão: FORM MOVE_LANCTOS_F05

  itab_contas-c_kostl = itab_contas-d_kostl = itab_di-kostl.

  itab_contas-c_prctr = itab_contas-d_prctr = itab_di-prctr.

* << Fim da exclusão

* >> Início da inclusão: FORM MOVE_LANCTOS_F05

  itab_contas-c_kostl = itab_contas-d_kostl = itab_di_aux-kostl.

  itab_contas-c_prctr = itab_contas-d_prctr = itab_di_aux-prctr.

* << Fim da inclusão

  itab_contas-d_newko = itab_bsis_aux-hkont.

  APPEND itab_contas.

  CLEAR itab_contas.

* >> Início da inclusão: FORM MOVE_LANCTOS_F05

  endloop.

* << Fim da inclusão

  itab_contas-tcode  = 'F-05'.

  itab_contas-mandt  = sy-mandt.

  itab_contas-tabela = '/PWS/ZYCIT044'.

  itab_contas-c_kostl = itab_contas-d_kostl = itab_di-kostl.

...