Thema: Delphi Frage zu SAP-iDoc

Einzelnen Beitrag anzeigen

SarDGer

Registriert seit: 19. Mai 2005
55 Beiträge
 
Delphi 7 Professional
 
#4

AW: Frage zu SAP-iDoc

  Alt 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)
  Mit Zitat antworten Zitat