STAUTHTRACE
- Button “Trace einschalten”
- entsprechenden Vorgang, für den der Trace aufgezeichnet werden soll, durchführen
- Button “Trace ausschalten”
- Button “Auswerten”
STAUTHTRACE
DAGOBJ (Übersicht der Data-Aging-Objekte)
DAGPTM (Partitionen verwalten)
DAGRUN (Übersicht der Data-Aging-Läufe)
DAGPTC (Partitionierungscustomizing)
DAGADM (Anzeige Data-Aging Administrator)
DAGLOG (Anzeige Data-Aging-Objekt Protokolle)
PARAMETERS: p_vbeln TYPE vbeln. START-OF-SELECTION. * Welche Daten sollen gelesen werden? DATA(lv_bapi_view) = VALUE order_view( header = abap_true item = abap_true sdschedule = abap_false business = abap_false partner = abap_false address = abap_false status_h = abap_false status_i = abap_false sdcond = abap_true sdcond_add = abap_true contract = abap_false text = abap_false flow = abap_false billplan = abap_false configure = abap_false credcard = abap_false incomp_log = abap_false ). * Belegnummern (VBELN) die selektiert werden sollen DATA: it_sales_documents TYPE STANDARD TABLE OF sales_key WITH DEFAULT KEY. APPEND p_vbeln TO it_sales_documents. * Ausgabetabellen * VBAK (Kopf) DATA: it_order_headers_out TYPE STANDARD TABLE OF bapisdhd WITH DEFAULT KEY. * VBAP (Positionen) DATA: it_order_items_out TYPE STANDARD TABLE OF bapisdit WITH DEFAULT KEY. * KOMV (Konditionen) DATA: it_order_conditions_out TYPE STANDARD TABLE OF bapisdcond WITH DEFAULT KEY. * Kundenauftrag: Liste aller Auftragsdaten (analog VA03) * Werte für I_MEMORY_READ: * SPACE = zuerst Pufferzugriff, dann DB-Zugriff * 'A' = nur Datenbankzugriff * 'B' = nur Pufferzugriff CALL FUNCTION 'BAPISDORDER_GETDETAILEDLIST' EXPORTING i_bapi_view = lv_bapi_view i_memory_read = space i_with_header_conditions = abap_true TABLES sales_documents = it_sales_documents order_headers_out = it_order_headers_out order_items_out = it_order_items_out order_conditions_out = it_order_conditions_out. * Datenausgabe cl_demo_output=>write_data( it_order_headers_out ). cl_demo_output=>write_data( it_order_items_out ). cl_demo_output=>write_data( it_order_conditions_out ). * HTML-Code holen DATA(lv_html) = cl_demo_output=>get( ). * Daten im Inline-Browser im SAP-Fenster anzeigen cl_abap_browser=>show_html( EXPORTING title = 'Daten zur Bestellung' html_string = lv_html container = cl_gui_container=>default_screen ). * cl_gui_container=>default_screen erzwingen WRITE: space.
* Quelle: https://abapblog.com/articles/tricks/127-selection-screen-function-key-in-form-function-module-or-method * Klasse greift auf Systemprogramm RSDBRUNT im Paket SLDBV zu CLASS zcl_sel_button DEFINITION FINAL. PUBLIC SECTION. CLASS-METHODS: activate IMPORTING i_btn_no TYPE i. CLASS-METHODS: deactivate IMPORTING i_btn_no TYPE i. CLASS-METHODS: set_info IMPORTING i_btn_no TYPE i i_text TYPE gui_text OPTIONAL i_icon TYPE icon_d OPTIONAL i_icon_text TYPE gui_ictext OPTIONAL i_quickinfo TYPE gui_info OPTIONAL. PRIVATE SECTION. CONSTANTS: co_current_screen TYPE string VALUE '(RSDBRUNT)CURRENT_SCREEN'. CONSTANTS: co_current_scr TYPE string VALUE '(RSDBRUNT)CURRENT_SCR'. CLASS-METHODS: set_visible IMPORTING i_btn_no TYPE i i_visible TYPE abap_bool. ENDCLASS. CLASS zcl_sel_button IMPLEMENTATION. * Button aktivieren METHOD activate. set_visible( i_btn_no = i_btn_no i_visible = abap_true ). ENDMETHOD. * Button deaktivieren METHOD deactivate. set_visible( i_btn_no = i_btn_no i_visible = abap_false ). ENDMETHOD. * Button-Infos setzen METHOD set_info. IF i_btn_no BETWEEN 1 AND 5 AND NOT i_text IS INITIAL AND NOT i_icon IS INITIAL. DATA(sscr) = CONV string( |({ sy-cprog })SSCRFIELDS| ). ASSIGN (sscr) TO FIELD-SYMBOL(<sscr>). IF <sscr> IS ASSIGNED. ASSIGN COMPONENT |FUNCTXT_0{ i_btn_no }| OF STRUCTURE <sscr> TO FIELD-SYMBOL(<btn_text>). IF <btn_text> IS ASSIGNED. <btn_text> = VALUE smp_dyntxt( icon_id = i_icon icon_text = i_icon_text text = i_text quickinfo = i_quickinfo ). ENDIF. ENDIF. ENDIF. ENDMETHOD. * Button Sichtbarkeit setzen METHOD set_visible. IF i_btn_no BETWEEN 1 AND 5. * Funktionsbutton aktivieren/deaktivieren FIELD-SYMBOLS: <screen> TYPE sydb0_screen. ASSIGN (co_current_screen) TO <screen>. IF <screen> IS ASSIGNED. DATA(idx) = i_btn_no - 1. <screen>-func_keys+idx(1) = i_visible. ENDIF. * Funktionsbutton anzeigen/verbergen FIELD-SYMBOLS: <scr> TYPE sydb0_scr_stack_line. ASSIGN (co_current_scr) TO <scr>. IF <scr> IS ASSIGNED. DATA(button) = |FC0{ i_btn_no }|. IF i_visible EQ abap_true. DELETE <scr>-excl WHERE fcode EQ button. ELSE. IF NOT line_exists( <scr>-excl[ fcode = button ] ). APPEND VALUE #( fcode = button ) TO <scr>-excl. ENDIF. ENDIF. ENDIF. ENDIF. ENDMETHOD. ENDCLASS. PARAMETERS: p_active AS CHECKBOX USER-COMMAND cba. INITIALIZATION. * zwei Funktions-Buttons einfügen zcl_sel_button=>set_info( EXPORTING i_btn_no = 1 i_text = 'Text1' i_icon = icon_abc i_icon_text = 'Text1' i_quickinfo = 'Info1' ). zcl_sel_button=>activate( 1 ). zcl_sel_button=>set_info( EXPORTING i_btn_no = 2 i_text = 'Text2' i_icon = icon_activate i_icon_text = 'Text2' i_quickinfo = 'Info2' ). zcl_sel_button=>activate( 2 ). AT SELECTION-SCREEN OUTPUT. * je nach Status der Checkbox p_active Funktionsbutton 3 ein- oder ausblenden IF p_active EQ abap_true. zcl_sel_button=>set_info( EXPORTING i_btn_no = 3 i_text = 'Text3' i_icon = icon_add_row i_icon_text = 'Text3' i_quickinfo = 'Info3' ). zcl_sel_button=>activate( 3 ). ELSE. zcl_sel_button=>deactivate( 3 ). ENDIF. AT SELECTION-SCREEN. * Kommando abfangen (Nummerierung 'FC01' ... 'FC05') CASE sy-ucomm. * wenn Funktionstaste 1 gedrückt WHEN 'FC01'. MESSAGE sy-ucomm TYPE 'S'. * wenn Funktionstaste 2 gedrückt WHEN 'FC02'. MESSAGE sy-ucomm TYPE 'S'. * wenn Funktionstaste 3 gedrückt WHEN 'FC03'. MESSAGE sy-ucomm TYPE 'S'. ENDCASE.
* https://blogs.sap.com/2016/10/03/how-to-perform-data-aging-in-s4hana/ * Transaktion: DAGOBJ * DAGPTC * Flag für Historische Daten DATA(lv_cold_access) = abap_true. * Datum für Aging DATA: lv_data_temperature TYPE data_temperature. lv_data_temperature = sy-datum - 30. TRY. * data aging möglich (von db unterstützt und aktivgeschaltet)? IF abap_true = cl_data_aging_state=>is_enabled( ). IF abap_true = lv_cold_access. * datenfilter setzen: alle daten sichtbar cl_abap_stack_temperature=>set_cold( ). ELSE. IF lv_data_temperature IS INITIAL. * datenfilter setzen: nur hot-daten sichtbar cl_abap_stack_temperature=>set_hot( ). ELSE. cl_abap_stack_temperature=>set_temperature( lv_data_temperature ). ENDIF. ENDIF. ENDIF. CATCH cx_root INTO DATA(e_txt). WRITE: e_txt->get_text( ). ENDTRY.
* https://blogs.sap.com/2016/10/03/how-to-perform-data-aging-in-s4hana/ * Transaktion: DAGOBJ * DAGPTC * Flag für Historische Daten DATA(lv_cold_access) = abap_true. * Datum für Aging DATA: lv_data_temperature TYPE data_temperature. lv_data_temperature = sy-datum - 30. TRY. DATA(o_ses) = cl_abap_session_temperature=>get_session_control( ). * Data Aging möglich (von DB unterstützt und aktivgeschaltet)? IF abap_true = cl_data_aging_state=>is_enabled( ). IF abap_true = lv_cold_access. * Datenfilter setzen: Alle Daten sichtbar o_ses->set_cold( ). ELSE. IF lv_data_temperature IS INITIAL. * Datenfilter setzen: Nur HOT-Daten sichtbar o_ses->set_hot( ). ELSE. o_ses->set_temperature( lv_data_temperature ). ENDIF. ENDIF. ENDIF. CATCH cx_root INTO DATA(e_txt). WRITE: e_txt->get_text( ). ENDTRY.
* Selektiert alle Einträge für 'DE' und 'US', mit Mehrfachnennungen SELECT cityto INTO TABLE @DATA(it_dest) FROM spfli WHERE countryfr = 'DE' OR countryfr = 'US'. *CITYTO: *SAN FRANCISCO *NEW YORK *FRANKFURT *SAN FRANCISCO *NEW YORK *TOKYO *NEW YORK *FRANKFURT *NEW YORK *BERLIN *FRANKFURT *SINGAPORE *SINGAPORE *SAN FRANCISCO *FRANKFURT *FRANKFURT *NEW YORK cl_demo_output=>display_data( it_dest ).
* Selektiert alle Einträge für 'DE' und 'US', ohne Mehrfachnennungen SELECT DISTINCT cityto INTO TABLE @DATA(it_dest) FROM spfli WHERE countryfr = 'DE' OR countryfr = 'US'. *CITYTO: *TOKYO *BERLIN *NEW YORK *SINGAPORE *FRANKFURT *SAN FRANCISCO cl_demo_output=>display_data( it_dest ).
* Selektiert den ersten Datensatz für 'DE' und 'US' SELECT SINGLE cityto INTO @DATA(lv_dest) FROM spfli WHERE countryfr = 'DE' OR countryfr = 'US'. *CITYTO: *SAN FRANCISCO cl_demo_output=>display_data( lv_dest ).
DATA: lv_carrid TYPE sflight-carrid VALUE 'AA'. DATA: lv_date TYPE dats VALUE '20181231'. DATA: lv_ok TYPE abap_bool VALUE abap_true. * Eingabefelder cl_demo_input=>add_field( EXPORTING text = 'Fluggesellschaft:' CHANGING field = lv_carrid ). cl_demo_input=>add_field( EXPORTING text = 'Datum:' CHANGING field = lv_date ). * Trennzeile cl_demo_input=>add_line( ). cl_demo_input=>add_field( EXPORTING text = 'Check:' as_checkbox = abap_true CHANGING field = lv_ok ). * Eingabe anfordern cl_demo_input=>request( ). WRITE: / lv_carrid. WRITE: / lv_date. WRITE: / lv_ok.
* mit CAST können im SQL nur eingebauten Dictionary-Typen verwendet werden SELECT carrid, connid, CAST( fldate AS CHAR ) AS chardat " DATS als CHAR interpretieren INTO TABLE @DATA(it_result) FROM sflight WHERE carrid = 'LH'. cl_demo_output=>display( it_result ).
DATA: lv_devclass TYPE string VALUE 'ZABAP2XLSX'. SELECT obj_name FROM tadir WHERE pgmid = 'R3TR' AND object = 'PROG' AND devclass = @lv_devclass UNION DISTINCT SELECT obj_name FROM tadir WHERE pgmid = 'R3TR' AND object = 'CLAS' AND devclass = @lv_devclass UNION DISTINCT SELECT obj_name FROM tadir WHERE pgmid = 'R3TR' AND object = 'FUGR' AND devclass = @lv_devclass UNION DISTINCT SELECT obj_name FROM tadir WHERE pgmid = 'R3TR' AND object = 'DEVC' AND devclass = @lv_devclass UNION DISTINCT SELECT obj_name FROM tadir WHERE pgmid = 'R3TR' AND object = 'DOMA' AND devclass = @lv_devclass UNION DISTINCT SELECT obj_name FROM tadir WHERE pgmid = 'R3TR' AND object = 'DTEL' AND devclass = @lv_devclass UNION DISTINCT SELECT obj_name FROM tadir WHERE pgmid = 'R3TR' AND object = 'INTF' AND devclass = @lv_devclass UNION DISTINCT SELECT obj_name FROM tadir WHERE pgmid = 'R3TR' AND object = 'MSAG' AND devclass = @lv_devclass UNION DISTINCT SELECT obj_name FROM tadir WHERE pgmid = 'R3TR' AND object = 'TABL' AND devclass = @lv_devclass UNION DISTINCT SELECT obj_name FROM tadir WHERE pgmid = 'R3TR' AND object = 'TTYP' AND devclass = @lv_devclass UNION DISTINCT SELECT obj_name FROM tadir WHERE pgmid = 'R3TR' AND object = 'WDYA' AND devclass = @lv_devclass UNION DISTINCT SELECT obj_name FROM tadir WHERE pgmid = 'R3TR' AND object = 'XSLT' AND devclass = @lv_devclass UNION DISTINCT SELECT obj_name FROM tadir WHERE pgmid = 'R3TR' AND object = 'WDYN' AND devclass = @lv_devclass ORDER BY obj_name INTO TABLE @DATA(it_prog_range). DATA(lv_lines) = lines( it_prog_range ). cl_demo_output=>write_data( lv_lines ). cl_demo_output=>write_data( it_prog_range ). cl_demo_output=>display( ).
DATA: lv_devclass TYPE string VALUE 'ZABAP2XLSX'. SELECT obj_name FROM tadir WHERE pgmid = 'R3TR' AND object = 'PROG' AND devclass = @lv_devclass UNION ALL SELECT obj_name FROM tadir WHERE pgmid = 'R3TR' AND object = 'CLAS' AND devclass = @lv_devclass UNION ALL SELECT obj_name FROM tadir WHERE pgmid = 'R3TR' AND object = 'FUGR' AND devclass = @lv_devclass UNION ALL SELECT obj_name FROM tadir WHERE pgmid = 'R3TR' AND object = 'DEVC' AND devclass = @lv_devclass UNION ALL SELECT obj_name FROM tadir WHERE pgmid = 'R3TR' AND object = 'DOMA' AND devclass = @lv_devclass UNION ALL SELECT obj_name FROM tadir WHERE pgmid = 'R3TR' AND object = 'DTEL' AND devclass = @lv_devclass UNION ALL SELECT obj_name FROM tadir WHERE pgmid = 'R3TR' AND object = 'INTF' AND devclass = @lv_devclass UNION ALL SELECT obj_name FROM tadir WHERE pgmid = 'R3TR' AND object = 'MSAG' AND devclass = @lv_devclass UNION ALL SELECT obj_name FROM tadir WHERE pgmid = 'R3TR' AND object = 'TABL' AND devclass = @lv_devclass UNION ALL SELECT obj_name FROM tadir WHERE pgmid = 'R3TR' AND object = 'TTYP' AND devclass = @lv_devclass UNION ALL SELECT obj_name FROM tadir WHERE pgmid = 'R3TR' AND object = 'WDYA' AND devclass = @lv_devclass UNION ALL SELECT obj_name FROM tadir WHERE pgmid = 'R3TR' AND object = 'XSLT' AND devclass = @lv_devclass UNION ALL SELECT obj_name FROM tadir WHERE pgmid = 'R3TR' AND object = 'WDYN' AND devclass = @lv_devclass ORDER BY obj_name INTO TABLE @DATA(it_prog_range). DATA(lv_lines) = lines( it_prog_range ). cl_demo_output=>write_data( lv_lines ). cl_demo_output=>write_data( it_prog_range ). cl_demo_output=>display( ).
* http://letscodeabap.blogspot.com/2015/03/get-reservations-in-abap.html TYPES: BEGIN OF ty_xtab1, werks LIKE resb-werks, lgort LIKE resb-lgort, charg LIKE resb-charg, matnr LIKE resb-matnr, bdmng LIKE resb-bdmng, bdmns LIKE resb-bdmng, erfme LIKE resb-erfme, erfmg LIKE resb-erfmg, END OF ty_xtab1. PARAMETERS: p_matnr TYPE marc-matnr DEFAULT '1234567890'. PARAMETERS: p_werks TYPE marc-werks DEFAULT '10'. START-OF-SELECTION. DATA: lv_detail TYPE bapi_mrp_stock_detail. DATA: lv_ret TYPE bapiret2. * Material - Aktuelle Bedarfs-/Bestandsliste CALL FUNCTION 'BAPI_MATERIAL_STOCK_REQ_LIST' EXPORTING material = p_matnr plant = p_werks IMPORTING mrp_stock_detail = lv_detail return = lv_ret. DATA: xbdart TYPE RANGE OF resb-bdart. * Range Bedarfsarten DATA(rg_resb_bdart) = VALUE rseloption( ( sign = 'I' option = 'EQ' low = 'AR' high = '' ) ( sign = 'I' option = 'EQ' low = 'MR' high = '' ) ). * Range Werke DATA(rg_werks) = VALUE rseloption( ( sign = 'I' option = 'EQ' low = p_werks high = '' ) ). * Rückgabetabelle mit Beständen DATA: it_xtab1 type STANDARD TABLE OF ty_xtab1 WITH DEFAULT KEY. * Lesen u. addieren v. reservierten Beständen CALL FUNCTION 'MB_ADD_RESERVATION_QUANTITIES' EXPORTING x_kzear = space " Endausfassung der Reservierung x_matnr = p_matnr x_xloek = space " Position ist gelöscht TABLES xbdart = rg_resb_bdart xtab1 = it_xtab1 xwerks = rg_werks. cl_demo_output=>write_data( lv_ret ). cl_demo_output=>write_data( lv_detail ). cl_demo_output=>write_data( it_xtab1 ). cl_demo_output=>display( ).