CE PLUS - Nota 011357

Módulo: DOC. IMPORTAÇÃO

Funcionalidade: Recebimento

Data/Hora da Publicação: 26/07/2011 00:00:00

Data/Hora Última Alteração: 17/02/2012 15:29:51

Descrição da Nota: RECEBIMENTO COM RATEIO QUANTITATIVO - DESENVOLVIMENTO ADICIONAL

Sintoma

Desenvolvimento Adicional - Recebimento com rateio quantitativo

 

Deverá ser feito uma modificação na BAPI da MIRO para considerar a mesma quantidade informada no

pedido de compras quanto tiver distribuição quantitativa como forma de rateio.

 

 

Solução

Se a distribuição for quantitativa na aba classificação contábil do pedido de compra e a quantidade

informada pela MIRO for diferente da quantidade informada no pedido, criar uma mensagem: quantidade

da MIRO diferente da quantidade do pedido. Deseja alterar? Caso positivo, abrir uma tela para que o

usuário informe a quantidade correta dos itens. Caso negativo, realizar a MIRO sem alteração.

 

Versões Tratadas

8.0


Pré-Requisitos

Produto:

Nota

Descrição

AO DAR ERRO NA BAPI DA MIRO, PROGRAMA NÃO REALIZAVA ROLLBACK.

QUANTIDADE NA UNIDADE DE PREÇO PARA PEDIDO SEM MATERIAL

Informações Complementares

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

Nota Número 11357 Data: 26/07/2011 Hora: 16:41:36

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

 

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

Nota Número              : 11357

Categoria                : Melhoria

Prioridade               : Baixa

Versão PW.CE             : 8.0

Pacote                   : 00008

Agrupamento              : 00079

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

Referência às notas relacionadas:

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

 

09713  - 00001 - 8.0    - 00002  - QUANTIDADE NA UNIDADE DE PREÇO PARA PEDIDO SEM MATERIAL

11113  - 00002 - 8.0    - 00007  - AO DAR ERRO NA BAPI DA MIRO, PROGRAMA NÃO REALIZAVA ROLLBACK.

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

RECEBIMENTO COM RATEIO QUANTITATIVO - DESENVOLVIMENTO ADICIONAL

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

Palavras Chave:

RECEBIMENTO - RATEIO QUANTITATIVO

 

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

Objetos da nota:

CUAD /PWS/SAPMZYCI017

DYNP /PWS/SAPMZYCI017                        0113

REPS /PWS/MZYCI017F01

REPS /PWS/MZYCI017I01

REPS /PWS/MZYCI017O01

REPS /PWS/MZYCI017TOP

REPS /PWS/MZYCI017X01

REPT /PWS/SAPMZYCI017

TABL /PWS/ZYCIT510

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

Modificações efetuadas em CUAD /PWS/SAPMZYCI017

 

* Criar o Status GUI 0113 conforme abaixo:

 

STATUS: 0113

 

ATRIBUTOS DE STATUS

TEXTO BREVE: Distribuição Quantitativa

 

* Definir os códigos de funções abaixo:

TECLAS DE FUNÇÃO -> BARRA FERRAM.

 

ENTER

BACK

%EX

CANCEL

 

 

* Criar o Títs. GUI 0113 conforme abaixo:

 

TÍTS GUI

CODE TÍTULO: 0113

TÍTULO:      Distribuição Quantitativa

 

 

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

Modificações efetuadas em DYNP /PWS/SAPMZYCI017                        0113

 

INCLUIR CX.DIÁLOGO 0113

Descrição                Distribuição Quantitativa

Tela seguinte            0113

Altura atual (linhas)    16

Largura atual (colunas)  145

 

INCLUIR CONTROLE DE TABELA "TC_DISTRI"

Altura                   14

Comprimento Visível      144

Linha                    1

Coluna                   2

 

INCLUIR TEXTO "EKKN-EBELN" em tbl.contr./tabstr.

Altura                   10

Comprimento Visível      15

Linha                    1

Coluna                   1

Formato                  CHAR

Texto                    Doc.compra

 

INCLUIR TEXTO "EKKN-EBELP" em tbl.contr./tabstr.

Altura                   5

Comprimento Visível      15

Linha                    1

Coluna                   2

Formato                  CHAR

Texto                    Item

 

INCLUIR TEXTO "EKKN-ZEKKN" em tbl.contr./tabstr.

Altura                   2

Comprimento Visível      15

Linha                    1

Coluna                   3

Formato                  CHAR

Texto                    Nº seq.ClCont

 

INCLUIR TEXTO "EKKN-MENGE" em tbl.contr./tabstr.

Altura                   17

Comprimento Visível      15

Linha                    1

Coluna                   4

Formato                  CHAR

Texto                    Quantidade

 

INCLUIR TEXTO "EKKN-SAKTO" em tbl.contr./tabstr.

Altura                   10

Comprimento Visível      15

Linha                    1

Coluna                   5

Formato                  CHAR

Texto                    Conta do Razão

 

INCLUIR TEXTO "EKKN-GSBER" em tbl.contr./tabstr.

Altura                   4

Comprimento Visível      15

Linha                    1

Coluna                   6

Formato                  CHAR

Texto                    Divisão

 

INCLUIR TEXTO "EKKN-KOSTL" em tbl.contr./tabstr.

Altura                   10

Comprimento Visível      15

Linha                    1

Coluna                   7

Formato                  CHAR

Texto                    Centro custo

 

INCLUIR TEXTO "EKKN-ANLN1" em tbl.contr./tabstr.

Altura                   12

Comprimento Visível      15

Linha                    1

Coluna                   8

Formato                  CHAR

Texto                    Imobilizado

 

INCLUIR TEXTO "EKKN-ANLN2" em tbl.contr./tabstr.

Altura                   4

Comprimento Visível      15

Linha                    1

Coluna                   9

Formato                  CHAR

Texto                    Subnº

 

INCLUIR TEXTO "EKKN-AUFNR" em tbl.contr./tabstr.

Altura                   12

Comprimento Visível      15

Linha                    1

Coluna                   10

Formato                  CHAR

Texto                    Ordem

 

