Variante 1 (SWN_CREATE_SHORTCUT -> *.sap-Datei speichern)
* SAP ShortCode-Dateien sind mit der installierten SAPGUI verknüpft und werden von dieser beim Doppelklick auf den Dateinamen geöffnet und ausgeführt
* SAP ShortCode-Dateien können auch im SAPGUI über den Button "Erstellt eine Verknüpfung" erzeugt werden
* SAP Hinweis: 103019 - SAPshortcut: Programmparameter
* http://troublefreeabap.blogspot.com/2013/06/creating-sapgui-shortcuts.html
PARAMETERS: p_matnr TYPE mara-matnr.
START-OF-SELECTION.
* Kommando (i_system_command):
* - fasst i_transaction und i_parameter zusammen
* - Transaktion MM03 in neuem Fenster anzeigen
* - '/o' --> neuen Modus öffnen
* - '*' --> überspringt Selektionsbild
* - Übergabe: MATNR an Dynpro-Feld für die MATNR im Selektionsbild (RMMG1-MATNR)
* - entfernen führenden Nullen (ALPHA = OUT)
DATA(lv_cmd) = |/o*MM03 RMMG1-MATNR={ p_matnr ALPHA = OUT }|.
* Texttabelle mit generierten Daten für die Shortcut-Datei (*.sap)
DATA(it_sap_shortcut_data) = VALUE soli_tab( ).
* WF Notif: SAP Shortcut als Anlage erzeugen
CALL FUNCTION 'SWN_CREATE_SHORTCUT'
EXPORTING
i_system_command = CONV char40( lv_cmd )
* i_transaction = '*MM03'
* i_parameter = CONV text255( |RMMG1-MATNR={ p_matnr ALPHA = OUT }| )
i_user = ''
i_windowsize = 'Maximized' " oder 'Normal window'
i_title = CONV char80( |MM03 - Material anzeigen| )
IMPORTING
shortcut_table = it_sap_shortcut_data
EXCEPTIONS
inconsistent_parameters = 1
OTHERS = 2.
IF sy-subrc = 0.
* *.sap ShortCut-Datei speichern
TRY.
DATA: lv_action TYPE i.
DATA: lv_filename TYPE string.
DATA: lv_fullpath TYPE string.
DATA: lv_path TYPE string.
* Save-Dialog
cl_gui_frontend_services=>file_save_dialog( EXPORTING default_file_name = 'Start_MM03.sap'
default_extension = 'sap'
file_filter = |ShortCut-Datei (*.sap)\|*.sap\|{ cl_gui_frontend_services=>filetype_all }|
CHANGING filename = lv_filename
path = lv_path
fullpath = lv_fullpath
user_action = lv_action ).
IF lv_action EQ cl_gui_frontend_services=>action_ok.
* Datei lokal speichern
cl_gui_frontend_services=>gui_download( EXPORTING filename = lv_fullpath
filetype = 'DAT'
CHANGING data_tab = it_sap_shortcut_data ).
ENDIF.
CATCH cx_root INTO DATA(e_text).
MESSAGE e_text->get_text( ) TYPE 'I'.
ENDTRY.
ENDIF.
Variante 2 (SICF-Service /sap/public/bc/workflow/shortcut)
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 workflow-shortcut zusammenbauen
* SICF-Service muss aktiv sein: /sap/public/bc/workflow/shortcut
* Daten werden in der Klasse CL_SWN_HTTP_SHORTCUT prozessiert
DATA(lv_server) = it_servlist[ protocol = 2 ].
DATA(lv_html) = |https://{ lv_server-hostname }:{ lv_server-service }|.
lv_html = lv_html && |/sap/public/bc/workflow/shortcut?|.
lv_html = lv_html && |sysid={ sy-sysid }&client={ sy-mandt }|.
lv_html = lv_html && |&logonid=&uname={ sy-uname }|.
lv_html = lv_html && |&langu=DE|.
lv_html = lv_html && |&transaction=*MM03|.
lv_html = lv_html && |¶m=RMMG1-MATNR%3d{ p_matnr ALPHA = OUT }|.
WRITE: / lv_html.
ENDIF.
ENDIF.