2022 Sep 01 2:24 PM
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.
2022 Sep 01 2:59 PM
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
2022 Sep 01 7:28 PM
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.