SAP Jobsuche bei DV-Treff
Tombe
  • Tombe
  • SAP Forum - Neuling Thema Starter
vor 5 Jahre
Hallo! Erstmal gratuliere zu nem sehr feinen Forum, hier findet man wirklich viel.

Dennoch bleibt bei mir eine Frage offen...

Kurze Erklärung: Ich entwickle aktuell einen Datenaustausch in C# mit SAP. Dazu haben wir uns ne .dll von ERP-Connect zugekauft, die von SAP zertifiziert ist.

Anforderung: Übertragung von Prozessaufträgen mittels "BAPI_PROCORD_GET_DETAIL". In weiterer Folge lege ich diese in unserem System an und verarbeite diese. Soweit funktioniert alles. Bei gewissen Produkten soll ich nun die Verfügbarkeit prüfen per Scanner (Handheld). Dafür gibt es 2 Fälle:

1) Artikel +Menge + Chargencode: Egal wo im Werk, die Menge muss auf Lager sein!

2) Artikel-Nr(Dummy-Artikel): Auftrag + Artikelnr

Diese Artikel werden von einer anderen Firma vorgerichtet. Wenn die das schon gemacht haben, muss dieser Artikel für diesen Auftrag reserviert auf Lager liegen (im Werk)

Ich habe jetzt schon einiges an Doku gelesen und komme immer wieder auf die Bapi "BAPI_MATERIAL_AVAILABILITY". Leider ist das glaube ich nicht ganz das, was ich will. Habt ihr vielleicht nen Tipp für mich?

EDIT:

Ich hätte das circa so verstanden... leider bekomme ich immer Menge 0,000 zurück, egal welchen Artikel ich anfrage, sofern die Materialnummer bekannt ist:

BusinessObjectMethod f =

connection.CreateBapi("Material", "Availability");

(Die Daten müssten alle Stimmen (werk, material und Unit)

f.Exports["PLANT"].ParamValue = "0001";

f.Exports["MATERIAL"].ParamValue = "000000000000300378";

f.Exports["UNIT"].ParamValue = "KG";

f.Execute();

RFCStructure BapiRet1 = f.Imports["RETURN"].ToStructure();

string Menge = f.Imports["AV_QTY_PLT"].ToString();

Horst_1959
vor 4 Jahre
Ein Beispiel habe ich. Ich benutze es um Unterdeckung zu finden.

Also ob ein bestimmter Fauf hohe Prio hat.

Du müsstest den Baustein RFC-fähig machen und entsprechend umbauen.

Also wenn Du magst hier das Beispiel :

FUNCTION z_matlabst.

*"----------------------------------------------------------------------

*"*"Lokale Schnittstelle:

*" IMPORTING

*" VALUE(I_MATNR) TYPE MATNR

*" VALUE(I_WERKS) TYPE WERKS_D

*" VALUE(I_DATUM) TYPE DATS OPTIONAL

*" VALUE(I_AUFNR) TYPE AUFNR OPTIONAL

*" EXPORTING

*" VALUE(E_LABST) TYPE LABST

*" VALUE(E_KRITISCH) TYPE CHAR01

*"----------------------------------------------------------------------

TYPE-POOLS : abap.

DATA : l_mt61d TYPE mt61d,

l_mdkp TYPE mdkp,

l_cm61m TYPE cm61m,

l_mdsta TYPE mdsta,

l_ergbz TYPE sfilt-ergbz,

lta_mdpsx TYPE STANDARD TABLE OF mdps,

lta_mdezx TYPE STANDARD TABLE OF mdez,

lta_mdsux TYPE STANDARD TABLE OF mdsu.

FIELD-SYMBOLS : TYPE mdez.

DATA : l_aufnr TYPE aufnr,

l_aufnr_lang TYPE i,

l_bestand TYPE mng01,

l_sichbest TYPE mng01,

l_gefunden TYPE boolean,

l_dat00 TYPE dat00. " Zugangs-/Bedarfstermin

*----- Den Wert auf false setzen

e_kritisch = abap_false.

DESCRIBE FIELD l_aufnr LENGTH l_aufnr_lang IN CHARACTER MODE.

*----- Lesen der Bedarfs-/Bestandsliste

CALL FUNCTION 'MD_STOCK_REQUIREMENTS_LIST_API'

EXPORTING

* PLSCN =

matnr = i_matnr

werks = i_werks

* BERID =

* ERGBZ =

* AFIBZ =

* INPER =

* DISPLAY_LIST_MDPSX =

* DISPLAY_LIST_MDEZX =

* DISPLAY_LIST_MDSUX =

nobuf = abap_false

* PLAUF =

* I_VRFWE =

* IS_SFILT =

* IS_AFILT =

IMPORTING

e_mt61d = l_mt61d

e_mdkp = l_mdkp

e_cm61m = l_cm61m

e_mdsta = l_mdsta

e_ergbz = l_ergbz

TABLES

mdpsx = lta_mdpsx

mdezx = lta_mdezx

mdsux = lta_mdsux

EXCEPTIONS

material_plant_not_found = 1

plant_not_found = 2

OTHERS = 3.

*----- Start initialisieren

SORT lta_mdezx BY aline.

l_gefunden = abap_false.

IF i_datum IS INITIAL.

l_dat00 = '99991231'. " Maximaldatum SAP

ELSE.

l_dat00 = i_datum.

ENDIF.

l_bestand = 0.

*----- Bestand berechnen

LOOP AT lta_mdezx ASSIGNING .

CASE -delkz.

WHEN 'WB'. " Anfangsbestand

l_bestand = l_bestand + -mng02.

WHEN 'SH'. " Sicherheitsbestand

l_sichbest = abs( -mng01 ). " Negative Werte!

* l_bestand = l_bestand - l_sichbest.

WHEN 'FE'.

l_aufnr = -extra+0(l_aufnr_lang).

IF l_aufnr = i_aufnr.

l_gefunden = abap_true.

l_dat00 = -dat00.

ENDIF.

IF l_gefunden = abap_false.

l_bestand = l_bestand + -mng01.

ENDIF.

WHEN 'AR' OR 'SB'.

IF -dat00 <= l_dat00.

l_bestand = l_bestand + -mng01. " Negative Werte!

ELSE.

EXIT. " ein Tick performanter da nach Datum sortiert ist

ENDIF.

WHEN OTHERS.

ENDCASE.

ENDLOOP.

*----- Übergabe der Export-Parameter

e_labst = l_bestand.

IF l_bestand < 0.

*----- HK 19.05.2017 Nicht gefunden nicht bewerten

e_kritisch = l_gefunden.

*-----

* e_kritisch = abap_true.

*-----

ENDIF.

ENDFUNCTION.