CE PLUS - Nota 006782

Módulo: DRAWBACK

Funcionalidade: CE Reports Formulários

Data/Hora da Publicação: 17/06/2008 00:00:00

Data/Hora Última Alteração: 17/02/2011 15:21:53

Descrição da Nota: RUD EXPORTAÇÃO (FABRICANTE EXPORTADOR) INTERMEDIARIO IMPORTAÇÃO

Sintoma

Desenvolvimento do RUD Exportação (Fabricante exportador) Intermediario importação.

 

 

Solução

Novo Relatório unificado de Drawback fabricante exportador (DB Intermediário-importação).

 

Versões Tratadas

7.0


Pré-Requisitos

Produto:

Nota

Descrição

AJUSTE NO PROGRAMA PARA TRAZER A DESCRIÇÃO DE CADA NCM

PROCESSOS ENVOLVENDO TRADING COMPANIES

DESENVOLVIMENTO ATO CONCESSÓRIO ISENÇÃO INTERMEDIARIO-IMPORTADOR

AGRUPAMENTO DE ITENS COM O MESMO NCM E DI / RE

Informações Complementares

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

Nota Número 06782 Data: 17/06/2008 Hora: 10:17:38

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

 

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

Nota Número              : 06782

Categoria                : Melhoria

Prioridade               : Média

Versão PW.CE             : 7.0

Pacote                   : 00006

Agrupamento              : 00053

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

Referência às notas relacionadas:

Número - Ordem - Versão - Pacote - Descrição Breve

 

03751  - 00001 - 7.0    - 00001  - AJUSTE NO PROGRAMA PARA TRAZER A DESCRIÇÃO DE CADA NCM

06000  - 00002 - 7.0    - 00004  - PROCESSOS ENVOLVENDO TRADING COMPANIES

06026  - 00003 - 7.0    - 00004  - AGRUPAMENTO DE ITENS COM O MESMO NCM E DI / RE

06788  - 00004 - 7.0    - 00006  - DESENVOLVIMENTO ATO CONCESSÓRIO ISENÇÃO INTERMEDIARIO-IMPORTADOR

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

RUD EXPORTAÇÃO (FABRICANTE EXPORTADOR) INTERMEDIARIO IMPORTAÇÃO

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

Palavras Chave:

RUD EXPORTAÇÃO (FABRICANTE EXPORTADOR) INTERMEDIARIO IMPORTAÇÃO

 

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

Objetos da nota:

REPS /PWS/ZYCRR002

REPS /PWS/ZYCRR035

REPT /PWS/ZYCRR035

REPT /PWS/ZYCRR002

 

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

Modificações efetuadas em REPS /PWS/ZYCRR002

 

...

        tcurx.

TYPES: BEGIN OF s_cabecalho.

TYPES: empresa      TYPE t001-bukrs,

       desc_emp     TYPE t001-butxt,

       local_neg    TYPE t001w-j_1bbranch,

       cnpjmask(18) TYPE c,

       sy_datlo(25) TYPE c,

       anexo        TYPE /pws/zycit476-anexo,

       pagina       TYPE i,

       p_proc1      TYPE /pws/zycrt003-name,

* >> Início da exclusão:

       p_proc2      TYPE /pws/zycrt003-name.

* << Fim da exclusão

* >> Início da inclusão:

       p_proc2      TYPE /pws/zycrt003-name,

       tipo3(40)    TYPE c.

* << Fim da inclusão

INCLUDE TYPE /pws/zycit244 AS zycit244.

TYPES:  END OF s_cabecalho.

TYPES: BEGIN OF s_itens.

TYPES: nrre            TYPE /pws/zycit259-nrre,

       dtre            TYPE /pws/zycit259-dtre,

       j_1bnbm         TYPE /pws/zycit259-j_1bnbm,

       gewei           TYPE /pws/zycit259-gewei,

       ntgew           TYPE /pws/zycit259-ntgew,

       qtd_iten        TYPE /pws/zycit259-qtd_iten,

       meins           TYPE /pws/zycit259-meins,

...

 

...

      it_report_fields TYPE t_rep_fields.

DATA: it_excel_content TYPE t_excel_content,

      it_sect_height   TYPE t_sect_height,

      it_generation_options TYPE t_generation_options.

DATA:  BEGIN OF itab_zycrt003 OCCURS 0.

        INCLUDE STRUCTURE /pws/zycrt003.

DATA: END OF itab_zycrt003.

DATA:  BEGIN OF itab_t604n OCCURS 0.

        INCLUDE STRUCTURE t604n.

DATA: END OF itab_t604n.

* >> Início da inclusão:

DATA: BEGIN OF itab_zycit476 OCCURS 0.

        INCLUDE STRUCTURE /pws/zycit476.

DATA: END OF itab_zycit476.

* << Fim da inclusão

SELECTION-SCREEN BEGIN OF BLOCK b1.

PARAMETERS: p_nrseqd TYPE /pws/zycit244-nrseqd  OBLIGATORY MODIF ID key.

SELECTION-SCREEN END OF BLOCK b1.

