0% found this document useful (0 votes)
17 views5 pages

Alv CL Salv

Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
17 views5 pages

Alv CL Salv

Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
You are on page 1/ 5

*&---------------------------------------------------------------------*

*& Report ZFIR017


*&
*&---------------------------------------------------------------------*
REPORT zfir017.

TYPES:BEGIN OF ty_saida,
vbeln TYPE zfit021-vbeln,
nsu TYPE zfit021-nsu,
belnr TYPE zfit021-belnr,
kunnr TYPE vbak-kunnr,
name1 TYPE kna1-name1,
xblnr TYPE vbrk-xblnr,
bukrs_vf TYPE vbak-bukrs_vf,
ernam TYPE vbrk-ernam,
useralias TYPE usrefus-useralias, "Alias do usuário
smtp_addr TYPE adr6-smtp_addr, " Usuario e-mail
END OF ty_saida.

DATA: t_saida TYPE TABLE OF ty_saida,


v_forma_pagamento TYPE bsid-zlsch.

DATA: wa_vbak TYPE vbak,


wa_vbrk TYPE vbrk,
wa_zfit021 TYPE zfit021.

SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME.


SELECT-OPTIONS: s_vbeln FOR wa_vbak-vbeln,
s_ernam FOR wa_vbrk-ernam,
s_fkdat FOR wa_vbrk-fkdat,
s_nsu FOR wa_zfit021-nsu,
s_belnr FOR wa_vbrk-belnr,
s_zlsch FOR v_forma_pagamento MATCHCODE OBJECT zh_t024ztr.
SELECTION-SCREEN SKIP.
PARAMETERS p_chkbox AS CHECKBOX DEFAULT 'X' USER-COMMAND nsu_vazia.
SELECTION-SCREEN END OF BLOCK b1.

INITIALIZATION.

PERFORM inicializa_campos_tela.

AT SELECTION-SCREEN.

PERFORM acoes_tela.

START-OF-SELECTION.

PERFORM select.
PERFORM exibir_alv.

*&---------------------------------------------------------------------*
*& Form montar_alv
*&---------------------------------------------------------------------*
FORM exibir_alv .

DATA: alv TYPE REF TO cl_salv_table,


lr_columns TYPE REF TO cl_salv_columns_table,
lr_column TYPE REF TO cl_salv_column,
lr_functions TYPE REF TO cl_salv_functions_list,
gr_display TYPE REF TO cl_salv_display_settings,
gr_selections TYPE REF TO cl_salv_selections,
lr_selections TYPE REF TO cl_salv_selections.

IF sy-subrc = 0.
cl_salv_table=>factory( IMPORTING r_salv_table = alv
CHANGING t_table = t_saida ).

* habilita botões
lr_functions = alv->get_functions( ).
lr_functions->set_all( 'X' ).

* Otimiza coluna
lr_columns = alv->get_columns( ).
lr_columns->set_optimize( 'X' ).

* Estilo zebra
gr_display = alv->get_display_settings( ).
gr_display->set_striped_pattern( cl_salv_display_settings=>true ).

* seleção de linha
lr_selections = alv->get_selections( ).
lr_selections->set_selection_mode( if_salv_c_selection_mode=>row_column ).

PERFORM editar_coluna USING lr_column lr_columns.

alv->display( ).
ENDIF.

ENDFORM. " MONTAR_ALV

*&---------------------------------------------------------------------*
*& Form select
*&---------------------------------------------------------------------*
FORM select.

TYPES: BEGIN OF y_bsid_forma_pagto,


belnr TYPE bsid-belnr,
kunnr TYPE bsid-kunnr,
bukrs TYPE bsid-bukrs,
END OF y_bsid_forma_pagto.

DATA: lt_saida_aux TYPE TABLE OF ty_saida,


lt_bsid_forma_pagto TYPE TABLE OF y_bsid_forma_pagto.

FIELD-SYMBOLS <saida> LIKE LINE OF t_saida.

SELECT zfit021~vbeln " Nº documento de vendas / N° da ordem de venda


zfit021~nsu " NSU Cartao de Credito
zfit021~belnr " Nº documento de um documento contábil
vbak~kunnr " Emissor da ordem / Cliente
kna1~name1 " Nome 1 / cliente
vbrk~xblnr " Nº documento de referência / N° da NFe
vbak~bukrs_vf " Empresa que efetua o faturamento
vbrk~ernam " Nome do responsável que adicionou o objeto
usrefus~useralias " Alias do usuário
adr6~smtp_addr " Email do Usuário
FROM zfit021
INNER JOIN vbak ON vbak~vbeln = zfit021~vbeln
INNER JOIN kna1 ON kna1~kunnr = vbak~kunnr
INNER JOIN vbfa ON vbfa~vbelv = zfit021~vbeln AND vbfa~vbtyp_n = 'M'
INNER JOIN vbrk ON vbrk~vbeln = vbfa~vbeln
INNER JOIN usr21 ON usr21~bname = vbrk~ernam
INNER JOIN adr6 ON adr6~persnumber = usr21~persnumber
INNER JOIN usrefus ON usrefus~bname = vbrk~ernam
INTO TABLE t_saida
WHERE zfit021~vbeln IN s_vbeln AND
vbrk~ernam IN s_ernam AND
vbrk~fkdat IN s_fkdat AND
nsu IN s_nsu AND
zfit021~belnr IN s_belnr.

