Ich schreibe eine Klasse, die einen SAP Beleg erstellt.
Stehe grade irgendwie auf dem Schlauch, wobei meine Frage sich auf ein Java-ProgrammierPRoblem bezieht
Stehe grade irgendwie auf dem Schlauch, wobei meine Frage sich auf ein Java-ProgrammierPRoblem bezieht
Code:
public class RetourDataToSAP
{
public String addSapItem(BapiiteminTable sapItems, RMASAPArticleObject article)
{
BapiiteminTable.Row sapItem = sapItems.createRow();
sapItem.setShort_text(article.articleDescription);
sapItem.setMaterial(article.articleNo);
sapItem.setTarget_qu(String.valueOf(article.quantity));
sapItem.setReq_qty(String.valueOf(article.quantity * 1000));
// sapItem.setItem_categ("TAN");
// Zieleinheit
sapItem.setTarget_qu("ST");
// Verkaufseinheit
sapItem.setSales_unit("ST");
sapItems.add(sapItem);
return sapItems.toString();
}
public String createRMAOrder(SAPConnection sapConnection, String originalSapNo, List<RMASAPArticleObject> articles, Address address) throws Exception
{
Bapi_salesorder_createfromdat1 so = new Bapi_salesorder_createfromdat1(sapConnection);
// Kopfdaten des Auftrags setzen
Bapisdhead oh = new Bapisdhead();
// Liefersperre setzen sofern notwendig
// oh.setDlv_block("VK");
// Verkaufsbelegart setzen
oh.setDoc_type("AZV");
// Verkaufsorganisation setzen
oh.setSales_org("2000");
// Vertriebsweg
oh.setDistr_chan("01");
// Sparte
oh.setDivision("01");
// Verkaufsgruppe
oh.setSales_grp("6");
// Zuständige SAP-Verkaufsbüro als 4-stelliges Textkürzel
oh.setSales_off("2597");
// Bestellnummer des Kunden setzen
oh.setPurch_no("Kundenbestellnummer");
// Bestelldatum (hier aktuelles Datum)
oh.setPurch_date(new Date());
// Versandbedingung setzen
oh.setShip_cond("PV");
// Kopfdaten in BAPI-Struktur setzen
so.setOrder_header_in(oh);
// Diverse Partner setzen
BapipartnrTable partners = new BapipartnrTable();
// Zusätzliche Adressangaben (nur hier kann man E-Mail setzen), später für
// salesorder_change benötigt
Bapiaddr1Table partnerAddresses = new Bapiaddr1Table();
// Test-Debitor
String debitor = "0000079558";
// Auftraggeber setzen
OrderExportByBAPI.fillPartner(partners, "AG", Address.fromId(63028, Shop.TEST), debitor, partnerAddresses, Customer.fromId(99999, Shop.TEST));
// Rechnungsempfänger setzen
OrderExportByBAPI.fillPartner(partners, "RE", Address.fromId(63118, Shop.TEST), debitor, partnerAddresses, Customer.fromId(99999, Shop.TEST));
// Regulierer setzen (Partnerrollen stehen in Tabelle TPAR)
OrderExportByBAPI.fillPartner(partners, "RG", Address.fromId(63025, Shop.TEST), debitor, partnerAddresses, Customer.fromId(99999, Shop.TEST));
// Warenempfänger setzen
OrderExportByBAPI.fillPartner(partners, "WE", Address.fromId(63028, Shop.TEST), debitor, partnerAddresses, Customer.fromId(99999, Shop.TEST));
// Wichtig: Immer alle relevanten Partner setzen, da SAP ansonsten
// Defaultannahmen trifft!
so.setOrder_partners(partners);
// Auftragsliste setzen aus Warenkorb
BapiiteminTable sapItems = new BapiiteminTable();
for (RMASAPArticleObject article : articles) ==> hier wird article gehalten!!!!!!!!!!!!!!!!!!!!!!!!!!!
{
addSapItem(sapItems, article);
}
so.setOrder_items_in(sapItems);
// Ausführen
so.execute();
Bapireturn1 ret = so.getReturn();
if (!ret.getNumber().equalsIgnoreCase("000"))
{
String soError = ret.getMessage();
throw new Exception("BAPI-Fehler:" + soError);
}
// Auftragsnummer lesen
String sdOrder = so.getSalesdocument();
return sdOrder;
}
public static void main(String[] arg) throws Exception
{
// Verbindung nach SAP-T01 herstellen
SAPConnection sapConnection = null;
String originalSapNo = "1500999983";
try
{
sapConnection = new SAPConnection(Client.T01_100);
RetourDataToSAP rdts = new RetourDataToSAP();
String sapOrder = rdts.createRMAOrder(sapConnection, originalSapNo,articles , address); ==> wie kann ich article hierher als parameter übergeben????
System.out.println("SAP-Order=" + sapOrder);
}
catch (Exception e)
{
System.out.println(JavaLangUtil.getInfo(e));
} finally
{
if (sapConnection != null)
{
// Sicher Verbindung trennen
sapConnection.close();
}
Scheduler.safeShutdown(false);
}
}
}