SELECTION-SCREEN BEGIN OF BLOCK b2.

PARAMETERS: p_proc1 TYPE /pws/zycrt003-name,

            p_proc2 TYPE /pws/zycrt003-name.

SELECTION-SCREEN END OF BLOCK b2.

PARAMETERS: p_passwd(132) TYPE c LOWER CASE.

PARAMETERS: p_option TYPE xfeld NO-DISPLAY.

AT SELECTION-SCREEN OUTPUT.

...

 

...

  DATA: wa_itens LIKE LINE OF p_t_itens,

        v_tabix TYPE sy-tabix,

        v_line  TYPE sy-index,

        v_marc  TYPE c,

        it_itens TYPE t_itens WITH HEADER LINE.

  SELECT SINGLE *

      INTO p_cabecalho-zycit244

      FROM /pws/zycit244

      WHERE nrseqd = p_nrseqd.

  CHECK sy-subrc = 0.

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

  IF p_cabecalho-zycit244-tipo EQ 'C'.

    p_cabecalho-tipo3 = text-005.

  ELSEIF p_cabecalho-zycit244-tipo EQ 'N'.

    p_cabecalho-tipo3 = text-006.

  ENDIF.

* << Fim da inclusão

  SELECT SINGLE bukrs butxt

      INTO (p_cabecalho-empresa, p_cabecalho-desc_emp)

      FROM t001

      WHERE bukrs = p_cabecalho-zycit244-bukrs.

  SELECT SINGLE j_1bbranch

  FROM t001w

  INTO p_cabecalho-local_neg

  WHERE werks = p_cabecalho-zycit244-werks.

  CALL FUNCTION 'J_1BREAD_BRANCH_DATA'

       EXPORTING

...

 

...

       WHERE nrseqd EQ p_cabecalho-zycit244-nrcompos.

  it_itens[] = p_t_itens[].

  REFRESH p_t_itens.

  SELECT *

  FROM t604n

  INTO TABLE itab_t604n

  FOR ALL ENTRIES IN it_itens

  WHERE steuc = it_itens-j_1bnbm

  AND spras = sy-langu.

  LOOP AT it_itens.

* >> Início da exclusão: FORM SELECT_DATA

    IF it_itens-nrre IS INITIAL.

* << Fim da exclusão

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

    IF it_itens-nrre IS INITIAL OR p_cabecalho-zycit244-tipo EQ 'N'.

* << Fim da inclusão

      CONCATENATE it_itens-nfnum it_itens-serie

      INTO it_itens-nrre SEPARATED BY '-'.

      MOVE it_itens-dtnf TO it_itens-dtre.

    ENDIF.

    READ TABLE itab_t604n WITH KEY steuc = it_itens-j_1bnbm

                                   spras = sy-langu.

    CONCATENATE itab_t604n-text1 itab_t604n-text2

                itab_t604n-text3 itab_t604n-text4

               itab_t604n-text5  INTO it_itens-maktx SEPARATED BY space.

    COLLECT it_itens INTO p_t_itens.

...

 

...

          CHANGING

             v_linharod.

  PERFORM get_section_rows

          USING

             'VIA I (8)'

             p_t_sect_height[]

          CHANGING

             v_linhancm.

  WHILE current_item <= total_items.

    wa_cabecalho = p_header.

* >> Início da exclusão: FORM CREATE_EXCEL_CONTENT_TABLE

    wa_cabecalho-pagina = wa_cabecalho-anexo = wa_cabecalho-anexo + 1.

* << Fim da exclusão

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

    itab_zycit476-nrseqd = p_nrseqd.

    itab_zycit476-tipo = 'E'.

    itab_zycit476-anexo = wa_cabecalho-pagina = wa_cabecalho-anexo =

                          wa_cabecalho-anexo + 1.

* << Fim da inclusão

    PERFORM append_new_section

            USING

               'VIA I (2)'

               current_row

            CHANGING

               p_t_excel_content[].

    PERFORM fill_header_fields

            USING

               wa_cabecalho

               'VIA I (2)'

...

 

...

  itab_exel_temp[] = p_t_excel_content[].

  SUBTRACT 1 FROM current_row.

  section_rows = current_row.

  DO 2 TIMES.

    LOOP AT itab_exel_temp INTO wa_exel_temp.

      ADD current_row TO wa_exel_temp-row.

      APPEND wa_exel_temp TO p_t_excel_content.

    ENDLOOP.

    ADD section_rows TO current_row.

  ENDDO.

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

  APPEND itab_zycit476.

  DELETE FROM /pws/zycit476 WHERE nrseqd EQ p_nrseqd

                              AND tipo  EQ 'E'.

  INSERT /pws/zycit476 FROM TABLE itab_zycit476.

* << Fim da inclusão

ENDFORM.

FORM trata_procurador CHANGING p_proc.

  FREE v_tab.

  CLEAR: v_tab, f_tab.

  REFRESH: v_tab, f_tab.

  SELECT * FROM /pws/zycrt003

  INTO TABLE itab_zycrt003.

  LOOP AT itab_zycrt003.

    MOVE itab_zycrt003-name TO v_tab.

    APPEND v_tab.

