Você está na página 1de 86

SAPSCRIPT

O que SAPScript
O SAPScript a ferramenta do SAP para criao de formulrios mais elaborados. A opo pela utilizao
desta ferramenta se d pela necessidade de alguns recursos grficos que no podem ser obtidos atravs
de cdigo de ABAP comum. Com o SAPScript possvel criar um formulrio com logotipo, letras
formatadas de vrios tamanhos, criao de grades, cdigo de barras, etc.
Apesar de ser uma ferramenta poderosa na gerao de formulrios, o SAPScript ainda apresenta uma
srie de limitaes, o seu verificador de erros e debug no possuem as mesmas caractersticas do editor
ABAP. Caso, seja digitado um comando com grafia errada ou sem sentido lgico dentro de um formulrio,
no ser detectado pelo mesmo e poder no ser executado, passando as vezes despercebido pelo
programador.
Para que o SAPScript funcione necessrio que um trabalho em conjunto com um programa ABAP que
dever conter algumas funes de chamada e controle do Script.
O esquema abaixo ilustra o processo de preenchimento de dados do SAPScript.

Page 2 of 86

Estrutura de Chamada e Controle do SAPScript

CALL FUNCTION OPEN_FORM

CALL FUNCTION START_FORM

CALL FUNCTION WRITE_FORM

CALL FUNCTION END_FORM

CALL FUNCTION CLOSE_FORM

Esta seqncia de funes dever ser inserida no programa ABAP, o qual iniciar o SAPScript.

Page 3 of 86

Descrio das Funes


OPEN FORM - Serve para abrir um formulrio de impresso.
Dois parmetros muito utilizados so o dialog e o options. No primeiro, indica se a caixa de dilogo para
configurao da impresso deve ou no ser apresentado.
Caso este deva ser omitido, os dados para impresso sero tomados de uma estrutura a ser colocada no
segundo parmetro. Nessa estrutura so passados os dados, tais como, nmero de cpias e nome da
impressora. A opo de no exibio da caixa de dilogo esta diretamente ligada a utilizao do segundo
parmetro. Se a exibio estiver desabilitada (DIALOG = ), mas a estrutura ITCPO no estiver
preenchida, a caixa de dilogo ser exibida.
Alguns dos campos mais importantes e que normalmente so utilizados na estrutura ITCPO so:

TDCOPIES
TDDEST
TDPREVIEW
TDIMMED

(Nmero de Cpias)
(Dispositivo de Sada)
(Print Preview)
(Sada Imediata)

call function 'OPEN_FORM'


exporting
*
APPLICATION
*
ARCHIVE_INDEX
*
ARCHIVE_PARAMS
DEVICE
*
DIALOG
FORM
LANGUAGE
*
OPTIONS
* importing
*
language
*
new_archive_params
*
result
exceptions
canceled
device
form
options
unclosed
others

= 'TX'
=''
=''
= 'PRINTER' ou 'SCREEN'
= 'X' ou '' (Tela de caractersticas de impresso)
= 'Z_SCRIPT' (Nome do Formulrio)
= 'P' (Idioma do Formulrio)
= ITCPO (Estrutura com todas as caractersticas)
=
=
=
=1
=2
=3
=4
=5
= 6.

START FORM - Serve para iniciar um formulrio de impresso.


Porque deve ser iniciado se a abertura de um formulrio automaticamente gera a inicializao do mesmo?
Se estivermos gerando relatrios para uma empresa de computadores onde, para cada novo computador
vendido, deve ser gerado um novo relatrio, e esse relatrio deve conter todos os componentes presentes
no computador em questo.
Page 4 of 86

A abertura de um formulrio inicia o primeiro, mas para cada novo computador vendido um novo
formulrio deve ser gerado.
Para isso utilizamos o comando de inicializao. Este comando permite que, numa mesma impresso,
sejam gerados vrios formulrios diferentes, como se estivssemos abrindo um novo para cada
computador vendido.
Este comando no obrigatrio e pode no ser utilizado caso no haja necessidade da quebra e criao
de vrios formulrios para uma s seleo de dados.
call function 'START_FORM'
exporting
*
ARCHIVE_INDEX
FORM
LANGUAGE
*
STARTPAGE
*
PROGRAM
* importing
*
language
exceptions
form
format
unended
unopened
unused
others

=''
=''
=''
=''
=''
=
=1
=2
=3
=4
=5
= 6.

A funo muito similar funo OPEN_FORM, e novamente os parmetros mais importantes so o


nome (FORM) e o idioma (LANGUAGE) do formulrio.
Para que se possa utilizar um comando START_FORM obrigatrio que um comando de OPEN_FORM
tenha sido executado. Caso isso no seja feito um erro de sintaxe ir aparecer.
WRITE FORM - Serve para a impresso de sada de um elemento de texto de uma janela do formulrio.
Um ponto importante que deve ser observado que no possvel utilizar tabelas internas e variveis do
programa para a impresso dos dados no SAPScript. Portanto, se algum dado que deva ser impresso
estiver numa tabela interna ou varivel, este deve ser copiado para uma estrutura para que possa ser
enviado ao SAPScript.
A impresso dos dados nas janelas na maioria das vezes feita simultaneamente com a seleo dos
dados, ou seja, a medida que os dados so selecionados, so enviados imediatamente para o formulrio.

Page 5 of 86

O comando para impresso dos dados a seguinte funo:


call function 'WRITE_FORM'
exporting
ELEMENT
*
FUNCTION
*
TYPE
WINDOW
* importing
*
pending_lines
exceptions
element
function
type
unopened
unstarted
window
others

=''
= 'SET'
= 'BODY'
= 'MAIN'
=
=1
=2
=3
=4
=5
=6
= 7.

Dois parmetros so os mais importantes:

Element Determina qual Data Element ser utilizado dentro do SAPScript.


Window Janela na qual os dados devem ser impressos.

Neste ponto fica evidente a diferenciao entre os tipos de janela MAIN e demais janelas.
Para as janelas do tipo MAIN, cada comando de escrita (write_form) significa uma nova linha no formulrio
e o valor a ser impresso o valor que o campo armazena no momento do comando de impresso.
Por exemplo, digamos que o campo MARA-MATNR tenha o valor 1234 e que um comando de impresso
seja dado para a janela MAIN que ir imprimir este campo. Logo em seguida, uma nova seleo da tabela
MARA feita e o campo MATNR agora vale 5678. Se uma nova impresso na janela MAIN for executada
o resultado ser o seguinte:
1234
5678
J as janelas que no forem do tipo MAIN imprimem os dados uma nica vez, no final da impresso do
formulrio ou na quebra de pgina, com os valores armazenados nos campos no momento do
encerramento ou no momento da quebra, e no no momento da escrita (write_form), ou seja, se no
exemplo anterior fosse utilizada uma janela no-main, o resultado final seria somente 5678.
Na realidade, a utilizao de um comando WRITE_FORM numa janela no-main utilizada para a
escolha de qual elemento de texto ser utilizado para a impresso dos dados.
Exemplo:
Uma janela HEADER no-main contm dois elementos de texto chamados FRASE1 e FRASE2 da
seguinte forma:
/E FRASE1
Page 6 of 86

&MARA-MATNR&
/E FRASE2
&MARA-MATNR&

Teste de Frase 1
Teste de Frase 2

Se um comando WRITE_FORM for executado para a janela HEADER utilizando o elemento de texto
FRASE1,
call function 'WRITE_FORM'
exporting
ELEMENT
= 'FRASE1'
*
FUNCTION
= 'SET'
*
TYPE
= 'BODY'
WINDOW
= 'HEADER'
estar sendo indicado ao programa que, ao se encerrar o formulrio, deve ser impresso o elemento de
texto FRASE1 para a janela HEADER (somente um elemento de texto utilizado para cada janela nomain).
No caso do exemplo, se o campo MATNR for igual a 1234 no encerramento do formulrio, seria impressa
a seguinte frase:
1234
Teste de Frase 1
O elemento de texto a ser impresso ser sempre o ltimo a ser selecionado antes do final ou da quebra de
pgina.
Se nenhum for selecionado, ao encerrar o formulrio ou mudar de pgina sero impressos os dados que
no pertenam a nenhum elemento de texto. Portanto no caso de um campo que deva ser impresso
sempre em todas as pginas, como numero de pgina por exemplo, basta coloc-lo fora de qualquer
elemento de texto e no selecionar nenhum elemento de texto para a janela que, automaticamente, este
dado ser impresso em todas as pginas.
END FORM - Serve para finalizar um formulrio.
call function 'END_FORM'
importing
RESULT
=''
exceptions
unopened
=1
others
= 2.

Page 7 of 86

CLOSE FORM - Serve para fechar um formulrio.


call function 'CLOSE_FORM'
importing
RESULT
=''
Tables
*
OTFDATA
=
exceptions
unopened
=1
others
= 2.

Page 8 of 86