INCLUIR TEXTO "EKKN-PRCTR" em tbl.contr./tabstr.

Altura                   10

Comprimento Visível      15

Linha                    1

Coluna                   11

Formato                  CHAR

Texto                    Centro de lucro

 

INCLUIR TEXTO "EKKN-PS_PSP_PNR" em tbl.contr./tabstr.

Altura                   24

Comprimento Visível      15

Linha                    1

Coluna                   12

Formato                  CHAR

Texto                    Elemento PEP

 

INCLUIR TEXTO "EKKN-NPLNR" em tbl.contr./tabstr.

Altura                   12

Comprimento Visível      15

Linha                    1

Coluna                   13

Formato                  CHAR

Texto                    Diag.rede

 

INCLUIR CAMPO TEXTO "EKKN-EBELN" em tbl.contr./tabstr.

Altura                   10

Comprimento Visível      10

Linha                    1

Coluna                   1

Formato                  CHAR

Linhas mínimas           10

Texto                    __________

Código função

 

INCLUIR CAMPO TEXTO "EKKN-EBELP" em tbl.contr./tabstr.

Altura                   5

Comprimento Visível      5

Linha                    1

Coluna                   2

Formato                  NUMC

Linhas mínimas           5

Texto                    _____

Código função

 

INCLUIR CAMPO TEXTO "EKKN-ZEKKN" em tbl.contr./tabstr.

Altura                   2

Comprimento Visível      2

Linha                    1

Coluna                   3

Formato                  NUMC

Linhas mínimas           2

Texto                    __

 

INCLUIR CAMPO TEXTO "EKKN-MENGE" em tbl.contr./tabstr.

Altura                   17

Comprimento Visível      17

Linha                    1

Coluna                   4

Formato                  QUAN

Campo referência         EKPO-MEINS

Linhas mínimas           13

Colunas mínimas          3

Texto                    _.___.___.___,___

 

INCLUIR CAMPO TEXTO "EKKN-SAKTO" em tbl.contr./tabstr.

Altura                   10

Comprimento Visível      10

Linha                    1

Coluna                   5

Formato                  CHAR

Linhas mínimas           10

Texto                    __________

Código função

 

INCLUIR CAMPO TEXTO "EKKN-GSBER" em tbl.contr./tabstr.

Altura                   4

Comprimento Visível      4

Linha                    1

Coluna                   6

Formato                  CHAR

Linhas mínimas           4

Texto                    ____

Código função

 

INCLUIR CAMPO TEXTO "EKKN-KOSTL" em tbl.contr./tabstr.

Altura                   10

Comprimento Visível      10

Linha                    1

Coluna                   7

Formato                  CHAR

Linhas mínimas           10

Texto                    __________

Código função

 

INCLUIR CAMPO TEXTO "EKKN-ANLN1" em tbl.contr./tabstr.

Altura                   12

Comprimento Visível      12

Linha                    1

Coluna                   8

Formato                  CHAR

Linhas mínimas           12

Texto                    ____________

Código função

 

INCLUIR CAMPO TEXTO "EKKN-ANLN2" em tbl.contr./tabstr.

Altura                   4

Comprimento Visível      4

Linha                    1

Coluna                   9

Formato                  CHAR

Linhas mínimas           4

Texto                    ____

Código função

 

INCLUIR CAMPO TEXTO "EKKN-AUFNR" em tbl.contr./tabstr.

Altura                   12

Comprimento Visível      12

Linha                    1

Coluna                   10

Formato                  CHAR

Linhas mínimas           12

Texto                    ____________

Código função

 

INCLUIR CAMPO TEXTO "EKKN-PRCTR" em tbl.contr./tabstr.

Altura                   10

Comprimento Visível      10

Linha                    1

Coluna                   11

Formato                  CHAR

Linhas mínimas           10

Texto                    __________

 

INCLUIR CAMPO TEXTO "EKKN-PS_PSP_PNR" em tbl.contr./tabstr.

Altura                   24

Comprimento Visível      24

Linha                    1

Coluna                   12

Formato                  NUMC

Linhas mínimas           8

Texto                    ________________________

Código função

 

INCLUIR CAMPO TEXTO "EKKN-NPLNR" em tbl.contr./tabstr.

Altura                   12

Comprimento Visível      12

Linha                    1

Coluna                   13

Formato                  CHAR

Linhas mínimas           12

Texto                    ____________

Código função

 

INCLUIR BOTÃO "V_OKAY"

Altura                   4

Comprimento Visível      12

Linha                    16

Coluna                   2

Formato                  CHAR

Texto                    @0V@

Código função            OKAY

 

INCLUIR BOTÃO "V_CANCEL"

Altura                   4

Comprimento Visível      10

Linha                    16

Coluna                   7

Formato                  CHAR

Texto                    @0W@

Código função            CANCEL

 

INCLUIR BOTÃO "V_DEL"

Altura                   4

Comprimento Visível      9

Linha                    16

Coluna                   12

Formato                  CHAR

Texto                    @11@

Código função            DEL

 

INCLUIR OKCODE ""

 

MODIFICAR LÓGICA DE PROCESSAMENTO TELA 0113

* >> Início da inclusão:

PROCESS BEFORE OUTPUT.

  MODULE status_0113.

  LOOP AT itab_ekkn_a WITH CONTROL tc_distri

     CURSOR tc_distri-current_line.

    MODULE alimenta_ekkn.

  ENDLOOP.

PROCESS AFTER INPUT.

  LOOP AT itab_ekkn_a.

    MODULE alimenta_ekkn_a.

  ENDLOOP.

  MODULE user_command_0113.

* << Fim da inclusão

 

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

Modificações efetuadas em REPS /PWS/MZYCI017F01

 

...

FORM executar_evento.

  CASE okcode.

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

    WHEN 'DISTRI'.

      IF gc_subscreen-prog = '0200'.

        READ TABLE itab_zycit044 WITH KEY mark = 'X'.

        IF sy-subrc EQ 0.

          PERFORM distribuicao USING itab_zycit044-ebeln

                                     itab_zycit044-ebelp.

        ELSE.

          MESSAGE w015 WITH text-266.

        ENDIF.

      ELSEIF gc_subscreen-prog = '0100'.

        READ TABLE itab_zycit042 WITH KEY mark = 'X'.

        IF sy-subrc EQ 0.

          PERFORM distribuicao USING itab_zycit042-ebeln

                                     itab_zycit042-ebelp.

        ELSE.

          MESSAGE w015 WITH text-266.

        ENDIF.

      ENDIF.

