Vous êtes sur la page 1sur 67

*======================================================================*

* Lojas Americanas S.A. *


* Programa : ZFINTESOR001 *
* Funo : Relatrio Grupo Previso Tesouraria com o Nmero da NF. *
* Analista : Bruno Santos *
* Autor : Bruno Santos *
* Data : 06.11.2013 *
*======================================================================*
* Log de Modificaes: *
*======================================================================*
* Data |Descrio |Autor *
* | | *
*======================================================================*
REPORT zfintesor001 MESSAGE-ID z1
NO STANDARD PAGE HEADING
LINE-SIZE 120
LINE-COUNT 65.

****************************************************************
* Tabelas
****************************************************************
TABLES : bsik, bsid, bsak, bseg, lfa1, skat, ztr02.

****************************************************************
* Ranges
****************************************************************
RANGES : r_bancos FOR bseg-hkont,
r_impostos FOR bseg-hkont,
r_despesa FOR bseg-hkont.

****************************************************************
* Estruturas
****************************************************************
TYPES:
"Estrutura de Sada
BEGIN OF y_saida,
tipo(18) TYPE c,
grupo TYPE ztr02-fdgrv,
docto TYPE bseg-belnr,
docto_comp TYPE bseg-augbl,
vl_bruto TYPE bseg-wrbtr,
fornecedor TYPE lfa1-lifnr,
nome_forn TYPE lfa1-name1,
cnpj TYPE char18,
dt_pagto TYPE bseg-zfbdt,
conta TYPE bseg-hkont,
desc_conta TYPE skat-txt50,
numero_nf TYPE bkpf-xblnr,
data_nf TYPE j_1bdocdat,
loja TYPE j_1bbranc_,
uf TYPE regio,
regiao TYPE char2,
END OF y_saida,

BEGIN OF y_nf,
xblnr TYPE xblnr,
nfnum TYPE j_1bnfnumb,
nfenum TYPE j_1bnfnum9,
series TYPE j_1bseries,
parid TYPE j_1bparid,
END OF y_nf,

BEGIN OF y_doc,
docdat TYPE j_1bdocdat,
nfnum TYPE j_1bnfnumb,
series TYPE j_1bseries,
branch TYPE j_1bbranc_,
parid TYPE j_1bparid,
nfenum TYPE j_1bnfnum9,
END OF y_doc,

BEGIN OF y_branch,
branch TYPE j_1bbranc_,
adrnr TYPE adrnr,
END OF y_branch,

BEGIN OF y_adrc,
addrnumber TYPE ad_addrnum,
region TYPE regio,
END OF y_adrc,

BEGIN OF y_bsik,
lifnr TYPE bsik-lifnr,
dmbtr TYPE bsik-dmbtr,
shkzg TYPE bsik-shkzg,
belnr TYPE bsik-belnr,
gjahr TYPE bsik-gjahr,
buzei TYPE bsik-buzei,
augdt TYPE bsik-augdt,
augbl TYPE bsik-augbl,
budat TYPE bsik-budat,
blart TYPE bsik-blart,
zfbdt TYPE bsik-zfbdt,
hkont TYPE bsik-hkont,
zlsch TYPE bsik-zlsch,
zlspr TYPE bsik-zlspr,
zuonr TYPE bsik-zuonr,
END OF y_bsik,

BEGIN OF y_bsak,
lifnr TYPE bsak-lifnr,
dmbtr TYPE bsak-dmbtr,
shkzg TYPE bsak-shkzg,
belnr TYPE bsak-belnr,
gjahr TYPE bsak-gjahr,
buzei TYPE bsak-buzei,
augdt TYPE bsak-augdt,
augbl TYPE bsak-augbl,
budat TYPE bsak-budat,
blart TYPE bsak-blart,
zfbdt TYPE bsak-zfbdt,
hkont TYPE bsak-hkont,
zlsch TYPE bsak-zlsch,
zlspr TYPE bsak-zlspr,
zuonr TYPE bsak-zuonr,
wskto TYPE bsak-wskto,
END OF y_bsak,
BEGIN OF y_bsas,
dmbtr LIKE bsas-dmbtr,
shkzg LIKE bsas-shkzg,
belnr LIKE bsas-belnr,
gjahr LIKE bsas-gjahr,
zuonr LIKE bsas-zuonr,
buzei LIKE bsas-buzei,
augdt LIKE bsas-augdt,
augbl LIKE bsas-augbl,
budat LIKE bsas-budat,
blart LIKE bsas-blart,
zfbdt LIKE bsas-zfbdt,
hkont LIKE bsas-hkont,
valut LIKE bsas-valut,
END OF y_bsas,

BEGIN OF y_bsis,
dmbtr LIKE bsis-dmbtr,
shkzg LIKE bsis-shkzg,
belnr LIKE bsis-belnr,
gjahr LIKE bsis-gjahr,
zuonr LIKE bsis-zuonr,
buzei LIKE bsis-buzei,
augdt LIKE bsis-augdt,
augbl LIKE bsis-augbl,
budat LIKE bsis-budat,
blart LIKE bsis-blart,
zfbdt LIKE bsis-zfbdt,
hkont LIKE bsis-hkont,
valut LIKE bsis-valut,
END OF y_bsis,

BEGIN OF y_bkpf,
bukrs TYPE bkpf-bukrs,
belnr TYPE bkpf-belnr,
gjahr TYPE bkpf-gjahr,
xblnr TYPE bkpf-xblnr,
END OF y_bkpf,

BEGIN OF y_bseg,
bukrs TYPE bseg-bukrs,
belnr TYPE bseg-belnr,
gjahr TYPE bsis-gjahr,
buzei TYPE bseg-buzei,
lifnr TYPE bseg-lifnr,
kunnr TYPE bseg-kunnr,
zlsch TYPE bseg-zlsch,
zlspr TYPE bseg-zlspr,
qbshb TYPE bseg-qbshb,
fdlev TYPE bseg-fdlev,
zuonr TYPE bseg-zuonr,
END OF y_bseg,

BEGIN OF y_lfa1,
lifnr TYPE lfa1-lifnr,
name1 TYPE lfa1-name1,
stcd1 TYPE lfa1-stcd1,
END OF y_lfa1,
BEGIN OF y_skat,
saknr TYPE skat-saknr,
txt50 TYPE skat-txt50,
END OF y_skat,

BEGIN OF y_ska1,
saknr TYPE ska1-saknr,
bilkt TYPE ska1-bilkt,
ktoks TYPE ska1-ktoks,
END OF y_ska1,

BEGIN OF y_lfb1,
bukrs TYPE lfb1-bukrs,
lifnr TYPE lfb1-lifnr,
fdgrv TYPE lfb1-fdgrv,
END OF y_lfb1,

BEGIN OF y_data,
dia TYPE sy-datum,
END OF y_data,

BEGIN OF y_arq,
reg(400) TYPE c,
END OF y_arq.

TYPES: BEGIN OF y_relatorio,


compr TYPE bsik-dmbtr,
pagos TYPE bsik-dmbtr,
plane TYPE bsik-dmbtr.
INCLUDE STRUCTURE ztr02.
TYPES: END OF y_relatorio.

****************************************************************
* Tabelas Internas
****************************************************************
DATA: t_fieldcat TYPE lvc_t_fcat,
t_sort TYPE lvc_t_sort,
t_saida TYPE TABLE OF y_saida,
t_bseg TYPE TABLE OF y_bseg,
t_bkpf TYPE TABLE OF y_bkpf,
t_lfa1 TYPE TABLE OF y_lfa1,
t_skat TYPE TABLE OF y_skat,
t_ska1 TYPE TABLE OF y_ska1,
t_lfb1 TYPE TABLE OF y_lfb1,
t_bsik TYPE TABLE OF y_bsik,
t_bsak TYPE TABLE OF y_bsak,
t_bsas TYPE TABLE OF y_bsas,
t_bsis TYPE TABLE OF y_bsis,
t_data TYPE TABLE OF y_data,
t_nf TYPE TABLE OF y_nf,
t_nfe TYPE TABLE OF y_nf,
t_doc TYPE TABLE OF y_doc,
t_branch TYPE TABLE OF y_branch,
t_adrc TYPE TABLE OF y_adrc,
ti_arq TYPE y_arq OCCURS 0 WITH HEADER LINE,
ti_arq_pgt TYPE y_arq OCCURS 0 WITH HEADER LINE,
lv_arq_apgt TYPE rlgrap-filename,
lv_arq_pgt TYPE rlgrap-filename,
gc_arq_sai TYPE rlgrap-filename,
gc_arq_sai_pgt TYPE rlgrap-filename,
t_relatorio TYPE TABLE OF y_relatorio.

****************************************************************
* Work Areas
****************************************************************
DATA: wa_layout TYPE lvc_s_layo,
wa_sort TYPE lvc_s_sort,
wa_fieldcat TYPE lvc_s_fcat,
wa_saida TYPE y_saida,
wa_bseg TYPE y_bseg,
wa_bkpf TYPE y_bkpf,
wa_lfa1 TYPE y_lfa1,
wa_skat TYPE y_skat,
wa_ska1 TYPE y_ska1,
wa_lfb1 TYPE y_lfb1,
wa_bsik TYPE y_bsik,
wa_bsak TYPE y_bsak,
wa_bsis TYPE y_bsis,
wa_bsas TYPE y_bsas,
wa_data TYPE y_data,
wa_nf TYPE y_nf,
wa_doc TYPE y_doc,
wa_branch TYPE y_branch,
wa_adrc TYPE y_adrc,
wa_arq TYPE y_arq,
wa_relatorio TYPE y_relatorio.

****************************************************************
* Variveis Globais
****************************************************************
DATA: vg_packsize TYPE i VALUE 800000,
vg_grupo TYPE lfb1-fdgrv,
vg_desc_forn TYPE lfa1-name1,
vg_valut TYPE bseg-valut,
vg_valor TYPE bseg-dmbtr,
vg_conta TYPE bseg-hkont,
vg_atrib TYPE bseg-zuonr,
vg_soma1 TYPE ztr02-buzei,
vg_soma2 TYPE ztr02-buzei,
vg_dmbtr(16) TYPE c,
vg_qbshb(16) TYPE c,
vg_tppagto(10) TYPE c,
vg_fdlev TYPE bseg-fdlev,
vg_contador TYPE i,
vg_datum TYPE sy-datum,
vg_uzeit TYPE sy-uzeit,
vg_dt_aux TYPE sy-datum,
vg_flag,
vl_pos TYPE sy-fdpos,
vl_len TYPE i,
vg_tabix TYPE sytabix,
w_cont_win(2) TYPE n,
w_cont_win_pgt(2) TYPE n,
w_abre_arq TYPE c,
w_abre_arq_pgt TYPE c.
****************************************************************
* Constantes
****************************************************************
CONSTANTS: c_x TYPE c VALUE 'X'.

****************************************************************
* Objetos
****************************************************************
DATA: vg_variant TYPE disvariant ,
og_grid TYPE REF TO cl_gui_alv_grid ,
og_splitter TYPE REF TO cl_gui_splitter_container ,
og_container_1 TYPE REF TO cl_gui_container ,
og_container_2 TYPE REF TO cl_gui_container ,
og_document TYPE REF TO cl_dd_document ,
og_doctable TYPE REF TO cl_dd_table_element ,
og_column TYPE REF TO cl_dd_area .

****************************************************************
* Parametros de Entrada
****************************************************************
* Parmetros de Seleo
SELECTION-SCREEN: BEGIN OF BLOCK b01 WITH FRAME TITLE text-001.
* Empresa
PARAMETERS : p_bukrs LIKE bseg-bukrs OBLIGATORY DEFAULT 'LAME'.
* Data
SELECT-OPTIONS : p_data FOR bsik-zfbdt OBLIGATORY NO-EXTENSION.

SELECTION-SCREEN: END OF BLOCK b01.

* Parmetros de Opo de Relatrio


SELECTION-SCREEN BEGIN OF BLOCK b04 WITH FRAME TITLE text-004.
SELECTION-SCREEN: BEGIN OF LINE.
"A PAGAR / RECEBER
PARAMETERS p_col1 AS CHECKBOX.
SELECTION-SCREEN: COMMENT 3(18) text-025.
SELECTION-SCREEN POSITION 29.
"PAGOS / RECEBIDOS
PARAMETERS p_col2 AS CHECKBOX DEFAULT 'X'.
SELECTION-SCREEN: COMMENT 31(18) text-026.
SELECTION-SCREEN POSITION 58.
SELECTION-SCREEN: END OF LINE.
SELECTION-SCREEN END OF BLOCK b04.

* Opes Para Salvar o Arquivo


SELECTION-SCREEN BEGIN OF BLOCK b03 WITH FRAME TITLE text-003.
SELECTION-SCREEN BEGIN OF LINE.
* Servidor
PARAMETER: pa_ser1 RADIOBUTTON GROUP g1 DEFAULT 'X' USER-COMMAND ac.
SELECTION-SCREEN COMMENT 04(28) text-021.
SELECTION-SCREEN POSITION 33.
PARAMETER: pa_arq1 LIKE rlgrap-filename MODIF ID tp1.
SELECTION-SCREEN POSITION 79.
PARAMETER: pa_typ1 LIKE rlgrap-filetype OBLIGATORY DEFAULT 'ASC' MODIF ID tp1.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN SKIP 1.
SELECTION-SCREEN BEGIN OF LINE.
* Local
PARAMETER: pa_loc1 RADIOBUTTON GROUP g1.
SELECTION-SCREEN COMMENT 04(25) text-022.
SELECTION-SCREEN POSITION 33.
PARAMETERS: pa_dir LIKE rlgrap-filename MODIF ID tp2.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 11(18) text-031.
SELECTION-SCREEN POSITION 33.
PARAMETERS: pa_arq2 LIKE rlgrap-filename MODIF ID tp2.
SELECTION-SCREEN POSITION 79.
PARAMETER: pa_typ2 LIKE rlgrap-filetype OBLIGATORY DEFAULT 'ASC' MODIF ID tp2.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN END OF BLOCK b03.

AT SELECTION-SCREEN OUTPUT.
"Se for clicado na opo SERVIDOR
IF pa_ser1 = 'X'.
"Bloqueia os campos LOCAL
LOOP AT SCREEN.
IF screen-group1 = 'TP2'.
screen-input = 0.
MODIFY SCREEN.
CLEAR pa_dir.
ENDIF.
ENDLOOP.
"Se for clicado na opo LOCAL
ELSEIF pa_loc1 = 'X'.
"Bloqueia os campos LOCAL
LOOP AT SCREEN.
IF screen-group1 = 'TP1'.
screen-input = 0.
MODIFY SCREEN.
CLEAR pa_dir.
ENDIF.
ENDLOOP.
ENDIF.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR pa_dir.


PERFORM pesquisa_dir CHANGING pa_dir.

AT SELECTION-SCREEN.
"Verifica se alguma opo de relatrio foi selecionada
IF p_col1 IS INITIAL AND p_col2 IS INITIAL.
MESSAGE e777(z1) WITH 'Selecione pelo menos uma opo de relatorio'.
ENDIF.

****************************************************************
* INITIALIZATION
****************************************************************
INITIALIZATION.

"Verifica o ambiente do sistema


CASE sy-sysid.
WHEN 'DEV' OR 'DV6'.
pa_arq1 =
'/lasa/usr/DESENV/COMNC/STATX/FISCAL/Lancamentos_NF.txt'.
WHEN 'PAR'.
pa_arq1 =
'/lasa/usr/PARALELO/COMNC/STATX/FISCAL/Lancamentos_NF.txt'.
WHEN 'BOL'.
pa_arq1 =
'/lasa/usr/BOLHA/COMNC/STATX/FISCAL/Lancamentos_NF.txt'.
WHEN 'PRD' OR 'QA6' OR 'LAS'.
pa_arq1 =
'/lasa/usr/PRODUCAO/COMNC/STATX/FISCAL/Lancamentos_NF.txt'.
ENDCASE.

pa_typ1 = 'ASC'.

pa_arq2 = 'Lancamentos_NF.txt'.

****************************************************************
* START-OF-SELECTION
****************************************************************
START-OF-SELECTION.

"Monta a tabela de datas


PERFORM monta_tabela_datas.

"Seleo de dados
PERFORM seleciona_dados.

"Monta a estrutura da fieldcat (ALV)


PERFORM monta_fieldcat_alv.

"Exibe o ALV Grid


PERFORM exibe_alv_grid.

****************************************************************
* END-OF-SELECTION
****************************************************************
END-OF-SELECTION.

****************************************************************
* FORMS
****************************************************************
*&---------------------------------------------------------------------*
*& Form PESQUISA_DIR
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* <--P_PA_DIR text
*----------------------------------------------------------------------*
FORM pesquisa_dir CHANGING lc_arq.

DATA: lc_window TYPE string,


vg_path_local TYPE string.

lc_window = 'Diretrio de Destino'.

* Atribui o Diretrio Local de Sada para o Download.


CALL METHOD cl_gui_frontend_services=>directory_browse
EXPORTING
window_title = lc_window
* initial_folder = 'Q:'
CHANGING
selected_folder = vg_path_local
EXCEPTIONS
cntl_error = 1.

*=---------------------------------------------------------------------
CALL METHOD cl_gui_cfw=>flush.
*=---------------------------------------------------------------------
IF sy-subrc <> 0.
* Erro ao acessar o Diretrio de Sada.
MESSAGE s001(zl) WITH 'Erro ao acessar o Diretrio de Sada'.
STOP.
ELSE.
lc_arq = vg_path_local.
ENDIF.

CONCATENATE lc_arq '\' INTO lc_arq.

ENDFORM. " PESQUISA_DIR


*&---------------------------------------------------------------------*
*& Form SELECIONA_DADOS
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM seleciona_dados .

"Esta tabela mantida pela trans. ZFI170


SELECT * FROM ztr02.
MOVE-CORRESPONDING ztr02 TO wa_relatorio.
APPEND wa_relatorio TO t_relatorio.
ENDSELECT.

SELECT bukrs lifnr fdgrv


FROM lfb1
INTO TABLE t_lfb1.

SORT t_lfb1 BY bukrs lifnr.

"Busca a descrio da conta contbil


SELECT saknr txt50
FROM skat
INTO TABLE t_skat
WHERE spras = 'PT'
AND ktopl = 'LASA'.

SORT t_skat BY saknr.

SELECT saknr bilkt ktoks


FROM ska1 INTO TABLE t_ska1
WHERE ktopl = 'LASA'.

r_bancos-sign = 'I'. r_bancos-option = 'EQ'.


r_impostos-sign = 'I'. r_impostos-option = 'EQ'.

LOOP AT t_ska1 INTO wa_ska1.

IF wa_ska1-ktoks = 'TRAN' AND


wa_ska1-bilkt = '0011104000' AND

wa_ska1-saknr(4) = '0081'.
r_bancos-low = wa_ska1-saknr.
APPEND r_bancos.
ENDIF.

IF wa_ska1-ktoks = 'IMPO'.
r_impostos-low = wa_ska1-saknr.
APPEND r_impostos.
ENDIF.
ENDLOOP.

"Se for selecionado A PAGAR / RECEBER


IF p_col1 = 'X'.

* ----------------------------------------------------------------------
* Valores Compromissados AP - Parte 1: Documentos em Aberto
* Documentos com data base no perodo informado.
* ----------------------------------------------------------------------
PERFORM doctos_ap_em_aberto.
* ----------------------------------------------------------------------
* Valores Compromissados AP - Parte 2: Documentos Vencidos e Pagos no
* perodo informado
* ----------------------------------------------------------------------
PERFORM doctos_ap_vencidos_pagos.

ENDIF.

"Se for selecionado PAGOS / RECEBIDOS


IF p_col2 = 'X'.

* ----------------------------------------------------------------------
* Valores Pagos AP, AR e Depsitos Bancrios - COMPENSADOS
* ----------------------------------------------------------------------
PERFORM doctos_ap_ar_compensados.
* ----------------------------------------------------------------------
* Valores Pagos AP, AR e Depsitos Bancrios - NAO COMPENSADOS
* ----------------------------------------------------------------------
PERFORM doctos_ap_ar_ncompensados.

ENDIF.

"Verifica se existe dados para exportar


DESCRIBE TABLE ti_arq.
IF sy-tfill > 1.
PERFORM grava_arq_saida.
CLOSE DATASET lv_arq_apgt.
PERFORM comando_unix USING lv_arq_apgt.
ENDIF.

"Verifica se existe dados para exportar


DESCRIBE TABLE ti_arq_pgt.
IF sy-tfill > 1.
PERFORM grava_arq_saida_pgt.
CLOSE DATASET lv_arq_pgt.
PERFORM comando_unix USING lv_arq_pgt.
ENDIF.

ENDFORM. " SELECIONA_DADOS


*&---------------------------------------------------------------------*
*& Form MONTA_TABELA_DATAS
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM monta_tabela_datas .

"Se for para salvar localmente


IF pa_loc1 IS NOT INITIAL.

IF pa_dir IS INITIAL.

"Mensagem de Erro "O caminho de Preenchimento Obrigatrio!"


MESSAGE s900 WITH 'O caminho de ' 'Preenchimento Obrigatrio!' DISPLAY LIKE
'E'.

STOP.

ENDIF.

ENDIF.

vg_datum = sy-datum.
vg_uzeit = sy-uzeit.

IF p_data-high IS INITIAL.
p_data-high = p_data-low.
ENDIF.

vg_dt_aux = p_data-low.
DO.
IF vg_dt_aux > p_data-high.
EXIT.
ENDIF.
wa_data-dia = vg_dt_aux.
APPEND wa_data TO t_data.
vg_dt_aux = vg_dt_aux + 1.
ENDDO.

r_despesa-sign = 'I'.
r_despesa-option = 'CP'.
r_despesa-low = '005*'. APPEND r_despesa.
r_despesa-low = '0062*'. APPEND r_despesa.
r_despesa-low = '007*'. APPEND r_despesa.

IF NOT p_col1 IS INITIAL.


CONCATENATE 'TIPO' ';' 'GRUPO' ';' 'NUM DOCTO' ';'
'DOCTO_COMP' ';'
'VALOR BRUTO' ';' 'FORNECEDOR' ';' 'DESC FORNECEDOR' ';'
'CNPJ' ';'
'DT PAGTO' ';' 'CONTA CONTB' ';' 'DESC CONTA CONTB' ';'
'NUMERO DA NF' ';' 'DATA EMISSAO' ';' 'LOJA' ';' 'UF' ';'
'REGIAO'
INTO ti_arq-reg.
APPEND ti_arq.
ENDIF.
IF NOT p_col2 IS INITIAL.
CONCATENATE 'TIPO' ';' 'GRUPO' ';' 'NUM DOCTO' ';'
'DOCTO_COMP' ';'
'VALOR BRUTO' ';' 'FORNECEDOR' ';' 'DESC FORNECEDOR' ';'
'CNPJ' ';'
'DT PAGTO' ';' 'CONTA CONTB' ';' 'DESC CONTA CONTB' ';'
'NUMERO DA NF' ';' 'DATA EMISSAO' ';' 'LOJA' ';' 'UF' ';'
'REGIAO'
INTO ti_arq_pgt-reg.
APPEND ti_arq_pgt.
ENDIF.

ENDFORM. " MONTA_TABELA_DATAS


*&---------------------------------------------------------------------*
*& Form DOCTOS_AP_EM_ABERTO
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM doctos_ap_em_aberto .

CLEAR vg_valut.

MESSAGE s857(z1) WITH 'Partidas em Aberto de Fornecedor.'.

CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'


EXPORTING
text = 'Partidas em Aberto de Fornecedor.'.

SELECT lifnr dmbtr shkzg belnr gjahr buzei augdt augbl budat
blart zfbdt hkont zlsch zlspr zuonr
FROM bsik PACKAGE SIZE vg_packsize
INTO TABLE t_bsik
FOR ALL ENTRIES IN t_data
WHERE bukrs EQ p_bukrs
AND zfbdt EQ t_data-dia
AND NOT zlspr > ' '.

DELETE t_bsik WHERE dmbtr = 0.

SELECT bukrs belnr gjahr xblnr


FROM bkpf
INTO TABLE t_bkpf
FOR ALL ENTRIES IN t_bsik
WHERE bukrs EQ p_bukrs AND
belnr EQ t_bsik-belnr AND
gjahr EQ t_bsik-gjahr.

SORT t_bkpf BY bukrs belnr gjahr.

SELECT bukrs belnr gjahr buzei lifnr kunnr zlsch


zlspr qbshb fdlev zuonr
FROM bseg
INTO TABLE t_bseg
FOR ALL ENTRIES IN t_bsik
WHERE bukrs EQ p_bukrs AND
belnr EQ t_bsik-belnr AND
gjahr EQ t_bsik-gjahr AND
buzei EQ t_bsik-buzei.

SORT t_bseg BY belnr gjahr buzei.

"Busca o nome do fornecedor


SELECT lifnr name1 stcd1
FROM lfa1
INTO TABLE t_lfa1
FOR ALL ENTRIES IN t_bsik
WHERE lifnr = t_bsik-lifnr.

SORT t_lfa1 BY lifnr.

IF t_bkpf[] IS NOT INITIAL.

"Busca as informaes da NF
LOOP AT t_bkpf INTO wa_bkpf.

vg_tabix = sy-tabix.

"Verifica se existe '-' na NF


SEARCH wa_bkpf-xblnr FOR '-'.

IF sy-subrc = 0.

"Limpa as variveis
CLEAR: vl_pos, vl_len.

"Verifica a quantidade de caracteres


vl_len = strlen( wa_bkpf-xblnr ).

"Passa o valor da posio que se encontra o '-'


vl_pos = sy-fdpos.

"Se a posio do '-' for inferior a 7


IF sy-fdpos > 6.

"Monta o campo NF
wa_nf-nfenum = wa_bkpf-xblnr(vl_pos).

CLEAR wa_nf-nfnum.

ELSE.

"Monta o campo NF
wa_nf-nfnum = wa_bkpf-xblnr(vl_pos).

CLEAR wa_nf-nfenum.

ENDIF.

"Adiciona 1 a posio encontrada para pegar as posies aps o '-'


vl_pos = sy-fdpos + 1.

"S preenche a srio, se for diferente


IF vl_pos NE vl_len.
"Diminiu a quantidade de caracteres do campo pela posio
vl_len = vl_len - vl_pos.

"Pegar as informaes da srie (que fica aps o '-')


wa_nf-series = wa_bkpf-xblnr+vl_pos(vl_len).

ENDIF.

"Pega o nmero de referncia


wa_nf-xblnr = wa_bkpf-xblnr.

"Busca o cdigo do fornecedor


READ TABLE t_bseg INTO wa_bseg WITH KEY bukrs = wa_bkpf-bukrs
belnr = wa_bkpf-belnr
gjahr = wa_bkpf-gjahr
BINARY SEARCH.
IF sy-subrc = 0.

wa_nf-parid = wa_bseg-lifnr.

ENDIF.

IF wa_nf-nfnum IS NOT INITIAL.

APPEND wa_nf TO t_nf.

ELSEIF wa_nf-nfenum IS NOT INITIAL.

APPEND wa_nf TO t_nfe.

ENDIF.

CLEAR wa_nf.

ELSE.

IF wa_bkpf-xblnr IS NOT INITIAL.

IF NOT wa_bkpf-xblnr CA sy-abcde.

"Limpa as variveis
CLEAR: vl_pos, vl_len.

"Verifica a quantidade de caracteres


vl_len = strlen( wa_bkpf-xblnr ).

IF vl_len < 8.

"Monta o campo NF
wa_nf-nfnum = wa_bkpf-xblnr.

CLEAR wa_nf-nfenum.

"Pega o nmero de referncia


wa_nf-xblnr = wa_bkpf-xblnr.

"Busca o cdigo do fornecedor


READ TABLE t_bseg INTO wa_bseg WITH KEY bukrs = wa_bkpf-bukrs
belnr = wa_bkpf-belnr
gjahr = wa_bkpf-gjahr
BINARY SEARCH.
IF sy-subrc = 0.

wa_nf-parid = wa_bseg-lifnr.

ENDIF.

APPEND wa_nf TO t_nf.

ELSE.

"Monta o campo NF
wa_nf-nfenum = wa_bkpf-xblnr.

CLEAR wa_nf-nfnum.

"Pega o nmero de referncia


wa_nf-xblnr = wa_bkpf-xblnr.

"Busca o cdigo do fornecedor


READ TABLE t_bseg INTO wa_bseg WITH KEY bukrs = wa_bkpf-bukrs
belnr = wa_bkpf-belnr
gjahr = wa_bkpf-gjahr
BINARY SEARCH.
IF sy-subrc = 0.

wa_nf-parid = wa_bseg-lifnr.

ENDIF.

APPEND wa_nf TO t_nfe.

ENDIF.

CLEAR wa_nf.

ENDIF.

ENDIF.

ENDIF.

ENDLOOP.

"Se a tabela tiver informaes


IF t_nf[] IS NOT INITIAL.

"Busca a data de emisso da NF pelo NF


SELECT docdat nfnum series branch parid nfenum
FROM j_1bnfdoc
INTO TABLE t_doc
FOR ALL ENTRIES IN t_nf
WHERE nfnum EQ t_nf-nfnum
AND parid EQ t_nf-parid
AND bukrs EQ p_bukrs
AND series EQ t_nf-series.
ENDIF.

"Se a tabela tiver informaes


IF t_nfe[] IS NOT INITIAL.

"Busca a data de emisso da NF pela NFe


SELECT docdat nfnum series branch parid nfenum
FROM j_1bnfdoc
APPENDING TABLE t_doc
FOR ALL ENTRIES IN t_nfe
WHERE nfenum EQ t_nfe-nfenum
AND parid EQ t_nfe-parid
AND bukrs EQ p_bukrs
AND series EQ t_nfe-series.

ENDIF.

IF t_doc[] IS NOT INITIAL.

SORT t_doc BY parid nfnum nfenum series.

"Busca as informaes do local de negcios


SELECT branch adrnr
FROM j_1bbranch
INTO TABLE t_branch
FOR ALL ENTRIES IN t_doc
WHERE bukrs EQ p_bukrs
AND branch EQ t_doc-branch.

SORT t_branch BY branch.

IF t_branch[] IS NOT INITIAL.

"Busca a UF e regio
SELECT addrnumber region
FROM adrc
INTO TABLE t_adrc
FOR ALL ENTRIES IN t_branch
WHERE addrnumber EQ t_branch-adrnr.

SORT t_adrc BY addrnumber.

ENDIF.

ENDIF.

ENDIF.

"Monta a estrutura de sada e exportao do arquivo


LOOP AT t_bsik INTO wa_bsik.

CLEAR wa_saida.

DELETE t_bsik INDEX sy-tabix.

PERFORM atualiza_grupo USING 'F' wa_bsik-lifnr.

IF NOT vg_grupo IS INITIAL.


PERFORM atualiza_totais USING wa_bsik-dmbtr vg_grupo
wa_bsik-shkzg 'H'
wa_bsik-lifnr wa_bsik-belnr
wa_bsik-gjahr wa_bsik-buzei
wa_bsik-augdt wa_bsik-augbl
wa_bsik-budat wa_bsik-blart
wa_bsik-zfbdt wa_bsik-hkont
wa_bsik-zlsch wa_bsik-zlspr
'FA' p_bukrs
vg_valut wa_bsik-zuonr.

ENDIF.
ENDLOOP.

DESCRIBE TABLE ti_arq.


IF sy-tfill > 600000.
PERFORM grava_arq_saida.
ENDIF.

CLEAR: t_bsik[], t_bkpf[], t_bseg[], t_lfa1[], t_nf[], t_nfe[],


t_doc[], t_branch[], t_adrc[].

ENDSELECT.

ENDFORM. " DOCTOS_AP_EM_ABERTO


*&---------------------------------------------------------------------*
*& Form DOCTOS_AP_VENCIDOS_PAGOS
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM doctos_ap_vencidos_pagos .

MESSAGE s857(z1) WITH 'Partidas Compensadas de Fornecedor.'.

CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'


EXPORTING
text = 'Partidas Compensadas de Fornecedor.'.

SELECT lifnr dmbtr shkzg belnr gjahr buzei augdt augbl budat
blart zfbdt hkont zlsch zlspr zuonr wskto
FROM bsak PACKAGE SIZE vg_packsize
INTO TABLE t_bsak
FOR ALL ENTRIES IN t_data
WHERE bukrs EQ p_bukrs
AND zfbdt EQ t_data-dia.

DELETE t_bsak WHERE dmbtr = 0.

SELECT bukrs belnr gjahr xblnr


FROM bkpf
INTO TABLE t_bkpf
FOR ALL ENTRIES IN t_bsak
WHERE bukrs EQ p_bukrs AND
belnr EQ t_bsak-belnr AND
gjahr EQ t_bsak-gjahr.
SORT t_bkpf BY bukrs belnr gjahr.

SELECT bukrs belnr gjahr buzei lifnr kunnr zlsch


zlspr qbshb fdlev zuonr
FROM bseg
INTO TABLE t_bseg
FOR ALL ENTRIES IN t_bsak
WHERE bukrs EQ p_bukrs AND
belnr EQ t_bsak-belnr AND
gjahr EQ t_bsak-gjahr AND
buzei EQ t_bsak-buzei.

SORT t_bseg BY belnr gjahr buzei.

"Busca o nome do fornecedor


SELECT lifnr name1 stcd1
FROM lfa1
INTO TABLE t_lfa1
FOR ALL ENTRIES IN t_bsak
WHERE lifnr = t_bsak-lifnr.

SORT t_lfa1 BY lifnr.

IF t_bkpf[] IS NOT INITIAL.

"Busca as informaes da NF
LOOP AT t_bkpf INTO wa_bkpf.

vg_tabix = sy-tabix.

"Verifica se existe '-' na NF


SEARCH wa_bkpf-xblnr FOR '-'.

IF sy-subrc = 0.

"Limpa as variveis
CLEAR: vl_pos, vl_len.

"Verifica a quantidade de caracteres


vl_len = strlen( wa_bkpf-xblnr ).

"Passa o valor da posio que se encontra o '-'


vl_pos = sy-fdpos.

"Se a posio do '-' for inferior a 7


IF sy-fdpos > 6.

"Monta o campo NF
wa_nf-nfenum = wa_bkpf-xblnr(vl_pos).

CLEAR wa_nf-nfnum.

ELSE.

"Monta o campo NF
wa_nf-nfnum = wa_bkpf-xblnr(vl_pos).

CLEAR wa_nf-nfenum.
ENDIF.

"Adiciona 1 a posio encontrada para pegar as posies aps o '-'


vl_pos = sy-fdpos + 1.

"S preenche a srio, se for diferente


IF vl_pos NE vl_len.

"Diminiu a quantidade de caracteres do campo pela posio


vl_len = vl_len - vl_pos.

"Pegar as informaes da srie (que fica aps o '-')


wa_nf-series = wa_bkpf-xblnr+vl_pos(vl_len).

ENDIF.

"Pega o nmero de referncia


wa_nf-xblnr = wa_bkpf-xblnr.

"Busca o cdigo do fornecedor


READ TABLE t_bseg INTO wa_bseg WITH KEY bukrs = wa_bkpf-bukrs
belnr = wa_bkpf-belnr
gjahr = wa_bkpf-gjahr
BINARY SEARCH.
IF sy-subrc = 0.

wa_nf-parid = wa_bseg-lifnr.

ENDIF.

IF wa_nf-nfnum IS NOT INITIAL.

APPEND wa_nf TO t_nf.

ELSEIF wa_nf-nfenum IS NOT INITIAL.

APPEND wa_nf TO t_nfe.

ENDIF.

CLEAR wa_nf.

ELSE.

IF wa_bkpf-xblnr IS NOT INITIAL.

IF NOT wa_bkpf-xblnr CA sy-abcde.

"Limpa as variveis
CLEAR: vl_len.

"Verifica a quantidade de caracteres


vl_len = strlen( wa_bkpf-xblnr ).

IF vl_len < 8.

"Monta o campo NF
wa_nf-nfnum = wa_bkpf-xblnr.

CLEAR wa_nf-nfenum.

"Pega o nmero de referncia


wa_nf-xblnr = wa_bkpf-xblnr.

"Busca o cdigo do fornecedor


READ TABLE t_bseg INTO wa_bseg WITH KEY bukrs = wa_bkpf-bukrs
belnr = wa_bkpf-belnr
gjahr = wa_bkpf-gjahr
BINARY SEARCH.
IF sy-subrc = 0.

wa_nf-parid = wa_bseg-lifnr.

ENDIF.

APPEND wa_nf TO t_nf.

ELSE.

"Monta o campo NF
wa_nf-nfenum = wa_bkpf-xblnr.

CLEAR wa_nf-nfnum.

"Pega o nmero de referncia


wa_nf-xblnr = wa_bkpf-xblnr.

"Busca o cdigo do fornecedor


READ TABLE t_bseg INTO wa_bseg WITH KEY bukrs = wa_bkpf-bukrs
belnr = wa_bkpf-belnr
gjahr = wa_bkpf-gjahr
BINARY SEARCH.
IF sy-subrc = 0.

wa_nf-parid = wa_bseg-lifnr.

ENDIF.

APPEND wa_nf TO t_nfe.

ENDIF.

CLEAR wa_nf.

ENDIF.

ENDIF.

ENDIF.

ENDLOOP.

"Se a tabela tiver informaes


IF t_nf[] IS NOT INITIAL.
"Busca a data de emisso da NF pelo NF
SELECT docdat nfnum series branch parid nfenum
FROM j_1bnfdoc
INTO TABLE t_doc
FOR ALL ENTRIES IN t_nf
WHERE nfnum EQ t_nf-nfnum
AND parid EQ t_nf-parid
AND bukrs EQ p_bukrs
AND series EQ t_nf-series.

ENDIF.

"Se a tabela tiver informaes


IF t_nfe[] IS NOT INITIAL.

"Busca a data de emisso da NF pela NFe


SELECT docdat nfnum series branch parid nfenum
FROM j_1bnfdoc
APPENDING TABLE t_doc
FOR ALL ENTRIES IN t_nfe
WHERE nfenum EQ t_nfe-nfenum
AND parid EQ t_nfe-parid
AND bukrs EQ p_bukrs
AND series EQ t_nfe-series.

ENDIF.

IF t_doc[] IS NOT INITIAL.

SORT t_doc BY parid nfnum nfenum series.

"Busca as informaes do local de negcios


SELECT branch adrnr
FROM j_1bbranch
INTO TABLE t_branch
FOR ALL ENTRIES IN t_doc
WHERE bukrs EQ p_bukrs
AND branch EQ t_doc-branch.

SORT t_branch BY branch.

IF t_branch[] IS NOT INITIAL.

"Busca a UF e regio
SELECT addrnumber region
FROM adrc
INTO TABLE t_adrc
FOR ALL ENTRIES IN t_branch
WHERE addrnumber EQ t_branch-adrnr.

SORT t_adrc BY addrnumber.

ENDIF.

ENDIF.

ENDIF.

"Monta a estrutura de sada e exportao do arquivo


LOOP AT t_bsak INTO wa_bsak.

CLEAR wa_saida.

DELETE t_bsak INDEX sy-tabix.

CLEAR: vg_conta, vg_atrib.

SELECT hkont zuonr


FROM bseg
UP TO 1 ROWS INTO (vg_conta, vg_atrib)
WHERE bukrs EQ p_bukrs
AND belnr EQ wa_bsak-augbl
AND gjahr EQ wa_bsak-augdt(4)
AND buzei BETWEEN 001 AND 999
AND hkont IN r_bancos
AND valut >= wa_bsak-zfbdt.
ENDSELECT.

IF vg_atrib IS INITIAL.
vg_atrib = wa_bsak-zuonr.
ENDIF.

IF sy-subrc EQ 0.

PERFORM atualiza_grupo USING 'F' wa_bsak-lifnr.

IF NOT vg_grupo IS INITIAL.

vg_valor = wa_bsak-dmbtr - wa_bsak-wskto.

PERFORM atualiza_totais USING vg_valor vg_grupo


wa_bsak-shkzg 'H'
wa_bsak-lifnr wa_bsak-belnr
wa_bsak-gjahr wa_bsak-buzei
wa_bsak-augdt wa_bsak-augbl
wa_bsak-budat wa_bsak-blart
wa_bsak-zfbdt wa_bsak-hkont
wa_bsak-zlsch wa_bsak-zlspr
'FF' p_bukrs
vg_valut vg_atrib.

ENDIF.

ENDIF.

ENDLOOP.

DESCRIBE TABLE ti_arq.


IF sy-tfill > 600000.
PERFORM grava_arq_saida.
ENDIF.

CLEAR: t_bsak[], t_bkpf[], t_bseg[], t_lfa1[], t_nf[], t_nfe[],


t_doc[], t_branch[], t_adrc[].

ENDSELECT.
ENDFORM. " DOCTOS_AP_VENCIDOS_PAGOS
*&---------------------------------------------------------------------*
*& Form DOCTOS_AP_AR_COMPENSADOS
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM doctos_ap_ar_compensados .

MESSAGE s857(z1) WITH 'Partidas Compensadas - Transitorias.'.

CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'


EXPORTING
text = 'Partidas Compensadas - Transitorias.'.

SELECT dmbtr shkzg belnr gjahr zuonr buzei augdt augbl


budat blart zfbdt hkont valut
FROM bsas PACKAGE SIZE vg_packsize
INTO TABLE t_bsas
FOR ALL ENTRIES IN t_data
WHERE bukrs EQ p_bukrs
AND valut EQ t_data-dia
AND hkont IN r_bancos.

SELECT bukrs belnr gjahr xblnr


FROM bkpf
INTO TABLE t_bkpf
FOR ALL ENTRIES IN t_bsas
WHERE bukrs EQ p_bukrs
AND belnr EQ t_bsas-belnr
AND gjahr EQ t_bsas-gjahr.

SORT t_bkpf BY bukrs belnr gjahr.

SELECT bukrs belnr gjahr buzei lifnr kunnr zlsch zlspr qbshb
fdlev zuonr
FROM bseg
INTO TABLE t_bseg
FOR ALL ENTRIES IN t_bsas
WHERE bukrs EQ p_bukrs
AND belnr EQ t_bsas-belnr
AND gjahr EQ t_bsas-gjahr
AND buzei BETWEEN 001 AND 999.

SORT t_bseg BY bukrs belnr gjahr buzei.

IF t_bseg[] IS NOT INITIAL.

"Busca o nome do fornecedor


SELECT lifnr name1 stcd1
FROM lfa1
INTO TABLE t_lfa1
FOR ALL ENTRIES IN t_bseg
WHERE lifnr = t_bseg-lifnr.

SORT t_lfa1 BY lifnr.


ENDIF.

IF t_bkpf[] IS NOT INITIAL.

"Busca as informaes da NF
LOOP AT t_bkpf INTO wa_bkpf.

vg_tabix = sy-tabix.

"Verifica se existe '-' na NF


SEARCH wa_bkpf-xblnr FOR '-'.

IF sy-subrc = 0.

"Limpa as variveis
CLEAR: vl_pos, vl_len.

"Verifica a quantidade de caracteres


vl_len = strlen( wa_bkpf-xblnr ).

"Passa o valor da posio que se encontra o '-'


vl_pos = sy-fdpos.

"Se a posio do '-' for inferior a 7


IF sy-fdpos > 6.

"Monta o campo NF
wa_nf-nfenum = wa_bkpf-xblnr(vl_pos).

CLEAR wa_nf-nfnum.

ELSE.

"Monta o campo NF
wa_nf-nfnum = wa_bkpf-xblnr(vl_pos).

CLEAR wa_nf-nfenum.

ENDIF.

"Adiciona 1 a posio encontrada para pegar as posies aps o '-'


vl_pos = sy-fdpos + 1.

"S preenche a srio, se for diferente


IF vl_pos NE vl_len.

"Diminiu a quantidade de caracteres do campo pela posio


vl_len = vl_len - vl_pos.

"Pegar as informaes da srie (que fica aps o '-')


wa_nf-series = wa_bkpf-xblnr+vl_pos(vl_len).

ENDIF.

"Pega o nmero de referncia


wa_nf-xblnr = wa_bkpf-xblnr.

"Busca o cdigo do fornecedor


READ TABLE t_bseg INTO wa_bseg WITH KEY bukrs = wa_bkpf-bukrs
belnr = wa_bkpf-belnr
gjahr = wa_bkpf-gjahr
BINARY SEARCH.
IF sy-subrc = 0.

wa_nf-parid = wa_bseg-lifnr.

ENDIF.

IF wa_nf-nfnum IS NOT INITIAL.

APPEND wa_nf TO t_nf.

ELSEIF wa_nf-nfenum IS NOT INITIAL.

APPEND wa_nf TO t_nfe.

ENDIF.

CLEAR wa_nf.

ELSE.

IF wa_bkpf-xblnr IS NOT INITIAL.

IF NOT wa_bkpf-xblnr CA sy-abcde.

"Limpa as variveis
CLEAR: vl_pos, vl_len.

"Verifica a quantidade de caracteres


vl_len = strlen( wa_bkpf-xblnr ).

IF vl_len < 8.

"Monta o campo NF
wa_nf-nfnum = wa_bkpf-xblnr.

CLEAR wa_nf-nfenum.

"Pega o nmero de referncia


wa_nf-xblnr = wa_bkpf-xblnr.

"Busca o cdigo do fornecedor


READ TABLE t_bseg INTO wa_bseg WITH KEY bukrs = wa_bkpf-bukrs
belnr = wa_bkpf-belnr
gjahr = wa_bkpf-gjahr
BINARY SEARCH.
IF sy-subrc = 0.

wa_nf-parid = wa_bseg-lifnr.

ENDIF.

