Application Development and Automation Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 

Filtrar partes de nomes em ABAP

0 Kudos
804

Bom dia Pessoal.
Sou programador ABAP iniciante , eu fiz um programa de relatório.

Agora estou tentando filtrar as informações com partes dos nomes Ex: No campo eu digito FE e como resultado me trazer somente o que começa com FE .

Mas não estou conseguindo existe alguma forma de fazer isso em ABAP?

Segue abaixo a clausula Where.

SELECT MANDT CODIGO TELA QUANTIDADE VALOR DATA
FROM ZTRELATORIO
INTO TABLE T_RELAT
WHERE TELA IN S_TELA.

2 REPLIES 2

renato_martins
Participant
0 Kudos
650

Olá,

Como está o seu conteúdo de S_TELA?

Dê uma olhada nesse item, para usar outros modos de comparação: https://answers.sap.com/questions/3687616/how-to-use-ca-cp-co-cn-na-comparison-operators-for.html

0 Kudos
650

O meu conteúdo S_TELA é um SELECT-OPTIONS: S_TELA FOR ZTRELATORIO-TELA.

Segue abaixo meu código

*
REPORT ZREXER04 NO STANDARD PAGE HEADING.

DATA: V_SOMA_QTDADE TYPE P DECIMALS 2,
V_SOMA_VALOR TYPE P DECIMALS 2,
V_CONTADOR TYPE P DECIMALS 2,
V_MEDIA TYPE P DECIMALS 2.

*TABELA TRANSPARENTE
TABLES: ZTRELATORIO.

*TABELA INTERNA
DATA: T_ZTRELATORIO TYPE TABLE OF ZTRELATORIO WITH HEADER LINE.

ULINE (120).
WRITE: /01 '|',
02 'COD',
10 '|',
15 'TELA',
45 '|',
55 'QUANTIDADE',
65 '|',
75 'VALOR',
85 '|',
95 'DATA',
120 '|'.
ULINE /(120).

*TELA DE SELECAO


PARAMETERS:P_COD LIKE ZTRELATORIO-CODIGO,
P_TELA LIKE ZTRELATORIO-TELA,
P_QTDADE LIKE ZTRELATORIO-QUANTIDADE,
P_VALOR LIKE ZTRELATORIO-VALOR,
P_DATA TYPE D, " TIPO D DE DATA
P_INSERT RADIOBUTTON GROUP GR1,
P_UPDATE RADIOBUTTON GROUP GR1,
P_MODIFY RADIOBUTTON GROUP GR1,
P_DELETE RADIOBUTTON GROUP GR1,
P_VISU RADIOBUTTON GROUP GR1,
P_FILTRO RADIOBUTTON GROUP GR1.
SELECT-OPTIONS: S_TELA FOR ZTRELATORIO-TELA.
*COMANDO INSERT
IF P_INSERT = 'X'.
CLEAR ZTRELATORIO.
ZTRELATORIO-CODIGO = P_COD.
ZTRELATORIO-TELA = P_TELA.
ZTRELATORIO-QUANTIDADE = P_QTDADE.
ZTRELATORIO-VALOR = P_VALOR.
ZTRELATORIO-DATA = P_DATA.

INSERT ZTRELATORIO.

IF SY-SUBRC = 0.
COMMIT WORK." CONFIRMA A GRAVACAO NO BANDO DE DADOS
MESSAGE 'REGISTRO CADASTRADO COM SUCESSO' TYPE 'I'.
SELECT * FROM ZTRELATORIO INTO TABLE T_ZTRELATORIO.
LOOP AT T_ZTRELATORIO.

WRITE: /01 '|',
02 T_ZTRELATORIO-CODIGO,
10 '|',
15 T_ZTRELATORIO-TELA,
45 '|',
55 T_ZTRELATORIO-QUANTIDADE,
65 '|',
75 T_ZTRELATORIO-VALOR,
85 '|',
95 T_ZTRELATORIO-DATA DD/MM/YYYY,
120 '|'.

ULINE /(120).
ENDLOOP.

FREE MEMORY.
ELSE.
ROLLBACK WORK.
MESSAGE 'ERRO NO CADASTRO' TYPE 'I'.
ENDIF.

* COMANDO UPDATE
ELSEIF P_UPDATE = 'X'.

UPDATE ZTRELATORIO
SET TELA = P_TELA
QUANTIDADE = P_QTDADE
VALOR = P_VALOR
WHERE CODIGO = P_COD.

IF SY-SUBRC = 0.
COMMIT WORK.
MESSAGE 'REGISTRO ATUALIZADO COM SUCESSO' TYPE 'I'.

SELECT * FROM ZTRELATORIO INTO TABLE T_ZTRELATORIO.
LOOP AT T_ZTRELATORIO.

WRITE: /01 '|',
02 T_ZTRELATORIO-CODIGO,
10 '|',
15 T_ZTRELATORIO-TELA,
45 '|',
55 T_ZTRELATORIO-QUANTIDADE,
65 '|',
75 T_ZTRELATORIO-VALOR,
85 '|',
95 T_ZTRELATORIO-DATA,
120 '|'.

ULINE /(120).

ENDLOOP.
FREE MEMORY.

ELSE.
ROLLBACK WORK.
MESSAGE 'ERRO NA ATUALIZACAO' TYPE 'I'.
ENDIF.

* COMANDO MODIFY

ELSEIF P_MODIFY = 'X'.

