PARAMETER Auswahl-Werte aus internen Tabellen

Getting started ... Alles für einen gelungenen Start.
9 Beiträge • Seite 1 von 1
9 Beiträge Seite 1 von 1

PARAMETER Auswahl-Werte aus internen Tabellen

Beitrag von SteveOh (ForumUser / 44 / 3 / 0 ) »
Hallo zusammen, habe eine Frage zu PARAMETERS...
Ist es möglich den Eingabefeldern bestimmte Werte aus einer internen Tabelle zuzuweisen? Sprich ich habe eine interne Tabelle, möchte aber dass die Werte aus dieser Tabelle zur Auswahl stehen im Eingabefeld (also ähnlich wie unten mit tadir-devclass nur mit einer internen Tabelle)... ISt sowas möglich, und wenn ja, wie setze ich es um? Dann müsste ich ja beim Programmstart die Tabelle füllen, und dann die Werte an das Eingabefeld übergeben ... oder ?

PARAMETERS: Package TYPE tadir-devclass OBLIGATORY,
Prog TYPE string.

Noch eine Frage: ist es möglich ein Event zu starten, wenn man zB etwas im Eingabefeld eingetragen hat? Z.B. ich wähle eine DEVCLASS aus, dieses Startet ein Event - nämlich die Abfrage welche die interne Tabelle füllt und schließlich werden diese Werte an das 2. Eingabefeld übertragen... Im 2. Eingabefeld würden zB alle Programme zur Auswahl stehen, die in der im Auswahlfeld 1 eingetragenen DEVCLASS zu finden sind...

Vielen Dank im Voraus!

gesponsert
Stellenangebote auf ABAPforum.com schalten
kostenfrei für Ausbildungsberufe und Werksstudenten


Re: PARAMETER Auswahl-Werte aus internen Tabellen

Beitrag von ratsnus (Specialist / 357 / 2 / 56 ) »
ja das geht... siehe Beispiel:

Code: Alles auswählen.

SELECTION-SCREEN BEGIN OF BLOCK bl_001 WITH FRAME TITLE text-001.
PARAMETERS: matnr LIKE CSAP_MBOM-MATNR,
            werks LIKE CSAP_MBOM-WERKS,
            stlan LIKE CSAP_MBOM-STLAN default '1',
            stlal LIKE CSAP_MBOM-STLAL,
            remote(1) type c no-display.
SELECTION-SCREEN END OF BLOCK bl_001.

at selection-screen on value-request for stlal.
  perform f4_stlal.

START-OF-SELECTION.
und hier die Form:

Code: Alles auswählen.

*&---------------------------------------------------------------------*
*&      Form  f4_stlal
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
form f4_stlal.
  data: begin of f4_stlal occurs 0,
          stlal like mast-stlal,
          stktx like stko-stktx,
        end of f4_stlal.
  DATA : return_tab LIKE ddshretval OCCURS 0 WITH HEADER LINE.
  data:  dynfields like DYNPREAD occurs 0 with header line.
  data: flag type c,
        v_matnr like mara-matnr.
  clear: f4_stlal[], return_tab, flag.



  CALL FUNCTION 'DYNP_VALUES_READ'
    EXPORTING
      DYNAME                               = 'ZVS_PRODUCTION_BOM'
      DYNUMB                               = '1000'
*   TRANSLATE_TO_UPPER                   = ' '
      REQUEST                              = 'A'
*   PERFORM_CONVERSION_EXITS             = ' '
*   PERFORM_INPUT_CONVERSION             = ' '
*   DETERMINE_LOOP_INDEX                 = ' '
*   START_SEARCH_IN_CURRENT_SCREEN       = ' '
*   START_SEARCH_IN_MAIN_SCREEN          = ' '
*   START_SEARCH_IN_STACKED_SCREEN       = ' '
*   START_SEARCH_ON_SCR_STACKPOS         = ' '
*   SEARCH_OWN_SUBSCREENS_FIRST          = ' '
*   SEARCHPATH_OF_SUBSCREEN_AREAS        = ' '
    TABLES
      DYNPFIELDS                           = dynfields
* EXCEPTIONS
*   INVALID_ABAPWORKAREA                 = 1
*   INVALID_DYNPROFIELD                  = 2
*   INVALID_DYNPRONAME                   = 3
*   INVALID_DYNPRONUMMER                 = 4
*   INVALID_REQUEST                      = 5
*   NO_FIELDDESCRIPTION                  = 6
*   INVALID_PARAMETER                    = 7
*   UNDEFIND_ERROR                       = 8
*   DOUBLE_CONVERSION                    = 9
*   STEPL_NOT_FOUND                      = 10
*   OTHERS                               = 11
            .
  IF SY-SUBRC <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  ENDIF.

  read table dynfields with key fieldname = 'MATNR'.
  matnr = dynfields-fieldvalue.

  read table dynfields with key fieldname = 'WERKS'.
  werks = dynfields-fieldvalue.

  read table dynfields with key fieldname = 'STLAN'.
  STLAN = dynfields-fieldvalue.

