Registriert seit: 19. Mai 2005
55 Beiträge
Delphi 7 Professional
|
AW: Frage zu SAP-iDoc
10. Mai 2011, 08:36
Hätte ich ja fast vergessen:
Folgendes Beispiel hatte ich uA gefunden:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
(* BusinessObject auswählen *)
Mat:= SAPBapiControl1.GetSAPObject('BUS2012');
(* Strukturen definieren *)
Header := SAPBapiCcontrol1.dimAs (Mat,'CreateFromData','PoHeader');
Schedul:= SAPBapiCcontrol1.dimAs (Mat,'CreateFromData','PoItemSchedules');
Item := SAPBapiCcontrol1.dimAs (Mat,'CreateFromData','PoItems');
Ret := SAPBapiCcontrol1.dimAs (Mat,'CreateFromData','Return');
(* Bestellkopfdaten *)
Header.value ('DOC_TYPE') := 'NB';
Header.value ('DOC_CAT') := 'F';
Header.value ('PURCH_ORG'):= '10';
Header.value ('PUR_GROUP'):= '10';
Header.value ('VENDOR') := '0010000999';
(* Positionsdaten Position 00010 *)
Item.Rows.Add;
Item.Value (1,'PO_ITEM') := '00010';
Item.Value (1,'PUR_MAT') := '000000000000000017';
Item.Value (1,'STORE_LOC') := '100';
Item.Value (1,'PLANT') := '1000';
Item.Value (1,'NET_PRICE') := '10,00';
(* Einteilungsdaten Position 00010 *)
Schedul.Rows.Add;
Schedul.Value (1,'PO_ITEM') := '00010';
Schedul.Value (1,'DEL_DATCAT') := '1';
Schedul.Value (1,'DELIV_DATE') := '20.09.2000';
Schedul.Value (1,'QUANTITY') := '10';
(* Positionsdaten Position 00020 *)
Item.Rows.Add;
Item.value (2,'PO_ITEM') := '00020';
Item.value (2,'PUR_MAT') := '000000000000001161';
Item.value (2,'STORE_LOC') := '100';
Item.value (2,'PLANT') := '1000';
Item.value (2,'NET_PRICE') := '10,00';
(* Einteilungsdaten Position 00020 *)
Schedul.Rows.Add;
Schedul.Value (2,'PO_ITEM') := '00020';
Schedul.Value (2,'DEL_DATCAT') := '1';
Schedul.Value (2,'DELIV_DATE') := '20.09.2000';
Schedul.Value (2,'QUANTITY') := '10';
(* Methode CreateFromData ausführen *)
Mat.CreateFromData (PoHeader := Header,
SkipItemsWithError:= ' ',
PoItems := Item,
PoItemSchedules := Schedul,
Return := Ret);
(* Fehler werden in der Struktur Ret abgelegt *)
if Ret.RowCount > 0 then
begin
Panel1.Caption:= Ret.Value (1,'TYPE');
Panel2.Caption:= Ret.Value (1,'MESSAGE');
end
(* Wurde die Methode fehlerfrei ausgeführt, *)
(* Belegnummer ausgeben *)
else Panel2.Caption:= Mat.PurchaseOrder;
end;
Quelle: zur Quelle
Allerdings ist mir nicht ganz klar was Buisness-Object 'BUS2012' oder
der Richtige 'DOC_TYPE' usw. ist.
Aussdem soll ich ja einen bestehenden Datensatz updaten.
Gruß,
Sar D'Ger
Geändert von SarDGer (10. Mai 2011 um 08:41 Uhr)
|
|
Zitat
|