Módulo: DRAWBACK
Funcionalidade: Relatórios
Data/Hora da Publicação: 24/08/2006 00:00:00
Data/Hora Última Alteração: 17/02/2011 14:27:07
Descrição da Nota: TRATAMENTO NO PROGRAMA PARA TRAZER CORRETAMENTE OS INSUMOS
Sintoma
O programa não estava trazendo corretamente os insumos alternativos ao gravar. Ao deletar não
perguntava ao usuário se realmente deseja excluir. Não havia título na tela do programa.
Solução
Foi feito um tratamento no perform GRAVA para deletar apenas os insumos que tivessem o campo Grupo
diferente do insumo que havia sido inserido neste Grupo.
Foi utilizada a função: 'POPUP_TO_CONFIRM' que ja havia sido utilizada no programa para perguntar ao
usuario se deseja realmente excluir.
Foi inserido o título na tela do programa.
6.0
Produto:
Nota
Descrição
Informações Complementares
----------------------------------------------------------------------------------------------------
Nota Número 01977 Data: 24/08/2006 Hora: 13:53:49
----------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------
Nota Número : 01977
Categoria : Melhoria
Prioridade : Média
Versão PW.CE : 6.0
Pacote : 00024
Agrupamento : 00128
----------------------------------------------------------------------------------------------------
Referência às notas relacionadas:
Número - Ordem - Versão - Pacote - Descrição Breve
01960 - 00001 - 6.0 - 00024 - DESENVOLVIMENTO DO PROGRAMA INSUMOS ALTERNATIVOS
----------------------------------------------------------------------------------------------------
TRATAMENTO NO PROGRAMA PARA TRAZER CORRETAMENTE OS INSUMOS
----------------------------------------------------------------------------------------------------
Palavras Chave:
INSUMOS ALTERNATIVOS, /PWS/ZYCIR342, TABELA: /PWS/ZYCIT433
DELETAR, TÍTULO
----------------------------------------------------------------------------------------------------
Objetos da nota:
REPS /PWS/ZYCIR342
REPS /PWS/ZYCIR342F01
REPS /PWS/ZYCIR342I01
REPS /PWS/ZYCIR342O01
REPS /PWS/ZYCIR342TOP
----------------------------------------------------------------------------------------------------
Modificações efetuadas em REPS /PWS/ZYCIR342
----------------------------------------------------------------------------------------------------
Modificações efetuadas em REPS /PWS/ZYCIR342F01
...
itab_grupo-desc_g TO /pws/zycie433-desc_g ,
itab_grupo-j_1bnbm TO /pws/zycie433-j_1bnbm,
itab_grupo-meins TO /pws/zycie433-meins .
ENDFORM.
FORM deleta_insumo.
* >> Início da exclusão: FORM DELETA_INSUMO
DATA: v_matnr_d TYPE mara-matnr.
* << Fim da exclusão
* >> Início da inclusão: FORM DELETA_INSUMO
DATA: v_matnr_d TYPE mara-matnr.
* << Fim da inclusão
CLEAR: v_matnr_d.
SELECT SINGLE matnr
FROM /pws/zycit279
INTO v_matnr_d
WHERE matnr EQ itab_insumo-matnr.
...
...
WHERE codcomp EQ itab_insumo-matnr.
IF NOT v_matnr_d IS INITIAL.
message i015 with text-005.
EXIT.
ENDIF.
* >> Início da inclusão: FORM DELETA_INSUMO
IF v_resposta EQ '1'.
* << Fim da inclusão
LOOP AT itab_zycit433_s WHERE grupo EQ itab_insumo-grupo
AND ( matnr EQ itab_insumo-matnr
OR matnr_alt EQ itab_insumo-matnr ).
itab_zycit433_d = itab_zycit433_s.
APPEND itab_zycit433_d.
...
...
ENDLOOP.
SORT itab_zycit433_d BY grupo matnr matnr_alt.
DELETE ADJACENT DUPLICATES FROM itab_zycit433_d
COMPARING grupo matnr matnr_alt.
DELETE itab_insumo WHERE mark EQ 'X'.
* >> Início da inclusão: FORM DELETA_INSUMO
ENDIF.
* << Fim da inclusão
ENDFORM.
FORM pergunta USING p_titulo
p_pergunta
CHANGING p_resposta.
CLEAR: p_resposta.
...
...
text_not_found = 1
OTHERS = 2.
ENDFORM.
FORM grava.
DATA: itab_zycit433_a1 TYPE /pws/zycit433 OCCURS 0 WITH HEADER LINE,
* >> Início da exclusão: FORM GRAVA
itab_zycit433_a2 TYPE /pws/zycit433 OCCURS 0 WITH HEADER LINE.
* << Fim da exclusão
* >> Início da inclusão: FORM GRAVA
itab_zycit433_a2 TYPE /pws/zycit433 OCCURS 0 WITH HEADER LINE,
v_matnr_alt TYPE /pws/zycit433-matnr_alt.
* << Fim da inclusão
REFRESH: itab_zycit433_a1, itab_zycit433_a2.
itab_zycit433_a1[] = itab_zycit433_s[].
* >> Início da exclusão: FORM GRAVA
DELETE itab_zycit433_a1 WHERE matnr_alt NE space.
* << Fim da exclusão
* >> Início da inclusão: FORM GRAVA
DELETE itab_zycit433_a1 WHERE grupo NE itab_zycit433_s-grupo.
* << Fim da inclusão
IF NOT itab_zycit433_a1[] IS INITIAL.
itab_zycit433_a2[] = itab_zycit433_s[].
SORT itab_zycit433_a2 BY grupo matnr.
DELETE ADJACENT DUPLICATES FROM itab_zycit433_a2
COMPARING grupo matnr.
...
...
itab_zycit433_s-matnr_alt = itab_zycit433_a2-matnr.
APPEND itab_zycit433_s.
ENDLOOP.
ENDLOOP.
DELETE itab_zycit433_s WHERE matnr_alt EQ space.
* >> Início da inclusão: FORM GRAVA
SORT itab_zycit433_s BY grupo matnr matnr_alt.
DELETE ADJACENT DUPLICATES FROM itab_zycit433_s.
* << Fim da inclusão
ENDIF.
DELETE /pws/zycit433 FROM TABLE itab_zycit433_d.
MODIFY /pws/zycit433 FROM TABLE itab_zycit433_s.
* >> Início da inclusão: FORM GRAVA
ENDFORM.
* << Fim da inclusão
* >> Início da exclusão: FORM GRAVA
ENDFORM.
* << Fim da exclusão
.
----------------------------------------------------------------------------------------------------
Modificações efetuadas em REPS /PWS/ZYCIR342I01
...
ENDIF.
ENDMODULE.
MODULE user_command_0101 INPUT.
ENDMODULE.
MODULE user_command_0100 INPUT.
* >> Início da exclusão: MODULE USER_COMMAND_0100
DATA: v_resposta TYPE c.
* << Fim da exclusão
* >> Início da inclusão: MODULE USER_COMMAND_0100
DATA: v_resposta TYPE c.
* << Fim da inclusão
CASE v_okcode.
WHEN 'FS_GR'.
v_tela = '0101'.
v_pasta = v_okcode.
WHEN 'FS_IS'.
...
...
WHEN 'DELE'.
CASE v_tela.
WHEN '0101'.
READ TABLE itab_grupo WITH KEY mark = 'X'.
IF sy-subrc EQ 0.
* >> Início da inclusão: MODULE USER_COMMAND_0100
PERFORM pergunta USING text-001
text-022
CHANGING v_resposta.
IF v_resposta EQ '1'.
* << Fim da inclusão
READ TABLE itab_zycit433_s WITH KEY
grupo = itab_grupo-grupo.
IF sy-subrc EQ 0.
MESSAGE i015 WITH text-008.
EXIT.
ENDIF.
DELETE itab_grupo WHERE mark = 'X'.
ENDIF.
* >> Início da inclusão: MODULE USER_COMMAND_0100
ENDIF.
* << Fim da inclusão
WHEN '0102'.
READ TABLE itab_insumo WITH KEY mark = 'X'.
IF sy-subrc NE 0.
EXIT.
* >> Início da inclusão: MODULE USER_COMMAND_0100
else.
PERFORM pergunta USING text-001
text-019
CHANGING v_resposta.
* << Fim da inclusão
ENDIF.
PERFORM deleta_insumo.
ENDCASE.
WHEN 'SAVE'.
PERFORM pergunta USING text-001
...
----------------------------------------------------------------------------------------------------
Modificações efetuadas em REPS /PWS/ZYCIR342O01
...
ENDIF.
ENDIF.
ENDMODULE.
MODULE status_0100 OUTPUT.
SET PF-STATUS 'ST0100'.
* >> Início da inclusão: MODULE STATUS_0100
SET TITLEBAR '0100'.
* << Fim da inclusão
IF v_ini IS INITIAL.
v_ini = 'X'.
SORT itab_zycit433 BY grupo matnr matnr_alt .
SELECT * FROM /pws/zycit433 INTO TABLE itab_zycit433.
itab_zycit433_s[] = itab_zycit433[].
...
----------------------------------------------------------------------------------------------------
Modificações efetuadas em REPS /PWS/ZYCIR342TOP
...
data: end of itab_grupo.
data: begin of itab_insumo occurs 0.
include structure /pws/zycit433.
data: mark type c .
data: end of itab_insumo.
* >> Início da exclusão:
data: v_ini type c ,
v_mark type c ,
v_okcode type sy-ucomm ,
v_tela(4) type c value '0101' ,
v_pasta type sy-ucomm value 'TS_GR' .
* << Fim da exclusão
* >> Início da inclusão:
DATA: v_ini TYPE c ,
v_mark TYPE c ,
v_okcode TYPE sy-ucomm ,
v_tela(4) TYPE c VALUE '0101' ,
v_pasta TYPE sy-ucomm VALUE 'TS_GR' ,
v_confirm(1) TYPE c VALUE 'N' .
* << Fim da inclusão