O Formulrio
Trabalhar com um formulrio SAPScript no complicado, desde que se entenda seus componentes da
maneira correta. Um formulrio comeado de maneira errada pode ser um grande problema, pois para ser
corrigido pode ser necessrio o mesmo ou mais tempo que a criao de um novo.
Para isto, aconselhvel que se saiba qual o tipo de impressora utilizada, se a impressora for do tipo
matricial aconselhvel que as medidas utilizadas na construo do formulrio seja LN(Linha) e CH
(Caracteres); se a impressora for laser, jato de tinta, trmica ou qualquer tipo de impressora grfica devese utilizar CM (Centmetro), MM(Milmetro).
importante salientar que se estiver sendo utilizado uma impressora matricial, a ordem de impresso
muito importante para a correta edio do formulrio, pois os comandos de posio funcionam, mas devese lembrar que a cabea de impresso no volta, ou seja, a leitura do formulrio feita linha linha, j as
impressoras grficas, isso no ocorre, pois a leitura feita pgina pgina.
O SAP possui vrios formulrios standards includos, estes formulrios esto localizados no mandante 000
e atravs deles possvel fazer uma cpia e alter-los. Os formulrios standards funcionam como
programas standards, e os formulrios a ser criados devem iniciar pelas letras Z ou Y.

Page 9 of 86

Copiando um Formulrio
Para acessar o editor do SAPScript utilize o caminho Ferramentas > Processamento texto > Formulrio ou
digitar a Transao SE71:

SE7
1

Page 10 of 86

Colocar o nome do formulrio e o idioma que desejar. Se o formulrio for standard deve-se utilizar o
idioma, o qual foi criado. Primeiramente, devemos fazer uma cpia do mandante 000 para o que se est
trabalhando. Dependendo da verso do SAP, o idioma possuir um dos caracteres abaixo:
Ingls
Alemo
Portugus

: E ou EN
: D ou DE
: P ou PT

Seqncia de cpia:
Passo 1
Mandante 000
Idioma: DE / EN

Page 11 of 86

Passo 2
Mandante de
desenvolvimento
Idioma DE/ EN

Mandante de
desenvolvimento
Idioma PT

PASSO 1
1 Criar um formulrio ZWA_LIXO

2 - Digitar o Nome do Formulrio original (CO_ORDER).


3 - Digitar o Mandante de origem (000).
4 - Digitar o Formulrio de destino (temporrio ZWA_LIXO).
5 - Clicar no boto <Executar> F8.

Page 12 of 86

PASSO 2
6 - Criar outro formulrio ZWA_TST1_01 com o idioma P ou PT.
7 - Clicar em Formulrio - Aceitar.

8
9
10

- Digitar o nome do formulrio temporrio.


- Digitar o Idiomas do formulrio temporrio.
- Salvar.

11 Aps a realizao dos passos anteriores, o formulrio ZWA_LIXO pode ser deletado, pois apenas
um meio de mudana de idioma.
Page 13 of 86

12 - Selecionar o caminho: Formulrio Eliminar.


Obs. : Na criao de um formulrio novo (indito), ser feito apenas na criao no idioma PT.

Page 14 of 86

Partes de um formulrio

JANELA DE PGINAS

PGINAS

JANELAS E ELEMENTOS DE TEXTO

<H>
</>

Page 15 of 86

CARACTERES DE COMANDO

PARGRAFOS

1. Header - informaes gerais do formulrio, como formato e orientao da pgina que ser utilizado,
pargrafo e fontes default do mesmo (quando no for especificado nenhum dentro do form). Nesse
tpico aparece tambm o ttulo do formulrio, a classe de desenvolvimento do mesmo e os idiomas do
formulrio original e o corrente.

Page 16 of 86

2. Pargrafos - so elementos que podem ser criados pelo usurio e apresentam informaes dos textos
de uma determinada janela. Nesses pargrafos so determinados tipos de fontes, tabulaes, negrito,
sublinhado, entre outros.

Para criar um pargrafo novo, utilizar o caminho do menu Processar Create Element, lembrando que,
em um formulrio standard, somente pode-se alterar o layout no idioma original.

Page 17 of 86

Page 18 of 86

3. Caracter de Seleo - so informaes semelhantes s do pargrafo, referente a formatao de


textos, no entanto, podem ser aplicados a trechos de textos e no necessariamente a linhas inteiras do
formulrio.

On Ativa item
Off Desativa Item
Manter Utiliza a
formatao do pargrafo

Este atributo define o formato de caracter,


uma chave de pesquisa associada ao
Caracter String quando o usurio utiliza este
formato de caracter.
Exemplos: hipertextos, links de elementos de
dados e glossrios.

Page 19 of 86

Protegido No permite a quebra de linha,


mas apresenta todo o bloco de texto na
prxima linha.
Oculto No apresentado, somente visvel
no editor de texto
Superescrito / Subscrito apresentado
meia linha acima ou abaixo

Sua sintaxe de utilizao assemelha-se a programao HTML, conforme exemplo a seguir:


Imagine um Caracter string definido com o nome B, cuja formatao de texto seja o incremento do modelo
negrito a uma determinada fonte. Sua utilizao seria:
<B>Texto</>
E seu resultado no formulrio seria:
Texto

Page 20 of 86

4. Janelas - as janelas so a base da construo do layout. As janelas podem ser criadas sem limites e
tem por finalidade dividir especialmente as regies de um formulrio para operaes independentes.

Essas janelas podem ser criadas basicamente em 3 tipos distintos:


MAIN - janelas do tipo MAIN so as mais importantes do relatrio (janela pela qual o formulrio se guia).
Somente permitido um tipo de janela MAIN por formulrio, e a nica janela obrigatria em uma pgina.
Pode-se criar mais de uma janela MAIN por pgina, no entanto essas janelas, na verdade, s so
divididas fisicamente, uma vez que seus elementos e processamento obedecem aos mesmos comandos,
e no podem ter nomes diferentes. A passagem de uma janela MAIN para outra pode ser automtica ou
forada pelo usurio. Quando o espao fsico de uma janela MAIN est tomado e necessita-se de mais
dados na mesma, o formulrio automaticamente passa prxima janela MAIN do formulrio. atravs
desse princpio que uma relatrio ganha nmero de pginas automaticamente quando da execuo de um
relatrio desse tipo, conforme os dados so preenchidos. Para forar a passagem de uma janela MAIN
para outra, o usurio poder utilizar o comando:
/: NEXT-WINDOW

Page 21 of 86

A lgica de seqncia das janelas MAIN de um formulrio segue sempre a um critrio. Dentro de
uma pgina a navegao de uma MAIN para outra segue de acordo com os ndices dessas janelas dentro
do formulrio, e quando uma nova pgina gerada, a contagem segue a mesma disposio,
continuamente.
O exemplo abaixo, figura a situao de uma diagramao conforme uma pgina de jornal. A
sequncia de preenchimento dos dados na pgina atravs do povoamento normal segue:

VAR - essa janela apresenta uma caracterstica prpria, que necessita de verificao constante do
formulrio com seus dados, que podem variar durante a execuo do relatrio. Esse tipo de janela deve
ser utilizado quando se pretende trabalhar com textos que variam, como exemplos de mensagens que
podem mudar durante o decorrer da execuo do formulrio.
CONST - so janelas que no merecem muita preocupao de processamento por parte do
formulrio, uma vez que seus dados devem ser mantidos os mesmos desde seu primeiro preenchimento
at o fechamento do formulrio. Geralmente nesse tipo de janela so includo objetos e textos que
permanecem os mesmos durante todo o relatrio, independente do nmero de pginas, como logos e
rodaps.
Na atual verso do SAP, essa distino de ateno de processamento do formulrio s terica,
mas deve ser levada em conta, pois deve ser tratada por verses mais novas do sistema.
5.

Pginas - as pginas so os elementos responsveis pelo agrupamento das janelas


durante certos momentos do relatrio. Geralmente s so definidos duas pginas,
que acabam em processo reflexivo, por formulrio.

Page 22 of 86

Geralmente uma pgina FIRST, que apresenta um layout de apresentao dos


documentos e outra NEXT, que contm o layouts das outras pginas subsequentes do
documento. Isso acontece, por exemplo, quando se que obter um relatrio com o
logotipo da empresa na primeira pgina, mas as seguintes, devem ocupar a folha
inteira com os dados do relatrio at o final. Cada uma das pginas criadas devem
conter um nome (FIRST, NEXT,...) e pode conter um pargrafo default e um link para a
prxima pgina. Esse link serve para formar a seqncia em que as pginas do
relatrio devem ser geradas. Seguindo o exemplo anterior, deveramos informar:
FIRST -> NEXT
NEXT -> NEXT
Aps a primeira pgina, seria chamada a segunda, com um layout diferente (sem o
logotipo). A partir dessa, todas apresentariam o mesmo tipo de layout (com dados do
relatrio aproveitando a pgina inteira).

Page 23 of 86

6.

Page Windows

As page windows podem ser entendidas pelo nosso conceito de layout


propriamente dito. So os elementos responsveis pelo aparecimento ou no das
janelas dentro de uma determinada pgina, bem como seus posicionamentos em
relao folha a ser impressa. tambm atravs das page windows que o
programador ter acesso aos Text Elements de cada uma dessas janelas,
responsveis pelo tratamento dos dados em tempo de execuo do formulrio.