*text-900 =  'Material Nummer und Werk müssen gefüllt sein.'

  if matnr is initial or werks is initial.
    CALL FUNCTION 'POPUP_TO_DISPLAY_TEXT'
      EXPORTING
        TEXTLINE1 = text-900.
  else.

    CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
      EXPORTING
        input  = matnr
      IMPORTING
        output = v_matnr.

    select mast~stlal stko~stktx into (f4_stlal-stlal, f4_stlal-stktx )
      from ( mast inner join stko on mast~stlnr = stko~stlnr
                                  and mast~stlal = stko~stlal )
      where mast~matnr eq v_matnr
      and   mast~werks eq werks
      and   mast~stlan eq stlan.

      append f4_stlal.
    endselect.

    CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
      EXPORTING
        RETFIELD        = 'STLAL'
        DYNPPROG        = 'ZVS_PRODUCTION_BOM'
        DYNPNR          = '1000'
        DYNPROFIELD     = 'STLAL'
        VALUE_ORG       = 'S'
      TABLES
        VALUE_TAB       = f4_stlal
        return_tab      = return_tab
      EXCEPTIONS
        PARAMETER_ERROR = 1
        NO_VALUES_FOUND = 2
        OTHERS          = 3.
    IF SY-SUBRC EQ 0.

    ENDIF. " IF SY-SUBRC EQ 0
  endif.

endform.  
das sollte dir helfen das für dich selbst umzubauen. :) hatte vergessen zu schreiben, das hier ebenfalls zuerst das vorhandensein von werks und matnr geprüft wird, damit ich weiss welche Alternativen ich suchen muss. das sollte auch deine zweite Frage beantworten.

gruss
<:: XING-Gruppe Tricktresor::>

Re: PARAMETER Auswahl-Werte aus internen Tabellen

Beitrag von black_adept (Top Expert / 4086 / 126 / 940 ) »
Hallo SteveOh,

wenn die Wertemenge halbwegs begrenzt ist, kannst du das mit einer Listbox machen.
Beispiel:

Code: Alles auswählen.

REPORT.

PARAMETERS: x TYPE dd04d-datatype AS LISTBOX VISIBLE LENGTH 20 USER-COMMAND space.

AT SELECTION-SCREEN.
  BREAK-POINT.
2. Punkt deiner Frage: Event starten, wenn etwas in ein Feld eingetragen wurde. Geht so nicht - erst wenn du [wie auch immer] einen Funktionscode auslöst wird PAI ( bzw. AT SELECTION-SCREEN ... bei Reports ) durchlaufen.
live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Re: PARAMETER Auswahl-Werte aus internen Tabellen

Beitrag von SteveOh (ForumUser / 44 / 3 / 0 ) »
Danke für die Antworten!

@black_adept: Die Listbox kann aber nur Werte aus Systemtabellen beziehen richtig? ... gibt es einen Workaround um Werte aus einer internen Tabele zu beziehen? Oder nur selektierte Werte aus Systemtabellen zu beziehen (zB einfach eine bestimmte Select-Abfrage direkt in die Listbox rein)? Das wäre genau das, wonach ich suche...
Wenn es nicht möglich ist einen Event durch das Einfügen der Werte zu starten, wie ist das in SAP geregelt? Es gibt ja viele Transaktionen die erst nach Eingabe von einem Wert alle andere Werte dazu laden...

mein prog sieht so aus:
devclsas wird als TYPE tadir-devclass erzeugt. Alle devclasses stehen da zur Auswahl.
Das Eingabefeld/Listbox Programm soll dann einfach nur noch alle Programme anzeigen die in der ausgewählten DEVCLASS vorhanden sind... dazu muss ja etwas gestartet werden, Werte berechnet und an PROGRAMM geliefert werden.. aber wie ...

1. DEVCLASS: _____________________O

2. PROGRAMM:____________________O



@ratnus: leider gibt es einen Fehler im Code bei mir bei: clear: f4_stlal&#91;&#93;, return_tab, flag :/

