Thursday, May 14, 2009

Blue Ruby (Ruby en SAP)


Alguna vez han oido hablar de Blue Ruby? No? Bueno...dejando las cosas simples, Blue Ruby te permite programar con Ruby dentro del Stack de ABAP de SAP NetWeaver...es lo suficientemente bueno? Lo es para mi obviamente -:)

Los que me conocen...virtual o personalmente, saben que soy muy apasionado acerca de las tecnologías y sobre todo de los Lenguages Script.

Esta semana, gracias a Juergen Schmerder y el Team de Blue Ruby, tengo acceso temprano al IDE de Blue Ruby basado en WebGui.

Por supuesto, lo primero que hice fué logearme y tratar de hacer algunas pruebas...mayormente pruebas relacionadas al lenguage. Afortunadamente descubrí que casi todo lo que hacía en Ruby(Core Language) podía hacerlo en Blue Ruby.

Así que, lo siguiente que hice fué comenzar a trabajar en mi ejemplo de toda la visa...un emulador de SE16.

Fué relativamente sencillo porque he hecho muchos examplos de SE16 utilizando Ruby, Camping, WxRuby, Sinatra, PHP y PHP/Flex.

En fin...Aquí está el código. Solo para que lo sepan...hay una manera de hacer el código mucho más corto...algo de 6 líneas...pero decidí quedarme con el ejemplo largo por 3 simples razones.

1.- Quería probar las capacidades del lenguaje.

2.- Quería separar cada campo y mostrarlo de forma individual.

3.- Quería divertirme escribiendo más código -:P


#RFC Example by Blag.

require 'rfc'

$spfli = Rfc.new 'RFC_READ_TABLE'

$spfli.query_table = 'SPFLI'
$spfli.delimiter = '|'

$spfli.call!

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

$spfli.fields.each do |field|
$Fields.push(field.fieldname.to_s)
$Fields_Length.push(field.length.to_i)
end
$spfli.data.each do |field|
$Data.push(field.wa.to_s.strip!)
end

$Fields_Len = $Fields.length
$Data_Len = $Data.length

print "Table: SPFLI\n\n"

for i in 0...$Data_Len
$Data_Fields = $Data[i]
$Data_Split = $Data_Fields.split("|")
for i in 0...$Fields_Len
$space = ""
$len = ( $Fields_Length[i].to_i - $Data_Split[i].length ) + 1
$len.times do
$space += "\s"
end
print $Data_Split[i].to_s + "#{$space}"
end
print "\n"
end

Ahora, las imagenes...




Estoy seguro de que se van a sorprender con esto -:) Yo aún continúo impresionado -:D

Así que...si quieren aprender más, les dejo algunos enlaces muy útiles:

Blue Ruby: A Ruby VM in ABAP (PDF)
Blue Ruby - a Ruby VM in ABAP
Blue Ruby Demo Video Part 1: How to get started
Blue Ruby Demo Video Part 2: How to call ABAP functions
Introduction to Blue Ruby Replay

Saludos,

Blag.

No comments: