CE PLUS - Nota 012880

Módulo: DOC. IMPORTAÇÃO

Funcionalidade: Fatura Mercadoria

Data/Hora da Publicação: 28/03/2013 00:00:00

Data/Hora Última Alteração: 16/04/2014 09:07:19

Descrição da Nota: AO INFORMAR FABRICANTE NO EMBARQUE, DÁ ERRO NA FATURA.

Sintoma

Ao informar fabricantes no embarque, levando dados para fatura, dá erro.

 

 

Solução

Carregar dados do fabricante informados no embarque.

 

Versões Tratadas

9.0


Pré-Requisitos

Produto:

Nota

Descrição

ABRIR CAMPOS FABRICANTE NA FATURA QUANDO É TIPO 0 E 2

GRAVA PAÍS DE ORIGEM SOMENTE PARA OS ITENS DA TELA DA FATURA

FABRICANTE TIPO 2 NÃO TRAZ O NOME DO EXPORTADOR

ERRO AO TROCAR TIPO DE FABRICANTES NA FATURA

Informações Complementares

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

Nota Número 12880 Data: 28/03/2013 Hora: 15:41:54

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

 

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

Nota Número              : 12880

Categoria                : Erro de Programa

Prioridade               : Alta

Versão PW.CE             : 9.0

Pacote                   : 00004

Agrupamento              : 00151

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

Referência às notas relacionadas:

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

 

11854  - 00001 - 8.0    - 00010  - ERRO AO TROCAR TIPO DE FABRICANTES NA FATURA

12474  - 00002 - 9.0    - 00001  - FABRICANTE TIPO 2 NÃO TRAZ O NOME DO EXPORTADOR

12608  - 00003 - 9.0    - 00002  - GRAVA PAÍS DE ORIGEM SOMENTE PARA OS ITENS DA TELA DA FATURA

12838  - 00004 - 9.0    - 00003  - ABRIR CAMPOS FABRICANTE NA FATURA QUANDO É TIPO 0 E 2

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

AO INFORMAR FABRICANTE NO EMBARQUE, DÁ ERRO NA FATURA.

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

Palavras Chave:

FABRICANTE - EMBARQUE  - ERRO FATURA

 

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

Objetos da nota:

DYNP /PWS/SAPMZYCI003                        0101

REPS /PWS/MZYCI003F03

REPS /PWS/MZYCI003F02

REPS /PWS/MZYCI003I01

REPS /PWS/MZYCI003X01

REPS /PWS/MZYCI003F01

 

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

Modificações efetuadas em DYNP /PWS/SAPMZYCI003                        0101

 

O Download das telas encontra-se disponível no link abaixo

 

http://produtos.sondait.com.br/home/PW.CE/Notas/

 

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

Modificações efetuadas em REPS /PWS/MZYCI003F03

 

...

FORM consiste_fabrictp.

  CLEAR lfa1.

  IF /pws/zycie003-fabric EQ '2'

   AND NOT /pws/zycie003-lifnrfabr IS INITIAL.

    SELECT SINGLE * FROM lfa1

      WHERE lifnr EQ /pws/zycie003-lifnrfabr.

    /pws/zycie003-lifnrfabr = /pws/zycie003-lifnrfabr.

    /pws/zycie003-flagfabr = 'S'.

    /pws/zycie003-descfab = lfa1-name1.

    /pws/zycie003-paisfab = lfa1-land1.

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

    IF /pws/zycie006-tpfatura EQ '01'  AND

   '02' CA /pws/zycie006-fabricante.

      PERFORM carrega_fabricante.

* << Fim da inclusão

  ENDIF.

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

  ENDIF.

* << Fim da inclusão

  IF /pws/zycie003-fabric EQ '1'.

    SELECT SINGLE * FROM lfa1 WHERE lifnr EQ /pws/zycie006-lifnr.

    /pws/zycie003-lifnrfabr = /pws/zycie006-lifnr.

    /pws/zycie003-descfab = lfa1-name1.

    /pws/zycie003-paisfab = lfa1-land1.

  ENDIF.

...

 

...

 

* >> Início da inclusão:

