CE PLUS - Nota 005383

Módulo: DOC. IMPORTAÇÃO

Funcionalidade: Nota Fiscal

Data/Hora da Publicação: 04/12/2007 00:00:00

Data/Hora Última Alteração: 09/03/2010 11:22:00

Descrição da Nota: ABERTURA DE EXIT PARA CÁLCULO DE ICMS

Sintoma

 

Abertura de exit para cálculo de icms na Nota Fiscal.

 

Solução

 

criada exit dnf016

Versões Tratadas

7.0

Informações Complementares

 

----------------------------------------------------------------------------------------------------

Nota Número 05383 Data: 04/12/2007 Hora: 17:33:28

----------------------------------------------------------------------------------------------------

 

----------------------------------------------------------------------------------------------------

Nota Número              : 05383

Categoria                : Melhoria

Prioridade               : Alta

Versão PW.CE             : 7.0

Pacote                   : 00003

Agrupamento              : 00024

----------------------------------------------------------------------------------------------------

Referência às notas relacionadas:

Número - Ordem - Descrição Breve

 

----------------------------------------------------------------------------------------------------

ABERTURA DE EXIT PARA CÁLCULO DE ICMS

----------------------------------------------------------------------------------------------------

Palavras Chave:

EXIT - /PWS/ZYGLT100 - NOTA FISCAL

 

----------------------------------------------------------------------------------------------------

Objetos da nota:

REPS /PWS/MZYCI016F01

REPS /PWS/MZYCI016X01

REPS /PWS/MZYCI023F01

 

----------------------------------------------------------------------------------------------------

Modificações efetuadas em REPS /PWS/MZYCI016F01

 

...

       EXPORTING

            input          = itab_ekpo-meins

            language       = sy-langu

       IMPORTING

            output         = v_mseh3

       EXCEPTIONS

            unit_not_found = 1

            OTHERS         = 2.

ENDFORM.

FORM verifica_montante.

* >> Início da inclusão: FORM VERIFICA_MONTANTE

  v_exit = '16_verifica_montante'.

  REFRESH itab_zyglt100.

  PERFORM verifica_exit USING 'D'

                      '/PWS/SAPMZYCI016'

                      'DNF016'.

  CLEAR itab_zyglt100 .

  READ TABLE itab_zyglt100 WITH KEY

        zexit = 'DNF016'  BINARY SEARCH.

  IF  NOT itab_zyglt100-zexit_ativa IS INITIAL.

    PERFORM (itab_zyglt100-formulario) IN PROGRAM

       (itab_zyglt100-programa) IF FOUND.

  ELSE.

* << Fim da inclusão

  IF /pws/zycbt007-waersb IS INITIAL.

    SELECT SINGLE *

      FROM /pws/zycbt007

      WHERE bukrs EQ /pws/zycie041-bukrs.

  ENDIF.

  CLEAR: v_montante1, v_ipi, v_icms.

  LOOP AT itab_zycit036

    WHERE nrseq = itab_zycit042-nrseq

      AND ebeln = itab_zycit042-ebeln

      AND ebelp = itab_zycit042-ebelp.

...

 

...

      ENDIF.

    ELSE.

      v_advicms = ( itab_zycit003-advalicms / 100 ).

    ENDIF.

    v_basred = ( v_advicms * 10000 / itab_zycit003-advalicms ).

  ELSE.

    v_basred    = itab_zycit003-basred.

  ENDIF.

  IF v_basred IS INITIAL.

    v_basred = 100.

* >> Início da inclusão: FORM VERIFICA_MONTANTE

    ENDIF.

* << Fim da inclusão

  ENDIF.

ENDFORM.

FORM transfere_pedidos.

  LOOP AT itab_zycit042.

    itab_ebeln-sign   = 'I'.

    itab_ebeln-option = 'EQ'.

    itab_ebeln-low    = itab_zycit042-ebeln.

    APPEND itab_ebeln.

    itab_ebelp-sign   = 'I'.

    itab_ebelp-option = 'EQ'.

...

 

...

  it_zycee007-netoth = v_despesas + v_outras + v_ipi +

          v_vldp_044 .

  it_zycee007-netpr   = itab_zycit044-netpr.

  v_total = ( ( it_zycee007-netpr * itab_zycit044-qtd_item ) +

            it_zycee007-netfre + it_zycee007-netins +

            it_zycee007-netoth ).

  IF itab_zycit100-icms_dif = 'X'.

    itab_zycit003-basred = '100'.

    v_basred = itab_zycit003-basred.

  ENDIF.

* >> Início da inclusão: FORM VALORES_R

  v_exit = '16_valores_r'.

  REFRESH itab_zyglt100.

  PERFORM verifica_exit USING 'D'

                      '/PWS/SAPMZYCI016'

                      'DNF016'.

  CLEAR itab_zyglt100 .

  READ TABLE itab_zyglt100 WITH KEY

        zexit = 'DNF016'  BINARY SEARCH.

  IF  NOT itab_zyglt100-zexit_ativa IS INITIAL.

    PERFORM (itab_zyglt100-formulario) IN PROGRAM

       (itab_zyglt100-programa) IF FOUND.

  ELSE.

