Code: Alles auswählen.
//imports gesetzt!!!
public class RetourDataToSAP extends AbstractRMAForm
{
private static final Logger logger = Logger.getLogger(utility.Utility.getLoggerName(OrderExportByBAPI.class));
private String originalSapNo;
private String sapOrder;
@Output
@TldDescription("Generiert die Sap-Order Nummer")
public String getSapOrderNo() throws Exception
{
// Init.initLog4J();
// Verbindung nach SAP-T01 herstellen
SAPConnection sapConnection = null;
originalSapNo = "1500162588";
RMASAPConnection conn = new RMASAPConnection();
List<RMASAPArticleObject> articles = conn.resultSets(originalSapNo);
try
{
sapConnection = new SAPConnection(Client.T01_100);
RetourDataToSAP rdts = new RetourDataToSAP();
sapOrder = rdts.createRMAOrder(sapConnection, Shop.TEST, originalSapNo, articles, null);
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);
}
return sapOrder;
}
@Output
public String getAusgabeSession()
{
String test = request.session.rmaContext.returnReason.getShortName();
return test;
}
public void 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");
sapItem.setReason_rej("03");
//sapItem.setReason_rej(request.session.rmaContext.returnReason.getShortName());
//sapItem.setReason_rej(test);
sapItems.add(sapItem);
}
public String createRMAOrder(SAPConnection sapConnection, Shop shop, 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"); // z.b. Vorkasse
// Verkaufsbelegart setzen
// oh.setDoc_type(CreditNoteType.G1F.getType()); //
// AZV=Versandauftrag;BV=Barverkauf
oh.setDoc_type("G1F");
// Verkaufsorganisation setzen (2000=SHOP, 5000=HWV)
oh.setSales_org(shop.sap.getSalesOrganization());
// 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(shop.sap.getSalesOffset(null));// 5097
// 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 = "0000079963";
Customer customer = Customer.fromId(99999, shop);
Address _address = customer.getAddress();
// Auftraggeber setzen
OrderExportByBAPI.fillPartner(partners, AddressType.AUFTRAGGEBER.getType(), _address, debitor, partnerAddresses, customer);
// Rechnungsempfänger setzen
OrderExportByBAPI.fillPartner(partners, AddressType.RECHNUNGSANSCHRIFT.getType(), _address, debitor, partnerAddresses, customer);
// Regulierer setzen (Partnerrollen stehen in Tabelle TPAR)
OrderExportByBAPI.fillPartner(partners, AddressType.REGULIERER.getType(), _address, debitor, partnerAddresses, customer);
// Warenempfänger setzen
OrderExportByBAPI.fillPartner(partners, AddressType.WARENEMPFAENGER.getType(), _address, debitor, partnerAddresses, customer);
// 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)
{
addSapItem(sapItems, article);
}
so.setOrder_items_in(sapItems);
// System.out.println("SO: " + so);
// 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;
}
@Override
protected void create() throws Exception
{
}
@Override
protected Form getFormProcessor()
{
if (request.arg.rma != null)
return request.arg.rma.retourDataToSAP;
return null;
}
public RetourDataToSAP()
{
super("rma.retourDataToSAP");
setIsUploadForm(true);
}
@Override
public int doStartTag() throws JspException
{
return super.doStartTag();
}
@Override
public void postValidate(StringBuffer reflectiveParameter) throws Exception
{
}
}