CLEAR ZTRELATORIO.
ZTRELATORIO-CODIGO = P_COD.
ZTRELATORIO-TELA = P_TELA.
ZTRELATORIO-QUANTIDADE = P_QTDADE.
ZTRELATORIO-VALOR = P_VALOR.
MODIFY ZTRELATORIO.

IF SY-SUBRC = 0.
COMMIT WORK.
MESSAGE 'PROCESSO REALIZADO COM SUCESSO' TYPE 'I'.

SELECT * FROM ZTRELATORIO INTO TABLE T_ZTRELATORIO.
LOOP AT T_ZTRELATORIO.

WRITE: /01 '|',
02 T_ZTRELATORIO-CODIGO,
10 '|',
15 T_ZTRELATORIO-TELA,
45 '|',
55 T_ZTRELATORIO-QUANTIDADE,
65 '|',
75 T_ZTRELATORIO-VALOR,
85 '|',
95 T_ZTRELATORIO-DATA,
120 '|'.

ULINE /(120).

ENDLOOP.
FREE MEMORY.

ELSE.
ROLLBACK WORK.
MESSAGE 'ERRO NO PROCESSAMENTO' TYPE 'I'.
ENDIF.

*COMANDO DELETE
ELSEIF P_DELETE = 'X'.
DELETE FROM ZTRELATORIO WHERE CODIGO = P_COD.
IF SY-SUBRC = 0.
COMMIT WORK.
MESSAGE 'REGISTRO DELETADO COM SUCESSO' TYPE 'I'.

SELECT * FROM ZTRELATORIO INTO TABLE T_ZTRELATORIO.
LOOP AT T_ZTRELATORIO.

WRITE: /01 '|',
02 T_ZTRELATORIO-CODIGO,
10 '|',
15 T_ZTRELATORIO-TELA,
45 '|',
55 T_ZTRELATORIO-QUANTIDADE,
65 '|',
75 T_ZTRELATORIO-VALOR,
85 '|',
95 T_ZTRELATORIO-DATA,
120 '|'.

ULINE /(120).

ENDLOOP.
FREE MEMORY.

ELSE.
ROLLBACK WORK.
MESSAGE 'ERRO AO DELETAR' TYPE 'I'.
ENDIF.

* VISUALIZAR
ELSEIF P_VISU = 'X'.

SELECT * FROM ZTRELATORIO INTO TABLE T_ZTRELATORIO.

LOOP AT T_ZTRELATORIO.
V_SOMA_QTDADE = V_SOMA_QTDADE + T_ZTRELATORIO-QUANTIDADE.
V_CONTADOR = V_CONTADOR + T_ZTRELATORIO-MANDT.
V_SOMA_VALOR = ( V_SOMA_VALOR + T_ZTRELATORIO-VALOR ).
V_MEDIA = V_SOMA_VALOR / V_CONTADOR.

WRITE: /01 '|',
02 T_ZTRELATORIO-CODIGO,
10 '|',
15 T_ZTRELATORIO-TELA,
45 '|',
55 T_ZTRELATORIO-QUANTIDADE,
65 '|',
75 T_ZTRELATORIO-VALOR,
85 '|',
95 T_ZTRELATORIO-DATA,
120 '|'.

ULINE /(120).

ENDLOOP.
* SKIP.
WRITE:/'************************************************************************************************************************'.
WRITE:/'TOTAL',45 V_SOMA_QTDADE,65 V_MEDIA, 120'*'.
WRITE:/'************************************************************************************************************************'.

FREE MEMORY.

*WRITE:/ 'V_CONTADOR', V_CONTADOR.

ELSEIF P_FILTRO = 'X'.
* SELECT-OPTIONS: S_DATA FOR ZTRELATORIO-DATA.
DATA: BEGIN OF T_RELAT OCCURS 0,
MANDT LIKE ZTRELATORIO-MANDT,
CODIGO LIKE ZTRELATORIO-CODIGO,
TELA LIKE ZTRELATORIO-TELA,
QUANTIDADE LIKE ZTRELATORIO-QUANTIDADE,
VALOR LIKE ZTRELATORIO-VALOR,
DATA LIKE ZTRELATORIO-DATA,
END OF T_RELAT.

*ROTINA DE SELECAO
SELECT MANDT CODIGO TELA QUANTIDADE VALOR DATA
FROM ZTRELATORIO
INTO TABLE T_RELAT
WHERE TELA IN S_TELA.
* WHERE TELA LIKE '%GRADIL%'.
IF SY-SUBRC = 0.

LOOP AT T_RELAT.

V_SOMA_QTDADE = V_SOMA_QTDADE + T_RELAT-QUANTIDADE.
V_CONTADOR = V_CONTADOR + T_RELAT-MANDT.
V_SOMA_VALOR = ( V_SOMA_VALOR + T_RELAT-VALOR ).
V_MEDIA = V_SOMA_VALOR / V_CONTADOR.

WRITE: /01 '|',
02 T_RELAT-CODIGO,
10 '|',
15 T_RELAT-TELA,
45 '|',
55 T_RELAT-QUANTIDADE,
65 '|',
75 T_RELAT-VALOR,
85 '|',
95 T_RELAT-DATA DD/MM/YYYY,
120 '|'.
ULINE /(120).

ENDLOOP.

WRITE:/'************************************************************************************************************************'.
WRITE:/'TOTAL',15 T_RELAT-TELA,45 V_SOMA_QTDADE,65 V_MEDIA, 120'*'.
WRITE:/'************************************************************************************************************************'.

ENDIF.
ENDIF.