Thursday, May 14, 2009

Shoes y SAP


Seguramente se estarán preguntando...Que es Shoes? Bueno...de acuerdo con why the lucky stiff es:

Shoes is a tiny graphics toolkit, designed for beginners. But make no mistake: this is real programming. You can make real, colorful apps in Shoes
(Shoes es un pequeño toolkit gráfico, diseñado para principiantes. Pero no se equivoquen: esto es verdadera programación. Puedes hacer aplicaciones reales y coloridas en Shoes)

Shoes viene como un archivo ejecutable que puede ser descargado de Download Shoes.

Para poder hacer la integración con SAP, deben bajar este archivo de la página de Piers Harding, descomprimirlo y copiar el contenido de la carpeta SAP dentro de la carpeta Lib de su instalación de Shoes.

Con eso, estamos listos para empezar.


require 'rubygems'
gem 'saprfc'
require "SAP/Rfc"

class SE16 < Shoes
url '/', :index
url '/table', :table
url '/show', :show

def index
stack :margin => 10 do
para 'Host: '
@Host = edit_line :width => 100
end
stack :margin => 10 do
para 'System Number: '
@Sysnr = edit_line :width => 100
end
stack :margin => 10 do
para 'Client: '
@Client = edit_line :width => 100
end
stack :margin => 10 do
para 'User: '
@User = edit_line :width => 100
end
stack :margin => 10 do
para 'Password: '
@Password = edit_line :width => 100, :secret => true
end
stack :margin => 10 do
button('Login') do
$rfc = SAP::Rfc.new(:ashost => @Host.text,
:sysnr => @Sysnr.text,
:lang => "EN",
:client => @Client.text,
:user => @User.text,
:passwd => @Password.text,
:trace => 1)
visit "/table"
end
end
end

def table
stack :margin => 10 do
para 'Table: '
@Table = edit_line :width => 100
stack :margin => 10 do
button('Show') do
$Table = @Table.text
visit "/show"
end
end
end
end

def show
$itab = $rfc.discover("RFC_READ_TABLE")

$itab.query_table.value = $Table
$itab.delimiter.value = "|"

$rfc.call($itab)

$Fields = Array.new
$Data = Array.new
$Data_Fields = Array.new
$Data_Split = Array.new
$Data_Names = Array.new

$itab.fields.hashRows {|field| $Fields.push(field) }
$Fields_Len = $Fields.length
$itab.data.hashRows {|field|
$Data.push(field['WA'].to_s.strip!) }
$Data_Len = $Data.length
$itab.fields.hashRows {|field| $Data_Names.push
(field['FIELDNAME'].to_s.strip)}

para "Tabla: #{$Table}"

for i in 0...$Data_Len
stack :margin => 10 do
$Data_Fields = $Data[i]
$Data_Split = $Data_Fields.split("|")
flow :margin => 10 do
for i in 0...$Fields_Len
para "#{$Data_Split[i].to_s.strip} |"
end
end
end
end
end
end

Shoes.app :width => 600, :height => 450

Ahora, algunas imágenes...





Espero que les guste -:)

Saludos,

Blag.

No comments: