SE80
- Menü -> Hilfmittel -> Einstellungen -> ABAP-Editor -> Debugging -> Debuggen externer Requests -> Benutzer
SE80
SE18
SE18
SE80
* von cl_gui_alv_grid abgeleitet DATA(o_alv) = NEW cl_akb_alv_grid( i_parent = cl_gui_container=>default_screen ). ... * prüfen, ob sich Inhalt verändert hat IF o_alv->grid_has_changed( ) = abap_true. ... ENDIF.
DATA: it_spfli TYPE STANDARD TABLE OF spfli WITH DEFAULT KEY. DATA: it_spfli_sel TYPE STANDARD TABLE OF spfli WITH DEFAULT KEY. PARAMETERS: p_test TYPE spfli-connid. INITIALIZATION. SELECT * FROM spfli INTO CORRESPONDING FIELDS OF TABLE it_spfli. AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_test. CLEAR: it_spfli_sel. DATA(o_f4) = cl_reca_gui_f4_popup=>factory_grid( id_title = 'Flugdaten' if_multi = abap_false " Mehrfachauswahl it_f4value = it_spfli ). o_f4->display( IMPORTING et_result = it_spfli_sel ). IF lines( it_spfli_sel ) > 0. p_test = it_spfli_sel[ 1 ]-connid. ENDIF.
DATA: o_alv TYPE REF TO cl_salv_table. START-OF-SELECTION. DATA: it_spfli TYPE STANDARD TABLE OF spfli WITH DEFAULT KEY. SELECT * FROM spfli INTO CORRESPONDING FIELDS OF TABLE it_spfli. WRITE: / 'GUI-Objekt in der Listanzeige'. ULINE. * freier Custom-Container in der Listenansicht DATA(o_cnt) = NEW cl_gui_custom_container( container_name = '' repid = 'SAPMSSY0' dynnr = '0120' ). * Position des Containers o_cnt->set_top( 50 ). o_cnt->set_left( 50 ). o_cnt->set_width( 1000 ). o_cnt->set_height( 200 ). * SALV-Grid für Anzeige im Container TRY. cl_salv_table=>factory( EXPORTING r_container = o_cnt IMPORTING r_salv_table = o_alv CHANGING t_table = it_spfli ). o_alv->display( ). CATCH cx_root INTO DATA(e_txt). WRITE: / e_txt->get_text( ). ENDTRY. DO 100 TIMES. WRITE: / |{ sy-index } Lorem ipsum.|. ENDDO.
Typ Objekt Transaktion Bemerkung User-Exit Unterprogramm (FORM) SPDD, SPAM, SPAU Modifikation Customer-Exit Funktionsbaustein SMOD, CMOD Erweiterung Business Transaction Event Funktionsbaustein Erweiterung Business Add In (BAdI) Interface, Klasse SE18, SE19 Erweiterung Enhancement Points Interface, Klasse SE18, SE19 Erweiterung, Verwaltung durch Enhancement Framework (+neue und alte BAdIs)
PERFORM userexit_<name>. * z.B. Include MV45AFZB (vom SAP-Entwickler bereitgestellt) FORM userexit_<name>. ENDFORM.
Infos zu Customer-Exits: Link
CALL CUSTOMER-FUNCTION '001' EXPORTING ... IMPORTING ... * Aufruf Include mit Quelltext FUNCTION-POOL XYZ. FUNCTION exit_<programm_name>_001. ... INCLUDE zxaaau01. ... ENDFUNCTION.
Infos zu BAdIs: Link
Infos zu BADI_SORTER: Link
* Objektreferenz für Methoden des BAdI-Interfaces cl_exithandler=>get_instance( ) * Methoden der BAdI-Erweiterung aufrufen o_badi->method_abc( ) * Tabellen * SXS_ATTR (Feld EXIT_NAME, ACTIVE = 'X') * SXC_ATTR (Feld EXIT_NAME) * SXS_ATTRT (Feld EXIT_NAME) * SXC_EXIT (Feld EXIT_NAME, IMP_NAME) * Abarbeitungsrreihenfolge über Implementierung von BADI_SORTER erzwingen
Infos zu Enhancement-Points: Link
* keine Import/Export-Schnittstelle * implizit: automatisch vorhandene Absprungpunkte (z.B. Anfang/Ende des Quellcodes) * im Menu einblendbar * explizit: von SAP vorbereitete Absprungpunkte ENHANCEMENT-POINT EP_A SPOTS ESPOT_X. ... ENHANCEMENT-SECTION ES_B SPOTS ESPOT_X. ... END-ENHANCEMENT-SECTION.
* die Klasse, deren Objekte geclont werden sollen, muss von CL_OS_STATE * ableiten, damit das Interface IF_OS_CLONE implementiert wird CLASS lcl_clone_test DEFINITION INHERITING FROM cl_os_state. PUBLIC SECTION. * ALIAS für die Implementierung von cl_os_state=>if_os_clone~clone( ) * ruft SYSTEM-CALL OBJMGR CLONE me TO result. ALIASES: clone FOR if_os_clone~clone. METHODS: constructor IMPORTING i_text TYPE string. METHODS: get_text RETURNING VALUE(rv_text) TYPE string. PRIVATE SECTION. DATA: gv_text TYPE string. ENDCLASS. CLASS lcl_clone_test IMPLEMENTATION. METHOD constructor. * Konstruktor der Basisklasse CL_OS_STATE rufen super->constructor( ). gv_text = i_text. ENDMETHOD. METHOD get_text. rv_text = gv_text. ENDMETHOD. ENDCLASS. START-OF-SELECTION. DATA(o_src) = NEW lcl_clone_test( 'SRC' ). WRITE: / o_src->get_text( ). * Objekt O_SRC clonen, Rückgabe von REF TO object nach LCL_CLONE_TEST explizit casten * es wird ein neues, zu O_SRC identisches, Objekt erzeugt DATA(o_clone) = CAST lcl_clone_test( o_src->clone( ) ). WRITE: / o_clone->get_text( ).
* dynamisch einen Typ char40 erzeugen DATA(o_type_char40) = cl_abap_elemdescr=>get_c( 40 ). * dynamisch einen Typ string erzeugen DATA(o_type_string) = cl_abap_elemdescr=>get_string( ). * dynamisch einen Typ i erzeugen DATA(o_type_int) = cl_abap_elemdescr=>get_i( ). * dynamisch einen Typ decfloat34 erzeugen DATA(o_type_d34) = cl_abap_elemdescr=>get_decfloat34( ). * Referenz auf Objekt vom Typ char40 erzeugen DATA: o_ref_char40 TYPE REF TO data. CREATE DATA o_ref_char40 TYPE HANDLE o_type_char40. * Referenz auf Objekt vom Typ string erzeugen DATA: o_ref_string TYPE REF TO data. CREATE DATA o_ref_string TYPE HANDLE o_type_string. * Referenz auf Objekt vom Typ i erzeugen DATA: o_ref_int TYPE REF TO data. CREATE DATA o_ref_int TYPE HANDLE o_type_int. * Referenz auf Objekt vom Typ i erzeugen DATA: o_ref_d34 TYPE REF TO data. CREATE DATA o_ref_d34 TYPE HANDLE o_type_d34. * Referenz einem Feldsymbol zuweisen ASSIGN o_ref_char40->* TO FIELD-SYMBOL(<char40>). ASSIGN o_ref_string->* TO FIELD-SYMBOL(<string>). ASSIGN o_ref_int->* TO FIELD-SYMBOL(<int>). ASSIGN o_ref_d34->* TO FIELD-SYMBOL(<d34>). * Wert auf Feldsymbol schreiben <char40> = 'char40'. <string> = 'string'. <int> = 1. <d34> = '3.1415926535'. WRITE: / <char40>. WRITE: / <string>. WRITE: / <int>. WRITE: / <d34>.
DATA: lv_mime_type TYPE string. DATA: lv_image_bytes TYPE xstring. TRY. * Screenshot aufnehmen cl_gui_frontend_services=>get_screenshot( IMPORTING mime_type_str = lv_mime_type image = lv_image_bytes ). * MIME-Typ (PNG) ausgeben WRITE: / lv_mime_type. DATA: lv_action TYPE i. DATA: lv_filename TYPE string. DATA: lv_fullpath TYPE string. DATA: lv_path TYPE string. * Savedialog anzeigen cl_gui_frontend_services=>file_save_dialog( EXPORTING default_file_name = 'image.png' default_extension = 'png' file_filter = '(*.png)|*.png|' CHANGING filename = lv_filename path = lv_path fullpath = lv_fullpath user_action = lv_action ). IF lv_action EQ cl_gui_frontend_services=>action_ok. * XSTRING -> SOLIX (RAW) DATA(it_raw_data) = cl_bcs_convert=>xstring_to_solix( EXPORTING iv_xstring = lv_image_bytes ). * Daten lokal speichern cl_gui_frontend_services=>gui_download( EXPORTING filename = lv_fullpath filetype = 'BIN' bin_filesize = xstrlen( lv_image_bytes ) CHANGING data_tab = it_raw_data ). ENDIF. CATCH cx_root INTO DATA(e_txt). ENDTRY. ENDTRY.