CE PLUS - Nota 012764

Módulo: DOC. IMPORTAÇÃO

Funcionalidade: PLI

Data/Hora da Publicação: 14/01/2013 00:00:00

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

Descrição da Nota: PLI - CANCELAMENTO DE ITEM

Sintoma

Atualmente a rotina de cópia da PLI somente permite copiar itens que tenham saldo no pedido. Porém o

saldo do pedido somente é considerado utilizado quando é aceito e registrado na SUFRAMA.  Isso

impede que o cliente utilize o saldo de um item que foi cancelado em uma PLI em outra PLI criada

posteriormente.

 

 

Solução

Novo campo para indicar cancelamento de item de PLI e tratar saldo do pedido para ser utilizado em

outras PLI¿s.

 

Versões Tratadas

9.0

Informações Complementares

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

Nota Número 12764 Data: 14/01/2013 Hora: 11:14:10

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

 

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

Nota Número              : 12764

Categoria                : Melhoria

Prioridade               : Média

Versão PW.CE             : 9.0

Pacote                   : 00003

Agrupamento              : 00144

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

Referência às notas relacionadas:

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

 

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

PLI - CANCELAMENTO DE ITEM

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

Palavras Chave:

PLI - CANCELAR ITEM

 

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

Objetos da nota:

DTEL /PWS/ZYCIL940

TABD /PWS/ZYCIT079

DYNP /PWS/SAPMZYCI020                        0502

REPS /PWS/MZYCI020O01

REPS /PWS/MZYCI020I01

REPS /PWS/MZYCI020F02

 

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

Modificações efetuadas em DTEL /PWS/ZYCIL940

 

* CRIAR O ELEMENTOS DE DADOS ATRAVÉS DA TRANSAÇÃO SE11: /PWS/ZYCIL940

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

Elemento de dados incluído: /PWS/ZYCIL940

Classe de desenvolvimento: /PWS/ZYCI

Idioma original: PT

Descrição breve incluída: (14 caracteres), idioma: EN

"Item cancelled"

Descrição breve incluída: (14 caracteres), idioma: PT

"Item cancelado"

Descrição breve incluída: (14 caracteres), idioma: ES

"Item cancelado"

Categoria de dados: Domínio

Domínio: FLAG

ID parâmetro:

Nome componente default:

Documentar modificações: NÃO

Nome da ajuda de pesquisa:

Parâmetro da ajuda de pesquisa:

Comprimento máximo do denominador breve: 10

Denominador breve incluído (9 caracteres), idioma: EN

"Cancelled"

Denominador breve incluído (9 caracteres), idioma: PT

"Cancelado"

Denominador breve incluído (9 caracteres), idioma: ES

"Cancelado"

Comprimento máximo do denominador médio: 15

Denominador médio incluído (14 caracteres), idioma: EN

"Item cancelled"

Denominador médio incluído (14 caracteres), idioma: PT

"Item cancelado"

Denominador médio incluído (14 caracteres), idioma: ES

"Item cancelado"

Comprimento máximo do denominador longo: 20

Denominador longo incluído (14 caracteres), idioma: EN

"Item cancelled"

Denominador longo incluído (14 caracteres), idioma: PT

"Item cancelado"

Denominador longo incluído (14 caracteres), idioma: ES

"Item cancelado"

Comprimento máximo do título: 14

Título incluído (14 caracteres), idioma: EN

"Item cancelled"

Título incluído (14 caracteres), idioma: PT

"Item cancelado"

Título incluído (14 caracteres), idioma: ES

"Item cancelado"

 

 

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

Modificações efetuadas em TABD /PWS/ZYCIT079

 

* UTILIZANDO A TRANSAÇÃO SE11, INCLUIR UM NOVO CAMPO NA TABELA /PWS/ZYCIT079, ELE DEVE SER O ÚLTIMO

* CAMPO DA TABELA

 

CAMPO     ELEMENTO DE DADOS

CANCEL   /PWS/ZYCIL940

 

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

Modificações efetuadas em DYNP /PWS/SAPMZYCI020                        0502

 

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

 

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

 

 

 

MODIFICAR LÓGICA DE PROCESSAMENTO TELA 0502

process before output.

 module: load_dados_502,

         set_screen_sub.

 loop at it_zycit079

   cursor tc_item_pli-current_line.

   module: carrega_zycie079_400,

           set_screen_sub.

* >> Início da inclusão:

    MODULE: set_screen_pli.

* << Fim da inclusão

 endloop.

process after input.

 loop at it_zycit079.

   chain.

     field /pws/zycie079-qtd_iten module trata_saldo_pexpam

     on chain-request.

   endchain.

   module altera_it_zycit079_400.

 endloop.

  module: atualiza_dados_502,

