14/09/2010

OpenSQL WHERE Clauses - Interactive and Dynamic


REPORT ZRR_SAMPLE.

PARAMETERS dbtab TYPE tabname DEFAULT 'SPFLI'.

TYPE-POOLS rsds.

DATA : field_tab TYPE TABLE OF rsdsfields,
table_tab TYPE TABLE OF rsdstabs,
cond_tab TYPE rsds_twhere.

DATA : table LIKE LINE OF table_tab,
cond LIKE LINE OF cond_tab.

DATA : tadir_wa TYPE tadir,
selid TYPE rsdynsel-selid.

DATA : dref TYPE REF TO data,
alv TYPE REF TO cl_salv_table.

FIELD-SYMBOLS <table> TYPE STANDARD TABLE.

SELECT SINGLE *
FROM tadir
INTO tadir_wa
WHERE pgmid = 'R3TR' AND
object = 'TABL' AND
obj_name = dbtab.

IF sy-subrc <> 0.

MESSAGE 'Tabela Não Encontrada' TYPE 'I' DISPLAY LIKE 'E'.
LEAVE PROGRAM.

ENDIF.

table-prim_tab = dbtab.

APPEND table TO table_tab.

CALL FUNCTION 'FREE_SELECTIONS_INIT'
EXPORTING
kind = 'T'
IMPORTING
selection_id = selid
TABLES
tables_tab = table_tab
EXCEPTIONS
OTHERS = 4.
IF sy-subrc <> 0.

MESSAGE 'Erro ao Executar a Inicialização' TYPE 'I' DISPLAY LIKE 'E'.
LEAVE PROGRAM.

ENDIF.

CALL FUNCTION 'FREE_SELECTIONS_DIALOG'
EXPORTING
selection_id = selid
title = 'Seleção Dinamica'
as_window = ' '
IMPORTING
where_clauses = cond_tab
TABLES
fields_tab = field_tab
EXCEPTIONS
OTHERS = 4.

IF sy-subrc <> 0.

MESSAGE 'Erro ao Definir as Condições de Seleção' TYPE 'I'.
LEAVE PROGRAM.

ENDIF.

READ TABLE cond_tab WITH KEY tablename = dbtab INTO cond.

IF sy-subrc <> 0.

MESSAGE 'Todos os Registros serão' TYPE 'I'.

ENDIF.

CREATE DATA dref TYPE TABLE OF (dbtab).

ASSIGN dref->* TO <table>.

TRY.

SELECT *
FROM (dbtab)
INTO TABLE <table>
WHERE (cond-where_tab).

CATCH cx_sy_dynamic_osql_error.

MESSAGE 'Erro no Open SQL Dinamico' TYPE 'I' DISPLAY LIKE 'E'.
LEAVE PROGRAM.

ENDTRY.

TRY.

cl_salv_table=>factory( IMPORTING r_salv_table = alv
CHANGING t_table = <table> ).

alv->display( ).

CATCH cx_salv_msg.

MESSAGE 'Erro ao Criar o ALV' TYPE 'I' DISPLAY LIKE 'E'.

ENDTRY.

13/09/2010

Add Button in Report and Change Icon Image


REPORT ZRR_SAMPLE.

TYPE-POOLS: icon.

TABLES: sscrfields.

CONSTANTS: true TYPE true VALUE 'T',
false TYPE false VALUE 'F'.

DATA: g_use_pipe TYPE boole_d,
sc_functxt TYPE smp_dyntxt.

PARAMETERS: p_carrid TYPE s_carr_id,
p_cityfr TYPE s_from_cit.

SELECTION-SCREEN FUNCTION KEY 1.

INITIALIZATION.

g_use_pipe = true.

AT SELECTION-SCREEN.

CASE sscrfields-ucomm.
WHEN 'FC01'.
IF g_use_pipe = true.

g_use_pipe = false.

ELSE.

g_use_pipe = true.

ENDIF.
WHEN OTHERS.
ENDCASE.

AT SELECTION-SCREEN OUTPUT.

