Você está na página 1de 31

1. 2.

Arquitetura SapScript 2.1. Cabealho 2.2. Pargrafos 2.3. Caracteres 2.4. Janelas 2.5. Pginas 2.6. Janela de pginas 2.6.1. Elementos de texto 2.6.2. INCLUDES 2.6.3. Box 2.6.4. Comandos de controle 2.6.5. Smbolos do sistema 2.6.6. Campos genricos do Sapscript

3.

Estrutura do programa

SAP DB

Formulrio

Programa impresso

Header

Janelas de paginas

Pginas

Janelas e elementos de Textos

<H> </> Caracteres

Pargrafos
3

Transao SE71

SE71

Transao SE71

Podemos criar um novo Formulrio (boto criar) ou Utilizar as opes encontradas No menu Utilities

Header - informaes gerais do formulrio, como formato da pgina que ser utilizado, pargrafo e fontes default do mesmo (quando no for especificado nenhuma 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.

Obs1: Quanto o usurio fazer LOGON com uma linguagem Que no existe o FORM, O sistema utilizar a linguagem Original Obs2: Todas as janelas s podem Ser alteradas no idioma original, Isso significa que s existir um Layout, porm os dados podero Ser diferentes

Header - Cabealho

Obs: Duas vrgulas ,, Representa uma tabulao

SPAD

ex: Nota Fiscal


7

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 ou sublinhado, etc... Para criar um pargrafo novo, utilizar o caminho do menu EDIT -> Create Element, lembrando que em um formulrio standard, somente se pode alterar o layout no idioma original.

Define o pargrafo, descrio, Margem default, alinhamento, Espaamento, etc

Pargrafos

Define a letra e suas opes ( tipo, tamanho, etc)

Pargrafos

Define tabulaes Obs: Cada 2 vrgulas ,, o Sistema saltar para cada Tabulao Ex: mara-matnr,,mara-matkl,, mara-labor

10

Caracter de Seleo - so informaes semelhantes s do pargrafo, no que diz respeito a formatao de textos, no entanto podem ser aplicados a trechos de textos e no necessariamente a linhas inteiras do formulrio. Sua sintaxe de utilizao se assemelha 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

Utilizado para cdigo de barras

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/ Subescrito apresentado meia linha acima ou abaixo

11

Strings Caracteres de seleo

Tambm podemos definir o tipo e Tamanho do fonte, porm mais Utilizado para definir atributos

12

Exerccio parte 1
. Criar um formulrio que contenha: 1. Linguagem original PT 2. Pgina com formato Carta - Portrait 3. Com pargrafo default -AS- tipo courier de tamanho 12 4. Defina os pargrafos: AS descrito acima HE Header Courier 20 com 2 tabulaes (1cm e 8cm) LI Line Courier 10 com 3 tabulaes (2,5 e 17cm) 5. Criar um Caracter string para impresso em negrito chamado A (no definir fonte).

13

Janelas

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

14

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 A lgica de sequncia 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. 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.

15

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. 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).

16

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.

Programao dentro do formulrio. Onde definimos os Texts Elements

Neste momento define-se onde a Janela aparecer no formulrio. S definido no formulrio com Linguagem original.

17

Exerccio parte 2
. Usar o formulrio criado na parte 1: 1. Criar 3 windows 1.1. Header var 1.2. Footer var 1.3. Main - var 2. Criar a 2 Pginas 2.1. First 2.2. Next 3. Criar 3 page windows 3.1. Header largura 27 e altura 4cm 3.2. Footer deslocamento de altura 28cm largura 21 e altura 1cm 3.2. Main - deslocamento de altura 3cm largura 21 e altura 22cm

18

Page Windows Texts 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 double-click 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: IF..ELSE..ENDIF CASE. .WHEN DEFINE declarao de variveis dentro da janela, com atribuio de valor (Ver formulrio ZBR_MF_PEDIDO_NA)

PERFORM..USING..CHANGING BOX..FRAME 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

19

Page Windows Texts Elements

