PW.TP - Nota 002911

Módulo: PROCESSO EXPORTAÇÃO

Funcionalidade: Analise Oficial DIPJ

Data/Hora da Publicação: 17/01/2007 00:00:00

Data/Hora Última Alteração: 16/02/2011 09:49:49

Descrição da Nota: PREÇO PARÂMETRO DO CAP ACUMULADO 4/4

Sintoma

Cálculo de Preço Parâmetro do CAP não atende todos os clientes.

 

 

 

Solução

Novo tratamento do cálculo do Preço Parâmetro do método CAP.

 

 

Versões Tratadas

Não Usar - 2.00.0000


Pré-Requisitos

Produto:

Nota

Descrição

PREÇO PARÂMETRO DO CAP ACUMULADO 1/4

Informações Complementares

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

Nota Número 02911 Data: 17/01/2007 Hora: 14:31:54

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

 

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

Nota Número              : 02911

Categoria                : Melhoria

Prioridade               : Alta

Versão PW.TP             : 2.0

Pacote                   : 00024

Agrupamento              : 00005

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

Referência às notas relacionadas:

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

 

02877  - 00001 - 2.0    - 00024  - PREÇO PARÂMETRO DO CAP ACUMULADO 1/4

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

PREÇO PARÂMETRO DO CAP ACUMULADO 4/4

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

Palavras Chave:

PREÇO PARÂMETRO DO CAP ACUMULADO - RELATÓRIO DIPJ - DEFINIÇÃO DE MÉTODOS

 

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

Objetos da nota:

REPS /PWS/ZYTPR042

REPT /PWS/ZYTPR042

TABD /PWS/ZYTPT007

TOBJ /PWS/ZYTPT007S

 

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

Modificações efetuadas em REPS /PWS/ZYTPR042

 

...

      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,

* >> Início da inclusão:

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

* << Fim da inclusão

      t_901 TYPE TABLE OF /pws/zytpt901 WITH HEADER LINE,

      t_902 TYPE TABLE OF /pws/zytpt902 WITH HEADER LINE,

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

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

      t_917 TYPE TABLE OF /pws/zytpt917 WITH HEADER LINE,

      t_918 TYPE TABLE OF /pws/zytpt918 WITH HEADER LINE,

      t_922 TYPE TABLE OF /pws/zytpt922 WITH HEADER LINE,

      t_903 TYPE TABLE OF /pws/zytpt903 WITH HEADER LINE,

      t_902_det TYPE TABLE OF /pws/zytpt902 WITH HEADER LINE,

      t_903_det TYPE TABLE OF /pws/zytpt903 WITH HEADER LINE,

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

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

* >> Início da inclusão:

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

* << Fim da inclusão

      t_lista TYPE TABLE OF spopli WITH HEADER LINE,

      BEGIN OF t_t005t OCCURS 0,

        land1 TYPE t005t-land1,

        landx TYPE t005t-landx,

      END OF t_t005t,

      BEGIN OF t_lfa1 OCCURS 0,

        lifnr TYPE lfa1-lifnr,

        land1 TYPE lfa1-land1,

        name1 TYPE lfa1-name1,

      END OF t_lfa1,

...

 

...

      BEGIN OF w_902_key,

        processo LIKE /pws/zytpt902-processo,

        parid    LIKE /pws/zytpt902-parid,

        matnr    LIKE /pws/zytpt902-matnr,

        bwkey    LIKE /pws/zytpt902-bwkey,

        bwtar    LIKE /pws/zytpt902-bwtar,

        pais     LIKE /pws/zytpt902-pais,

        ano      LIKE /pws/zytpt902-ano,

        mes      LIKE /pws/zytpt902-mes,

      END OF w_902_key,

* >> Início da inclusão:

      BEGIN OF w_059_key,

        processo LIKE /pws/zytpt059-processo,

        parid    LIKE /pws/zytpt059-parid,

        matnr    LIKE /pws/zytpt059-matnr,

        bwkey    LIKE /pws/zytpt059-bwkey,

        bwtar    LIKE /pws/zytpt059-bwtar,

        pais     LIKE /pws/zytpt059-pais,

        ano      LIKE /pws/zytpt059-ano,

        mes      LIKE /pws/zytpt059-mes,

      END OF w_059_key,

* << Fim da inclusão

      BEGIN OF w_904_key,

        matnr_o  LIKE /pws/zytpt904-matnr_o,

        matnr_f  LIKE /pws/zytpt904-matnr_f,

        processo LIKE /pws/zytpt904-processo,

        ano      LIKE /pws/zytpt904-ano,

        mes      LIKE /pws/zytpt904-mes,

        tp_lista LIKE /pws/zytpt904-tp_lista,

      END OF w_904_key,

      BEGIN OF w_002_key,

        cod_metodo LIKE /pws/zytpt002-cod_metodo,

