Funktionsbaustein-Eingabehilfe-Festwerte...

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

Funktionsbaustein-Eingabehilfe-Festwerte...

Beitrag von diamondo (ForumUser / 7 / 7 / 0 ) »
Hallo Experte,
ich habe folgendes Anliegen:
ich versuche gerade ein Funktionsbaustein zu schreiben. Die Funktion soll als Importparameter ein Datenelement aus dem abap-Dictionary bekommen und liefert dann für dieses Datenelement den zugehörigen Festwert aus der Domäne oder der Inhalt der Prüftabelle, falls eine Wertehilfe vorhanden ist. Ich wollte das ganze in einer Funktion programmieren. Ich frage mich aber, ob es schon einen Funktionsbaustein dafür gibt? Ich weiss auch nicht wirklich wie ich zur Lösung komme. Bis jetzt konnte ich Daten aus Datenbanktabellen abfragen(auch mit Funktion). Wie das mit Datenelemente, Domäne, WERTEHILFE... geht, bleibt es mir noch unklar, Weil ich gar nicht mal weiss wie ich auf solche elemente richtig zugreifen kann. Für jede Hilfe bin ich sehr dankbar!

Liebe Grüße

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


Re: Funktionsbaustein-Eingabehilfe-Festwerte...

Beitrag von Unit605 (Expert / 975 / 37 / 93 ) »

Folgende Benutzer bedankten sich beim Autor Unit605 für den Beitrag:
diamondo


Re: Funktionsbaustein-Eingabehilfe-Festwerte...

Beitrag von diamondo (ForumUser / 7 / 7 / 0 ) »
Danke für die schnelle Antwort. Das Problem ist, dass diese FuBa nur Domäne einlesen. Ich will aber ein Datenelement einlesen und den Inhalt seiner Domäne(Wertebereich) ausgeben. Geht es mit DDUT_DOMVALUES_GET ? ich habe vor eine FuBa zu erstellen, welche das Datenelement importiert, DDUT_DOMVALUES_GET mit dem Datenelement aufruft und das ergebnis an meinem FuBa zurückgibt. Hilfeee please.
Lg

Re: Funktionsbaustein-Eingabehilfe-Festwerte...

Beitrag von JHM (Top Expert / 1197 / 1 / 197 ) »
diamondo hat geschrieben:Ich will aber ein Datenelement einlesen und den Inhalt seiner Domäne(Wertebereich) ausgeben.
Lg
Dann eben Tabelle DD04L lesen und die Domäne des Datenelements vor FuBa-Aufruf ermitteln.

Folgende Benutzer bedankten sich beim Autor JHM für den Beitrag:
diamondo

Gruß Hendrik

Re: Funktionsbaustein-Eingabehilfe-Festwerte...

Beitrag von ewx (Top Expert / 4846 / 311 / 641 ) »
Brauchst du die Werte oder geht es dir darum, eine Suchhilfe anzuzeigen?
Für letzteres hätte ich den FB: F4IF_FIELD_VALUE_REQUEST
Hier kannst du allerdings nicht das Datenelement angeben, sondern musst Tabellenname + Feldname übergeben.
Das ist jedoch auch sinnvoll, weil du an eine Struktur oder Tabelle eine andere Suchhilfe verankern kannst, als im Datenelement definiert.

Folgende Benutzer bedankten sich beim Autor ewx für den Beitrag:
diamondo


Re: Funktionsbaustein-Eingabehilfe-Festwerte...

Beitrag von ibo (ForumUser / 67 / 35 / 9 ) »
Hi

Du kannst alle Festwerte aus der Domäne bekommen

Das funktioniert nicht 100% aber du kannst dich daran orientieren.

DATA: lr_struct TYPE REF TO cl_abap_structdescr.

DATA lv_tab_name TYPE ddobjname.

"CS_STRUCT Changing Type ANY " das kannst du in FUBA-Schnittstelle.