FORM carrega_fabricante.

  READ TABLE itab_zycit080 WITH KEY ebeln = /pws/zycie003-ebeln

                                   ebelp = /pws/zycie003-ebelp

                                   tipoforn = 'D' .

  IF sy-subrc NE 0 .

    SELECT SINGLE lifnr name1 land1 adrnr stras ort01 ort02 regio

       FROM lfa1

       INTO CORRESPONDING FIELDS OF wa_lfa1

       WHERE lifnr EQ /pws/zycie003-lifnrfabr.

    SELECT SINGLE * FROM adrc INTO wa_adrc

           WHERE addrnumber EQ wa_lfa1-adrnr.

    SELECT SINGLE bezei FROM t005u INTO itab_zycit080-regio

    WHERE land1 = wa_lfa1-land1 AND

          spras = sy-langu AND

          bland = wa_adrc-region.

    itab_zycit080-mandt = sy-mandt.

    itab_zycit080-prog = sy-repid.

    itab_zycit080-nrseqli = /pws/zycie006-nrseq.

    itab_zycit080-ebeln   = itab_zycit003-ebeln.

    itab_zycit080-ebelp   = itab_zycit003-ebelp.

    itab_zycit080-tipoforn = 'D' .

    itab_zycit080-lifnr = /pws/zycie003-lifnrfabr.

    itab_zycit080-name1 = /pws/zycie003-descfab.

    itab_zycit080-landa       = wa_lfa1-land1.

    itab_zycit080-nrlogr      = wa_lfa1-adrnr.

    itab_zycit080-logradouro  = wa_lfa1-stras.

    itab_zycit080-compl       = wa_lfa1-ort02.

    itab_zycit080-city        = wa_lfa1-ort01.

    APPEND itab_zycit080.

  ELSE.

    IF itab_zycit080-lifnr NE /pws/zycie003-lifnrfabr.

      SELECT SINGLE lifnr name1 land1 adrnr stras ort01 ort02 regio

      FROM lfa1

      INTO CORRESPONDING FIELDS OF wa_lfa1

      WHERE lifnr EQ /pws/zycie003-lifnrfabr.

      SELECT SINGLE * FROM adrc INTO wa_adrc

             WHERE addrnumber EQ wa_lfa1-adrnr.

      SELECT SINGLE bezei FROM t005u INTO itab_zycit080-regio

      WHERE land1 = wa_lfa1-land1 AND

            spras = sy-langu AND

            bland = wa_adrc-region.

      itab_zycit080-lifnr = /pws/zycie003-lifnrfabr.

      itab_zycit080-name1 = /pws/zycie003-descfab.

      itab_zycit080-landa       = wa_lfa1-land1.

      itab_zycit080-nrlogr      = wa_lfa1-adrnr.

      itab_zycit080-logradouro  = wa_lfa1-stras.

      itab_zycit080-compl       = wa_lfa1-ort02.

      itab_zycit080-city        = wa_lfa1-ort01.

      MODIFY itab_zycit080 TRANSPORTING lifnr name1 landa

      nrlogr logradouro compl city

      WHERE ebeln = /pws/zycie003-ebeln

      AND   ebelp = /pws/zycie003-ebelp

      AND   tipoforn = 'D' .

    ENDIF.

  ENDIF.

ENDFORM.

* << Fim da inclusão

 

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

Modificações efetuadas em REPS /PWS/MZYCI003F02

 

...

 

FORM trata_fabricante.

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

  IF v_tpfabr = '0'.

* << Fim da exclusão

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

  IF v_tpfabr IS INITIAL.

    v_tpfabr = /pws/zycie006-fabricante.

  ENDIF.

* << Fim da inclusão

    LOOP AT itab_zycit003.

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

    itab_zycit003-paquis = lfa1-land1.

    IF /pws/zycie006-fabricante EQ '0'.

      itab_zycit003-fabric  = '2'.

      itab_zycit003-flagfabr = 'S' .

* << Fim da inclusão

      itab_zycit003-lifnrfabr = /pws/zycie006-lifnrfabr .

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

    ENDLOOP.

  ELSEIF v_tpfabr = '1'.

* << Fim da exclusão

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

    ELSEIF /pws/zycie006-fabricante EQ '1'.

* << Fim da inclusão

    v_fabr_ant = '1'.

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

    LOOP AT itab_zycit003.

      itab_zycit003-fabric  = '1'.

* << Fim da exclusão

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

      itab_zycit003-fabric  =  /pws/zycie006-fabricante.

* << Fim da inclusão

      MOVE: /pws/zycie006-descfab   TO itab_zycit003-descfab,

            /pws/zycie006-lifnrfabr TO itab_zycit003-lifnrfabr,

            /pws/zycie006-flagfabr  TO itab_zycit003-flagfabr.

      MOVE /pws/zycie006-paisfab    TO itab_zycit003-paisfab.

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

      MODIFY: itab_zycit003.

    ENDLOOP.

