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