[ABAP] OS-Platform ermitteln

TRY.
    DATA(lv_platform) = cl_gui_frontend_services=>get_platform( ).

    CASE lv_platform.
      WHEN cl_gui_frontend_services=>platform_aix.
        WRITE / 'aix'.
      WHEN cl_gui_frontend_services=>platform_hpux.
        WRITE / 'hpux'.
      WHEN cl_gui_frontend_services=>platform_linux.
        WRITE / 'linux'.
      WHEN cl_gui_frontend_services=>platform_mac.
        WRITE / 'mac'.
      WHEN cl_gui_frontend_services=>platform_macosx.
        WRITE / 'macosx'.
      WHEN cl_gui_frontend_services=>platform_nt351.
        WRITE / 'nt351'.
      WHEN cl_gui_frontend_services=>platform_nt40.
        WRITE / 'nt40'.
      WHEN cl_gui_frontend_services=>platform_nt50.
        WRITE / 'nt50'.
      WHEN cl_gui_frontend_services=>platform_os2.
        WRITE / 'os2'.
      WHEN cl_gui_frontend_services=>platform_solaris.
        WRITE / 'solaris'.
      WHEN cl_gui_frontend_services=>platform_tru64.
        WRITE / 'tru64'.
      WHEN cl_gui_frontend_services=>platform_unknown.
        WRITE / 'unknown'.
      WHEN cl_gui_frontend_services=>platform_windows95.
        WRITE / 'windows95'.
      WHEN cl_gui_frontend_services=>platform_windows98.
        WRITE / 'windows98'.
      WHEN cl_gui_frontend_services=>platform_windowsxp.
        WRITE / 'windowsxp'.
      WHEN OTHERS.
        WRITE / 'Other'.
    ENDCASE.
  CATCH cx_root INTO DATA(e_txt).
    WRITE: / e_txt->get_text( ).
ENDTRY.

[ABAP] Rollen eines Benutzers im System auflisten

DATA: it_agr_users TYPE STANDARD TABLE OF agr_users.
DATA: o_salv TYPE REF TO cl_salv_table.

PARAMETERS: p_user TYPE agr_users-uname DEFAULT sy-uname.

START-OF-SELECTION.
  SELECT * FROM agr_users INTO TABLE @it_agr_users
    WHERE uname = @p_user
    ORDER BY agr_name.

  cl_salv_table=>factory( IMPORTING
                            r_salv_table = o_salv
                          CHANGING
                            t_table      = it_agr_users ).

  o_salv->display( ).

[ABAP] Verwendung SAP-Memory

  • Der SAP-Memory arbeitet im Gegensatz zum ABAP-Memory Session-(Modus-)übergreifend.
  • Es können also Daten zw. zwei Programmen ausgetauscht werden.
  • Speicherung ist nutzerspezifisch
  • Speicherung erfolgt solange der Nutzer angemeldet ist

Report 1 (Sender)

* Variablenname im SAP-Memory
CONSTANTS: co_mem TYPE usr05-parid VALUE 'MEM1'.

* Wert zum Abspeichern
PARAMETERS: p_parval TYPE usr05-parva DEFAULT 'Test1'.
* Schalter speichern / löschen
PARAMETERS: p_delete TYPE abap_bool DEFAULT abap_false.

START-OF-SELECTION.

  IF p_delete = abap_false.
* Wert im SAP-Memory setzen
    SET PARAMETER ID co_mem FIELD p_parval.
    WRITE: / 'Wert gesetzt.'.
  ELSE.
* Wert in SAP-Memory schreiben
    SET PARAMETER ID co_mem FIELD space.
    WRITE: / 'Wert gelöscht.'.
  ENDIF.

Report 2 (Empfänger)

* Variablenname im SAP-Memory
CONSTANTS: co_mem TYPE usr05-parid VALUE 'MEM1'.

DATA: lv_parval TYPE usr05-parva.

* Wert aus SAP-Memory lesen
GET PARAMETER ID co_mem FIELD lv_parval.
IF sy-subrc = 0.
  WRITE: / lv_parval.
ELSE.
  WRITE: / co_mem, 'nicht vorhanden.'.
ENDIF.

Links

[ABAP] Transaktion mit Parametern vorbelegen und aufrufen

Variante 1 (Batch-Input-Daten)