APPEND wa_nf TO t_nf.

ELSE.
"Monta o campo NF
wa_nf-nfenum = wa_bkpf-xblnr.

CLEAR wa_nf-nfnum.

"Pega o nmero de referncia


wa_nf-xblnr = wa_bkpf-xblnr.

"Busca o cdigo do fornecedor


READ TABLE t_bseg INTO wa_bseg WITH KEY bukrs = wa_bkpf-bukrs
belnr = wa_bkpf-belnr
gjahr = wa_bkpf-gjahr
BINARY SEARCH.
IF sy-subrc = 0.

wa_nf-parid = wa_bseg-lifnr.

ENDIF.

APPEND wa_nf TO t_nfe.

ENDIF.

CLEAR wa_nf.

ENDIF.

ENDIF.

ENDIF.

ENDLOOP.

"Se a tabela tiver informaes


IF t_nf[] IS NOT INITIAL.

"Busca a data de emisso da NF pelo NF


SELECT docdat nfnum series branch parid nfenum
FROM j_1bnfdoc
INTO TABLE t_doc
FOR ALL ENTRIES IN t_nf
WHERE nfnum EQ t_nf-nfnum
AND parid EQ t_nf-parid
AND bukrs EQ p_bukrs
AND series EQ t_nf-series.

SORT t_nf BY xblnr parid.

ENDIF.

"Se a tabela tiver informaes


IF t_nfe[] IS NOT INITIAL.

"Busca a data de emisso da NF pela NFe


SELECT docdat nfnum series branch parid nfenum
FROM j_1bnfdoc
APPENDING TABLE t_doc
FOR ALL ENTRIES IN t_nfe
WHERE nfenum EQ t_nfe-nfenum
AND parid EQ t_nfe-parid
AND bukrs EQ p_bukrs
AND series EQ t_nfe-series.

SORT t_nfe BY xblnr parid.

ENDIF.

IF t_doc[] IS NOT INITIAL.

SORT t_doc BY parid nfnum nfenum series.

"Busca as informaes do local de negcios


SELECT branch adrnr
FROM j_1bbranch
INTO TABLE t_branch
FOR ALL ENTRIES IN t_doc
WHERE bukrs EQ p_bukrs
AND branch EQ t_doc-branch.

SORT t_branch BY branch.

IF t_branch[] IS NOT INITIAL.

"Busca a UF e regio
SELECT addrnumber region
FROM adrc
INTO TABLE t_adrc
FOR ALL ENTRIES IN t_branch
WHERE addrnumber EQ t_branch-adrnr.

SORT t_adrc BY addrnumber.

ENDIF.

ENDIF.

ENDIF.

LOOP AT t_bsas INTO wa_bsas.

CLEAR wa_saida.

DELETE t_bsas INDEX sy-tabix.

************************************************************************
* Atualizao dos depsitos bancrios
************************************************************************
IF wa_bsas-blart = 'OC'.
CLEAR vg_desc_forn.
PERFORM atualiza_pagos USING wa_bsas-dmbtr 'DEPOSITO'
wa_bsas-shkzg 'S'
' ' wa_bsas-belnr
wa_bsas-gjahr wa_bsas-buzei
wa_bsas-augdt wa_bsas-augbl
wa_bsas-budat wa_bsas-blart
wa_bsas-zfbdt wa_bsas-hkont
' ' ' '
'DF' p_bukrs
wa_bsas-valut wa_bsas-zuonr.
ENDIF.

************************************************************************
* Investiga a contrapartida
************************************************************************
vg_contador = 0.

CLEAR: vg_fdlev, vg_qbshb.

READ TABLE t_bseg INTO wa_bseg WITH KEY belnr = wa_bsas-belnr


gjahr = wa_bsas-gjahr
buzei = wa_bsas-buzei
BINARY SEARCH.
IF sy-subrc = 0.
vg_fdlev = wa_bseg-fdlev.
vg_qbshb = wa_bseg-qbshb.
ENDIF.

READ TABLE t_bseg INTO wa_bseg WITH KEY belnr = wa_bsas-belnr


gjahr = wa_bsas-gjahr
BINARY SEARCH.
IF sy-subrc <> 0.
CONTINUE.
ENDIF.

LOOP AT t_bseg INTO wa_bseg FROM sy-tabix.

IF wa_bseg-belnr <> wa_bsas-belnr OR


wa_bseg-gjahr <> wa_bsas-gjahr.
EXIT.
ENDIF.

IF wa_bseg-buzei = wa_bsas-buzei.
CONTINUE.
ENDIF.

IF wa_bseg-lifnr IS INITIAL AND


wa_bseg-kunnr IS INITIAL.
CONTINUE.
ENDIF.

IF wa_bsas-zuonr IS INITIAL.
wa_bsas-zuonr = wa_bseg-zuonr.
ENDIF.

PERFORM trata_contrapartida USING


wa_bsas-dmbtr wa_bsas-shkzg
wa_bsas-belnr wa_bsas-gjahr
wa_bsas-buzei wa_bsas-augdt
wa_bsas-augbl wa_bsas-budat
wa_bsas-blart wa_bsas-zfbdt
wa_bsas-hkont wa_bseg-zlsch
wa_bseg-zlspr 'F'
p_bukrs wa_bsas-valut
wa_bsas-zuonr.
IF vg_contador = 1.
EXIT.
ENDIF.

ENDLOOP.

ENDLOOP.

DESCRIBE TABLE ti_arq_pgt.


IF sy-tfill > 600000.
PERFORM grava_arq_saida_pgt.
ENDIF.

CLEAR: t_bsas[], t_bkpf[], t_bseg[], t_lfa1[], t_nf[], t_nfe[],


t_doc[], t_branch[], t_adrc[].

ENDSELECT.

ENDFORM. " DOCTOS_AP_AR_COMPENSADOS


*&---------------------------------------------------------------------*
*& Form DOCTOS_AP_AR_NCOMPENSADOS
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM doctos_ap_ar_ncompensados .

MESSAGE s857(z1) WITH 'Partidas em Aberto - Transitorias.'.

CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'


EXPORTING
text = 'Partidas em Aberto - Transitorias.'.

SELECT dmbtr shkzg belnr gjahr zuonr buzei augdt augbl


budat blart zfbdt hkont valut
FROM bsis PACKAGE SIZE vg_packsize
INTO TABLE t_bsis
FOR ALL ENTRIES IN t_data
WHERE bukrs EQ p_bukrs
AND valut EQ t_data-dia
AND hkont IN r_bancos.

SELECT bukrs belnr gjahr xblnr


FROM bkpf
INTO TABLE t_bkpf
FOR ALL ENTRIES IN t_bsis
WHERE bukrs EQ p_bukrs
AND belnr EQ t_bsis-belnr
AND gjahr EQ t_bsis-gjahr.

SORT t_bkpf BY bukrs belnr gjahr.

SELECT bukrs belnr gjahr buzei lifnr kunnr zlsch zlspr qbshb
fdlev zuonr
FROM bseg
INTO TABLE t_bseg
FOR ALL ENTRIES IN t_bsis
WHERE bukrs EQ p_bukrs
AND belnr EQ t_bsis-belnr
AND gjahr EQ t_bsis-gjahr
AND buzei BETWEEN 001 AND 999.

SORT t_bseg BY belnr gjahr buzei.

IF t_bseg[] IS NOT INITIAL.

"Busca o nome do fornecedor


SELECT lifnr name1 stcd1
FROM lfa1
INTO TABLE t_lfa1
FOR ALL ENTRIES IN t_bseg
WHERE lifnr = t_bseg-lifnr.

SORT t_lfa1 BY lifnr.

ENDIF.

IF t_bkpf[] IS NOT INITIAL.

"Busca as informaes da NF
LOOP AT t_bkpf INTO wa_bkpf.

vg_tabix = sy-tabix.

"Verifica se existe '-' na NF


SEARCH wa_bkpf-xblnr FOR '-'.

IF sy-subrc = 0.

"Limpa as variveis
CLEAR: vl_pos, vl_len.

"Verifica a quantidade de caracteres


vl_len = strlen( wa_bkpf-xblnr ).

"Passa o valor da posio que se encontra o '-'


vl_pos = sy-fdpos.

"Se a posio do '-' for inferior a 7


IF sy-fdpos > 6.

"Monta o campo NF
wa_nf-nfenum = wa_bkpf-xblnr(vl_pos).

CLEAR wa_nf-nfnum.

ELSE.

"Monta o campo NF
wa_nf-nfnum = wa_bkpf-xblnr(vl_pos).

CLEAR wa_nf-nfenum.

ENDIF.

"Adiciona 1 a posio encontrada para pegar as posies aps o '-'


vl_pos = sy-fdpos + 1.

"S preenche a srio, se for diferente


IF vl_pos NE vl_len.

"Diminiu a quantidade de caracteres do campo pela posio


vl_len = vl_len - vl_pos.

"Pegar as informaes da srie (que fica aps o '-')


wa_nf-series = wa_bkpf-xblnr+vl_pos(vl_len).

ENDIF.

"Pega o nmero de referncia


wa_nf-xblnr = wa_bkpf-xblnr.

"Busca o cdigo do fornecedor


READ TABLE t_bseg INTO wa_bseg WITH KEY bukrs = wa_bkpf-bukrs
belnr = wa_bkpf-belnr
gjahr = wa_bkpf-gjahr
BINARY SEARCH.
IF sy-subrc = 0.

wa_nf-parid = wa_bseg-lifnr.

ENDIF.

IF wa_nf-nfnum IS NOT INITIAL.

APPEND wa_nf TO t_nf.

ELSEIF wa_nf-nfenum IS NOT INITIAL.

APPEND wa_nf TO t_nfe.

ENDIF.

CLEAR wa_nf.

ELSE.

IF wa_bkpf-xblnr IS NOT INITIAL.

IF NOT wa_bkpf-xblnr CA sy-abcde.

"Limpa as variveis
CLEAR: vl_pos, vl_len.

"Verifica a quantidade de caracteres


vl_len = strlen( wa_bkpf-xblnr ).

IF vl_len < 8.

"Monta o campo NF
wa_nf-nfnum = wa_bkpf-xblnr.

CLEAR wa_nf-nfenum.
"Pega o nmero de referncia
wa_nf-xblnr = wa_bkpf-xblnr.

"Busca o cdigo do fornecedor


READ TABLE t_bseg INTO wa_bseg WITH KEY bukrs = wa_bkpf-bukrs
belnr = wa_bkpf-belnr
gjahr = wa_bkpf-gjahr
BINARY SEARCH.
IF sy-subrc = 0.

wa_nf-parid = wa_bseg-lifnr.

ENDIF.

APPEND wa_nf TO t_nf.

ELSE.

"Monta o campo NF
wa_nf-nfenum = wa_bkpf-xblnr.

CLEAR wa_nf-nfnum.

"Pega o nmero de referncia


wa_nf-xblnr = wa_bkpf-xblnr.

"Busca o cdigo do fornecedor


READ TABLE t_bseg INTO wa_bseg WITH KEY bukrs = wa_bkpf-bukrs
belnr = wa_bkpf-belnr
gjahr = wa_bkpf-gjahr
BINARY SEARCH.
IF sy-subrc = 0.

wa_nf-parid = wa_bseg-lifnr.

ENDIF.

APPEND wa_nf TO t_nfe.

ENDIF.

CLEAR wa_nf.

ENDIF.

ENDIF.

ENDIF.

ENDLOOP.

"Se a tabela tiver informaes


IF t_nf[] IS NOT INITIAL.

"Busca a data de emisso da NF pelo NF


SELECT docdat nfnum series branch parid nfenum
FROM j_1bnfdoc
INTO TABLE t_doc
FOR ALL ENTRIES IN t_nf
WHERE nfnum EQ t_nf-nfnum
AND parid EQ t_nf-parid
AND bukrs EQ p_bukrs
AND series EQ t_nf-series.

ENDIF.

"Se a tabela tiver informaes


IF t_nfe[] IS NOT INITIAL.

"Busca a data de emisso da NF pela NFe


SELECT docdat nfnum series branch parid nfenum
FROM j_1bnfdoc
APPENDING TABLE t_doc
FOR ALL ENTRIES IN t_nfe
WHERE nfenum EQ t_nfe-nfenum
AND parid EQ t_nfe-parid
AND bukrs EQ p_bukrs
AND series EQ t_nfe-series.

ENDIF.

IF t_doc[] IS NOT INITIAL.

SORT t_doc BY parid nfnum nfenum series.

"Busca as informaes do local de negcios


SELECT branch adrnr
FROM j_1bbranch
INTO TABLE t_branch
FOR ALL ENTRIES IN t_doc
WHERE bukrs EQ p_bukrs
AND branch EQ t_doc-branch.

SORT t_branch BY branch.

IF t_branch[] IS NOT INITIAL.

"Busca a UF e regio
SELECT addrnumber region
FROM adrc
INTO TABLE t_adrc
FOR ALL ENTRIES IN t_branch
WHERE addrnumber EQ t_branch-adrnr.

SORT t_adrc BY addrnumber.

ENDIF.

ENDIF.

ENDIF.

LOOP AT t_bsis INTO wa_bsis.

CLEAR wa_saida.

DELETE t_bsis INDEX sy-tabix.


************************************************************************
* Atualizao dos depsitos bancrios
************************************************************************
IF wa_bsis-blart = 'OC'.
CLEAR vg_desc_forn.
PERFORM atualiza_pagos USING wa_bsis-dmbtr 'DEPOSITO'
wa_bsis-shkzg 'S'
' ' wa_bsis-belnr
wa_bsis-gjahr wa_bsis-buzei
wa_bsis-augdt wa_bsis-augbl
wa_bsis-budat wa_bsis-blart
wa_bsis-zfbdt wa_bsis-hkont
' ' ' '
'DA' p_bukrs
wa_bsis-valut wa_bsis-zuonr.
ENDIF.

************************************************************************
* Investiga a contrapartida
************************************************************************
vg_contador = 0.

CLEAR: vg_fdlev, vg_qbshb.

READ TABLE t_bseg INTO wa_bseg WITH KEY belnr = wa_bsis-belnr


gjahr = wa_bsis-gjahr
buzei = wa_bsis-buzei
BINARY SEARCH.
IF sy-subrc = 0.
vg_fdlev = wa_bseg-fdlev.
vg_qbshb = wa_bseg-qbshb.
ENDIF.

READ TABLE t_bseg INTO wa_bseg WITH KEY belnr = wa_bsis-belnr


gjahr = wa_bsis-gjahr
BINARY SEARCH.
IF sy-subrc <> 0.
CONTINUE.
ENDIF.

LOOP AT t_bseg INTO wa_bseg FROM sy-tabix.

IF wa_bseg-belnr <> wa_bsis-belnr OR


wa_bseg-gjahr <> wa_bsis-gjahr.
EXIT.
ENDIF.

IF wa_bseg-buzei = wa_bsis-buzei.
CONTINUE.
ENDIF.

IF wa_bseg-lifnr IS INITIAL AND


wa_bseg-kunnr IS INITIAL.
CONTINUE.
ENDIF.
IF wa_bsis-zuonr IS INITIAL.
wa_bsis-zuonr = wa_bseg-zuonr.
ENDIF.

PERFORM trata_contrapartida USING