...

 

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

Modificações efetuadas em REPS /PWS/MZYCI020O01

 

* >> Início da inclusão:

MODULE set_screen_pli OUTPUT.

  IF it_zycit079-cancel EQ 'X'.

    LOOP AT SCREEN.

      IF screen-name EQ '/PWS/ZYCIE079-QTD_ITEN' OR

         screen-name EQ '/PWS/ZYCIE079-NTGEW' OR

         screen-name EQ '/PWS/ZYCIE079-FATOR' OR

         screen-name EQ '/PWS/ZYCIE079-SUBS_EXIGENCIA'.

        screen-input = 0.

      ENDIF.

      MODIFY SCREEN.

    ENDLOOP.

  ENDIF.

ENDMODULE.

* << Fim da inclusão

 

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

Modificações efetuadas em REPS /PWS/MZYCI020I01

 

...

        /pws/zycie079-netpr    TO it_zycit079-netpr    ,

        /pws/zycie079-qtd_iten TO it_zycit079-qtd_iten ,

        /pws/zycie079-ntgew    TO it_zycit079-ntgew    ,

        /pws/zycie079-gewei    TO it_zycit079-gewei    ,

        /pws/zycie079-steuc1   TO it_zycit079-steuc1   ,

        /pws/zycie079-fator    TO it_zycit079-fator    ,

        /pws/zycie079-qtdest   TO it_zycit079-qtdest   ,

        /pws/zycie079-zum      TO it_zycit079-zum      ,

        /pws/zycie079-codsufra TO it_zycit079-codsufra ,

        /pws/zycie079-subs_exigencia TO it_zycit079-subs_exigencia,

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

        /pws/zycie079-cancel    TO it_zycit079-cancel,

* << Fim da inclusão

        mark              TO it_zycit079-mark     .

  it_zycit079-nrseqli    = /pws/zycie078-nrseqli.

  it_zycit079-slqtde     = /pws/zycie092-slqtde.

  IF NOT /pws/zycie079-steuc1 IS INITIAL.

    SELECT SINGLE text1

           FROM t604n

           INTO /pws/zycit181-descricao

           WHERE steuc EQ /pws/zycie079-steuc1

           AND   spras EQ sy-langu      .               "#EC CI_GENBUFF

    IF sy-subrc NE 0.

      MOVE space TO /pws/zycit181-descricao.

    ENDIF.

  ELSE.

    MOVE space TO /pws/zycit181-descricao.

  ENDIF.

  IF it_zycit079-ncm IS INITIAL.

    it_zycit079-ncm = it_zycit079-steuc1.

  ENDIF.

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

  IF sy-ucomm EQ 'DELETE'.

    CLEAR: it_zycit079_aux.

    READ TABLE it_zycit079_aux WITH KEY

                              ebeln = it_zycit079-ebeln

                              ebelp = it_zycit079-ebelp.

    IF sy-subrc EQ 0.

      IF it_zycit079_aux-qtd_iten EQ it_zycit079-qtd_iten AND

         it_zycit079_aux-cancel   NE it_zycit079-cancel   AND

         it_zycit079-cancel       EQ 'X'.

        it_zycit079-slqtde = it_zycit079-slqtde + it_zycit079-qtd_iten.

      ELSEIF it_zycit079_aux-qtd_iten EQ it_zycit079-qtd_iten AND

             it_zycit079_aux-cancel   NE it_zycit079-cancel   AND

             it_zycit079-cancel EQ ' '.

        IF it_zycit079-slqtde EQ '0.000'.

          MESSAGE w061 WITH text-012 it_zycit079-ebelp

                            text-013 it_zycit079-ebeln.

          it_zycit079-cancel = 'X'.

        ELSEIF it_zycit079-qtd_iten > it_zycit079-slqtde.

          MESSAGE w061 WITH text-012 it_zycit079-ebelp

                            text-013 it_zycit079-ebeln.

          it_zycit079-cancel = 'X'.

        ELSE.

         it_zycit079-slqtde = it_zycit079-slqtde - it_zycit079-qtd_iten.

        ENDIF.

      ENDIF.

    ENDIF.

  ENDIF.

* << Fim da inclusão

  IF sy-dynnr EQ '0403'.

    MODIFY it_zycit079 INDEX tc_item_lsi-current_line.

  ELSE.

    MODIFY it_zycit079 INDEX tc_item_pli-current_line.

  ENDIF.

  IF sy-subrc NE 0.

    READ TABLE it_zycit079_aux WITH KEY

                                ebeln    = it_zycit079-ebeln

                                ebelp    = it_zycit079-ebelp.

    IF sy-subrc NE 0.