...

 

 

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

Modificações efetuadas em REPS /PWS/ZYCRR035

 

Criar programa: /PWS/ZYCRR035

 

Título:         RUD Exportação (Intermediário Importação)

Categoria:      Programa executável

Cl.desenvolvimento:    /PWS/ZYCR

 

Aritmética em ponto fixo [X]

Bloqueio do editor       [ ]

Inicio via variante      [ ]

 

*Código fonte:

 

* >> Início da inclusão:

REPORT /pws/zycrr035 MESSAGE-ID /pws/zycrm.

INCLUDE: /pws/zycri004,

         /pws/zycri003,

         /pws/zycri002.

TABLES: /pws/zycrt003,

        tcurx.

TYPES: BEGIN OF s_cabecalho.

TYPES: empresa      TYPE t001-bukrs,

       desc_emp     TYPE t001-butxt,

       local_neg    TYPE t001w-j_1bbranch,

       cnpjmask(18) TYPE c,

       sy_datlo(25) TYPE c,

       anexo        TYPE /pws/zycit476-anexo,

       pagina       TYPE i,

       p_proc1      TYPE /pws/zycrt003-name,

       p_proc2      TYPE /pws/zycrt003-name.

INCLUDE TYPE /pws/zycit244 AS zycit244.

TYPES:  END OF s_cabecalho.

TYPES: BEGIN OF s_itens.

TYPES: nrre            TYPE /pws/zycit259-nrre,

       dtre            TYPE /pws/zycit259-dtre,

       j_1bnbm         TYPE /pws/zycit259-j_1bnbm,

       gewei           TYPE /pws/zycit259-gewei,

       ntgew           TYPE /pws/zycit259-ntgew,

       qtd_iten        TYPE /pws/zycit259-qtd_iten,

       meins           TYPE /pws/zycit259-meins,

       vl_fob          TYPE /pws/zycit259-vlfob,

       waersfob        TYPE /pws/zycit259-waersfob,

       vl_cif          TYPE /pws/zycit259-vlcif,

       nfnum           TYPE /pws/zycit259-nfnum,

       serie           TYPE /pws/zycit259-serie,

       dtnf            TYPE /pws/zycit259-dtnf,

       maktx(200)      TYPE c,

       subtot          TYPE c,

       j_1bnbmtot      TYPE /pws/zycit259-j_1bnbm,

       ntgewtot        TYPE /pws/zycit259-ntgew,

       qtd_tot         TYPE /pws/zycit279-qtd_perda,

       vl_fobtot       TYPE /pws/zycit259-vlfob,

       vl_ciftot       TYPE /pws/zycit259-vlcif,

       descr_ncmt(200) TYPE c,

       descr_ncm(200)  TYPE c.

TYPES: END OF s_itens,

       t_itens TYPE STANDARD TABLE OF s_itens.

TYPES: BEGIN OF s_tot_ncm.

TYPES: peso    TYPE /pws/zycit259-ntgew,

       qtd     TYPE /pws/zycit279-qtd_perda,

       fob     TYPE /pws/zycit259-vlfob,

       cif     TYPE /pws/zycit259-vlcif,

       totpeso TYPE /pws/zycit259-ntgew,

       totqtd  TYPE /pws/zycit279-qtd_perda,

       totfob  TYPE /pws/zycit259-vlfob,

       totcif  TYPE /pws/zycit259-vlcif,

END OF s_tot_ncm,

t_tot_ncm TYPE STANDARD TABLE OF s_tot_ncm.

TYPE-POOLS vrm.

DATA: list  TYPE vrm_values,

      value LIKE LINE OF list.

DATA: v_total    TYPE /pws/zycit259-vlcif,

      v_meins    TYPE /pws/zycit259-meins,

      v_meinss   TYPE /pws/zycit259-meins,

      v_peso     TYPE /pws/zycit259-ntgew,

      v_quant    TYPE /pws/zycit259-qtd_iten,

      v_vlemb    TYPE /pws/zycit259-vlfob,

      v_totncm   TYPE i,

      v_ncm      TYPE /pws/zycit259-j_1bnbm,

      v_waers TYPE /pws/zycit259-waersemb,

      v_waerst TYPE /pws/zycit259-waersemb,

      v_descrncm(200) TYPE c.

DATA: BEGIN OF v_tab OCCURS 200,

        value(40) TYPE c,

      END OF v_tab.

DATA: BEGIN OF f_tab OCCURS 10.

        INCLUDE STRUCTURE help_value.

DATA: END OF f_tab.

DATA: wa_cabecalho  TYPE s_cabecalho,

      it_itens     TYPE t_itens.

DATA: wa_gen_param     TYPE /pws/zycrt012,

      wa_rep_param     TYPE /pws/zycrt013,

      it_matrix        TYPE t_matrix,

      it_report_fields TYPE t_rep_fields.

DATA: it_excel_content TYPE t_excel_content,

      it_sect_height   TYPE t_sect_height,

      it_generation_options TYPE t_generation_options.