Page 24 of 86

7.

Text Elements

Corresponde lgica de processamento e comportamento de uma janela


durante a execuo do formulrio. responsvel pelos valores que sero impressos
no mesmo, bem como seu posicionamento dentro da janela e seu tipo de caracter.
De dentro de uma Page Window, possvel selecionarmos qualquer uma das
janelas existentes em uma determinada pgina, simplesmente clicando o mouse
sobre o seu nome e apertando o boto selecionar, ou mesmo dando um doubleclick diretamente sobre o nome da janela desejada. Uma vez selecionada a janela, se
apertarmos o boto Text Element, uma tela semelhante do editor de ABAP/4 do SAP
ir se abrir, com as linhas onde a lgica da janela ser introduzida.

Nesses elementos do SAPscript, o programador poder utilizar alguns comandos


semelhantes ao do ABAP/4, com a indicao de que se trata de uma linha de
comando para o formulrio (/:, esquerda da linha). Abaixo, alguns dos comandos
que podem ser utilizados de dentro dos elementos de texto de uma janela em
SAPscript:

Page 25 of 86

IF..ELSE..ENDIF
CASE..WHEN
DEFINE
PERFORM..USING..CHANGING
BOX..FRAME

declarao de variveis dentro da janela, com


atribuio de valor
(ver documentao prpria nesse material)

INCLUDE
O comando include dentro de uma janela de um formulrio SAPscript serve para
inserir um objeto no mesmo. Esse objeto pode ser desde um logo, at um texto com
vrias linhas. A sintaxe bastante simples, e somente deve-se ter um cuidado
bastante especial com o idioma que se trata esse objeto. Independentemente do
idioma do formulrio, deve-se sempre utilizar o idioma em que o objeto foi
criado.
/: INCLUDE name OBJECT object ID id LANGUAGE spras

Page 26 of 86

Manuteno de formulrios
A manuteno dos formulrios feita pela mesma transao citada
anteriormente (SE71). Nessa tela o nome do formulrio e o idioma do mesmo so
parmetros obrigatrios. Nessa tela so feitas praticamente todas as operaes com
os formulrios do SAP:

1. Criar um formulrio novo


Um formulrio pode ser criado inteiramente a partir dessa transao.
Preenchendo um nome do formulrio, que comece por Z ou Y, no diretamente
seguidos por caracteres especiais, como o _, o usurio poder apertar o boto Criar
ou ir ao menu Layout -> Criar. O idioma preenchido ser entendido como idioma
original do formulrio. A partir da, outros formulrios podero ser traduzidos a partir
desse original, nas mais diferentes lnguas, porm todos mantero as caractersticas
de layout do formulrio original. Ao mesmo tempo que uma alterao desse original,
implica na imediata alterao de todos os seus filhos.

Page 27 of 86

2.

Copiar formulrio em outro idioma (Traduo)

Uma vez criado um formulrio (conforme descrito acima), poder ser copiado
sobre ele, as informaes de um outro formulrio do mesmo client, atravs do menu
Layout -> Copy from, j de dentro da primeira tela do formulrio criado (Header).

Ateno que essa cpia fiel ao formulrio copiado, e no poupa nenhuma


informao que j existisse no formulrio que recebe a cpia.
3.

Copiar um formulrio de outro cliente

Um formulrio pode tambm ser copiado de um outro client na mesma


instncia, atravs do menu Utilitrios -> Copy from client, da primeira janela da
transao SE71, fora de qualquer formulrio especfico.

Page 28 of 86

Essa opo ir abrir uma outra janela que recebe basicamente 3 informaes:

Nome do formulrio a ser copiado


Cliente em que se encontra o original
Nome da cpia no client corrente

Page 29 of 86

Os outros dois campos de check box geralmente no so alterados pois tratam


de informaes como cpia do formulrio somente no idioma original e exibio ou
no de um log de erros ao final da execuo da cpia.
Uma vez entrados os parmetros, deve-se apertar o boto executar e obter
uma cpia com sucesso em todos os idiomas existentes do formulrio.
O cliente de origem do formulrio, quando for cpia de forms standards, deve
ser mantido 000, uma vez que o repositrio dos formulrios originais do SAP
encontram-se todos no 000, e podem ser lidos de todos os outros.

Page 30 of 86

Alteraes de Programas/Layouts Standards


Na maioria das vezes o trabalho a ser realizado com Sapscripts alterar os
originais do SAP, pois estes raramente atentem s exigncias do cliente.
O procedimento para alterao depende muito das caractersticas do programa
de povoamento standard e das caractersticas das funes do SAP que iro utilizar tal
sapscript. No entanto, alguns procedimentos so padro, e outros so utilizados na
grande maioria das alteraes.
1) Fazer uma cpia do programa standard e dos includes (se existirem) que
necessitam de alterao
2) Fazer uma cpia do layoutset standard
3) NO DELETAR janelas, elementos de textos, etc. na cpia do layoutset. Mesmo
que alguns (ou todos) os dados e janelas do standard no sejam utilizados, o
programa de povoamento continuar tentando executar escritas em janelas e
elementos de dados especficos, j que uma cpia do standard. Os novos dados
e janelas devem ser apenas adicionados!
4) Encontrar as posies ideais para alteraes no programa de povoamento. Quando
os novos dados devem ser impressos na MAIN, procurar por comandos
WRITE_FORM dentro do programa e colocar as alteraes o mais prximo possvel
do WRITE_FORM correto. Se devem ser impressos em outras janelas, procurar pelo
comando CLOSE_FORM/END_FORM e colocar as alteraes imediatamente antes
destes comandos (sempre que possvel)
5) Colocar todas as alteraes juntas sempre que possvel, identificando
visivelmente, atravs de comentrios, o bloco de alteraes. Isso facilita a
manuteno e visualizao do cdigo, alm de facilitar a busca por possveis erros,
visto que, na sua grande maioria, os programas standard da SAP so bastante
complicados.
*----------------------------------------------------------------------*
*
write texts to TEXTS window
*
*----------------------------------------------------------------------*
***************************** ALTERAO ********************************
*----------------------------------------------------------------------*
*
Elimina mensagem ONU.... caso ela exista
*----------------------------------------------------------------------*
read table wk_header_msg with key message(3) = 'ONU'.
v_msg_onu = wk_header_msg-seqnum.
delete wk_header_msg
where message(3) = 'ONU'.
delete wk_refer_msg
where seqnum = v_msg_onu.
*Mensagem p/ materiais no perigosos
ybrvscript-mensg01 = text-001.
************************************************************************
istart = j_1bb2-totlih.
if istart > 10.
"maximum number of fields in J_1BPRNFTX

Page 31 of 86

Exemplos

Sapscript

-------------------------------------------------------------------------------Formulrio
YBRV_CREDIT_MEMO
-------------------------------------------------------------------------------Mandante
Idioma
Original lang.
Relevant for transl.
Status

650
P
P
Yes
Active

Development class

YBR0

Created by
Date
Time
Release

SAO0105A
29.07.1998
09:02:34
30F

Significado

Nota de Crdito

Idioma Original de Criao

General Multi-purpose Development class


Changed by
Date
Time
Release

SAO0105A
01.09.1998
19:52:15
30F

Standard attributes
First page
Default paragr.
Tab stop
Page format
Orientation
Lines/inch
Characters/inch

FIRST
MA
1,00 CM
DINA4
Landscape
6,00
12,00

Primeira pgina a ser utilizada


Pargrafo default para os textos

Font attributes
Font family
Font size
Bold
Italic
Underlined

COURIER
10,0 Point
No
No
No

Fonte padro do formulrio


Tamanho da fonte padro

Tipo de Papel
Espaamento entre as linhas
Espaamento entre os caracteres

-------------------------------------------------------------------------------Characters
Attributes
Definies dos Characters Strings
-------------------------------------------------------------------------------H1

H2

Page 32 of 86

Header 1
Standard attributes
Marker
Font attributes
Font family
Font size
Bold
Header 2
Standard attributes

No
COURIER
8,0 Point
Yes

Marker
Font attributes
Font family
Font size
Bold
H3

Header 3
Standard attributes
Marker
Font attributes
Font family
Font size
Bold

No
COURIER
10,0 Point
Yes

No
COURIER
6,0 Point
Yes

-------------------------------------------------------------------------------Paragraphs
Attributes
Definies dos tipos de pargrafos
-------------------------------------------------------------------------------H1

Paragrafo 1 p/ o header
Standard attributes
Line spacing
1,00 LN
Alignment
Left-aligned
Tabs
16,00 CH
Left-aligned
66,00 CH
Left-aligned
80,00 CH
Left-aligned

H2

Paragrafo 2 p/ header
Standard attributes
Line spacing
1,00 LN
Alignment
Left-aligned
Tabs
56,00 CH
Left-aligned
100,00 CH
Left-aligned
117,00 CH
Left-aligned

MA

Paragrafo p/ Main
Standard attributes
Line spacing
Alignment

Tabulaes para o pargrafo

1,00 LN
Left-aligned