* << Fim da inclusão

...

 

 

...

    WHEN 'RECEB'.

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

      IF v_distribuicao EQ 'S'.

        IF itab_ekkn_b[] IS INITIAL.

          CLEAR: v_answer.

          PERFORM popup_message USING text-271 text-272.

          IF v_answer NE 'J'.

            PERFORM executa_batch_input.

            CLEAR v_modo_bi.

          ENDIF.

        ELSE.

          PERFORM executa_batch_input.

          CLEAR v_modo_bi.

        ENDIF.

      ELSE.

* << Fim da inclusão

      PERFORM executa_batch_input.

      CLEAR v_modo_bi.

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

      ENDIF.

* << Fim da inclusão

    WHEN 'MODO'.

      DATA: v_autoriza ,

            v_uname    LIKE sy-uname.

      CLEAR v_uname.

      v_uname = sy-uname.

...

 

...

FORM fill_date_mr1m.

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

  DATA: lv_menge LIKE itab_itemdata-quantity.

* << Fim da inclusão

...

 

...

    itab_zycit031-wrbtr  = itab_custo_item-vlmov.

    itab_zycit031-waers  = itab_custo_item-waers_mov.

    itab_zycit031-meins = itab_itens_nf-meins.

    itab_zycit031-mwskz  = wa_zycit000-iva.

    APPEND itab_zycit031.

    itab_zycie033-rmwwr = itab_custo_item-vlmov + itab_zycie033-rmwwr.

    itab_zycie033-waers = itab_custo_item-waers_mov.

  ENDLOOP.

  APPEND itab_zycie033.

  IF NOT itab_zycit031[] IS INITIAL.

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

    SELECT ebeln ebelp bprme twrkz bpumz bpumn

* << Fim da exclusão

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

    SELECT ebeln ebelp bprme twrkz bpumz bpumn vrtkz

* << Fim da inclusão

          FROM ekpo INTO TABLE itab_ekpo

      FOR ALL ENTRIES IN itab_zycit031

      WHERE ebeln = itab_zycit031-ebeln

        AND ebelp = itab_zycit031-ebelp.

  ENDIF.

...

 

...

      IF NOT v_xblnr IS INITIAL.

        itab_itemdata-item_text = v_sgtxt.

      ENDIF.

      APPEND itab_itemdata.

    ENDIF.

  ENDLOOP.

  LOOP AT itab_ekpo WHERE NOT twrkz IS initial.

  ENDLOOP.

  IF sy-subrc = 0.

    IF NOT itab_ekpo[] IS INITIAL.

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

      CLEAR: itab_ekkn_mult[], itab_ekkn_mult.

* << Fim da inclusão

      SELECT * FROM ekkn INTO TABLE itab_ekkn_mult

        FOR ALL ENTRIES IN itab_ekpo

        WHERE ebeln = itab_ekpo-ebeln AND

              ebelp = itab_ekpo-ebelp.

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

      IF NOT itab_ekkn_mult[] IS INITIAL.

        PERFORM trata_itab_ekkn_mult.

      ENDIF.

      CLEAR: itab_zycit510, itab_zycit510[].

* << Fim da inclusão

    ENDIF.

    LOOP AT itab_zycit031.

      READ TABLE itab_ekpo WITH KEY ebeln = itab_zycit031-ebeln

                                      ebelp = itab_zycit031-ebelp

                                      twrkz = 'X'.

      LOOP AT itab_ekpo WHERE ebeln = itab_zycit031-ebeln AND

                                   ebelp = itab_zycit031-ebelp AND

                                   NOT twrkz IS initial.

      ENDLOOP.

      IF sy-subrc EQ 0.

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

        CLEAR v_indice.

* << Fim da exclusão

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

        CLEAR: v_indice, lv_menge.

* << Fim da inclusão

        LOOP AT itab_ekkn_mult WHERE ebeln = itab_zycit031-ebeln AND

                                  ebelp = itab_zycit031-ebelp.

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

          lv_menge = lv_menge + itab_ekkn_mult-menge.

* << Fim da inclusão

          v_indice = v_indice + 1.

        ENDLOOP.

        CLEAR:  v_cont2, v_quantity, v_amount.

        LOOP AT itab_ekkn_mult WHERE ebeln = itab_zycit031-ebeln AND

                                  ebelp = itab_zycit031-ebelp.

          v_cont2 = v_cont2 + 1.

          READ TABLE itab_itemdata

                    WITH KEY po_number = itab_zycit031-ebeln

                             po_item   = itab_zycit031-ebelp.

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

          READ TABLE itab_zycit003 WITH KEY ebeln = itab_zycit031-ebeln

                                            ebelp = itab_zycit031-ebelp.

* << Fim da inclusão

          IF v_cont2 = v_indice.

            v_item_amount = itab_zycit031-wrbtr - v_amount.

            itab_account-quantity = itab_zycit031-menge - v_quantity.

            itab_account-item_amount = v_item_amount.

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

            IF itab_ekpo-vrtkz = '1'.

              PERFORM preenche_zycit510.

            ENDIF.

          ELSE.

            IF ( itab_zycit031-menge = itab_zycit003-menge AND

               itab_ekpo-vrtkz = '1' ) OR

               ( itab_ekkn_mult-v_parcial = 'X' ).

              itab_account-quantity = itab_ekkn_mult-menge.

              v_item_amount2 = itab_zycit031-wrbtr

                / itab_zycit031-menge * itab_ekkn_mult-menge .

              itab_account-item_amount = v_item_amount2.

              PERFORM preenche_zycit510.

            ELSE.

              IF itab_ekpo-vrtkz = '1'.

                IF itab_zycit031-menge = lv_menge.

                  itab_account-quantity = itab_ekkn_mult-menge.

                  v_item_amount2 = itab_zycit031-wrbtr

                    / itab_zycit031-menge * itab_ekkn_mult-menge.

                  itab_account-item_amount = v_item_amount2.