" Forma de pagamento, feito em separado


" -------------------------------------
IF s_zlsch[] IS INITIAL.
RETURN.
ENDIF.

lt_saida_aux = t_saida.
SORT lt_saida_aux BY belnr
kunnr
bukrs_vf.

DELETE ADJACENT DUPLICATES FROM lt_saida_aux COMPARING belnr


kunnr
bukrs_vf.
SELECT belnr
kunnr
bukrs
FROM bsid
INTO TABLE lt_bsid_forma_pagto
FOR ALL ENTRIES IN lt_saida_aux
WHERE belnr = lt_saida_aux-belnr AND
kunnr = lt_saida_aux-kunnr AND
bukrs = lt_saida_aux-bukrs_vf AND
zlsch IN s_zlsch.
IF sy-subrc <> 0.
REFRESH t_saida.
RETURN.
ENDIF.
SORT lt_bsid_forma_pagto BY belnr
kunnr
bukrs.

LOOP AT t_saida ASSIGNING <saida>.

READ TABLE lt_bsid_forma_pagto TRANSPORTING NO FIELDS


WITH KEY belnr = <saida>-belnr
kunnr = <saida>-kunnr
bukrs = <saida>-bukrs_vf
BINARY SEARCH.
IF sy-subrc <> 0.
DELETE t_saida.
ENDIF.
ENDLOOP.

ENDFORM. " SELECT

*&---------------------------------------------------------------------*
*& Form NOMEAR_COLUNA
*&---------------------------------------------------------------------*
FORM editar_coluna USING column TYPE REF TO cl_salv_column
columns TYPE REF TO cl_salv_columns_table.

DATA not_found TYPE REF TO cx_salv_not_found.

TRY.
column = columns->get_column( 'VBELN' ).
column->set_short_text( 'Ord Venda' ).
column->set_medium_text( 'Ordem de Venda' ).
column->set_long_text( 'Ordem de Venda' ).

column = columns->get_column( 'KUNNR' ).


column->set_short_text( 'Cliente' ).
column->set_medium_text( 'Cliente' ).
column->set_long_text( 'Cliente' ).

column = columns->get_column( 'BELNR' ).


column->set_short_text( 'Doc.Contab' ).
column->set_medium_text( 'Doc. Contábil' ).
column->set_long_text( 'Documento Contábil' ).

column = columns->get_column( 'USERALIAS' ).


column->set_short_text( 'Nome' ).
column->set_medium_text( 'Nome do usuário' ).
column->set_long_text( 'Nome do usuário' ).

column = columns->get_column( 'XBLNR' ).


column->set_short_text( 'Nota Fisc.' ).
column->set_medium_text( 'Nota Fiscal' ).
column->set_long_text( 'Nota Fiscal' ).

column = columns->get_column( 'BUKRS_VF' ).


column->set_short_text( 'Empresa' ).
column->set_medium_text( 'Empresa' ).
column->set_long_text( 'Empresa' ).
CATCH cx_salv_not_found INTO not_found.
" error handling
ENDTRY.

ENDFORM. " NOMEAR_COLUNA

*&---------------------------------------------------------------------*
*& Form INICIALIZA_CAMPOS_TELA
*&---------------------------------------------------------------------*
FORM inicializa_campos_tela .

APPEND 'IEQ' TO s_nsu.

ENDFORM. " INICIALIZA_CAMPOS_TELA

*&---------------------------------------------------------------------*
*& Form ACOES_TELA
*&---------------------------------------------------------------------*
FORM acoes_tela .

FIELD-SYMBOLS <nsu> LIKE LINE OF s_nsu.

IF sy-ucomm <> 'NSU_VAZIA'.


RETURN.
ENDIF.

IF p_chkbox IS INITIAL.
IF s_nsu[] IS INITIAL. " Ok, seleção NSU vazia
RETURN.
ENDIF.
READ TABLE s_nsu ASSIGNING <nsu> INDEX 1.
IF <nsu>+0(3) = 'IEQ'. " Seleção original vazia, pode excluir
REFRESH s_nsu.
ENDIF.
ELSE.
REFRESH s_nsu.
APPEND 'IEQ' TO s_nsu.
* LOOP AT SCREEN.
* IF screen-name CS 'S_NSU-LOW'.
* screen-input = 0.
** screen-invisible = 1.
** screen-active = 0.
* MODIFY SCREEN.
* ENDIF.
* ENDLOOP.
ENDIF.

ENDFORM. " ACOES_TELA

You might also like