-------------------------------------------------------------------------------Windows
Attributes
Janelas definidas para o formulrio
-------------------------------------------------------------------------------HEADER

Cabealho da Nota
Window type

CONST

HEAD_PRI

Header p/ Main
Window type

CONST

MAIN

Main window
Window type

MAIN

Textos da Nota
Window type

CONST

TEXT

Page 33 of 86

TOTAL

Totais da Nota
Window type

CONST

-------------------------------------------------------------------------------Pages
Attributes
Paginas do formulrio com suas respectivas janelas
-------------------------------------------------------------------------------FIRST

Primeira Pgina
Page counter
Mode
Numbering type
Page window
MAIN

HEADER

TEXT

TOTAL

INC
Arabic numerals
Left margin
Upper margin
Window width
Window height
Left margin
Upper margin
Window width
Window height
Left margin
Upper margin
Window width
Window height
Left margin
Upper margin
Window width
Window height

2,00
9,00
132,00
27,00
2,00
1,00
132,00
8,00
2,00
36,00
132,00
3,00
2,00
39,00
132,00
7,00

CH
LN
CH
LN
CH
LN
CH
LN
CH
LN
CH
LN
CH
LN
CH
LN

-------------------------------------------------------------------------------Text elements for following windows:


-------------------------------------------------------------------------------HEADER

Definio do pargrafo para a linha

/: BOX XPOS 0 CH YPOS 0 CH WIDTH 132 CH HEIGHT 8 LN FRAME 10 TW


/: BOX XPOS 0 CH YPOS 7 LN WIDTH 132 CH HEIGHT 1 LN FRAME 10 TW
/: IF &YBRVS_NOTA-REPRINT& EQ 'S'
H2
REIMPRESSO,,<H2>NOTA DE CRDITO</>,,&ybrvs_nota-data&,,N
&ybrvs_nota-numero&
Desativa Character String
/: ELSE
Ativa Character String
H2 ,,<H2>NOTA DE CRDITO</>,,&ybrvs_nota-data&,,N &ybrvs_nota-numero&
/: ENDIF
H1 ,,,,CLARIANT S/A
Salta p/ prx. tabulao
H1 <H1>Razo Social:</> &ybrvs_nota-razao(50)&
<H1>Cliente:
</>&ybrvs_nota-cliente(20)&
<H1>Filial: </>&ybrvs_nota-filial&
H1 <H1>Endereo
:</> &ybrvs_nota-endereco(26)&
<H1>Bairro :</>
&ybrvs_nota-bairro&
H1 <H1>C.E.P.
:</> &ybrvs_nota-cep(11)& <H1>Cidade:
Texto Fixo
</>&ybrvs_nota-cidade(19)& <H1>Estado: </>&ybrvs_nota-estado(4)&
<H3>PREZADOS SENHORES: PARTICIPAMOS A v.Sas. QUE FIZEMOS EM SUA CONTA
OS LANAMENTOS ABAIXO:</>
H1 <H1>Histrico
:</> &ybrvs_nota-tipo&
H1 <H1>Valor por Extenso: </>&ybrvs_nota-tot_extens(100)&
<H1>Centavos:</> &spell-decimal(2)&

Page 34 of 86

H1 <H1>Depsito:</> &ybrvs_nota-filial(6)& <H1>Setor:</>


&ybrvs_nota-setor(4)& <H1>Vendedor:</> &ybrvs_nota-vendedor(8)&
<H1>Zona:</> &ybrvs_nota-zona(6)& <H1>Doc. Entr</>
&ybrvs_nota-doc_entr(19)& <H1>N/N.F.F.:</> &ybrvs_nota-doc_entr(11)&
<H1>de </> &ybrvs_nota-data&
Campo de tabela/estrutura
HEAD_PRI

Indicao de linha de comando

/: BOX WIDTH 132 CH HEIGHT 1 LN FRAME 10 TW


<H1> Cdigo Produto
|EMB |UN.|
Quantidade

MAIN
/E
/:
/:
/:
/:
/:
/:
/:
/:
/:
/:
/:
MA

|</>

Elemento de dados

DADOS
BOX XPOS 0 CH YPOS 0 CH WIDTH 132 CH HEIGHT 27 LN FRAME 10 TW
BOX XPOS 15 CH YPOS 0 CH WIDTH 117 CH HEIGHT 27 LN FRAME 10 TW
BOX XPOS 18 CH YPOS 0 CH WIDTH 114 CH HEIGHT 27 LN FRAME 10 TW
BOX XPOS 21 CH YPOS 0 CH WIDTH 111 CH HEIGHT 27 LN FRAME 10 TW
BOX XPOS 36 CH YPOS 0 CH WIDTH 96 CH HEIGHT 27 LN FRAME 10 TW
BOX XPOS 67 CH YPOS 0 CH WIDTH 65 CH HEIGHT 27 LN FRAME 10 TW
BOX XPOS 69 CH YPOS 0 CH WIDTH 63 CH HEIGHT 27 LN FRAME 10 TW
BOX XPOS 83 CH YPOS 0 CH WIDTH 49 CH HEIGHT 27 LN FRAME 10 TW
BOX XPOS 97 CH YPOS 0 CH WIDTH 35 CH HEIGHT 27 LN FRAME 10 TW
BOX XPOS 111 CH YPOS 0 CH WIDTH 21 CH HEIGHT 27 LN FRAME 10 TW
BOX XPOS 116 CH YPOS 0 CH WIDTH 16 CH HEIGHT 27 LN FRAME 10 TW
&ybrvs_nota-produto(15)&
&ybrvs_nota-unidade(3)&&ybrvs_nota-quant(15)&&ybrvs_nota-nome(31)&
&ybrvs_nota-preco_un(14)&&ybrvs_nota-val_merc(14)&
&ybrvs_nota-val_desc(12)&&ybrvs_nota-porc_ipi(5)&
&ybrvs_nota-val_ipi(15)&

/E HEADER
* <H1> Cdigo Produto
EMB UN.
Quantidade
Produto
RN Preo Unitrio
Valor Mercadoria
Desconto
%IPI
Valor IPI</>
* &uline(132)&
Pargrafo standard
TEXT

Nome do
Valor

Linha de Comentrios

/: BOX WIDTH 132 CH HEIGHT 3 LN FRAME 10 TW