* Get the structure of CS_STRUCT
lr_struct ?= cl_abap_typedescr=>describe_by_data( cs_struct ).
lv_tab_name = lr_struct->absolute_name+6.

LOOP AT lr_struct->components ASSIGNING <ls_component>.

CALL FUNCTION 'DDIF_FIELDINFO_GET'
EXPORTING
tabname = lv_tab_name
fieldname = <ls_component>-name
langu = sy-langu
TABLES
dfies_tab = lt_dfies
EXCEPTIONS
not_found = 1
internal_error = 2
OTHERS = 3.
IF sy-subrc <> 0 OR lt_dfies IS INITIAL.
CONTINUE.
ENDIF.

READ TABLE lt_dfies INTO ls_dfies INDEX 1.

CALL FUNCTION 'DD_DOMA_GET'
EXPORTING
domain_name = ls_dfies-domname
langu = sy-langu
withtext = 'X'
TABLES
dd07v_tab_a = lt_dd07v
dd07v_tab_n = lt_dd07v_tab_n
EXCEPTIONS
illegal_value = 1
op_failure = 2
OTHERS = 3.
IF sy-subrc <> 0.
CONTINUE.
ENDIF.
" hier kriegst du alles Festwerte,
" die existieren in dieser Tabelle lt_dd07v.
"
ENDLOOP.

Viel Spaß.
Lg
Ibo

Folgende Benutzer bedankten sich beim Autor ibo für den Beitrag:
diamondo


Re: Funktionsbaustein-Eingabehilfe-Festwerte...

Beitrag von diamondo (ForumUser / 7 / 7 / 0 ) »
ibo hat geschrieben:Hi

"CS_STRUCT Changing Type ANY " das kannst du in FUBA-Schnittstelle.


Ibo

Also gehört CS_STRUCT zu meiner eigenen FuBa als Import parameter fürs Datenelement?

Re: Funktionsbaustein-Eingabehilfe-Festwerte...

Beitrag von diamondo (ForumUser / 7 / 7 / 0 ) »
Ich habe vor in einem Program mein FB zu testen. Entpricht einen Exportparamenter in meinem eigenen FB. Wo genau in dem Code hast du das ergebnis gespeichert? das würde ich dann meinem Exportparameter zuweisen.

Re: Funktionsbaustein-Eingabehilfe-Festwerte...

Beitrag von Unit605 (Expert / 975 / 37 / 93 ) »

Code: Alles auswählen.

FuBa: SWU_GET_VALUES_TO_FIELDNAME     Holt Festwerte zu einem Tabellen-/Strukturfeld
FuBa: SWU_GET_DOMNAME_TO_ROLLNAME     Holt Domaine zu einem Datenelement
FuBa: SWU_GET_TABLE_TO_DOMNAME        Holt Tabelle zu einer Domaine
FuBa: SWU_GET_ROLLNAME_TO_FIELDNAME   Holt Datenelement zu einem Tabellen-/Strukturfeld 

Wenn Du also ein Tabellefeld hast, nimmst Du einfach den ersten FuBa.
Wenn Du ein Datenelement hast, erst den zweiten Fuba und dann mit den dritten Fuba die Festwerte mit dem Result vom zweiten FuBa.
Und mit dem vierten FuBa holst Du Dir das Datenelement zu einem Tabellefeld und dann den dritten Fuba die Festwerte mit dem Result vom vierten FuBa.

Folgende Benutzer bedankten sich beim Autor Unit605 für den Beitrag:
diamondo


Re: Funktionsbaustein-Eingabehilfe-Festwerte...

Beitrag von ibo (ForumUser / 67 / 35 / 9 ) »
diamondo hat geschrieben:
ibo hat geschrieben:Hi

"CS_STRUCT Changing Type ANY " das kannst du in FUBA-Schnittstelle.


Ibo

Also gehört CS_STRUCT zu meiner eigenen FuBa als Import parameter fürs Datenelement?

Ja, entweder eine Struktur oder ein Feld wie du möchtest,

aber du solltest den Code anpassen, je nachdem wie deine Anforderung ist.

Lg
Ibo

Folgende Benutzer bedankten sich beim Autor ibo für den Beitrag:
diamondo


Re: Funktionsbaustein-Eingabehilfe-Festwerte...

Beitrag von diamondo (ForumUser / 7 / 7 / 0 ) »
Hier eine Version des angepassten Code. Die Funktion funktioniert bislang noch nicht.

Code: Alles auswählen.

FUNCTION ZZ_LIES_WERTE.
*"----------------------------------------------------------------------
*"*"Lokale Schnittstelle:
*"  EXPORTING
*"     REFERENCE(EX_WERTE) TYPE  ANY
*"  CHANGING
*"     REFERENCE(IM_DATA) TYPE  ANY
*"     REFERENCE(IM_TAB) TYPE  ANY
*"  EXCEPTIONS
*"      DATA_NICHT_GEFUNDEN
*"----------------------------------------------------------------------

DATA: lr_struct TYPE REF TO cl_abap_structdescr.
DATA lv_tab_name TYPE ddobjname.

FIELD-SYMBOLS <ls_component> TYPE any.

DATA MYTAB TYPE STANDARD TABLE OF DFIES.
DATA wa TYPE DFIES.

* Get the structure of CS_STRUCT
lr_struct ?= cl_abap_typedescr=>describe_by_data( IM_DATA ).
lv_tab_name = lr_struct->absolute_name+6.

LOOP AT lr_struct->components ASSIGNING <ls_component>.

CALL FUNCTION 'DDIF_FIELDINFO_GET'
EXPORTING
tabname = lv_tab_name
fieldname = <ls_component>-IM_DATA
langu = sy-langu
TABLES
dfies_tab = MYTAB
EXCEPTIONS
not_found = 1
internal_error = 2
OTHERS = 3.
IF sy-subrc <> 0 OR MYTAB IS INITIAL.
CONTINUE.
ENDIF.

READ TABLE MYTAB INTO ls_dfies INDEX 1.

DATA: fv_wa TYPE dd07v,
      fv_tab_a TYPE STANDARD TABLE OF dd07v,
      fv_tab_n TYPE STANDARD TABLE OF dd07v.

CALL FUNCTION 'DD_DOMA_GET'
EXPORTING
domain_name = ls_dfies-domname
langu = sy-langu
withtext = 'X'
TABLES
dd07v_tab_a = fv_tab_a
dd07v_tab_n = fv_tab_n
EXCEPTIONS
illegal_value = 1
op_failure = 2
OTHERS = 3.
IF sy-subrc <> 0.
CONTINUE.
ENDIF.
" hier kriegst du alles Festwerte,
" die existieren in dieser Tabelle lt_dd07v.
"
ENDLOOP.

Entweder habe ich zu viel dran gepackt oder es fehlen noch wichtige Teile im Code.
In meiner Funktion habe ich als Import/Changing:
- eine Tabelle IM_DATA TYPE ANY (richtig? oder eher IM_DATA TYPE ANY TABLE ?)
- ein Datenelement/Feld ( IM_DATA TYPE ANY )
Als Export:
- EX_WERTE TYPE ANY /soll auch eine Tabelle sein.

Die Tabelle MYTAB bekommt erstmal die Feldinformationen in FuBa DDIF_FIELDINFO_GET

Zu meinen Fragen:
- Mit der Tabelle EX_WERTE will ich die Festwerte in einer generischen Tabelle von dem Hautprogramm übergeben. Diese Werte werden dann dort ausgegeben. Wie soll das am besten gehen? Ich denke ich treffe am meisten Probleme mit den dynamischen typen, denn meine ganze Parameter/Tabellen werden nur zur Laufzeit herstellt.

Dieser Teilcode ist mir etwas unklar