DATA:  BEGIN OF itab_zycrt003 OCCURS 0.

        INCLUDE STRUCTURE /pws/zycrt003.

DATA: END OF itab_zycrt003.

DATA:  BEGIN OF itab_t604n OCCURS 0.

        INCLUDE STRUCTURE t604n.

DATA: END OF itab_t604n.

SELECTION-SCREEN BEGIN OF BLOCK b1.

PARAMETERS: p_nrseqd TYPE /pws/zycit244-nrseqd  OBLIGATORY MODIF ID key.

SELECTION-SCREEN END OF BLOCK b1.

SELECTION-SCREEN BEGIN OF BLOCK b2.

PARAMETERS: p_proc1 TYPE /pws/zycrt003-name,

            p_proc2 TYPE /pws/zycrt003-name.

SELECTION-SCREEN END OF BLOCK b2.

PARAMETERS: p_passwd(132) TYPE c LOWER CASE.

PARAMETERS: p_option TYPE xfeld NO-DISPLAY.

AT SELECTION-SCREEN OUTPUT.

  IF p_option = 'X'.

    LOOP AT SCREEN.

      IF screen-group1 = 'KEY'.

        screen-input = '0'.

        MODIFY SCREEN.

      ENDIF.

    ENDLOOP.

  ENDIF.

  LOOP AT SCREEN.

    CASE screen-name.

      WHEN 'P_PASSWD'.

        screen-invisible = '1'.

        MODIFY SCREEN.

    ENDCASE.

  ENDLOOP.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_proc1.

  PERFORM trata_procurador CHANGING p_proc1.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_proc2.

  PERFORM trata_procurador CHANGING p_proc2.

START-OF-SELECTION.

  PERFORM select_data

          USING

             p_nrseqd

          CHANGING

             wa_cabecalho

             it_itens.

  IF wa_cabecalho IS INITIAL.

    MESSAGE i050 WITH text-002.

    EXIT.

  ENDIF.

  PERFORM select_parameters

          USING

             'D'

             'RUDEI'

             sy-langu

             wa_cabecalho-zycit244-bukrs

             ''

             ''

             ''

             ''

             ''

             ''

             ''

             ''

             ''

             ''

          CHANGING

             wa_gen_param

             wa_rep_param

             it_matrix[]

             it_report_fields[].

  IF wa_gen_param IS INITIAL

      OR wa_rep_param IS INITIAL

      OR it_matrix[] IS INITIAL.

    msg_module = 'D'.

    msg_report = 'RUDEI'.

    msg_langu  = sy-langu.

    msg_bukrs  = wa_cabecalho-bukrs.

    MESSAGE e000.

  ENDIF.

  PERFORM create_excel_content_table

          USING

             wa_cabecalho

             it_itens[]

             wa_rep_param

             it_matrix[]

             it_report_fields[]

          CHANGING

             it_excel_content[]

             it_sect_height[].

  PERFORM generate_file_name

          USING

             wa_cabecalho-zycit244-nrseqd

             wa_gen_param

             wa_rep_param

          CHANGING

             v_file_name.

  PERFORM download_file

          USING

             wa_rep_param

             v_file_name.

  PERFORM create_report

          USING

             wa_gen_param-report_generator

             v_file_name

             'REPORT'

             p_passwd

             it_excel_content[]

             it_sect_height[]

             it_generation_options[].

  LEAVE PROGRAM.

END-OF-SELECTION.

