Exporting ALV to Memory2

Ähnliche Dokumente
Magic Filter. Magic Filter. Code

Doppelklick auf eine Klasse verzweigt in den Class Builder (Transaktion SE24).

ALV-Grid und Excel. * * * * * Erweiterung der Toolbar um einen Button Export -> Excel * * * *

Bankleitzahlen einlesen

Generischer Excel-Upload

In diesem Beispiel wird ein ALV-Grid aufgerufen, das jede Sekunde einen anderen Eintrag aus einer Tabelle anzeigt.

Unterprogramme auslagern

ajanzen.com Schnell programmierte ALV-GRID-Anzeige mit geänderten Spaltenüberschriften

Der ausgewählte Text wird markiert und ausgegraut, so dass er nicht erneut ausgewählt werden kann.

Includes/ Programme generieren

ajanzen.com ALV-Grid-Anzeige mit eingabebereiten Zellen

Autosumme in ALV-Grid Version 1

Wählt man einen Wert aus, so wird dieser in das Selektionsbild übernommen und der Docking- Container wird wieder verkleinert.

ajanzen.com CSV-Upload

Download von Programmen

Welche Redefinitionen gibt es?

Standardtext ins PDF-Format konvertieren

SAP und bunte Bilder geht das?

ajanzen.com Umgang mit zur Laufzeit erstellen Selektions-, Sortier- und IF-Bedingungen

ajanzen.com Aufruf eines Pop-Up-Containers

ajanzen.com Excel-Upload

ajanzen.com ALV-Anzeige mit eigenen Spaltenüberschriften und aktiven Standardfunktionen

ajanzen.com Verwendung des Custom Controls

B Synopsis der Programmiersprachen ABAP, VB und Java

Generic Object Services

ajanzen.com Vorgehen zur Verwendung des GUI Docking-Containers

Die in diesem Fall als Template verwendete Excel-Datei muss mithilfe der Transaktion OAER in das Business Objects Repository geladen werden!

ajanzen.com Beispiel zur Verwendung des GUI Splitters

Demo zu Desktop Office Integration

REPORT Z_NEBP_RAHMEN.

ajanzen.com ALV-Anzeige im Selection-Mode mit angepassten Zellenfarben

Dokumentation anzeigen (2)

ajanzen.com Beispiele für den Umgang mit Feldsymbolen

1. Schritt: Anlegen des Musters

ajanzen.com Beispiel zur Verwendung des EASY SPLITTERS

Erzeugung eines Dokuments

ajanzen.com ALV-Anzeige mit einem Inline-Button

ajanzen.com ALV-Grid-Anzeige mit eingabebereiten Spalten

Datenbankablage für ArchiveLink einrichten

ajanzen.com Um eigene Toolbar-Funktionen erweiterte ALV-Grid-Anzeige

10.6 Programmier-Exits für Workitems

Programmieren für Fortgeschrittene Einführung in die Programmiersprache ABAP

Der Beginn einer wunderbaren Freundschaft von Stefan Schnell

A.4 Beispiel zum -Versand über Smart Forms

Exercise (Part I) Anastasia Mochalova, Lehrstuhl für ABWL und Wirtschaftsinformatik, Kath. Universität Eichstätt-Ingolstadt 1

ColdFusion 8 PDF-Integration

Order Ansicht Inhalt

SAP-Daten per HTML anzeigen

PowerShell mit ABAP nutzen

Java Tools JDK. IDEs. Downloads. Eclipse. IntelliJ. NetBeans. Java SE 8 Java SE 8 Documentation

Kurzbeschreibung. Quelltext

Zeilen in SAS-Datensatz einfügen

Trigger Based Mass Reversal

Exercise (Part V) Anastasia Mochalova, Lehrstuhl für ABWL und Wirtschaftsinformatik, Kath. Universität Eichstätt-Ingolstadt 1

ajanzen.com Vorgehen zum Erstellen eines Dynpro- Splitters

11 Klassenbasierte Eigenentwicklungen im Workflow

Exercise (Part II) Anastasia Mochalova, Lehrstuhl für ABWL und Wirtschaftsinformatik, Kath. Universität Eichstätt-Ingolstadt 1

Programmieren in Java

ajanzen.com Aktualisieren der ALV-Anzeige nach Daten- bzw. Eigenschaftsänderung

Datenmigration. Tipps und Tricks

FIVE1 GmbH & Co. KG SAP Partner Port Altrottstraße Walldorf T: FIVE1 GmbH & Co. KG Essence of quality

TECHNISCHE UNIVERSITÄT MÜNCHEN FAKULTÄT FÜR INFORMATIK

Informatik für Mathematiker und Physiker Woche 7. David Sommer

THEMA: GUT VORBEREITET IST HALB ZERTIFIZIERT ANTWORTEN ZUR SAS VISUAL ANALYTICS-ZERTIFIZIERUNG" THOMAS WENDE

Forth-2012 Der neue Standard. M. Anton Ertl

ajanzen.com Um eigene Toolbar-Funktionen erweiterte ALV-Anzeige

10. Datenbanken und DBI Ties BerkeleyDB Datenbanken und DBI Oracle, Mysql und Proxy Server Ties tie

39 Object Request Brokers. 40 Components of an ORB Stubs and Skeletons Stub

Typo3 & QFQ. Carsten Rose, I-MATH, University of Zurich, 2017

DataTables LDAP Service usage Guide

NEWSLETTER. FileDirector Version 2.5 Novelties. Filing system designer. Filing system in WinClient

Informatik - Übungsstunde

Exercise (Part XI) Anastasia Mochalova, Lehrstuhl für ABWL und Wirtschaftsinformatik, Kath. Universität Eichstätt-Ingolstadt 1

Oracle & Java HOW TO

Kapitel 4 Dynamisches SQL

Installation MySQL Replikationsserver

Anwendungsentwicklung Datenbanken SQL. Stefan Goebel

Magic Figures. We note that in the example magic square the numbers 1 9 are used. All three rows (columns) have equal sum, called the magic number.

H o c h s c h u l e D e g g e n d o r f H o c h s c h u l e f ü r a n g e w a n d t e W i s s e n s c h a f t e n

3. Persistenz und Datenbanken Content Providers. Content Providers. Generische Schnittstelle zum Zugriff auf Daten zwischen Anwendungen

Die Datenmanipulationssprache SQL

Hochschule Karlsruhe Technik und Wirtschaft Anhänge: Fakultät für Informatik und Wirtschaftsinformatik SS 2013 Prof. Schmidt.

Algorithmen und Datenstrukturen Musterlösung 5

Informatik-Seminar Thema: Monaden (Kapitel 10)

Transkript:

Exporting ALV to Memory2 Wir greifen den Trick nach SUBMIT an die ALV-Daten im Office-Format zu gelangen noch einmal auf und zeigen, wie man aus dem XML-String eine Tabelle erhält. In diesem Beispiel rufen wir das Beispielprogramm BCALV_FULLSCREEN_DEMO auf, um mittels ALV-Grid Daten zu erzeugen. Die Flugdatenbank muss natürlich gefüllt sein!! Die grundlegenden Bestandteile sind bereits im vorherigen Artikel erläutert worden. In diesem Programm zeigen wir, wie man die im XML-Format vorliegenden Daten in eine interne Tabelle umwandelt. Das XML-Ergebnis wird dabei Ereignisgesteuert bearbeitet. Das bedeutet: Die XML-Tags werden Stück für Stück durchlaufen und im Programm wird entsprechend darauf reagiert. XML Die zurückgelieferte XML-Struktur, die die Tabelle beschreibt ist recht komplex. Hier ist die Beispiel-XML-Datei zu sehen: http://pastebin.com/xkgctkja Uns interessieren jedoch nur die folgenden Tags: Anzahl der Spalten <Table><Column/><Column/></Table> Zellen und Zelleninhalte <Cell><Data>Inhalt</data></cell>

Coding REPORT zz_export_alv_to_memory_demo01. * CLASS lcl_xml DEFINITION CLASS lcl_xml DEFINITION. PUBLIC SECTION. CLASS-METHODS call_report IMPORTING iv_repid TYPE syrepid iv_list TYPE char1. CLASS-METHODS create_table IMPORTING iv_fields TYPE i EXPORTING ed_table TYPE REF TO data. CLASS-METHODS display_data IMPORTING it_table TYPE STANDARD TABLE PREFERRED PARAMETER it_table. ENDCLASS. "lcl_xml DEFINITION * CLASS lcl_xml IMPLEMENTATION CLASS lcl_xml IMPLEMENTATION. METHOD call_report. *== Data DATA lv_guid TYPE guid_32. DATA ls_params TYPE rsparams. DATA lt_params TYPE TABLE OF rsparams. *== Create and export GUIID for ALV lv_guid = cl_salv_export_db_storage=>create_guid( ). EXPORT l_mode = 'M' TO MEMORY ID 'ALV_EXTRACT_MODE'. EXPORT l_guid = lv_guid TO MEMORY ID 'ALV_EXTRACT_GUID'. *== Call Report SUBMIT (iv_repid) WITH SELECTION-TABLE lt_params AND RETURN. "#EC CI_SUBMIT DATA lv_xstring TYPE xstring. DATA lr_stream_factory TYPE REF TO if_ixml_stream_factory. DATA lr_ixml TYPE REF TO if_ixml. DATA lr_istream TYPE REF TO if_ixml_istream. DATA lr_doc TYPE REF TO if_ixml_document. DATA lr_parser TYPE REF TO if_ixml_parser. DATA lv_events TYPE i. DATA lv_number_of_fields TYPE i.

