[ABAP] Ermittlung der Anmeldedaten incl. des Rechnernamens

* Ermittlung der Anmeldedaten incl. des Rechnernamens
TRY.
    DATA(lv_server_info) = NEW cl_server_info( ).

* Server related information, Liste aller Sessions
*  SERVER_NAME Name des Applikations-Servers
*  LOGON_HDL Anmeldungs-Schlüssel
*  LOGON_ID Anmeldungs-ID
*  SESSION_HDL Backend-Session-Handle
*  USER_NAME Benutzer-ID
*  LOGON_TYPE Typ der Anmeldung
*  LOGON_SUB_TYPE Zusatzinformation zum Anmeldungs-Typ
*  TENANT Name des Mandanten
*  REQUEST_TIME Zeit-Stempel (Anzahl Sekunden seit dem 1.1.1979)
*  MEMORY In Extended Memory (EM) belegter Speicher
*  LOCATION_INFO Informationen über den Client-Rechner des Benutzers
*  APPLICATION Anwendung
*  APPLICATION_INFO Zusatzinformationen zur Anwendung
*  RFC_HDL Conversation-ID
*  RFC_TYPE RFC Typ
*  TRACE Trace-Level
*  PRIORITY Priorität
*  MEMORY_BRUTTO In Extended Segments (ES) belegter Speicher
*  MEMORY_ABAP Von der ABAP-VM belegter Speicher
*  MEMORY_HYPER Größe des Session übergreifenden Speichers
*  MEMORY_HEAP In Prozess lokalem Heap belegter Speicher
*  OPEN_TASKS Offene Aufgaben (open Tasks) dieser Session
*  ACT_PROGRAM Name des Hauptprogrammes
*  WEBSOCKET_HANDLE WebSocket-Handle

    DATA(it_session_list) = lv_server_info->get_session_list( tenant = sy-mandt ).

    cl_demo_output=>write_data( it_session_list ).
* 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       = 'CL_SERVER_INFO'
                                          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] ABAP-Mathematik Bibliothek (cl_abap_math)

* min/max der Numerischen Typen
WRITE: / |{ cl_abap_math=>max_int4 STYLE = SCIENTIFIC }|.
WRITE: / |{ cl_abap_math=>min_int4 STYLE = SCIENTIFIC }|.
WRITE: / |{ cl_abap_math=>max_int8 STYLE = SCIENTIFIC }|.
WRITE: / |{ cl_abap_math=>min_int8 STYLE = SCIENTIFIC }|.
WRITE: / |{ cl_abap_math=>max_decfloat16 STYLE = SCIENTIFIC }|.
WRITE: / |{ cl_abap_math=>min_decfloat16 STYLE = SCIENTIFIC }|.
WRITE: / |{ cl_abap_math=>max_decfloat34 STYLE = SCIENTIFIC }|.
WRITE: / |{ cl_abap_math=>min_decfloat34 STYLE = SCIENTIFIC }|.

* float
DATA: lv_fv TYPE f VALUE '1.005'.
* Auf 15 Dezimalstellen gerundeter Wert
WRITE: / |{ cl_abap_math=>round_f_to_15_decs( lv_fv ) DECIMALS = 2 }|.

* Scale und Anzahl Stellen
DATA: lv_dec TYPE decfloat34 VALUE '1234.56789'.
* Liefert die Scale einer DECFLOAT-Zahl
WRITE: / cl_abap_math=>get_scale( lv_dec ).
* Anzahl der signifikanten Stellen einer DECFLOAT Zahl
WRITE: / cl_abap_math=>get_number_of_digits( lv_dec ).

[ABAP] DMS: Dokumenteninfosätze lesen (CVAPI_DOC_GETDETAIL)

* 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.
* Dokumentinformationssatz
  DATA(lv_draw) = VALUE draw(
                              doknr = p_num
                              dokar = p_type
                              doktl = p_part
                              dokvr = p_ver
                            ).
 
  DATA: lv_psx_draw TYPE draw.
  DATA: lv_pfx_dktxt TYPE drat-dktxt.
  DATA: it_doc_files TYPE STANDARD TABLE OF cvapi_doc_file WITH DEFAULT KEY.
  DATA: it_doc_comp TYPE STANDARD TABLE OF cvapi_doc_comp WITH DEFAULT KEY.
  DATA: it_drap TYPE STANDARD TABLE OF drap WITH DEFAULT KEY.
  DATA: it_drad TYPE STANDARD TABLE OF drad WITH DEFAULT KEY.
  DATA: it_drat TYPE STANDARD TABLE OF drat WITH DEFAULT KEY.