IF g_use_pipe = true.

sc_functxt-icon_id = icon_view_expand_horizontal.
sc_functxt-quickinfo = 'Change field separator'.
sc_functxt-icon_text = 'Use Tab delimiter'.
sscrfields-functxt_01 = sc_functxt.

ELSE.

sc_functxt-icon_id = icon_view_expand_vertical.
sc_functxt-quickinfo = 'Change field separator'.
sc_functxt-icon_text = 'Use PIPE delimiter'.
sscrfields-functxt_01 = sc_functxt.

ENDIF.

Expand- Collapse Button in Selection Screen


REPORT ZRR_SAMPLE.

DATA: wf_ucomm TYPE sy-ucomm.

SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME.
SELECTION-SCREEN PUSHBUTTON /01(30) but1 USER-COMMAND but1.
SELECTION-SCREEN PUSHBUTTON /01(30) but2 USER-COMMAND but2.
PARAMETERS: p_test TYPE c.
SELECTION-SCREEN END OF BLOCK b1.

INITIALIZATION.
CALL FUNCTION 'ICON_CREATE'
EXPORTING
name = 'ICON_EXPAND'
IMPORTING
RESULT = but1
EXCEPTIONS
OTHERS = 0.
CALL FUNCTION 'ICON_CREATE'
EXPORTING
name = 'ICON_COLLAPSE'
IMPORTING
RESULT = but2
EXCEPTIONS
OTHERS = 0.

AT SELECTION-SCREEN.

IF sy-ucomm EQ 'BUT1'.
wf_ucomm = 'BUT1'.
ELSEIF sy-ucomm EQ 'BUT2'.
wf_ucomm = 'BUT2'.
ENDIF.

AT SELECTION-SCREEN OUTPUT.

IF wf_ucomm IS INITIAL.
LOOP AT SCREEN.
IF screen-name CS 'P_TEST' OR
screen-name EQ 'BUT2'.
screen-active = 0.
MODIFY SCREEN.
ENDIF.
ENDLOOP.
ELSEIF wf_ucomm EQ 'BUT1'.
LOOP AT SCREEN.
IF screen-name CS 'P_TEST' OR
screen-name EQ 'BUT2'.
screen-active = 1.
MODIFY SCREEN.
ENDIF.
IF screen-name EQ 'BUT1'.
screen-active = 0.
MODIFY SCREEN.
ENDIF.
ENDLOOP.
ELSEIF wf_ucomm EQ 'BUT2' .
LOOP AT SCREEN.
IF screen-name CS 'P_TEST' OR
screen-name EQ 'BUT2'.
screen-active = 0.
MODIFY SCREEN.
ENDIF.
IF screen-name EQ 'BUT1'.
screen-active = 1.
MODIFY SCREEN.
ENDIF.
ENDLOOP.
ENDIF.

Expand- Collapse Button in Selection Screen


REPORT ZRR_SAMPLE.

DATA: wf_ucomm TYPE sy-ucomm.

SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME.
SELECTION-SCREEN PUSHBUTTON /01(30) but1 USER-COMMAND but1.
SELECTION-SCREEN PUSHBUTTON /01(30) but2 USER-COMMAND but2.
PARAMETERS: p_test TYPE c.
SELECTION-SCREEN END OF BLOCK b1.

INITIALIZATION.
CALL FUNCTION 'ICON_CREATE'
EXPORTING
name = 'ICON_EXPAND'
IMPORTING
RESULT = but1
EXCEPTIONS
OTHERS = 0.
CALL FUNCTION 'ICON_CREATE'
EXPORTING
name = 'ICON_COLLAPSE'
IMPORTING
RESULT = but2
EXCEPTIONS
OTHERS = 0.

AT SELECTION-SCREEN.

IF sy-ucomm EQ 'BUT1'.
wf_ucomm = 'BUT1'.
ELSEIF sy-ucomm EQ 'BUT2'.
wf_ucomm = 'BUT2'.
ENDIF.

