Einzelnen Beitrag anzeigen

rdes

Registriert seit: 16. Jun 2005
3 Beiträge
 
Delphi 11 Alexandria
 
#1

SAP BAPI_MATERIAL_GETLIST Übergabe des Filters

  Alt 7. Dez 2021, 15:05
Datenbank: SAP • Version: 7.6 • Zugriff über: ActiceX
Hallo liebes Forum,
bin auf der Suche nach dem Fehler den ich mache.
Der Rückgabewert von SAP Lautet: „Value in field SIGN can only be I, E „

Die Beispiele auf der Seite,
http://www.joachim-lentz.homepage.t-online.de/intro.htm
Funktionieren soweit, also die Verbindung zu SAP ist OK.

Bei der BAPI Funktion „BAPI_MATERIAL_GETLIST“ stoß ich auf ein Problem.
Bei der Übergabe der Tabelle als Filter -> MATNRSELECTION wird etwas nicht stimmen.

Hat jemand einen Tipp?


Danke.

Viele Grüße
Reiner

Delphi-Quellcode:
procedure TForm1.Button18Click(Sender: TObject);
var i:integer;
txt:String;

iTabIndex,y:integer;

    item,mat,funct,selPlant,itemPlant:Variant;

begin

    funct := sapFunctions1.add('BAPI_MATERIAL_GETLIST');

    funct.exports['MAXROWS'].value :=100;


   mat:=funct.tables.item('MATNRSELECTION');

    item:=mat.rows.add;

         item.Value(1,'SIGN'):='I';
         item.Value(1,'OPTION'):='BT';
         item.Value(1,'MATNR_LOW') :='000000000006000107';
         item.Value(1,'MATNR_HIGH'):='000000000006020000';


  if not funct.call then
  showMessage(funct.exception)
  else begin

// Ausgabe Material
    tab2 := funct.tables.item['MATNRLIST'] ;
      if tab2.rowcount > 0 then
      begin

        iTabIndex := tab2.rowcount;



        for i := 1 to iTabIndex do
        begin

          try
            begin
              for y := 1 to 5 do
              begin
                txt := tab2.value(i, y);
                Grid.cells[y, i] := copy(txt, 0, 20);

              end;
            end;
          finally
            begin
            end;

          end;

         end;

             end;

// Ausgabe Fehler
           tab2 := funct.tables.item('RETURN');


LN_Rueckgabe.caption := inttostr(tab2.rowcount);
      if tab2.rowcount > 0 then
      begin

        iTabIndex := tab2.rowcount;


        for i := 1 to iTabIndex do
        begin

          try
            begin
              for y := 1 to 12 do
              begin
                txt := tab2.value(i, y);
                Grid.cells[y, i] := copy(txt, 0, 50);

              end;
            end;
          finally
            begin
            end;

          end;

        end;



             end;
 end;




end;

Geändert von rdes ( 8. Dez 2021 um 07:29 Uhr)
  Mit Zitat antworten Zitat