Ich versuche eine Retoure zu buchen per java progr. erhalte aber leider immer ein null-Objekt, wenn ich folgendes versuche:
1)Verkaufsbelegart setzen ==> auf G1F
2)Diese Fehlermeldung habe ich auch erhalten und weiss nichts damit anzufangen:
"BAPI-Fehler:Unzulässige Kombination Business Objekt BUS2032 und Vertriebsbelegtyp H".
------------------------------------------------
Code zu 1)
- Code: [Select all] [Expand/Collapse] [Download] (Untitled.txt)
- //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);
- {
- 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);
- }
- {
- System.out.println(JavaLangUtil.getInfo(e));
- } finally
- {
- {
- // 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();
- {
- 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
- {
- return null;
- }
- public RetourDataToSAP()
- {
- super("rma.retourDataToSAP");
- setIsUploadForm(true);
- }
- @Override
- public int doStartTag() throws JspException
- {
- }
- @Override
- public void postValidate(StringBuffer reflectiveParameter) throws Exception
- {
- }
- }
- GeSHi ©