AT SELECTION-SCREEN OUTPUT.

IF wf_ucomm IS INITIAL.
LOOP AT SCREEN.
IF screen-name CS 'P_TEST' OR
screen-name EQ 'BUT2'.
screen-active = 0.
MODIFY SCREEN.
ENDIF.
ENDLOOP.
ELSEIF wf_ucomm EQ 'BUT1'.
LOOP AT SCREEN.
IF screen-name CS 'P_TEST' OR
screen-name EQ 'BUT2'.
screen-active = 1.
MODIFY SCREEN.
ENDIF.
IF screen-name EQ 'BUT1'.
screen-active = 0.
MODIFY SCREEN.
ENDIF.
ENDLOOP.
ELSEIF wf_ucomm EQ 'BUT2' .
LOOP AT SCREEN.
IF screen-name CS 'P_TEST' OR
screen-name EQ 'BUT2'.
screen-active = 0.
MODIFY SCREEN.
ENDIF.
IF screen-name EQ 'BUT1'.
screen-active = 1.
MODIFY SCREEN.
ENDIF.
ENDLOOP.
ENDIF.

ZEBRA PRINTER - ZPL SAMPLE CODE

Necessidade: Imprimir etiqueta em impressora ZEBRA.

Solução: No exemplo abaixo podemos substituir os valores fixos por variaveis criadas em um smartform por exemplo.

Aqui o objetivo é simplesmente mostrar um exemplo sobre a codificação ZPL. Copie o arquivo cole no bloco de notas e mande imprimir na impressora ZEBRA, para visualizar o resultado.