FORM select_data

     USING

        p_nrseqd TYPE /pws/zycit244-nrseqd

     CHANGING

        p_cabecalho      TYPE s_cabecalho

        p_t_itens        TYPE t_itens.

  DATA: wa_itens LIKE LINE OF p_t_itens,

        v_tabix TYPE sy-tabix,

        v_line  TYPE sy-index,

        v_marc  TYPE c,

        it_itens TYPE t_itens WITH HEADER LINE.

  SELECT SINGLE *

      INTO p_cabecalho-zycit244

      FROM /pws/zycit244

      WHERE nrseqd = p_nrseqd.

  CHECK sy-subrc = 0.

  IF p_cabecalho-zycit244-modalidade NE 'I'

   OR p_cabecalho-zycit244-tipo NE 'N'.

    MESSAGE i015(/pws/zycim) WITH text-005

               p_cabecalho-zycit244-nrseqd.

    LEAVE PROGRAM.

  ENDIF.

  SELECT SINGLE bukrs butxt

      INTO (p_cabecalho-empresa, p_cabecalho-desc_emp)

      FROM t001

      WHERE bukrs = p_cabecalho-zycit244-bukrs.

  SELECT SINGLE j_1bbranch

  FROM t001w

  INTO p_cabecalho-local_neg

  WHERE werks = p_cabecalho-zycit244-werks.

  CALL FUNCTION 'J_1BREAD_BRANCH_DATA'

       EXPORTING

            branch     = p_cabecalho-local_neg

            bukrs      = p_cabecalho-empresa

       IMPORTING

            cgc_number = p_cabecalho-zycit244-cnpj.

  WRITE p_cabecalho-zycit244-cnpj TO p_cabecalho-cnpjmask

   USING EDIT MASK '__.___.___/____-__'.

  CALL FUNCTION '/PWS/ZYCR_DATA_EXTENSO'

       EXPORTING

            data         = sy-datlo

            spras        = 'P'

       IMPORTING

            data_extenso = p_cabecalho-sy_datlo.

  p_cabecalho-p_proc1 = p_proc1.

  p_cabecalho-p_proc2 = p_proc2.

  SELECT MAX( anexo ) FROM /pws/zycit476

      INTO p_cabecalho-anexo

      WHERE nrseqd EQ p_nrseqd

        AND tipo EQ 'E'.

  IF p_cabecalho-anexo IS INITIAL.

    MESSAGE i015(/pws/zycim) WITH text-003 text-004.

    LEAVE PROGRAM.

  ENDIF.

  SELECT nrre dtemb ncm meins peso qtd_iten um_qtd vlfob waers

  FROM /pws/zycit495 INTO TABLE p_t_itens

       WHERE nrseqd EQ p_cabecalho-zycit244-nrcompos.

  it_itens[] = p_t_itens[].

  REFRESH p_t_itens.

  SELECT *

  FROM t604n

  INTO TABLE itab_t604n

  FOR ALL ENTRIES IN it_itens

  WHERE steuc = it_itens-j_1bnbm

  AND spras = sy-langu.

  LOOP AT it_itens.

    IF it_itens-nrre IS INITIAL.

      CONCATENATE it_itens-nfnum it_itens-serie

      INTO it_itens-nrre SEPARATED BY '-'.

      MOVE it_itens-dtnf TO it_itens-dtre.

    ENDIF.

    READ TABLE itab_t604n WITH KEY steuc = it_itens-j_1bnbm

                                   spras = sy-langu.

    CONCATENATE itab_t604n-text1 itab_t604n-text2

                itab_t604n-text3 itab_t604n-text4

               itab_t604n-text5  INTO it_itens-maktx SEPARATED BY space.

    it_itens-vl_cif = it_itens-vl_fob.

    PERFORM converter_moeda USING it_itens-vl_cif

                   it_itens-waersfob

                   'USD'

                   it_itens-dtre

          CHANGING it_itens-vl_cif.

    COLLECT it_itens INTO p_t_itens.

  ENDLOOP.

  SORT p_t_itens BY j_1bnbm.

  LOOP AT p_t_itens INTO wa_itens.

    v_tabix = sy-tabix.

    CHECK wa_itens-subtot NE 'X'.

    ON CHANGE OF wa_itens-j_1bnbm.

      READ TABLE itab_t604n WITH KEY steuc = wa_itens-j_1bnbm

                                     spras = sy-langu.

      IF sy-subrc = 0.

        CONCATENATE 'NCM'

                    wa_itens-j_1bnbm

                    itab_t604n-text1

                    itab_t604n-text2

                    itab_t604n-text3

                    itab_t604n-text4

                    itab_t604n-text5

                    INTO wa_itens-descr_ncm SEPARATED BY space.

        INSERT wa_itens INTO p_t_itens INDEX v_tabix.

      ENDIF.

      IF v_tabix NE 1.

        MOVE: v_ncm          TO wa_itens-j_1bnbmtot,

              'X'            TO wa_itens-subtot    ,

              v_peso         TO wa_itens-ntgewtot  ,

              v_total        TO wa_itens-vl_ciftot ,

              wa_itens-waersfob TO v_waerst,

              v_waers    TO wa_itens-waersfob,

              v_vlemb        TO wa_itens-vl_fobtot ,

              wa_itens-meins TO v_meinss           ,

              v_meins        TO wa_itens-meins     ,

              v_meinss       TO v_meins            ,

              v_quant        TO wa_itens-qtd_tot   ,

              v_descrncm     TO wa_itens-descr_ncmt.

        INSERT wa_itens INTO p_t_itens INDEX v_tabix.

        wa_itens-waersfob = v_waerst.

        v_marc = 'X'.

      ENDIF.

      CLEAR: v_ncm,

             v_peso,

             v_total,

             v_vlemb,

             v_quant,

             v_descrncm.

    ENDON.

    IF v_marc IS INITIAL.

      v_meins = wa_itens-meins.

    ELSE.

      CLEAR v_marc.

    ENDIF.

    MOVE: wa_itens-j_1bnbm TO v_ncm,

          wa_itens-descr_ncm TO v_descrncm.

    PERFORM retorna_decimais USING wa_itens-waersfob

                          CHANGING wa_itens-vl_fob.

    ADD: wa_itens-ntgew TO v_peso,

         wa_itens-vl_cif TO v_total,

         wa_itens-vl_fob TO v_vlemb,

         wa_itens-qtd_iten TO v_quant.

  ENDLOOP.

  DESCRIBE TABLE p_t_itens LINES v_line.

  ADD 1 TO v_line.

  MOVE: v_ncm    TO wa_itens-j_1bnbmtot,

        'X'      TO wa_itens-subtot,

        v_peso   TO wa_itens-ntgewtot,

        v_meins    TO wa_itens-meins,

        v_total  TO wa_itens-vl_ciftot,

        v_vlemb  TO wa_itens-vl_fobtot,

        v_quant  TO wa_itens-qtd_tot,

        v_descrncm TO wa_itens-descr_ncmt.

  INSERT wa_itens INTO p_t_itens INDEX v_line.

