sexta-feira, 7 de setembro de 2012

Smartforms - Passo a Passo - Parte I


 Ahhhhh,,, hoje vou comentar e mostrar pra vocês uns dos posts mais pedidos
por todos os meios de comunicação que vocês tem comigo que ehhhhhhhhhh .....
Bem,... não eh mais surpresa pois vocês devem ter lido o título
deste post que é Smartforms,,,, Não custa lembrar mas esses posts passo a
passo que eu coloco no blog são simples, mas fazem você sair do outro
lado, espero que consigam adquirir ou pelomenos complementar algum
conhecimento.
 Primeiramente temos que saber que Smartforms são relatórios de impressão
dentro da sap, se vocês se lembram do Sapscript vão falar que é a mesmo
coisa, e é mesmo, pelomenos o resultado final, mas pra chegar até o momento
da impressão, os dois tem suas peculiaridades, o sapscript e bem mais dificil
de visualizar enquanto o Smartforms ele tem uma janela lateral num formato
hierarquico que você consegue desenvolver com maior nitidez, cada objeto de
visualização da tela; pra eu não ficar falando os pros e os contras vamos começar
a fazer logo isso e vocês mesmos falam qual é o melhor depois.
 Vamos entrar na transação 'SMARTFORMS' ( é isso mesmo ).



 Olha só a tela aiii, ela é bem simples.... vamos dar um nome pro
formulário e clicar no botão 'Criar'.
 Fazendo isso você irá para tela onde nós efetivamente iremos trabalhar com a
criação do Smartforms.









 Reparem que eu numerei as janelas para que não tenha problemas,
 Nº 1 - São os objetos, textos, janelas, logica de processamento,.. tudo
que existe dentro do seu smartforms de forma hierárquica
 Nº 2 - Clicando na Parte Nº1 todos as informações, caracteristicas e funções
daquele objeto serão mostrados nessa janela.
 Nº 3 - Aqui e como tah ficando seu layout, conforme você vai desenvolvendo
ele vai criando automaticamente os objetos mas ficam jogados na tela, portanto
clicando no botão 'FORM PAINTER' você conseguirá visualizar e mudar de posição
tudo que foi criado não se esqueça das limitações que sua pagina têm rsrs.

 A idéia inicial deste formulário vai ser mostrar o resultado de um select
que será feito em um programa, estou começando pelo formulário, mas na
verdade deveriamos começar pelo programa que irá dar carga no Smartforms,
mas como será um passo a passo, vamos começar a explicar e fazer o
smartforms juntos, irei fazer um smart simples, depois iremos para o programa,
e depois voltamos para o Smart para deixarmos o mesmo um pouco mais
interessante.
 Primeira coisa que iremos fazer e buscar o logo da empresa para o smart,
se você não lembra como adicionar imagem no SAP acesse o link abaixo.
http://abapjuniores.blogspot.com.br/2012/01/importar-imagem-se78.html
 Clique com o Botão direito na Pagina 1 e faça conforme imagem abaixo.





 Clique duas vezes no objeto Gráfico e coloque as informações da imagem que
deseja mostrar.
 Depois de criado, aperte o Botão 'FORM PAINTER'  e posicione a imagem aonde
desejar.
 Observação 1 : Lembrando que a Janela Principal ( MAIN ), como o nome dela
mesma diz, ela é a principal, e também a única que dá loop de dados, portanto
quando quiser mostrar algo a nivel item você terá que colocar na 'Main'.
 Observação 2 : Diferentente que o Sapscript, o Smartforms pode ser executado
direto, clicando no F8 irá aparecer a tela da SE37 ( Função ) e um nome de
função bem loko, execute essa função e passe os parametros obrigatórios caso
tenha, informe a impressora e visualize... Não gaste papel a toa heimmm.

 Bem, antes de continuar, o formulário irá mostrar todos os dados de Spool
( informações da pilha de impressão )do Usúario que executa o programa,
os dados do cabeçalho será as informações do User, e os dados da Main ( Nivel
 Item ) serão as informações do Spool desse User.
 portanto como iremos trazer estes dados que foram selecionados no programa
para o Smartforms, a resposta é simples, o Smartforms que você criou é na
verdade uma função criada dinamicamente pelo sap num grupo de função também
criada só pra executar o seu Smart, daí como ele é tipo uma função significa
que ele tem parametros de importação e exportação, e essas informações estão
no menu 'Opções Globais / Interface de formulário' conforme imagem abaixo,
façam conforme a imagem e criem na aba 'Tabelas' a tabela do tipo 'TSP01'
que irá receber todos os dados do Spool. ( Usem a atribuição 'LIKE' ).
 Depois ative.



 Agora vamos criar uma janela para colocar as informações do header, primeiro
clique com o botão direito na Pagina e selecione Criar/Janela,



 Depois disso deixe o layout conforme abaixo.



 Agora clique com o botão direito na janela criada e selecione Criar/Tabela
e depois faça a mesma coisa só que selecionando Criar/Lógica de proces./
linhas de programa, conforme abaixo.



 Iremos colocar uma informação na 'Area Principal' da tabela que acabamos de
criar com uma logica de processamento, mas para isso precisaremos criar uma
variável para receber o valor que a lógica irá retornar, lá na opções globais
da Smart existe o Menu 'Definições globais' clique duas vezes nele e crie a
variável conforme abaixo.



 Ative. Clique duas vezes no code e coloque o código abaixo.
 Repare nas informações que eu coloquei nos parametros de entrada e de saida.



 Eu sei, vocês devem estar pensando... Mas porque esse louco tah fazendo