Code: Alles auswählen.

 lr_struct ?= cl_abap_typedescr=>describe_by_data( IM_DATA ).
lv_tab_name = lr_struct->absolute_name+6. 


Und ab hier

Code: Alles auswählen.

fieldname = <ls_component>-IM_DATA
kriege ich eine Fehler Meldung(<ls_component> ist keine Struktur...), bestimmt auch woanders. Bitte um Erklärung bzw. Korrektur wie es richtig aussehen soll.

In FuBa :
TABLES
dd07v_tab_a = fv_tab_a
dd07v_tab_n = fv_tab_n
Eine kann hier eine Tabelle geholt werden oder? Optional. Wenn ich beide Tabellen auswähle, benötige ich auch bei der Ausgabe wo viele interne Tabellen ja? bzw. generische Tabelle..Help SOS :-)

Re: Funktionsbaustein-Eingabehilfe-Festwerte...

Beitrag von Unit605 (Expert / 975 / 37 / 93 ) »
Schau Dir doch einfach mal das Coding im FuBa 'SWU_GET_VALUES_TO_FIELDNAME' an.

Je nach der SAP Version siehst Du wie im Coding von der Verwendung der FuBas, in die Verwendung von Klassen uebergegangen wird.

Oder ich kopieren einfach mal den neusten Stand hier rein, dann sieht es jeder:

Code: Alles auswählen.

FUNCTION swu_get_values_to_fieldname.
*"----------------------------------------------------------------------
*"*"Lokale Schnittstelle:
*"  IMPORTING
*"     VALUE(LANGUAGE) LIKE  SY-LANGU DEFAULT SY-LANGU
*"     VALUE(FIELD)
*"     VALUE(VALUE) OPTIONAL
*"  EXPORTING
*"     VALUE(EX_G07TAB) TYPE  DD07V
*"  TABLES
*"      G07TAB STRUCTURE  DD07V OPTIONAL
*"  EXCEPTIONS
*"      FIELD_NOT_FOUND
*"      VALUES_NOT_FOUND
*"----------------------------------------------------------------------
* begin of local data definition
  DATA: rollname LIKE dd03l-rollname,
        domname  LIKE dd04l-domname,
        l_value  TYPE  domvalue_l.
* end of local data definition

* casting
  l_value = value.

** get rollname
*  CALL FUNCTION 'SWU_GET_ROLLNAME_TO_FIELDNAME'
*    EXPORTING
*      field           = field
*    IMPORTING
*      rollname        = rollname
*    EXCEPTIONS
*      field_not_found = 01.
*  IF sy-subrc NE 0.
*    RAISE field_not_found.
*  ENDIF.
*
** get domaine
*  CALL FUNCTION 'SWU_GET_DOMNAME_TO_ROLLNAME'
*    EXPORTING
*      rollname           = rollname
*    IMPORTING
*      domname            = domname
*    EXCEPTIONS
*      rollname_not_found = 01.
*  IF sy-subrc NE 0.
*    RAISE field_not_found.
*  ENDIF.
*  --- OSS note 1374211 ---
*  CALL FUNCTION 'SWU_GET_DOMNAME_TO_FIELDNAME'
*    EXPORTING
*      FIELD   = field
*    IMPORTING
*      DOMNAME = domname
*    EXCEPTIONS
*      OTHERS  = 01.
*
*  IF SY-SUBRC <> 0.
*    RAISE field_not_found.
*  ENDIF.
*
** get values
*  CALL FUNCTION 'SWU_GET_TABLE_TO_DOMNAME'
*    EXPORTING
*      domname        = domname
*      language       = language
*    TABLES
*      g07tab         = g07tab
*    EXCEPTIONS
*      internal_error = 01.
*  IF sy-subrc NE 0.
*    RAISE values_not_found.
*  ENDIF.

