CE PLUS - Nota 001177

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.

 

Versões Tratadas

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.

 

...