* << Fim da exclusão

    v_flag = 'X'.

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

  ELSEIF v_tpfabr = '3'.

* << Fim da exclusão

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

    ELSEIF /pws/zycie006-fabricante EQ '3'.

* << Fim da inclusão

    v_flag = 'X'.

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

    LOOP AT itab_zycit003.

      itab_zycit003-fabric  = '3'.

* << Fim da exclusão

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

      itab_zycit003-fabric  = /pws/zycie006-fabricante.

* << Fim da inclusão

      CLEAR:  itab_zycit003-descfab,

              itab_zycit003-lifnrfabr, itab_zycit003-flagfabr.

      IF itab_zycit003-paisfab IS INITIAL.

        itab_zycit003-paisfab = /pws/zycie006-paisfab.

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

      ENDIF.

      IF NOT itab_zycit003-paisfab IS INITIAL AND

         itab_zycit003-porigem IS INITIAL.

        itab_zycit003-porigem = itab_zycit003-paisfab.

* << Fim da inclusão

      ENDIF.

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

      MODIFY: itab_zycit003.

    ENDLOOP.

* << Fim da exclusão

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

    ELSE.

      itab_zycit003-fabric = /pws/zycie006-fabricante.

* << Fim da inclusão

  ENDIF.

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

  SELECT SINGLE * FROM lfa1

    WHERE lifnr EQ /pws/zycie006-lifnr.

  LOOP AT itab_zycit003.

    itab_zycit003-paquis = lfa1-land1.

* << Fim da exclusão

    IF NOT itab_zycit003-lifnrfabr IS INITIAL.

      SELECT SINGLE land1 FROM lfa1

        INTO itab_zycit003-porigem

        WHERE lifnr EQ itab_zycit003-lifnrfabr.

      IF sy-subrc EQ 0.

        itab_zycit003-flagfabr = 'S'.

      ELSE.

        CLEAR itab_zycit003-flagfabr.

      ENDIF.

    ELSE.

      IF NOT itab_zycit003-fabric EQ '3' AND

         NOT itab_zycit003-fabric EQ '2'.

        CLEAR itab_zycit003-porigem.

      ENDIF.

      CLEAR itab_zycit003-flagfabr.

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

    ENDIF.

    IF itab_zycit003-fabric EQ 3 AND

       NOT itab_zycit003-paisfab IS INITIAL AND

       itab_zycit003-porigem IS INITIAL.

      itab_zycit003-porigem = itab_zycit003-paisfab.

* << Fim da exclusão

    ENDIF.

    MODIFY itab_zycit003.

  ENDLOOP.

ENDFORM.

 

...

 

...

 

FORM propor_fabricante.

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

  DATA: v_lifnrfabr TYPE /pws/zycit003-lifnrfabr.

  IF NOT itab_zycit003[] IS INITIAL.

    SELECT lifnr land1 FROM lfa1

    INTO TABLE itab_lfa1

    FOR ALL ENTRIES IN itab_zycit003

    WHERE lifnr EQ itab_zycit003-lifnrfabr.

  ENDIF.

  SORT itab_zycit003 BY lifnrfabr.

* << Fim da inclusão

  READ TABLE itab_zycit003 INDEX 1.

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

  v_lifnrfabr = itab_zycit003-lifnrfabr.

* << Fim da inclusão

  IF sy-tcode EQ '/PWS/ZYCI003_C' AND

  v_fabr IS INITIAL AND

  ( /pws/zycie001-modalidade EQ '01' OR

    /pws/zycie001-modalidade EQ '11' ).

    v_fabr = 'X'.

    LOOP AT itab_zycit003 WHERE

                  lifnrfabr NE  space.

    ENDLOOP.

    IF sy-subrc NE 0.

      v_tpfabr = /pws/zycie006-fabricante = 3.

    ELSE.

      LOOP AT itab_zycit003 WHERE

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

                    lifnrfabr NE itab_zycit003-lifnrfabr.

* << Fim da exclusão

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

                    lifnrfabr NE v_lifnrfabr.

* << Fim da inclusão

        EXIT.

      ENDLOOP.

      IF sy-subrc NE 0 AND

         NOT itab_zycit003-lifnrfabr IS INITIAL.

        /pws/zycie006-lifnrfabr = itab_zycit003-lifnrfabr.

        /pws/zycie006-fabricante = 0.

        SELECT SINGLE *

        FROM lfa1

        WHERE lifnr = /pws/zycie006-lifnrfabr.

        IF sy-subrc EQ 0.

          /pws/zycie006-descfab = lfa1-name1.

          /pws/zycie006-paisfab = lfa1-land1.

        ENDIF.

        IF /pws/zycie006-lifnrfabr EQ /pws/zycie006-lifnr.

          /pws/zycie006-fabricante = 1.

        ENDIF.

      ELSE.

        /pws/zycie006-fabricante = 2.

      ENDIF.

    ENDIF.

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

    LOOP AT itab_zycit003.

* << Fim da inclusão

    IF /pws/zycie006-fabricante EQ '0'.

      itab_zycit003-fabric = 2.

    ELSE.

      itab_zycit003-fabric = /pws/zycie006-fabricante.

    ENDIF.

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

    MODIFY itab_zycit003 TRANSPORTING fabric

          WHERE fabric NE itab_zycit003-fabric.

  ELSEIF sy-tcode = '/PWS/ZYCI003_C' AND

      NOT itab_zycit003-lifnrfabr IS INITIAL.

    LOOP AT itab_zycit003.

      ON CHANGE OF itab_zycit003-lifnrfabr.

        SELECT SINGLE * FROM lfa1

        WHERE lifnr EQ itab_zycit003-lifnrfabr.

      ENDON.

* << Fim da exclusão

      IF itab_zycit003-paisfab IS INITIAL.

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

        MOVE lfa1-land1 TO itab_zycit003-paisfab.

        MOVE lfa1-land1 TO itab_zycit003-porigem.

        MODIFY itab_zycit003.

* << Fim da exclusão

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

        READ TABLE itab_lfa1 WITH KEY lifnr = itab_zycit003-lifnrfabr.

        IF sy-subrc EQ 0.

          itab_zycit003-paisfab = itab_zycit003-porigem = lfa1-land1.

        ENDIF.

* << Fim da inclusão

      ENDIF.

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

      MODIFY itab_zycit003 TRANSPORTING fabric paisfab .

* << Fim da inclusão

    ENDLOOP.

  ENDIF.

ENDFORM.

 

...

 

 

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

Modificações efetuadas em REPS /PWS/MZYCI003I01

 

...

    CLEAR : itab_zycit006-lifnrfabr,

            itab_zycit006-descfab,

            itab_zycit006-paisfab.

    MODIFY itab_zycit006 TRANSPORTING lifnrfabr descfab paisfab

                                     WHERE nrseq EQ /pws/zycie006-nrseq.

    v_paisfab = 'X' .

  ENDIF.

  LOOP AT itab_zycit003.

    IF  '023' CA /pws/zycie006-fabricante .

      CLEAR :

* >> Início da exclusão: MODULE ATUALIZA_PAIS

              itab_zycit003-lifnrfabr,

* << Fim da exclusão

              itab_zycit003-descfab ,

              itab_zycit003-porigem ,

              /pws/zycie003-porigem .

      IF /pws/zycie006-fabricante  NE '3'.

        CLEAR itab_zycit003-paisfab.

      ELSE.

        itab_zycit003-paisfab = /pws/zycie006-paisfab.

      ENDIF.

      CLEAR : /pws/zycie003-paisfab,

              /pws/zycie003-lifnrfabr,

...

 

 

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

Modificações efetuadas em REPS /PWS/MZYCI003X01

 

...

 

* >> Início da inclusão:

DATA wa_adrc       LIKE adrc.

* << Fim da inclusão

DATA: END OF COMMON PART.

 

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

Modificações efetuadas em REPS /PWS/MZYCI003F01

 

...

      v_trunc = trunc( v_trunc ) .

      v_qtd_iten = v_trunc / 10000.

      IF itab_zycit003-invoiced NE v_qtd_iten AND

         itab_zycit003-servico NE 'X'.

        MESSAGE e061 WITH text-192 itab_zycit003-ebeln

                                   itab_zycit003-ebelp text-193.

      ENDIF.

    ENDLOOP.

  ELSEIF /pws/zycie006-tpfatura EQ '01'.

    IF '02' CA /pws/zycie006-fabricante.

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

      LOOP AT itab_zycit003.

        READ TABLE itab_zycit080 WITH KEY ebeln = itab_zycit003-ebeln

        ebelp = itab_zycit003-ebelp.

        IF sy-subrc NE 0 AND

        NOT itab_zycit003-lifnrfabr IS INITIAL.

          MOVE itab_zycit003 TO /pws/zycie003 .

          PERFORM carrega_fabricante .

        ENDIF.

      ENDLOOP.

* << Fim da inclusão

      if itab_zycit080[] is initial.

         v_msg = 'X'.

      endif.

      LOOP AT itab_zycit080.

        IF ( itab_zycit080-name1  IS INITIAL OR

             itab_zycit080-landa  IS INITIAL OR

             itab_zycit080-logradouro IS INITIAL OR

             itab_zycit080-nrlogr IS INITIAL OR

             itab_zycit080-city   IS INITIAL OR

             itab_zycit080-regio  IS INITIAL ) .

...

 

...

  PERFORM consiste_sequencial.

  PERFORM rotina_de_contabilizacao.

  PERFORM salvar_bco.

  IF sy-binpt EQ 'X'.

    EXPORT /pws/zycie006 TO MEMORY ID 'BPFATIMP_01'.

  ENDIF.

  IF /pws/zycie006-tpfatura EQ '04' AND v_salva_desp EQ 'X'.

    PERFORM salva_zycit047.

  ENDIF.

  IF '02' CA /pws/zycie006-fabricante.

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

    IF itab_zycit080[] IS INITIAL.

      LOOP AT itab_zycit003.

        IF NOT itab_zycit003-lifnrfabr IS INITIAL.

          IF itab_zycit003-flagfabr = 'S'.

          SELECT SINGLE lifnr name1 land1 adrnr stras ort01 ort02 regio

                    FROM lfa1

                    INTO CORRESPONDING FIELDS OF wa_lfa1

                    WHERE lifnr EQ /pws/zycie003-lifnrfabr.

            SELECT SINGLE * FROM adrc INTO wa_adrc

                   WHERE addrnumber EQ wa_lfa1-adrnr.

            SELECT SINGLE bezei FROM t005u INTO /pws/zycie080a-regio

            WHERE land1 = wa_lfa1-land1 AND

                  spras = sy-langu AND

                  bland = wa_adrc-region.

            /pws/zycie080a-name1       = wa_lfa1-name1.

            IF NOT itab_zycit003-paisfab IS INITIAL.

              /pws/zycie080a-landa       = itab_zycit003-paisfab.

            ELSE.

              /pws/zycie080a-landa       = wa_lfa1-land1.

            ENDIF.

            /pws/zycie080a-nrlogr      = wa_lfa1-adrnr.

            /pws/zycie080a-logradouro  = wa_lfa1-stras.

            /pws/zycie080a-compl       = wa_lfa1-ort02.

            /pws/zycie080a-city        = wa_lfa1-ort01.

          ENDIF.

          MOVE /pws/zycie080a TO itab_zycit080.

          itab_zycit080-mandt = sy-mandt.

          itab_zycit080-prog = sy-repid.

          itab_zycit080-nrseqli = /pws/zycie006-nrseq.

          itab_zycit080-ebeln   = itab_zycit003-ebeln.

          itab_zycit080-ebelp   = itab_zycit003-ebelp.

          itab_zycit080-tipoforn = 'D' .

          APPEND itab_zycit080.

        ENDIF.

        itab_zycit003-descfab = /pws/zycie080a-name1 .

        itab_zycit003-paisfab = /pws/zycie080a-landa.

        MODIFY itab_zycit003 TRANSPORTING descfab paisfab

                        WHERE  ebeln = itab_zycit080-ebeln

                        AND    ebelp = itab_zycit080-ebelp.

      ENDLOOP.

    ENDIF.

* << Fim da inclusão

    SELECT * FROM /pws/zycit080 INTO TABLE lt_zycit080

       WHERE nrseqli = /pws/zycie006-nrseq

       AND   tipoforn = 'D'.

    LOOP AT lt_zycit080.

      READ TABLE itab_zycit080 WITH KEY nrseqli  = lt_zycit080-nrseqli

                                       tipoforn = lt_zycit080-tipoforn.

      IF sy-subrc EQ 0.

        MOVE-CORRESPONDING lt_zycit080 TO /pws/zycit080.

        PERFORM carrega_log USING '/PWS/ZYCIT080' 'D'

                ' '  '/PWS/SAPMZYCI003' /pws/zycie006-nrseq.

...