/* Exibe tipo no campo texto
* <H1>Textos:</>
*
&ybrvs_nota-tipo&

TOTAL
/:
/:
/:
/:

BOX
BOX
BOX
BOX

XPOS
XPOS
XPOS
XPOS

Page 35 of 86

0
15
20
34

CH
CH
CH
CH

YPOS
YPOS
YPOS
YPOS

0
0
0
0

CH
CH
CH
CH

WIDTH
WIDTH
WIDTH
WIDTH

15
5
14
14

CH
CH
CH
CH

HEIGHT
HEIGHT
HEIGHT
HEIGHT

3
3
3
3

LN
LN
LN
LN

FRAME
FRAME
FRAME
FRAME

10
10
10
10

TW
TW
TW
TW

/:
/:
/:
/:
/:
/:
/:
*

BOX XPOS 48 CH YPOS 0 CH WIDTH 14 CH HEIGHT 3 LN FRAME 10 TW


BOX XPOS 62 CH YPOS 0 CH WIDTH 14 CH HEIGHT 3 LN FRAME 10 TW
BOX XPOS 76 CH YPOS 0 CH WIDTH 14 CH HEIGHT 3 LN FRAME 10 TW
BOX XPOS 90 CH YPOS 0 CH WIDTH 14 CH HEIGHT 3 LN FRAME 10 TW
BOX XPOS 104 CH YPOS 0 CH WIDTH 14 CH HEIGHT 3 LN FRAME 10 TW
BOX XPOS 118 CH YPOS 0 CH WIDTH 14 CH HEIGHT 3 LN FRAME 10 TW
BOX XPOS 0 CH YPOS 0 CH WIDTH 132 CH HEIGHT 7 LN FRAME 10 TW
<H1> Val. Trib. ICMS
%ICMS
Valor ICMS
Valor Mercadoria Valor
Descontos
Valor IPI
Val. Outros Abat. Valor Fretes
Val.
Seguros
Val. Total Nota</>
MA
&ybrvs_nota-porc_icms(5)&&ybrvs_nota-tot_icms(14)&
&ybrvs_nota-tot_merc(14)&&ybrvs_nota-tot_desc(14)&
&ybrvs_nota-tot_ipi+1(13)&
&ybrvs_nota-tot_seg(14)&&ybrvs_nota-total(14)&
MA
____________________________
___________________________
MA
Assinatura
Assinatura

Page 36 of 86

Digitar o cdigo do Programa (ZWA10T09)


Clicar no boto Criar
Complementar as informaes necessrias, Gravar e Voltar
Clicar no boto Modificar

Page 37 of 86

***************************************
*** SAPSCRIPT
***
***************************************
REPORT ZWA10T09.
*** DEFINIO DE TABELAS
TABLES: T001.
*** DEFINIO DE
DATA: WBUKRS LIKE
WBUTXT LIKE
WADRNR LIKE
WORT01 LIKE
WLAND1 LIKE
WCGC
LIKE

campos
T001-BUKRS,
T001-BUTXT,
T001-ADRNR,
T001-ORT01,
T001-LAND1,
J_1BWFIELD-CGC_NUMBER.

*** DEFINIO DE PARAMETROS


SELECTION-SCREEN BEGIN OF BLOCK PARAM WITH FRAME TITLE TEXT-001.
PARAMETERS: P_EMPR LIKE T001-BUKRS.
SELECTION-SCREEN END OF BLOCK PARAM.
*** INICIO DO PROGRAMA
SELECT BUKRS BUTXT ADRNR ORT01 LAND1
INTO (WBUKRS,WBUTXT,WADRNR,WORT01,WLAND1)
FROM T001
WHERE BUKRS = P_EMPR.
ENDSELECT.
*** OBTEM E FORMATA O CGC
CALL FUNCTION 'J_1BREAD_CGC_COMPANY'
EXPORTING
BUKRS
= WBUKRS
IMPORTING
CGC_NUMBER = WCGC
EXCEPTIONS
OTHERS
= 1.
IF SY-SUBRC NE 0.
MESSAGE ID 'ZWA' TYPE 'E' NUMBER 041.
ENDIF.

Page 38 of 86

*** MONTA O FORMULARIO


CALL FUNCTION 'OPEN_FORM'
EXPORTING
DEVICE
= 'PRINTER'
DIALOG
= 'X'
EXCEPTIONS
CANCELED
= 1
DEVICE
= 2
FORM
= 3
OPTIONS
= 4
UNCLOSED
= 5
OTHERS
= 6.
IF SY-SUBRC NE 0.
MESSAGE ID 'ZWA' TYPE 'E' NUMBER 033.
ENDIF.
CALL FUNCTION 'START_FORM'
EXPORTING
FORM
= 'ZWA01T09'
EXCEPTIONS
FORM
= 1
FORMAT
= 2
UNENDED
= 3
UNOPENED
= 4
UNUSED
= 5
OTHERS
= 6.
IF SY-SUBRC NE 0.
MESSAGE ID 'ZWA' TYPE 'E' NUMBER 034.
ENDIF.
CALL FUNCTION 'WRITE_FORM'
EXPORTING
WINDOW
= 'CABEC'
ELEMENT
= 'TEXTCB'
EXCEPTIONS
ELEMENT
= 1
FUNCTION
= 2
TYPE
= 3
UNOPENED
= 4
UNSTARTED
= 5
WINDOW
= 6
OTHERS
= 7.
IF SY-SUBRC NE 0.
MESSAGE ID 'ZWA' TYPE 'E' NUMBER 038.
ENDIF.

Page 39 of 86

CALL FUNCTION 'SET_TEXTSYMBOL'


EXPORTING
NAME
= '&cgc_number&'
VALUE
= WCGC
REPLACE
= 'X'
EXCEPTIONS
OTHERS
= 1.
CALL FUNCTION 'WRITE_FORM'
EXPORTING
WINDOW
= 'MAIN'
ELEMENT
= 'TEXTMA'
EXCEPTIONS
ELEMENT
= 1
FUNCTION
= 2
TYPE
= 3
UNOPENED
= 4
UNSTARTED
= 5
WINDOW
= 6
OTHERS
= 7.
IF SY-SUBRC NE 0.
MESSAGE ID 'ZWA' TYPE 'E' NUMBER 039.
ENDIF.
CALL FUNCTION 'WRITE_FORM'
EXPORTING
WINDOW
= 'RODAPE'
ELEMENT
= 'TEXTRO'
EXCEPTIONS
ELEMENT
= 1
FUNCTION
= 2
TYPE
= 3
UNOPENED
= 4
UNSTARTED
= 5
WINDOW
= 6
OTHERS
= 7.
IF SY-SUBRC NE 0.
MESSAGE ID 'ZWA' TYPE 'E' NUMBER 040.
ENDIF.

Page 40 of 86

CALL FUNCTION 'END_FORM'


EXCEPTIONS
UNOPENED = 1
OTHERS
= 2.
IF SY-SUBRC NE 0.
MESSAGE ID 'ZWA' TYPE 'E' NUMBER 036.
ENDIF.
CALL FUNCTION 'CLOSE_FORM'
EXCEPTIONS
UNOPENED = 1
OTHERS
= 2.
IF SY-SUBRC NE 0.
MESSAGE ID 'ZWA' TYPE 'E' NUMBER 037.
ENDIF.

Executar F8
Informar a Empresa e F8

Page 41 of 86

Page 42 of 86

Page 43 of 86

Na tela abaixo, proceder da seguinte forma:


1 - Digitar o nome do Formulrio (ZWA10T09)
2 - Digitar o Idioma (PT)
3 - Clicar no boto Criar
4 - Clicar no boto Avanar Enter (na janela Informao)

Page 44 of 86

Na tela abaixo, proceder da seguinte forma:


1 - Digitar o Significado (exemplo: Treinamento)
2 - Clicar em Layout F6

Page 45 of 86

Na tela abaixo, proceder da seguinte forma:


1 - Manter as informaes referentes a Pgina
2 - Criar as Janelas de acordo com o layout do exerccio

Page 46 of 86

Na tela abaixo, proceder da seguinte forma:


1 Clicar no boto Criar

Page 47 of 86

Na tela abaixo, proceder da seguinte forma:


Aps aparecer a nova janela (WINDOW1)
clicar no boto Dar novo nome

Page 48 of 86

Na tela abaixo, proceder da seguinte forma:


Aps aparecer a janela

Renomear janela

1 Digitar o novo nome


2 Clicar no boto Avanar ENTER

Page 49 of 86

Na tela abaixo, proceder da seguinte forma:


1 Dimensionar e posicionar a janela CABEC
2 Dimensionar e posicionar a janela MAIN
3 Inserir nova janela RODAPE
4 Dimensionar e posicionar a janela RODAPE
5 Clicar no boto Gravar Ctrl+S
6 Informar a Classe de Desenvolvimento
7 Clicar no boto Ativar Ctrl+F3

OBS: Para checar se existem erros de ortografia Clicar em DEFINIO

Page 50 of 86

Na tela abaixo, proceder da seguinte forma:


Clicar em Formatos de pargrafo F7

Page 51 of 86

Na tela abaixo, proceder da seguinte forma:


1 Criar os 3 pargrafos necessrios
2 Clicar no boto Gravar Ctrl+S
3 Clicar no boto Ativar Ctrl+F3
4 Clicar no boto Layout F6

Page 52 of 86

Selecionar o caminho:

Processar > Elementos de texto Shift+F4

Page 53 of 86

Nas 3 telas a seguir, devem ser preparados os elementos de


texto:

Page 54 of 86

Com isto, est encerrada a preparao do Formulrio.


Voltar ao Menu Principal.

Page 55 of 86

Clicar no boto

Page 56 of 86

Editor ABAP F7

Digitar o codigo do Programa (ZWA10T09)


Clicar no boto Criar
Complementar as informaes necessaris, Gravar e Voltar
Clicar no boto Modificar

Page 57 of 86

***************************************
*** SAPSCRIPT
***
***************************************
REPORT ZWA10T09.
*** DEFINIO DE TABELAS
TABLES: T001.
*** DEFINIO DE
DATA: WBUKRS LIKE
WBUTXT LIKE
WADRNR LIKE
WORT01 LIKE
WLAND1 LIKE
WCGC
LIKE

campos
T001-BUKRS,
T001-BUTXT,
T001-ADRNR,
T001-ORT01,
T001-LAND1,
J_1BWFIELD-CGC_NUMBER.

*** DEFINIO DE PARAMETROS


SELECTION-SCREEN BEGIN OF BLOCK PARAM WITH FRAME TITLE TEXT-001.
PARAMETERS: P_EMPR LIKE T001-BUKRS.
SELECTION-SCREEN END OF BLOCK PARAM.
*** INICIO DO PROGRAMA
SELECT BUKRS BUTXT ADRNR ORT01 LAND1
INTO (WBUKRS,WBUTXT,WADRNR,WORT01,WLAND1)
FROM T001
WHERE BUKRS = P_EMPR.
ENDSELECT.
*** OBTEM E FORMATA O CGC
CALL FUNCTION 'J_1BREAD_CGC_COMPANY'
EXPORTING
BUKRS
= WBUKRS
IMPORTING
CGC_NUMBER = WCGC
EXCEPTIONS
OTHERS
= 1.
IF SY-SUBRC NE 0.
MESSAGE ID 'ZWA' TYPE 'E' NUMBER 041.
ENDIF.

Page 58 of 86

*** MONTA O FORMULARIO


CALL FUNCTION 'OPEN_FORM'
EXPORTING
DEVICE
= 'PRINTER'
DIALOG
= 'X'
EXCEPTIONS
CANCELED
= 1
DEVICE
= 2
FORM
= 3
OPTIONS
= 4
UNCLOSED
= 5
OTHERS
= 6.
IF SY-SUBRC NE 0.
MESSAGE ID 'ZWA' TYPE 'E' NUMBER 033.
ENDIF.
CALL FUNCTION 'START_FORM'
EXPORTING
FORM
= 'ZWA10T09'
EXCEPTIONS
FORM
= 1
FORMAT
= 2
UNENDED
= 3
UNOPENED
= 4
UNUSED
= 5
OTHERS
= 6.
IF SY-SUBRC NE 0.
MESSAGE ID 'ZWA' TYPE 'E' NUMBER 034.
ENDIF.
CALL FUNCTION 'WRITE_FORM'
EXPORTING
WINDOW
= 'CABEC'
ELEMENT
= 'TEXTCB'
EXCEPTIONS
ELEMENT
= 1
FUNCTION
= 2
TYPE
= 3
UNOPENED
= 4
UNSTARTED
= 5
WINDOW
= 6
OTHERS
= 7.
IF SY-SUBRC NE 0.
MESSAGE ID 'ZWA' TYPE 'E' NUMBER 038.
ENDIF.

Page 59 of 86

CALL FUNCTION 'SET_TEXTSYMBOL'


EXPORTING
NAME
= '&cgc_number&'
VALUE
= WCGC
REPLACE
= 'X'
EXCEPTIONS
OTHERS
= 1.
CALL FUNCTION 'WRITE_FORM'
EXPORTING
WINDOW
= 'MAIN'
ELEMENT
= 'TEXTMA'
EXCEPTIONS
ELEMENT
= 1
FUNCTION
= 2
TYPE
= 3
UNOPENED
= 4
UNSTARTED
= 5
WINDOW
= 6
OTHERS
= 7.
IF SY-SUBRC NE 0.
MESSAGE ID 'ZWA' TYPE 'E' NUMBER 039.
ENDIF.
CALL FUNCTION 'WRITE_FORM'
EXPORTING
WINDOW
= 'RODAPE'
ELEMENT
= 'TEXTRO'
EXCEPTIONS
ELEMENT
= 1
FUNCTION
= 2
TYPE
= 3
UNOPENED
= 4
UNSTARTED
= 5
WINDOW
= 6
OTHERS
= 7.
IF SY-SUBRC NE 0.
MESSAGE ID 'ZWA' TYPE 'E' NUMBER 040.
ENDIF.

Page 60 of 86

CALL FUNCTION 'END_FORM'


EXCEPTIONS
UNOPENED = 1
OTHERS
= 2.
IF SY-SUBRC NE 0.
MESSAGE ID 'ZWA' TYPE 'E' NUMBER 036.
ENDIF.
CALL FUNCTION 'CLOSE_FORM'
EXCEPTIONS
UNOPENED = 1
OTHERS
= 2.
IF SY-SUBRC NE 0.
MESSAGE ID 'ZWA' TYPE 'E' NUMBER 037.
ENDIF.

Executar F8
Informar a Empresa e F8

Page 61 of 86

Page 62 of 86

Page 63 of 86

1. Especificao de programa de treinamento:


ZWAnnT10
Tabelas envolvidas:

MARA - Mestre dos Materiais (Dados Gerais)


MARD - Mestre dos Materiais (Deposito)
MAKT - Textos breves de Materiais

1.1.1. Parmetros:

Cdigo do material

Criar o Formulrio ZWAnnT10, conforme lay out anexo, copiando o formulrio


RT_CHECK_LIST
Sero usadas as impressoras Laser ou DeskJet com folha solta branca.
Procedimentos:
Pedir o parmetro: Cdigo do Material.
Ler na tabela MARA o cdigo digitado no parmetro, (MATNR),
Ler na tabela MARD
Centro de Custos (WERKS),
Deposito
(LGORT),
Estoque
(LABST),
Valor
(VKLAB).
Ler na tabela MAKT
Descr.do Material (MAKTX)
Formatar o formulrio referido com:
1- cabealho: RELATORIO DE MATERIAL
2-

Codigo e Nome do Material,


Estoque Total:
Valor Total:
3- main

com a somatoria das quantidades (LABST)

com a somatoria dos valores (VKLAB)

Imprimir cada um dos registros lidos na tabela MARD com:


Centro (WERKS)
Deposito (LGORT)
Estoque (LABST)
Valor
(VKLAB)

Obs.: Imprimir as molduras definidas no Formulrio.

Page 64 of 86

1
Cabecalho do Formulario

2
Material: xxxxxxxxxxxx

xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Estoque Total:

xxxxxxxxxxxx

Valor Total:

xxxxxxxxxxxx

3
Centro

Deposito

Estoque
Disponivel

Valor

xxxxxxxx
xxxxxxxx
xxxxxxxx
xxxxxxxx
xxxxxxxx
xxxxxxxx
xxxxxxxx
xxxxxxxx
xxxxxxxx
xxxxxxxx
xxxxxxxx
xxxxxxxx

xxxxxxxx
xxxxxxxx
xxxxxxxx
xxxxxxxx
xxxxxxxx
xxxxxxxx
xxxxxxxx
xxxxxxxx
xxxxxxxx
xxxxxxxx
xxxxxxxx
xxxxxxxx

xxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxx

xxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxx

Page 65 of 86

2. Especificao de programa de treinamento:


ZWAnnT11
Tabelas envolvidas:

MARA - Mestre dos Materiais (Dados Gerais)


MARD - Mestre dos Materiais (Deposito)
MAKT - Textos breves de Materiais
T001
- Empresas

Criar os Formulrios ZWAnnT11_1 e ZWAnnT11_2 , conforme os layouts anexo.


Obs: Sero utilizadas impressoras Laser ou DeskJet usando folhas soltas em
branco.

Procedimentos:
Pedir no Parmetro: Cdigo de Empresa
Ler a tabela T001 com o campo do Parmetro e salvar Nome da Empresa e Endereo.
Ler nas tabelas MARA, MARD e MAKT todos os materiais e guardar as informaes necessrias
em tabela interna.
Formatar uma pgina do formulrio ZWAnnT11_1 e
formatar tantas pginas quantas forem necessrias do formulrio ZWAnnT11_2.

Obs.:

Page 66 of 86

Imprimir as molduras definidas no formulrio.

RELAO de MATERIAIS nos DEPOSITOS

30/09/1999

10:30:55

Nome da Empresa
Endereo da Empresa

Prezados Srs.:

Estamos enviando relatrio de todos os

materiais em nossos estoques, que estaro a sua disposio


a partir da prxima semana.

Material

Descrio

Deposito

Centro

Estoque Disponivel

XXXXX

XXXXXXXXXXXXXXX

XXXX

XXXXXX

9999999999999999

XXXXX

XXXXXXXXXXXXXXX

XXXX

XXXXXX

9999999999999999

XXXXX

XXXXXXXXXXXXXXX

XXXX

XXXXXX

9999999999999999

XXXXX

XXXXXXXXXXXXXXX

XXXX

XXXXXX

9999999999999999

XXXXX

XXXXXXXXXXXXXXX

XXXX

XXXXXX

9999999999999999

XXXXX

XXXXXXXXXXXXXXX

XXXX

XXXXXX

9999999999999999

XXXXX

XXXXXXXXXXXXXXX

XXXX

XXXXXX

9999999999999999

Pg. nn

Page 67 of 86

RELAO de MATERIAIS nos DEPOSITOS

30/09/1999

10:30:55

Material

Descrio

Deposito

Centro

Estoque Disponvel

XXXXX

XXXXXXXXXXXXXXX XXXX

XXXXXX

9999999999999999

XXXXX

XXXXXXXXXXXXXXX XXXX

XXXXXX

9999999999999999

XXXXX

XXXXXXXXXXXXXXX XXXX

XXXXXX

9999999999999999

XXXXX

XXXXXXXXXXXXXXX XXXX

XXXXXX

9999999999999999

XXXXX

XXXXXXXXXXXXXXX XXXX

XXXXXX

9999999999999999

XXXXX

XXXXXXXXXXXXXXX XXXX

XXXXXX

9999999999999999

XXXXX

XXXXXXXXXXXXXXX XXXX

XXXXXX

9999999999999999

XXXXX

XXXXXXXXXXXXXXX XXXX

XXXXXX

9999999999999999

XXXXX

XXXXXXXXXXXXXXX XXXX

XXXXXX

9999999999999999

XXXXX

XXXXXXXXXXXXXXX XXXX

XXXXXX

9999999999999999

XXXXX

XXXXXXXXXXXXXXX XXXX

XXXXXX

9999999999999999

XXXXX

XXXXXXXXXXXXXXX XXXX

XXXXXX

9999999999999999

XXXXX

XXXXXXXXXXXXXXX XXXX

XXXXXX

9999999999999999

XXXXX

XXXXXXXXXXXXXXX XXXX

XXXXXX

9999999999999999

XXXXX

XXXXXXXXXXXXXXX XXXX

XXXXXX

9999999999999999

XXXXX

XXXXXXXXXXXXXXX XXXX

XXXXXX

9999999999999999

Pg. nn

Page 68 of 86

1 Tabela de Formatos de Elementos de Texto

Nesta tabela aparecem os formatos de pargrafo standard e todos os formatos


de pargrafo que foram criados pelo usurio ex P1 Pargrafo P1.
atravs dele que se pode determinar as caractersticas do pargrafo
discriminado.
Formato
*
=
(
/
/=
/(
/:
/*
/E

Page 69 of 86

Significado
Pargrafo Default
Texto Corrido
Linha longa
Linha Bruta
Avano de Linha
Avano de Linha e Linha Longa
Avano de Linha e Linha Bruta
Linha de Comando
Linha de Comentrio
Elemento de Texto

2 Tabela de Simbolos do Sistema

Os smbolos de texto so como comandos pr-definidos que quando utilizados facilitam a


programao.
Ex. DATE ao invs de ter que exportar SY-DATUM

Page 70 of 86

Incluso de Logos nos formulrios


O processo bastante simples e consiste em gerar no sistema um objeto no
formato hexadecimal, que possa ser interpretado pelo SAPscript, originando a
incluso de uma imagem. No entanto, devido s limitaes expostas no comeo deste
documento, isso pode levar um certo tempo at reproduzir o resultado desejado.
Primeiramente devemos pegar um editor de grficos que possua a sada no
formato TIF pois se o formato no for baseado no Baseline TIFF 6.0 o compilador
hexadecimal do SAP no conseguir compil-lo. Um editor que permite a gravao
em formato TIFF o Lview Pro, que pode ser conseguido atravs do site :
http://winfiles.com.
Para gerarmos o objeto no client desejado (lembre que esse objeto no pode ser
transportado), devemos executar o programa standard RSTXLDMC, com um
arquivo no formato *.TIF.

Caminho para o
arquivo tif

Imagem preto e
branco

Colocar o nome
do logotipo

Page 71 of 86

Preencher o primeiro campo (file name), com o path completo do arquivo da


imagem do logotipo. Esse caminho pode ser no servidor ou local.
O segundo campo (type) determina se o logotipo deve ser gerado
monocromtico BMON(default) ou colorido BCOL.
Importante: Quando gerarmos a figura colorida dever ser at 256 cores seno o
compilador no ir conseguir compilar tal nvel de resoluo. Na hora dos testes o
logotipo no vai aparecer!!!
O ltimo parmetro que exige ser preenchido o Text Name, onde feita a
atribuio do nome do objeto que ser referenciado de dentro do formulrio (padro:
ZHEX-MACRO-).
Tome cuidado, pois se o programa for executado com o mesmo nome vai
sobrepor o logotipo antigo sem perguntar se deseja sobrepor.
A gerao desse logo est intimamente ligado ao formato do arquivo TIFF. Isso
quer dizer que o seu tamanho obtido no formulrio est relacionado ao tamanho da
imagem geradora do objeto.
No elemento de texto dever ser utilizado o seguinte comando:
/: INCLUDE ZHEX-MACRO-COMPLEXLOGO OBJECT TEXT ID ST
Obs: aconselhvel que se crie apenas uma janela somente para o logo.

Page 72 of 86

Comandos de Controle
ADDRESS
BOTTOM
BOX
CASE
DEFINE
HEX
IF
INCLUDE
NEW-PAGE
NEW-WINDOW
PERFORM
POSITION
PRINTCONTROL
PROTECT
RESET
SET COUNTRY
SET DATE
MASK
SET SIGN
SET TIME
MASK
SIZE
STYLE
SUMMING
TOP

Formatao automtica de informao de endereo


Usado apenas na janela MAIN para imprimir no rodap da janela
Cria caixa
Cria condio para argumentos
Cria um novo smbolo em tempo de execuo
Passa valores hexadecimais diretamente
Cria condio para argumentos
Inclu outros textos e logotipos
Fora uma nova pgina
Fora uma nova janela
Chama subrotina
Usado para caixas setando X & Y
Inicializa um seqncia definida de controle de impresso
Protege uma pgina de parada
Reestarta seqncia de nmeros de sada
Seta o pas para campos
Seta formato de data
Coloca o campo a direita ou esquerda do nmero
Seta formato de hora
Usado apenas para caixa onde seta o tamanho da caixa
Usa um diferente tipo de estilo
Adiciona valores para um total
Usado apenas na janela MAIN para imprimir no topo da janela

Formatando Opes
(<)
(>)

(C)
(n)
(. n)
+n
(En)
(Ff)
(I)
(K)
( R)
( S)
(T)
(Z)

Alinha a esquerda
Alinha a direita
Insere um prefixo ou sufixo literal
Representa smbolo retirando-se os espaos em branco
Define um comprimento explcito
Seta o nmero de casas decimais
Caracteres no setados a direita
Representa um smbolo como um nmero exponencial
Utiliza um tipo de caracter nos espaos
Representa apenas valores no iniciais
Ignora converso de rotinas
Fora alinhamento a direita
O smbolo representado atravs de um campo
O smbolo representado atravs de um separador de milhar
Ignora zeros

Page 73 of 86

Download / Upload
Para se fazer download ou Upload deve-se utilizar o programa RSTXSCRP

O processo de upload e download um pouco diferente do realizado em


programas. Para isso foi criado o programa RSTXSCRP que pode ser executado
atravs da transao SE38.
Este programa pode ser utilizado tambm para fazer o transporte de Scripts,
pois pelo fato do script ser Client Dependent esta pode ser uma ferramenta til.
O arquivo gerado em formato texto fica no formato abaixo:
SFORMZA_WM_S_LVSKOMM3
HFORMZA_WM_S_LVSKOMM3
OLANP
HEADFORM
ZA_WM_S_LVSKOMM3SAP
DEF PLista de picking fora de
SP
ZA_WM_S_LVSKOMM3
00018CTPICOLOF
46B
20000616170909CTMEDEIROSAA46C
2000071222343913200051
P0
200
LINE/:FORM CPI 10; LPI 6; TAB-STOP 1 CH; START-PAGE PAGE; FORMAT LETTER PORTRAIT;

Page 74 of 86

LINE/:FORM PARAGRAPH L; RDI; RDIDEV;


LINE/:PARAGRAPH L LINE-SPACE 1 LN; LEFT-INDENT 1 CH;
LINE/:PARAGRAPH L1 LINE-SPACE 1 LN;
LINE/:PARAGRAPH L2 LINE-SPACE 1 LN;
LINE/:PARAGRAPH L1 TAB 1 1.90 CM LEFT;
LINE/:PARAGRAPH L2 TAB 1 0.10 CM LEFT; TAB 2 2 CM LEFT; TAB 3 7.60 CM LEFT;
LINE/:PARAGRAPH L2 TAB 4 9 CM LEFT; TAB 5 11.70 CM LEFT; TAB 6 14 CM LEFT;
LINE/:PARAGRAPH L3 TAB 1 16 CH RIGHT;
END
HEADFORM
ZA_WM_S_LVSKOMM3SAP
TXT PLista de picking fora de
SP
ZA_WM_S_LVSKOMM3
00018CTPICOLOF
46B
20000616170909CTMEDEIROSAA46C
2000071222343913200246
P0
200
LINE/:FORM TEXT 'Lista de picking fora de SP';
LINE/:PARAGRAPH L TEXT 'Pargrafo default';
LINE/:PARAGRAPH L1 TEXT 'Ttulo da Capa';
LINE/:PARAGRAPH L2 TEXT 'Dados de cabealho Capa';
LINE/:PARAGRAPH L3 TEXT 'Cdigo de barras';
LINE/:PARAGRAPH L5 TEXT 'Ttulo de lista + linha 1';
LINE/:PARAGRAPH L6 TEXT 'Ttulo de lista + linha 2';
LINE/:PARAGRAPH L7 TEXT 'Ttulo de lista + linha 3';
LINE/:PARAGRAPH L8 TEXT 'Subcabecalho Capa';
LINE/:PARAGRAPH L9 TEXT 'Dados da MAIN';
LINE/:PARAGRAPH LC TEXT 'Itens da capa MAIN';
LINE/:PARAGRAPH LV TEXT 'Dados de embalagem';
LINE/:STRING BC TEXT 'Cdigo de barras lista pick.WM';
LINE/:STRING GK TEXT 'Caracter Pequeno Negrito';
LINE/:STRING GR TEXT 'Caracter Pequeno Negrito';
LINE/:STRING H TEXT 'Cadeia caracteres ressaltada';
LINE/:STRING PK TEXT 'Caracter Pequeno';
LINE/:STRING PQ TEXT 'Caracter Pequeno';
LINE/:STRING U TEXT 'Cadeia caracteres sublinhada';
LINE/:WINDOW FUSS TEXT 'Rodap';
LINE/:WINDOW HEADER TEXT 'Nova janela';
LINE/:WINDOW KOPF TEXT 'Cabealho da lista picking';
LINE/:WINDOW MAIN TEXT 'Janela principal';
LINE/:PAGE CAPA TEXT 'Pgina nova';
LINE/:PAGE PAGE TEXT 'Pgina de texto';
END
ACTVSAP
E

Page 75 of 86

Debug
O debug do SAPscript possui praticamente os mesmos comandos do debug do
editor Abap, porm sob outra forma de apresentao .
Para acion-lo devemos utilizar o caminho SE71>Utilitrios>Ativar Depurador

Aps feito isto ir parecer que nada aconteceu, porm quando for executado o
programa que aciona o script e for comandada a impresso o depurador entrar em
ao.
Algumas diferenas entre os depuradores do Abap e Script so que o do Abap
faz anlise linha a linha, j o do Script faz linha a linha quando for comando e palavra
a palavra quando forem textos a serem editados. Devido a isto ele possui uma barra
(regra) onde h um cursor que aponta o local da linha que ele est lendo.

Page 76 of 86

Para se desativar o depurador basta clicar em ENCERAR na antes do formulrio


entrar em depurao.

Janela
executada
Rgua de Cursor

Apontador de
Linha

Janela de
visualizao de
variveis

Page 77 of 86

UTILIZAO DO PERFORM
Como sabemos s devemos alterar os programas standard em ltimo caso, por
isso possvel se criar um programa como um pool de Forms e aciona-lo atravs de
chamadas dentro do script.
Isto bem interessante na medida que tivermos de fazer contadores,
consistncias, etc.
A estrutura fica assim:

Programa
Standard

SAP SCRIPT

Pool de Forms

Dentro do script colocar :


PERFORM MATERIAL IN PROGRAM TESTE
USING &MARA-MATNR&
CHANGING &V_FLAG&.
ENDPERFORM.
IF &V_FLAG = X.
IMPRIME LINHA DO MATERIAL
ELSE.
SOMA A QUANTIDADE DE MATERIAL

ENDIF.
Aqui estou chamando um form chamado MATERIAL no Programa TESTE
enviando como referencia o valor do nmero do material MARA-MATNR e recebendo o
valor para a varivel V_FLAG.
Se o valor for X imprimir a linha ou seja quando no form o nmero do material mudar
imprime uma linha referente a ele seno voc pode fazer um outro perform do
mesmo jeito somando a quantidade do material e retornando o total.
Criar um programa Z e dentro dele criar os Forms
Dentro do programa colocar o form

Page 78 of 86

*&---------------------------------------------------------------------*
*&
Form MATERIAL..
*
*&---------------------------------------------------------------------*
*
GUARDA A REFERNCIA DESTAO PARA FAZER QUEBRA
*
*----------------------------------------------------------------------*
FORM MATERIAL TABLES
ITAB STRUCTURE ITCSY
OTAB STRUCTURE ITCSY.
DATA: L_MATERIAL(18) TYPE C,
L_MATMEM(18) TYPE C,
L_ESPACOS
TYPE P DECIMALS 2,
L_FLAG
TYPE C.
*L o valor enviado do script para a variavel L_MATERIAL
READ TABLE ITAB INDEX 1.
L_MATERIAL = ITAB-VALUE.
*Importa o valor da variavel L_MATMEM da memria
import L_MATMEM from memory id 'ABCD'.
*Verifica se ela inicial
IF L_MATMEM = ''.
L_MATMEM = L_MATERIAL.
export L_MATMEM to memory id 'ACBD'.
L_FLAG = ''.
ELSE.
*Se os materiais forem diferentes Imprimir
IF L_MATERIAL <> L_MATMEM.
L_FLAG = 'X'.
*Atualiza o valor e joga para a memria
.. L_MATMEM = L_MATERIAL.
export L_MATMEM to memory id 'ABCD'.
ELSE.
*Se forem iguais no imprimir
L_FLAG = ''.
ENDIF.
ENDIF.
*Mover o valor da varivel L_FLAG para o SCRIPT
MOVE L_FLAG TO OTAB-VALUE.
MOVE 'V_FLAG' TO OTAB-NAME.
MODIFY OTAB INDEX 1.
ENDFORM.

Page 79 of 86

Estas Estruturas OTAB(Tabela de sada OUT) e ITAB(Tabela de Entrada IN) so


utilizadas para se fazer o link entre o Script e o Form, se voc pedir para visualiza-las
ver que elas possuem apenas dois campos um NAME(que o nome da varivel de
destino) e VALUE (que o valor da varivel a ser passada)
Isso pode ser utilizado para se controlar qualquer coisa do script sem alterao do
standard.
Obs s tome cuidado no uso dos endereos de memria no caso acima coloquei como
ABCD, eles no so perdidos ficam na memria. Ento se for fazer vrios performs
use endereos de memria diferentes.
A utilizao de variveis neste caso impossvel, pois ao sair do form ou do programa
voc perde o valor , ficando assim com valores locais.

Page 80 of 86

UTILIZAO DO CDIGO DE BARRAS


A utilizao de cdigo de barras de certa forma simples, pois o SAP j possui
os principais tipos de cdigos de barra existentes.
Para se criar um cdigo de barras basta criar um formato de caracter e dizer
qual tipo a ser utilizado. Quando este tipo de pargrafo criado for utilizado, a varivel
ou o texto que seguir do cdigo do carecter ser transformado em cdigo de barras.
Os principais cuidados a se tomar:
Verificar se o tipo de cdigo de barras utilizado alfanumrico no caso da
utilizao de caracteres.
2-A impressora deve conseguir imprimir cdigo de barras. As impressoras da HP
no possuem esta caracterstica por isso deve-se utilizar placas de memria
adicionais para que seja possvel a identificao.
1-

IMPORTANT NOTE: If you want to print bar codes from R/3 using device type HPLJ4, HPLJ5,
HPLJ5SI or HPLJ4000 on HP LaserJet 4, 5, 6 or 4000 series printers, you need what is known as a
SIMM module (IC card). This SIMM module is called "JetCAPS Intelligent Barcode SIMM" and can be
obtained for most HP LaserJet 4, 5, 6 and Laser Jet 4000 printers. For more detailed information
refer to Note 121305. Other bar code SIMM modules for HP LaserJet printers are not supported by
SAP! ) nota 5196 SAP
- necessrio que se configure atravs da transao SPAD:
Spool -> Adminstrao Spool -> Selecionar:
- device type (ZHPLJ4) - Caso no exista criar a partir da cpia de uma pr-existente que contenha as
caractersticas necessrias, como tipo de fonte(character set) e tipo de impressora(laser, jato de tinta,
matricial, etc)
Spool -> Manuteno de Fontes -> Selecionar:
- system barcodes (tipo de barcode - Z_C25D2P - Planner). O cdigo gerado ter que ter a dimenso de 103mm
de largura por 13mm de altura.
- printer barcodes: Selecionar o device type correspondente (ZHPLJ4) e checar os print controls
existentes (double click sobre o device). Nesta lista dever existir (se no existir deve-se criar) o
Prefix (barcode_on) e Sufix (barcode_off)) correspondente ao tipo de barcode (Z_C25D2P). Posicionar sobre o
prefix e visualizar o print control. A sequncia de controle estar em hexadecimal. Esta sequncia dada
pelo fabricante da placa que gera o barcode (Planner) e cada qual possui a sua seqncia correspondente.
- a leitura de um cdigo de barras dada por um identificador de incio ( 167 = A7(hex)) e fim ( 168 =
A8(hex)).
- Hardware especfico para a impresso de barcode (adaptado na impressora).
23-

aconselhvel que se crie uma janela apenas para o cdigo de barras devido
ao seu formato diferenciado.
As notas da SAP que falam sobre o assunto so: 121305 & 5196

Page 81 of 86

Cdigo de barras
apresentado quando a
impressora no possui
mdulo de converso

Page 82 of 86

Criar formato de caracter e


colocar na janela o cdigo de
barras desejado.
Acima demonstrado na lista.

Page 83 of 86

TEXTOS CONDICIONAIS
Podemos usar o comando IF de ntro do SAPSCRIPT do mesmo jeito que
utilizamos no ABAP, porm algumas condies no existem como CN ( Contains Not
only )/ CO (Contains Only) / CA (Conteins Any) / NA (contains Not Any ) / CS (Contains
String ) / NS (contains No String) / CP (Contais Pattern) / NP (contains No Pattner) no
podem ser utilizados.
Para conseguir utilizlos deve-se fazer um PERFORM como demonstrado
anteriormente.
As condies que podem ser utilizadas so:
= EQ (igual)
< LT (menor que)
>GT (maior que)
<= LE (menor ou igual a)
>=GE (maior ou igual a )
<>NE (diferente)
NOT
AND
OR
Sintaxe:
/: IF condio
:
/:ELSE IF condio
:
/:ELSE
:
/:ENDIF
Obs 1 : Caso ocorra um erro de sintaxe este no aparecer pois o IF no ser
executado.
Obs2 : No necessria a utilizao de ponto no final dos comandos pois a
interpretao dos comando estar sendo executada no comando do incio da linha.

Page 84 of 86

Administrao de Spool
Na transao SPAD onde podemos gerenciar as impressoras e formatos de
pginas, desta forma esta transao geralmente controlada pelo pessoal de BASIS.
Deve-se ter cuidado ao se manipular a mesma pois qualquer alterao errnea
pode danificar as atribuies feitas a outros componentes do SAP R/3.

Clicar em Saltar> 1 Tela_Alternativa

Page 85 of 86

Cada uma das opes leva a um tipo de configurao:


Pgina
Impressora
Caracteres...etc

Page 86 of 86