* DVS: Detaildaten eines Dokuments ermitteln
  CALL FUNCTION 'CVAPI_DOC_GETDETAIL'
    EXPORTING
      pf_dokar        = lv_draw-dokar
      pf_doknr        = lv_draw-doknr
      pf_dokvr        = lv_draw-dokvr
      pf_doktl        = lv_draw-doktl
      pf_read_drad    = abap_true
      pf_read_drap    = abap_true
      pf_active_files = abap_true
    IMPORTING
      psx_draw        = lv_psx_draw
      pfx_description = lv_pfx_dktxt
    TABLES
      pt_files        = it_doc_files
      pt_comp         = it_doc_comp
      pt_drap         = it_drap
      pt_drad         = it_drad
      pt_drat         = it_drat
    EXCEPTIONS
      not_found       = 1
      no_auth         = 2
      error           = 3
      OTHERS          = 4.

  IF sy-subrc= 0.
    cl_demo_output=>write_data( lv_psx_draw ).
    cl_demo_output=>write_data( lv_pfx_dktxt ).
    cl_demo_output=>write_data( it_doc_files ).
    cl_demo_output=>write_data( it_doc_comp ).
    cl_demo_output=>write_data( it_drap ).
    cl_demo_output=>write_data( it_drad ).
    cl_demo_output=>write_data( it_drat ).
 
* 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       = 'CVAPI_DOC_GETDETAIL'
                                          html_string = lv_html
                                          container   = cl_gui_container=>default_screen ).

* cl_gui_container=>default_screen erzwingen
    WRITE: space.
  ENDIF.

[ABAP] DMS: Dokumenteninfosätze löschen (BAPI_DOCUMENT_DELETE_DIRECT)

* Dokumentart (TA DC10, Tabelle TDWA)
PARAMETERS: p_dtype TYPE bapi_doc_aux-doctype OBLIGATORY.
* Objekttyp (Material -> MARA)
PARAMETERS: p_otype TYPE bapi_doc_drad-objecttype OBLIGATORY DEFAULT 'MARA'.
* Objektkey (Material -> MATNR)
PARAMETERS: p_okey TYPE bapi_doc_drad-objectkey OBLIGATORY DEFAULT '000000001122334455'.

START-OF-SELECTION.

  DATA: it_doc_keys TYPE STANDARD TABLE OF bapi_doc_keys WITH DEFAULT KEY.
  DATA: lv_return   TYPE bapiret2.

* Determine Documents for an Object
  CALL FUNCTION 'BAPI_DOCUMENT_GETOBJECTDOCS'
    EXPORTING
      objecttype          = p_otype
      objectkey           = p_okey
      currentversionsonly = abap_false " alle Versionen lesen
      date                = sy-datum
    IMPORTING
      return              = lv_return
    TABLES
      documentlist        = it_doc_keys.

  IF lv_return-type CA 'EA'.
    WRITE: / lv_return-message.
  ELSE.
* Alle gefundenen Dokumenteninfosätze durchgehen
    LOOP AT it_doc_keys ASSIGNING FIELD-SYMBOL(<d>).
* Wenn Dokumenttyp gefunden
      IF <d>-documenttype = p_dtype.
        DATA: ret TYPE string.

* Abfrage zum Löschen
        CALL FUNCTION 'POPUP_TO_CONFIRM'
          EXPORTING
            titlebar              = 'Frage'
            text_question         = |Löschen DI { <d>-documentnumber } ?|
            display_cancel_button = abap_true
          IMPORTING
            answer                = ret.

        CASE ret.
          WHEN '1'.
* Ja --> löschen
* Delete document or set deletion indicator
            CALL FUNCTION 'BAPI_DOCUMENT_DELETE_DIRECT'
              EXPORTING
                documenttype    = <d>-documenttype
                documentnumber  = <d>-documentnumber
                documentpart    = <d>-documentpart
                documentversion = <d>-documentversion
              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.
            ENDIF.
          WHEN OTHERS.

        ENDCASE.

      ENDIF.
    ENDLOOP.
  ENDIF.

[ABAP] DMS: Dateien von Dokumenteninfosätzen lesen (SCMS_DOC_READ)

