Blog – der SAP HCM Notizzettel

ABAP – Feld in ALV als Ikone darstellen

Um ein Feld im Standard-ALV als Ikone (Ampel oder ähnliches) darzustellen muss das Feld in der Ausgabestruktur als CHAR Länge 4 definiert sein. Im Feldkatalog ist dann ein X im Feld ICON zu setzen.
*—–Aufbau des Feldkatalogs
  CALL FUNCTION ‚REUSE_ALV_FIELDCATALOG_MERGE‘
    EXPORTING
      I_PROGRAM_NAME         = G_REPID
      I_STRUCTURE_NAME       = ‚ZHR_PROVISION‘
      I_INCLNAME             = G_REPID
      I_BYPASSING_BUFFER     = ‚X‘
    CHANGING
      CT_FIELDCAT            = FIELDCAT_ALV
    EXCEPTIONS
      INCONSISTENT_INTERFACE = 1
      PROGRAM_ERROR          = 2.

  LOOP AT FIELDCAT_ALV INTO FIELDCAT_ALV_WA.
    CASE FIELDCAT_ALV_WA-FIELDNAME.

      WHEN ‚XYZ‘.
        FIELDCAT_ALV_WA-OUTPUTLEN = 10.
        FIELDCAT_ALV_WA-SELTEXT_S = ‚Irgendwas‘.
        FIELDCAT_ALV_WA-ICON   = ‚X‘.

    ENDCASE.
    MODIFY FIELDCAT_ALV FROM FIELDCAT_ALV_WA.
  ENDLOOP.

Die Ampel wird repräsentiert von:

Grün: @08@
Gelb: @09@
Rot: @0A@

Alle Icons bekommt man mit Report RSTXICON angezeigt.

ABAP – Dynamisch Felder ansprechen über Feldsymbole

Aufgabenstellung: die interne Tabelle ist definiert über eine Struktur, in der z.B. Monate angegeben sind. Pro Monat soll eine Zahl oder ein Wert ermittelt werden. Die Monate (Spalten) sind nach dem Muster MON01… MON12 definiert.
Lösung: mit einem Feldsymbol den Feldnamen dynamisch bestimmen und dann den Wert dem jeweiligen Feld zuweisen.

DATA: SFIELD(13) TYPE C.
FIELD-SYMBOLS: <MON> TYPE ANY.

*=> hier werden Lohnarten aus IT0015 gelesen, es kann aber eine Schleife über jeden beliebigen
* Datenbestand sein
  PROVIDE * FROM P0015 BETWEEN PN-BEGDA AND PN-ENDDA.       
 …
        CLEAR SFIELD.
*=> jetzt wird ein Initialwert zugewiesen, Felder sind MON+Monat
        MOVE ‚WA_ITAB-MON01‘ TO SFIELD.
*=> richtige Monatsnummer eintragen
        MOVE P0015-BEGDA+4(2) TO SFIELD+11.
*=> Feldsymbol zuweisen an den Inhalt! von SFIELD, Klammern wichtig!
        ASSIGN (SFIELD) TO <MON>.
*=> über das Feldsymbol wird jetzt das Feld in ITAB angesprochen
        MOVE ‚XYZ‘ TO <MON>.

       APPEND WA_ITAB TO ITAB.

ENDPROVIDE.