Geht sowas nicht einfacher :(

Re: PARAMETER Auswahl-Werte aus internen Tabellen

Beitrag von SteveOh (ForumUser / 44 / 3 / 0 ) »
Hallo zusammen!

Habe jetzt was gefunden:
http://help.sap.com/saphelp_bw/helpdata ... ontent.htm

Mit dem dort angegebnen Code werden Werte aus internen Tabelle in Drop-Downs geladen... genau das was ich brauche!

Könnte das ganze an meine Tabelle anpassen ...
Bloß kann ich das bei mir nicht testen, da der Code bei mir immer den Fehler schmeißt:" Im Prog wurde versucht das Dynpro 0100 zu verwenden. Dieses Dynpro existiert nicht. "
Fehler Zeile 24: name = 'DEMOF4HELP-CONNID'.... was ist zu tun? :cry: :cry:

Re: PARAMETER Auswahl-Werte aus internen Tabellen

Beitrag von black_adept (Top Expert / 4086 / 126 / 940 ) »

Code: Alles auswählen.

REPORT.

PARAMETERS: p_matnr TYPE matnr AS LISTBOX VISIBLE LENGTH 60 USER-COMMAND space.

AT SELECTION-SCREEN.
  BREAK-POINT.

INITIALIZATION.
  PERFORM fill_listbox.
*&---------------------------------------------------------------------*
*&      Form  FILL_LISTBOX
*&---------------------------------------------------------------------*
FORM fill_listbox .
  TYPE-POOLS: vrm.
  DATA: t_values TYPE vrm_values,
        id       TYPE vrm_id.

  id = 'P_MATNR'.

  SELECT matnr AS key
         maktx AS text
    INTO CORRESPONDING FIELDS OF TABLE t_values
    FROM makt UP TO 20 ROWS
    WHERE spras = sy-langu.

  CALL FUNCTION 'VRM_SET_VALUES'
    EXPORTING
      id     = id
      values = t_values.

ENDFORM.                    " FILL_LISTBOX
live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Re: PARAMETER Auswahl-Werte aus internen Tabellen

Beitrag von SteveOh (ForumUser / 44 / 3 / 0 ) »
Danke!!!
Genau was ich gebraucht habe :)

Hier auch Tutorial dazu für Anfänger wie ich:
http://sap.niraj.tripod.com/id38.html

Das laden der Werte ist jetzt implementiert... bleibt nur noch die Frage, wie ich das ganze nach einer Eingabe im ersten Eingabefeld ausführe ...

Jemand da eine Idee falls es möglich ist?

Vielen Dank

Re: PARAMETER Auswahl-Werte aus internen Tabellen

Beitrag von SteveOh (ForumUser / 44 / 3 / 0 ) »
Habs jetzt so versucht:

" ------------------------ Hier Selection Screen beschreiben -------------------------------------------
SELECTION-SCREEN BEGIN OF BLOCK bl1 WITH FRAME TITLE auswahl.

PARAMETERS: devcla TYPE tadir-devclass OBLIGATORY,
progr TYPE obj_name AS LISTBOX VISIBLE LENGTH 60 USER-COMMAND space,
suchbegr TYPE string.

SELECTION-SCREEN END OF BLOCK bl1.

" ----------------------------Hier Programmablauf -------------------------------------------------
AT SELECTION-SCREEN on VALUE-REQUEST FOR devcla. " // wenn eine Eingabe bei devcla gemacht wird, führe fill_listbox aus.
PERFORM fill_listbox.

Leider geht das nicht :( Der Event wird nicht gestartet nach Eingabe...
Vielmehr: wenn ich "AT SELECTION-SCREEN on VALUE-REQUEST FOR devcla." benutze, ist es nicht mehr möglich bei devclas etwas Auszuwählen ??? :cry:

Hilfe

Re: PARAMETER Auswahl-Werte aus internen Tabellen

Beitrag von SteveOh (ForumUser / 44 / 3 / 0 ) »
Hat sich erledigt ;)

nicht: on VALUE-REQUEST FOR devclas
sondern: on devclas...

somit habe ich das gewünschte Ergebnis erreicht.

Seite 1 von 1

Vergleichbare Themen

6
Antw.
2962
Views
Parameters zwei werte zur Auswahl übergeben
von kaim77 » 06.07.2012 16:05 • Verfasst in ABAP® Core
5
Antw.
5842
Views
Werte einer internen Tabelle in sap script form
von Gast » 16.02.2006 17:06 • Verfasst in ABAP® für Anfänger
30
Antw.
11192
Views
Werte einer internen Tabelle gruppieren und auslesen
von bohne » 07.03.2006 21:01 • Verfasst in ABAP® für Anfänger
13
Antw.
2064
Views
Report Summieren der Werte einer Internen Tabelle
von ArjenR » 03.01.2020 09:02 • Verfasst in ABAP® für Anfänger
5
Antw.
5143
Views
Parameter/einzelne Werte in SAP speichern
von schmitzandreas » 29.08.2007 14:59 • Verfasst in ABAP® für Anfänger

Über diesen Beitrag


Unterstütze die Community und teile den Beitrag für mehr Leser und Austausch

Newsletter Anmeldung

Keine Beiträge verpassen! Wöchentlich versenden wir lesenwerte Beiträge aus unserer Community.
Die letzte Ausgabe findest du hier.
Details zum Versandverfahren und zu Ihren Widerrufsmöglichkeiten findest du in unserer Datenschutzerklärung.

Unbeantwortete Forenbeiträge

Daten an Tabelle binden
vor 15 Stunden von Bright4.5 1 / 318
aRFC im OO-Kontext
vor 4 Wochen von ralf.wenzel 1 / 1959
Hilfe bei SWEC/SWE2
letzen Monat von retsch 1 / 8559