ENDFORM.

FORM create_excel_content_table

     USING

        p_header          TYPE any

        p_t_items         TYPE table

        p_rep_param       TYPE /pws/zycrt013

        p_t_matrix        TYPE t_matrix

        p_t_report_fields TYPE t_rep_fields

     CHANGING

        p_t_excel_content TYPE t_excel_content

        p_t_sect_height   TYPE t_sect_height.

  DATA: current_row  TYPE i VALUE 1,

        section_rows TYPE i.

  DATA: has_remaining_space TYPE abap_bool.

  DATA: current_item         TYPE i VALUE 1,

        total_items          TYPE i,

        remaining_item_space TYPE f.

  DATA: section_height        TYPE f,

        filled_section_height TYPE f.

  DATA: subrc TYPE sy-subrc.

  DATA: it_section_content LIKE p_t_excel_content[].

  DATA: it_iteanexo        LIKE p_t_excel_content[] WITH HEADER LINE.

  DATA: itab_exel_temp TYPE t_excel_content,

        wa_exel_temp   LIKE LINE OF itab_exel_temp[].

  DATA: v_linetot   TYPE f,

        v_linecab   TYPE f,

        v_lineite   TYPE f,

        v_linesub   TYPE f,

        v_linesub2  TYPE f,

        v_linerod   TYPE f,

        v_linencm   TYPE f,

        v_resto     TYPE f,

        v_linhacab  TYPE i,

        v_linhaite  TYPE i,

        v_linhasub  TYPE i,

        v_linhasub2 TYPE i,

        v_linharod  TYPE i,

        v_linhancm  TYPE i,

        v_descrncm(100)  TYPE c.

  DATA: wa_itens TYPE s_itens,

        wa_iteanexo TYPE s_itens,

        wa_totanexo TYPE s_tot_ncm,

        wa_total    TYPE s_tot_ncm.

  DATA: linha_a TYPE i.

  PERFORM select_row_height_cache

  USING

  p_rep_param-spras

  p_rep_param-file_id

  CHANGING

  p_t_sect_height[].

  DESCRIBE TABLE p_t_items[] LINES total_items.

  PERFORM get_section_height

          USING

             'REPORT'

             p_t_sect_height[]

          CHANGING

             v_linetot.

  PERFORM get_section_height

          USING

             'VIA I (2)'

             p_t_sect_height[]

          CHANGING

             v_linecab.

  PERFORM get_section_height

          USING

             'VIA I (3)'

             p_t_sect_height[]

          CHANGING

             v_lineite.

  PERFORM get_section_height

          USING

             'VIA I (4)'

             p_t_sect_height[]

          CHANGING

             v_linesub.

  PERFORM get_section_height

          USING

             'VIA I (5)'

             p_t_sect_height[]

          CHANGING

             v_linesub2.

  PERFORM get_section_height

          USING

             'VIA I (6)'

             p_t_sect_height[]

          CHANGING

             v_linerod.

  PERFORM get_section_height

          USING

             'VIA I (6)'

             p_t_sect_height[]

          CHANGING

             v_linencm.

  PERFORM get_section_rows

          USING

             'VIA I (2)'

             p_t_sect_height[]

          CHANGING

             v_linhacab.

  PERFORM get_section_rows

          USING

             'VIA I (3)'

             p_t_sect_height[]

          CHANGING

             v_linhaite.

  PERFORM get_section_rows

          USING

             'VIA I (4)'

             p_t_sect_height[]

          CHANGING

             v_linhasub.

  PERFORM get_section_rows

          USING

             'VIA I (5)'

             p_t_sect_height[]

          CHANGING

             v_linhasub2.

  PERFORM get_section_rows

          USING

             'VIA I (6)'

             p_t_sect_height[]

          CHANGING

             v_linharod.

  PERFORM get_section_rows

          USING

             'VIA I (8)'

             p_t_sect_height[]

          CHANGING

             v_linhancm.

  WHILE current_item <= total_items.

    wa_cabecalho = p_header.

    wa_cabecalho-pagina = wa_cabecalho-anexo = wa_cabecalho-anexo + 1.

    PERFORM append_new_section

            USING

               'VIA I (2)'

               current_row

            CHANGING

               p_t_excel_content[].

    PERFORM fill_header_fields

            USING

               wa_cabecalho

               'VIA I (2)'

               current_row

               p_t_matrix[]

               p_t_report_fields[]

            CHANGING

               p_t_excel_content[].

    ADD v_linhacab TO current_row.

    remaining_item_space = v_linetot - v_linecab - v_linesub -

                           v_linesub2 - v_linerod.

    has_remaining_space = abap_true.

    CLEAR wa_totanexo.

    PERFORM append_new_section

            USING

               'VIA I (3)'

               current_row

            CHANGING

               p_t_excel_content[].

    CLEAR: linha_a.

    WHILE has_remaining_space = abap_true AND

          current_item <= total_items.

      REFRESH it_section_content[].

      IF linha_a < 30.

        CLEAR wa_itens.

        READ TABLE p_t_items INTO wa_itens INDEX current_item.

        IF wa_itens-subtot = ' '.

          IF wa_itens-descr_ncm <> v_descrncm

          AND NOT wa_itens-descr_ncm IS INITIAL.

            PERFORM append_new_section

                    USING

                       'VIA I (9)'

                       current_row

                    CHANGING

                       it_section_content[].

            PERFORM fill_items_fields

                    USING

                       p_t_items[]

                       'VIA I (9)'

                       current_row

                       p_t_matrix[]

                       p_t_report_fields[]

                       p_t_sect_height[]

                       current_item

                    CHANGING

                       filled_section_height

                       it_section_content[]

                       subrc.

            IF subrc = 0.

              APPEND LINES OF it_section_content TO p_t_excel_content.

              ADD 1 TO current_item.

              ADD 1 TO current_row.

              ADD 1 TO linha_a.

              SUBTRACT filled_section_height FROM remaining_item_space.

              v_descrncm = wa_itens-descr_ncm.

            ENDIF.

          ENDIF.

          PERFORM fill_items_fields

                  USING

                     p_t_items[]

                     'VIA I (3)'

                     current_row

                     p_t_matrix[]

                     p_t_report_fields[]

                     p_t_sect_height[]

                     current_item

                  CHANGING

                     filled_section_height

                     it_section_content[]

                     subrc.

          IF subrc = 0.

            it_iteanexo[] = it_section_content[].

            READ TABLE p_t_items INTO wa_iteanexo INDEX current_item.

            IF wa_iteanexo-subtot IS INITIAL.

              wa_totanexo-peso = wa_totanexo-peso + wa_iteanexo-ntgew.

              wa_totanexo-qtd = wa_totanexo-qtd + wa_iteanexo-qtd_iten.

              PERFORM retorna_decimais USING wa_iteanexo-waersfob

                                            CHANGING wa_iteanexo-vl_fob.

              wa_totanexo-fob = wa_totanexo-fob + wa_iteanexo-vl_fob.

              wa_totanexo-cif = wa_totanexo-cif + wa_iteanexo-vl_cif.

              wa_total-totpeso =

                              wa_total-totpeso + wa_iteanexo-ntgew.

              wa_total-totqtd =

                             wa_total-totqtd + wa_iteanexo-qtd_iten.

              wa_total-totfob =

                              wa_total-totfob + wa_iteanexo-vl_fob.

              wa_total-totcif =

                              wa_total-totcif + wa_iteanexo-vl_cif.

            ENDIF.

          ENDIF.

        ELSE.

          PERFORM append_new_section

                  USING

                     'VIA I (8)'

                     current_row

                  CHANGING

                     p_t_excel_content[].

          PERFORM fill_items_fields

                  USING

                     p_t_items[]

                     'VIA I (8)'

                     current_row

                     p_t_matrix[]

                     p_t_report_fields[]

                     p_t_sect_height[]

                     current_item

                  CHANGING

                     filled_section_height

                     it_section_content[]

                     subrc.

        ENDIF.

        IF subrc = 0.

          APPEND LINES OF it_section_content TO p_t_excel_content.

          ADD 1 TO current_item.

          ADD 1 TO current_row.

          ADD 1 TO linha_a.

          SUBTRACT filled_section_height FROM remaining_item_space.

        ELSE.

          ADD 1 TO current_row.

          SUBTRACT v_lineite FROM remaining_item_space.

        ENDIF.

      ELSE.

        has_remaining_space = abap_false.

      ENDIF.

    ENDWHILE.

    IF linha_a < 30.

      current_row = current_row + 30 - linha_a.

    ENDIF.

    PERFORM append_new_section

            USING

               'VIA I (4)'

               current_row

            CHANGING

               p_t_excel_content[].

    PERFORM fill_header_fields

            USING

               wa_totanexo

               'VIA I (4)'

               current_row

               p_t_matrix[]

               p_t_report_fields[]

            CHANGING

               p_t_excel_content[].

    ADD v_linhasub TO current_row.

    IF current_item > total_items.

      PERFORM append_new_section

              USING

                 'VIA I (5)'

                 current_row

              CHANGING

                 p_t_excel_content[].

      PERFORM fill_header_fields

              USING

                 wa_total

                 'VIA I (5)'

                 current_row

                 p_t_matrix[]

                 p_t_report_fields[]

              CHANGING

                 p_t_excel_content[].

      ADD v_linhasub2 TO current_row.

    ENDIF.

    PERFORM append_new_section

            USING

               'VIA I (6)'

               current_row

            CHANGING

               p_t_excel_content[].

    PERFORM fill_header_fields

            USING

               wa_cabecalho

               'VIA I (6)'

               current_row

               p_t_matrix[]

               p_t_report_fields[]

            CHANGING

               p_t_excel_content[].

    ADD v_linharod TO current_row.

    PERFORM add_page_break

            USING

               current_row

            CHANGING

               p_t_excel_content[].

  ENDWHILE.

  itab_exel_temp[] = p_t_excel_content[].

  SUBTRACT 1 FROM current_row.

  section_rows = current_row.

  DO 2 TIMES.

    LOOP AT itab_exel_temp INTO wa_exel_temp.

      ADD current_row TO wa_exel_temp-row.

      APPEND wa_exel_temp TO p_t_excel_content.

    ENDLOOP.

    ADD section_rows TO current_row.

  ENDDO.