DATA: it_batchdata TYPE STANDARD TABLE OF bdcdata.
DATA: it_msg TYPE STANDARD TABLE OF bdcmsgcoll.
  
* Batch-Input-Daten, mit Transaktion SHDB aufgezeichnet
it_batchdata = VALUE #( ( program = 'SAPLSD_ENTRY' dynpro = '1000' dynbegin = 'X' fnam = '' fval = '' )
                        ( program = '' dynpro = '' dynbegin = '' fnam = 'BDC_CURSOR' fval = 'RSRD1-VIMA_VAL' )
                        ( program = '' dynpro = '' dynbegin = '' fnam = 'BDC_OKCODE' fval = '=WB_DISPLAY' )
                        ( program = '' dynpro = '' dynbegin = '' fnam = 'RSRD1-VIMA' fval = 'X' )
                        ( program = '' dynpro = '' dynbegin = '' fnam = 'RSRD1-VIMA_VAL' fval = 'MARA' ) ). 

* SE11 aufrufen, kein AUTHORITY-CHECK
CALL TRANSACTION 'SE11' WITHOUT AUTHORITY-CHECK
  USING it_batchdata
  MODE 'E'
  UPDATE 'A'
  MESSAGES INTO it_msg.

IF sy-subrc NE 0.
  MESSAGE 'Fehler beim Aufruf des SE11' TYPE 'S' DISPLAY LIKE 'E'.
ENDIF.

Variante 2 (SET PARAMETER – SE11)

* Parameter "Datenbakname" mit Wert 'MARA' vorbelegen
SET PARAMETER ID 'DTB' FIELD 'MARA'.
* SE11 ohne Prüfung aufrufen
CALL TRANSACTION 'SE11' WITHOUT AUTHORITY-CHECK.

IF sy-subrc NE 0.
  MESSAGE 'Fehler beim Aufruf des SE11' TYPE 'S' DISPLAY LIKE 'E'.
ENDIF.

Variante 3 (SET PARAMETER – MM03)

PARAMETERS: p_matnr TYPE matnr.

* MATNR setzen
SET PARAMETER ID 'MAT' FIELD p_matnr.
* Grunddaten anzeigen
SET PARAMETER ID 'MXX' FIELD 'K'.
* Transaktion MM03 aufrufen (Material anzeigen)
CALL TRANSACTION 'MM03' AND SKIP FIRST SCREEN.

Variante 4 (SET PARAMETER – ME23N)

* Belegnummer (Bestellung)
PARAMETERS: p_ebeln TYPE ekko-ebeln.

* Belegnummer setzen
SET PARAMETER ID 'BES' FIELD p_ebeln.
* Transaktion ME23N aufrufen (Bestellung anzeigen)
CALL TRANSACTION 'ME23N' AND SKIP FIRST SCREEN.

Links

[ABAP] Wichtige Systemvariablen mit der ABAP Systemklasse auslesen

* Alias User
WRITE: / cl_abap_syst=>get_alias_user( ).
* Mandant
WRITE: / cl_abap_syst=>get_client( ).
* Programmname
WRITE: / cl_abap_syst=>get_current_program( ).
* Applikationsserver
WRITE: / cl_abap_syst=>get_host_name( ).
* Instanz
WRITE: / cl_abap_syst=>get_instance_name( ).
* akt. Sprachenschlüssel
WRITE: / cl_abap_syst=>get_language( ).
* Anmeldesprache
WRITE: / cl_abap_syst=>get_logon_language( ).
* Session Anmeldestatus
CASE cl_abap_syst=>get_session_authentication( ).
  WHEN cl_abap_syst=>session_authenticated_user.
    WRITE: / 'Session läuft unter Benutzerkennung (nach Anmeldung).'.
  WHEN cl_abap_syst=>session_configured_identity.
    WRITE: / 'Session läuft unter (technischer) Servicebenutzer-Kennung.'.
  WHEN cl_abap_syst=>session_system_account.
    WRITE: / 'Session läuft unter Systemkennung (keine Anmeldung erfolgt).'.
  WHEN OTHERS.
    WRITE: / 'Session läuft unter unbekanntem Kontext.'.
ENDCASE.
* Transaktionscode
WRITE: / cl_abap_syst=>get_transaction_code( ).
* User
WRITE: / cl_abap_syst=>get_user_name( ).