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.
Não Usar - 2.00.0000
Produto:
Nota
Descrição
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