...

 

 

 

...

          ENDIF.

        ENDIF.

        CLEAR v_resp_save.

      WHEN 'SAVE'.

        /pws/zycie078-flagpli = 'X'.

        PERFORM comm_savepli.

      WHEN 'PED'.

        PERFORM atualiza_variaveis.

        CALL SELECTION-SCREEN '0300'.

      WHEN 'COPY'.

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

        PERFORM comm_copy.

* << Fim da exclusão

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

        PERFORM comm_copy_pli.

* << Fim da inclusão

      WHEN 'CANCEL'.

        PERFORM comm_cancelpli.

      WHEN 'LISUBST'.

        PERFORM comm_lisubst_pli.

      WHEN 'DET'.

        CLEAR: v_executou.

        PERFORM comm_detli.

      WHEN 'DTLI'.

      WHEN 'OBLI'.

        PERFORM observacao_li.

...

 

 

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

Modificações efetuadas em REPS /PWS/MZYCI020F02

 

...

    SELECT ebeln ebelp menge bstyp FROM ekpo

    INTO TABLE itab_ekpo

    FOR ALL ENTRIES IN it_zycit092

    WHERE ebeln EQ it_zycit092-ebeln

      AND ebelp EQ it_zycit092-ebelp.

    SELECT * FROM /pws/zycit079

    INTO TABLE itab_zycit079_util

      FOR ALL ENTRIES IN it_zycit092

      WHERE ebeln EQ it_zycit092-ebeln

        AND ebelp EQ it_zycit092-ebelp.                 "#EC CI_NOFIRST

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

    DELETE itab_zycit079_util WHERE cancel = 'X'.

* << Fim da inclusão

  ENDIF.

  LOOP AT it_zycit092.

    CLEAR: itab_ekpo, itab_zycit079_util.

    READ TABLE itab_ekpo WITH KEY ebeln = it_zycit092-ebeln

                                  ebelp = it_zycit092-ebelp.

    IF sy-subrc EQ 0.

      CLEAR v_qtdemb.

      LOOP AT itab_zycit079_util WHERE ebeln EQ it_zycit092-ebeln

                                 AND   ebelp EQ it_zycit092-ebelp.

        SELECT SINGLE * FROM /pws/zycit078

...

 

 

 

...

* >> Início da inclusão:

