Struct sap_scripting::SAPComInstance
source · pub struct SAPComInstance;
Expand description
An instance of a COM session. This should be kept whilst a connection to SAP is used.
Implementations§
source§impl SAPComInstance
impl SAPComInstance
sourcepub fn new() -> Result<Self>
pub fn new() -> Result<Self>
Initialise the COM environment.
Examples found in repository?
examples/simple.rs (line 33)
31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
fn main() -> crate::Result<()> {
// Initialise the environment.
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();
if let SAPComponent::GuiOkCodeField(tbox_comp) =
session.find_by_id("wnd[0]/tbar[0]/okcd".to_owned())?
{
tbox_comp.set_text("/nfpl9".to_owned()).unwrap();
wnd.send_v_key(0).unwrap();
} else {
panic!("no ok code field!");
}
} else {
panic!("no window!");
}
Ok(())
}
More examples
examples/charge.rs (line 5)
4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
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(())
}
sourcepub fn sap_wrapper(&self) -> Result<SAPWrapper>
pub fn sap_wrapper(&self) -> Result<SAPWrapper>
Create an instance of the SAP wrapper
Examples found in repository?
examples/simple.rs (line 34)
31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
fn main() -> crate::Result<()> {
// Initialise the environment.
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();
if let SAPComponent::GuiOkCodeField(tbox_comp) =
session.find_by_id("wnd[0]/tbar[0]/okcd".to_owned())?
{
tbox_comp.set_text("/nfpl9".to_owned()).unwrap();
wnd.send_v_key(0).unwrap();
} else {
panic!("no ok code field!");
}
} else {
panic!("no window!");
}
Ok(())
}
More examples
examples/charge.rs (line 6)
4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
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(())
}
Trait Implementations§
Auto Trait Implementations§
impl RefUnwindSafe for SAPComInstance
impl Send for SAPComInstance
impl Sync for SAPComInstance
impl Unpin for SAPComInstance
impl UnwindSafe for SAPComInstance
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more