* --- note 1961034 use buffered access ---
  data lh_elem   type ref to CL_ABAP_ELEMDESCR.
  data lh_type   type ref to CL_ABAP_TYPEDESCR.
  data lt_values type DDFIXVALUES.
  data ls_values type DDFIXVALUE.
  data l_DFIES   type DFIES.
  data l_DD07V   type DD07V.

  call method CL_ABAP_TYPEDESCR=>describe_by_name
     exporting
       P_NAME      = field
     receiving
       P_DESCR_REF = lh_type
     exceptions
       others      = 1.
  IF sy-subrc NE 0.
    RAISE field_not_found.
  ENDIF.

  if lh_type is bound and
     lh_type->KIND = CL_ABAP_TYPEDESCR=>KIND_ELEM .

    lh_elem ?= lh_type.

    call method lh_elem->GET_DDIC_FIXED_VALUES
       exporting
         P_LANGU        = language
       receiving
         P_FIXED_VALUES = lt_values
       exceptions
         others         = 1.
    IF sy-subrc NE 0 or lt_values[] is initial.
      RAISE values_not_found.
    ENDIF.

    call method lh_elem->GET_DDIC_FIELD
       exporting
         P_LANGU        = language
       receiving
         P_FLDDESCR     = l_DFIES
       exceptions
         others         = 0.

    l_DD07V-DOMNAME    = l_DFIES-domname.
    l_DD07V-VALPOS     = '0000'.
    l_DD07V-DDLANGUAGE = language.

    loop at lt_values into ls_values.
      add 1 to l_DD07V-VALPOS .
      l_DD07V-DOMVALUE_L = ls_values-low.
      l_DD07V-DOMVALUE_H = ls_values-high.
      l_DD07V-DDTEXT     = ls_values-ddtext.
      append l_DD07V to g07tab.
    endloop.

  else.
    RAISE field_not_found.
  endif.
* --- end of note 1961034 ---

* get line
  IF value IS SUPPLIED.
    DELETE g07tab WHERE domvalue_l NE l_value.
    READ TABLE g07tab INDEX 1 INTO ex_g07tab.
  ENDIF.

ENDFUNCTION.

Re: Funktionsbaustein-Eingabehilfe-Festwerte...

Beitrag von Lord (ForumUser / 28 / 2 / 0 ) »
*Inhalt gelöscht*
Zuletzt geändert von Lord am 08.06.2016 14:23, insgesamt 1-mal geändert.

Re: Funktionsbaustein-Eingabehilfe-Festwerte...

Beitrag von Lord (ForumUser / 28 / 2 / 0 ) »
[quote="Lord"]Hallo zusammen,

ich habe folgendes Problem mit der DDIF_FIELDINFO_GET funktion:


... hat sich erledigt- DDIF_FIELDINFO_GET war nicht das, was ich letztendlich gebraucht habe.

Seite 1 von 1

Vergleichbare Themen

1
Antw.
6228
Views
Festwerte bei Domänen
von mörtel » 11.06.2007 08:54 • Verfasst in ABAP® für Anfänger
1
Antw.
4129
Views
Festwerte ändern
von tgifch » 02.02.2005 12:19 • Verfasst in Tips + Tricks & FAQs
2
Antw.
1721
Views
Festwerte in Domänen
von Icke0801 » 22.05.2015 10:26 • Verfasst in ABAP® Core
2
Antw.
1012
Views
Tabellenprüfung und Festwerte
von esrefoglu@arcor.de » 18.01.2016 16:28 • Verfasst in ABAP® für Anfänger
4
Antw.
3737
Views
Domänen Wertebereich Festwerte mit mehr als 10 Stellen
von Bernhard Unglaub » 06.07.2007 11:40 • Verfasst in ABAP® Core

Ü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 2 Tagen von Bright4.5 1 / 744
aRFC im OO-Kontext
vor 4 Wochen von ralf.wenzel 1 / 2368
Hilfe bei SWEC/SWE2
letzen Monat von retsch 1 / 8954