Escolar Documentos
Profissional Documentos
Cultura Documentos
Comandos e Funcoes de Abap
Comandos e Funcoes de Abap
ABAP/4
Descrio
Adiciona um valor a um outro campo numrico
Gravar em tabela interna
Copia um parte de uma tabela interna
Usado para classificar tabelas em ordem durante
o APPEND
Identifica o ultimo registro de uma seqncia
(quebra)
Usado para definir a execuo de mdulos com
botes
Identifica o primeiro registro da tabela
percorrida
Identifica o ultimo registro da tabela percorrida
Evento para abrir uma segunda tela dentro de
um relatrio ( drew down )
Identifica o primeiro registro de uma seqncia
(quebra)
Analisar o resultado de uma varivel
Evento para inicializar os botes criados
Para verificar a autorizao de objeto
Usado para classificar caracteres acentuados
Atribuio Dinamica
Comandos usados para formatao de relatrios.
Pg
6
6
32
31
8
9
9
9
9
9
6
6
6
7
7
7
7
8
8
32
31
32
10
10
10
10
10
32
Criar tabelas internas e variveis
Deleta um registro de uma tabela interna
Determina o numero de linhas de uma tabela
interna
Usado para criar loop
Funo para download
Funo usada para finalizar um formulrio
SAPSCRIPT
Marca o final de uma cabealho
Evento para marcar o fim das selees de dados
Comando usado para sair de um lao ou subrotina
11
11
33
11
11
12
12
12
12
____________________________________________________________________________________
Elaborado Por : Amantino Freitas Soares
1
13
12
13
13
13
14
15
15
15
15
16
16
33
16
16
16
16
16
17
17
17
17
17
17
18
18
18
19
33
19
20
20
20
20
21
21
21
21
21
21
22
22
23
23
23
23
____________________________________________________________________________________
Elaborado Por : Amantino Freitas Soares
2
23
23
24
24
24
25
25
25
26
26
27
27
27
27
27
27
27
27
27
27
27
27
27
27
27
27
27
27
27
27
28
28
28
28
28
29
29
34
29
29
30
31
WRITE
FORMAT
SKIP
ULINE
35
____________________________________________________________________________________
Elaborado Por : Amantino Freitas Soares
3
Programa 3
Programa 4
Programa 5
Programa 6
Programa 7
Programa 8
Programa 9
Programa 10
TABLES
SELECT
DATA
REFRESH
CLEAR
LOOP
LINE-SIZE
LINE-COUNT
PARAMETERS
SORT
READ TABLE
SELECTION-SCREEN
SELECTION-OPTIONS
SELECT INTO TABLE
SELECT INTO TABLE INNER JOIN
INITIALIZATION
START-OF-SELECTION
END-OF-SELECTION
NO STANDARD PAGE HEADING
AT SELECTION-SCREEN ON
TOP-OF-PAGE
END-OF-PAGE
MESSAGE-ID
MESSAGE
SY-SYBRC
CONCATENATE
APPEND
AT END OF
SY-DATUM
SY-PAGNO
AT LINE-SELECTION
IF NOT IS INITIAL
SET TILTEBAR
SY-ULINE
SY-VLINE
HIDE
SUM
DATA (INCLUDE STRUCTURE)
CONSTANTS
PARAMETERS RLGRAP-FILENAME
WS_UPLOAD
SY-MANDT
SPLIT
UNPACK
INSERT
MOVE-CORRESPONDING
COMMIT WORK
CALL TRANSACTION
PARAMETERS RADIOBUTTON
GUI_DOWNLOAD
MESSAGE xxx WITH
TRANSFER
READ DATASET
CLOSE DATASET
OPEN DATASET
SXPG_CALL_SYSTEM
GRAPH_MATRIX_3D
36
38
40
43
47
50
55
61
62
____________________________________________________________________________________
Elaborado Por : Amantino Freitas Soares
4
Programa 11
Programa 13
Programa 14
Criar Transao
Module POOL ON LINE
Criar Janelas
Objetos de Autorizao
USER-EXIT
FIELD-EXIT
Criar Tabelas
Principais Tabelas Genricas
SapScript Etapas de criao
SET PF-STATUS
AT USER-COMMAND
SY-UCOMM
DOWNLOAD
CASE .. WHEN
LEAVE PROGRAM
LEAVE TO SCREEN
MODULE
AT EXIT COMMAND
AUTHORITY-CHECK OBJECT
ID xxx FIELD
USO DE ALV
64
66
67
72
78
81
91
98
102
107
112
118
121
retorna 3
retorna 7
APPEND t_tabela
APPEND t_tabela.
AT END OF campo
SORT BY campo.
LOOP AT t_tabela.
.
AT END of campo.
.
ENDAT.
ENDDLOOP.
AT EXIT-COMMAND
AT FIRST
SORT BY campo.
LOOP AT t_tabela.
AT FIRST.
.
ENDAT.
...
ENDDLOOP.
____________________________________________________________________________________
Elaborado Por : Amantino Freitas Soares
6
AT LAST
SORT BY campo.
LOOP AT t_tabela.
....
AT LAST.
entra nesta rotina ao finalizar o LOOP, somente no ultimo registro.
.
ENDAT.
ENDDLOOP.
Evento usado para abrir uma segunda tela em um
relatrio ( drill down )
AT LINE-SELECTION
AT LINE-SELECTION.
IF NOT T_MARC IS INITIAL.
SET TITLEBAR 'DET'.
WRITE SY-ULINE(83).
WRITE :'Material : '.
WRITE : T_MARC-MATNR,' - '
....
ENDIF.
AT NEW campo
SORT BY campo.
LOOP AT t_tabela.
AT NEW campo.
.
ENDAT.
...
ENDDLOOP.
AT SELECTION-SCREEN ON
varivel
____________________________________________________________________________________
Elaborado Por : Amantino Freitas Soares
7
AUTHORITY-CHECK OBJECT
objeto
parmetro tipo
A = DISPLAY
E = ERROS
N = NO MOSTRAR
P = NO MSOTRAR / DEBUGAR
*
*
*
*
parmetro tipo2
A = ASSINCRONO
S = SINCRONO
L = LOCAL UPDATE
CALL TRANSACTION 'XK01' USING T_BDC MODE 'A' UPDATE 'S' MESSAGES INTO T_MSG.
* simula um ENTER passando pela primeira tela
* SET PARAMETER ID NN FILED valor do campo para chamar transaes passando
* parmetros
SET PARAMETERS ID VF' FIELD t_alv-vbeln.
CALL TRANSACTION 'VF03' AND SKIP FIRST SCREEN.
____________________________________________________________________________________
Elaborado Por : Amantino Freitas Soares
8
CASE vl_okcode.
WHEN 'SIM'.
...
WHEN 'NAO'.
...
WHEN OTHERS.
...
ENDCASE.
CHECK var
FORM dados.
LOOP AT t_tabela.
t_tabela-campo = KUNNR.
CHECK t_tabela-campo = 0001.
t_tabela-campo = 0002.
APPEND t_tabela.
ENDDLOOP.
ENDFORM.
CLEAR var
CLEAR var.
CLEAR t_tabela. limpa o header line
CLOSE DATSET
CLOSE arquivo.
CLOSE_FORM
____________________________________________________________________________________
Elaborado Por : Amantino Freitas Soares
9
COLLECT t_tabela
COLLECT t_tabela.
Exemplo :
Tabela-nome = JOAO. , Tabela-uf
COLLECT tabela.
Tabela-nome = JOAO. ,Tabela-uf
COLLECT tabela.
Tabela-nome = JOAO. , Tabela-uf
COLLECT tabela.
= SP. , Tabela-valor
= RJ. , Tabela-valor
= SP., Tabela-valor
= 100.
= 300.
= 500.
COMMIT WORK
COMMIT WORK.
var3 = abcXXX
CONTINUE
FORM dados.
DO condio.
t_tabela-campo = KUNNR.
IF t_tabela-campo = 0001.
CONTINUE.
ELSE.
EXIT.
ENDIF.
ENDDO.
ENDFORM.
CONDENSE var
Var = Dr..
CONDENSE var.
DATA var TYPE tp.
DATA var LIKE tp.
____________________________________________________________________________________
Elaborado Por : Amantino Freitas Soares
10
DELETE t_tabela.
DO condio .. ENDDO.
DO condio.
....
ENDDO.
DOWNLOAD
____________________________________________________________________________________
Elaborado Por : Amantino Freitas Soares
11
END-OF-PAGE
TOP-OF-PAGE.
WRITE NOVO CABECALHO DEFINIDO PELO PROGRAMA.
END-OF-PAGE.
END-OF-SELECTION
START-OF-SELECTION.
SELECT marc~matnr marc~werks t001w~name1 makt~maktx
INTO TABLE t_marc
FROM marc
INNER JOIN t001w ON marc~werks = t001w~werks
INNER JOIN makt ON marc~matnr = makt~matnr
and makt~spras = sy-langu
WHERE t001w~werks IN S_CENTRO
AND marc~matnr IN S_MATERI.
END-OF-SELECTION.
EXIT
FORM dados.
DO condio.
t_tabela-campo = KUNNR.
IF t_tabela-campo = 0001.
CONTINUE.
ELSE.
EXIT.
ENDIF.
ENDDO.
ENDFORM.
____________________________________________________________________________________
Elaborado Por : Amantino Freitas Soares
12
FORM
FORM dados.
.
.
.
ENDFORM.
Funes matemticas e
operadores logicos
**
Exponenciao
DIV
Diviso de inteiro
MOD Resto da diviso de inteiro
GRAPH_MATRIX_3D
CALL FUNCTION
EXPORTING
COL1
COL2
COL3
COL4
* COL5
* COL6
DIM1
DIM2
INFORM
TITL
VALT
WINPOS
WINSZX
WINSZY
TABLES
DATA
OPTS
'GRAPH_MATRIX_3D'
= 'TV'
= 'VIDEO CASSETE'
= 'RADIO'
= 'DVD'
=''
=''
= 'PRODUTOS'
= 'VENDEDOR'
= '6'
= 'VENDAS 2003'
= 'QTD'
= '5'
= '5'
= '70'
= t_vendedor
= t_tabela .
eixo X,Y
TITULO DO GRAFICO
valor do eixo
posio inicial
____________________________________________________________________________________
Elaborado Por : Amantino Freitas Soares
13
____________________________________________________________________________________
Elaborado Por : Amantino Freitas Soares
14
ID .. FIELD ..
Comando de desio.
IF var = A.
....
ELSE.
....
ENDIF.
IF NOT .. IS INITIAL.
____________________________________________________________________________________
Elaborado Por : Amantino Freitas Soares
15
INITIALIZATION.
TABLES ....
DATA .....
.....
INITIALIZATION.
INSERT t_tabela_transparente.
INSERT tabela.
LEAVE PROGRAM.
LEAVE PROGRAM.
LINE-COUNT nnn.
LINE-SIZE nnn.
LOOP AT t_tabela.
LOOP AT t_tabela.
.
.
ENDDLOOP.
____________________________________________________________________________________
Elaborado Por : Amantino Freitas Soares
16
* MESSAGE-ID nnn deve ser usado junto com o comando REPORT, no inicio do programa
* Existem 3 tipos de mensagens : W-> de avisos, E-> de erros, S-> de sucesso
REPORT LINE-COUNT 80 LINE-SIZE 60 MESSAGE-ID Z01.
MESSAGE W001.
MESSAGE E002.
MESSAGE S003.
MODIFY t_tabela.
MODIFY t_tabela TRANSPORTING
campos
MODIFY t_tabela.
MODIFY t_tabela TRANSPORTING campos
MODULE
MODULE nome_modulo.
MOVE
LOOP AT t_tabela.
MOVE tabela.
INSERT tabela.
ENDLOOP.
COMMIT WORK.
MOVE-CORRESPONDING t_tabela
TO tabela
LOOP AT t_tabela.
MOVE-CORRESPONDING t_tabela TO tabela.
INSERT tabela.
ENDLOOP.
COMMIT WORK.
____________________________________________________________________________________
Elaborado Por : Amantino Freitas Soares
17
NEW-PAGE.
____________________________________________________________________________________
Elaborado Por : Amantino Freitas Soares
18
____________________________________________________________________________________
Elaborado Por : Amantino Freitas Soares
19
PERFORM nome_do_sub_programa.
POPUP_TO_CONFIRM_WITH_MESSAGE
LOOP AT t_mard.
TRANSFER texto09 TO p_arq.
READ DATASET p_aqr INTO t_tabela.
ENDLOOP.
____________________________________________________________________________________
Elaborado Por : Amantino Freitas Soares
20
READ_TEXT
REFRESH t_tabela.
REFRESH t_tabela.
REPORT
REPORT.
RESERVE linhas
RESERVE 4.
SAPGUI_PROGRESS_INDICATOR
____________________________________________________________________________________
Elaborado Por : Amantino Freitas Soares
21
* opo com select lendo direto uma tabela interna, os campos devem estar na ordem da
* tabela interna. A tabela interna j fica preenchida.
SELECT werks name1 INTO TABLE t_001w FROM T001W.
* select com WHERE
SELECT matnr maktx INTO TABLE t_makt FROM MAKT WHERE SPRAS = 'PT'.
* OS WHERES DEVEM SEGUIR A SEQUENCIA DOS CAMPOS DA TABELA, quando o campo
* for um parmetro com vrios dados usar IN no lugar do sinal de igual
SELECT matnr maktx INTO TABLE t_makt FROM MAKT WHERE matnr IN S_MATERI
AND SPRAS = sy-langu.
* USO DE INNER JOIN
* SELECT campos_das_tabelas que contem os dados INTO TABLE nome_da_tabela que ira
guardar os dados FROM tabela principal para fazer o join INNER JOIN tabela secundria
para fazer o join com o from ON condio de ligao do join WHERE condies
SELECT marc~matnr marc~werks t001w~name1 makt~maktx
INTO TABLE t_marc
FROM marc
INNER JOIN t001w ON marc~werks = t001w~werks
INNER JOIN makt ON marc~matnr = makt~matnr
and makt~spras = sy-langu
WHERE t001w~werks IN S_CENTRO
AND marc~matnr IN S_MATERI.
SELECT SINGLE * FROM T001W WHERE WERKS = T001W-WERKS.
SELECT * INTO CORRESPONDING FIELDS OF tabela FROM TABLE
SELECT * INTO CORRESPONDING FIELDS OF tabela ( grava na linha de cabealho )
* SELECT para retornar o ultimo numero de uma sequencia ou o maio numero
TABLES zprevisao.
DATA z_ultimo like zprevisao-nrdoc.
SELECT MAX( nrdoc ) INTO z_ultimo FROM zprevisao.
____________________________________________________________________________________
Elaborado Por : Amantino Freitas Soares
22
SELECTION-SCREEN
* depois dar dublo click sobre o nome do boto para criar o objeto.
SET PF-STATUS nome_do_boto.
* depois dar dublo click sobre o nome do titulo para criar o objeto.
SET TITLEBAR NNN.
SKIP n
____________________________________________________________________________________
Elaborado Por : Amantino Freitas Soares
23
LOOP AT t_tabela.
CLEAR t_tempo.
* SPLIT tabela_interna AT delimitador_do_arquivo INTO campos que iro receber os dados na
* sequncia do arquivo
* c_tipo o delimitardor do arquivo texto
SPLIT t_tabela-texto01 AT c_tipo INTO T_TEMPO-BUKRS
T_TEMPO-EKORG
T_TEMPO-KTOKK
T_TEMPO-NAME1
T_TEMPO-SORTL
T_TEMPO-ORT01
T_TEMPO-PSTLZ
T_TEMPO-LAND1
T_TEMPO-REGIO.
APPEND t_tempo.
ENDLOOP.
STANDARD TOOLBAR
Valores padro
BACK -> voltar
BACK -> EXIT
RW -> cancelar
PRI -> imprimir
%SC -> pesquisa
%SC+ -> pesquisa prximo
P-- -> primeira pagina
P- Page UP
P+ -> page down
P++ -> Ultima pagina
____________________________________________________________________________________
Elaborado Por : Amantino Freitas Soares
24
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
START-OF-SELECTION
START-OF-SELECTION.
SELECT marc~matnr marc~werks t001w~name1 makt~maktx
INTO TABLE t_marc
FROM marc
INNER JOIN t001w ON marc~werks = t001w~werks
INNER JOIN makt ON marc~matnr = makt~matnr
and makt~spras = sy-langu
WHERE t001w~werks IN S_CENTRO
AND marc~matnr IN S_MATERI.
END-OF-SELECTION.
STRLEN( texto )
____________________________________________________________________________________
Elaborado Por : Amantino Freitas Soares
25
SUM
retorna var1 = 6
campo numrico
ENDLOOP.
____________________________________________________________________________________
Elaborado Por : Amantino Freitas Soares
26
TABLES tabela.
TABLES : tabela1, tabela2, tabela3.
____________________________________________________________________________________
Elaborado Por : Amantino Freitas Soares
27
TOP-OF-PAGE
TOP-OF-PAGE.
WRITE NOVO CABECALHO DEFINIDO PELO PROGRAMA.
END-OF-PAGE.
retorna ABCD
retorna abcd
TYPES tipo
TYPES tabela
ULINE
ULINE
____________________________________________________________________________________
Elaborado Por : Amantino Freitas Soares
28
UNPACK var
UPDATE tabela
UPDATE tabela.
WRITE xxxxxxx
WRITE
WRITE
WRITE
WRITE
____________________________________________________________________________________
Elaborado Por : Amantino Freitas Soares
29
____________________________________________________________________________________
Elaborado Por : Amantino Freitas Soares
30
ASSIGN f1 TO <F>
Atribuio dinmica
Assign f1 TO <f>
Obs : atribui o valor de f1 para o simbolo <f>
____________________________________________________________________________________
Elaborado Por : Amantino Freitas Soares
31
AS TEXT
AS SYMBOL
AS ICON
AS LINE
Tabela2[] = Tabela1[].
Obs = somente se ambas forem iguais, o conteudo da tabela 2 apagado.
____________________________________________________________________________________
Elaborado Por : Amantino Freitas Soares
32
numero de linhas
comprimento de uma linha em bytes
valor atual da clusula occurs.
Operador
Significado
Verdadeiro quando
**
*
S
v1 CO v2
Comtem somente
v1 CN v2
NOT v1 CO v2
v1 CA v2
Comtem qualquer
v1 NA v2
NOT v1 CA v2
v1 CS v2
Comtem string
v1 NS v2
NOT v1 CS v2
v1 CP v2
v1 NP v2
NOT v1 CP v2
N
N
S
S
____________________________________________________________________________________
Elaborado Por : Amantino Freitas Soares
33
____________________________________________________________________________________
Elaborado Por : Amantino Freitas Soares
34
____________________________________________________________________________________
Elaborado Por : Amantino Freitas Soares
35
____________________________________________________________________________________
Elaborado Por : Amantino Freitas Soares
37
____________________________________________________________________________________
Elaborado Por : Amantino Freitas Soares
39
REPORT nome_do_programa
parmetros do REPORT
-> LINE-SIZE n_colunas
-> LINE-COUNT n_linhas
-> NO STANDARD PAGE HEADING ( no usar cabealho padro )
-> MESSAGE-ID z01 ( onde z01 a classe de mensagem )
____________________________________________________________________________________
Elaborado Por : Amantino Freitas Soares
41
____________________________________________________________________________________
Elaborado Por : Amantino Freitas Soares
42
" F_BUSCAR_MATERIAL
____________________________________________________________________________________
Elaborado Por : Amantino Freitas Soares
46
ZC00109
= ' '
= ' '
=
= t_tabela " NOME DA TABELA INTERNA QUE
" IRA RECEBER OS DADOS
=
=
=
=
=
=
=
=
=
=
=
1
2
3
4
5
6
7
8
9
10
11.
ENDLOOP.
* EFETIVA AS ALTERAES NO BANCO
COMMIT WORK.
ENDFORM.
" F_ATUALIZAR_DADOS
____________________________________________________________________________________
Elaborado Por : Amantino Freitas Soares
49
=
=
=
=
=
=
=
=
=
=
=
1
2
3
4
5
6
7
8
9
10
11.
" F_IMPORTAR_DADOS
*&---------------------------------------------------------------------*
*&
Form F_CARREGAR_DADOS
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
FORM F_CARREGAR_DADOS .
* LIMPAR A TABELA INTERNA
REFRESH t_tempo.
CLEAR t_tempo.
LOOP AT t_tabela.
____________________________________________________________________________________
Elaborado Por : Amantino Freitas Soares
51
" F_CARREGAR_DADOS
*&---------------------------------------------------------------------*
*&
Form F_BATCH_IMPUT
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
FORM F_BATCH_IMPUT .
LOOP AT t_tempo.
* PERFORM PARA PREENCHER A tabela BDC
*
PERFORM F_BDC_TELA USING programa tela.
*
PERFORM F_BDC_CAMPO USING campo valor.
* devemos passar os parmetros obtidos na transao SHDB
PERFORM
PERFORM
PERFORM
PERFORM
PERFORM
PERFORM
PERFORM
PERFORM
PERFORM
PERFORM
PERFORM
PERFORM
PERFORM
PERFORM
PERFORM
____________________________________________________________________________________
Elaborado Por : Amantino Freitas Soares
52
'LFA1-SPRAS' T_TEMPO-SPRAS.
PERFORM
PERFORM
PERFORM
PERFORM
PERFORM
PERFORM
PERFORM
PERFORM
PERFORM
PERFORM
PERFORM
PERFORM
PERFORM
PERFORM
PERFORM
PERFORM
PERFORM
____________________________________________________________________________________
Elaborado Por : Amantino Freitas Soares
53
" F_TRANSACAO_XK01
____________________________________________________________________________________
Elaborado Por : Amantino Freitas Soares
54
INITIALIZATION.
PERFORM F_SELECIONAR.
AT SELECTION-SCREEN ON s_materi.
AT SELECTION-SCREEN ON s_deposi.
____________________________________________________________________________________
Elaborado Por : Amantino Freitas Soares
55
texto01(20)
texto02(40)
texto03(04)
texto04(20)
texto05(04)
texto06(20)
texto07(18)
texto08(18)
texto09(200)
type
type
type
type
type
type
type
type
type
C.
C.
C.
C.
C.
C.
C.
C.
C.
" F_DOWN_UNIX
____________________________________________________________________________________
Elaborado Por : Amantino Freitas Soares
60
____________________________________________________________________________________
Elaborado Por : Amantino Freitas Soares
61
'FIFRST=3D'.
'P3TYPE=TO'.
'P3CTYP=RO'.
'TISIZE=2'.
'CLBACK=X'.
REFRESH t_vendedor.
CLEAR t_vendedor.
t_vendedor-nome = 'ZE'.
t_vendedor-tv
= 98.
t_vendedor-VIDEO = 83.
t_vendedor-radio = 45.
t_vendedor-dvd
= 65.
APPEND t_vendedor.
t_vendedor-nome = 'MANE'.
t_vendedor-tv
= 52.
t_vendedor-VIDEO = 38.
t_vendedor-radio = 23.
t_vendedor-dvd
= 5.
APPEND t_vendedor.
t_vendedor-nome = 'JOAO'.
t_vendedor-tv
= 73.
t_vendedor-VIDEO = 54.
t_vendedor-radio = 35.
____________________________________________________________________________________
Elaborado Por : Amantino Freitas Soares
62
" F_GRAFICO
____________________________________________________________________________________
Elaborado Por : Amantino Freitas Soares
63
TABLES T001L.
DATA: BEGIN OF T_001L OCCURS 0,
WERKS TYPE T001L-WERKS,
LGORT TYPE T001L-LGORT,
LGOBE TYPE T001L-LGOBE,
END OF T_001L.
REFRESH t_001l.
CLEAR t_001l.
SELECT werks lgort lgobe INTO TABLE t_001l FROM T001L.
* COMANDO PARA CRIAR BOTAO NO RELATORIO
* SET PF-STATUS 'nome_botao'
* DAR DUPLO CLICK NO nome_do_boto PARA CRIAR O OBJETO
SET PF-STATUS 'BOTAO'.
INITIALIZATION.
TOP-OF-PAGE.
PERFORM F_CABECALHO.
END-OF-PAGE.
START-OF-SELECTION.
PERFORM f_imprimir_dados.
END-OF-SELECTION.
* EVENTO PARA O BOTAO
AT USER-COMMAND.
* varivel de sistema. retorna o nome do boto (DOWNLOAD)
IF sy-ucomm = 'DOWNLOAD'.
PERFORM F_DOW_NOVO.
ENDIF.
*&---------------------------------------------------------------------*
*&
Form F_CABECALHO
*&---------------------------------------------------------------------*
FORM F_CABECALHO .
WRITE 5 sy-datum.
WRITE 30 'CHEMYUNION QUIMICA LTDA'.
WRITE 75 sy-pagno.
WRITE /2 'Centro'.
WRITE 10 'Deposito'.
WRITE 20 'Descrio'.
ULINE.
ENDFORM.
" F_CABECALHO
*&---------------------------------------------------------------------*
*&
Form f_imprimir_dados
*&---------------------------------------------------------------------*
FORM f_imprimir_dados .
* O FORM QUE VAI SER CHAMADO POR OUTRO PROGRAMA deve ter todas as infor
* maes para gerar o form ( ou seja neste caso montar a tabela )
____________________________________________________________________________________
Elaborado Por : Amantino Freitas Soares
64
" F_DOW_NOVO
____________________________________________________________________________________
Elaborado Por : Amantino Freitas Soares
65
" USER_COMMAND_EXIT_9020
____________________________________________________________________________________
Elaborado Por : Amantino Freitas Soares
66
TABLES: ZTAB1_03.
DATA: BEGIN OF T_ZTAB103 OCCURS 0,
TEXTO(100) TYPE C,
END OF T_ZTAB103.
DATA: BEGIN OF T_ZTAB1_03 OCCURS 0.
INCLUDE STRUCTURE ZTAB1_03.
DATA END OF T_ZTAB1_03.
* CRIANDO UMA CONSTANTE QUE INFORMA DELIMITADOR DO
* ARQUIVOS .TXT QUE SER LIDO PARA O BATCH INPUT
CONSTANTS: C_DELIMITADOR TYPE C VALUE';',
C_NOME(8)
TYPE C VALUE 'ABAP'.
SELECTION-SCREEN BEGIN OF BLOCK B_001 WITH FRAME TITLE TEXT-001.
PARAMETERS P_TEXTO LIKE RLGRAP-FILENAME.
SELECTION-SCREEN END OF BLOCK B_001.
START-OF-SELECTION.
PERFORM F_CARDADOS.
END-OF-SELECTION.
*&---------------------------------------------------------------------*
*&
Form F_CARDADOS
*----------------------------------------------------------------------*
FORM F_CARDADOS .
* data: vl_nome(8) type c.
* vl_nome = sy-uname.
* if vl_nome ne C_NOME.
*
MESSAGE E006 WITH TEXT-E01.
* endif.
* comando para verificar autorizao de objeto
* usar junto com su21 e su24
authority-check object 'ZZC0307Y'
* objetos da autorizao
* ID 'nome_do_objeto' FIELD 'campo'
* id 'TCD' field 'DUMMY'.
id 'ACTVT' field 'DUMMY'.
IF SY-SUBRC NE 0.
MESSAGE E006 WITH TEXT-E01.
ENDIF.
ENDFORM.
" F_CARDADOS
____________________________________________________________________________________
Elaborado Por : Amantino Freitas Soares
67
vbrp-posnr,
vbrp-matnr,
vbrp-fkimg,
vbrp-vrkme,
- obrigatorio
type
type
type
like
slis_listheader,
slis_layout_alv,
slis_print_alv,
disvariant.
"Cabealho
"layout para sada
"Ctrl de impresso
"Variante de exibio
"Documento de faturamento
selection-screen skip.
parameters:
p_varia like disvariant-variant.
"Variante de exibio
of block one.
*----------------------------------------------------------------------* Eventos
*----------------------------------------------------------------------initialization.
perform zf_init_alv.
at selection-screen on value-request for p_varia.
perform zf_recupera_layouts_salvos.
*----------------------------------------------------------------------* Principal
*----------------------------------------------------------------------start-of-selection.
____________________________________________________________________________________
Elaborado Por : Amantino Freitas Soares
69
"Seleciona a VBRK
"Preenche o catlogo
"Ordenao dos campos e subtotais
"Gera o relatrio
end-of-selection.
*----------------------------------------------------------------------* Rotinas
*----------------------------------------------------------------------*----------------------------------------------------------------------*
Form zf_init_alv
*----------------------------------------------------------------------*
Busca layout de exibio default para o relatrio. Se houver
*
algum formato padro para o relatrio, essa funo busca e j
*
apresenta o relatrio nesse formato.
*
Um layout fica como default quando marcamos "Config.Prelim." Um
*
flag que pode ser marcado na opo "Gravar layout" na barra de
*
ferramentas do ALV
*----------------------------------------------------------------------form zf_init_alv.
* recupera o nome do programa
v_repid = sy-repid.
clear v_variante.
v_variante-report = v_repid.
* funo para recuperar todas as variante de exibio
call function 'REUSE_ALV_VARIANT_DEFAULT_GET'
exporting
i_save
= 'A'
changing
cs_variant = v_variante
exceptions
not_found = 2.
if sy-subrc = 0.
p_varia = v_variante.
endif.
endform.
"zf_init_alv
*----------------------------------------------------------------------*
Form zf_recupera_layouts_salvos
*----------------------------------------------------------------------*
Abre um search help com os layouts j gravados. Se o usurio
*
escolher algum aqui, o programa vai iniciar a apresentao do
*
relatrio com esse layout, e no o que default, retornado na
*
funo REUSE_ALV_VARIANT_DEFAULT_GET em ZF_INIT_ALV (Acima)
*----------------------------------------------------------------------form zf_recupera_layouts_salvos.
* lista todas as variantes
v_variante-report = v_repid.
call function 'REUSE_ALV_VARIANT_F4'
exporting
is_variant = v_variante
i_save
= 'A'
importing
es_variant = v_variante
exceptions
not_found = 2.
if sy-subrc = 2.
message id sy-msgid type 'S' number sy-msgno
with sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
else.
p_varia = v_variante-variant.
endif.
____________________________________________________________________________________
Elaborado Por : Amantino Freitas Soares
70
"zf_recupera_layouts_salvos
*----------------------------------------------------------------------*
Form zf_selecao_dados
*----------------------------------------------------------------------*
Seleo dos dados
*----------------------------------------------------------------------form zf_selecao_dados.
select vbeln
fkart
from vbrk
into table
where vbeln
loop at t_vbrk.
move-corresponding t_vbrk to t_alv.
append t_alv.
endloop.
endform.
"zf_selecao_dados
*----------------------------------------------------------------------*
Form zf_monta_tabela_alv
*----------------------------------------------------------------------*
Monta tabela para apresentao do relatrio. Aqui montamos um
*
catlogo com as informaes dos campos.
*
Veja que no estamos preenchendo todas as opes do catlogo,
*
no necessrio. No anexo voc poder encontrar os principais
*----------------------------------------------------------------------form zf_monta_tabela_alv.
* colunas dos relatorios alv
clear t_fieldcat.
t_fieldcat-fieldname
t_fieldcat-tabname
t_fieldcat-reptext_ddic
t_fieldcat-inttype
t_fieldcat-outputlen
t_fieldcat-checkbox
append t_fieldcat.
=
=
=
=
=
=
'MARK'.
'T_ALV'.
'S'.
'C'.
1.
'X'.
clear t_fieldcat.
t_fieldcat-fieldname
t_fieldcat-tabname
t_fieldcat-reptext_ddic
t_fieldcat-inttype
t_fieldcat-outputlen
t_fieldcat-hotspot
append t_fieldcat.
=
=
=
=
=
=
'VBELN'.
'T_ALV'.
'Doc. Fatura'.
'C'.
10.
'X'.
" aparecer a mo
clear t_fieldcat.
t_fieldcat-fieldname
t_fieldcat-tabname
t_fieldcat-reptext_ddic
t_fieldcat-inttype
t_fieldcat-outputlen
append t_fieldcat.
=
=
=
=
=
'KDGRP'.
'T_ALV'.
'Grupo de Clientes'.
'C'.
2.
"
"
"
"
"
"
nome do campo
tabela interna
titulo da coluna
tipo
tamanho
=
=
=
=
=
'MWSBK'.
'T_ALV'.
'Montante do Imposto'.
'P'.
15.
*
*
*
*
clear t_fieldcat.
t_fieldcat-fieldname
t_fieldcat-tabname
t_fieldcat-reptext_ddic
t_fieldcat-inttype
t_fieldcat-outputlen
t_fieldcat-no_out
append t_fieldcat.
=
=
=
=
=
=
'FKART'.
'T_ALV'.
'Tipo do documento'.
'C'.
4.
'X'.
" campos ocultos
clear t_fieldcat.
t_fieldcat-fieldname
t_fieldcat-tabname
t_fieldcat-reptext_ddic
t_fieldcat-inttype
t_fieldcat-outputlen
t_fieldcat-no_out
append t_fieldcat.
=
=
=
=
=
=
'VTWEG'.
'T_ALV'.
'Canal de Distribuio'.
'C'.
2.
'X'.
clear t_fieldcat.
t_fieldcat-fieldname
t_fieldcat-tabname
t_fieldcat-reptext_ddic
t_fieldcat-inttype
t_fieldcat-outputlen
t_fieldcat-no_out
append t_fieldcat.
=
=
=
=
=
=
'KUNAG'.
'T_ALV'.
'Emissor da Ordem'.
'C'.
10.
'X'.
endform.
"zf_monta_tabela_alv
*----------------------------------------------------------------------*
Form zf_sort_subtotal
*----------------------------------------------------------------------*
Classificao e item de subtotalizao
*----------------------------------------------------------------------form zf_sort_subtotal.
clear t_sort[].
t_sort-spos
t_sort-fieldname
t_sort-tabname
t_sort-up
t_sort-subtot
append t_sort.
=
=
=
=
=
1.
'KDGRP'.
'T_ALV'.
'X'.
'X'.
"
" nome do campo
" org. crescente
" totalizado
"zf_sort_subtotal
____________________________________________________________________________________
Elaborado Por : Amantino Freitas Soares
72
* i_callback_program
* i_callback_top_of_page
endform.
"zf_executa_funcao_alv
*----------------------------------------------------------------------*
Form zf_top_of_page
*----------------------------------------------------------------------*
Cabealho do relatrio
*----------------------------------------------------------------------form zf_top_of_page.
* Monta as linhas de cabealho
clear t_listheader[].
clear v_listheader.
v_listheader-typ
= 'H'.
____________________________________________________________________________________
Elaborado Por : Amantino Freitas Soares
73
"zf_top_of_page
*---------------------------------------------------------------------*
Form zf_status
*---------------------------------------------------------------------*
Status com boto de log (Item a mais na barra ALV)
*---------------------------------------------------------------------form zf_status using rt_extab type slis_t_extab.
* Aqui estamos informando a funo que ela dever utilizar a barra de
* ferramentas ZALV_BOTOES.
set pf-status 'ZALV_BOTOES'.
* Tambm possvel excluir funes
"if sy-uname = ...
"EXCLUDING ...
"endif.
endform.
"zf_status
*----------------------------------------------------------------------*
Form zf_user_command
*----------------------------------------------------------------------*
Tratamento das opes do usurio. Por exemplo um Drill-down ou
*
algum boto que voc inseriu ou alterou. O importante conhecer
*
os parmetros que o form recebe
*----------------------------------------------------------------------form zf_user_command using ucomm
like sy-ucomm
selfield type slis_selfield.
* UCOMM:
o sy-ucomm (Ok-code)
* SELFIELD: uma estrutura com dados que nos permite identificar
*
o que foi selecionado. Essa estrutura tambm est
*
explicada no anexo ao final da apostila
* manter o relatrio na
selfield-row_stable =
* manter o relatrio na
selfield-col_stable =
case ucomm.
*** Visualizar Documento de Faturamento - Transao VF03
when 'DOCF'.
*** Pesquisar o registro selecionado pelo usurio
read table t_alv index selfield-tabindex.
* SET ,,,,, IF id do campo ( F1/F9 ) FILED tab com o valor do campo
set parameter id 'VF' field t_alv-vbeln.
* AND SKIP FIRST SCREEN -> PULA A PRIMEIRA TELA
call transaction 'VF03' and skip first screen.
when '&IC1'.
*** Pesquisar o registro selecionado pelo usurio
____________________________________________________________________________________
Elaborado Por : Amantino Freitas Soares
74
matnr
vrkme
t_vbrp
eq t_alv-vbeln.
endform.
" zf_carregar_t_vbrp
*&---------------------------------------------------------------------*
*&
Form zf_monta_tabela_alv_vbrp
*&---------------------------------------------------------------------*
form zf_monta_tabela_alv_vbrp .
free
t_fieldcatvbrp.
clear t_fieldcatvbrp.
t_fieldcatvbrp-fieldname
t_fieldcatvbrp-tabname
t_fieldcatvbrp-reptext_ddic
t_fieldcatvbrp-inttype
t_fieldcatvbrp-outputlen
append t_fieldcatvbrp.
=
=
=
=
=
'POSNR'.
'T_VBRP'.
'Item'.
'N'.
6.
clear t_fieldcatvbrp.
t_fieldcatvbrp-fieldname
t_fieldcatvbrp-tabname
t_fieldcatvbrp-reptext_ddic
t_fieldcatvbrp-inttype
t_fieldcatvbrp-outputlen
append t_fieldcatvbrp.
=
=
=
=
=
'MATNR'.
'T_VBRP'.
'N do material'.
'C'.
10.
=
=
=
=
=
'FKIMG'.
'T_VBRP'.
'Qtde.faturada'.
'P'.
20.
clear t_fieldcatvbrp.
t_fieldcatvbrp-fieldname
t_fieldcatvbrp-tabname
t_fieldcatvbrp-reptext_ddic
t_fieldcatvbrp-inttype
t_fieldcatvbrp-outputlen
____________________________________________________________________________________
Elaborado Por : Amantino Freitas Soares
75
=
=
=
=
=
'VRKME'.
'T_VBRP'.
'Unidade'.
'C'.
3.
endform.
" zf_monta_tabela_alv_vbrp
*&---------------------------------------------------------------------*
*&
Form zf_executa_funcao_alv_vbrp
*&---------------------------------------------------------------------*
form zf_executa_funcao_alv_vbrp .
* Preenchendo algumas opes
v_layout-expand_all
v_layout-colwidth_optimize
v_layout-edit
*
*
*
*
endform.
" zf_executa_funcao_alv_vbrp
*----------------------------------------------------------------------*
Form zf_top_of_page_vbrp
*----------------------------------------------------------------------*
Cabealho do relatrio
*----------------------------------------------------------------------form zf_top_of_page_vbrp.
* Monta as linhas de cabealho
clear t_listheader[].
clear v_listheader.
v_listheader-typ
= 'H'.
____________________________________________________________________________________
Elaborado Por : Amantino Freitas Soares
76
"zf_top_of_page_vbrp
____________________________________________________________________________________
Elaborado Por : Amantino Freitas Soares
77
____________________________________________________________________________________
Elaborado Por : Amantino Freitas Soares
78
____________________________________________________________________________________
Elaborado Por : Amantino Freitas Soares
79
____________________________________________________________________________________
Elaborado Por : Amantino Freitas Soares
80
CONFIRMAR
____________________________________________________________________________________
Elaborado Por : Amantino Freitas Soares
81
____________________________________________________________________________________
Elaborado Por : Amantino Freitas Soares
82
____________________________________________________________________________________
Elaborado Por : Amantino Freitas Soares
83
____________________________________________________________________________________
Elaborado Por : Amantino Freitas Soares
84
Definir a varivel que vai receber o cdigo de retorno da pagina, depois declarar a
varivel no modulo TOP
____________________________________________________________________________________
Elaborado Por : Amantino Freitas Soares
85
____________________________________________________________________________________
Elaborado Por : Amantino Freitas Soares
86
____________________________________________________________________________________
Elaborado Por : Amantino Freitas Soares
87
____________________________________________________________________________________
Elaborado Por : Amantino Freitas Soares
88
NOS MODULOS POB E PAI CRIAR SEMPRE CRIAR PERFORM PARA DECLARAES DE
VARIAVEIS, VER MODELO ABAIXO.
NOME DO PERFORM PARA FACILITAR ENDENTIMENTO DO PROGRAMA DEVE SER :
PERFORM F_nome_do_modulo. (F_USER_COMMAND_9000).
____________________________________________________________________________________
Elaborado Por : Amantino Freitas Soares
89
____________________________________________________________________________________
Elaborado Por : Amantino Freitas Soares
90
____________________________________________________________________________________
Elaborado Por : Amantino Freitas Soares
91
PARA
____________________________________________________________________________________
Elaborado Por : Amantino Freitas Soares
92
____________________________________________________________________________________
Elaborado Por : Amantino Freitas Soares
93
____________________________________________________________________________________
Elaborado Por : Amantino Freitas Soares
95
____________________________________________________________________________________
Elaborado Por : Amantino Freitas Soares
96
____________________________________________________________________________________
Elaborado Por : Amantino Freitas Soares
97
____________________________________________________________________________________
Elaborado Por : Amantino Freitas Soares
101
Executar ( F8 )
____________________________________________________________________________________
Elaborado Por : Amantino Freitas Soares
102
Na tela seguinte tem um boto que ativa todas as opes de pesquisa (um que tem uma
seta para baixo); clique que ir aparecer todas as formas de pesquisas possveis;
____________________________________________________________________________________
Elaborado Por : Amantino Freitas Soares
103
Em nome do componente, digite o nome da funo que voc pegou na primeira opo e
mande procurar;
Ir aparecer o nome de uma ampliao. Guarde esse nome.
____________________________________________________________________________________
Elaborado Por : Amantino Freitas Soares
104
Tem um boto para associar ampliao ao projeto. Digite o nome da ampliao que vc
pegou no item 6.
O prximo passo criar o cdigo desejado para o funcionamento da user-exit. Neste caso,
entre na funo (ou via SE37 ou dentro da prpria CMOD) e faa o cdigo (clique sobre o
include que aparece dentro da funo para criar um programa separado).
____________________________________________________________________________________
Elaborado Por : Amantino Freitas Soares
105
____________________________________________________________________________________
Elaborado Por : Amantino Freitas Soares
106
MENU : IR PARA->
DOC.CLIENT.ED
AMPLIAES
GLOBAIS->ELEMENTO
DE
DADOS->NOVO
____________________________________________________________________________________
Elaborado Por : Amantino Freitas Soares
107
Como primeiro passo, devemos executar a transao a onde iremos colocar o Filed-Exit,
e coletar os dados :
1. nome do campo
2. elemento de dados
3. nome do programa
4. numero da tela
____________________________________________________________________________________
Elaborado Por : Amantino Freitas Soares
109
____________________________________________________________________________________
Elaborado Por : Amantino Freitas Soares
110
A Field exit, permite que seja feita alguma seleo ou checagem de um determinado
campo no programa e tela desejados.
Para isso, se faz necessrio, buscar o elemento de dados do campo que se deseja fazer
a field exit.
Ir at a transao CMOD, clicar AMPLIAES TEXTO(menu), depois escolher Exits
campo, aparecero todas as fields existentes.
Para se criar uma nova:
Exit campo (menu)
Criar
Digitar o elemento de dados - Avanar
Digitar o cdigo, como uma funo
Depois clicar no boto Atribuir progr/tela, colocando o nome do programa e o nmero
da tela, p/ pegar estas informaes, clicar F1 e F9, no campo desejado
6) Visualiza ou modifica o contedo da field, no boto Processar MF, deve-se selecionar o
elemento de dado desejado
7) Ativar a field exit
1)
2)
3)
4)
5)
IMPORTANTE: Na field exit, vc precisa pegar o valor digitado no campo desejado, p/ isso
existe a importao e a exportao, ou seja, as variveis INPUT e OUTPUT, vc precisa sempre
colocar OUTPUT = INPUT, p/ que o valor possa voltar p/ tela origem.
Observao: A Field exit s funcionar, se a mesma estiver ativa.
____________________________________________________________________________________
Elaborado Por : Amantino Freitas Soares
111
____________________________________________________________________________________
Elaborado Por : Amantino Freitas Soares
112
____________________________________________________________________________________
Elaborado Por : Amantino Freitas Soares
113
CRIAR O DOMINIO
____________________________________________________________________________________
Elaborado Por : Amantino Freitas Soares
116
EM INTERVALOS PODEMOS DEFINIR UMA FAIXA OU VALORES QUE O CAMPO PODEM ACEITAR.
VOLTAR ATIVANDO AS TELAS. QUANDO CHEGAR NA TELA PRINCIPAL, IR EM
CONFIGURAES TECNICAS
____________________________________________________________________________________
Elaborado Por : Amantino Freitas Soares
117
Principais Tabelas de CO e FI
____________________________________________________________________________________
Elaborado Por : Amantino Freitas Soares
118
Principais Tabelas HR
HRS1200
HRS1203
PA2001 PA2002 PA2003 PA2004 PA2005 PA2006 PA2007 PA2010 PA2012 PA2013 -
Principais Tabelas de MM
Principais Tabelas de PP
Principais Tabelas de SD
____________________________________________________________________________________
Elaborado Por : Amantino Freitas Soares
119
____________________________________________________________________________________
Elaborado Por : Amantino Freitas Soares
120
____________________________________________________________________________________
Elaborado Por : Amantino Freitas Soares
121
____________________________________________________________________________________
Elaborado Por : Amantino Freitas Soares
122
Clicar em
____________________________________________________________________________________
Elaborado Por : Amantino Freitas Soares
123
____________________________________________________________________________________
Elaborado Por : Amantino Freitas Soares
124
CLICAR EM
____________________________________________________________________________________
Elaborado Por : Amantino Freitas Soares
125
CLICAR EM
____________________________________________________________________________________
Elaborado Por : Amantino Freitas Soares
126
____________________________________________________________________________________
Elaborado Por : Amantino Freitas Soares
127
tamanho do campo
CRIAR UM FORMULRIO SAPSCRIPT
COLOCAR O SIGNIFICADO, DEPOIS CLICAR EM CONF.GLOBAIS
____________________________________________________________________________________
Elaborado Por : Amantino Freitas Soares
128
CRIAR EM PAGINAS
____________________________________________________________________________________
Elaborado Por : Amantino Freitas Soares
129
____________________________________________________________________________________
Elaborado Por : Amantino Freitas Soares
130
____________________________________________________________________________________
Elaborado Por : Amantino Freitas Soares
131
____________________________________________________________________________________
Elaborado Por : Amantino Freitas Soares
133
____________________________________________________________________________________
Elaborado Por : Amantino Freitas Soares
134