PW.TP - Nota 004407

Módulo: PROCESSO IMPORTAÇÃO

Funcionalidade: Análise Oficial DIPJ

Data/Hora da Publicação: 13/08/2007 00:00:00

Data/Hora Última Alteração: 16/02/2011 10:01:53

Descrição da Nota: EXIT PARA TRATAMENTO DE MIX DE MÉTODOS

Sintoma

Necessidade de agrupar os métodos PRL20 e PRL60 em um único método.

 

 

Solução

Novo tratamento de exit para cálculo dos métodos.

 

Versões Tratadas

Não Usar - 2.00.0000


Pré-Requisitos

Produto:

Nota

Descrição

EXITS PARA TRATAMENTO DE AUTORIZAÇÃO

Informações Complementares

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

Nota Número 04407 Data: 13/08/2007 Hora: 17:23:16

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

 

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

Nota Número              : 04407

Categoria                : Melhoria

Prioridade               : Alta

Versão PW.TP             : 2.0

Pacote                   : 00026

Agrupamento              : 00010

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

Referência às notas relacionadas:

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

 

04398  - 00001 - 2.0    - 00026  - EXITS PARA TRATAMENTO DE AUTORIZAÇÃO

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

EXIT PARA TRATAMENTO DE MIX DE MÉTODOS

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

Palavras Chave:

EXIT PARA TRATAMENTO DE MIX DE MÉTODOS

 

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

Objetos da nota:

RELE F6DK950055 20070813 171700 PWSTP

REPS /PWS/ZYTPR042

TABL /PWS/ZYTPT066

 

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

Modificações efetuadas em RELE F6DK950055 20070813 171700 PWSTP

 

 

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

Modificações efetuadas em REPS /PWS/ZYTPR042

 

REPORT  /pws/zytpr042 LINE-SIZE 1023 NO STANDARD PAGE HEADING.

TYPE-POOLS: slis.

TABLES: /pws/zytpt901, /pws/zytpt000, /pws/zytpt056.

DATA: t_001 TYPE TABLE OF /pws/zytpt001 WITH HEADER LINE,

* >> Início da inclusão:

      t_066 TYPE TABLE OF /pws/zytpt066 WITH HEADER LINE,

* << Fim da inclusão

      t_002 TYPE TABLE OF /pws/zytpt002 WITH HEADER LINE,

      t_004 TYPE TABLE OF /pws/zytpt004 WITH HEADER LINE,

      t_005 TYPE TABLE OF /pws/zytpt005 WITH HEADER LINE,

      t_006 TYPE TABLE OF /pws/zytpt006 WITH HEADER LINE,

      t_007 TYPE TABLE OF /pws/zytpt007 WITH HEADER LINE,

      t_014 TYPE TABLE OF /pws/zytpt014 WITH HEADER LINE,

      t_020 TYPE TABLE OF /pws/zytpt020 WITH HEADER LINE,

      t_025 TYPE TABLE OF /pws/zytpt025 WITH HEADER LINE,

      t_031 TYPE TABLE OF /pws/zytpt031 WITH HEADER LINE,

      t_040 TYPE TABLE OF /pws/zytpt040 WITH HEADER LINE,

...

 

...

      AND NOT valido_ate IS initial.

    IF NOT ( t_001-valido_de  LE v_data_ini

         AND t_001-valido_ate GE v_data_fim ).

      DELETE t_001.

    ENDIF.

  ENDLOOP.

  IF t_001[] IS INITIAL.

    MESSAGE s079(/pws/zytpm) WITH text-006.

    STOP.

  ENDIF.

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

  SELECT * FROM /pws/zytpt066

  INTO TABLE t_066

  FOR ALL ENTRIES IN t_001

  WHERE cod_metodo EQ t_001-cod_metodo.

* << Fim da inclusão

  IF /pws/zytpt000-met_menor_aj = 'X'.

    SELECT * FROM /pws/zytpt031

    INTO TABLE t_031

    FOR ALL ENTRIES IN t_001

    WHERE cod_metodo = t_001-cod_metodo.

    IF sy-subrc NE 0.

      MESSAGE s079(/pws/zytpm) WITH text-007.

      STOP.

    ENDIF.

    SORT t_031 BY prioridade.

...

 

