CE PLUS - Nota 004253

Módulo: DOC. IMPORTAÇÃO

Funcionalidade: Custo Efetivo

Data/Hora da Publicação: 24/07/2007 00:00:00

Data/Hora Última Alteração: 22/02/2011 14:24:43

Descrição da Nota: AJUSTE CUSTO

Sintoma

Dificuldade em encerrar a importação do embarque diferença no Custo.

 

 

Solução

Criado o relatório /PWS/ZYCIR988 para ajustar a diferença no Custo Efetivo. Levar o valor da

mercadoria para o custo efetivo.

 

Versões Tratadas

7.0


Pré-Requisitos

Produto:

Nota

Descrição

ERRO NO CUSTO EFETIVO, VALOR DA FATURA

Informações Complementares

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

Nota Número 04253 Data: 24/07/2007 Hora: 10:48:28

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

 

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

Nota Número              : 04253

Categoria                : Melhoria

Prioridade               : Média

Versão PW.CE             : 7.0

Pacote                   : 00002

Agrupamento              : 00005

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

Referência às notas relacionadas:

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

 

03346  - 00001 - 7.0    - 00001  - ERRO NO CUSTO EFETIVO, VALOR DA FATURA

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

AJUSTE CUSTO

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

Palavras Chave:

AJUSTE CUSTO - DIFERENÇA -

 

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

Objetos da nota:

REPS /PWS/ZYCIR988

 

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

Modificações efetuadas em REPS /PWS/ZYCIR988

 

REPORT  /pws/zycir988    MESSAGE-ID /pws/zycim.

TABLES : /pws/zycie001,

         /pws/zycit031,

         /pws/zycie006,

* >> Início da inclusão:

         /pws/zycit041,

         /pws/zycbt007,

         tcurx,

* << Fim da inclusão

         t001.

DATA itab_zycit036 LIKE /pws/zycit036 OCCURS 0 WITH HEADER LINE.

DATA itab_zycit003 LIKE /pws/zycit003 OCCURS 0 WITH HEADER LINE.

DATA itab_zycit042 LIKE /pws/zycit042 OCCURS 0 WITH HEADER LINE.

DATA itab_zycit263 LIKE /pws/zycie263 OCCURS 0 WITH HEADER LINE.

* >> Início da inclusão:

DATA itab_zycit006 LIKE /pws/zycie006 OCCURS 0 WITH HEADER LINE.

DATA itab_zycit100 LIKE /pws/zycit100 OCCURS 0 WITH HEADER LINE.

* << Fim da inclusão

DATA: okcode LIKE sy-ucomm.

* >> Início da inclusão:

DATA :  v_kursf LIKE bkpf-kursf,

        v_valor LIKE /pws/zycit036-vlreal.

* << Fim da inclusão

SELECTION-SCREEN BEGIN OF BLOCK bl1 WITH FRAME TITLE text-001.

PARAMETER: p_nrseq TYPE /pws/zycit003-nrseq OBLIGATORY.

SELECTION-SCREEN END OF BLOCK bl1.

INITIALIZATION.

START-OF-SELECTION.

  PERFORM seleciona_dados.

  PERFORM ajusta_custo.

FORM seleciona_dados.

  SELECT SINGLE * FROM /pws/zycit001

    INTO /pws/zycie001

    WHERE nrseq EQ p_nrseq.

  IF sy-subrc EQ 0 .

    SELECT SINGLE * FROM t001 WHERE bukrs EQ /pws/zycie001-bukrs.

    SELECT SINGLE * FROM /pws/zycit031

      WHERE inco1 = /pws/zycie001-inco1

        AND land1 EQ t001-land1.

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

    SELECT SINGLE *

      FROM /pws/zycbt007

      WHERE bukrs EQ /pws/zycie001-bukrs.

* << Fim da inclusão

    SELECT * FROM /pws/zycit003 INTO TABLE itab_zycit003

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

     WHERE nrseq EQ /pws/zycie001-nrseq.

    SELECT * FROM /pws/zycit100 INTO TABLE itab_zycit100

* << Fim da inclusão

     WHERE nrseq EQ /pws/zycie001-nrseq.

    IF sy-subrc EQ 0.

      SELECT * FROM /pws/zycit263

      INTO TABLE itab_zycit263

      FOR ALL ENTRIES IN itab_zycit003

      WHERE nrseq EQ itab_zycit003-nrseq

      AND   ebeln EQ itab_zycit003-ebeln

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

      AND   ebelp EQ itab_zycit003-ebelp.

