CE PLUS - Nota 001516

Módulo: DOC. IMPORTAÇÃO

Funcionalidade: Embarque

Data/Hora da Publicação: 05/06/2006 00:00:00

Data/Hora Última Alteração: 20/06/2011 12:31:39

Descrição da Nota: DUMP NO EMBARQUE DE RECOF

Sintoma

Ao vincular Pedido ao embarque de Recof dá DUMP.

 

 

Solução

Retirar pedidos sem saldo da seleção.

 

Versões Tratadas

6.0

Informações Complementares

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

Nota Número 01516 Data: 05/06/2006 Hora: 11:13:44

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

 

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

Nota Número              : 01516

Categoria                : Erro de Programa

Prioridade               : Alta

Versão PW.CE             : 6.0

Pacote                   : 00023

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

Referência às notas relacionadas:

Número - Ordem - Descrição Breve

 

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

Texto Rápido:

DUMP NO EMBARQUE DE RECOF

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

Palavras Chave:

DUMP - DA - EMBARQUE - RECOF - VALOR NEGATIVO

 

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

Objetos da nota:

DYNP /PWS/SAPMZYCI001                        0003

REPS /PWS/MZYCI001F03

REPS /PWS/MZYCI001I01

REPS /PWS/MZYCI001X01

 

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

Modificações efetuadas em DYNP /PWS/SAPMZYCI001                        0003

 

*Campos inseridos na tela 0003

    Nome

       Ctg.      Linha   Coluna  CmprDf  CmVis   Altura  Format Dict  Modif At.Des.Só At

       Gr1 Gr2 Gr3 Gr4  SPA GPA ID parâm             Cód.F                TCmp   TpoLoopExbLoop

       Outros atributos

 

  - %#AUTOTEXT001

       Texto      1        8       2       3       1     CHAR

       Título de coluna TC

  - ITAB_DA-RC

       Check      1        8       1       3       1     CHAR               Ent Off

                                                     RC

       Elem.TC

 

 

* Diferenças na lógica de processamento

 

PROCESS BEFORE OUTPUT.

 

  MODULE: status_0003,

          set_screen .

 

  LOOP AT itab_da WITH CONTROL tc_selda CURSOR tc_selda-current_line.

 

  ENDLOOP .

 

PROCESS AFTER INPUT.

 

  LOOP AT itab_da.

    CHAIN.

      FIELD itab_da-qtd_nac MODULE qtd_lote ON CHAIN-REQUEST.

 

*>> Início Inclusão

      FIELD itab_da-rc      MODULE qtd_lote ON REQUEST.

*>> Fim    Inclusão

 

    ENDCHAIN.

 

    MODULE carrega_itab.

  ENDLOOP .

 

  MODULE user_command.

 

 

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

Modificações efetuadas em REPS /PWS/MZYCI001F03

 

...

ENDFORM.

FORM selecionar_itens_da.

  DATA: itab_werks LIKE itab_zycit003 OCCURS 0 WITH HEADER LINE,

        itab_t001w LIKE t001w OCCURS 0 WITH HEADER LINE.

  CLEAR  : /pws/zycie001-netpr.

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

  IF v_caller EQ 'SELECIONAR_RC'.

    DELETE itab_da WHERE rc NE 'X'.

  ELSE.

* << Fim da inclusão

  IF v_line GT '1'.

    DELETE itab_da WHERE qtd_nac IS initial.

  ENDIF.

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

  ENDIF.

* << Fim da inclusão

  READ TABLE itab_da INDEX 1.

  IF NOT itab_da[] IS INITIAL AND ( /pws/zycie001-regime EQ '14' OR

                                    /pws/zycie001-regime EQ '16' ).

    LOOP AT itab_da.

      IF NOT itab_da-lote_forn IS INITIAL.

...

 

...

      MODIFY itab_zycit443 INDEX v_tabix.

    ENDIF.

  ENDLOOP.

  IF /pws/zycie001-regime NE '16'.

    PERFORM calcula_saldo_da.

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

.

