Kategorien
-
Neueste Beiträge
- [SAP] ABAP Cloud Developer Trial 2022 SP01 unter Windows installieren
- [ABAP] GTT: Globale Temporäre Tabellen zum Zwischenspeichern von Daten
- [SAP] ABAP Unit Testing – Writing Testable Code for ABAP
- [ABAP] ABAP2XLSX: Inhalt einer Worksheet in eine interne Tabelle schreiben
- [ABAP] Suchhilfe zu DDIC-Feld bestimmen
- Crypto-Währungen
- Konzentration und Verhältnis von bestimmten Fettsäuren haben Einfluss auf Krebsrisiko
- [ABAP] Projektdefinition zu einem PSP-Element lesen
- [ABAP] DMS: Dokumentenstatus lesen
- [ABAP] DMS: Dokumentenstatus setzen
Kategorie: SAP
[ABAP] GTT: Globale Temporäre Tabellen zum Zwischenspeichern von Daten
GTT – Globale Temporäre Tabellen
- Objekt auf Datenbankebene, verfügbar ab NW AS ABAP 7.52
- Verarbeitung globaler temporärer Daten innerhalb einer Datenbank-LUW
- ist temporäre transparenten Datenbanktabelle mit Auslieferungsklasse „L“
- bietet die Möglichkeit, SQL-Operatoren auf temporäre Daten anzuwenden
- User-spezifisch
- Workload auf Datenbank
- Zugriff per Open SQL
- verursacht geringere Verwaltungskosten als reguläre transparente Tabellen und bietet eine höhere Leistung
* Demoprogramm: DEMO_GTT * globale temporäre Tabelle DEMO_GTT hat Auslieferungsklasse "L" * zwei Datensätze einfügen INSERT demo_gtt FROM TABLE @( VALUE #( ( id = 'A' col = 111 ) ( id = 'B' col = 222 ) ) ). * Daten holen und anzeigen SELECT FROM demo_gtt FIELDS * INTO TABLE @DATA(it_gtt). LOOP AT it_gtt ASSIGNING FIELD-SYMBOL(<f>). WRITE: / <f>-id, <f>-col. ENDLOOP. * Am Ende immer Daten aus der GTT löschen, * sonst Exception COMMIT_GTT_ERROR (Implizites Datenbank-Commit wurde abgebrochen wegen nicht leerer GTTs) DELETE FROM demo_gtt.
Links
[SAP] ABAP Unit Testing – Writing Testable Code for ABAP
[ABAP] ABAP2XLSX: Inhalt einer Worksheet in eine interne Tabelle schreiben
* einfaches, generisches Beispiel für die Ausgabe mit Hilfe von Stringspalten TYPES: BEGIN OF ty_s_stringtab, col1 TYPE string, col2 TYPE string, col3 TYPE string, END OF ty_s_stringtab. TYPES: ty_it_stringtab TYPE STANDARD TABLE OF ty_s_stringtab WITH DEFAULT KEY. ********************************************************************** * Selektionsbild ********************************************************************** PARAMETERS: p_fname TYPE file_table-filename OBLIGATORY. * wenn die F4-Hilfe für den Dateinamen aufgerufen wird AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_fname. DATA: lv_rc TYPE i. DATA: it_files TYPE filetable. DATA: lv_action TYPE i. * File-Tabelle leeren, da hier noch alte Einträge von vorherigen Aufrufen drin stehen können CLEAR it_files. * FileOpen-Dialog aufrufen TRY. cl_gui_frontend_services=>file_open_dialog( EXPORTING file_filter = |xlsx (*.xlsx)\|*.xlsx\|{ cl_gui_frontend_services=>filetype_all }| multiselection = abap_false CHANGING file_table = it_files rc = lv_rc user_action = lv_action ). IF lv_action = cl_gui_frontend_services=>action_ok. * wenn Datei ausgewählt wurde IF lines( it_files ) > 0. * ersten Tabelleneintrag lesen p_fname = it_files[ 1 ]-filename. ENDIF. ENDIF. CATCH cx_root INTO DATA(e_text). MESSAGE e_text->get_text( ) TYPE 'I'. ENDTRY. ********************************************************************** * START-OF-SELECTION ********************************************************************** START-OF-SELECTION. DATA: it_stringtab TYPE ty_it_stringtab. TRY. * Reader-Objekt erzeugen DATA(o_reader) = CAST zif_excel_reader( NEW zcl_excel_reader_2007( ) ). DATA(o_excel) = o_reader->load_file( p_fname ). * Worksheet mit Index 1 DATA(o_worksheet) = o_excel->get_worksheet_by_index( iv_index = 1 ). * Inhalt der Worksheet in iTab mappen * Voraussetzung ist die korrekte Abbildung der Ausgabedaten in der itab (Datentypen, Anzahl Spalten) * falls es hier zu Konvertierungsfehlern kommt (float-Werte usw.), dann bricht die Funktion ab o_worksheet->get_table( EXPORTING iv_skip_bottom_empty_rows = abap_true IMPORTING et_table = it_stringtab ). cl_demo_output=>write_data( it_stringtab ). * HTML-Code vom Demo-Output holen DATA(lv_html) = cl_demo_output=>get( ). * Daten im Inline-Browser im SAP-Fenster anzeigen cl_abap_browser=>show_html( EXPORTING title = 'Daten' html_string = lv_html container = cl_gui_container=>default_screen ). * cl_gui_container=>default_screen erzwingen WRITE: space. CATCH cx_root INTO DATA(e_txt). WRITE: / e_txt->get_text( ). ENDTRY.
[ABAP] Suchhilfe zu DDIC-Feld bestimmen
DATA: lv_shlp_descr TYPE shlp_descr. * Die einem DDIC-Feld zugeordnete Suchhilfe bestimmen CALL FUNCTION 'F4IF_DETERMINE_SEARCHHELP' EXPORTING tabname = 'MARA' fieldname = 'MATNR' selection_screen = abap_true " auch die Wertetabelle der Domäne für die F4-Hilfe heranziehen IMPORTING shlp = lv_shlp_descr EXCEPTIONS field_not_found = 1 no_help_for_field = 2 inconsistent_help = 3 OTHERS = 4. IF sy-subrc = 0. * Hier Objekte für die Ausgabe hinzufügen cl_demo_output=>write_data( lv_shlp_descr ). * HTML-Code vom Demo-Output holen DATA(lv_html) = cl_demo_output=>get( ). * Daten im Inline-Browser im SAP-Fenster anzeigen cl_abap_browser=>show_html( EXPORTING title = 'Suchhilfe' html_string = lv_html container = cl_gui_container=>default_screen ). * cl_gui_container=>default_screen erzwingen WRITE: space. ENDIF.
[ABAP] Projektdefinition zu einem PSP-Element lesen
* PRPS-POSID (Projektstrukturplanelement (PSP-Element)) PARAMETERS: p_wbs TYPE bapi_wbs_list MATCHCODE OBJECT h_wbselem DEFAULT ''. START-OF-SELECTION. DATA: it_wbs_element_table TYPE STANDARD TABLE OF bapi_wbs_elements WITH DEFAULT KEY. DATA: it_wbs_hierarchie_table TYPE STANDARD TABLE OF bapi_wbs_hierarchie WITH DEFAULT KEY. it_wbs_element_table = VALUE #( ( wbs_element = p_wbs ) ). * Read detailed information for work breakdown structures CALL FUNCTION 'BAPI_PROJECT_GETINFO' EXPORTING with_subtree = abap_true TABLES i_wbs_element_table = it_wbs_element_table e_wbs_hierarchie_table = it_wbs_hierarchie_table. cl_demo_output=>write_data( it_wbs_element_table ). cl_demo_output=>write_data( it_wbs_hierarchie_table ). * HTML-Code vom Demo-Output holen DATA(lv_html) = cl_demo_output=>get( ). * Daten im Inline-Browser im SAP-Fenster anzeigen cl_abap_browser=>show_html( EXPORTING title = 'Daten' html_string = lv_html container = cl_gui_container=>default_screen ). * cl_gui_container=>default_screen erzwingen WRITE: space.
[ABAP] DMS: Dokumentenstatus lesen
* Dokumentart (TA DC10, Tabelle TDWA) PARAMETERS: p_type TYPE bapi_doc_aux-doctype OBLIGATORY. * Dokumentnummer, mit Suchhilfe auf Tabelle DRAW (Dokumentinformationssatz) PARAMETERS: p_num TYPE bapi_doc_aux-docnumber OBLIGATORY DEFAULT '10000000001' MATCHCODE OBJECT /plmb/dir_elm. * Teildokument PARAMETERS: p_part TYPE bapi_doc_aux-docpart OBLIGATORY DEFAULT '000'. * Dokumentversion PARAMETERS: p_ver TYPE bapi_doc_aux-docversion OBLIGATORY DEFAULT '00'. START-OF-SELECTION. DATA: lv_statusextern TYPE bapi_doc_draw-statusextern. DATA: lv_statusintern TYPE bapi_doc_draw-statusintern. DATA: lv_statusdescription TYPE bapi_doc_tdws-description. DATA: lv_return TYPE bapiret2. * Read Document Status CALL FUNCTION 'BAPI_DOCUMENT_GETSTATUS' EXPORTING documenttype = p_type documentnumber = p_num documentpart = p_part documentversion = p_ver IMPORTING statusextern = lv_statusextern statusintern = lv_statusintern " Statuswerte in Tabelle TDWS statusdescription = lv_statusdescription return = lv_return. IF lv_return-type CA 'EA'. ELSE. cl_demo_output=>write_data( lv_statusextern ). cl_demo_output=>write_data( lv_statusintern ). cl_demo_output=>write_data( lv_statusdescription ). cl_demo_output=>write_data( lv_return ). * HTML-Code vom Demo-Output holen DATA(lv_html) = cl_demo_output=>get( ). * Daten im Inline-Browser im SAP-Fenster anzeigen cl_abap_browser=>show_html( EXPORTING title = 'Daten' html_string = lv_html container = cl_gui_container=>default_screen ). * cl_gui_container=>default_screen erzwingen WRITE: space. ENDIF.
[ABAP] DMS: Dokumentenstatus setzen
* Dokumentart (TA DC10, Tabelle TDWA) PARAMETERS: p_type TYPE bapi_doc_aux-doctype OBLIGATORY. * Dokumentnummer, mit Suchhilfe auf Tabelle DRAW (Dokumentinformationssatz) PARAMETERS: p_num TYPE bapi_doc_aux-docnumber OBLIGATORY DEFAULT '10000000001' MATCHCODE OBJECT /plmb/dir_elm. * Teildokument PARAMETERS: p_part TYPE bapi_doc_aux-docpart OBLIGATORY DEFAULT '000'. * Dokumentversion PARAMETERS: p_ver TYPE bapi_doc_aux-docversion OBLIGATORY DEFAULT '00'. * Dokumentstatus, Statuswerte in Tabelle TDWS PARAMETERS: p_status TYPE bapi_doc_draw-statusintern OBLIGATORY DEFAULT '1' MATCHCODE OBJECT cbglwb_report_status. START-OF-SELECTION. DATA: lv_return TYPE bapiret2. * Set Document Status CALL FUNCTION 'BAPI_DOCUMENT_SETSTATUS' EXPORTING documenttype = p_type documentnumber = p_num documentpart = p_part documentversion = p_ver * statusextern = ' ' statusintern = p_status " Statuswerte in Tabelle TDWS * statuslog = ' ' IMPORTING return = lv_return. IF lv_return-type CA 'EA'. * Rollback bei Fehler CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'. ELSE. * Daten verbuchen CALL FUNCTION 'BAPI_TRANSACTION_COMMIT' EXPORTING wait = abap_true. cl_demo_output=>write_data( lv_return ). * HTML-Code vom Demo-Output holen DATA(lv_html) = cl_demo_output=>get( ). * Daten im Inline-Browser im SAP-Fenster anzeigen cl_abap_browser=>show_html( EXPORTING title = 'Daten' html_string = lv_html container = cl_gui_container=>default_screen ). * cl_gui_container=>default_screen erzwingen WRITE: space. ENDIF.
[ABAP] Daten zu einem PSP-Element lesen
* PRPS-POSID (Projektstrukturplanelement (PSP-Element)) PARAMETERS: p_wbs TYPE bapi_wbs_list MATCHCODE OBJECT h_wbselem DEFAULT ''. START-OF-SELECTION. DATA(it_wbs_element) = VALUE bapi_wbs_list_tab( ( wbs_element = p_wbs ) ). DATA: it_e_wbs_element TYPE STANDARD TABLE OF bapi_bus2054_detail WITH DEFAULT KEY. DATA(it_return) = VALUE bapiret2_t( ). * Detail Data for WBS Elements CALL FUNCTION 'BAPI_BUS2054_GETDATA' * EXPORTING * i_project_definition = TABLES it_wbs_element = it_wbs_element et_wbs_element = it_e_wbs_element et_return = it_return. * Hier Objekte für die Ausgabe hinzufügen cl_demo_output=>write_data( it_wbs_element ). cl_demo_output=>write_data( it_e_wbs_element ). cl_demo_output=>write_data( it_return ). * HTML-Code vom Demo-Output holen DATA(lv_html) = cl_demo_output=>get( ). * Daten im Inline-Browser im SAP-Fenster anzeigen cl_abap_browser=>show_html( EXPORTING title = 'Daten' html_string = lv_html container = cl_gui_container=>default_screen ). * cl_gui_container=>default_screen erzwingen WRITE: space.
[ABAP] IDOC als XML anzeigen
* IDoc-Nummer PARAMETERS: p_idoc TYPE edidc-docnum MATCHCODE OBJECT edi_docnum DEFAULT '12345'. START-OF-SELECTION. DATA: lv_action TYPE sy-ucomm. * Anzeigen eines IDocs in XML-Format mit XSL CALL FUNCTION 'IDOC_XML_TRANSFORM' EXPORTING docnum = p_idoc * actions = * styleid = 'IE5' " default IE5, siehe auch Tabelle IDOCSTYLE IMPORTING action = lv_action EXCEPTIONS no_idoc_xml_loaded = 1 no_idoc_xml_display_available = 2 error_loading_object = 3 OTHERS = 4. IF sy-subrc NE 0. WRITE: / 'Fehler:', sy-subrc. ELSE. WRITE: / 'Action:', lv_action. ENDIF.