Linha de comando Usado para Comandos, pargrafos e texts elements

Explorar MENU

20

Page Windows Texts Elements

Text Element definido dentro do programa de impresso na funo WRITE_FORM

21

Page Windows Texts Elements


ADDRESS BOTTOM BOX CASE DEFINE H EX IF INCLUDE NEW-PAGE NEW-WINDOW PERFORM POSITION PRINT-CONTROL 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

Linha de comando Sempre usar /:

22

CALL FUNCTION OPEN_FORM

CALL FUNCTION START_FORM

CALL FUNCTION WRITE_FORM

CALL FUNCTION END_FORM

CALL FUNCTION CLOSE_FORM

23

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 (Nmero de Cpias) TDDEST (Dispositivo de Sada) TDPREVIEW (Print Preview) TDIMMED (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 = = = = = = = = = = = = = = = = = 1 2 3 4 5 6. '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)

* * * * *

CALL FUNCTION 'OPEN_FORM' EXPORTING DEVICE = 'PRINTER' DIALOG = 'X' FORM = 'ZBR_TESTE_LUIZ' LANGUAGE = SY-LANGU.

24

START FORM - Serve para iniciar um formulrio de impresso. Mas ai vem a pergunta 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. 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 = 1 format = 2 unended = 3 unopened = 4 unused = 5 others = 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.

25

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 SAPSRIPT. 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. O comando para impresso dos dados a seguinte funo:
call function 'WRITE_FORM' exporting ELEMENT = ' ' * FUNCTION = 'SET' * TYPE = 'BODY' WINDOW = 'MAIN' * importing * pending_lines = exceptions element = 1 function = 2 type = 3 unopened = 4 unstarted = 5 window = 6 others = 7. EX: CALL FUNCTION 'WRITE_FORM' EXPORTING ELEMENT = 'NF' WINDOW = 'HEADER' EXCEPTIONS OTHERS = 01.

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 26 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 /E FRASE1 &MARA-MATNR& 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 no-main). 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.

27

END FORM - Serve para finalizar um formulrio.


call function 'END_FORM' importing RESULT = ' ' exceptions unopened = 1 others = 2.

CLOSE FORM - Serve para fechar um formulrio.


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

28

Abordar pontos:
. Textos standards SO10 ver transporte em OSS note - 65253 . Impresso de logotipos programa RSTXLDMC ver arq. ANOTSAP . Textos da tabela STXL (funo Read Text) so impressos pelo comando INCLUDE.

29

Exerccio parte 3
. Imprimir nas page Windows: 1. Header: TEXT ELEMENT = NF Fazer um box de 20,5cm de comprimento, 3 de altura e 0,5cm de deslocamento Imprimir o documento interno da NF Na linha abaixo imprimir o nro do NF em negrito Obs: o documento e a NF devem ficar dentro do BOX 2. Footer Imprimir o seu nome e a pgina atual e a quantidade total de pginas 3. Main Imprimir os campos da tabela interna ITAB com tabulaes: (0cm, 2cm, 6cm e 17cm) Como o campo descrio do material no est no programa, fazer um PERFORM para buscar a descrio na tabela MAKT (utilizar o FORM busca_makt do programa YTEIXE_MAKT) e imprimir na linha abaixo somente quando a descrico do material no comece com a letra A.

30

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 deve-se utilizar CM (Centmetro), MM(Milmetro). importante salientar que se estivermos utilizando uma impressora matricial a ordem de impresso muito importante para a correta edio do formulrio pois os comandos de posio funcionam mas devemos lembrar que a cabea de impresso no volta ou seja a leitura do formulrio feita linha a linha, j as impressoras grficas isso no ocorre pois a leitura feita pgina a pgina. O SAP possui vrios formulrios standards includos, estes formulrios esto localizados no mandante 000 e atravs deles possvel fazer uma cpia e altera-los. Os formulrios standards funcionam como programas standards, e os formulrios criados devem ser iniciados pelas letras Z ou Y.

31

Você também pode gostar