* << Fim da inclusão

          ELSE.

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

                 itab_account-quantity = itab_zycit031-menge / v_indice.

                  IF itab_account-quantity > itab_ekkn_mult-menge.

                    itab_account-quantity = itab_ekkn_mult-menge.

* << Fim da inclusão

            v_item_amount2 = itab_zycit031-wrbtr

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

                           / itab_zycit031-menge * itab_ekkn_mult-menge.

                  ELSE.

                    v_item_amount2 = itab_zycit031-wrbtr / v_indice.

                  ENDIF.

                  itab_account-item_amount = v_item_amount2.

                ENDIF.

                PERFORM preenche_zycit510.

              ELSE.

                itab_account-quantity = itab_zycit031-menge

* << Fim da inclusão

                    /  100 * itab_ekkn_mult-vproz .

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

            itab_account-quantity = itab_zycit031-menge

* << Fim da exclusão

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

                v_item_amount2 = itab_zycit031-wrbtr

* << Fim da inclusão

                    /  100 * itab_ekkn_mult-vproz .

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

                itab_account-item_amount = v_item_amount2.

              ENDIF.

            ENDIF.

* << Fim da inclusão

            v_quantity = v_quantity + itab_account-quantity.

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

            itab_account-item_amount = v_item_amount2.

* << Fim da exclusão

            v_amount = v_amount + itab_account-item_amount.

          ENDIF.

         itab_account-invoice_doc_item = itab_itemdata-invoice_doc_item.

          itab_account-serial_no        = itab_ekkn_mult-zekkn.

          IF wa_zycit000-iva IS INITIAL.

            SELECT SINGLE mwskz FROM ekpo

...

 

 

...

            itemdata         = itab_itemdata

            accountingdata   = itab_account

            return           = itab_return.

  READ TABLE itab_return INTO wa_return INDEX 1.

  IF sy-subrc EQ 0.

    CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.

  ELSE.

    CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'

         EXPORTING

              wait = 'X'.

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

    IF NOT itab_zycit510[] IS INITIAL.

      PERFORM grava_zycit510.

    ENDIF.

* << Fim da inclusão

  ENDIF.

  PERFORM atualiza_dados_miro.

ENDFORM.

...

 

...

* >> Início da inclusão:

FORM distribuicao   USING    p_ebeln

                             p_ebelp.

  DATA: v_vrtkz  TYPE ekpo-vrtkz,

        lv_tabix LIKE sy-tabix.

  CLEAR: v_vrtkz.

  SELECT SINGLE vrtkz FROM ekpo

    INTO v_vrtkz

    WHERE ebeln = p_ebeln

      AND ebelp = p_ebelp.

  IF sy-subrc EQ 0 AND v_vrtkz EQ 1.

    CLEAR: itab_ekkn_a, itab_ekkn_a[], itab_zycit510, itab_zycit510[].

    SELECT * FROM ekkn

      INTO TABLE itab_ekkn_a

      WHERE ebeln = p_ebeln

        AND ebelp = p_ebelp.

    IF v_existe_nfr EQ 'S'.

      SELECT * FROM /pws/zycit510

         INTO TABLE itab_zycit510

         WHERE nrseqnf   = /pws/zycie043-nrseq

           AND nrseq     = /pws/zycit001-nrseq

           AND nfglobal  = /pws/zycie043-nfglobal

           AND nfremessa = /pws/zycie043-nfremessa

           AND ebeln     = p_ebeln

           AND ebelp     = p_ebelp.

    ELSE.

      SELECT * FROM /pws/zycit510

         INTO TABLE itab_zycit510

         WHERE nrseqnf   = /pws/zycie041-nrseq

          AND nrseq     = /pws/zycit001-nrseq

          AND nfglobal  = /pws/zycie041-nfglobal

           AND ebeln     = p_ebeln

           AND ebelp     = p_ebelp.

    ENDIF.

    IF NOT itab_zycit510[] IS INITIAL.

      LOOP AT itab_ekkn_a.

        lv_tabix = sy-tabix.

        READ TABLE itab_zycit510 WITH KEY zekkn = itab_ekkn_a-zekkn.

        IF sy-subrc NE 0.

          DELETE itab_ekkn_a INDEX lv_tabix.

        ELSE.

          itab_ekkn_a-menge = itab_zycit510-menge.

          MODIFY itab_ekkn_a INDEX lv_tabix.

        ENDIF.

      ENDLOOP.

    ELSE.

      SELECT * FROM /pws/zycit510

         INTO TABLE itab_zycit510

         WHERE ebeln     = p_ebeln

           AND ebelp     = p_ebelp.

      IF NOT itab_zycit510[] IS INITIAL.

        LOOP AT itab_zycit510.

          IF v_existe_nfr EQ 'S' AND

             itab_zycit510-nrseq = /pws/zycit001-nrseq AND

             itab_zycit510-nfremessa IS INITIAL.

            DELETE FROM /pws/zycit510 WHERE

                                  nrseqnf   = itab_zycit510-nrseqnf

                              AND nrseq     = itab_zycit510-nrseq

                              AND nfglobal  = itab_zycit510-nfglobal

                              AND nfremessa = itab_zycit510-nfremessa

                              AND ebeln     = itab_zycit510-ebeln

                              AND ebelp     = itab_zycit510-ebelp.

            IF sy-subrc EQ 0.

              COMMIT WORK AND WAIT.

            ENDIF.

            DELETE itab_zycit510 WHERE

                                  nrseqnf   = itab_zycit510-nrseqnf

                              AND nrseq     = itab_zycit510-nrseq

                              AND nfglobal  = itab_zycit510-nfglobal

                              AND nfremessa = itab_zycit510-nfremessa

                              AND ebeln     = itab_zycit510-ebeln

                              AND ebelp     = itab_zycit510-ebelp.

            CONTINUE.

          ENDIF.

          READ TABLE itab_ekkn_a WITH KEY zekkn = itab_zycit510-zekkn.

          IF sy-subrc EQ 0.

            lv_tabix = sy-tabix.

            itab_ekkn_a-menge = itab_ekkn_a-menge - itab_zycit510-menge.

            MODIFY itab_ekkn_a INDEX lv_tabix.

          ENDIF.

        ENDLOOP.

        DELETE itab_ekkn_a WHERE menge = '0.000'.

      ENDIF.

    ENDIF.

    IF NOT itab_ekkn_a[] IS INITIAL.

      CLEAR: itab_ekkn_a, itab_ekkn_c, itab_ekkn_c[].

      itab_ekkn_c[] = itab_ekkn_a[].

      CALL SCREEN '0113' STARTING AT 10 2.

    ENDIF.

  ELSE.

    MESSAGE w015 WITH text-270.

  ENDIF.