* 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_bapi_doc_draw2 TYPE bapi_doc_draw2.
  DATA: lv_bapiret2 TYPE bapiret2.

  DATA: it_documentfiles TYPE STANDARD TABLE OF bapi_doc_files2 WITH DEFAULT KEY.

* Determine Detail Data for a Document
  CALL FUNCTION 'BAPI_DOCUMENT_GETDETAIL2'
    EXPORTING
      documenttype       = p_type
      documentnumber     = p_num
      documentpart       = p_part
      documentversion    = p_ver
      getactivefiles     = abap_true
      getdocdescriptions = abap_true
      getdocfiles        = abap_true
    IMPORTING
      documentdata       = lv_bapi_doc_draw2
      return             = lv_bapiret2
    TABLES
      documentfiles      = it_documentfiles.

  cl_demo_output=>write_data( p_type ).
  cl_demo_output=>write_data( p_num ).
  cl_demo_output=>write_data( p_part ).
  cl_demo_output=>write_data( p_ver ).
  cl_demo_output=>write_data( lv_bapiret2 ).
  cl_demo_output=>write_data( lv_bapi_doc_draw2 ).
  cl_demo_output=>write_data( it_documentfiles ).

  IF lv_bapiret2-type CA 'EA'.

  ELSE.
    IF lines( it_documentfiles ) > 0.

      DATA: it_access_info TYPE STANDARD TABLE OF scms_acinf WITH DEFAULT KEY.
      DATA: it_content_txt TYPE STANDARD TABLE OF sdokcntasc WITH DEFAULT KEY.
      DATA: it_content_bin TYPE STANDARD TABLE OF sdokcntbin WITH DEFAULT KEY.

* CMS: Dokument lesen
      CALL FUNCTION 'SCMS_DOC_READ'
        EXPORTING
          stor_cat              = it_documentfiles[ 1 ]-storagecategory
          doc_id                = it_documentfiles[ 1 ]-file_id
          no_cache              = abap_true
        TABLES
          access_info           = it_access_info
          content_txt           = it_content_txt
          content_bin           = it_content_bin
        EXCEPTIONS
          bad_storage_type      = 1
          bad_request           = 2
          unauthorized          = 3
          comp_not_found        = 4
          not_found             = 5
          forbidden             = 6
          conflict              = 7
          internal_server_error = 8
          error_http            = 9
          error_signature       = 10
          error_config          = 11
          error_format          = 12
          error_parameter       = 13
          error                 = 14
          OTHERS                = 15.

      IF sy-subrc = 0.
        cl_demo_output=>write_data( it_access_info ).
        cl_demo_output=>write_data( it_content_txt ).

* Binärdaten für weitere Verarbeitung (Speichern, Anzeigen ...)	
        cl_demo_output=>write_data( it_content_bin ).
      ENDIF.
    ENDIF.

* 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       = 'SCMS_DOC_READ'
                                          html_string = lv_html
                                          container   = cl_gui_container=>default_screen ).

* cl_gui_container=>default_screen erzwingen
    WRITE: space.
  ENDIF.

[ABAP] DMS: Verknüpfte Dokumenteninfosätze zu einem Objekt lesen (BAPI_DOCUMENT_GETOBJECTDOCS)

* Objekttyp (Material -> MARA)
PARAMETERS: p_otype TYPE bapi_doc_drad-objecttype OBLIGATORY DEFAULT 'MARA'.
* Objektkey (Material -> MATNR)
PARAMETERS: p_okey TYPE bapi_doc_drad-objectkey OBLIGATORY DEFAULT '000000001122334455'.

START-OF-SELECTION.

  DATA: it_doc_keys TYPE STANDARD TABLE OF bapi_doc_keys WITH DEFAULT KEY.
  DATA: lv_return   TYPE bapiret2.

* Determine Documents for an Object
  CALL FUNCTION 'BAPI_DOCUMENT_GETOBJECTDOCS'
    EXPORTING
      objecttype          = p_otype
      objectkey           = p_okey
      currentversionsonly = abap_false " alle Versionen lesen
      date                = sy-datum
    IMPORTING
      return              = lv_return
    TABLES
      documentlist        = it_doc_keys.

  cl_demo_output=>write_data( lv_return ).
  cl_demo_output=>write_data( it_doc_keys ).

* 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       = 'BAPI_DOCUMENT_GETOBJECTDOCS'
                                        html_string = lv_html
                                        container   = cl_gui_container=>default_screen ).

* cl_gui_container=>default_screen erzwingen
  WRITE: space.

