Módulo: DOC. EXPORTAÇÃO
Funcionalidade: Declaração Simplificada Export. DSE
Data/Hora da Publicação: 07/04/2006 00:00:00
Data/Hora Última Alteração: 21/02/2011 16:52:12
Descrição da Nota: CRIAÇÃO DE DSE SEGUNDO VALOR LIMITE PARAMETRIZADO
Sintoma
Havia possibilidade de se criar uma DSE para qualquer valor de embarque, sendo que isso não deveria
ser permitido.
Solução
Implementação de consistências para permitir criação de DSE somente dentro de um valor estipulado.
6.0
Informações Complementares
----------------------------------------------------------------------------------------------------
Nota Número 01177 Data: 07/04/2006 Hora: 16:39:32
----------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------
Nota Número : 01177
Categoria : Melhoria
Prioridade : Baixa
Versão PW.CE : 6.0
Pacote : 00023
Agrupamento : 00108
----------------------------------------------------------------------------------------------------
Referência às notas relacionadas:
Número - Ordem - Descrição Breve
----------------------------------------------------------------------------------------------------
CRIAÇÃO DE DSE SEGUNDO VALOR LIMITE PARAMETRIZADO
----------------------------------------------------------------------------------------------------
Palavras Chave:
CRIAÇÃO DSE VALOR LIMITE
----------------------------------------------------------------------------------------------------
Objetos da nota:
DYNP /PWS/SAPMZYCE022 0001
FUNC /PWS/ZYCE_DETERMINA_LIMITE_DSE
REPS /PWS/LZYCEGF6UXX
REPS /PWS/MZYCE003F02
REPS /PWS/MZYCE022F01
REPS /PWS/MZYCE022I01
REPS /PWS/MZYCE022O01
----------------------------------------------------------------------------------------------------
Modificações efetuadas em DYNP /PWS/SAPMZYCE022 0001
Lógica de processamento:
...
/pws/zycee208-natoper
MODULE: verifica_despachante.
ENDCHAIN.
* >> Início da inclusão: PAI TELA 0001
CHAIN.
FIELD: /pws/zycee001-nrseq,
/pws/zycee208-natoper
MODULE verifica_limite_dse.
ENDCHAIN.
* << Fim da inclusão
MODULE: user_command_0001,
user_command_exit AT EXIT-COMMAND.
----------------------------------------------------------------------------------------------------
INCLUIR MÓDULO DE FUNÇÃO: /PWS/ZYCE_DETERMINA_LIMITE_DSE
CARACTERÍSTICAS
CLASSIFICAÇÃO:
GRUPO DE FUNÇÕES: /PWS/ZYCEGF6
TEXTO BREVE: CE - Determina permissão para criação de DSE
TIPO DE EXECUÇÃO:
(X) - MÓDULO DE FUNÇÃO NORMAL
(_) - MÓDULO DE ACESSO REMOTO
(_) - MÓDULO DE ATUALIZAÇÃO
(X) - INÍCIO IMEDIATO
(_) - INÍCIO IMEDIATO-SEM ATUAL.POSTER.
(_) - INÍC. RETARDADO
(_) - PROCES. CLOETIVO
DADOS GERAIS:
(_) - BLOQUEIO PROCESSO
(_) - GLOBAL
IMPORTAÇÃO:
NOME PARAM. ATRIB. TIPO REFERÊNCIA VL. PROPOSTO OPCIONAL TRANSF. TEXT
P_NRSEQ LIKE /PWS/ZYCET001-NRSEQ ( ) Sequencial do embarque
P_INCO1 LIKE /PWS/ZYCET001-INCO1 (X) Incoterm
EXPORTAÇÃO:
NOME PARAM. ATRIB. TIPO REFERÊNCIA TRANSF. TEXTO BREVE
P_DSE TYPE C X, para DSE habilitado
P_WRBTR_DSE LIKE /PWS/ZYCET312-WRBTR_DSE GL - Valor limite para criação da DSE
P_VLME LIKE /PWS/ZYCET008-VLME GL - Valor da Condição
P_WAERS_DSE LIKE /PWS/ZYCET312-WAERS_DSE GL - Moeda do Limite para Criação de DSE
MODIFIC.:
NOME PARAM. ATRIB. TIPO REFERÊNCIA VL. PROPOSTO OPCIONAL TRANSF. TEXT
TABELAS:
NOME PARAM. ATRIB. TIPO REFERÊNCIA OPCIONAL TEXTO BREVE
EXCEÇÕES:
EXCEÇÃO TEXTO BREVE
EMBARQUE_INVALIDO embarque não encontrado
PARAMETRO_CONVERSAO_INVALIDO parâmetros de conversão inválido
----------------------------------------------------------------------------------------------------
Modificações efetuadas em REPS /PWS/LZYCEGF6UXX
FUNCTION /pws/zyce_determina_limite_dse.
TYPES: BEGIN OF s_zycet008,
codigo TYPE /pws/zycet008-codigo,
vlme TYPE /pws/zycet008-vlme,
vlme_f TYPE /pws/zycet008-vlme_f,
waers TYPE /pws/zycet008-waers,
END OF s_zycet008.
TYPES: BEGIN OF s_zycet156,
codigo TYPE /pws/zycet156-codigo,
fator TYPE /pws/zycet156-fator,
proccond TYPE /pws/zycet156-proccond,
END OF s_zycet156.
DATA: wa_zycet008 TYPE s_zycet008,
it_zycet008 TYPE TABLE OF s_zycet008,
wa_zycet156 TYPE s_zycet156,
it_zycet156 TYPE TABLE OF s_zycet156.
DATA: v_vlme LIKE /pws/zycet008-vlme,
v_waers LIKE /pws/zycet008-waers,
v_inco1 LIKE /pws/zycet001-inco1.
DATA: BEGIN OF wa_zycet001,
bukrs TYPE /pws/zycet001-bukrs,
inco1 TYPE /pws/zycet001-inco1,
dtemb TYPE /pws/zycet001-dtemb,
tpcalc TYPE /pws/zycet001-tpcalc,
END OF wa_zycet001.
DATA: BEGIN OF wa_zycet312,
wrbtr_dse TYPE /pws/zycet312-wrbtr_dse,
waers_dse TYPE /pws/zycet312-waers_dse,
kurst_dse TYPE /pws/zycet312-kurst_dse,
END OF wa_zycet312.
DATA: BEGIN OF wa_zycet065,
fob TYPE /pws/zycet065-fob,
frete TYPE /pws/zycet065-frete,
seguro TYPE /pws/zycet065-seguro,
outras_desp TYPE /pws/zycet065-outras_desp,
desconto TYPE /pws/zycet065-desconto,
acrescimo TYPE /pws/zycet065-acrescimo,
comissao TYPE /pws/zycet065-comissao,
END OF wa_zycet065.
p_dse = space.
SELECT SINGLE
wrbtr_dse
waers_dse
kurst_dse
FROM /pws/zycet312
INTO wa_zycet312.
SELECT SINGLE
bukrs
inco1
dtemb
tpcalc
FROM /pws/zycet001
INTO wa_zycet001
WHERE nrseq = p_nrseq.
IF sy-subrc NE 0.
RAISE embarque_invalido.
ENDIF.
SELECT
codigo
vlme
vlme_f
waers
FROM /pws/zycet008
INTO TABLE it_zycet008
WHERE nrseq = p_nrseq.
IF p_inco1 IS INITIAL.
v_inco1 = wa_zycet001-inco1.
ELSE.
v_inco1 = p_inco1.
ENDIF.
SELECT SINGLE
fob
frete
seguro
outras_desp
desconto
acrescimo
comissao
FROM /pws/zycet065
INTO wa_zycet065
WHERE inco1 = v_inco1.
SELECT
codigo
fator
proccond
FROM /pws/zycet156
INTO TABLE it_zycet156
WHERE bukrs = wa_zycet001-bukrs AND
codmod = 'X'.
SORT it_zycet156 BY codigo ASCENDING.
DELETE ADJACENT DUPLICATES FROM it_zycet156.
CLEAR v_vlme.
READ TABLE it_zycet008 INTO wa_zycet008 INDEX 1.
v_waers = wa_zycet008-waers.
IF wa_zycet001-tpcalc = 0.
LOOP AT it_zycet008 INTO wa_zycet008.
READ TABLE it_zycet156 INTO wa_zycet156
WITH KEY codigo = wa_zycet008-codigo.
CHECK sy-subrc = 0.
CASE wa_zycet156-proccond.
WHEN 'FOB'.
CHECK NOT wa_zycet065-fob IS INITIAL.
WHEN 'DES'.
CHECK NOT wa_zycet065-desconto IS INITIAL.
IF wa_zycet008-vlme > 0.
MULTIPLY wa_zycet008-vlme BY -1.
ENDIF.
IF wa_zycet008-vlme_f > 0.
MULTIPLY wa_zycet008-vlme_f BY -1.
ENDIF.
WHEN 'ACR'.
CHECK NOT wa_zycet065-acrescimo IS INITIAL.
WHEN 'OUT'.
CHECK NOT wa_zycet065-outras_desp IS INITIAL.
WHEN 'COM'.
CHECK NOT wa_zycet065-comissao IS INITIAL.
WHEN 'FRT'.
CHECK NOT wa_zycet065-frete IS INITIAL.
WHEN 'SEG'.
CHECK NOT wa_zycet065-seguro IS INITIAL.
ENDCASE.
IF wa_zycet008-vlme_f IS INITIAL.
ADD wa_zycet008-vlme TO v_vlme.
ELSE.
ADD wa_zycet008-vlme_f TO v_vlme.
ENDIF.
ENDLOOP.
ELSE.
READ TABLE it_zycet008 INTO wa_zycet008
WITH KEY codigo = '000001' BINARY SEARCH.
v_vlme = wa_zycet008-vlme_f.
ENDIF.
IF v_waers NE wa_zycet312-waers_dse.
IF v_waers NE 'BRL'.
CALL FUNCTION '/PWS/ZYCE_MONTANTE_CONVERTE'
EXPORTING
i_montante = v_vlme
i_demoeda = v_waers
i_paramoeda = 'BRL'
i_ctmoeda = wa_zycet312-kurst_dse
i_dtbase = wa_zycet001-dtemb
IMPORTING
e_montante = v_vlme
EXCEPTIONS
i_demoeda_nao_encontrado = 1
i_paramoeda_nao_encontrado = 2
i_ctmoeda_nao_encontrado = 3
i_dtbase_nao_encontrada = 4
taxa_nao_encontrada = 5
fator_nao_encontrado = 6
i_montante_nao_encontrado = 7.
IF sy-subrc NE 0.
RAISE parametro_conversao_invalido.
ENDIF.
ENDIF.
CALL FUNCTION '/PWS/ZYCE_MONTANTE_CONVERTE'
EXPORTING
i_montante = v_vlme
i_demoeda = 'BRL'
i_paramoeda = wa_zycet312-waers_dse
i_ctmoeda = wa_zycet312-kurst_dse
i_dtbase = wa_zycet001-dtemb
IMPORTING
e_montante = v_vlme
EXCEPTIONS
i_demoeda_nao_encontrado = 1
i_paramoeda_nao_encontrado = 2
i_ctmoeda_nao_encontrado = 3
i_dtbase_nao_encontrada = 4
taxa_nao_encontrada = 5
fator_nao_encontrado = 6
i_montante_nao_encontrado = 7.
IF sy-subrc NE 0.
RAISE parametro_conversao_invalido.
ENDIF.
ENDIF.
p_wrbtr_dse = wa_zycet312-wrbtr_dse.
p_waers_dse = wa_zycet312-waers_dse.
p_vlme = v_vlme.
IF v_vlme LE wa_zycet312-wrbtr_dse.
p_dse = 'X'.
ELSE.
p_dse = space.
ENDIF.
ENDFUNCTION.
----------------------------------------------------------------------------------------------------
Modificações efetuadas em REPS /PWS/MZYCE003F02
...
FORM exclui_status_gui_0010_hdr TABLES i_botoes.
* >> Início da inclusão: FORM EXCLUI_STATUS_GUI_0010_HDR
DATA: v_permite_dse(1) TYPE c.
* << Fim da inclusão
IF itab_zycet015[] IS INITIAL.
APPEND 'F_SADIA' TO i_botoes.
APPEND 'F_SPCON' TO i_botoes.
...
...
APPEND 'F_LCAMB' TO i_botoes.
APPEND 'F_APROP' TO i_botoes.
ELSE.
APPEND 'DESBLOQ' TO i_botoes.
* >> Início da inclusão: FORM EXCLUI_STATUS_GUI_0010_HDR
CALL FUNCTION '/PWS/ZYCE_DETERMINA_LIMITE_DSE'
EXPORTING
p_nrseq = /pws/zycee001-nrseq
p_inco1 = /pws/zycee001-inco1
IMPORTING
p_dse = v_permite_dse
exceptions
embarque_invalido = 1
parametro_conversao_invalido = 2.
IF sy-subrc = 0 and v_permite_dse IS INITIAL.
APPEND 'F_DSEXP' TO i_botoes. " exclui entrada DSE
ENDIF.
* << Fim da inclusão
ENDIF.
ENDIF.
IF /pws/zycee001-envia_c EQ 'X'.
APPEND 'ENV_CB' TO i_botoes.
...
----------------------------------------------------------------------------------------------------
Modificações efetuadas em REPS /PWS/MZYCE022F01
...
itab_002-posnl TO itab_210-posnl,
itab_002-fkimg TO itab_210-qtdncm,
itab_002-ntgew TO itab_210-ntgew,
itab_002-brgew TO itab_210-brgew,
itab_002-vrkme TO itab_210-gewei,
* >> Início da exclusão: FORM FILL_REL_MERCADORIAS
itab_002-waers TO itab_210-waers,
itab_002-vlme TO itab_210-vlme,
* << Fim da exclusão
itab_002-fkimg TO itab_210-qtdcomum.
* >> Início da inclusão: FORM FILL_REL_MERCADORIAS
PERFORM converte_moeda_mercadoria
USING itab_002-nrseq
itab_002-waers
itab_002-vlme
CHANGING itab_210-waers
itab_210-vlme.
* << Fim da inclusão
READ TABLE itab_t604f WITH KEY steuc = itab_002-steuc.
IF sy-subrc = 0.
itab_210-umncm = itab_t604f-unit.
itab_210-descr = itab_t604f-text1.
IF NOT wa_zycet145-codncmre IS INITIAL.
...
...
v_bens = text-073.
v_dadosdsi = text-074.
v_docdi = text-075.
v_infcomp = text-076.
ENDFORM. " carrega_descricoes
* >> Início da inclusão: FORM CONVERTE_MOEDA_MERCADORIA
FORM converte_moeda_mercadoria
USING value(p_nrseq) LIKE /pws/zycee002-nrseq
value(p_item_waers) LIKE /pws/zycee002-waers
value(p_item_vlme) LIKE /pws/zycee002-vlme
CHANGING p_merc_waers LIKE /pws/zycee210-waers
p_merc_vlme LIKE /pws/zycee210-vlme.
STATICS: BEGIN OF wa_zycet312,
waers_dse TYPE /pws/zycet312-waers_dse,
kurst_dse TYPE /pws/zycet312-kurst_dse,
END OF wa_zycet312.
STATICS v_dtemb LIKE /pws/zycet001-dtemb.
DATA v_vlme LIKE /pws/zycee002-vlme.
IF wa_zycet312 IS INITIAL.
SELECT SINGLE
waers_dse
kurst_dse
FROM /pws/zycet312
INTO wa_zycet312.
SELECT SINGLE
dtemb
FROM /pws/zycet001
INTO v_dtemb
WHERE nrseq = p_nrseq.
ENDIF.
p_merc_waers = wa_zycet312-waers_dse.
p_merc_vlme = p_item_vlme.
CHECK p_merc_vlme NE 0.
IF p_item_waers NE wa_zycet312-waers_dse.
IF p_item_waers NE 'BRL'.
CALL FUNCTION '/PWS/ZYCE_MONTANTE_CONVERTE'
EXPORTING
i_montante = p_item_vlme
i_demoeda = p_item_waers
i_paramoeda = 'BRL'
i_ctmoeda = wa_zycet312-kurst_dse
i_dtbase = v_dtemb
IMPORTING
e_montante = v_vlme
EXCEPTIONS
i_demoeda_nao_encontrado = 1
i_paramoeda_nao_encontrado = 2
i_ctmoeda_nao_encontrado = 3
i_dtbase_nao_encontrada = 4
taxa_nao_encontrada = 5
fator_nao_encontrado = 6
i_montante_nao_encontrado = 7.
endif.
if sy-subrc = 0.
CALL FUNCTION '/PWS/ZYCE_MONTANTE_CONVERTE'
EXPORTING
i_montante = v_vlme
i_demoeda = 'BRL'
i_paramoeda = wa_zycet312-waers_dse
i_ctmoeda = wa_zycet312-kurst_dse
i_dtbase = v_dtemb
IMPORTING
e_montante = p_merc_vlme
EXCEPTIONS
i_demoeda_nao_encontrado = 1
i_paramoeda_nao_encontrado = 2
i_ctmoeda_nao_encontrado = 3
i_dtbase_nao_encontrada = 4
taxa_nao_encontrada = 5
fator_nao_encontrado = 6
i_montante_nao_encontrado = 7.
ENDIF.
check sy-subrc ne 0.
p_merc_waers = p_item_waers.
p_merc_vlme = p_item_vlme.
ENDIF.
ENDFORM.
FORM carrega_moeda_convertida
USING p_waers1 LIKE /pws/zycee208-waers1
CHANGING p_waers LIKE /pws/zycee208-waers
p_moeda LIKE tcurt-ltext.
STATICS: v_waers LIKE /pws/zycee208-waers,
v_waers1 LIKE /pws/zycee208-waers1,
v_moeda LIKE tcurt-ltext.
IF ( v_waers IS INITIAL ) OR ( p_waers1 NE v_waers1 ).
SELECT SINGLE /pws/codmo
FROM tcurc
INTO v_waers
WHERE waers = p_waers1.
v_waers1 = p_waers1.
IF NOT v_waers IS INITIAL.
SELECT SINGLE waers
FROM tcurc
INTO v_moeda
WHERE /pws/codmo = v_waers.
SELECT SINGLE ltext
FROM tcurt INTO v_moeda
WHERE waers = v_moeda AND
spras = sy-langu.
ENDIF.
ENDIF.
p_waers = v_waers.
p_moeda = v_moeda.
ENDFORM.
* << Fim da inclusão
----------------------------------------------------------------------------------------------------
Modificações efetuadas em REPS /PWS/MZYCE022I01
...
WHEN 'AVAN'.
CALL METHOD html_control->go_forward.
ENDCASE.
ENDMODULE. " user_command_0051 INPUT
* >> Início da inclusão: MODULE VERIFICA_LIMITE_DSE
module verifica_limite_dse input.
call function '/PWS/ZYCE_DETERMINA_LIMITE_DSE'
exporting
p_nrseq = /pws/zycee001-nrseq
importing
p_dse = v_permite_dse
exceptions
embarque_invalido = 1
parametro_conversao_invalido = 2.
check sy-subrc = 0.
if v_permite_dse is initial.
message e001
with 'DSE não será criada, pois valor do embarque'(077)
' ultrapassou o limite permitido.'(078).
leave to screen '0001'.
endif.
endmodule. " verifica_limite_dse INPUT* << Fim da exclusão
* << Fim da exclusão
----------------------------------------------------------------------------------------------------
Modificações efetuadas em REPS /PWS/MZYCE022O01
...
ENDLOOP.
ENDIF.
v_primeira = 'X'.
ENDIF.
IF vnatureza EQ text-014.
* >> Início da inclusão: MODULE SOMA_PESO_VALOR
call function '/PWS/ZYCE_DETERMINA_LIMITE_DSE'
exporting
p_nrseq = /pws/zycee208-nrseq
importing
p_vlme = /pws/zycee208-vltotal
p_waers_dse = /pws/zycee208-waers1
exceptions
embarque_invalido = 1
parametro_conversao_invalido = 2.
if sy-subrc ne 0.
* << Fim da inclusão
IF NOT itab_210[] IS INITIAL.
CLEAR: /pws/zycee208-vltotal.
LOOP AT itab_210.
ADD: itab_210-vlme TO /pws/zycee208-vltotal.
ENDLOOP.
ENDIF.
* >> Início da inclusão: MODULE SOMA_PESO_VALOR
else.
perform carrega_moeda_convertida
using /pws/zycee208-waers1
changing /pws/zycee208-waers
s_moeda.
endif.
* << Fim da inclusão
ENDIF.
ENDMODULE.
MODULE carrega_estrutura OUTPUT.
MOVE: wa_zycet305-banco TO /pws/zycee305-banco,
wa_zycet305-praca TO /pws/zycee305-praca,
...
----------------------------------------------------------------------------------------------------
Modificações efetuadas em REPS /PWS/MZYCE022TOP.
....
DATA: v_syrepid LIKE sy-repid,
v_sydynnr LIKE sy-dynnr,
v_visivel LIKE /pws/zyglt319-visivel,
v_natuop(30) TYPE c,
v_ident(30) TYPE c,
v_unidesp(30) TYPE c,
v_uniemb(30) TYPE c,
v_armenv(30) TYPE c,
v_dadosexp(30) TYPE c,
v_prazo(10) TYPE c,
v_codespe(30) TYPE c,
v_qtdtotal(30) TYPE c,
v_conscamb(30) TYPE c,
v_merc(30) TYPE c,
v_bens(30) TYPE c,
v_dadosdsi(30) TYPE c,
v_docdi(30) TYPE c,
* >> Início da exclusão
* v_infcomp(30) TYPE c.
* << Fim da exclusão
* >> Início da inclusão
v_infcomp(30) TYPE c,
v_permite_dse(1) type c.
* << Fim da inclusão
DATA: BEGIN OF itab_contrato OCCURS 0,
nrcontrato LIKE /pws/zycet304-nrcontrato,
END OF itab_contrato.
...