* << Fim da inclusão

  CLEAR v_advicms.

  IF NOT itab_zycit003-advalicms IS INITIAL.

    IF /pws/zycit062-bs_pis_cof IS INITIAL.

      IF NOT itab_zycit003-basred IS INITIAL OR

         NOT itab_zycit003-basred EQ '100'.

        v_advicms = ( ( itab_zycit003-advalicms / 100 ) *

         ( itab_zycit003-basred / 100 ) ) .

      ELSE.

        v_advicms = ( itab_zycit003-advalicms / 100 ).

      ENDIF.

    ELSE.

      v_advicms = ( itab_zycit003-advalicms / 100 ).

    ENDIF.

    v_basred = ( v_advicms * 10000 / itab_zycit003-advalicms ).

  ELSE.

    v_basred    = itab_zycit003-basred.

* >> Início da inclusão: FORM VALORES_R

    ENDIF.

* << Fim da inclusão

  ENDIF.

ENDFORM.

FORM efetua_cancelamento_g.

  DATA v_subrc LIKE sy-subrc.

  CLEAR v_apaga.

  GET CURSOR FIELD v_campo VALUE v_valor.

  IF v_campo EQ '/PWS/ZYCIE042-DOCNUM' AND v_valor > 0.

    READ TABLE itab_zycit041 WITH KEY docnum = v_valor.

    IF itab_zycit041-statusp_mr1m = 'C' AND

       v_modalidade NE '99'.

...

 

...

           vigen_fim    >= p_data AND

           land1       = t001-land1.

    IF sy-subrc EQ 0.

      p_taxa = /pws/zycit174-txconver.

    ELSE.

      p_taxa = '1'.

    ENDIF.

  ENDIF.

ENDFORM.

FORM atualiza_icms_unitario.

* >> Início da inclusão: FORM ATUALIZA_ICMS_UNITARIO

  v_exit = '16_atualiza_icms'.

  REFRESH itab_zyglt100.

  PERFORM verifica_exit USING 'D'

                      '/PWS/SAPMZYCI016'

                      'DNF016'.

  CLEAR itab_zyglt100 .

  READ TABLE itab_zyglt100 WITH KEY

        zexit = 'DNF016'  BINARY SEARCH.

  IF  NOT itab_zyglt100-zexit_ativa IS INITIAL.

    PERFORM (itab_zyglt100-formulario) IN PROGRAM

       (itab_zyglt100-programa) IF FOUND.

  ELSE.

* << Fim da inclusão

  SELECT SINGLE * FROM /pws/zycit100

   WHERE nrseq = itab_zycit042-nrseq

     AND ebeln = itab_zycit042-ebeln

     AND ebelp = itab_zycit042-ebelp.

  IF sy-subrc EQ 0.

    SELECT * UP TO 1 ROWS FROM /pws/zycit085

             WHERE   nrseqdi = /pws/zycit100-nrseqdi.

    ENDSELECT.

  ENDIF.

  IF /pws/zycit001-tpdecl IS INITIAL.

...

 

...

  AND /pws/zycit100-codregtri EQ '4'.

    IF NOT /pws/zycit062-tred IS INITIAL.

      itab_zycit042-netpr = itab_zycit042-netpr + ( (

          /pws/zycit100-vlicms / itab_zycit042-qtd_iten )

            * 100 ) / v_basred.

    ELSE.

      itab_zycit042-netpr = itab_zycit042-netpr +

      ( /pws/zycit100-vlicms / itab_zycit042-qtd_iten ).

    ENDIF.

  ENDIF.

* >> Início da inclusão: FORM ATUALIZA_ICMS_UNITARIO

  ENDIF.

* << Fim da inclusão

ENDFORM.

FORM bi_fb08.

  CHECK NOT /pws/zycie041a-belnr_f_02_c IS INITIAL.

  PERFORM clear_date_batch.

  it_zycbe033-tcode  = 'FB08'.

  it_zycbe033-tabela = text-014.

  it_zycbe033-cpochv = /pws/zycie041a-nfglobal.

  it_zycbe033-belnr  = /pws/zycie041a-belnr_f_02_c.

  it_zycbe033-bukrs  = /pws/zycie041a-bukrs.

  it_zycbe033-bldat  = sy-datum.

...

 

 

----------------------------------------------------------------------------------------------------

Modificações efetuadas em REPS /PWS/MZYCI016X01

 

...

        lifn2 TYPE ekpa-lifn2.

  DATA: END  OF itab_ekpa.

  data: v_vlii     type /pws/zycit100-vlii    ,

        v_vlipi    type /pws/zycit100-vlipi   ,

        v_vlpis    type /pws/zycit100-vlpis   ,

        v_vlcofins type /pws/zycit100-vlcofins.

  DATA: v_val_icms LIKE /pws/zycee007-netpr,

        v_base_ps LIKE /pws/zycee007-base ,

        v_fundap.

data  v_advicms type p decimals 3.

* >> Início da inclusão:

data v_exit(40).

* << Fim da inclusão

DATA: END OF COMMON PART a.