Bapi_salesorder_createfromdat1 und retoure per Java-Progr.

Rund um Java und SAP®.

Bapi_salesorder_createfromdat1 und retoure per Java-Progr.

Postby Walter3009 » Wed May 16, 2007 11:02 am

Hallo und guten Tag!
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)
  1. //imports gesetzt!!!
  2.  
  3. public class RetourDataToSAP extends AbstractRMAForm
  4. {
  5.  
  6.   private static final Logger logger = Logger.getLogger(utility.Utility.getLoggerName(OrderExportByBAPI.class));
  7.   private String originalSapNo;
  8.   private String sapOrder;
  9.  
  10.   @Output
  11.   @TldDescription("Generiert die Sap-Order Nummer")
  12.   public String getSapOrderNo() throws Exception
  13.   {
  14.     // Init.initLog4J();
  15.  
  16.     // Verbindung nach SAP-T01 herstellen
  17.     SAPConnection sapConnection = null;
  18.     originalSapNo = "1500162588";
  19.  
  20.     RMASAPConnection conn = new RMASAPConnection();
  21.     List<RMASAPArticleObject> articles = conn.resultSets&#40;originalSapNo&#41;;
  22.  
  23.     try
  24.     &#123;
  25.       sapConnection = new SAPConnection&#40;Client.T01_100&#41;;
  26.       RetourDataToSAP rdts = new RetourDataToSAP&#40;&#41;;
  27.       sapOrder = rdts.createRMAOrder&#40;sapConnection, Shop.TEST, originalSapNo, articles, null&#41;;
  28.       System.out.println&#40;"SAP-Order=" + sapOrder&#41;;
  29.     &#125;
  30.     catch &#40;Exception e&#41;
  31.     &#123;
  32.       System.out.println&#40;JavaLangUtil.getInfo&#40;e&#41;&#41;;
  33.     &#125; finally
  34.     &#123;
  35.       if &#40;sapConnection != null&#41;
  36.       &#123;
  37.         // Sicher Verbindung trennen
  38.         sapConnection.close&#40;&#41;;
  39.       &#125;
  40.       Scheduler.safeShutdown&#40;false&#41;;
  41.     &#125;
  42.     return sapOrder;
  43.   &#125;
  44.  
  45.   @Output
  46.   public String getAusgabeSession&#40;&#41;
  47.   &#123;
  48.     String test = request.session.rmaContext.returnReason.getShortName&#40;&#41;;
  49.    
  50.     return test;    
  51.   &#125;
  52.  
  53.   public void addSapItem&#40;BapiiteminTable sapItems, RMASAPArticleObject article&#41;
  54.   &#123;
  55.     BapiiteminTable.Row sapItem = sapItems.createRow&#40;&#41;;
  56.     sapItem.setShort_text&#40;article.articleDescription&#41;;
  57.     sapItem.setMaterial&#40;article.articleNo&#41;;
  58.     sapItem.setTarget_qu&#40;String.valueOf&#40;article.quantity&#41;&#41;;
  59.     sapItem.setReq_qty&#40;String.valueOf&#40;article.quantity * 1000&#41;&#41;;
  60.     // sapItem.setItem_categ&#40;"TAN"&#41;;
  61.     // Zieleinheit
  62.     sapItem.setTarget_qu&#40;"ST"&#41;;
  63.     // Verkaufseinheit
  64.     sapItem.setSales_unit&#40;"ST"&#41;;
  65.     sapItem.setReason_rej&#40;"03"&#41;;
  66.     //sapItem.setReason_rej&#40;request.session.rmaContext.returnReason.getShortName&#40;&#41;&#41;;
  67.     //sapItem.setReason_rej&#40;test&#41;;
  68.     sapItems.add&#40;sapItem&#41;;
  69.   &#125;
  70.  
  71.   public String createRMAOrder&#40;SAPConnection sapConnection, Shop shop, String originalSapNo, List<RMASAPArticleObject> articles, Address address&#41; throws Exception
  72.   &#123;
  73.     Bapi_salesorder_createfromdat1 so = new Bapi_salesorder_createfromdat1&#40;sapConnection&#41;;
  74.  
  75.     // Kopfdaten des Auftrags setzen
  76.     Bapisdhead oh = new Bapisdhead&#40;&#41;;
  77.  
  78.     // Liefersperre setzen sofern notwendig
  79.     // oh.setDlv_block&#40;"VK"&#41;; // z.b. Vorkasse
  80.  
  81.     // Verkaufsbelegart setzen
  82.     // oh.setDoc_type&#40;CreditNoteType.G1F.getType&#40;&#41;&#41;; //
  83.     // AZV=Versandauftrag;BV=Barverkauf
  84.     oh.setDoc_type&#40;"G1F"&#41;;
  85.  
  86.     // Verkaufsorganisation setzen &#40;2000=SHOP, 5000=HWV&#41;
  87.     oh.setSales_org&#40;shop.sap.getSalesOrganization&#40;&#41;&#41;;
  88.  
  89.     // Vertriebsweg
  90.     oh.setDistr_chan&#40;"01"&#41;;
  91.  
  92.     // Sparte
  93.     oh.setDivision&#40;"01"&#41;;
  94.  
  95.     // Verkaufsgruppe
  96.     oh.setSales_grp&#40;"6"&#41;;
  97.  
  98.     // Zuständige SAP-Verkaufsbüro als 4-stelliges Textkürzel
  99.     oh.setSales_off&#40;shop.sap.getSalesOffset&#40;null&#41;&#41;;// 5097
  100.  
  101.     // Bestellnummer des Kunden setzen
  102.     oh.setPurch_no&#40;"Kundenbestellnummer"&#41;;
  103.  
  104.     // Bestelldatum &#40;hier aktuelles Datum&#41;
  105.     oh.setPurch_date&#40;new Date&#40;&#41;&#41;;
  106.  
  107.     // Versandbedingung setzen
  108.     oh.setShip_cond&#40;"PV"&#41;;
  109.  
  110.     // Kopfdaten in BAPI-Struktur setzen
  111.     so.setOrder_header_in&#40;oh&#41;;
  112.  
  113.     // Diverse Partner setzen
  114.     BapipartnrTable partners = new BapipartnrTable&#40;&#41;;
  115.     // Zusätzliche Adressangaben &#40;nur hier kann man E-Mail setzen&#41;, später für
  116.     // salesorder_change benötigt
  117.     Bapiaddr1Table partnerAddresses = new Bapiaddr1Table&#40;&#41;;
  118.  
  119.     // Test-Debitor
  120.     String debitor = "0000079963";
  121.  
  122.     Customer customer = Customer.fromId&#40;99999, shop&#41;;
  123.     Address _address = customer.getAddress&#40;&#41;;
  124.  
  125.     // Auftraggeber setzen
  126.     OrderExportByBAPI.fillPartner&#40;partners, AddressType.AUFTRAGGEBER.getType&#40;&#41;, _address, debitor, partnerAddresses, customer&#41;;
  127.  
  128.     // Rechnungsempfänger setzen
  129.     OrderExportByBAPI.fillPartner&#40;partners, AddressType.RECHNUNGSANSCHRIFT.getType&#40;&#41;, _address, debitor, partnerAddresses, customer&#41;;
  130.  
  131.     // Regulierer setzen &#40;Partnerrollen stehen in Tabelle TPAR&#41;
  132.     OrderExportByBAPI.fillPartner&#40;partners, AddressType.REGULIERER.getType&#40;&#41;, _address, debitor, partnerAddresses, customer&#41;;
  133.  
  134.     // Warenempfänger setzen
  135.     OrderExportByBAPI.fillPartner&#40;partners, AddressType.WARENEMPFAENGER.getType&#40;&#41;, _address, debitor, partnerAddresses, customer&#41;;
  136.  
  137.     // Wichtig: Immer alle relevanten Partner setzen, da SAP ansonsten
  138.     // Defaultannahmen trifft!
  139.     so.setOrder_partners&#40;partners&#41;;
  140.  
  141.     // Auftragsliste setzen aus Warenkorb
  142.     BapiiteminTable sapItems = new BapiiteminTable&#40;&#41;;
  143.  
  144.     for &#40;RMASAPArticleObject article : articles&#41;
  145.     &#123;
  146.       addSapItem&#40;sapItems, article&#41;;
  147.     &#125;
  148.  
  149.     so.setOrder_items_in&#40;sapItems&#41;;
  150.  
  151.     // System.out.println&#40;"SO: " + so&#41;;
  152.  
  153.     // Ausführen
  154.     so.execute&#40;&#41;;
  155.  
  156.     Bapireturn1 ret = so.getReturn&#40;&#41;;
  157.     if &#40;!ret.getNumber&#40;&#41;.equalsIgnoreCase&#40;"000"&#41;&#41;
  158.     &#123;
  159.       String soError = ret.getMessage&#40;&#41;;
  160.       throw new Exception&#40;"BAPI-Fehler:" + soError&#41;;
  161.     &#125;
  162.  
  163.     // Auftragsnummer lesen
  164.     String sdOrder = so.getSalesdocument&#40;&#41;;
  165.  
  166.     return sdOrder;
  167.   &#125;
  168.  
  169.  
  170.  
  171.   @Override
  172.   protected void create&#40;&#41; throws Exception
  173.   &#123;
  174.    
  175.    
  176.   &#125;
  177.  
  178.   @Override
  179.   protected Form getFormProcessor&#40;&#41;
  180.   &#123;
  181.     if &#40;request.arg.rma != null&#41;
  182.       return request.arg.rma.retourDataToSAP;
  183.     return null;
  184.   &#125;
  185.  
  186.   public RetourDataToSAP&#40;&#41;
  187.   &#123;
  188.     super&#40;"rma.retourDataToSAP"&#41;;
  189.     setIsUploadForm&#40;true&#41;;
  190.   &#125;
  191.  
  192.   @Override
  193.   public int doStartTag&#40;&#41; throws JspException
  194.   &#123;
  195.     return super.doStartTag&#40;&#41;;
  196.   &#125;
  197.  
  198.   @Override
  199.   public void postValidate&#40;StringBuffer reflectiveParameter&#41; throws Exception
  200.   &#123;
  201.    
  202.   &#125;
  203. &#125;
  204.  
GeSHi ©
Walter3009
..
..
 
Posts: 14
Joined: Wed May 16, 2007 11:02 am

Postby ewx » Wed May 16, 2007 5:02 pm

Du benötigst den BAPI_CUSTOMERRETURN_CREATE um eine Retoure anzulegen!
lg,
ewx
.....
.....
 
Posts: 2840
Joined: Mon Aug 04, 2003 9:02 pm

Postby Walter3009 » Wed Jun 27, 2007 11:08 am

Benutze jetzt den....BAPI_CUSTOMERRETURN_CREATE....!Allerdings erhalte ich eine Fehlermeldung:

Fehler beim BAPI-Funktionsaufruf: Beleg 1500137081 hat nicht Belegtyp , sondern (1500137081, , , ).

Wobei 1500137081 der original auftrag ist

Kann mir bitte jemand sagen woran das liegt?

gruß
Walter3009
..
..
 
Posts: 14
Joined: Wed May 16, 2007 11:02 am


Return to Java & SAP®

Who is online

Users browsing this forum: No registered users and 3 guests

cron