...

    INTO TABLE t_040.

  ENDIF.

  SELECT * FROM /pws/zytpt025

  INTO TABLE t_025

    WHERE cd_holding = /pws/zytpt000-cod_holdin

      AND bukrs_g    = p_bukrsg

      AND sysid      = sy-sysid

      AND ( zexit = 'INFO_CLI'   OR

            zexit = 'INFO_FORN'  OR

            zexit = 'INFO_MATNR' OR

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

            zexit = 'INFO_PAIS' ).

* << Fim da exclusão

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

            zexit = 'INFO_PAIS'  OR

            zexit = 'ZTPMETDMOD' ).

* << Fim da inclusão

  DELETE t_025

   WHERE ativo <> 'X'

      OR programa = space

      OR form     = space.

ENDFORM.

FORM selecao_dados.

  DATA: t_901_aux TYPE TABLE OF /pws/zytpt901 WITH HEADER LINE.

  RANGES: r_grupo FOR /pws/zytpt020-grupo,

          r_proc_902 FOR /pws/zytpt902-processo,

          r_proc_904 FOR /pws/zytpt904-processo,

...

 

...

  ENDIF.

ENDFORM.

FORM separar_dados.

  DATA: t_902_aux TYPE TABLE OF /pws/zytpt902 WITH HEADER LINE,

        t_904_aux TYPE TABLE OF /pws/zytpt904 WITH HEADER LINE,

        t_002_aux TYPE TABLE OF /pws/zytpt002 WITH HEADER LINE,

        t_906_aux TYPE TABLE OF /pws/zytpt906 WITH HEADER LINE,

        t_059_aux TYPE TABLE OF /pws/zytpt059 WITH HEADER LINE,

        w_calc_aux LIKE t_calculo,

        t_oper_aux LIKE t_operacao OCCURS 0 WITH HEADER LINE,

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

        t_calc_ope LIKE t_operacao OCCURS 0 WITH HEADER LINE,

* << Fim da inclusão

        t_calc_met LIKE t_calculo  OCCURS 0 WITH HEADER LINE,

        t_calc_met_aux LIKE t_calculo  OCCURS 0 WITH HEADER LINE,

        v_campo(30) TYPE c,

        v_oficial(15) TYPE c.

  FIELD-SYMBOLS: <metodo>.

  RANGES: r_matnr_f FOR /pws/zytpt901-matnr.

  CHECK NOT r_matnr[] IS INITIAL.

  LOOP AT t_902 WHERE matnr IN r_matnr.

    t_902_aux = t_902.

    APPEND t_902_aux.

...

 

...

        t_059_aux = t_059.

        APPEND t_059_aux.

      ENDLOOP.

      LOOP AT t_002 WHERE matnr IN r_matnr_f.

        t_002_aux = t_002.

        APPEND t_002_aux.

      ENDLOOP.

    ENDIF.

  ENDIF.

  PERFORM identificar_metodos TABLES r_campo CHANGING v_oficial.

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

  CLEAR t_calc_ope[].

* << Fim da inclusão

  LOOP AT t_001 WHERE cmp_matn_c IN r_campo.

    IF v_oficial = t_001-cmp_matn_c.

      v_oficial = t_001-cod_metodo.

    ENDIF.

    CLEAR: w_calc_aux, t_oper_aux[].

    PERFORM calcular_metodo

     TABLES r_matnr t_902_aux t_904_aux t_002_aux t_906_aux t_oper_aux

            t_059_aux

      USING t_001

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

            t_901

   CHANGING w_calc_aux.

    IF NOT w_calc_aux IS INITIAL.

      APPEND w_calc_aux TO t_calc_met.

      IF NOT t_oper_aux[] IS INITIAL.

        APPEND LINES OF t_oper_aux TO t_calc_ope.

      ENDIF.

    ENDIF.

    LOOP AT t_066

      WHERE cod_metref EQ t_001-cod_metodo.

    ENDLOOP.

    IF sy-subrc EQ 0.

      LOOP AT t_066

        WHERE cod_metodo EQ t_066-cod_metodo

          AND cod_metref NE t_066-cod_metref.

        READ TABLE t_calc_met

          WITH KEY cod_metodo = t_066-cod_metref.

        CHECK sy-subrc NE 0.

        LOOP AT t_001

          WHERE cod_metodo EQ t_066-cod_metref.

          CLEAR: w_calc_aux, t_oper_aux[].

          PERFORM calcular_metodo

            TABLES   r_matnr

                     t_902_aux

                     t_904_aux

                     t_002_aux

                     t_906_aux

                     t_oper_aux

                     t_059_aux

            USING    t_001