ENDFORM.

FORM alimenta_itab_ekkn_b.

  CLEAR: itab_zycit510, itab_zycit510[].

  DELETE itab_ekkn_b WHERE ebeln = itab_ekkn_a-ebeln

                      AND  ebelp = itab_ekkn_a-ebelp.

  LOOP AT itab_ekkn_a.

    itab_ekkn_b = itab_ekkn_a.

    APPEND itab_ekkn_b.

    CHECK NOT itab_ekkn_a-menge IS INITIAL.

    IF v_existe_nfr EQ 'S'.

      itab_zycit510-nrseqnf   = /pws/zycie043-nrseq.

      itab_zycit510-nrseq     = /pws/zycit001-nrseq.

      itab_zycit510-nfglobal  = /pws/zycie043-nfglobal.

      itab_zycit510-nfremessa = /pws/zycie043-nfremessa.

      itab_zycit510-ebeln     = itab_ekkn_a-ebeln.

      itab_zycit510-ebelp     = itab_ekkn_a-ebelp.

      itab_zycit510-zekkn     = itab_ekkn_a-zekkn.

      itab_zycit510-menge     = itab_ekkn_a-menge.

    ELSE.

      itab_zycit510-nrseqnf   = /pws/zycie041-nrseq.

      itab_zycit510-nrseq     = /pws/zycit001-nrseq.

      itab_zycit510-nfglobal  = /pws/zycie041-nfglobal.

      itab_zycit510-ebeln     = itab_ekkn_a-ebeln.

      itab_zycit510-ebelp     = itab_ekkn_a-ebelp.

      itab_zycit510-zekkn     = itab_ekkn_a-zekkn.

      itab_zycit510-menge     = itab_ekkn_a-menge.

    ENDIF.

    APPEND itab_zycit510.

  ENDLOOP.

  IF NOT itab_zycit510[] IS INITIAL.

    DELETE FROM /pws/zycit510 WHERE nrseqnf   = itab_zycit510-nrseqnf

                           AND nrseq     = itab_zycit510-nrseq

                           AND nfglobal  = itab_zycit510-nfglobal

                           AND nfremessa = itab_zycit510-nfremessa

                           AND ebeln     = itab_zycit510-ebeln

                           AND ebelp     = itab_zycit510-ebelp.

    MODIFY /pws/zycit510 FROM TABLE itab_zycit510.

    COMMIT WORK AND WAIT.

  ENDIF.

ENDFORM.

FORM deletar_registros.

  DELETE itab_ekkn_b WHERE ebeln = itab_ekkn_a-ebeln

                      AND  ebelp = itab_ekkn_a-ebelp.

  IF v_existe_nfr EQ 'S'.

    DELETE FROM /pws/zycit510 WHERE nrseqnf   = /pws/zycie043-nrseq

                                AND nrseq     = /pws/zycit001-nrseq

                                AND nfglobal  = /pws/zycie043-nfglobal

                                AND nfremessa = /pws/zycie043-nfremessa

                                AND ebeln     = itab_ekkn_a-ebeln

                                AND ebelp     = itab_ekkn_a-ebelp.

  ELSE.

    DELETE FROM /pws/zycit510 WHERE nrseqnf   = /pws/zycie041-nrseq

                                AND nrseq     = /pws/zycit001-nrseq

                                AND nfglobal  = /pws/zycie041-nfglobal

                                AND ebeln     = itab_ekkn_a-ebeln

                                AND ebelp     = itab_ekkn_a-ebelp.

  ENDIF.

  COMMIT WORK AND WAIT.

  LEAVE TO SCREEN 0.

ENDFORM.

FORM preenche_zycit510.

  CHECK itab_ekpo-vrtkz = '1'.

  IF v_existe_nfr EQ 'S'.

    itab_zycit510-nrseqnf   = /pws/zycie043-nrseq.

    itab_zycit510-nrseq     = /pws/zycit001-nrseq.

    itab_zycit510-nfglobal  = /pws/zycie043-nfglobal.

    itab_zycit510-nfremessa = /pws/zycie043-nfremessa.

    itab_zycit510-ebeln     = itab_ekkn_mult-ebeln.

    itab_zycit510-ebelp     = itab_ekkn_mult-ebelp.

    itab_zycit510-zekkn     = itab_ekkn_mult-zekkn.

    itab_zycit510-menge     = itab_account-quantity.

  ELSE.

    itab_zycit510-nrseqnf   = /pws/zycie041-nrseq.

    itab_zycit510-nrseq     = /pws/zycit001-nrseq.

    itab_zycit510-nfglobal  = /pws/zycie041-nfglobal.

    itab_zycit510-ebeln     = itab_ekkn_mult-ebeln.

    itab_zycit510-ebelp     = itab_ekkn_mult-ebelp.

    itab_zycit510-zekkn     = itab_ekkn_mult-zekkn.

    itab_zycit510-menge     = itab_account-quantity.

  ENDIF.

  APPEND itab_zycit510.

ENDFORM.

FORM grava_zycit510.

  LOOP AT itab_zycit510.

    DELETE FROM /pws/zycit510 WHERE nrseqnf    = itab_zycit510-nrseqnf

                                 AND nrseq     = itab_zycit510-nrseq

                                 AND nfglobal  = itab_zycit510-nfglobal

                                 AND nfremessa = itab_zycit510-nfremessa

                                 AND ebeln     = itab_zycit510-ebeln

                                 AND ebelp     = itab_zycit510-ebelp.

  ENDLOOP.

  MODIFY /pws/zycit510 FROM TABLE itab_zycit510.

  COMMIT WORK AND WAIT.

