Eigene Tabellen können Sie mit InputAssistant frei gestalten und in beliebige SAP-Bildschirme integrieren. Sie können damit Zusatzdaten aufbereiten oder eine eigene Datenerfassung in tabellarischer Form anbieten. |
Als Beispiel blenden wir in der Materialanzeige MM03 eine Tabelle mit Informationen pro Werk ein. In der Standardtransaktion zeigen wir eine zusätzliche Drucktaste an:
In der Tabelle können Sie Spalten in den Formaten Ausgabe, Eingabe, Checkbox oder Drucktaste definieren. Die Definition der Tabelle erfolgt über die Schlüsselwörter Table und Column. Für jede Zelle der Tabelle gibt es eine GuiXT-Variable: Wenn tabx der Name der Tabelle ist und eine der Spalten "werk" heisst, ist der Name der Zellenvariablen in der 5.Zeile V[tabx.cell.werk,5]. In ähnlicher Weise sind Standardvariablen für die Anzahl Zeilen, Breite der Spalten usw. definiert. Details finden Sie bei Table. GuiXT Script: // Display plant info in transaction MM03 if Q[Transaction=MM03]Set V[matnr] "&F[RMMG1-MATNR]" -uppercase // plant table to be displayed? if V[matnr] and V[display_plants=X] // material number changed since last plant table display? then read data again if not V[matnr=&V[plants_matnr]] Enter process="mm03plants\plants_read.txt" Stop Script endif Table (3,1) (12,100) name="plants" _ title="Einkaufsdaten pro Werk für Material &V[matnr] &V[mattext]" _ rows="&V[plants_count]" fixedColumns=1 Column "Werk" name="werks" size=6 -pushButton process="mm03plants\plants_select.txt" Column "Verfügbar" name="avamount" size=8 -readOnly -alignRight Column "Minimum" name="minbe" size=8 -readOnly -alignRight Column "Maximum" name="mabst" size=8 -readOnly -alignRight Column "Einheit" name="meins" size=8 -readOnly Column "Autom.Best." name="kautb" size=10 -readOnly -checkBox Column "Liefertage" name="plifz" size=10 -readOnly Column "Einkäufer" name="ekgrp" size=10 -readOnly Column "Herkunft" name="herkl" size=8 -readOnly Column "Profitcenter" name="prctr" size=16 -readonly Pushbutton (3,101) "X" process="mm03plants\plants_off.txt" size=(1,2) // refresh data on Enter On Enter process="mm03plants\plants_read.txt" else Pushbutton (3,0) "Einkaufsdaten pro Werk anzeigen" process="mm03plants\plants_read.txt" endif endif
Das Lesen der Zusatzdaten erfolgt über den Aufruf von Funktionsbausteinen:
Die ersten drei sind SAP-Standardbausteine. Zu /GUIXT/DBSELECT finden Sie hier nähere Informationen. /GUIXT/EXT2INT dient zur Konvertieung von externem in internes Format; der Baustein ist in dem gleichen Transportauftrag wie /GUIXT/DBSELECT enthalten. // InputScript "plants_read.txt" // convert to internal format // save material number in additional field Set V[plants_matnr] "&F[RMMG1-MATNR]" -uppercase // Read material data Call "BAPI_MATERIAL_GET_DETAIL" in.MATERIAL="&V[matnr_int]" out.MATERIAL_GENERAL_DATA="matdata" // Text and unit Set V[mattext] "&V[matdata](BAPIMATDOA-MATL_DESC)" Set V[matunit] "&V[matdata](BAPIMATDOA-BASE_UOM)" // read SAP database plant table MARC // reset table // number of plants read Set V[plants_count] 0 Set V[i] 1label next_plantCopyText fromText="data" toString="datarow" line=&V[i] if Q[ok]Set V[plant] "&V[datarow]" Set V[plants.cell.werks.&V[i]] "&V[plant]" // read additional plant data Call "BAPI_MATERIAL_GET_ALL" in.MATERIAL="&V[matnr_int]" in.PLANT="&V[plant]" _ out.PLANTDATA="plantdata" Set V[plants.cell.ekgrp.&V[i]] "&V[plantdata](BAPI_MARC_GA-PUR_GROUP)" Set V[plants.cell.prctr.&V[i]] "&V[plantdata](BAPI_MARC_GA-PROFIT_CTR)" Set V[plants.cell.kautb.&V[i]] "&V[plantdata](BAPI_MARC_GA-AUTO_P_ORD)" Set V[plants.cell.meins.&V[i]] "&V[matunit]" Set V[plants.cell.plifz.&V[i]] "&V[plantdata](BAPI_MARC_GA-PLND_DELRY)" -unpack // Minimum Set V[minbe] "&V[plantdata](BAPI_MARC_GA-REORDER_PT)" -unpack Set V[minbe] &V[minbe] / 1000 if V[minbe=0] Set V[minbe] "" endif Set V[plants.cell.minbe.&V[i]] &V[minbe] // Maximum Set V[mabst] "&V[plantdata](BAPI_MARC_GA-MAX_STOCK)" -unpack Set V[mabst] &V[mabst] / 1000 if V[mabst=0] Set V[mabst] "" endif Set V[plants.cell.mabst.&V[i]] &V[mabst] // country Set V[plants.cell.herkl.&V[i]] "&V[plantdata](BAPI_MARC_GA-COUNTRYORI)" // available amount in this plant Call "BAPI_MATERIAL_AVAILABILITY" in.MATERIAL="&V[matnr_int]" in.PLANT="&V[plant]" _ in.UNIT="&V[matunit]" out.AV_QTY_PLT="avamount" Set V[plants.cell.avamount.&V[i]] &V[avamount] / 1000 // total number of plants for this material Set V[plants_count] &V[i] // next data row Set V[i] &V[i] + 1 goto next_plant endif if V[plants_count>0]Set V[display_plants] "X" else Message "E: Keine Werksdaten verfügbar" -statusline endif Return Zum Ausschalten der Anzeige dient das // InputScript "plants_off.txt" Set V[display_plants] ""Set V[plant_matnr] "" Return
In
dem Beispiel zeigen wir bei Klick auf die Drucktaste in Spalte "Werk"
den Reiter "Einkauf" der MM03 für das entsprechende Werk an, z.B. bei
Klick auf
Sprung in MM03, Reiter "Einkauf", bei Klick auf die Drucktaste in Spalte "Werk" Dazu wird bei der Spalte "Werk" ein InputScript angegeben, das bei Klick auf die Drucktaste ausgeführt wird: Column "Werk" name="werks" size=6 -pushButton process="mm03plants\plants_select.txt" Die ausgewählte Zeile erhält man über die Systemvariable V[_tabrowabs]. // InputScript "plants_select.txt" // Display data for selected plant in MM03 // delete current view selection Screen SAPLMGMM.0070 Enter "/19" // Select first material view Screen SAPLMGMM.0070 Set cell[Table,0,1] "X" Enter // to tab
Purchasing Enter "=SP09" // Set plant in organizational popup Screen SAPLMGMM.0081 Set F[RMMG1-WERKS] "&V[plants.cell.werks.&V[_tabrowabs]]" Enter
Sie können die Scripte hier runterladen: mm03plants_d.zip
|