CE PLUS - Nota 001787

Módulo: DRAWBACK

Funcionalidade: Forecast

Data/Hora da Publicação: 21/07/2006 00:00:00

Data/Hora Última Alteração: 17/02/2011 14:23:03

Descrição da Nota: IGUALANDO UNIDADE DE MEDIDA POR ITEM

Sintoma

O programa estava dando dump pois não havia conversão na unidade de medida por item.

 

 

Solução

Foi criado um perform para conversão na unidade de medida no for f_lista _tecnica.

 

Versões Tratadas

6.0

Informações Complementares

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

Nota Número 01787 Data: 21/07/2006 Hora: 09:58:30

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

 

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

Nota Número              : 01787

Categoria                : Melhoria

Prioridade               : Média

Versão PW.CE             : 6.0

Pacote                   : 00024

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

Referência às notas relacionadas:

Número - Ordem - Descrição Breve

 

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

Texto Rápido:

IGUALANDO UNIDADE DE MEDIDA POR ITEM

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

Palavras Chave:

LISTA TÉCNICA, EXPLOSÃO, MATERIAL, FORECAST, DUMP

 

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

Objetos da nota:

REPS /PWS/ZYCIR106

 

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

Modificações efetuadas em REPS /PWS/ZYCIR106

 

...

                                         i_final-qtunit.

        IF NOT i_final-qtunit IS INITIAL.

          COLLECT i_final.

        ENDIF.

      ENDIF.

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

    ELSE.

      IF NOT i_mat-meins IS INITIAL.

        PERFORM converte_unidades USING v_selpool-matnr

                                        v_selpool-bmein

                                        i_mat-meins

                               CHANGING v_selpool-bmeng.

      ENDIF.

* << Fim da inclusão

    ENDIF.

    DELETE i_stb WHERE menge < 0.

    LOOP AT i_stb.

      v_erro = 'N'.

      v_qtdeaux2 = v_qtdeaux * i_stb-menge.

...

 

...

    ENDIF.

    CLEAR p_qtd.

    EXIT.

  ENDIF.

ENDFORM.

* >> Início da inclusão:

FORM converte_unidades USING p_matnr

                             p_meins

                             p_meinsd

                    CHANGING p_qtd.

  DATA: v_meinsb      LIKE marm-meinh,

        v_um_rez      TYPE i,

        v_um_ren      TYPE i,

        v_um_rez1     LIKE marm-umrez,

        v_um_ren1     LIKE marm-umren,

        v_um_rez2     TYPE i,

        v_um_ren2     TYPE i.

  DATA: v_conv1       TYPE /pws/zycit245-qtd_ncm,

        v_conv2       TYPE /pws/zycit245-qtd_ncm.

  CLEAR: v_um_rez, v_um_ren, v_um_rez2, v_um_ren2.

  IF p_meins EQ p_meinsd.

    EXIT.

  ENDIF.

  v_conv1 = 1.

  CALL FUNCTION 'UNIT_CONVERSION_SIMPLE_OLD'

       EXPORTING

            input                = v_conv1

            no_type_check        = 'X'

            round_sign           = 'X'

            unit_in              = p_meins

            unit_out             = p_meinsd

       IMPORTING

            denominator          = v_um_ren

            numerator            = v_um_rez

            output               = v_conv2

       EXCEPTIONS

            conversion_not_found = 1

            division_by_zero     = 2

            input_invalid        = 3

            output_invalid       = 4

            overflow             = 5

            type_invalid         = 6

            units_missing        = 7

            unit_in_not_found    = 8

            unit_out_not_found   = 9

            OTHERS               = 10.

  IF sy-subrc = 0.

    p_qtd = ( p_qtd / v_um_ren ) * v_um_rez.

    EXIT.

  ENDIF.

  SELECT SINGLE meins FROM mara INTO v_meinsb

    WHERE matnr EQ p_matnr.

  IF v_meinsb NE p_meins.

    v_conv1 = 1.

    CALL FUNCTION 'UNIT_CONVERSION_SIMPLE_OLD'

         EXPORTING

              input                = v_conv1

              no_type_check        = 'X'

              round_sign           = 'X'

              unit_in              = p_meins

              unit_out             = v_meinsb

         IMPORTING

              denominator          = v_um_ren

              numerator            = v_um_rez

              output               = v_conv2

         EXCEPTIONS

              conversion_not_found = 1

              division_by_zero     = 2

              input_invalid        = 3

              output_invalid       = 4

              overflow             = 5

              type_invalid         = 6

              units_missing        = 7

              unit_in_not_found    = 8

              unit_out_not_found   = 9

              OTHERS               = 10.

    IF sy-subrc <> 0.

      SELECT SINGLE umrez umren

               FROM marm INTO (v_um_rez1, v_um_ren1)

               WHERE matnr = p_matnr

               AND   meinh = p_meins.

      IF sy-subrc NE 0.

        MESSAGE i015 WITH text-003 p_meins text-004 p_matnr.

        CLEAR p_qtd.

        EXIT.

      ELSE.

        v_um_rez = v_um_rez1.

        v_um_ren = v_um_ren1.

      ENDIF.

    ENDIF.

    IF v_um_rez IS INITIAL

      OR v_um_ren IS INITIAL.

      EXIT.

    ENDIF.

  ELSE.

    v_um_ren = 1.

    v_um_rez = 1.

  ENDIF.

  IF v_meinsb NE p_meinsd.

    v_conv1 = 1.

    CALL FUNCTION 'UNIT_CONVERSION_SIMPLE_OLD'

         EXPORTING

              input                = v_conv1

              no_type_check        = 'X'

              round_sign           = 'X'

              unit_in              = v_meinsb

              unit_out             = p_meinsd

         IMPORTING

              denominator          = v_um_rez2

              numerator            = v_um_ren2

              output               = v_conv2

         EXCEPTIONS

              conversion_not_found = 1

              division_by_zero     = 2

              input_invalid        = 3

              output_invalid       = 4

              overflow             = 5

              type_invalid         = 6

              units_missing        = 7

              unit_in_not_found    = 8

              unit_out_not_found   = 9

              OTHERS               = 10.

    IF sy-subrc <> 0.

      SELECT SINGLE umrez umren

               FROM marm INTO (v_um_rez1, v_um_ren1)

               WHERE matnr = p_matnr

               AND   meinh = p_meinsd.

      IF sy-subrc NE 0.

        MESSAGE i015 WITH text-003 p_meinsd text-004 p_matnr.

        CLEAR p_qtd.

        EXIT.

      ELSE.

        v_um_rez2 = v_um_rez1.

        v_um_ren2 = v_um_ren1.

      ENDIF.

    ENDIF.

    IF v_um_rez IS INITIAL

      OR v_um_ren IS INITIAL.

      EXIT.

    ENDIF.

  ELSE.

    v_um_ren2 = 1.

    v_um_rez2 = 1.

  ENDIF.

  p_qtd = p_qtd *

    ( ( v_um_rez / v_um_ren ) * ( v_um_ren2 / v_um_rez2 ) ).

ENDFORM.

* << Fim da inclusão