SM30
- Tabelle/Sicht
- Button “Customizing”
- Button “Ohne Projektangaben weiter”
- Doppelklick auf die Zeile der Ergebnisliste -> SPRO
SM30
TRY. * Strukturdeskriptor für Komponenten (Spalten) der Tabelle anhand einer vorhandenen Struktur erzeugen DATA(o_struct_desc) = cl_abap_structdescr=>describe_by_name( 'SFLIGHTS' ). * Tabellendeskriptor DATA(o_table_desc) = cl_abap_tabledescr=>create( p_line_type = CAST #( o_struct_desc ) " Spalten p_table_kind = cl_abap_tabledescr=>tablekind_std " Tabellentyp STANDARD TABLE p_unique = abap_false " NON-UNIQUE KEY ). * Tabellenobjekt anhand des Tabellendeskriptors erstellen DATA: o_table TYPE REF TO data. CREATE DATA o_table TYPE HANDLE o_table_desc. * Feldsymbol auf das Tabellenobjekt FIELD-SYMBOLS <table> TYPE ANY TABLE. ASSIGN o_table->* TO <table>. * Daten holen und in Feldsymbol schreiben SELECT carrid, connid, carrname, fldate FROM sflights INTO CORRESPONDING FIELDS OF TABLE @<table>. * Datenausgabe cl_demo_output=>display( <table> ). CATCH cx_root INTO DATA(e_txt). WRITE: / e_txt->get_text( ). ENDTRY.
TRY. * Dummy für Datadescriptor DATA: lv_fldate TYPE sflights-fldate. * Komponenten (Spalten) der Tabelle DATA(it_components) = VALUE cl_abap_structdescr=>component_table( * Erzeugung über direkte Typangabe, abgeleitet aus dem Typ des eigentlichen Datenelements * CHAR 3 ( name = 'CARRID' type = cl_abap_elemdescr=>get_c( 3 ) " S_CARR_ID ) * NUMC 4 ( name = 'CONNID' type = cl_abap_elemdescr=>get_n( 4 ) " S_CONN_ID ) * Erzeugung über Namen des Datenelements ( name = 'CARRNAME' type = CAST #( cl_abap_elemdescr=>describe_by_name( 'S_CARRNAME' ) ) ) * Erzeugung über Dummy-Datenobjekt ( name = 'FLDATE' type = cast #( cl_abap_datadescr=>describe_by_data( lv_fldate ) ) ) ). * Strukturdeskriptor für Komponententabelle DATA(o_struct_desc) = cl_abap_structdescr=>create( it_components ). * Tabellendeskriptor DATA(o_table_desc) = cl_abap_tabledescr=>create( p_line_type = o_struct_desc " Spalten p_table_kind = cl_abap_tabledescr=>tablekind_std " Tabellentyp STANDARD TABLE p_unique = abap_false " NON-UNIQUE KEY p_key = VALUE #( " CARRID, CONNID als KEY ( name = 'CARRID' ) ( name = 'CONNID' ) ) p_key_kind = cl_abap_tabledescr=>keydefkind_user " Benutzerdefinierter Schlüssel ). * Tabellenobjekt anhand des Tabellendeskriptors erstellen DATA: o_table TYPE REF TO data. CREATE DATA o_table TYPE HANDLE o_table_desc. * Feldsymbol auf das Tabellenobjekt FIELD-SYMBOLS <table> TYPE ANY TABLE. ASSIGN o_table->* TO <table>. * Daten holen und in Feldsymbol schreiben SELECT carrid, connid, carrname, fldate FROM sflights INTO CORRESPONDING FIELDS OF TABLE @<table>. * Datenausgabe cl_demo_output=>display( <table> ). CATCH cx_root INTO DATA(e_txt). WRITE: / e_txt->get_text( ). ENDTRY.
Typ Herkunft Anmerkung ---------------------------------------------------------------------------------------------------------------------------------- abap_bool Typegruppe ABAP empfohlen in den offiziellen ABAP Programming Guidelines Ab Release 7.40 sind bei Predicative Method Calls Rückgabewerte vom Typ ABAP_BOOL notwendig https://help.sap.com/doc/abapdocu_752_index_htm/7.52/de-DE/abenpredicative_method_calls.htm boolean Datenelement BOOLEAN hat keine Feldbezeichner xfeld Datenelement XFELD hat keine Feldbezeichner os_boolean Datenelement OS_BOOLEAN wdy_boolean Datenelement WDY_BOOLEAN ddbool_d Datenelement DDBOOL_D
boolscher Typ ABAP-Konstante ABAP-Wert Definition Datentyp Länge ------------------------------------------------------------------------------------------ true abap_true 'X' Typegruppe ABAP char 1 false abap_false ' ' Typegruppe ABAP char 1 abap_undefined '-' Typegruppe ABAP char 1 true cl_abap_typedescr=>true 'X' cl_abap_typedescr char 1 false cl_abap_typedescr=>false ' ' cl_abap_typedescr char 1 cl_abap_typedescr=>undefined '-' cl_abap_typedescr char 1
DATA(it_strings) = VALUE stringtab( ). it_strings = VALUE #( * For i = 1 To 10 FOR i = 1 WHILE i < 11 ( |{ i }| ) ). cl_demo_output=>display( it_strings ).
DATA(it_strings) = VALUE stringtab( ). it_strings = VALUE #( * For i = 1 To 10 Step 2 FOR i = 1 THEN i + 2 WHILE i < 11 ( |{ i }| ) ). cl_demo_output=>display( it_strings ).
SELECT * FROM sflight INTO TABLE @DATA(it_sflight). SELECT * FROM spfli INTO TABLE @DATA(it_spfli). DATA(it_strings) = VALUE stringtab( * alle Einträge aus sflight ab 01.01.2013 FOR <f> IN it_sflight INDEX INTO idxf WHERE ( fldate >= '20130101' ) * alle Einträge aus spfli mit den Schlüsseln wie in der Ergebnismenge des vorherigen FOR FOR <c> IN it_spfli INDEX INTO idxc WHERE ( carrid = <f>-carrid AND connid = <f>-connid ) ( * Ausgabe als Stringtab |{ idxf } \| { idxc } \| { <c>-carrid } \| { <c>-connid } \| { <c>-airpfrom }| ) ). cl_demo_output=>display( it_strings ).
TYPES: BEGIN OF ty_mat, matnr TYPE matnr, mtart TYPE mtart, price TYPE kbetr, END OF ty_mat. TYPES: ty_it_mat TYPE HASHED TABLE OF ty_mat WITH UNIQUE KEY matnr WITH NON-UNIQUE SORTED KEY key_mtart COMPONENTS mtart. TYPES: BEGIN OF ty_mat_sum, mtart TYPE mtart, count TYPE i, price TYPE kbetr, END OF ty_mat_sum. TYPES: ty_it_mat_sum TYPE HASHED TABLE OF ty_mat_sum WITH UNIQUE KEY mtart. * Tabelle mit Materialien DATA(it_mat) = VALUE ty_it_mat( ( matnr = '1' mtart = 'ROH' price = '1.56' ) ( matnr = '2' mtart = 'ROH' price = '2.00' ) ( matnr = '3' mtart = 'NLAG' price = '3.10' ) ( matnr = '4' mtart = 'NLAG' price = '0.40' ) ( matnr = '5' mtart = 'NLAG' price = '4.10' ) ( matnr = '6' mtart = 'HALB' price = '1.00' ) ( matnr = '7' mtart = 'HALB' price = '0.10' ) ). * Tabelle gruppiert nach Materialarten ohne 'HALB' und summierten Preisen DATA(it_mat_sum) = VALUE ty_it_mat_sum( FOR GROUPS grp OF <mtart> IN it_mat WHERE ( mtart NE 'HALB' ) GROUP BY ( mtart = <mtart>-mtart size = GROUP SIZE ) ( mtart = grp-mtart " Materialart der Gruppe count = grp-size " Anz. Elemente der Gruppe price = REDUCE #( " Summe über die Elemente der akt. Gruppe bilden INIT p = '0.00' FOR <m> IN GROUP grp WHERE ( mtart = grp-mtart ) NEXT p = p + <m>-price ) ) ). cl_demo_output=>display( it_mat_sum ).
* 1 -> A DATA(lv_alpha) = zcl_excel_common=>convert_column2alpha( 1 ).
DATA: it_parameters TYPE ustyp_t_parameters. CALL FUNCTION 'SUSR_USER_PARAMETERS_GET' EXPORTING user_name = sy-uname TABLES user_parameters = it_parameters EXCEPTIONS user_name_not_exist = 1 OTHERS = 2. IF sy-subrc = 0. cl_demo_output=>display( it_parameters ). ENDIF.
Über die Nutzung von Includes ist es möglich beliebigen Code im SAP abzulegen und darauf zuzugreifen. Folgende Schritte sind notwendig:
* Name des INCLUDEs mit dem CSS-Code CONSTANTS: co_cssinclude TYPE char12 VALUE 'ZCSSINCLUDE'. * String für CSS-Daten DATA: lv_css TYPE string. * Prüfen, ob INCLUDE im System (TADIR) aktiv vorhanden SELECT SINGLE obj_name INTO @DATA(lv_obj_name) FROM tadir WHERE obj_name = @co_w3css AND pgmid = 'R3TR' AND object = 'PROG'. IF sy-subrc = 0. * Stringtab für Code DATA: it_incl_code TYPE stringtab. * Code des INCLUDEs lesen READ REPORT co_w3css INTO it_incl_code. IF sy-subrc = 0. * String-Tabelle mit CSS-Code in String wandeln, Trennzeichen ist CRLF lv_css = REDUCE string( INIT s = || FOR <s> IN it_incl_code NEXT s = COND #( WHEN s IS INITIAL THEN |{ <s> }| ELSE |{ s }{ cl_abap_char_utilities=>cr_lf }{ <s> }| ) ). ENDIF. ENDIF. * HTML mit CSS-INCLUDE DATA(lv_html) = '<!DOCTYPE html>' && '<html>' && '<title>Lagermaterialkatalog</title>' && '<meta name="viewport" content="width=device-width, initial-scale=1">' && '<style>' && lv_css && '</style>' && '<body>' && '</body>' && '</html>'.