...

 

...

        itmnum     LIKE /pws/zytpt002-itmnum,

      END OF w_002_key,

      BEGIN OF t_detalhe OCCURS 0,

         matnr       LIKE /pws/zytpt901-matnr,

         grupo       LIKE /pws/zytpt901-grupo,

         cod_metodo  LIKE /pws/zytpt001-cod_metodo,

         sel(1)      TYPE c,

         t_902       LIKE w_902_key OCCURS 0,

         t_904       LIKE w_904_key OCCURS 0,

         t_002       LIKE w_002_key OCCURS 0,

* >> Início da inclusão:

         t_059       LIKE w_059_key OCCURS 0,

* << Fim da inclusão

      END OF t_detalhe,

      BEGIN OF t_parceiros OCCURS 0,

         parid      LIKE /pws/zytpt902-parid,

         name1      LIKE lfa1-name1,

         landx      LIKE t005t-landx,

         total_op   LIKE /pws/zytpt902-preco_prtc,

         valor_ajus LIKE /pws/zytpt902-preco_prtc,

         tp_vinc    LIKE /pws/zytpt005-tp_vinculo,

         txt_vinc   LIKE /pws/zytpt005-descricao,

         expand(1)  TYPE c,

...

 

...

  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,

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

          r_proc_059 FOR /pws/zytpt059-processo,

          r_cod_util FOR /pws/zytpt059-cod_util,

* << Fim da inclusão

          r_met_002  FOR /pws/zytpt002-cod_metodo,

          r_lista    FOR /pws/zytpt904-tp_lista.

  CLEAR r_matnr[].

  IF NOT s_matnr[] IS INITIAL AND p_nosimi = 'X'.

    r_matnr[] = s_matnr[].

  ENDIF.

  SELECT * FROM /pws/zytpt901

  INTO TABLE t_901

  WHERE sysid      EQ sy-sysid

    AND bukrs_g    EQ p_bukrsg

...

 

...

  SORT t_matnr BY matnr.

  DELETE ADJACENT DUPLICATES FROM t_matnr COMPARING matnr.

  IF NOT r_grupo[] IS INITIAL.

    SELECT * FROM /pws/zytpt020

    INTO TABLE t_020

    WHERE bukrs_g = p_bukrsg

      AND grupo  IN r_grupo.

    SORT t_020 BY grupo.

  ENDIF.

  r_lista-sign =

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

  r_proc_059-sign =

  r_cod_util-sign =

* << Fim da inclusão

  r_proc_904-sign =

  r_met_002-sign =

  r_proc_902-sign = 'I'.

  r_lista-option =

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

  r_proc_059-option =

  r_cod_util-option =

* << Fim da inclusão

  r_proc_904-option =

  r_met_002-option =

...

 

...

        r_lista-low = tp_consumo.

        COLLECT r_lista.

      WHEN '7'.

        r_met_002-low = t_007-cod_metodo.

        COLLECT r_met_002.

      WHEN '8'.

        r_lista-low = tp_acumulada.

        COLLECT r_lista.

        r_proc_904-low = t_007-processo.

        COLLECT r_proc_904.

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

      WHEN '10'.

        r_proc_059-low = t_007-processo.

        COLLECT r_proc_059.

        r_cod_util-low = t_007-cod_util.

        COLLECT r_cod_util.

* << Fim da inclusão

    ENDCASE.

  ENDLOOP.

  IF NOT r_proc_902[] IS INITIAL.

    SORT r_proc_902 BY low.

    SELECT * FROM /pws/zytpt902

    INTO TABLE t_902

    WHERE bukrs_g  EQ p_bukrsg

      AND versao   EQ space

      AND processo IN r_proc_902

      AND ano      EQ p_ano

      AND mes      LE p_mes.

    IF t_902[] IS INITIAL.

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

      STOP.

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

    ENDIF.

* << Fim da inclusão

    ENDIF.

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

  DELETE r_proc_059 WHERE low IS initial.

  DELETE r_cod_util WHERE low IS initial.

  IF NOT r_proc_059[] IS INITIAL AND

     NOT r_cod_util[] IS INITIAL.

    SELECT * FROM /pws/zytpt059

    INTO TABLE t_059

    WHERE bukrs_g  EQ p_bukrsg

      AND versao   EQ space

      AND processo IN r_proc_059

      AND ano      EQ p_ano

      AND mes      EQ p_mes

      AND cod_util IN r_cod_util.