^XA
^LL310
^PRA
^FO760,415^GB060,725,3^FS
^FO760,970^GB060,170,43^FS
^FO770,40^ADR,40,10^FR^FH_^FDRAFAEL RISO | ^FS
^FO770,235^ADR,40,10^FR^FH_^FD01^FS
^FO465,030^GB290,010,40^FS
^FO500,030^AR,25,60^FR^FH_^FDESTOQUE^FS
^FO730,070^GB025,1070,20^FS
^FO733,080^ADR,14,14^FR^FH_^FDNOSSO CODIGO^FS
^FO733,335^ADR,14,14^FR^FH_^FDDESCRICAO^FS
^FO665,070^GB090,250,3^FS
^FO665,319^GB090,820,3^FS
^FO640,070^GB025,1070,20^FS
^FO640,080^ADR,14,14^FR^FH_^FDLARGURA^FS
^FO640,280^ADR,14,14^FR^FH_^FDCOMPRIMENTO^FS
^FO640,490^ADR,14,14^FR^FH_^FDPECAS^FS
^FO640,700^ADR,14,14^FR^FH_^FDQUANTIDADE^FS
^FO640,975^ADR,14,14^FR^FH_^FDUND^FS
^FO575,070^GB090,200,3^FS
^FO575,269^GB090,210,3^FS
^FO575,478^GB090,190,3^FS
^FO575,667^GB090,300,3^FS
^FO575,966^GB090,173,3^FS
^FO550,070^GB025,1070,20^FS
^FO525,070^GB025,535,20^FS
^FO550,250^ADR,14,14^FR^FH_^FDUNIDADE METALICA^FS
^FO525,225^ADR,14,14^FR^FH_^FDORIGEM DESTINO^FS
^FO550,810^ADR,14,14^FR^FH_^FDETIQUETA^FS
^FO465,070^GB090,267,3^FS
^FO465,337^GB090,267,3^FS
^FO465,604^GB090,535,83^FS
^FO030,030^GB325,010,40^FS
^FO110,030^AR,25,60^FR^FH_^FDCLIENTE^FS
^FO440,030^GB025,1110,20^FS
^FO330,070^GB025,1070,20^FS
^FO333,080^ADR,14,10^FR^FH_^FDMATERIA PRIMA^FS3
^FO333,435^ADR,14,10^FR^FH_^FDPRODUTO ACABADO^FS
^FO333,795^ADR,14,10^FR^FH_^FDCODIGO SEGURANCA^FS
^FO275,070^GB080,356,3^FS
^FO275,425^GB080,356,3^FS
^FO275,780^GB080,359,3^FS
^FO250,070^GB025,1070,20^FS
^FO253,080^ADR,14,14^FR^FH_^FDNOTA^FS3
^FO253,275^ADR,14,14^FR^FH_^FDEMISSOR^FS
^FO195,070^GB080,200,3^FS
^FO195,269^GB080,870,3^FS
^FO170,070^GB025,1070,20^FS
^FO173,080^ADR,14,14^FR^FH_^FDPEDIDO^FS3
^FO173,275^ADR,14,14^FR^FH_^FDITEM^FS
^FO173,380^ADR,14,14^FR^FH_^FDCLIENTE^FS
^FO115,070^GB080,200,3^FS
^FO115,269^GB080,100,3^FS
^FO115,369^GB080,770,3^FS
^FO090,070^GB025,1070,20^FS
^FO093,080^ADR,14,14^FR^FH_^FDORDEM PRODUCAO^FS
^FO093,275^ADR,14,14^FR^FH_^FDCOD.EMB^FS
^FO093,380^ADR,14,14^FR^FH_^FDDATA ENTREGA^FS
^FO093,595^ADR,14,14^FR^FH_^FDEMISSAO ETIQUETA^FS
^FO093,890^ADR,14,14^FR^FH_^FDVOLUME^FS
^FO093,890^ADR,14,14^FR^FH_^FDREGIAO^FS
^FO030,070^GB060,200,3^FS
^FO030,269^GB060,100,3^FS
^FO030,368^GB060,213,3^FS
^FO030,580^GB060,300,3^FS
^FO030,880^GB060,139,3^FS
^FO030,880^GB060,260,33^FS
^FO770,425^ASR,20,20^FR^FD02^FS
^FO770,415^ASR,20,20^FR^FH_^FD03^FS
^FO670,080^ASR,20,15^FR^FH_^FD04^FS
^FO670,325^ASR,15,15^FD05^FS
^FO580,80^ASR,40,17^FR^FH_^FD06^FS
^FO580,280^ASR,40,17^FR^FH_^FD07^FS
^FO580,490^ASR,40,17^FR^FH_^FD08^FS
^FO580,690^ASR,50,60^FR^FH_^FD09^FS
^FO580,1000^ASR,40,40^FR^FH_^FD10^FS
^FO470,080^ASR,20,20^FR^FH_^FD11^FS
^FO470,380^ASR,20,20^FR^FH_^FD12^FS
^FO470,635^ASR,80,120^FR^FD13^FS
^FO280,080^ASR,30,14^FR^FH_^FD14^FS
^FO280,435^ASR,30,14^FR^FH_^FD15^FS
^FO118,080^ASR,30,30^FR^FH_^FD16^FS
^FO118,280^ASR,30,30^FR^FH_^FD17^FS
^FO118,380^ASR,20,20^FR^FH_^FD18^FS
^FO200,080^ASR,30,20^FR^FH_^FD19^FS
^FO200,290^ASR,30,15^FR^FH_^FD20^FS
^FO035,080^ASR,30,30^FR^FH_^FD21^FS
^FO035,280^ASR,30,30^FR^FH_^FD22^FS
^FO035,385^ASR,20,15^FR^FH_^FD23^FS
^FO035,590^ASR,15,15^FR^FH_^FD24^FS
^FO035,890^ASR,15,15^FR^FH_^FD25^FS
^FO035,890^ASR,40,40^FR^FH_^FD26^FS
^FO440,480^ADR,14,10^FR^FDETIQUETA EM CODIGO DE BARRAS^FS3
^FO390,90^BY2^BCR,45,Y,N,N^FD27^FS
^FO50,1150^BY2^BCN,35,Y,N,N^FD28^FS
^FO280,780^B7R,5,2,5,10,N^FD29^FS
^ISFIXO0001,Y^FS
^XZ