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)
- Interview mit Björn Schulz (Software-Heroes.com) - 3. September 2024
- Daten aus ALV ermitteln - 3. September 2024
- So lange es den SAPGUI noch gibt… - 27. Juni 2024