* << Fim da exclusão

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

      AND   ebelp EQ itab_zycit003-ebelp

      AND   eliminado NE 'X'.

* << Fim da inclusão

      IF sy-subrc EQ 0.

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

        READ TABLE itab_zycit263 INDEX 1 .

        SELECT SINGLE * FROM /pws/zycit006

         INTO /pws/zycie006

         WHERE nrseq_pgfat EQ itab_zycit263-nrseq_pgfat.

* << Fim da exclusão

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

        SELECT  * FROM /pws/zycit006

         INTO TABLE itab_zycit006

         FOR ALL ENTRIES IN itab_zycit263

         WHERE nrseq_pgfat EQ itab_zycit263-nrseq_pgfat

         AND   tpfatura    EQ '01'

         AND   eliminado   NE 'X' .

        SELECT * FROM /pws/zycit042 INTO TABLE itab_zycit042

        FOR ALL ENTRIES IN itab_zycit003

        WHERE nrseq = itab_zycit003-nrseq AND

              ebeln = itab_zycit003-ebeln AND

              ebelp = itab_zycit003-ebelp.

* << Fim da inclusão

      ENDIF.

    ENDIF.

  ENDIF.

ENDFORM.

FORM ajusta_custo .

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

  IF /pws/zycie006-tpfatura = '01'.

* << Fim da exclusão

    LOOP AT itab_zycit003.

      SELECT * FROM /pws/zycit036 INTO TABLE itab_zycit036

        WHERE nrseq = itab_zycit003-nrseq AND

              ebeln = itab_zycit003-ebeln AND

              ebelp = itab_zycit003-ebelp AND

              ( codigo = 'FOB' OR

                codigo = 'C&F' OR

                codigo = 'CIF' )

                AND ( origem = 'FAT' OR

                      origem = 'NF' ).

      IF sy-subrc = 0.

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

        LOOP AT itab_zycit036.

* << Fim da exclusão

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

      LOOP AT itab_zycit036 WHERE nrseq = itab_zycit003-nrseq

                            AND   ebeln = itab_zycit003-ebeln

                            AND   ebelp = itab_zycit003-ebelp .

* << Fim da inclusão

          IF itab_zycit036-origem = 'NF'.

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

            SELECT * FROM /pws/zycit042 INTO TABLE itab_zycit042

            WHERE nrseq = itab_zycit003-nrseq AND

                  ebeln = itab_zycit003-ebeln AND

                  ebelp = itab_zycit003-ebelp.

* << Fim da exclusão

              READ TABLE itab_zycit042

                          WITH KEY ebeln = itab_zycit036-ebeln

                                   ebelp = itab_zycit036-ebelp.

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

              itab_zycit036-vlreal = ( itab_zycit003-vlreal *

      itab_zycit003-qtd_iten )

      +         itab_zycit003-vlfre_fat + itab_zycit003-vlseg_fat.

* << Fim da exclusão

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

          IF sy-subrc EQ 0.

            itab_zycit036-vlreal =

            ( itab_zycit003-vlreal *  itab_zycit003-qtd_iten )  +

            itab_zycit003-vlfre_fat + itab_zycit003-vlseg_fat.

* << Fim da inclusão

              itab_zycit036-origem = 'NF'.

              itab_zycit036-waers_real = itab_zycit003-waers_real.

              itab_zycit036-nrseqori = itab_zycit042-docnum.

              INSERT /pws/zycit036 FROM itab_zycit036.

              IF sy-subrc NE 0.

                MODIFY /pws/zycit036 FROM itab_zycit036.

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

            ENDIF.

* << Fim da inclusão

              ENDIF.

          ELSEIF itab_zycit036-origem = 'FAT'.

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

            READ TABLE itab_zycit003

                               WITH KEY ebeln = itab_zycit036-ebeln

                                        ebelp = itab_zycit036-ebelp.

            IF sy-subrc = 0.

              itab_zycit036-vlreal = ( itab_zycit003-vlreal *

      itab_zycit003-qtd_iten )

      +         itab_zycit003-vlfre_fat + itab_zycit003-vlseg_fat.