* << Fim da exclusão

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

  ELSE.

    IF NOT itab_zycit443[] IS INITIAL.

      SELECT * FROM /pws/zycit003 INTO TABLE itab_zycit003_saldo

      FOR ALL ENTRIES IN itab_zycit443

       WHERE ebeln EQ itab_zycit443-ebeln

       AND   ebelp EQ itab_zycit443-ebelp.

      IF sy-subrc EQ 0.

        SELECT nrseq  regime FROM /pws/zycit001

         INTO TABLE itab_zycit001_saldo

        FOR ALL ENTRIES IN itab_zycit003_saldo

        WHERE nrseq  EQ itab_zycit003_saldo-nrseq.

        LOOP AT itab_zycit001_saldo WHERE regime EQ '04'.

          DELETE itab_zycit003_saldo

            WHERE nrseq EQ itab_zycit001_saldo-nrseq.

        ENDLOOP.

      ENDIF.

    ENDIF.

  ENDIF.

  IF itab_zycit443[] IS INITIAL.

    MESSAGE s015 WITH text-259 text-264.

    EXIT.

* << Fim da inclusão

  ENDIF.

  LOOP AT itab_zycit443.

    READ TABLE itab_nac WITH KEY ebeln = itab_zycit443-ebeln

                                 ebelp = itab_zycit443-ebelp.

    IF sy-subrc = 0.

...

 

...

      itab_da-matnr    TO /pws/zycie443-matnr   ,

      itab_da-lote_forn TO /pws/zycie463-lote_forn,

      itab_da-qtd_lote TO /pws/zycie463-qtd_lote.

ENDFORM.

FORM calcula_saldo_da.

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

  CHECK /pws/zycie001-regime NE '16'.

* << Fim da inclusão

  SELECT * FROM /pws/zycit455 INTO TABLE itab_zycit455

    WHERE nrseqda EQ /pws/zycit442-nrseqda.

  IF sy-subrc EQ 0.

    SELECT * FROM /pws/zycit443 INTO TABLE itab_zycit443_saldo

    FOR ALL ENTRIES IN itab_zycit455

...

 

...

    IF sy-subrc EQ 0.

      SELECT nrseq  regime FROM /pws/zycit001

       INTO TABLE itab_zycit001_saldo

      FOR ALL ENTRIES IN itab_zycit003_saldo

      WHERE nrseq  EQ itab_zycit003_saldo-nrseq.

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

      IF /pws/zycie001-regime EQ '04'.

* << Fim da inclusão

      LOOP AT itab_zycit001_saldo WHERE regime EQ '16'.

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

          DELETE itab_zycit003_saldo

            WHERE nrseq EQ itab_zycit001_saldo-nrseq.

        ENDLOOP.

      ELSEIF /pws/zycie001-regime EQ '16' .

        LOOP AT itab_zycit001_saldo WHERE regime EQ '04'.

* << Fim da inclusão

        DELETE itab_zycit003_saldo

          WHERE nrseq EQ itab_zycit001_saldo-nrseq.

      ENDLOOP.

    ENDIF.

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

    ENDIF.

* << Fim da inclusão

    LOOP AT itab_zycit443.

      CLEAR v_qtdutil_da.

      v_index = sy-tabix.

      LOOP AT itab_zycit003_saldo WHERE ebeln EQ itab_zycit443-ebeln

                                  AND   ebelp EQ itab_zycit443-ebelp.

...

 

...

      WHEN 'ITAB_DA-QTD_NAC'.

        IF v_caller EQ 'SELECIONAR_RC'.

          wa_cols-screen-input = '0'.

        ENDIF.

    ENDCASE.

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

    IF wa_cols-screen-name EQ 'ITAB_DA-RC'.

      IF v_caller EQ 'SELECIONAR_RC'.

        wa_cols-screen-invisible = '0'.

      ELSE.

        wa_cols-screen-invisible = '1'.

      ENDIF.

    ENDIF.

* << Fim da inclusão

    MODIFY tc_selda-cols FROM wa_cols.

  ENDLOOP.