[ABAP] HTTP-Daten lesen

DATA: lv_no_logon TYPE abap_bool VALUE abap_true.
DATA: lv_url TYPE swk_url VALUE 'https://google.de'.
DATA: lv_user TYPE char50.
DATA: lv_passwd TYPE char50.
DATA: lv_timeout TYPE i VALUE 60.

DATA: lv_length TYPE i.
DATA: lv_status_code TYPE char3.
DATA: lv_status_text TYPE char128.

DATA: it_head TYPE STANDARD TABLE OF docs WITH DEFAULT KEY.
DATA: it_body TYPE STANDARD TABLE OF docs WITH DEFAULT KEY.

* HTTP Get
CALL FUNCTION 'HTTP2_GET'
  EXPORTING
    absolute_uri                = lv_url
    user                        = lv_user
    password                    = lv_passwd
    timeout                     = lv_timeout
    no_logon                    = lv_no_logon
  IMPORTING
    status_code                 = lv_status_code
    status_text                 = lv_status_text
    response_entity_body_length = lv_length
  TABLES
    response_entity_body        = it_body
    response_headers            = it_head
  EXCEPTIONS
    connect_failed              = 1
    timeout                     = 2
    internal_error              = 3
    tcpip_error                 = 4
    data_error                  = 5
    system_failure              = 6
    communication_failure       = 7
    OTHERS                      = 8.

IF sy-subrc = 0.
  cl_demo_output=>write_data( lv_status_code ).
  cl_demo_output=>write_data( lv_status_text ).
  cl_demo_output=>write_data( lv_length ).
  cl_demo_output=>write_data( it_head ).
  cl_demo_output=>write_data( it_body ).

* 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       = 'HTTP2_GET'
                                        html_string = lv_html
                                        container   = cl_gui_container=>default_screen ).

* cl_gui_container=>default_screen erzwingen
  WRITE: space.
ENDIF.

[ABAP] DMS: Dateien an Dokumenteninfosätze anhängen (CVAPI_DOC_CREATE)

TYPES: BEGIN OF bin_file,
         name TYPE string,
         size TYPE i,
         data TYPE solix_tab,
       END OF bin_file.

* Dokumentart (TA DC10, Tabelle TDWA)
PARAMETERS: p_type TYPE bapi_doc_aux-doctype OBLIGATORY.
* Teildokument
PARAMETERS: p_part TYPE bapi_doc_aux-docpart OBLIGATORY DEFAULT '000'.
* Dokumentversion
PARAMETERS: p_ver TYPE bapi_doc_aux-docversion OBLIGATORY DEFAULT '00'.
* Beschreibung
PARAMETERS: p_desc TYPE bapi_doc_drat-description DEFAULT 'Test 123'.
* Ablagekategorie (TA OACT, Tabelle SDOKSTCAE, View V_SDOKSTCA)
PARAMETERS: p_stor TYPE bapi_doc_files2-storagecategory OBLIGATORY.
* Logisches Dokument/Workstation Application (TA S_ALR_87008829, Tabelle TDWP, Bild -> JPG)
PARAMETERS: p_appl TYPE bapi_doc_files2-application_id OBLIGATORY DEFAULT 'JPG'.
* Objekttyp (Material -> MARA)
PARAMETERS: p_otype TYPE bapi_doc_drad-objecttype OBLIGATORY DEFAULT 'MARA'.
* Objektkey (Material -> MATNR)
PARAMETERS: p_okey TYPE bapi_doc_drad-objectkey OBLIGATORY DEFAULT '000000001122334455'.

START-OF-SELECTION.
  TRY.
      DATA: lv_rc TYPE i.
      DATA: it_files TYPE filetable.
      DATA: lv_action TYPE i.