* << Fim da exclusão

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

          READ TABLE itab_zycit263 WITH KEY

                    nrseq = itab_zycit003-nrseq

                    ebeln = itab_zycit003-ebeln

                    ebelp = itab_zycit003-ebelp.

          IF sy-subrc EQ 0.

            READ TABLE itab_zycit006 WITH KEY

                 nrseq_pgfat = itab_zycit263-nrseq_pgfat.

            IF sy-subrc EQ 0.

              itab_zycit036-vlreal =

               ( itab_zycit003-vlreal * itab_zycit003-qtd_iten ) +

              itab_zycit003-vlfre_fat + itab_zycit003-vlseg_fat.

* << Fim da inclusão

              itab_zycit036-origem = 'FAT'.

              itab_zycit036-waers_real = itab_zycit003-waers_real.

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

              itab_zycit036-nrseqori = /pws/zycie006-nrseq.

* << Fim da exclusão

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

              itab_zycit036-nrseqori = itab_zycit006-nrseq.

* << Fim da inclusão

              INSERT /pws/zycit036 FROM itab_zycit036.

              IF sy-subrc NE 0.

                MODIFY /pws/zycit036 FROM itab_zycit036.

              ENDIF.

            ENDIF.

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

          ENDIF.

* << Fim da inclusão

          ENDIF.

        ENDLOOP.

      ELSE.

        SELECT * FROM /pws/zycit036 INTO TABLE itab_zycit036

           WHERE nrseq = itab_zycit003-nrseq AND

                 ebeln = itab_zycit003-ebeln AND

                 ebelp = itab_zycit003-ebelp AND

                 ( codigo = 'FOB' OR

                   codigo = 'C&F' OR

                   codigo = 'CIF' )

                   AND origem = 'PED' .

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

        IF sy-subrc EQ 0 AND /pws/zycie006-belnr_p NE space.

* << Fim da exclusão

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

      IF sy-subrc EQ 0.

        READ TABLE itab_zycit263 WITH KEY

                   nrseq = itab_zycit003-nrseq

                   ebeln = itab_zycit003-ebeln

                   ebelp = itab_zycit003-ebelp.

        IF sy-subrc EQ 0.

          READ TABLE itab_zycit006 WITH KEY

                    nrseq_pgfat = itab_zycit263-nrseq_pgfat.

* << Fim da inclusão

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

          LOOP AT itab_zycit036.

* << Fim da exclusão

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

          IF NOT itab_zycit006-belnr_p IS INITIAL.

            LOOP AT itab_zycit036 WHERE

                   nrseq = itab_zycit003-nrseq AND

                   ebeln = itab_zycit003-ebeln AND

                   ebelp = itab_zycit003-ebelp.

* << Fim da inclusão

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

              READ TABLE itab_zycit263 WITH KEY

                   nrseq = itab_zycit036-nrseq

                   ebeln = itab_zycit036-ebeln

                   ebelp = itab_zycit036-ebelp

                   nrseq_pgfat = /pws/zycie006-nrseq_pgfat.

* << Fim da exclusão

              IF sy-subrc EQ 0.

                itab_zycit036-vlreal = ( itab_zycit003-vlreal *

                  itab_zycit263-qtd_iten )   +

                itab_zycit003-vlfre_fat + itab_zycit003-vlseg_fat.

                itab_zycit036-origem = 'FAT'.

                itab_zycit036-waers_real = itab_zycit003-waers_real.

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

                itab_zycit036-nrseqori = /pws/zycie006-nrseq.

* << Fim da exclusão

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

                itab_zycit036-nrseqori = itab_zycit006-nrseq.

* << Fim da inclusão

                itab_zycit036-codmod     = 'D'.

                itab_zycit036-status     = 'M'.

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

                itab_zycit036-vlreal_emb = /pws/zycie006-vltotal.

                itab_zycit036-waers_emb  = /pws/zycie006-waers.

* << Fim da exclusão

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

                itab_zycit036-vlreal_emb = itab_zycit006-vltotal.

                itab_zycit036-waers_emb  = itab_zycit006-waers.

