use sap_scripting::*;
fn main() -> crate::Result<()> {
let com_instance = SAPComInstance::new().expect("Couldn't get COM instance");
let wrapper = com_instance.sap_wrapper().expect("Couldn't get SAP wrapper");
let engine = wrapper.scripting_engine().expect("Couldn't get GuiApplication instance");
let connection = match sap_scripting::GuiApplication_Impl::children(&engine)?.element_at(0)? {
SAPComponent::GuiConnection(conn) => conn,
_ => panic!("expected connection, but got something else!"),
};
eprintln!("Got connection");
let session = match sap_scripting::GuiConnection_Impl::children(&connection)?.element_at(0)? {
SAPComponent::GuiSession(session) => session,
_ => panic!("expected session, but got something else!"),
};
if let SAPComponent::GuiMainWindow(wnd) = session.find_by_id("wnd[0]".to_owned())? {
wnd.maximize().unwrap();
session.start_transaction("fpe1".to_string())?;
match session.find_by_id("wnd[0]/usr/ctxtFKKKO-BLART".to_string())? {
SAPComponent::GuiCTextField(ctxt) => ctxt.set_text("P1".to_string())?,
_ => panic!("expected doc type ctextfield")
}
match session.find_by_id("wnd[0]/usr/ctxtFKKKO-WAERS".to_string())? {
SAPComponent::GuiCTextField(ctxt) => ctxt.set_text("GBP".to_string())?,
_ => panic!("expected currency ctextfield")
}
match session.find_by_id("wnd[0]/usr/txtFKKKO-XBLNR".to_string())? {
SAPComponent::GuiTextField(txt) => txt.set_text("XA12345678".to_string())?,
_ => panic!("expected reference textfield")
}
} else {
panic!("no window!");
}
Ok(())
}