ENDFORM.

FORM trata_itab_ekkn_mult.

  DATA: lv_tabix LIKE sy-tabix.

  CLEAR: itab_zycit510, itab_zycit510[].

  IF v_existe_nfr EQ 'S'.

    SELECT * FROM /pws/zycit510

       INTO TABLE itab_zycit510

       FOR ALL ENTRIES IN itab_ekkn_mult

       WHERE nrseqnf   = /pws/zycie043-nrseq

         AND nrseq     = /pws/zycit001-nrseq

         AND nfglobal  = /pws/zycie043-nfglobal

         AND nfremessa = /pws/zycie043-nfremessa

         AND ebeln     = itab_ekkn_mult-ebeln

         AND ebelp     = itab_ekkn_mult-ebelp

         AND zekkn     = itab_ekkn_mult-zekkn.

  ELSE.

    SELECT * FROM /pws/zycit510

       INTO TABLE itab_zycit510

       FOR ALL ENTRIES IN itab_ekkn_mult

       WHERE nrseqnf   = /pws/zycie041-nrseq

        AND nrseq      = /pws/zycit001-nrseq

        AND nfglobal   = /pws/zycie041-nfglobal

         AND ebeln     = itab_ekkn_mult-ebeln

         AND ebelp     = itab_ekkn_mult-ebelp

         AND zekkn     = itab_ekkn_mult-zekkn.

  ENDIF.

  IF NOT itab_zycit510[] IS INITIAL.

    LOOP AT itab_ekkn_mult.

      lv_tabix = sy-tabix.

      READ TABLE itab_zycit510 WITH KEY ebeln = itab_ekkn_mult-ebeln

                                        ebelp = itab_ekkn_mult-ebelp

                                        zekkn = itab_ekkn_mult-zekkn.

      IF sy-subrc NE 0.

        READ TABLE itab_ekpo WITH KEY ebeln = itab_ekkn_mult-ebeln

                                      ebelp = itab_ekkn_mult-ebelp.

        IF itab_ekpo-vrtkz EQ '1'.

          DELETE itab_ekkn_mult INDEX lv_tabix.

        ENDIF.

      ELSE.

        itab_ekkn_mult-menge = itab_zycit510-menge.

        itab_ekkn_mult-v_parcial = 'X'.

        MODIFY itab_ekkn_mult INDEX lv_tabix.

      ENDIF.

    ENDLOOP.

  ELSE.

    SELECT * FROM /pws/zycit510

       INTO TABLE itab_zycit510

       FOR ALL ENTRIES IN itab_ekkn_mult

       WHERE ebeln = itab_ekkn_mult-ebeln

         AND ebelp = itab_ekkn_mult-ebelp.

    IF NOT itab_zycit510[] IS INITIAL.

      LOOP AT itab_zycit510.

        IF v_existe_nfr EQ 'S' AND

           itab_zycit510-nrseq = /pws/zycit001-nrseq AND

           itab_zycit510-nfremessa IS INITIAL.

          DELETE FROM /pws/zycit510 WHERE

                                nrseqnf   = itab_zycit510-nrseqnf

                            AND nrseq     = itab_zycit510-nrseq

                            AND nfglobal  = itab_zycit510-nfglobal

                            AND nfremessa = itab_zycit510-nfremessa

                            AND ebeln     = itab_zycit510-ebeln

                            AND ebelp     = itab_zycit510-ebelp.

          IF sy-subrc EQ 0.

            COMMIT WORK AND WAIT.

          ENDIF.

          DELETE itab_zycit510 WHERE

                                nrseqnf   = itab_zycit510-nrseqnf

                            AND nrseq     = itab_zycit510-nrseq

                            AND nfglobal  = itab_zycit510-nfglobal

                            AND nfremessa = itab_zycit510-nfremessa

                            AND ebeln     = itab_zycit510-ebeln

                            AND ebelp     = itab_zycit510-ebelp.

          CONTINUE.

        ENDIF.

        READ TABLE itab_ekkn_mult WITH KEY ebeln = itab_zycit510-ebeln

                                           ebelp = itab_zycit510-ebelp

                                           zekkn = itab_zycit510-zekkn.

        IF sy-subrc EQ 0.

          lv_tabix = sy-tabix.

          itab_ekkn_mult-menge =

                             itab_ekkn_mult-menge - itab_zycit510-menge.

          MODIFY itab_ekkn_mult INDEX lv_tabix.

        ENDIF.

      ENDLOOP.

      DELETE itab_ekkn_mult WHERE menge = '0.000'.

    ENDIF.

  ENDIF.

ENDFORM.

FORM verifica_item.

  LOOP AT itab_ekkn_a.

    READ TABLE itab_ekkn_c WITH KEY ebeln = itab_ekkn_a-ebeln

                                    ebelp = itab_ekkn_a-ebelp

                                    zekkn = itab_ekkn_a-zekkn.

    IF sy-subrc EQ 0 AND itab_ekkn_a-menge > itab_ekkn_c-menge.

      MESSAGE e015 WITH text-275 itab_ekkn_c-menge

                                    text-276 itab_ekkn_a-zekkn.

    ENDIF.

  ENDLOOP.

ENDFORM.

* << Fim da inclusão

 

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

Modificações efetuadas em REPS /PWS/MZYCI017I01

 

...

      WHEN  '0050' OR '0100' OR '0200' .

* >> Início da inclusão: MODULE USER_COMMAND_EXIT

        CLEAR: itab_ekkn_b, itab_ekkn_b[].

* << Fim da inclusão

...

 

...

* >> Início da inclusão:

MODULE alimenta_ekkn_a INPUT.

  itab_ekkn_a = ekkn.

  MODIFY itab_ekkn_a INDEX tc_distri-current_line.

ENDMODULE.