wa_bsis-dmbtr wa_bsis-shkzg
wa_bsis-belnr wa_bsis-gjahr
wa_bsis-buzei wa_bsis-augdt
wa_bsis-augbl wa_bsis-budat
wa_bsis-blart wa_bsis-zfbdt
wa_bsis-hkont wa_bseg-zlsch
wa_bseg-zlspr 'A'
p_bukrs wa_bsis-valut
wa_bsis-zuonr.
IF vg_contador = 1.
EXIT.
ENDIF.

ENDLOOP.

ENDLOOP.

DESCRIBE TABLE ti_arq_pgt.


IF sy-tfill > 600000.
PERFORM grava_arq_saida_pgt.
ENDIF.

CLEAR: t_bsis[], t_bkpf[], t_bseg[], t_lfa1[], t_nfe[],


t_nf[], t_doc[], t_branch[], t_adrc[].

ENDSELECT.

ENDFORM. " DOCTOS_AP_AR_NCOMPENSADOS


*&---------------------------------------------------------------------*
*& Form ATUALIZA_GRUPO
*&---------------------------------------------------------------------*
* Obtm o grupo de previso do fornecedor
*----------------------------------------------------------------------*
* -->P_tipo (F - Fornecedor, C - Cliente) *
* *
*----------------------------------------------------------------------*
FORM atualiza_grupo USING value(p_tipo)
p_codigo.

CLEAR: vg_grupo, vg_desc_forn.

READ TABLE t_lfb1 INTO wa_lfb1 WITH KEY bukrs = p_bukrs


lifnr = p_codigo
BINARY SEARCH.

READ TABLE t_lfa1 INTO wa_lfa1 WITH KEY lifnr = p_codigo


BINARY SEARCH.
vg_grupo = wa_lfb1-fdgrv.
vg_desc_forn = wa_lfa1-name1.

ENDFORM. " ATUALIZA_GRUPO


*&---------------------------------------------------------------------*
*& Form ATUALIZA_TOTAIS
*&---------------------------------------------------------------------*
* Atualiza os valores totais nos trs nveis
*----------------------------------------------------------------------*
* -->P_Valor Valor do Lanamento *
* -->P_Grupo Grupo de Previso da Tesouraria *
* -->P_Natureza Natureza do lanamento (H - Crdito, S - Dbito)*
* -->P_Nat_Pos Natureza de lanamento que levar sinal positivo*
*----------------------------------------------------------------------*

FORM atualiza_totais USING p_valor TYPE bseg-dmbtr


p_grupo TYPE lfb1-fdgrv
p_natureza TYPE bseg-shkzg
p_nat_pos TYPE bseg-shkzg
p_lifnr TYPE bseg-lifnr
p_belnr TYPE bseg-belnr
p_gjahr TYPE bseg-gjahr
p_buzei TYPE bseg-buzei
p_augdt TYPE bseg-augdt
p_augbl TYPE bseg-augbl
p_budat TYPE bsik-budat
p_blart TYPE bsik-blart
p_zfbdt TYPE bseg-zfbdt
p_hkont TYPE bseg-hkont
p_zlsch TYPE bseg-zlsch
p_zlspr TYPE bseg-zlspr
p_tipo
p_bukrs TYPE bseg-bukrs
p_valut TYPE bseg-valut
p_atrib TYPE bseg-zuonr.

DATA: vl_vencim TYPE bseg-zfbdt,


vl_tpknt TYPE c,
vl_data TYPE c LENGTH 10,
vl_data_nf TYPE c LENGTH 10.

READ TABLE t_relatorio INTO wa_relatorio WITH KEY fdgrv = p_grupo.


vg_tabix = sy-tabix.
IF sy-subrc NE 0. "tratamento quando no existir cadastro na ZFI170
CLEAR wa_relatorio.
wa_relatorio-buzei = 999.
wa_relatorio-fdgrv = p_grupo.
APPEND wa_relatorio TO t_relatorio.
ENDIF.

IF p_natureza EQ p_nat_pos.
WRITE p_valor TO vg_dmbtr.
CONDENSE vg_dmbtr NO-GAPS.
wa_relatorio-compr = wa_relatorio-compr + p_valor.
ELSE.
WRITE p_valor TO vg_dmbtr.
CONCATENATE '-' vg_dmbtr INTO vg_dmbtr.
CONDENSE vg_dmbtr NO-GAPS.
wa_relatorio-compr = wa_relatorio-compr - p_valor.
ENDIF.
*
vg_tabix = sy-tabix.
MODIFY t_relatorio FROM wa_relatorio INDEX vg_tabix.
"TRANSPORTING compr.
vg_soma1 = wa_relatorio-soma1.
vg_soma2 = wa_relatorio-soma2.

IF vg_soma1 GT 0.
READ TABLE t_relatorio INTO wa_relatorio WITH KEY buzei = vg_soma1.
vg_tabix = sy-tabix.
IF p_natureza EQ p_nat_pos.
wa_relatorio-compr = wa_relatorio-compr + p_valor.
ELSE.
wa_relatorio-compr = wa_relatorio-compr - p_valor.
ENDIF.

vg_tabix = sy-tabix.

MODIFY t_relatorio FROM wa_relatorio INDEX vg_tabix.


"TRANSPORTING compr.
ENDIF.

IF vg_soma2 GT 0.
READ TABLE t_relatorio INTO wa_relatorio WITH KEY buzei = vg_soma2.
vg_tabix = sy-tabix.
IF p_natureza EQ p_nat_pos.
wa_relatorio-compr = wa_relatorio-compr + p_valor.
ELSE.
wa_relatorio-compr = wa_relatorio-compr - p_valor.
ENDIF.

vg_tabix = sy-tabix.
MODIFY t_relatorio FROM wa_relatorio INDEX vg_tabix.

ENDIF.

IF NOT p_col1 IS INITIAL.

CLEAR: vg_fdlev, vg_qbshb.


READ TABLE t_bseg INTO wa_bseg WITH KEY belnr = p_belnr
gjahr = p_gjahr
buzei = p_buzei
BINARY SEARCH.
IF sy-subrc = 0.
vg_fdlev = wa_bseg-fdlev.
vg_qbshb = wa_bseg-qbshb.
ENDIF.

WRITE vg_qbshb TO vg_qbshb.

IF p_natureza <> p_nat_pos.


CONCATENATE '-' vg_qbshb INTO vg_qbshb.
ENDIF.
CONDENSE vg_qbshb NO-GAPS.

IF p_zfbdt IS NOT INITIAL.


vl_vencim = p_zfbdt.
ELSEIF p_valut IS NOT INITIAL.
vl_vencim = p_valut.
ELSE.
vl_vencim = p_budat.
ENDIF.

"Monta a estrutura de sada


wa_saida-tipo = 'A PAGAR / RECEBER'.
wa_saida-grupo = p_grupo.
wa_saida-docto = p_belnr.
wa_saida-docto_comp = p_augbl.
wa_saida-vl_bruto = p_valor.
wa_saida-fornecedor = p_lifnr.
wa_saida-dt_pagto = p_zfbdt.
* wa_saida-conta = p_hkont.

"Busca o nmero da NF
READ TABLE t_bkpf INTO wa_bkpf WITH KEY bukrs = p_bukrs
belnr = p_belnr
gjahr = p_gjahr
BINARY SEARCH.
IF sy-subrc = 0.

wa_saida-numero_nf = wa_bkpf-xblnr.

READ TABLE t_nf INTO wa_nf WITH KEY xblnr = wa_bkpf-xblnr


parid = wa_bseg-lifnr
BINARY SEARCH.

IF sy-subrc = 0.

"Busca a data de emisso da NF e a Loja


READ TABLE t_doc INTO wa_doc WITH KEY parid = wa_nf-parid
nfnum = wa_nf-nfnum
series = wa_nf-series
BINARY SEARCH.

IF sy-subrc = 0.

wa_saida-data_nf = wa_doc-docdat.
wa_saida-loja = wa_doc-branch.

"Busca as informaes do local de negcios


READ TABLE t_branch INTO wa_branch WITH KEY branch = wa_doc-branch
BINARY SEARCH.

IF sy-subrc = 0.

"Monta a UF e Regio
READ TABLE t_adrc INTO wa_adrc WITH KEY addrnumber = wa_branch-adrnr
BINARY SEARCH.

IF sy-subrc = 0.

wa_saida-uf = wa_adrc-region.

CASE wa_adrc-region.

WHEN 'DF'.
wa_saida-regiao = 'CO'.
WHEN 'GO'.
wa_saida-regiao = 'CO'.
WHEN 'MS'.
wa_saida-regiao = 'CO'.
WHEN 'MT'.
wa_saida-regiao = 'CO'.
WHEN 'AC'.
wa_saida-regiao = 'N'.
WHEN 'AM'.
wa_saida-regiao = 'N'.

WHEN 'AP'.
wa_saida-regiao = 'N'.
WHEN 'PA'.
wa_saida-regiao = 'N'.
WHEN 'RO'.
wa_saida-regiao = 'N'.
WHEN 'RR'.
wa_saida-regiao = 'N'.
WHEN 'TO'.
wa_saida-regiao = 'N'.
WHEN 'AL'.
wa_saida-regiao = 'NE'.

WHEN 'BA'.
wa_saida-regiao = 'NE'.
WHEN 'CE'.
wa_saida-regiao = 'NE'.
WHEN 'MA'.
wa_saida-regiao = 'NE'.
WHEN 'PB'.
wa_saida-regiao = 'NE'.
WHEN 'PE'.
wa_saida-regiao = 'NE'.
WHEN 'PI'.
wa_saida-regiao = 'NE'.

WHEN 'RN'.
wa_saida-regiao = 'NE'.
WHEN 'SE'.
wa_saida-regiao = 'NE'.
WHEN 'PR'.
wa_saida-regiao = 'S'.
WHEN 'RS'.
wa_saida-regiao = 'S'.
WHEN 'SC'.
wa_saida-regiao = 'S'.
WHEN 'ES'.
wa_saida-regiao = 'SE'.

WHEN 'MG'.
wa_saida-regiao = 'SE'.
WHEN 'RJ'.
wa_saida-regiao = 'SE'.
WHEN 'SP'.
wa_saida-regiao = 'SE'.

ENDCASE.

ENDIF.
ENDIF.

ELSE.

"Busca a data de emisso da NF pela NFe


READ TABLE t_doc INTO wa_doc WITH KEY parid = wa_nf-parid
nfenum = wa_nf-nfenum
series = wa_nf-series
BINARY SEARCH.

IF sy-subrc = 0.

wa_saida-data_nf = wa_doc-docdat.
wa_saida-loja = wa_doc-branch.

"Busca as informaes do local de negcios


READ TABLE t_branch INTO wa_branch WITH KEY branch = wa_doc-branch
BINARY SEARCH.

IF sy-subrc = 0.

"Monta a UF e Regio
READ TABLE t_adrc INTO wa_adrc WITH KEY addrnumber = wa_branch-adrnr
BINARY SEARCH.

IF sy-subrc = 0.

wa_saida-uf = wa_adrc-region.

CASE wa_adrc-region.

WHEN 'DF'.
wa_saida-regiao = 'CO'.
WHEN 'GO'.
wa_saida-regiao = 'CO'.
WHEN 'MS'.
wa_saida-regiao = 'CO'.
WHEN 'MT'.
wa_saida-regiao = 'CO'.
WHEN 'AC'.
wa_saida-regiao = 'N'.
WHEN 'AM'.
wa_saida-regiao = 'N'.

WHEN 'AP'.
wa_saida-regiao = 'N'.
WHEN 'PA'.
wa_saida-regiao = 'N'.
WHEN 'RO'.
wa_saida-regiao = 'N'.
WHEN 'RR'.
wa_saida-regiao = 'N'.
WHEN 'TO'.
wa_saida-regiao = 'N'.
WHEN 'AL'.
wa_saida-regiao = 'NE'.
WHEN 'BA'.
wa_saida-regiao = 'NE'.
WHEN 'CE'.
wa_saida-regiao = 'NE'.
WHEN 'MA'.
wa_saida-regiao = 'NE'.
WHEN 'PB'.
wa_saida-regiao = 'NE'.
WHEN 'PE'.
wa_saida-regiao = 'NE'.
WHEN 'PI'.
wa_saida-regiao = 'NE'.

WHEN 'RN'.
wa_saida-regiao = 'NE'.
WHEN 'SE'.
wa_saida-regiao = 'NE'.
WHEN 'PR'.
wa_saida-regiao = 'S'.
WHEN 'RS'.
wa_saida-regiao = 'S'.
WHEN 'SC'.
wa_saida-regiao = 'S'.
WHEN 'ES'.
wa_saida-regiao = 'SE'.

WHEN 'MG'.
wa_saida-regiao = 'SE'.
WHEN 'RJ'.
wa_saida-regiao = 'SE'.
WHEN 'SP'.
wa_saida-regiao = 'SE'.

ENDCASE.

ENDIF.

ENDIF.

ENDIF.

ENDIF.

ENDIF.

READ TABLE t_nfe INTO wa_nf WITH KEY xblnr = wa_bkpf-xblnr


parid = wa_bseg-lifnr
BINARY SEARCH.

IF sy-subrc = 0.

"Busca a data de emisso da NF e a Loja


READ TABLE t_doc INTO wa_doc WITH KEY parid = wa_nf-parid
nfnum = wa_nf-nfnum
series = wa_nf-series
BINARY SEARCH.

IF sy-subrc = 0.
wa_saida-data_nf = wa_doc-docdat.
wa_saida-loja = wa_doc-branch.

"Busca as informaes do local de negcios


READ TABLE t_branch INTO wa_branch WITH KEY branch = wa_doc-branch
BINARY SEARCH.

IF sy-subrc = 0.

"Monta a UF e Regio
READ TABLE t_adrc INTO wa_adrc WITH KEY addrnumber = wa_branch-adrnr
BINARY SEARCH.

IF sy-subrc = 0.

wa_saida-uf = wa_adrc-region.

CASE wa_adrc-region.

WHEN 'DF'.
wa_saida-regiao = 'CO'.
WHEN 'GO'.
wa_saida-regiao = 'CO'.
WHEN 'MS'.
wa_saida-regiao = 'CO'.
WHEN 'MT'.
wa_saida-regiao = 'CO'.
WHEN 'AC'.
wa_saida-regiao = 'N'.
WHEN 'AM'.
wa_saida-regiao = 'N'.

WHEN 'AP'.
wa_saida-regiao = 'N'.
WHEN 'PA'.
wa_saida-regiao = 'N'.
WHEN 'RO'.
wa_saida-regiao = 'N'.
WHEN 'RR'.
wa_saida-regiao = 'N'.
WHEN 'TO'.
wa_saida-regiao = 'N'.
WHEN 'AL'.
wa_saida-regiao = 'NE'.

WHEN 'BA'.
wa_saida-regiao = 'NE'.
WHEN 'CE'.
wa_saida-regiao = 'NE'.
WHEN 'MA'.
wa_saida-regiao = 'NE'.
WHEN 'PB'.
wa_saida-regiao = 'NE'.
WHEN 'PE'.
wa_saida-regiao = 'NE'.
WHEN 'PI'.
wa_saida-regiao = 'NE'.
WHEN 'RN'.
wa_saida-regiao = 'NE'.
WHEN 'SE'.
wa_saida-regiao = 'NE'.
WHEN 'PR'.
wa_saida-regiao = 'S'.
WHEN 'RS'.
wa_saida-regiao = 'S'.
WHEN 'SC'.
wa_saida-regiao = 'S'.
WHEN 'ES'.
wa_saida-regiao = 'SE'.

