[ABAP] ITS: Aufruf einer Transaktion über HTTPS in der WebGui

PARAMETERS: p_matnr TYPE mara-matnr.

START-OF-SELECTION.

  DATA: it_servlist TYPE STANDARD TABLE OF icm_sinfo2 WITH DEFAULT KEY.

* Statistikdaten des ICM lesen
  CALL FUNCTION 'ICM_GET_INFO2'
    TABLES
      servlist           = it_servlist
    EXCEPTIONS
      icm_error          = 1
      icm_timeout        = 2
      icm_not_authorized = 3
      OTHERS             = 4.

  IF sy-subrc = 0.
* protocol 1: HTTP
* protocol 2: HTTPS
    IF line_exists( it_servlist[ protocol = 2 ] ).
* URL für Transaktions-Anzeige in der ITS-WebGui zusammenbauen
* SICF-Service muss aktiv sein: /sap/bc/gui/sap/its/webgui
* Daten werden in der Klasse CL_HTTP_EXT_ITS prozessiert
      DATA(lv_server) = it_servlist[ protocol = 2 ].
      DATA(lv_html) = |https://{ lv_server-hostname }:{ lv_server-service }|.
      lv_html = lv_html && |/sap/bc/gui/sap/its/webgui?|.
      lv_html = lv_html && |~transaction=*MM03%20RMMG1-MATNR={ p_matnr ALPHA = OUT WIDTH = 10 }|. " MM03 + MATNR --> Selektionbild überspringen
      lv_html = lv_html && |&sap-client={ sy-mandt }|.
      lv_html = lv_html && |&sap-language=DE|.

* Browserfenster mit default_screen als Container
      DATA(o_hv) = NEW cl_gui_html_viewer( parent = cl_gui_container=>default_screen ).
* SSO
*      o_hv->enable_sapsso( enabled = abap_true ).
* ITS: WebGui inline (im SAPGUI) anzeigen
      o_hv->show_url( url      = CONV swk_url( lv_html )
                      in_place = abap_true ).

* Führt alle gesammelten OLE-Calls aus
      cl_gui_cfw=>flush( ).

* Toolbar ausblenden
      cl_abap_list_layout=>suppress_toolbar( ).

* erzwingt Anzeige über cl_gui_container=>default_screen
      WRITE: / space.
    ENDIF.
  ENDIF.

Links

[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.