MODULE user_command_0113 INPUT.

  DATA: lv_menge   TYPE /pws/zycit003-qtd_iten,

        lv_menge_a TYPE /pws/zycit044-qtd_item.

  IF sy-ucomm EQ 'CANCEL'.

    LEAVE TO SCREEN 0.

  ELSEIF sy-ucomm EQ 'DEL'.

    PERFORM deletar_registros.

  ELSEIF sy-ucomm EQ 'OKAY'.

    READ TABLE itab_zycit003 WITH KEY ebeln = itab_ekkn_a-ebeln

                                      ebelp = itab_ekkn_a-ebelp.

    IF sy-subrc EQ 0.

      CLEAR: lv_menge, lv_menge_a.

      LOOP AT itab_ekkn_a.

        lv_menge = lv_menge + itab_ekkn_a-menge.

      ENDLOOP.

      lv_menge_a = lv_menge.

      IF v_existe_nfr EQ 'S'.

        READ TABLE itab_zycit044 WITH KEY ebeln = itab_ekkn_a-ebeln

                                          ebelp = itab_ekkn_a-ebelp.

        IF sy-subrc EQ 0.

          IF lv_menge_a = itab_zycit044-qtd_item.

            PERFORM verifica_item.

            PERFORM alimenta_itab_ekkn_b.

            LEAVE TO SCREEN 0.

          ELSE.

            MESSAGE w015 WITH text-273 text-274.

          ENDIF.

        ENDIF.

      ELSE.

        IF lv_menge = itab_zycit003-qtd_iten.

          PERFORM verifica_item.

          PERFORM alimenta_itab_ekkn_b.

          LEAVE TO SCREEN 0.

        ELSE.

          MESSAGE w015 WITH text-273 text-274.

        ENDIF.

      ENDIF.

    ENDIF.

  ENDIF.

ENDMODULE.

* << Fim da inclusão

 

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

Modificações efetuadas em REPS /PWS/MZYCI017O01

 

...

MODULE status_0050 OUTPUT.

* >> Início da inclusão: MODULE STATUS_0050

  DATA: BEGIN OF lt_ekpo OCCURS 0,

          ebeln TYPE ekpo-ebeln,

          ebelp TYPE ekpo-ebelp,

          vrtkz TYPE ekpo-vrtkz,

        END OF lt_ekpo.

  CLEAR: lt_ekpo, lt_ekpo[], v_distribuicao, itab_pf_status,

         itab_pf_status[].

* << Fim da inclusão

  CASE gc_subscreen-prog.

    WHEN '0200'.

      IF sy-tcode EQ '/PWS/ZYCI017_E'

          OR v_tcode = '/PWS/ZYCI017_E'.

        READ TABLE itab_zycit044 WITH KEY serie = 'X'.

        IF sy-subrc NE 0.

          it_code-fcode = 'SERIE'. APPEND it_code.

        ENDIF.

        it_code-fcode = 'REPL'. APPEND it_code.

        it_code-fcode = 'LOTE'. APPEND it_code.

        it_code-fcode = 'ESTOR'. APPEND it_code.

        it_code-fcode = 'RECEB'. APPEND it_code.

        SET PF-STATUS '0200' EXCLUDING it_code.

        SET TITLEBAR '0200'.

      ELSE.

* >> Início da inclusão: MODULE STATUS_0050

        IF NOT /pws/zycie043-belnr_mr1m IS INITIAL.

          itab_pf_status-fcode = 'DISTRI'.

          APPEND itab_pf_status.

        ENDIF.

        IF NOT itab_zycit044[] IS INITIAL.

          SELECT ebeln ebelp vrtkz FROM ekpo

            INTO TABLE lt_ekpo

              FOR ALL ENTRIES IN itab_zycit044

                WHERE ebeln = itab_zycit044-ebeln

                  AND ebelp = itab_zycit044-ebelp.

          LOOP AT itab_zycit044.

            READ TABLE lt_ekpo WITH KEY ebeln = itab_zycit044-ebeln

                                        ebelp = itab_zycit044-ebelp.

          READ TABLE itab_zycit003 WITH KEY ebeln = itab_zycit044-ebeln

                                            ebelp = itab_zycit044-ebelp.

            IF itab_zycit044-qtd_item <> itab_zycit003-menge AND

               lt_ekpo-vrtkz = '1'.

              v_distribuicao = 'S'.

            ENDIF.

          ENDLOOP.

          IF v_distribuicao NE 'S'.

            itab_pf_status-fcode = 'DISTRI'.

            APPEND itab_pf_status.

          ENDIF.

        ENDIF.

* << Fim da inclusão

...

 

 

...

    WHEN '0100'.

* >> Início da inclusão: MODULE STATUS_0050

      IF NOT /pws/zycie041-belnr_mr1m IS INITIAL.

        itab_pf_status-fcode = 'DISTRI'.

        APPEND itab_pf_status.

      ENDIF.

      IF NOT itab_zycit042[] IS INITIAL.

        SELECT ebeln ebelp vrtkz FROM ekpo

          INTO TABLE lt_ekpo

            FOR ALL ENTRIES IN itab_zycit042

              WHERE ebeln = itab_zycit042-ebeln

                AND ebelp = itab_zycit042-ebelp.

        LOOP AT itab_zycit042.

          READ TABLE lt_ekpo WITH KEY ebeln = itab_zycit042-ebeln

                                      ebelp = itab_zycit042-ebelp.

          READ TABLE itab_zycit003 WITH KEY ebeln = itab_zycit042-ebeln

                                            ebelp = itab_zycit042-ebelp.

          IF itab_zycit042-qtd_iten <> itab_zycit003-menge AND

             lt_ekpo-vrtkz = '1'.

            v_distribuicao = 'S'.

          ENDIF.

        ENDLOOP.

        IF v_distribuicao NE 'S'.

          itab_pf_status-fcode = 'DISTRI'.

          APPEND itab_pf_status.

        ENDIF.

      ENDIF.

* << Fim da inclusão

...

 

...

* >> Início da inclusão:

