{"id":417,"date":"2018-02-25T11:35:08","date_gmt":"2018-02-25T10:35:08","guid":{"rendered":"http:\/\/www.laufzeitfehler.net\/?p=417"},"modified":"2018-02-24T11:48:03","modified_gmt":"2018-02-24T10:48:03","slug":"alv-listen-im-cl_salv_table-teil-1","status":"publish","type":"post","link":"http:\/\/www.laufzeitfehler.net\/index.php\/2018\/02\/25\/alv-listen-im-cl_salv_table-teil-1\/","title":{"rendered":"ALV-Listen im CL_SALV_TABLE &#8211; Teil 1"},"content":{"rendered":"<p>Mit der Klasse <em>cl_salv_table<\/em> kann man ohne gro\u00dfen Aufwand selektierte Daten in einer ALV darstellen. Auf die M\u00f6glichkeiten der Klasse m\u00f6chte ich in loser Folge hinweisen. Als erstes ein einfaches Beispiel, wie man schnell die Daten ausgeben kann. F\u00fcr das Beispiel wollen wir einfach ohne Kriterien ein paar Datens\u00e4tze aus der Tabelle SPFLI lesen.<\/p>\n<p>Also zun\u00e4chst werden 20 Datens\u00e4tze wahllos aus der Tabelle gelesen. Die Erzeugung des ALV-Objektes erfolgt dann \u00fcber die statische Factory-Methode aus der Klasse <em>cl_salv_table<\/em>. Im Importing-Paramter bekommt man dann das Objekt go_alv zur\u00fcck und im Changing-Parameter steht die Ergebnistabelle, die im ALV angezeigt werden soll. Der Aufruf des ALV erfolgt dann einfach \u00fcber die Methode <em>display()<\/em>. <\/p>\n<p>Der komplette Quellcode sieht dann so aus: <\/p>\n<pre lang=\"ABAP\" line=\"1\" escaped=\"true\">\r\nREPORT ztest_salv_full.\r\n\r\nDATA: gt_spfli TYPE STANDARD TABLE OF spfli.\r\nDATA: go_alv TYPE REF TO cl_salv_table.\r\n\r\n\"Erzeugen von Testdaten\r\nSELECT * FROM spfli\r\nINTO CORRESPONDING FIELDS OF TABLE gt_spfli\r\nUP TO '20' ROWS.\r\n\r\n\"ALV-Objekt erzeugen mit statischer Factory-Methode\r\nTRY.\r\n  cl_salv_table=>factory(\r\n     EXPORTING\r\n       list_display = if_salv_c_bool_sap=>false \"TRUE f\u00fcr Listenausgabe\r\n     IMPORTING\r\n       r_salv_table = go_alv \"R\u00fcckgabe des ALV-Objektes\r\n     CHANGING\r\n       t_table = gt_spfli ). \"Tabelle f\u00fcr Anzeige\r\nCATCH cx_salv_msg.\r\n\"Fehlerbehandlung\r\nENDTRY.\r\n\r\n\"ALV im FullScreen anzeigen\r\ngo_alv->display( ).\r\n<\/pre>\n<p><a href=\"http:\/\/www.laufzeitfehler.net\/wp-content\/uploads\/2018\/02\/2018-02-24-SALV-im-Full-screen.jpg\"><img decoding=\"async\" loading=\"lazy\" src=\"http:\/\/www.laufzeitfehler.net\/wp-content\/uploads\/2018\/02\/2018-02-24-SALV-im-Full-screen-678x381.jpg\" alt=\"Aufruf go_alv-&gt;display()\" width=\"678\" height=\"381\" class=\"aligncenter size-mh-magazine-lite-content wp-image-418\" \/><\/a><\/p>\n<p>Wenn das ALV statt im Fullscreen in einem Popup aufgerufen werden, dann muss vor der Display-Methode eine andere Methode aufgerufen werden, der die Gr\u00f6\u00dfe des Pop-up-Fenster definiert: <\/p>\n<pre lang=\"ABAP\" escaped=\"true\">\r\n* Vorbereitung f\u00fcr Aufruf des ALV im Popup\r\ngo_alv->set_screen_popup(\r\n  EXPORTING\r\n    start_column = '5'\r\n    end_column   = '110'\r\n    start_line   =  '5'\r\n    end_line     = '20' ).\r\n<\/pre>\n<p>Eingef\u00fcgt vor der Display-Methode sieht das Ergebnis nun so aus: <\/p>\n<figure id=\"attachment_421\" aria-describedby=\"caption-attachment-421\" style=\"width: 678px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/www.laufzeitfehler.net\/wp-content\/uploads\/2018\/02\/2018-02-24-SALV-im-popup.jpg\"><img decoding=\"async\" loading=\"lazy\" src=\"http:\/\/www.laufzeitfehler.net\/wp-content\/uploads\/2018\/02\/2018-02-24-SALV-im-popup-678x381.jpg\" alt=\"\" width=\"678\" height=\"381\" class=\"size-mh-magazine-lite-content wp-image-421\" \/><\/a><figcaption id=\"caption-attachment-421\" class=\"wp-caption-text\">Darstellung der Daten im Popup<\/figcaption><\/figure>\n<p>M\u00f6chte man die ALV-Liste in einem Container anzeigen, dann muss zus\u00e4tzlich ein Container-Objekt angelegt werden und der Aufruf der Factory-Methode \u00e4ndert sich etwas. In dem Bespiel wurde auch ein Dummy-Selektionsscreen hinzugef\u00fcgt, damit es \u00fcberhaupt einen Screen gibt, in dem der Container angedockt werden kann. Der komplette Quellcode sieht wie folgt aus: <\/p>\n<pre lang=\"ABAP\" line=\"1\" escaped=\"true\">\r\nREPORT ztest_salv_container.\r\n\r\nDATA: gt_spfli TYPE STANDARD TABLE OF spfli.\r\nDATA: go_alv TYPE REF TO cl_salv_table.\r\nDATA: go_container TYPE REF TO cl_gui_docking_container.\r\n\r\nPARAMETERS: p_select TYPE xfeld.\r\n\r\nAT SELECTION-SCREEN OUTPUT.\r\n\r\n\"Erzeugen von Testdaten\r\nSELECT * FROM spfli\r\n    INTO CORRESPONDING FIELDS OF TABLE gt_spfli\r\n    UP TO '20' ROWS.\r\n\r\n  \"Erzeugen des Containers\r\n  CHECK go_container IS NOT BOUND.\r\n  CREATE OBJECT go_container\r\n    EXPORTING\r\n      repid                       = sy-repid  \" Report an dem der Container angedockt werden soll\r\n      side                        = cl_gui_docking_container=>dock_at_top    \" Stelle des Andockens\r\n    EXCEPTIONS\r\n      cntl_error                  = 1\r\n      cntl_system_error           = 2\r\n      create_error                = 3\r\n      lifetime_error              = 4\r\n      lifetime_dynpro_dynpro_link = 5\r\n      OTHERS                      = 6.\r\n  IF sy-subrc <> 0.\r\n    \"\"Fehlerbehandlung\r\n  ENDIF.\r\n\r\n\"ALV-Objekt erzeugen mit statischer Factory-Methode\r\nTRY.\r\n    cl_salv_table=>factory(\r\n      EXPORTING\r\n        r_container   = go_container\r\n      IMPORTING\r\n        r_salv_table   =  go_alv     \"R\u00fcckgabe des ALV-Objektes\r\n      CHANGING\r\n        t_table        = gt_spfli ). \"Tabelle f\u00fcr Anzeige\r\n  CATCH cx_salv_msg.\r\n    \"Fehlerbehandlung\r\nENDTRY.\r\n\r\ngo_alv->display( ).\r\n<\/pre>\n<p>Das Ergebnis ist entsprechend, dass im Selektionsbild oben ein Container mit der ALV-Liste angedockt wird: <\/p>\n<figure id=\"attachment_424\" aria-describedby=\"caption-attachment-424\" style=\"width: 749px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/www.laufzeitfehler.net\/wp-content\/uploads\/2018\/02\/2018-02-24-SALV-im-Container.jpg\"><img decoding=\"async\" loading=\"lazy\" src=\"http:\/\/www.laufzeitfehler.net\/wp-content\/uploads\/2018\/02\/2018-02-24-SALV-im-Container.jpg\" alt=\"\" width=\"749\" height=\"249\" class=\"size-full wp-image-424\" srcset=\"http:\/\/www.laufzeitfehler.net\/wp-content\/uploads\/2018\/02\/2018-02-24-SALV-im-Container.jpg 749w, http:\/\/www.laufzeitfehler.net\/wp-content\/uploads\/2018\/02\/2018-02-24-SALV-im-Container-300x100.jpg 300w\" sizes=\"(max-width: 749px) 100vw, 749px\" \/><\/a><figcaption id=\"caption-attachment-424\" class=\"wp-caption-text\">ALV-Liste im Container<\/figcaption><\/figure>\n<p>Fazit: mit der Klasse <em>cl_salv_table<\/em> kann schnell und unkompliziert eine ALV-Liste erstellt werden. <\/p>\n","protected":false},"excerpt":{"rendered":"<div class=\"mh-excerpt\"><p>Mit der Klasse cl_salv_table kann man ohne gro\u00dfen Aufwand selektierte Daten in einer ALV darstellen. Auf die M\u00f6glichkeiten der Klasse m\u00f6chte ich in loser Folge <a class=\"mh-excerpt-more\" href=\"http:\/\/www.laufzeitfehler.net\/index.php\/2018\/02\/25\/alv-listen-im-cl_salv_table-teil-1\/\" title=\"ALV-Listen im CL_SALV_TABLE &#8211; Teil 1\">[&#8230;]<\/a><\/p>\n<\/div>","protected":false},"author":1,"featured_media":430,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[86,59],"tags":[87,139,153,152,88,122],"_links":{"self":[{"href":"http:\/\/www.laufzeitfehler.net\/index.php\/wp-json\/wp\/v2\/posts\/417"}],"collection":[{"href":"http:\/\/www.laufzeitfehler.net\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.laufzeitfehler.net\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.laufzeitfehler.net\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.laufzeitfehler.net\/index.php\/wp-json\/wp\/v2\/comments?post=417"}],"version-history":[{"count":6,"href":"http:\/\/www.laufzeitfehler.net\/index.php\/wp-json\/wp\/v2\/posts\/417\/revisions"}],"predecessor-version":[{"id":428,"href":"http:\/\/www.laufzeitfehler.net\/index.php\/wp-json\/wp\/v2\/posts\/417\/revisions\/428"}],"wp:featuredmedia":[{"embeddable":true,"href":"http:\/\/www.laufzeitfehler.net\/index.php\/wp-json\/wp\/v2\/media\/430"}],"wp:attachment":[{"href":"http:\/\/www.laufzeitfehler.net\/index.php\/wp-json\/wp\/v2\/media?parent=417"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.laufzeitfehler.net\/index.php\/wp-json\/wp\/v2\/categories?post=417"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.laufzeitfehler.net\/index.php\/wp-json\/wp\/v2\/tags?post=417"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}