* << Fim da inclusão

            t_901

   CHANGING w_calc_aux.

    IF NOT w_calc_aux IS INITIAL.

      APPEND w_calc_aux TO t_calc_met.

      IF NOT t_oper_aux[] IS INITIAL.

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

        APPEND LINES OF t_oper_aux TO t_operacao.

* << Fim da exclusão

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

              APPEND LINES OF t_oper_aux TO t_calc_ope.

            ENDIF.

* << Fim da inclusão

      ENDIF.

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

        ENDLOOP.

      ENDLOOP.

* << Fim da inclusão

    ENDIF.

  ENDLOOP.

  IF sy-subrc EQ 0.

    IF p_norele = space.

      DELETE t_calc_met

...

 

...

            ASSIGN (v_campo) TO <metodo>.

            IF sy-subrc EQ 0.

              <metodo> = w_metodo.

            ENDIF.

            v_ind = v_ind + 1.

          ENDLOOP.

        ENDIF.

      ENDIF.

    ELSE.

      READ TABLE t_calc_met INDEX 1.

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

    ENDIF.

    READ TABLE t_025 WITH KEY zexit = 'ZTPMETDMOD'.

    IF sy-subrc EQ 0 AND

      NOT t_025-programa IS INITIAL AND

      NOT t_025-form IS INITIAL.

      PERFORM (t_025-form) IN PROGRAM (t_025-programa)

        CHANGING t_066[]

                 t_902[]

                 t_calc_met[]

                 t_calc_ope[]

                 p_comp

                 t_calc_met IF FOUND.

    ENDIF.

    IF NOT t_calc_ope[] IS INITIAL.

      APPEND LINES OF t_calc_ope TO t_operacao.

* << Fim da inclusão

    ENDIF.

    PERFORM guardar_calculos

      USING t_calc_met.

  ENDIF.

ENDFORM.

FORM calcular_metodo TABLES   p_matnr STRUCTURE r_matnr

                              p_902 STRUCTURE /pws/zytpt902

                              p_904 STRUCTURE /pws/zytpt904

                              p_002 STRUCTURE /pws/zytpt002

                              p_906 STRUCTURE /pws/zytpt906

...

 

 

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

Modificações efetuadas em TABL /PWS/ZYTPT066

 

        /PWS/ZYTPT066

          Descrição breve:Relação entre Métodos

          Tabela transparente

          Versão ativa

 

 

        Administração

          Cl.desenvolvimento:/PWS/ZYTP

          Últ.modificador:PWSTP

          Data da última modificação:13.08.2007

          Classe de entrega: A

          Atualização de tabela permitida

 

 

        Configurações técnicas

          Tipo de dados:APPL0

          Ctg.tamanho:0

          Armazenamento em buffer não permitido A SAÍDA.

          Registro em log desativado

 

 

        Estrutura de campo

          Nº de campos: 3

          Comprimento total dos campos: 7

 

        Nome cpo.  C Cate Compr. Elem.dados    Texto breve                      Domín.

        ____________________________________________________________

        MANDT      X CLNT      3 MANDT         Mandante                         MANDT

        COD_METODO X NUMC      2 /PWS/ZYTPL009 TP - Código do Método de Cálculo /PWS/ZYTPD003

        COD_METREF X NUMC      2 /PWS/ZYTPL009 TP - Código do Método de Cálculo /PWS/ZYTPD003

        ____________________________________________________________

 

        Verificações de entrada (chaves externas, valores fixos)

 

          COD_METODO será verificado com base na tabela de verificação /PWS/ZYTPT001

          Atribuição de campo:

            /PWS/ZYTPT001 - MANDT = /PWS/ZYTPT066 - MANDT

            /PWS/ZYTPT001 - COD_METODO = /PWS/ZYTPT066 - COD_METODO

 

          COD_METREF será verificado com base na tabela de verificação /PWS/ZYTPT001

          Atribuição de campo:

            /PWS/ZYTPT001 - MANDT = /PWS/ZYTPT066 - MANDT

            /PWS/ZYTPT001 - COD_METODO = /PWS/ZYTPT066 - COD_METREF