MODULE alimenta_ekkn OUTPUT.

  ekkn-ebeln = itab_ekkn_a-ebeln.

  ekkn-ebelp = itab_ekkn_a-ebelp.

  ekkn-zekkn = itab_ekkn_a-zekkn.

  ekkn-menge = itab_ekkn_a-menge.

  ekkn-sakto = itab_ekkn_a-sakto.

  ekkn-gsber = itab_ekkn_a-gsber.

  ekkn-kostl = itab_ekkn_a-kostl.

  ekkn-anln1 = itab_ekkn_a-anln1.

  ekkn-anln2 = itab_ekkn_a-anln2.

  ekkn-aufnr = itab_ekkn_a-aufnr.

  ekkn-prctr = itab_ekkn_a-prctr.

  ekkn-ps_psp_pnr = itab_ekkn_a-ps_psp_pnr.

  ekkn-nplnr = itab_ekkn_a-nplnr.

ENDMODULE.

MODULE status_0113 OUTPUT.

  DESCRIBE TABLE itab_ekkn_a LINES tc_distri-lines.

  SET PF-STATUS '0113'.

  SET TITLEBAR '113'.

ENDMODULE.

* << Fim da inclusão

 

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

Modificações efetuadas em REPS /PWS/MZYCI017TOP

 

...

CONTROLS:

* >> Início da inclusão:

  tc_distri    TYPE TABLEVIEW USING SCREEN '0113',

* << Fim da inclusão

 

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

Modificações efetuadas em REPS /PWS/MZYCI017X01

 

TABLES:

* >> Início da inclusão:

  ekkn,

  /pws/zycit510,

* << Fim da inclusão

...

 

...

DATA: BEGIN OF itab_ekpo OCCURS 0,

         ebeln LIKE ekpo-ebeln,

         ebelp LIKE ekpo-ebelp,

         bprme LIKE ekpo-bprme,

         twrkz LIKE ekpo-twrkz,

         bpumz TYPE ekpo-bpumz,

         bpumn TYPE ekpo-bpumn,

* >> Início da inclusão:

         vrtkz TYPE ekpo-vrtkz,

* << Fim da inclusão

      END OF itab_ekpo.

...

 

...

* >> Início da exclusão:

DATA  itab_ekkn_mult LIKE ekkn OCCURS 0 WITH HEADER LINE.

* << Fim da exclusão

* >> Início da inclusão:

DATA: BEGIN OF itab_ekkn_mult OCCURS 0.

        INCLUDE STRUCTURE ekkn.

DATA: v_parcial.

DATA: END   OF itab_ekkn_mult.

* << Fim da inclusão

...

 

...

* >> Início da inclusão:

DATA: v_distribuicao.

DATA: itab_ekkn_a   LIKE ekkn          OCCURS 0 WITH HEADER LINE,

      itab_ekkn_b   LIKE ekkn          OCCURS 0 WITH HEADER LINE,

      itab_ekkn_c   LIKE ekkn          OCCURS 0 WITH HEADER LINE,

      itab_zycit510 LIKE /pws/zycit510 OCCURS 0 WITH HEADER LINE.

* << Fim da inclusão

DATA: END OF COMMON PART.

 

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

Modificações efetuadas em REPT /PWS/SAPMZYCI017

 

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

Incluído símbolo de texto:

 

Idioma: PT

 

Símbolo: 270

 

Texto: (51 caracteres)

"Este Pedido/Item não tem distribuição quantitativa."

 

Comprimento máximo: 51

 

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

Incluído símbolo de texto:

 

Idioma: PT

 

Símbolo: 271

 

Texto: (56 caracteres)

"Pedido possui Distribuição Quantitativa, deseja alterar?"

 

Comprimento máximo: 56

 

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

Incluído símbolo de texto:

 

Idioma: PT

 

Símbolo: 272

 

Texto: (7 caracteres)

"Atenção"

 

Comprimento máximo: 7

 

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

Incluído símbolo de texto:

 

Idioma: PT

 

Símbolo: 273

 

Texto: (37 caracteres)

"Distribuição quantitativa é diferente"

 

Comprimento máximo: 37

 

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

Incluído símbolo de texto:

 

Idioma: PT

 

Símbolo: 274

 

Texto: (26 caracteres)

"da quantidade do embarque."

 

Comprimento máximo: 27

 

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

Incluído símbolo de texto:

 

Idioma: PT

 

Símbolo: 275

 

Texto: (28 caracteres)

"Quantidade máxima permitida:"

 

Comprimento máximo: 41

 

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

Incluído símbolo de texto:

 

Idioma: PT

 

Símbolo: 276

 

Texto: (22 caracteres)

"para o N° seq. ClCont:"

 

Comprimento máximo: 30

 

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

Modificações efetuadas em TABL /PWS/ZYCIT510

 

CRIAR TABELA TRANSPARENTE: /PWS/ZYCIT510

DESCRIÇÃO BREVE: Recebimento com rateio quantitativo

 

* CARACTERÍSTICAS

CATEGORIA DA TABELA: Tabela transparente

CLASSE DE ENTREGA:   A - Tabela de aplicação (dados mestre e de movimento)

(X) - AUTUALIZAÇÃO DE TABELAS PERMITIDA

 

* CAMPOS NOVOS

CAMPOS:         TP. CAMPO          CHV.

MANDT          MANDT              X

NRSEQNF   /PWS/ZYCIL001      X

NRSEQ          /PWS/ZYCIL001      X

NFGLOBAL   /PWS/ZYCIL105      X

NFREMESSA   /PWS/ZYCIL107      X

EBELN          EBELN              X

EBELP          EBELP              X

ZEKKN          DZEKKN             X

MENGE          MENGE_D

 

* OPÇÕES TÉCNICAS

TIPO DE DADOS: APPL1 - Dados de movimento, tabelas transparentes

CATEGOR. TAMANHO: 3 - Registros dados esperados: 160.000 Até 660.000

 

(X) - AR. BUFFER NÃO PERMITIDO

(X) - AR. BUFFER NÃO PERMITIDO

(X) - AR. BUFFER NÃO PERMITIDO

(X) - AR. BUFFER NÃO PERMITIDO

(X) - AR. BUFFER NÃO PERMITIDO

(X) - AR. BUFFER NÃO PERMITIDO

(X) - AR. BUFFER NÃO PERMITIDO

(X) - AR. BUFFER NÃO PERMITIDO