* << Fim da inclusão

  ENDIF.

  IF NOT r_met_002[] IS INITIAL.

    SORT r_met_002 BY low.

    SELECT *  FROM /pws/zytpt002

    INTO TABLE t_002

    WHERE sysid = sy-sysid

      AND bukrs_g = p_bukrsg

      AND cod_metodo IN r_met_002.

    DELETE t_002

    WHERE ano <> p_ano

...

 

...

  ENDIF.

  IF p_conpar = 'X'.

    PERFORM consolidar_por_parceiro.

  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,

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

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

* << Fim da inclusão

        w_calc_aux LIKE t_calculo,

        t_oper_aux LIKE t_operacao OCCURS 0 WITH HEADER LINE,

        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.

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

  ENDLOOP.

  LOOP AT t_059 WHERE matnr IN r_matnr.

    t_059_aux = t_059.

    APPEND t_059_aux.

* << Fim da inclusão

  ENDLOOP.

  LOOP AT t_002 WHERE matnr IN r_matnr.

    t_002_aux = t_002.

    APPEND t_002_aux.

  ENDLOOP.

  LOOP AT t_906 WHERE matnr IN r_matnr.

    t_906_aux = t_906.

    APPEND t_906_aux.

  ENDLOOP.

  r_matnr_f-sign = 'I'.

...

 

...

    LOOP AT r_matnr.

      SEARCH r_matnr_f FOR r_matnr-low.

      IF sy-subrc EQ 0.

        DELETE r_matnr_f INDEX sy-tabix.

      ENDIF.

    ENDLOOP.

    IF NOT r_matnr_f[] IS INITIAL.

      LOOP AT t_902 WHERE matnr IN r_matnr_f.

        t_902_aux = t_902.

        APPEND t_902_aux.

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

      ENDLOOP.

      LOOP AT t_059 WHERE matnr IN r_matnr_f.

        t_059_aux = t_059.

        APPEND t_059_aux.

* << Fim da inclusão

      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.

  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

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

            t_059_aux

* << Fim da inclusão

      USING t_001

            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_operacao.

      ENDIF.

    ENDIF.

  ENDLOOP.

...

 

...

    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

                              p_oper STRUCTURE t_operacao

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

                              p_059 STRUCTURE /pws/zytpt059

* << Fim da inclusão

                     USING    p_001  LIKE /pws/zytpt001

                              p_901  LIKE /pws/zytpt901

                     CHANGING p_calc LIKE t_calculo.

  DATA: t_007_aux TYPE TABLE OF /pws/zytpt007 WITH HEADER LINE,

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

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

        v_ok(1)  TYPE c,

        v_aj_906 TYPE i,

        v_fator_safe(1) TYPE c.

  FIELD-SYMBOLS: <valor> TYPE ANY.

...

 

...

      ENDIF.

      LOOP AT t_904_aux WHERE matnr_o   IN p_matnr

                      AND processo = t_007_aux-processo.

        ASSIGN COMPONENT t_007_aux-campo

                     OF STRUCTURE t_904_aux TO <valor>.

        IF sy-subrc EQ 0.

          ADD: <valor>           TO p_calc-valor_param,

               t_904_aux-menge_o TO p_calc-qtd_param.

          MOVE-CORRESPONDING t_904_aux TO w_904_key.

          APPEND w_904_key TO t_detalhe-t_904.

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

        ENDIF.

      ENDLOOP.

      ADD t_007_aux-ajuste TO v_aj_906.

    ENDLOOP.

    LOOP AT t_007_aux

      WHERE tipo = '10'.

      LOOP AT p_059 WHERE matnr   IN p_matnr

                      AND processo = t_007_aux-processo

                      AND cod_util = t_007_aux-cod_util.

        ASSIGN COMPONENT t_007_aux-campo

                     OF STRUCTURE p_059 TO <valor>.

        IF sy-subrc EQ 0.

          ADD: <valor>           TO p_calc-valor_param,

               p_059-qtde        TO p_calc-qtd_param.

          MOVE-CORRESPONDING p_059 TO w_059_key.

          APPEND w_059_key TO t_detalhe-t_059.

* << Fim da inclusão

        ENDIF.

      ENDLOOP.

      ADD t_007_aux-ajuste TO v_aj_906.

    ENDLOOP.

    APPEND t_detalhe.

    IF v_aj_906 > 0.

      PERFORM buscar_qtd_ajuste_906

         TABLES p_906

         USING  p_901-trib_o_es

       CHANGING p_calc-qtd_ajus.

...

 

...

                  matnr      = w_002_key-matnr

                  bwkey      = w_002_key-bwkey

                  bwtar      = w_002_key-bwtar

                  pais       = w_002_key-pais

                  valido_de  = w_002_key-valido_de

                  valido_ate = w_002_key-valido_ate

                  nfnum      = w_002_key-nfnum

                  itmnum     = w_002_key-itmnum.

        IF sy-subrc EQ 0.

          APPEND t_002 TO t_002_det.

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

        ENDIF.

      ENDLOOP.