* FileOpen-Dialog aufrufen
      cl_gui_frontend_services=>file_open_dialog( EXPORTING file_filter = |jpg (*.jpg)\|*.jpg\|{ cl_gui_frontend_services=>filetype_all }|
                                                  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.
* Dateien auf den Appl.-Server hochladen
          DATA: lv_file TYPE bin_file.
          cl_gui_frontend_services=>gui_upload( EXPORTING filename   = CONV #( it_files[ 1 ]-filename )
                                                          filetype   = 'BIN'
                                                IMPORTING filelength = lv_file-size
                                                CHANGING  data_tab   = lv_file-data ).

          DATA: lv_xstring TYPE xstring.

* Datei binär zu xstring wandeln
          CALL FUNCTION 'SCMS_BINARY_TO_XSTRING'
            EXPORTING
              input_length = lv_file-size
            IMPORTING
              buffer       = lv_xstring
            TABLES
              binary_tab   = lv_file-data.

* Dokumentinformationssatz
          DATA(lv_draw) = VALUE draw(
                                      dokar = p_type
                                      doktl = p_part
                                      dokvr = p_ver
                                    ).

* DVS: Steuerung für APIS
          DATA(lv_api_control) = VALUE cvapi_api_control(
                                                            no_update_task = abap_true
                                                        ).

* Kurztexte für Dokuinfosätze
          DATA: it_drat TYPE STANDARD TABLE OF dms_db_drat WITH DEFAULT KEY.
          it_drat = VALUE #( (
                                langu = sy-langu
                                dktxt = p_desc
                             )
                           ).

* Verknüpfung Dokument-Objekt
          DATA: it_drad TYPE STANDARD TABLE OF dms_db_drad WITH DEFAULT KEY.

          it_drad = VALUE #( (
                               dokob = p_otype
                               objky = p_okey
                             )
                           ).

* Originale für Dokumente (Dateianhang)
          DATA: it_bin_content TYPE STANDARD TABLE OF drao WITH DEFAULT KEY.

          DATA: lv_data_length TYPE i.
          DATA: it_content_raw TYPE STANDARD TABLE OF orblk WITH DEFAULT KEY.

* xstring --> ORBLK (Binärformat mit Zeilenlänge 2550 Bytes)
          CALL FUNCTION 'SCMS_XSTRING_TO_BINARY'
            EXPORTING
              buffer        = lv_xstring
            IMPORTING
              output_length = lv_data_length
            TABLES
              binary_tab    = it_content_raw.

* Datenaufbereitung
          LOOP AT it_content_raw ASSIGNING FIELD-SYMBOL(<raw>).

            APPEND VALUE #(
                            zaehl = sy-tabix
                            appnr = '1'
                            dokar = p_type
                            orln  = lv_data_length
*                            orbkl = 2550
                            orblk = <raw>
                          ) TO it_bin_content.
          ENDLOOP.

* DVS: Originale zu einem Dokument
          DATA: it_doc_files TYPE STANDARD TABLE OF cvapi_doc_file WITH DEFAULT KEY.

          it_doc_files = VALUE #( ( updateflag  = 'I'
                                    appnr       = '1'
                                    dappl       = p_appl
                                    filename    = it_files[ 1 ]-filename
                                    storage_cat = p_stor
                                    description = p_desc ) ).

          DATA(lv_message) = VALUE messages( ).
          DATA(lv_pfx_dokar) = VALUE draw-dokar( ).
          DATA(lv_pfx_doknr) = VALUE draw-doknr( ).
          DATA(lv_pfx_dokvr) = VALUE draw-dokvr( ).
          DATA(lv_pfx_doktl) = VALUE draw-doktl( ).

* DVS: Dokument anlegen
          CALL FUNCTION 'CVAPI_DOC_CREATE'
            EXPORTING
              ps_draw            = lv_draw
              ps_api_control     = lv_api_control
              pf_content_provide = 'TBL' " Binärdaten des Files als Tabelle übergeben
            IMPORTING
              psx_message        = lv_message
              pfx_dokar          = lv_pfx_dokar
              pfx_doknr          = lv_pfx_doknr
              pfx_dokvr          = lv_pfx_dokvr
              pfx_doktl          = lv_pfx_doktl
            TABLES
              pt_drad_x          = it_drad
              pt_drat_x          = it_drat
              pt_files_x         = it_doc_files
              pt_content         = it_bin_content.

          IF lv_message-msg_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_message ).
            cl_demo_output=>write_data( lv_pfx_dokar ).
            cl_demo_output=>write_data( lv_pfx_doknr ).
            cl_demo_output=>write_data( lv_pfx_dokvr ).
            cl_demo_output=>write_data( lv_pfx_doktl ).

* 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       = 'CVAPI_DOC_CREATE'
                                                  html_string = lv_html
                                                  container   = cl_gui_container=>default_screen ).

* cl_gui_container=>default_screen erzwingen
            WRITE: space.
          ENDIF.
        ENDIF.
      ENDIF.
    CATCH cx_root INTO DATA(e_text).
      MESSAGE e_text->get_text( ) TYPE 'S' DISPLAY LIKE 'E'.
  ENDTRY.