SALV-Table mit “Grafik”
Heute kam mir die Idee, Daten in einem ALV-Grid einmal grafisch darzustellen. Ich hatte eigentlich vor, die grafischen Zeichen aus dem DOS-Zeichensatz zu verwenden:
Leider war das nicht möglich. Ich habe mich dann für ein anderes Sonderzeichen entschieden:
Die Länge des “Balkens” wird anhand der verwenden Feldgröße von 20 Zeichen berechnet.
Das Pipe-Symbol | sieht auch gut aus. Nimmt nicht so viel Platz weg…

Coding
REPORT z.
*== global data
DATA:
BEGIN OF gs_data,
matnr TYPE char10,
descr TYPE text20,
amount TYPE i,
camount TYPE char20,
END OF gs_data,
gt_data LIKE TABLE OF gs_data,
hex TYPE x VALUE 7.
FIELD-SYMBOLS TYPE c.
*== start of program
START-OF-SELECTION.
PERFORM main.
*&---------------------------------------------------------------------*
*& Form main
*&---------------------------------------------------------------------*
FORM main.
*== local data
DATA lo_grid TYPE REF TO cl_salv_table.
FIELD-SYMBOLS LIKE LINE OF gt_data.
*== assign special Character
ASSIGN hex TO CASTING.
*== Fill testdata
gs_data-matnr = '1000'. gs_data-descr = 'Screw'. gs_data-amount = 120. APPEND gs_data TO gt_data.
gs_data-matnr = '1300'. gs_data-descr = 'Nut 1"'. gs_data-amount = 030. APPEND gs_data TO gt_data.
gs_data-matnr = '1506'. gs_data-descr = 'Driver'. gs_data-amount = 222. APPEND gs_data TO gt_data.
gs_data-matnr = '1660'. gs_data-descr = 'Tool '. gs_data-amount = 180. APPEND gs_data TO gt_data.
gs_data-matnr = '2040'. gs_data-descr = 'Screw 0.4"'. gs_data-amount = 178. APPEND gs_data TO gt_data.
gs_data-matnr = '2220'. gs_data-descr = 'Screw 0.6"'. gs_data-amount = 660. APPEND gs_data TO gt_data.
gs_data-matnr = '2456'. gs_data-descr = 'Gripper'. gs_data-amount = 066. APPEND gs_data TO gt_data.
gs_data-matnr = '2660'. gs_data-descr = 'Nipper'. gs_data-amount = 510. APPEND gs_data TO gt_data.
gs_data-matnr = '2807'. gs_data-descr = 'Pincer'. gs_data-amount = 790. APPEND gs_data TO gt_data.
*== calc amount
LOOP AT gt_data ASSIGNING .
PERFORM calc CHANGING .
ENDLOOP.
*== call SALV
TRY.
CALL METHOD cl_salv_table=>factory
IMPORTING
r_salv_table = lo_grid
CHANGING
t_table = gt_data.
lo_grid->display( ).
CATCH cx_salv_msg.
WRITE: / 'Error: ALV exception CX_SALV_MSG'.
ENDTRY.
ENDFORM. "main
*&---------------------------------------------------------------------*
*& Form calc
*&---------------------------------------------------------------------*
FORM calc CHANGING cs_data LIKE gs_data.
*== local data
DATA number TYPE i.
DATA max TYPE i VALUE 1000.
*== calculate bar
number = cs_data-amount * 100 / 1000 / 5.
*== Fill bar
DO number TIMES.
CONCATENATE cs_data-camount INTO cs_data-camount.
ENDDO.
ENDFORM. "calc
Letzte Artikel von Enno Wulff (Alle anzeigen)
- Automatisches Eingabefeld [SAPGUI] - 9. Oktober 2025
- So verhinderst du Jobstarts zur falschen Zeit - 15. September 2025
- [apple] iCloud-Photos herunterladen - 21. Juli 2025




