Anwendungsbeispiel Klassenattribut

Aus SAP-Wiki
Zur Navigation springenZur Suche springen

Hier ein sinnvolles Beispiel für ein Klassenattribut, wie es in einem Projekt genutzt wurde.

Selektion Daten

In einer Methode GET_HEADERTEXTE werden aus einer Tabelle DD04T u. a. die Feldlängen zu einer Reihe von Datenelementen in eine itab LT_TEXTE geschrieben.

  DATA: lt_texte  TYPE TABLE OF dd04t.

  lv_spras = sy-langu.

  SELECT *
   into TABLE lt_texte
   FROM dd04t
  WHERE ( rollname = 'AUFTYP'                     OR  "Auftragstyp
          rollname = 'CRMT_ORDER_NO'              OR  "Auftrags-ID
          ...
          rollname = 'CRMT_ISA_AUC_QUOTE_TYPE' )      "Angebotsart
    AND ddlanguage = lv_spras.


Schreiben interne Tabelle in Klassenattribut

Diese Tabelle wird nun als Instanzattribut "GT_TEXTE" in die Klasse geschrieben.

 me->gt_texte = lt_texte.


Definition Klassenattribut in Klasse

Das Klassenattribut GT_TEXTE wird unter dem Reiter "Attribute" mit der Sichtbarkeit "Private" (da es nur innerhalb der Klasse gelesen wird) definiert.

Klassenattribute1.jpg


Lesen Klassenattribut in Methode

In der Methode FILL_HEADERTEXT wird das Klassenattribut GT_TEXTE gelesen. Aus dem Importparameter IV_ROLLNAME und dem Klassenattribut GT_TEXTE wird nun die Feldlänge mittlerer Länge zurückgegeben in den Returningparameter RV_SCRTEXT_M.

Klassenattribute2.jpg


Das Klassenattribut kann hier ausgelesen werden mit dem Befehl

me->gt_texte


Aufruf private Methode FILL_HEADERTEXT

Die Methode FILL_HEADERTEXT wird nun aufgerufen mit den jeweiligen Datenelementen, z. B. "AUFTYP". Da in der Methode FILL_HEADERTEXT die Texte aus dem Klassenattribut GT_TEXTE gelesen werden, muss hier nicht die Tabelle übergeben werden.

  CALL METHOD me->FILL_HEADERTEXT
    EXPORTING
      IV_ROLLNAME  = 'AUFTYP'
    RECEIVING
      RV_SCRTEXT_M = es_forms_headertext-text_auftyp.

  CALL METHOD me->FILL_HEADERTEXT
    EXPORTING
      IV_ROLLNAME  = 'CRMT_ORDER_NO'
    RECEIVING
      RV_SCRTEXT_M = es_forms_headertext-text_aufid.
  
   ...