ENDFORM.

FORM trata_procurador CHANGING p_proc.

  FREE v_tab.

  CLEAR: v_tab, f_tab.

  REFRESH: v_tab, f_tab.

  SELECT * FROM /pws/zycrt003

  INTO TABLE itab_zycrt003.

  LOOP AT itab_zycrt003.

    MOVE itab_zycrt003-name TO v_tab.

    APPEND v_tab.

  ENDLOOP.

  MOVE: '/PWS/ZYCRT003' TO f_tab-tabname,

        'NAME'    TO f_tab-fieldname,

        'X'        TO f_tab-selectflag.

  APPEND f_tab.

  CLEAR f_tab.

  CALL FUNCTION 'HELP_VALUES_GET_WITH_TABLE'

       EXPORTING

            display                   = ' '

            fieldname                 = 'NAME'

            tabname                   = '/PWS/ZYCRT003'

       IMPORTING

            select_value              = value

       TABLES

            valuetab                  = v_tab

            fields                    = f_tab

       EXCEPTIONS

            field_not_in_ddic         = 1

            more_then_one_selectfield = 2

            no_selectfield            = 3

            OTHERS                    = 4.

  IF sy-subrc EQ 0.

    MOVE value TO p_proc.

  ENDIF.

ENDFORM.

FORM retorna_decimais  USING    p_moeda

                       CHANGING p_valor.

  SELECT SINGLE * FROM tcurx WHERE currkey = p_moeda.

  IF sy-subrc <> 0.

    tcurx-currdec = 2.

  ENDIF.

  p_valor = p_valor / ( 10 ** ( tcurx-currdec - 2 ) ).