tudo isso só pra pegar o nome do primeiro user que é único?
 A resposta é bem simples, porque eu queria mostrar como colocar código
dentro do Smart, rsrsrs.
 Agora que nós pegamos o nome vamos jogar essa variável num lugar no Smart
para ser exibido, vamos clicar com o botão direito na Area principal da
tabela que criamos dentro da janela1 que criamos também, veja imagem abaixo.



 Irá aparecer as informações daquela linha ( entrada tabela ) e vamos
informar qual a categoria de linha que aquela tabela têm, existe uma padrão,
então coloque-a, mas a nivel item eu vou mostrar como trabalhar com isso
direito, e sobre o campo 'Estilo' eu vou postar mais tarde como criar e
atribuir um estilo para seu Smart que nada mais é do que informar o formato
das palavras que irão ser exibidas, percebam que depois que você atribuiu
uma categoria de linha foi criada uma celula (coluna ) na linha da tabela,
clique com o botão direito nessa celula e vá no menu Criar / texto conforme
imagem.



 Depois de criada vá na aba 'Características Gerais' texto e clique no
botão 'Inserir Campo' alí perto do Lapizinho digíte a variável no campo
'Campos' com a variável entre o caracter especial & ( E comenrcial ),
tenso? rsrsrs, veja abaixo como.



 Ta muito zuado nosso Smart, falando de beleza lógico, rsrs, é o primeiro
né, então bele. Agora que nosso formulário tem informação header, vamos
colocar o que o pessoal mais tem medo num Smart que é colocar as informações
nivel item, o que na verdade é um grande mito, pois é muito de boa, como eu
tinha falado antes, tudo que for nivel item temos que colocar dentro da
janela principal pois somente lá e liberado o Loop, então vamos clicar com
o botão direito na janela Principal ( MAIN ) e criar uma tabela igualzinho a
primeira janela que criamos os dados Header, só que aki nós vamos ter que
criar alguns campinhos que virão na tabela de item e nesses campos terão que
ser mostrados informações de cada registro, conforme abaixo.

TabSmart       CampoItem          CampoTabelaTransp.
campo 1 - Numero Spool          -     RQIDENT
campo 2 - Nome User             -     RQOWNER
campo 3 - Hora geração Spool    -     RQCRETIME
campo 4 - Hora eliminação Spool -     RQDELTIME
campo 5 - Dispositivo Saida     -     RQDEST

 Portanto temos que vamos criar essas 5 colunas nessa categoria de linha,
o que também é muito fácil, depois de criar a tabela na Janela principal
vamos clicar no botão 'Linhas e colunas' é um lápis que está na aba
'Tabelas', e delimitar o tamanho de cada campo, caso queira fazer algo com
medidas um pouco mais exatas é só clicar no botão 'Detalhes' e escrever o
tamanho das colunas que vão ficar os valores, pra voltar na tela anterior é
só clicar no botão 'Table Painter' veja imagem e vê se ajuda alguma coisa.



 Na tabela da Janela principal iremos trabalhar com as informações da tabela
de item, para fazer esse 'Link' vá na aba 'Dados' digite o nome da tabela e
o nome da estrutura que vai receber o mesmo, tipo o comando 'READ TABLE',
reparem nas janelinhas 'Condição WHERE' e 'Critérios de Ordenação',
o Smartforms é uma ferramenta bem completa.



  Voltando na aba 'Tabela' reparem que no espaço que riscamos as limitações
de cada linha está escrito '%LTYPE1' esse é o nome da sua categoria de linha,
agora vamos criar uma linha( Entrada tabela ) igual a tabela que passamos,
só que agora quando informarmos a categoria dessa linha será gerada
5 celulas ( colunas )abaixo da mesma, e em cada uma delas vamos criar um texto
e em cada texto vamos colocar um campo da estrutura que irá receber os dados
tabela de itens que colocamos na aba 'Dados' anteriormente, façam conforme a
imagem abaixo e conforme a tabelinha que eu informei acima.



 Ative, Ufa, parece que acabamos a parte de desenho, agora vamos pra nossa
razão de viver, os códigos, to brincando, a parte dos códigos vamos no próximo
post porque se eu to cansado de escrever vocês devem estar cansado jah de ler,
portanto, proximo post sobre o programa que chama o Smart e alguns comentários
pertinentes ao assunto Smartforms, e depois vamos começar a entrar um pouco
mais fundo no assunto. Bons Estudos e vamo lá rapaziada, qualquer duvida estou
a disposição, tentarei responder o máximo no menor prazo possível.

10 comentários:

  1. Muito bom mesmo!
    Somente uma ressalva... como eu defino o tamanho do logo ?

    ResponderExcluir
  2. Fala Mano, na hora que você tiver atribuindo a imagem ao objeto gráfico do seu Smartforms, você vai precisar colocar, NOME , OBJETO e ID.... Logo abaixo vai ter um frame Escrito... 'Características técnicas' Na resolução, dependendo do valor que colocar a imagem aumenta ou diminui.
    Espero ter ajudado.

    ResponderExcluir
  3. Mauro, parabéns pelos posts... esse foi meio difícil de acompanhar, mas estou tentando! hahaha... vou ver a parte 2! Valeu!

    ResponderExcluir
  4. Fiz o passo a passo e nao saiu nada, ficou tudo em branco...

    ResponderExcluir
  5. Parabéns cara, muito bem feito... Showww

    ResponderExcluir
  6. Então, poderia passar o orçamento para uma casa com 120 metros de paredes, com 3.metros de altura?

    ResponderExcluir