WHEN 'MG'.
wa_saida-regiao = 'SE'.
WHEN 'RJ'.
wa_saida-regiao = 'SE'.
WHEN 'SP'.
wa_saida-regiao = 'SE'.

ENDCASE.

ENDIF.

ENDIF.

ELSE.

"Busca a data de emisso da NF pela NFe


READ TABLE t_doc INTO wa_doc WITH KEY parid = wa_nf-parid
nfenum = wa_nf-nfenum
series = wa_nf-series
BINARY SEARCH.

IF sy-subrc = 0.

wa_saida-data_nf = wa_doc-docdat.
wa_saida-loja = wa_doc-branch.

"Busca as informaes do local de negcios


READ TABLE t_branch INTO wa_branch WITH KEY branch = wa_doc-branch
BINARY SEARCH.

IF sy-subrc = 0.

"Monta a UF e Regio
READ TABLE t_adrc INTO wa_adrc WITH KEY addrnumber = wa_branch-adrnr
BINARY SEARCH.

IF sy-subrc = 0.

wa_saida-uf = wa_adrc-region.

CASE wa_adrc-region.

WHEN 'DF'.
wa_saida-regiao = 'CO'.
WHEN 'GO'.
wa_saida-regiao = 'CO'.
WHEN 'MS'.
wa_saida-regiao = 'CO'.
WHEN 'MT'.
wa_saida-regiao = 'CO'.
WHEN 'AC'.
wa_saida-regiao = 'N'.
WHEN 'AM'.
wa_saida-regiao = 'N'.

WHEN 'AP'.
wa_saida-regiao = 'N'.
WHEN 'PA'.
wa_saida-regiao = 'N'.
WHEN 'RO'.
wa_saida-regiao = 'N'.
WHEN 'RR'.
wa_saida-regiao = 'N'.
WHEN 'TO'.
wa_saida-regiao = 'N'.
WHEN 'AL'.
wa_saida-regiao = 'NE'.

WHEN 'BA'.
wa_saida-regiao = 'NE'.
WHEN 'CE'.
wa_saida-regiao = 'NE'.
WHEN 'MA'.
wa_saida-regiao = 'NE'.
WHEN 'PB'.
wa_saida-regiao = 'NE'.
WHEN 'PE'.
wa_saida-regiao = 'NE'.
WHEN 'PI'.
wa_saida-regiao = 'NE'.

WHEN 'RN'.
wa_saida-regiao = 'NE'.
WHEN 'SE'.
wa_saida-regiao = 'NE'.
WHEN 'PR'.
wa_saida-regiao = 'S'.
WHEN 'RS'.
wa_saida-regiao = 'S'.
WHEN 'SC'.
wa_saida-regiao = 'S'.
WHEN 'ES'.
wa_saida-regiao = 'SE'.

WHEN 'MG'.
wa_saida-regiao = 'SE'.
WHEN 'RJ'.
wa_saida-regiao = 'SE'.
WHEN 'SP'.
wa_saida-regiao = 'SE'.

ENDCASE.
ENDIF.

ENDIF.

ENDIF.

ENDIF.

ENDIF.

ENDIF.

"Busca o nome do fornecedor


READ TABLE t_lfa1 INTO wa_lfa1 WITH KEY lifnr = p_lifnr
BINARY SEARCH.
IF sy-subrc = 0.
wa_saida-nome_forn = wa_lfa1-name1.
WRITE wa_lfa1-stcd1 TO wa_saida-cnpj USING EDIT MASK '__.___.___/____-__'.
ENDIF.

* "Busca a descrio da conta contbil


* READ TABLE t_skat INTO wa_skat WITH KEY saknr = p_hkont
* BINARY SEARCH.
* IF sy-subrc = 0.
* wa_saida-desc_conta = wa_skat-txt50.
* ENDIF.

APPEND wa_saida TO t_saida.

CLEAR: vl_data, vl_data_nf.

WRITE p_zfbdt TO vl_data DD/MM/YYYY.

WRITE wa_saida-data_nf TO vl_data_nf DD/MM/YYYY.

CONCATENATE wa_saida-tipo wa_saida-grupo wa_saida-docto wa_saida-docto_comp


vg_dmbtr
wa_saida-fornecedor wa_saida-nome_forn wa_saida-cnpj vl_data
wa_saida-conta
wa_saida-desc_conta wa_saida-numero_nf vl_data_nf wa_saida-loja
wa_saida-uf
wa_saida-regiao
INTO ti_arq-reg SEPARATED BY ';'.
APPEND ti_arq.

ENDIF.
*
ENDFORM. " ATUALIZA_TOTAIS
*&---------------------------------------------------------------------*
*& Form ATUALIZA_PAGOS
*&---------------------------------------------------------------------*
* Atualiza os valores totais nos trs nveis
*----------------------------------------------------------------------*
* -->P_Valor Valor do Lanamento *
* -->P_Grupo Grupo de Previso da Tesouraria *
* -->P_Natureza Natureza do lanamento (H - Crdito, S - Dbito)*
* -->P_Nat_Pos Natureza de lanamento que levar sinal positivo*
*----------------------------------------------------------------------*
FORM atualiza_pagos USING p_valor TYPE bseg-dmbtr
p_grupo TYPE lfb1-fdgrv
p_natureza TYPE bseg-shkzg
p_nat_pos TYPE bseg-shkzg
p_lifnr TYPE bseg-lifnr
p_belnr TYPE bseg-belnr
p_gjahr TYPE bseg-gjahr
p_buzei TYPE bseg-buzei
p_augdt TYPE bseg-augdt
p_augbl TYPE bseg-augbl
p_budat TYPE bsik-budat
p_blart TYPE bsik-blart
p_zfbdt TYPE bseg-zfbdt
p_hkont TYPE bseg-hkont
p_zlsch TYPE bseg-zlsch
p_zlspr TYPE bseg-zlspr
p_tipo
p_bukrs TYPE bseg-bukrs
p_valut TYPE bseg-valut
p_atrib TYPE bseg-zuonr.

DATA: lv_belnr TYPE bkpf-belnr,


lv_gjahr TYPE bkpf-gjahr,
lv_saknr TYPE bseg-hkont,
lv_desc_cta TYPE skat-txt50,
lv_kostl TYPE bseg-kostl,
lv_zuonr TYPE bseg-zuonr,
lv_tpknt TYPE c,
w_vencim TYPE bseg-zfbdt,
vl_data TYPE c LENGTH 10,
vl_data_nf TYPE c LENGTH 10.

READ TABLE t_relatorio INTO wa_relatorio WITH KEY fdgrv = p_grupo.


vg_tabix = sy-tabix.
IF sy-subrc NE 0. "tratamento quando no existir cadastro na ZFI170
CLEAR wa_relatorio.
wa_relatorio-buzei = 999.
wa_relatorio-fdgrv = p_grupo.
APPEND wa_relatorio TO t_relatorio.
ENDIF.

IF p_natureza EQ p_nat_pos.
WRITE p_valor TO vg_dmbtr.
CONDENSE vg_dmbtr NO-GAPS.
wa_relatorio-pagos = wa_relatorio-pagos + p_valor.
ELSE.
WRITE p_valor TO vg_dmbtr.
CONCATENATE '-' vg_dmbtr INTO vg_dmbtr.
CONDENSE vg_dmbtr NO-GAPS.
wa_relatorio-pagos = wa_relatorio-pagos - p_valor.
ENDIF.

vg_tabix = sy-tabix.
MODIFY t_relatorio FROM wa_relatorio INDEX vg_tabix.
"TRANSPORTING pagos.

vg_soma1 = wa_relatorio-soma1.
vg_soma2 = wa_relatorio-soma2.
IF vg_soma1 GT 0.

READ TABLE t_relatorio INTO wa_relatorio WITH KEY buzei = vg_soma1.


vg_tabix = sy-tabix.
IF p_natureza EQ p_nat_pos.
wa_relatorio-pagos = wa_relatorio-pagos + p_valor.
ELSE.
wa_relatorio-pagos = wa_relatorio-pagos - p_valor.
ENDIF.

vg_tabix = sy-tabix.
MODIFY t_relatorio FROM wa_relatorio INDEX vg_tabix.

ENDIF.

IF vg_soma2 GT 0.

READ TABLE t_relatorio INTO wa_relatorio WITH KEY buzei = vg_soma2.


vg_tabix = sy-tabix.
IF p_natureza EQ p_nat_pos.
wa_relatorio-pagos = wa_relatorio-pagos + p_valor.
ELSE.
wa_relatorio-pagos = wa_relatorio-pagos - p_valor.
ENDIF.

vg_tabix = sy-tabix.
MODIFY t_relatorio FROM wa_relatorio INDEX vg_tabix.

ENDIF.

PERFORM tipo_de_pagto USING p_blart p_zlsch.

WRITE vg_qbshb TO vg_qbshb.

IF p_natureza <> p_nat_pos.


CONCATENATE '-' vg_qbshb INTO vg_qbshb.
ENDIF.
CONDENSE vg_qbshb NO-GAPS.

IF p_zfbdt IS NOT INITIAL.


w_vencim = p_zfbdt.
ELSEIF p_valut IS NOT INITIAL.
w_vencim = p_valut.
ELSE.
w_vencim = p_budat.
ENDIF.

PERFORM get_doc_principal USING p_belnr p_budat p_lifnr


CHANGING lv_belnr lv_gjahr.

PERFORM get_conta USING lv_belnr lv_gjahr


CHANGING lv_saknr lv_zuonr lv_kostl.

READ TABLE t_skat INTO wa_skat WITH KEY saknr = lv_saknr


BINARY SEARCH.
IF sy-subrc = 0.
lv_desc_cta = wa_skat-txt50.
ENDIF.
"Verifica o tipo de conta
IF lv_saknr IS INITIAL.
lv_tpknt = ' '.
ELSE.
READ TABLE t_ska1 INTO wa_ska1 BINARY SEARCH
TRANSPORTING NO FIELDS WITH KEY saknr = lv_saknr.
IF sy-subrc = 0.
lv_tpknt = 'I'.
ELSEIF lv_saknr IN r_despesa.
lv_tpknt = 'D'.
ELSE.
lv_tpknt = 'O'.
ENDIF.
ENDIF.

"Monta a estrutura de sada


wa_saida-tipo = 'PAGOS / RECEBIDOS'.
wa_saida-grupo = p_grupo.
wa_saida-docto = p_belnr.
wa_saida-docto_comp = p_augbl.
wa_saida-vl_bruto = p_valor.
wa_saida-dt_pagto = w_vencim.
wa_saida-conta = lv_saknr.
wa_saida-desc_conta = lv_desc_cta.

"Busca o nmero da NF
READ TABLE t_bkpf INTO wa_bkpf WITH KEY bukrs = p_bukrs
belnr = p_belnr
gjahr = p_gjahr
BINARY SEARCH.
IF sy-subrc = 0.

wa_saida-numero_nf = wa_bkpf-xblnr.

READ TABLE t_nf INTO wa_nf WITH KEY xblnr = wa_bkpf-xblnr


parid = wa_bseg-lifnr
BINARY SEARCH.

IF sy-subrc = 0.

"Busca a data de emisso da NF e a Loja


READ TABLE t_doc INTO wa_doc WITH KEY parid = wa_nf-parid
nfnum = wa_nf-nfnum
series = wa_nf-series
BINARY SEARCH.

IF sy-subrc = 0.

wa_saida-data_nf = wa_doc-docdat.
wa_saida-loja = wa_doc-branch.

"Busca as informaes do local de negcios


READ TABLE t_branch INTO wa_branch WITH KEY branch = wa_doc-branch
BINARY SEARCH.

IF sy-subrc = 0.

"Monta a UF e Regio
READ TABLE t_adrc INTO wa_adrc WITH KEY addrnumber = wa_branch-adrnr
BINARY SEARCH.

IF sy-subrc = 0.

wa_saida-uf = wa_adrc-region.

CASE wa_adrc-region.

WHEN 'DF'.
wa_saida-regiao = 'CO'.
WHEN 'GO'.
wa_saida-regiao = 'CO'.
WHEN 'MS'.
wa_saida-regiao = 'CO'.
WHEN 'MT'.
wa_saida-regiao = 'CO'.
WHEN 'AC'.
wa_saida-regiao = 'N'.
WHEN 'AM'.
wa_saida-regiao = 'N'.

WHEN 'AP'.
wa_saida-regiao = 'N'.
WHEN 'PA'.
wa_saida-regiao = 'N'.
WHEN 'RO'.
wa_saida-regiao = 'N'.
WHEN 'RR'.
wa_saida-regiao = 'N'.
WHEN 'TO'.
wa_saida-regiao = 'N'.
WHEN 'AL'.
wa_saida-regiao = 'NE'.

WHEN 'BA'.
wa_saida-regiao = 'NE'.
WHEN 'CE'.
wa_saida-regiao = 'NE'.
WHEN 'MA'.
wa_saida-regiao = 'NE'.
WHEN 'PB'.
wa_saida-regiao = 'NE'.
WHEN 'PE'.
wa_saida-regiao = 'NE'.
WHEN 'PI'.
wa_saida-regiao = 'NE'.

WHEN 'RN'.
wa_saida-regiao = 'NE'.
WHEN 'SE'.
wa_saida-regiao = 'NE'.
WHEN 'PR'.
wa_saida-regiao = 'S'.
WHEN 'RS'.
wa_saida-regiao = 'S'.
WHEN 'SC'.
wa_saida-regiao = 'S'.
WHEN 'ES'.
wa_saida-regiao = 'SE'.

WHEN 'MG'.
wa_saida-regiao = 'SE'.
WHEN 'RJ'.
wa_saida-regiao = 'SE'.
WHEN 'SP'.
wa_saida-regiao = 'SE'.

ENDCASE.

ENDIF.

ENDIF.

ELSE.

"Busca a data de emisso da NF pela NFe


READ TABLE t_doc INTO wa_doc WITH KEY parid = wa_nf-parid
nfenum = wa_nf-nfenum
series = wa_nf-series
BINARY SEARCH.

IF sy-subrc = 0.

wa_saida-data_nf = wa_doc-docdat.
wa_saida-loja = wa_doc-branch.

"Busca as informaes do local de negcios


READ TABLE t_branch INTO wa_branch WITH KEY branch = wa_doc-branch
BINARY SEARCH.

IF sy-subrc = 0.

"Monta a UF e Regio
READ TABLE t_adrc INTO wa_adrc WITH KEY addrnumber = wa_branch-adrnr
BINARY SEARCH.

IF sy-subrc = 0.

wa_saida-uf = wa_adrc-region.

CASE wa_adrc-region.

WHEN 'DF'.
wa_saida-regiao = 'CO'.
WHEN 'GO'.
wa_saida-regiao = 'CO'.
WHEN 'MS'.
wa_saida-regiao = 'CO'.
WHEN 'MT'.
wa_saida-regiao = 'CO'.
WHEN 'AC'.
wa_saida-regiao = 'N'.
WHEN 'AM'.
wa_saida-regiao = 'N'.
WHEN 'AP'.
wa_saida-regiao = 'N'.
WHEN 'PA'.
wa_saida-regiao = 'N'.
WHEN 'RO'.
wa_saida-regiao = 'N'.
WHEN 'RR'.
wa_saida-regiao = 'N'.
WHEN 'TO'.
wa_saida-regiao = 'N'.
WHEN 'AL'.
wa_saida-regiao = 'NE'.