ENDFORM.

FORM converter_moeda USING p_devlme

                           p_deme

                           p_parame

                           p_data

                  CHANGING p_paravlme.

  DATA: v_ctmoeda LIKE tcurr-kurst VALUE 'G',

        v_devlme   LIKE bsak-wrbtr,

        v_paravlme LIKE bsak-wrbtr.

  v_devlme = p_devlme .

  IF p_devlme NE 0.

    CALL FUNCTION '/PWS/ZYCB_MONTANTE_CONVERTE'

         EXPORTING

              i_montante                 = v_devlme

              i_demoeda                  = p_deme

              i_paramoeda                = p_parame

              i_ctmoeda                  = v_ctmoeda

              i_dtbase                   = p_data

         IMPORTING

              e_montante                 = v_paravlme

         EXCEPTIONS

              i_demoeda_nao_encontrado   = 1

              i_paramoeda_nao_encontrado = 2

              fator_nao_encontrado       = 3

              i_ctmoeda_nao_encontrado   = 4

              i_dtbase_nao_encontrada    = 5

              taxa_nao_encontrada        = 6

              i_montante_nao_encontrado  = 7.

    p_paravlme = v_paravlme.

  ENDIF.

ENDFORM.

* << Fim da inclusão

 

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

Modificações efetuadas em REPT /PWS/ZYCRR035

 

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

Incluído símbolo de texto:

 

Idioma: PT

 

Símbolo: 002

 

Texto: (21 caracteres)

"Dados inconsistentes."

 

Comprimento máximo: 21

 

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

Incluído símbolo de texto:

 

Idioma: PT

 

Símbolo: 003

 

Texto: (33 caracteres)

"Favor gerar o Relatório Unificado"

 

Comprimento máximo: 33

 

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

Incluído símbolo de texto:

 

Idioma: PT

 

Símbolo: 004

 

Texto: (44 caracteres)

"de Drawback Fornecimento no Mercado Interno!"

 

Comprimento máximo: 44

 

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

Incluído símbolo de texto:

 

Idioma: PT

 

Símbolo: 005

 

Texto: (47 caracteres)

"Este documento não se aplica ao Ato Concessório"

 

Comprimento máximo: 47

 

 

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

Modificações efetuadas em REPT /PWS/ZYCRR002

 

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

Incluído símbolo de texto:

 

Idioma: PT

 

Símbolo: 005

 

Texto: (12 caracteres)

") Exportação"

 

Comprimento máximo: 12

 

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

Incluído símbolo de texto:

 

Idioma: PT

 

Símbolo: 006

 

Texto: (33 caracteres)

") Fornecimento no Mercado Interno"

 

Comprimento máximo: 33