ENDFORM.

FORM salva_dados_da.

  data: itab_zycit463 like /pws/zycit463 occurs 0 with header line.

...

 

...

          MODIFY itab_da FROM itab_da TRANSPORTING qtd_nac.

        ENDIF.

      ENDLOOP.

    ENDIF.

    IF NOT itab_da[] IS INITIAL.

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

      SELECT * FROM /pws/zycit003 INTO TABLE itab_zycit003_saldo

      FOR ALL ENTRIES IN itab_da

       WHERE ebeln EQ itab_da-ebeln

       AND   ebelp EQ itab_da-ebelp.

      IF sy-subrc EQ 0.

        SELECT nrseq  regime FROM /pws/zycit001

         INTO TABLE itab_zycit001_saldo

        FOR ALL ENTRIES IN itab_zycit003_saldo

        WHERE nrseq  EQ itab_zycit003_saldo-nrseq.

        LOOP AT itab_zycit001_saldo WHERE regime EQ '04'.

          DELETE itab_zycit003_saldo

            WHERE nrseq EQ itab_zycit001_saldo-nrseq.

        ENDLOOP.

        LOOP AT itab_da.

          clear v_qtdutil_da.

          LOOP AT itab_zycit003_saldo where ebeln eq itab_da-ebeln

                                      and   ebelp eq itab_da-ebelp.

            v_qtdutil_da = v_qtdutil_da + itab_zycit003_saldo-qtd_iten.

          ENDLOOP.

          itab_da-qtd_nac = itab_da-qtd_nac - v_qtdutil_da.

          IF itab_da-qtd_nac LE 0.

            DELETE itab_da.

          ENDIF.

        ENDLOOP.

      ENDIF.

* << Fim da inclusão

      DESCRIBE TABLE itab_da LINES v_line.

      v_caller = 'SELECIONAR_RC'.

      CALL SCREEN '0003'.

    ELSE.

      MESSAGE s015 WITH text-259.

...

 

 

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

Modificações efetuadas em REPS /PWS/MZYCI001I01

 

...

    MESSAGE e015 WITH text-258.

  ENDIF.

  CLEAR: v_sld.

  MOVE itab_da[] TO itab_da_aux[].

  DESCRIBE TABLE itab_da_aux LINES v_line.

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

 if v_caller eq 'SELECIONAR_RC'.

  LOOP AT itab_da_aux WHERE NOT rc IS initial.

    IF itab_da_aux-nrseqda NE itab_da-nrseqda.

      v_dif = 'X'.

    ENDIF.

  ENDLOOP.

 else.

* << Fim da inclusão

  LOOP AT itab_da_aux WHERE NOT qtd_nac IS initial.

    IF itab_da_aux-nrseqda NE itab_da-nrseqda.

      v_dif = 'X'.

    ENDIF.

  ENDLOOP.

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

 endif.

* << Fim da inclusão

  IF v_dif = 'X'.

    MESSAGE i015 WITH text-254.

    CLEAR itab_da-qtd_nac.

    CLEAR v_dif.

    CLEAR   : itab_da_aux, itab_da_aux2.

...

 

 

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

Modificações efetuadas em REPS /PWS/MZYCI001X01

 

...

       qtd_lote LIKE /pws/zycie463-qtd_lote ,

       qtd_nac  LIKE /pws/zycie463-qtd_lote ,

       qtd_usada LIKE /pws/zycie463-qtd_lote ,

       adicao    TYPE /pws/zycie455-adicao   ,

       itseqda   TYPE /pws/zycie455-itseqda  ,

* >> Início da inclusão:

       rc        type flag,

* << Fim da inclusão

       mark.

DATA: END OF itab_da.

DATA: itab_zycit443_aux LIKE itab_zycit443 OCCURS 0 WITH HEADER LINE,

      itab_da_aux       LIKE itab_da OCCURS 0 WITH HEADER LINE,

      itab_da_aux2      LIKE itab_da OCCURS 0 WITH HEADER LINE,

...