WHEN 'BA'.
wa_saida-regiao = 'NE'.
WHEN 'CE'.
wa_saida-regiao = 'NE'.
WHEN 'MA'.
wa_saida-regiao = 'NE'.
WHEN 'PB'.
wa_saida-regiao = 'NE'.
WHEN 'PE'.
wa_saida-regiao = 'NE'.
WHEN 'PI'.
wa_saida-regiao = 'NE'.

WHEN 'RN'.
wa_saida-regiao = 'NE'.
WHEN 'SE'.
wa_saida-regiao = 'NE'.
WHEN 'PR'.
wa_saida-regiao = 'S'.
WHEN 'RS'.
wa_saida-regiao = 'S'.
WHEN 'SC'.
wa_saida-regiao = 'S'.
WHEN 'ES'.
wa_saida-regiao = 'SE'.

WHEN 'MG'.
wa_saida-regiao = 'SE'.
WHEN 'RJ'.
wa_saida-regiao = 'SE'.
WHEN 'SP'.
wa_saida-regiao = 'SE'.

ENDCASE.

ENDIF.

ENDIF.

ENDIF.

ENDIF.

ENDIF.
READ TABLE t_nfe INTO wa_nf WITH KEY xblnr = wa_bkpf-xblnr
parid = wa_bseg-lifnr
BINARY SEARCH.

IF sy-subrc = 0.

"Busca a data de emisso da NF e a Loja


READ TABLE t_doc INTO wa_doc WITH KEY parid = wa_nf-parid
nfnum = wa_nf-nfnum
series = wa_nf-series
BINARY SEARCH.

IF sy-subrc = 0.

wa_saida-data_nf = wa_doc-docdat.
wa_saida-loja = wa_doc-branch.

"Busca as informaes do local de negcios


READ TABLE t_branch INTO wa_branch WITH KEY branch = wa_doc-branch
BINARY SEARCH.

IF sy-subrc = 0.

"Monta a UF e Regio
READ TABLE t_adrc INTO wa_adrc WITH KEY addrnumber = wa_branch-adrnr
BINARY SEARCH.

IF sy-subrc = 0.

wa_saida-uf = wa_adrc-region.

CASE wa_adrc-region.

WHEN 'DF'.
wa_saida-regiao = 'CO'.
WHEN 'GO'.
wa_saida-regiao = 'CO'.
WHEN 'MS'.
wa_saida-regiao = 'CO'.
WHEN 'MT'.
wa_saida-regiao = 'CO'.
WHEN 'AC'.
wa_saida-regiao = 'N'.
WHEN 'AM'.
wa_saida-regiao = 'N'.

WHEN 'AP'.
wa_saida-regiao = 'N'.
WHEN 'PA'.
wa_saida-regiao = 'N'.
WHEN 'RO'.
wa_saida-regiao = 'N'.
WHEN 'RR'.
wa_saida-regiao = 'N'.
WHEN 'TO'.
wa_saida-regiao = 'N'.
WHEN 'AL'.
wa_saida-regiao = 'NE'.
WHEN 'BA'.
wa_saida-regiao = 'NE'.
WHEN 'CE'.
wa_saida-regiao = 'NE'.
WHEN 'MA'.
wa_saida-regiao = 'NE'.
WHEN 'PB'.
wa_saida-regiao = 'NE'.
WHEN 'PE'.
wa_saida-regiao = 'NE'.
WHEN 'PI'.
wa_saida-regiao = 'NE'.

WHEN 'RN'.
wa_saida-regiao = 'NE'.
WHEN 'SE'.
wa_saida-regiao = 'NE'.
WHEN 'PR'.
wa_saida-regiao = 'S'.
WHEN 'RS'.
wa_saida-regiao = 'S'.
WHEN 'SC'.
wa_saida-regiao = 'S'.
WHEN 'ES'.
wa_saida-regiao = 'SE'.

WHEN 'MG'.
wa_saida-regiao = 'SE'.
WHEN 'RJ'.
wa_saida-regiao = 'SE'.
WHEN 'SP'.
wa_saida-regiao = 'SE'.

ENDCASE.

ENDIF.

ENDIF.

ELSE.

"Busca a data de emisso da NF pela NFe


READ TABLE t_doc INTO wa_doc WITH KEY parid = wa_nf-parid
nfenum = wa_nf-nfenum
series = wa_nf-series
BINARY SEARCH.

IF sy-subrc = 0.

wa_saida-data_nf = wa_doc-docdat.
wa_saida-loja = wa_doc-branch.

"Busca as informaes do local de negcios


READ TABLE t_branch INTO wa_branch WITH KEY branch = wa_doc-branch
BINARY SEARCH.

IF sy-subrc = 0.
"Monta a UF e Regio
READ TABLE t_adrc INTO wa_adrc WITH KEY addrnumber = wa_branch-adrnr
BINARY SEARCH.

IF sy-subrc = 0.

wa_saida-uf = wa_adrc-region.

CASE wa_adrc-region.

WHEN 'DF'.
wa_saida-regiao = 'CO'.
WHEN 'GO'.
wa_saida-regiao = 'CO'.
WHEN 'MS'.
wa_saida-regiao = 'CO'.
WHEN 'MT'.
wa_saida-regiao = 'CO'.
WHEN 'AC'.
wa_saida-regiao = 'N'.
WHEN 'AM'.
wa_saida-regiao = 'N'.

WHEN 'AP'.
wa_saida-regiao = 'N'.
WHEN 'PA'.
wa_saida-regiao = 'N'.
WHEN 'RO'.
wa_saida-regiao = 'N'.
WHEN 'RR'.
wa_saida-regiao = 'N'.
WHEN 'TO'.
wa_saida-regiao = 'N'.
WHEN 'AL'.
wa_saida-regiao = 'NE'.

WHEN 'BA'.
wa_saida-regiao = 'NE'.
WHEN 'CE'.
wa_saida-regiao = 'NE'.
WHEN 'MA'.
wa_saida-regiao = 'NE'.
WHEN 'PB'.
wa_saida-regiao = 'NE'.
WHEN 'PE'.
wa_saida-regiao = 'NE'.
WHEN 'PI'.
wa_saida-regiao = 'NE'.

WHEN 'RN'.
wa_saida-regiao = 'NE'.
WHEN 'SE'.
wa_saida-regiao = 'NE'.
WHEN 'PR'.
wa_saida-regiao = 'S'.
WHEN 'RS'.
wa_saida-regiao = 'S'.
WHEN 'SC'.
wa_saida-regiao = 'S'.
WHEN 'ES'.
wa_saida-regiao = 'SE'.

WHEN 'MG'.
wa_saida-regiao = 'SE'.
WHEN 'RJ'.
wa_saida-regiao = 'SE'.
WHEN 'SP'.
wa_saida-regiao = 'SE'.

ENDCASE.

ENDIF.

ENDIF.

ENDIF.

ENDIF.

ENDIF.

ENDIF.

"Busca o nmero da NF
READ TABLE t_bseg INTO wa_bseg WITH KEY bukrs = p_bukrs
belnr = p_belnr
gjahr = p_gjahr
BINARY SEARCH.
IF sy-subrc = 0.

wa_saida-fornecedor = wa_bseg-lifnr.

"Busca o nome do fornecedor


READ TABLE t_lfa1 INTO wa_lfa1 WITH KEY lifnr = wa_bseg-lifnr
BINARY SEARCH.
IF sy-subrc = 0.
wa_saida-nome_forn = wa_lfa1-name1.
WRITE wa_lfa1-stcd1 TO wa_saida-cnpj USING EDIT MASK '__.___.___/____-__'.
ENDIF.

ENDIF.

APPEND wa_saida TO t_saida.

CLEAR vl_data.

WRITE w_vencim TO vl_data DD/MM/YYYY.

WRITE wa_saida-data_nf TO vl_data_nf DD/MM/YYYY.

CONCATENATE wa_saida-tipo wa_saida-grupo wa_saida-docto wa_saida-docto_comp


vg_dmbtr
wa_saida-fornecedor wa_saida-nome_forn wa_saida-cnpj vl_data
wa_saida-conta
wa_saida-desc_conta wa_saida-numero_nf vl_data_nf wa_saida-loja
wa_saida-uf
wa_saida-regiao
INTO ti_arq_pgt-reg SEPARATED BY ';'.
APPEND ti_arq_pgt.

ENDFORM. " ATUALIZA_PAGOS


*&---------------------------------------------------------------------*
*& Form get_doc_principal
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> PV_AUGBL :
* --> PV_AUGDT :
* <-- PV_BELNR :
* <-- PV_GJAHR :
*----------------------------------------------------------------------*
FORM get_doc_principal USING pv_augbl TYPE augbl
pv_augdt TYPE augdt
pv_lifnr TYPE lifnr
CHANGING pv_belnr TYPE belnr_d
pv_gjahr TYPE gjahr.

DATA:
BEGIN OF lt_bsak OCCURS 0,
belnr TYPE bsak-belnr,
lifnr TYPE bsak-lifnr,
gjahr TYPE bsak-gjahr,
budat TYPE bsak-budat,
bschl TYPE bsak-bschl,
END OF lt_bsak.

CLEAR: pv_belnr, pv_gjahr.

IF pv_augbl IS INITIAL OR pv_augdt IS INITIAL OR


pv_lifnr IS INITIAL.
sy-subrc = 4.
EXIT.
ENDIF.

SELECT belnr lifnr gjahr budat bschl FROM bsak INTO TABLE lt_bsak
WHERE lifnr = pv_lifnr
AND bukrs = p_bukrs
AND augdt = pv_augdt
AND augbl = pv_augbl.
* AND belnr <> pv_augbl.

DELETE lt_bsak WHERE belnr = pv_augbl.

CHECK lt_bsak[] IS NOT INITIAL.

LOOP AT lt_bsak WHERE bschl = '31' OR bschl = '34' OR bschl = '39'.

PERFORM get_doc_principal
USING lt_bsak-belnr lt_bsak-budat lt_bsak-lifnr
CHANGING pv_belnr pv_gjahr.
IF sy-subrc <> 0.
pv_belnr = lt_bsak-belnr.
pv_gjahr = lt_bsak-gjahr.
EXIT.
ENDIF.

ENDLOOP.

ENDFORM. " GET_DOC_PRINCIPAL


*&---------------------------------------------------------------------*
*& Form GET_CONTA
*&---------------------------------------------------------------------*
*& Autor : Leandro Diniz (LERD)
*& Data : 24/05/2011
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> PV_BELNR :
* --> PV_GJAHR :
* <-- PV_HKONT :
* <-- PV_ZUONR :
* <-- PV_KOSTL :
*----------------------------------------------------------------------*
FORM get_conta USING pv_belnr TYPE belnr_d
pv_gjahr TYPE gjahr
CHANGING pv_hkont TYPE bseg-hkont
pv_zuonr TYPE bseg-zuonr
pv_kostl TYPE bseg-kostl.

DATA : BEGIN OF lt_bseg OCCURS 0,


hkont LIKE bseg-hkont,
zuonr LIKE bseg-zuonr,
kostl LIKE bseg-kostl,
koart LIKE bseg-koart,
END OF lt_bseg.

CLEAR: pv_hkont, pv_zuonr, pv_kostl.

CHECK pv_belnr IS NOT INITIAL.

SELECT hkont zuonr kostl koart FROM bseg INTO TABLE lt_bseg
WHERE bukrs EQ p_bukrs AND
belnr EQ pv_belnr AND
gjahr EQ pv_gjahr AND
buzei BETWEEN 001 AND 999.

CHECK sy-subrc = 0.

DELETE lt_bseg WHERE koart <> 'S'.

*--# Pega temporriamente a conta do primeiro registro, para o caso de


*--# ter apenas contas de impostos, exibir a primeira
READ TABLE lt_bseg INDEX 1.
pv_hkont = lt_bseg-hkont.
pv_zuonr = lt_bseg-zuonr.
pv_kostl = lt_bseg-kostl.
*--# Elimina a conta de impostos
DELETE lt_bseg WHERE hkont IN r_impostos.

DELETE lt_bseg WHERE hkont CP '0011305*'.


DELETE lt_bseg WHERE hkont CP '0011205*'.
DELETE lt_bseg WHERE hkont CP '00113101*'.
DELETE lt_bseg WHERE hkont CP '0021404*'.
DELETE lt_bseg WHERE hkont CP '0021405*'.

IF lt_bseg[] IS NOT INITIAL.


READ TABLE lt_bseg INDEX 1.
pv_hkont = lt_bseg-hkont.
pv_zuonr = lt_bseg-zuonr.
pv_kostl = lt_bseg-kostl.
ENDIF.

ENDFORM. " GET_CONTA


*&---------------------------------------------------------------------*
*& Form TRATA_CONTRAPARTIDA
*&---------------------------------------------------------------------*
* Investiga a contrapartida do lanamento na conta de banco
*----------------------------------------------------------------------*

FORM trata_contrapartida USING p_valor LIKE bseg-dmbtr


p_shkzg LIKE bseg-shkzg
p_belnr LIKE bseg-belnr
p_gjahr LIKE bseg-gjahr
p_buzei LIKE bseg-buzei
p_augdt LIKE bseg-augdt
p_augbl LIKE bseg-augbl
p_budat LIKE bsik-budat
p_blart LIKE bsik-blart
p_zfbdt LIKE bseg-zfbdt
p_hkont LIKE bseg-hkont
p_zlsch LIKE bseg-zlsch
p_zlspr LIKE bseg-zlspr
p_aux
p_bukrs LIKE bseg-bukrs
p_valut LIKE bseg-valut
p_atrib LIKE bseg-zuonr.

DATA: p_tipo(2) TYPE c.

IF NOT wa_bseg-lifnr IS INITIAL.

PERFORM atualiza_grupo USING 'F' wa_bseg-lifnr.

IF NOT vg_grupo IS INITIAL.


vg_contador = 1.
CONCATENATE 'F' p_aux INTO p_tipo.
PERFORM atualiza_pagos USING p_valor vg_grupo
p_shkzg 'H'
wa_bseg-lifnr p_belnr
p_gjahr p_buzei
p_augdt p_augbl
p_budat p_blart
p_zfbdt p_hkont
wa_bseg-zlsch wa_bseg-zlspr
p_tipo p_bukrs
p_valut p_atrib.

ENDIF.
ENDIF.

IF NOT wa_bseg-kunnr IS INITIAL.

* Agora procura o grupo de previso de tesourara.


PERFORM atualiza_grupo USING 'C' wa_bseg-kunnr.

IF NOT vg_grupo IS INITIAL.


vg_contador = 1.
CONCATENATE 'C' p_aux INTO p_tipo.
PERFORM atualiza_pagos USING p_valor vg_grupo
p_shkzg 'S'
wa_bseg-kunnr p_belnr
p_gjahr p_buzei
p_augdt p_augbl
p_budat p_blart
p_zfbdt p_hkont
wa_bseg-zlsch wa_bseg-zlspr
p_tipo p_bukrs
p_valut p_atrib.
ENDIF.
ENDIF.

ENDFORM. " TRATA_CONTRAPARTIDA