FORM comm_copy_pli.

  DATA: BEGIN OF lt_zycit078 OCCURS 0,

          nrseqli TYPE /pws/zycit078-nrseqli,

          flagpli TYPE /pws/zycit078-flagpli,

        END OF lt_zycit078.

  DATA: BEGIN OF lt_zycit079 OCCURS 0,

          nrseqli  TYPE /pws/zycit079-nrseqli,

          ebeln    TYPE /pws/zycit079-ebeln,

          ebelp    TYPE /pws/zycit079-ebelp,

          qtd_iten TYPE /pws/zycit079-qtd_iten,

          cancel   TYPE /pws/zycit079-cancel,

        END OF lt_zycit079.

  DATA: BEGIN OF lt_zycit079_aux OCCURS 0,

          ebeln    TYPE /pws/zycit079-ebeln,

          ebelp    TYPE /pws/zycit079-ebelp,

          qtd_iten TYPE /pws/zycit079-qtd_iten,

        END OF lt_zycit079_aux.

  IF v_tcode EQ '/PWS/ZYCI020_I' OR

     v_tcode EQ '/PWS/ZYCI020_G'.

    PERFORM save.

  ENDIF.

  FREE it_zycit079_copy.

  IF NOT it_zycit079[] IS INITIAL.

    SELECT nrseqli ebeln ebelp qtd_iten cancel

      FROM /pws/zycit079

      INTO TABLE lt_zycit079

      FOR ALL ENTRIES IN it_zycit079

      WHERE ebeln EQ it_zycit079-ebeln

        AND ebelp EQ it_zycit079-ebelp.

    DELETE lt_zycit079 WHERE cancel = 'X'.

    IF NOT lt_zycit079[] IS INITIAL.

      SELECT nrseqli flagpli

        FROM /pws/zycit078

        INTO TABLE lt_zycit078

        FOR ALL ENTRIES IN lt_zycit079

        WHERE nrseqli EQ lt_zycit079-nrseqli.

      LOOP AT lt_zycit079.

        CLEAR: lt_zycit078.

        READ TABLE lt_zycit078 WITH KEY nrseqli = lt_zycit079-nrseqli.

        IF sy-subrc EQ 0 AND lt_zycit078-flagpli EQ 'X'.

          MOVE-CORRESPONDING lt_zycit079 TO lt_zycit079_aux.

          COLLECT lt_zycit079_aux.

        ENDIF.

      ENDLOOP.

    ENDIF.

  ENDIF.

  LOOP AT it_zycit079.

    CLEAR: lt_zycit079_aux.

    READ TABLE lt_zycit079_aux WITH KEY ebeln = it_zycit079-ebeln

                                        ebelp = it_zycit079-ebelp.

    IF sy-subrc EQ 0.

      IF it_zycit079-menge > lt_zycit079_aux-qtd_iten AND

         NOT it_zycit079-nrseqli IS INITIAL.

        CLEAR: it_zycit079_copy.

        MOVE it_zycit079 TO it_zycit079_copy.

        APPEND it_zycit079_copy.

      ENDIF.

    ELSE.

      IF NOT it_zycit079-nrseqli IS INITIAL AND

         it_zycit079-slqtde > '0.000'.

        CLEAR: it_zycit079_copy.

        MOVE it_zycit079 TO it_zycit079_copy.

        APPEND it_zycit079_copy.

      ENDIF.

    ENDIF.

  ENDLOOP.

  IF it_zycit079_copy[] IS INITIAL.

    MESSAGE e015 WITH text-463 text-464.

  ELSE.

    LOOP AT it_zycit079.

      v_indice = sy-tabix.

     READ TABLE it_zycit079_copy WITH KEY nrseqli = it_zycit079-nrseqli

                                                tpli = it_zycit079-tpli

                                              ebeln = it_zycit079-ebeln

                                              ebelp = it_zycit079-ebelp.

      IF sy-subrc <> 0.

        DELETE it_zycit079 INDEX v_indice.

      ENDIF.

    ENDLOOP.

  ENDIF.

  PERFORM quest_gravacao.

  IF v_resp_save NE 'A'.

    CASE v_tcode.

      WHEN '/PWS/ZYCI020_A' OR '/PWS/ZYCI020_E'.

        v_tcode  = '/PWS/ZYCI020_C'.

      WHEN '/PWS/ZYCI020_N' OR '/PWS/ZYCI020_R'.

        v_tcode  = '/PWS/ZYCI020_P'.

      WHEN '/PWS/ZYCI020_G' OR '/PWS/ZYCI020_L'.

        v_tcode = '/PWS/ZYCI020_I'.

    ENDCASE.

    PERFORM find_nrseqc.

    wa_zycit078-usernamec = sy-uname.

    wa_zycit078-dtuserc   = sy-datum.

    MOVE: space TO wa_zycit078-usernamea,

          space TO wa_zycit078-dtusera,

          space TO wa_zycit078-identify,

          space TO wa_zycit078-nrli,

          space TO wa_zycit078-dtreg,

          space TO wa_zycit078-dtdef,

          space TO wa_zycit078-dtvencto,

          space TO wa_zycit078-nrseqlisub,

          space TO wa_zycit078-nrlisub,

          space TO wa_zycit078-nrseqlisuba,

          space TO wa_zycit078-nrlisuba.

    CLEAR: /pws/zycie078-nrpli, /pws/zycie078-dtreg,

    /pws/zycie078-dtvencto, /pws/zycie078-dtdef, v_nrpli, v_dtreg.

    LOOP AT it_zycit079.

      CLEAR: /pws/zycie079-numli, /pws/zycie079-nrli,

              it_zycit079-numli, it_zycit079-nrli,

              it_zycit079-cancel.

      IF NOT it_zycit079-nrseqli IS INITIAL AND

         it_zycit079-slqtde < it_zycit079-qtd_iten.

        it_zycit079-qtd_iten = it_zycit079-slqtde.

        it_zycit079-slqtde = 0.

      ELSE.

        it_zycit079-slqtde = it_zycit079-slqtde - it_zycit079-qtd_iten.

      ENDIF.

      MODIFY it_zycit079 INDEX sy-tabix.

    ENDLOOP.

    wa_zycit078-nrseqli     = /pws/zycie078-nrseqli.

    IF /pws/zycie078-tpli EQ 'N'.

      IF v_tcode EQ '/PWS/ZYCI020_C'.

        MESSAGE s015 WITH text-045.

      ELSEIF v_tcode EQ '/PWS/ZYCI020_I'.

        MESSAGE s015 WITH text-055.

      ENDIF.

    ELSEIF /pws/zycie078-tpli EQ 'S'.

      MESSAGE s015 WITH text-046.

    ENDIF.

  ENDIF.

ENDFORM.

* << Fim da inclusão