* << Fim da inclusão

        ENDIF.

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

    IF NOT t_detalhe-t_059[] IS INITIAL.

      LOOP AT t_detalhe-t_059 INTO w_059_key.

        LOOP AT t_059

          WHERE processo = w_059_key-processo

            AND parid    = w_059_key-parid

            AND matnr    = w_059_key-matnr

            AND bwkey    = w_059_key-bwkey

            AND bwtar    = w_059_key-bwtar

            AND pais     = w_059_key-pais

            AND ano      = w_059_key-ano

            AND mes      = w_059_key-mes.

          APPEND t_059 TO t_059_det.

        ENDLOOP.

* << Fim da inclusão

      ENDLOOP.

    ENDIF.

    SORT t_903_det BY processo mes matnr.

    SORT t_002_det BY processo mes matnr.

    SORT t_902_det BY processo matnr.

    SORT t_906_det BY matnr mes bwkey.

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

    SORT t_059_det BY processo matnr.

* << Fim da inclusão

    PERFORM exibir_documentos.

...

 

...

  ENDIF.

  IF NOT t_002_det[] IS INITIAL.

    PERFORM exibir_bloco

     TABLES t_fieldcat_det t_sort_det  t_events_det

      USING w_layout_det   text-091    'T_002_DET'   '/PWS/ZYTPT002'.

  ENDIF.

  IF NOT t_902_det[] IS INITIAL.

    PERFORM exibir_bloco

     TABLES t_fieldcat_det t_sort_det  t_events_det

      USING w_layout_det   text-097    'T_902_DET'   '/PWS/ZYTPT902'.

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

  ENDIF.

  IF NOT t_059_det[] IS INITIAL.

    PERFORM exibir_bloco

     TABLES t_fieldcat_det t_sort_det  t_events_det

      USING w_layout_det   text-108    'T_059_DET'   '/PWS/ZYTPT059'.

* << Fim da inclusão

  ENDIF.

  IF NOT t_906_det[] IS INITIAL.

    PERFORM exibir_bloco

     TABLES t_fieldcat_det t_sort_det  t_events_det

      USING w_layout_det   text-099    'T_906_DET'   '/PWS/ZYTPT906'.

  ENDIF.

  w_print_det-reserve_lines = 2.

  CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_DISPLAY'

       EXPORTING

            is_print = w_print_det.

...

 

...

ENDFORM.

FORM exibir_titulo_906.

  WRITE: / text-099.

ENDFORM.

FORM exibir_titulo_002.

  WRITE: / text-091.

ENDFORM.

FORM exibir_titulo_902.

  WRITE: / text-097.

ENDFORM.

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

FORM exibir_titulo_059.

  WRITE: / text-108.

ENDFORM.

* << Fim da inclusão

FORM exibir_bloco TABLES   p_fieldcat STRUCTURE t_fieldcat

                           p_sort     STRUCTURE t_sort

                           p_events   STRUCTURE t_events

                  USING    p_layout   LIKE w_layout

                           p_titulo

                           p_itab

                           p_tab.

  FIELD-SYMBOLS: <conteudo> TYPE STANDARD TABLE.

  DATA: v_itab(20) TYPE c.

  CONCATENATE p_itab '[]' INTO v_itab.

...

 

 

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

Modificações efetuadas em REPT /PWS/ZYTPR042

 

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

Incluído símbolo de texto:

 

Idioma: PT

 

Símbolo: 108

 

Texto: (20 caracteres)

"Formação dos Métodos"

 

Comprimento máximo: 20

 

 

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

Modificações efetuadas em TABD /PWS/ZYTPT007

 

MODIFICAR TABELA TRANSPARENTE: /PWS/ZYTPT007

 

INCLUIR CAMPO

 

CAMPOS:         TP. CAMPO      CH: INI: TAB.VERIF.:    TAB.REF.:     CPO.RE

COD_UTIL        /PWS/ZYTPL423  X   X

 

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

Modificações efetuadas em TOBJ /PWS/ZYTPT007S

 

GERAR ATUALIZAÇÃO DA TABELA /PWS/ZYTPT007

Grupo de autorização: ZYTP   PWS - Transfer Price

Grupo de funções:     /PWS/ZYTPGF1

Cl.desenvolvimento:   /PWS/ZYTP          pw.TP - Transfer Pricing

 

Ctg.atualização

 Nº tela atualização  Tela de síntese      07

                      Tela individual      0

 

Rotina de registro: (_) Rotina de registro standard

                    (X) Rotina de registro individual(ou nenhuma)

Código de ajuste: Ajustável automaticamente