*&---------------------------------------------------------------------*
*& Form TIPO_DE_PAGTO
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_P_BLART text
* -->P_P_ZLSCH text
*----------------------------------------------------------------------*
FORM tipo_de_pagto USING p_p_blart
p_p_zlsch.
CASE p_p_blart.
WHEN 'ST'.
vg_tppagto = 'TED'.
WHEN 'CP' OR 'DO'.
vg_tppagto = 'DOC'.
WHEN 'CA'.
vg_tppagto = 'CH ADM'.
WHEN 'PC'.
vg_tppagto = 'CHEQUE'.
WHEN 'OP'.
vg_tppagto = 'ORDEM PAGTO'.
WHEN 'IP'.
vg_tppagto = 'CIP'.
WHEN 'BB'.
IF p_p_zlsch = 'L' OR
p_p_zlsch = 'J' OR
p_p_zlsch = 'T'.
vg_tppagto = 'LISTA'.
ELSE.
vg_tppagto = 'BOLETO'.
ENDIF.
WHEN OTHERS.
vg_tppagto = p_p_blart.
ENDCASE.

ENDFORM. " TIPO_DE_PAGTO


*&---------------------------------------------------------------------*
*& Descarrega tabela no arquivo de sada *
*&---------------------------------------------------------------------*
*
FORM grava_arq_saida.

DATA:
lv_arq_cons LIKE rlgrap-filename,
lv_path LIKE rlgrap-filename,
lv_ext LIKE rlgrap-filename,
lv_pos TYPE i.

* Gravar arquivo de sada 2

IF ti_arq[] IS NOT INITIAL.

IF NOT ( pa_loc1 IS INITIAL ).

gc_arq_sai = pa_arq2.
sy-fdpos = strlen( gc_arq_sai ).
DO sy-fdpos TIMES.
lv_pos = sy-fdpos - sy-index.
CHECK gc_arq_sai+lv_pos(1) = '.'.
CONCATENATE pa_dir gc_arq_sai(lv_pos) INTO lv_path.
lv_ext = gc_arq_sai+lv_pos.
w_cont_win = w_cont_win + 1.
CONCATENATE lv_path '_apg_prv_' w_cont_win '_'
vg_datum '_' vg_uzeit lv_ext INTO lv_arq_apgt.
EXIT.
ENDDO.

CALL FUNCTION 'WS_DOWNLOAD'


EXPORTING
filename = lv_arq_apgt
filetype = 'ASC'
mode = ' '
TABLES
data_tab = ti_arq
EXCEPTIONS
file_open_error = 1
file_write_error = 2
invalid_filesize = 3
invalid_type = 4
no_batch = 5
unknown_error = 6
invalid_table_width = 7
gui_refuse_filetransfer = 8
customer_error = 9
OTHERS = 10.
* TESTA SE DOWNLOAD FOI EXECUTADO COM SUCESSO
IF sy-subrc NE 0.
MESSAGE i041(z1) WITH gc_arq_sai.
"Erro ao tentar criar o arquivo
ENDIF.
ELSE.
IF w_abre_arq IS INITIAL.

w_abre_arq = 'X'.
gc_arq_sai = pa_arq1.
sy-fdpos = strlen( gc_arq_sai ).
DO sy-fdpos TIMES.
lv_pos = sy-fdpos - sy-index.
CHECK gc_arq_sai+lv_pos(1) = '.'.
lv_path = gc_arq_sai(lv_pos).
lv_ext = gc_arq_sai+lv_pos.
CONCATENATE lv_path '_apg_prv_' vg_datum '_' vg_uzeit lv_ext
INTO lv_arq_apgt.
EXIT.
ENDDO.

OPEN DATASET lv_arq_apgt FOR OUTPUT IN TEXT MODE


ENCODING DEFAULT.
IF sy-subrc <> 0.
MESSAGE e777(z1) WITH 'Erro open arq' lv_arq_apgt.
ENDIF.
ENDIF.

LOOP AT ti_arq INTO wa_arq.


TRANSFER ti_arq TO lv_arq_apgt.
ENDLOOP.

ENDIF.

CLEAR ti_arq. REFRESH ti_arq.


IF NOT pa_loc1 IS INITIAL.
CONCATENATE 'TIPO' ';' 'GRUPO' ';' 'NUM DOCTO' ';'
'DOCTO_COMP' ';'
'VALOR BRUTO' ';' 'FORNECEDOR' ';' 'DESC FORNECEDOR' ';'
'CNPJ' ';'
'DT PAGTO' ';' 'CONTA CONTB' ';' 'DESC CONTA CONTB' ';'
'NUMERO DA NF' ';' 'DATA EMISSAO' ';' 'LOJA' ';' 'UF' ';'
'REGIAO'

INTO ti_arq-reg.
APPEND ti_arq.
ENDIF.

ELSE.

MESSAGE e777(z1)
WITH 'No existem dados para exportao.'.

ENDIF.

ENDFORM. "grava_arq_saida
*&---------------------------------------------------------------------*
*& Form GRAVA_ARQ_SAIDA_PGT
*&---------------------------------------------------------------------*
FORM grava_arq_saida_pgt .

DATA:
lv_path LIKE rlgrap-filename,
lv_ext LIKE rlgrap-filename,
lv_pos TYPE i.

IF ti_arq_pgt[] IS NOT INITIAL.

IF NOT ( pa_loc1 IS INITIAL ).

gc_arq_sai_pgt = pa_arq2.
sy-fdpos = strlen( gc_arq_sai_pgt ).
DO sy-fdpos TIMES.
lv_pos = sy-fdpos - sy-index.
CHECK gc_arq_sai_pgt+lv_pos(1) = '.'.
CONCATENATE pa_dir gc_arq_sai_pgt(lv_pos) INTO lv_path.
lv_ext = gc_arq_sai_pgt+lv_pos.
w_cont_win_pgt = w_cont_win_pgt + 1.
CONCATENATE lv_path '_pgt_' w_cont_win_pgt '_'
vg_datum '_' vg_uzeit lv_ext INTO lv_arq_pgt.
EXIT.
ENDDO.

CALL FUNCTION 'WS_DOWNLOAD'


EXPORTING
filename = lv_arq_pgt
filetype = 'ASC'
mode = ' '
TABLES
data_tab = ti_arq_pgt
EXCEPTIONS
file_open_error = 1
file_write_error = 2
invalid_filesize = 3
invalid_type = 4
no_batch = 5
unknown_error = 6
invalid_table_width = 7
gui_refuse_filetransfer = 8
customer_error = 9
OTHERS = 10.
* TESTA SE DOWNLOAD FOI EXECUTADO COM SUCESSO
IF sy-subrc NE 0.
MESSAGE i041(z1) WITH gc_arq_sai.
"Erro ao tentar criar o arquivo
ENDIF.
ELSE.
IF w_abre_arq_pgt IS INITIAL.

w_abre_arq_pgt = 'X'.
gc_arq_sai_pgt = pa_arq1.
sy-fdpos = strlen( gc_arq_sai_pgt ).
DO sy-fdpos TIMES.
lv_pos = sy-fdpos - sy-index.
CHECK gc_arq_sai_pgt+lv_pos(1) = '.'.
lv_path = gc_arq_sai_pgt(lv_pos).
lv_ext = gc_arq_sai_pgt+lv_pos.
CONCATENATE lv_path '_pgt_' vg_datum '_' vg_uzeit lv_ext
INTO lv_arq_pgt.
EXIT.
ENDDO.

OPEN DATASET lv_arq_pgt FOR OUTPUT IN TEXT MODE


ENCODING DEFAULT.
IF sy-subrc <> 0.
MESSAGE e777(z1) WITH 'Erro open arq' lv_arq_pgt.
ENDIF.
ENDIF.

LOOP AT ti_arq_pgt.
TRANSFER ti_arq_pgt TO lv_arq_pgt.
ENDLOOP.

ENDIF.

CLEAR ti_arq_pgt. REFRESH ti_arq_pgt.

IF NOT pa_loc1 IS INITIAL.


CONCATENATE 'TIPO' ';' 'GRUPO' ';' 'NUM DOCTO' ';'
'DOCTO_COMP' ';'
'VALOR BRUTO' ';' 'FORNECEDOR' ';' 'DESC FORNECEDOR' ';'
'CNPJ' ';'
'DT PAGTO' ';' 'CONTA CONTB' ';' 'DESC CONTA CONTB' ';'
'NUMERO DA NF' ';' 'DATA EMISSAO' ';' 'LOJA' ';' 'UF' ';'
'REGIAO'
INTO ti_arq_pgt-reg.
APPEND ti_arq_pgt.
ENDIF.

ELSE.

MESSAGE e777(z1)
WITH 'No existem dados para exportao.'.

ENDIF.

ENDFORM. " GRAVA_ARQ_SAIDA_PGT


*---------------------------------------------------------------------*
* FORM COMANDO_UNIX *
*---------------------------------------------------------------------*
* ........ *
*---------------------------------------------------------------------*
FORM comando_unix USING pv_arq.

DATA: BEGIN OF ti_unix OCCURS 0,


line(2000),
END OF ti_unix.

DATA: w_comando(200) TYPE c.


*-Liberao de Arquivo no Unix (Permite acesso) ------------------------
CONCATENATE 'chmod 777' pv_arq INTO w_comando SEPARATED BY space.
REFRESH ti_unix.
CALL 'SYSTEM' ID 'COMMAND' FIELD w_comando ID 'TAB'
FIELD ti_unix-*sys*.
ENDFORM. " COMANDO_UNIX
*&---------------------------------------------------------------------*
*& Form MONTA_FIELDCAT_ALV
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM monta_fieldcat_alv .

"Limpa a varivel de controle de exibio


"No exibir o ALV Grid maior que 60000
CLEAR vg_flag.

"Verifica a quantidade de linhas do ALV Grid


DESCRIBE TABLE t_saida.
IF sy-tfill > 60000.
vg_flag = 'X'.
ENDIF.

"Se a tabela do ALV no estiver preenchida e o flag de controle


CHECK t_saida[] IS NOT INITIAL AND vg_flag IS INITIAL.

"Monta a fieldcat
PERFORM preencher_fieldcat
USING:
"Tipo
'TIPO' 'T_SAIDA' text-019 space space space space space '20',
"Grupo
'GRUPO' 'T_SAIDA' text-016 space space space space space '20',
"Nr. Documento
'DOCTO' 'T_SAIDA' text-018 space space space space space '20',
"Nr. Documento Compensado
'DOCTO_COMP' 'T_SAIDA' text-020 space space space space space '20',
"Valor Bruto
'VL_BRUTO' 'T_SAIDA' text-012 space 'X' space space space '20',
"Fornecedor
'FORNECEDOR' 'T_SAIDA' text-017 space space space space space '20',
"Nome do Fornecedor
'NOME_FORN' 'T_SAIDA' text-010 space space space space space '20',
"CNPJ
'CNPJ' 'T_SAIDA' text-032 space space space space space '20',
"Data de Pagamento
'DT_PAGTO' 'T_SAIDA' text-011 space space space space space '20',
"Conta Contbil
'CONTA' 'T_SAIDA' text-014 space space space space space '20',
"Descrio da Conta Contbil
'DESC_CONTA' 'T_SAIDA' text-015 space space space space space '20',
"Nmero da NF
'NUMERO_NF' 'T_SAIDA' text-013 space space space space space '20',
"Data da Emisso
'DATA_NF' 'T_SAIDA' text-033 space space space space space '20',
"Loja
'LOJA' 'T_SAIDA' text-034 space space space space space '10',
"UF
'UF' 'T_SAIDA' text-035 space space space space space '4',
"Regio
'REGIAO' 'T_SAIDA' text-036 space space space space space space.

ENDFORM. " MONTA_FIELDCAT_ALV


*&---------------------------------------------------------------------*
*& Form PREENCHER_FIELDCAT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM preencher_fieldcat USING value(p_fieldname)
value(p_tabname)
value(p_text)
value(p_hot)
value(p_sum)
value(p_edit)
value(p_check)
value(p_round)
value(p_outputlen).
STATICS vl_pos TYPE i.

vl_pos = vl_pos + 1.

wa_fieldcat-fieldname = p_fieldname .
wa_fieldcat-tabname = p_tabname .
wa_fieldcat-scrtext_l = p_text .
wa_fieldcat-hotspot = p_hot .
wa_fieldcat-col_pos = vl_pos .
wa_fieldcat-do_sum = p_sum .
wa_fieldcat-edit = p_edit .
wa_fieldcat-checkbox = p_check .
wa_fieldcat-round = p_round .
wa_fieldcat-outputlen = p_outputlen .

APPEND wa_fieldcat TO t_fieldcat.


CLEAR wa_fieldcat.

ENDFORM. " PREENCHER_FIELDCAT


*&---------------------------------------------------------------------*
*& Form EXIBE_ALV_GRID
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM exibe_alv_grid .

"Se o arquivo for maior que 60000, no ser exibido no ALV Grid
IF vg_flag IS NOT INITIAL.

CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'


EXPORTING
percentage = 20
text = 'Arquivo grande demais para ser exibido no ALV.'.

ENDIF.

CHECK t_saida[] IS NOT INITIAL AND vg_flag IS INITIAL.

CALL SCREEN 2000.

ENDFORM. " EXIBE_ALV_GRID


*&---------------------------------------------------------------------*
*& Form GERA_ALV
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM gera_alv .

"A - todas as linhas, C - sem linha, B - uma linha


wa_layout-sel_mode = 'A'.
* wa_layout-cwidth_opt = 'X'.
wa_layout-zebra = 'X'.

wa_sort-spos = 1 .
wa_sort-fieldname = 'TIPO'.
wa_sort-up = 'X' .
wa_sort-subtot = 'X' .

APPEND wa_sort TO t_sort.


CLEAR wa_sort.

wa_sort-spos = 2 .
wa_sort-fieldname = 'GRUPO'.
wa_sort-up = 'X' .
wa_sort-subtot = 'X' .

APPEND wa_sort TO t_sort.


CLEAR wa_sort.

vg_variant-report = sy-repid.

"Verifica se o GRID j foi criado


IF NOT og_grid IS BOUND.

"Cria o Grid
CREATE OBJECT og_grid
EXPORTING
i_parent = og_container_2.
ENDIF.

"Exibe o ALV Grid


og_grid->set_table_for_first_display(
EXPORTING is_layout = wa_layout
is_variant = vg_variant
i_save = 'A'
i_default = 'X'
CHANGING
it_outtab = t_saida
it_fieldcatalog = t_fieldcat
it_sort = t_sort ).

ENDFORM. " GERA_ALV


*&---------------------------------------------------------------------*
*& Module STATUS_2000 OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE status_2000 OUTPUT.

SET PF-STATUS 'STATUS_GUI'.


SET TITLEBAR 'TITLE_GUI'.

ENDMODULE. " STATUS_2000 OUTPUT


*&---------------------------------------------------------------------*
*& Module SHOW_ALV_2000 OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE show_alv_2000 OUTPUT.

PERFORM gera_alv.

ENDMODULE. " SHOW_ALV_2000 OUTPUT


*&---------------------------------------------------------------------*
*& Module EXIT_COMMAND_2000 INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE exit_command_2000 INPUT.

"Ao do clicar nos botes da barra


CASE sy-ucomm.
WHEN 'VOLTAR'.
"Volta para a tela anterior
LEAVE TO SCREEN 0.
WHEN 'ENCERRAR'.
"Sai do programa
LEAVE PROGRAM.
WHEN 'SAIR'.
"Sai do programa
LEAVE PROGRAM.
WHEN OTHERS.
ENDCASE.

ENDMODULE. " EXIT_COMMAND_2000 INPUT

Vous aimerez peut-être aussi