* << Fim da inclusão

                CLEAR : itab_zycit036-vldif.

                itab_zycit036-usernamec  = sy-uname.

                itab_zycit036-dtuserc    = sy-datum.

                itab_zycit036-hruserc    = sy-uzeit.

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

                SELECT SINGLE * FROM /pws/zycit041

                   WHERE nrseq    EQ itab_zycit042-nrseqnf

                   AND   nfglobal EQ itab_zycit042-nfglobal

                   AND   docnum   EQ itab_zycit042-docnum  .

                IF sy-subrc EQ 0 AND

                   NOT /pws/zycit041-belnr_mr1m IS INITIAL.

                  IF sy-subrc EQ 0.

                    itab_zycit036-congelamov = 'X' .

                  ENDIF.

* << Fim da inclusão

                INSERT /pws/zycit036 FROM itab_zycit036.

                IF sy-subrc NE 0.

                  MODIFY /pws/zycit036 FROM itab_zycit036.

                ENDIF.

              ENDIF.

            SELECT * FROM /pws/zycit042 INTO TABLE itab_zycit042

            WHERE nrseq = itab_zycit003-nrseq AND

                  ebeln = itab_zycit003-ebeln AND

                  ebelp = itab_zycit003-ebelp.

            READ TABLE itab_zycit003

...

 

...

                          WITH KEY ebeln = itab_zycit036-ebeln

                                   ebelp = itab_zycit036-ebelp.

              itab_zycit036-vlreal =   ( itab_zycit003-vlreal *

                itab_zycit003-qtd_iten ) +

              itab_zycit003-vlfre_fat + itab_zycit003-vlseg_fat.

              itab_zycit036-origem = 'NF'.

              itab_zycit036-waers_real = itab_zycit003-waers_real.

              itab_zycit036-nrseqori = itab_zycit042-docnum.

              itab_zycit036-codmod     = 'D'.

              itab_zycit036-status     = 'M'.

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

              itab_zycit036-vlreal_emb = /pws/zycie006-vltotal.

              itab_zycit036-waers_emb  = /pws/zycie006-waers.

* << Fim da exclusão

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

                  itab_zycit036-vlreal_emb = itab_zycit006-vltotal.

                  itab_zycit036-waers_emb  = itab_zycit006-waers.

* << Fim da inclusão

              CLEAR : itab_zycit036-vldif.

              itab_zycit036-usernamec  = sy-uname.

              itab_zycit036-dtuserc    = sy-datum.

              itab_zycit036-hruserc    = sy-uzeit.

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

                  SELECT SINGLE * FROM /pws/zycit041

                     WHERE nrseq    EQ itab_zycit042-nrseqnf

                     AND   nfglobal EQ itab_zycit042-nfglobal

                     AND   docnum   EQ itab_zycit042-docnum  .

                  IF sy-subrc EQ 0 AND

                     NOT /pws/zycit041-belnr_mr1m IS INITIAL.

                    itab_zycit036-congelamov = 'X' .

                  ENDIF.

* << Fim da inclusão

              INSERT /pws/zycit036 FROM itab_zycit036.

              IF sy-subrc NE 0.

                MODIFY /pws/zycit036 FROM itab_zycit036.

              ENDIF.

            ENDIF.

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

              ENDIF.

* << Fim da inclusão

          ENDLOOP.

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

          ENDIF.

        ENDIF.

* << Fim da inclusão

        ENDIF.

      ENDIF.

    ENDLOOP.

    IF sy-subrc = 0.

      MESSAGE i015 WITH text-002.

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

  ENDIF.

ENDFORM.

FORM retorna_decimais USING    p_moeda

                      CHANGING p_valor.

  SELECT SINGLE * FROM tcurx WHERE currkey = p_moeda.

  IF sy-subrc <> 0.

    tcurx-currdec = 2.

* << Fim da inclusão

    ENDIF.

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

  p_valor = p_valor / ( 10 ** ( tcurx-currdec - 2 ) ).

ENDFORM.

FORM trata_decimais USING    p_moeda

                    CHANGING p_valor.

  SELECT SINGLE * FROM tcurx WHERE currkey = p_moeda.

  IF sy-subrc <> 0.

    tcurx-currdec = 2.

* << Fim da inclusão

  ENDIF.

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

  p_valor = p_valor * ( 10 ** ( tcurx-currdec - 2 ) ).

* << Fim da inclusão

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

ENDFORM.

* << Fim da exclusão

* >> Início da inclusão:

ENDFORM.

* << Fim da inclusão