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).
7.0
Produto:
Nota
Descrição
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