DATA lr_event TYPE REF TO if_ixml_event. DATA lv_type TYPE i. DATA lv_current_node TYPE string. DATA lv_current_value TYPE string. DATA lv_cell_index TYPE i. *== Import XML-data from AVL and convert to stream lv_xstring = cl_salv_export_db_storage=>import_xmlstring ( guid = lv_guid ). lr_ixml = cl_ixml=>create( ). lr_stream_factory = lr_ixml->create_stream_factory( ). lr_istream = lr_stream_factory->create_istream_xstring ( string = lv_xstring ). lr_doc = lr_ixml->create_document( ). *== Create parser for document lr_parser = lr_ixml->create_parser( document = lr_doc istream = lr_istream stream_factory = lr_stream_factory ). *== deactivate DOM generation lr_parser->set_dom_generating( space ). *== data for dynamically generated internal table DATA ld_table TYPE REF TO data. FIELD-SYMBOLS <table> TYPE STANDARD TABLE. FIELD-SYMBOLS <row> TYPE ANY. "line of <table>. FIELD-SYMBOLS <cell> TYPE string. *== define Parser events lv_events = if_ixml_event=>co_event_element_pre2 + if_ixml_event=>co_event_element_post + if_ixml_event=>co_event_text_post. *== Register XML-Events lr_parser->set_event_subscription( lv_events ). DO. *== get next event (XML-tag) lr_event = lr_parser->parse_event( ). IF lr_event IS INITIAL. EXIT. *== get type of event lv_type = lr_event->get_type( ). *== New element CASE lv_type.

WHEN if_ixml_event=>co_event_element_pre2. *===> Event "PRE2" lv_current_node = lr_event->get_name( ). IF iv_list <> space. WRITE: / lv_current_node. CASE lv_current_node. WHEN 'Column'. *=====> New Column: Add column counter ADD 1 TO lv_number_of_fields. WHEN 'Row'. *=====> New Row IF <table> IS NOT ASSIGNED. *=====> Create table if not done yet create_table( EXPORTING iv_fields = lv_number_of_fields IMPORTING ed_table = ld_table ). ASSIGN ld_table->* TO <table>. *=====> Insert new table line APPEND INITIAL LINE TO <table> ASSIGNING <row>. CLEAR lv_cell_index. WHEN 'Cell'. *======> new cell data: ADD 1 TO lv_cell_index. ASSIGN COMPONENT lv_cell_index OF STRUCTURE <row> TO <cell>. ENDCASE. WHEN if_ixml_event=>co_event_text_post. *===> Event "TEXT" CASE lv_current_node. WHEN 'Data'. *=====> get cell value and assign to table cell <cell> = lr_event->get_value( ). ENDCASE. IF iv_list <> space. lv_current_value = lr_event->get_value( ).. WRITE lv_current_value COLOR COL_TOTAL. WHEN if_ixml_event=>co_event_element_post. *===> Event "POST" IF iv_list <> space. lv_current_node = lr_event->get_name( ). WRITE: lv_current_node COLOR COL_GROUP.

ENDCASE. ENDDO. *== Display table IF <table> IS ASSIGNED. display_data( <table> ). ENDMETHOD. "call_report METHOD create_table. *== field catalog DATA lt_fcat FIELD-SYMBOLS <fcat> TYPE lvc_t_fcat. TYPE lvc_s_fcat. *== create field catalog for internal table DO iv_fields TIMES. *== cell APPEND INITIAL LINE TO lt_fcat ASSIGNING <fcat>. <fcat>-fieldname = sy-index. CONDENSE <fcat>-fieldname. <fcat>-tabname = 'GT_TABLE'. <fcat>-inttype = 'g'. "String ENDDO. *== generate internal table from given field catalog CALL METHOD cl_alv_table_create=>create_dynamic_table EXPORTING it_fieldcatalog = lt_fcat IMPORTING ep_table = ed_table EXCEPTIONS generate_subpool_dir_full = 1 OTHERS = 2. ENDMETHOD. "create_table METHOD display_data. *== Data DATA lv_col TYPE i. FIELD-SYMBOLS <row> TYPE ANY. FIELD-SYMBOLS <cell> TYPE string. *== Display all table lines LOOP AT it_table ASSIGNING <row>. NEW-LINE. DO.

*== Display each table cell ASSIGN COMPONENT sy-index OF STRUCTURE <row> TO <cell>. IF sy-subrc = 0. lv_col = ( sy-index - 1 ) * 21. WRITE AT lv_col(19) <cell> COLOR COL_POSITIVE. ELSE. EXIT. "from do ENDDO. ENDLOOP. ENDMETHOD. "display_data ENDCLASS. "lcl_xml IMPLEMENTATION *** *** *** SELECTION SCREEN *** *** SELECTION-SCREEN BEGIN OF BLOCK reps WITH FRAME TITLE text-var. PARAMETERS p_repid TYPE syrepid DEFAULT 'BCALV_FULLSCREEN_DEMO'. PARAMETERS p_data RADIOBUTTON GROUP x DEFAULT 'X'. PARAMETERS p_list RADIOBUTTON GROUP x. SELECTION-SCREEN END OF BLOCK reps. START-OF-SELECTION. *== Start report lcl_xml=>call_report( EXPORTING iv_repid = p_repid iv_list = p_list ).