[ABAP] Buttons aus der Drucktastenleiste des akt. GUI Status einblenden / ausblenden

Manchmal ist es notwendig Buttons der Drucktastenleiste ein- oder auszublenden.

  • Standard-GUI-Status für Screen 1000: ‘%_00’ (RSSYSTDB)
  • weitere Button-Bezeichner sind zur Programmlaufzeit im Menü unter System -> Status… -> Doppelklick auf “Oberflächenstatus” erreichbar

Beispiel 1 (ausblenden)

* Drucktastenleiste: Button "Ausführen (F8)" entfernen
DATA: it_exclude_btn TYPE STANDARD TABLE OF rsexfcode WITH DEFAULT KEY.
it_exclude_btn = VALUE #( ( fcode = 'ONLI' ) ).

CALL FUNCTION 'RS_SET_SELSCREEN_STATUS'
  EXPORTING
    p_status  = '%_00' " akt. Standard-GUI-Status für Screen 1000, ggf. auch sy-pfkey nutzen
  TABLES
    p_exclude = it_exclude_btn.

Beispiel 2 (einblenden)

DATA: it_exclude_btn TYPE STANDARD TABLE OF rsexfcode WITH DEFAULT KEY.
* alle auszublendenden Buttons entfernen
CLEAR: it_exclude_btn.

CALL FUNCTION 'RS_SET_SELSCREEN_STATUS'
  EXPORTING
    p_status  = '%_00' " akt. Standard-GUI-Status für Screen 1000, ggf. auch sy-pfkey nutzen
  TABLES
    p_exclude = it_exclude_btn.

Links

[ABAP] Berechtigungsprüfung im Code

Variante 1 (FuBa AUTHORITY_CHECK_TCODE)

* Berechtigung für Ausführung der Transaktion SOST prüfen
CALL FUNCTION 'AUTHORITY_CHECK_TCODE'
  EXPORTING
    tcode  = 'SOST'
  EXCEPTIONS
    ok     = 1
    not_ok = 2
    OTHERS = 3.

CASE sy-subrc.
  WHEN 1.
    WRITE: / 'Ja'.
  WHEN 2.
    WRITE: / 'Nein'.
  WHEN OTHERS.
    WRITE: / 'Unbekannt'.
ENDCASE.

Variante 2 (AUTHORITY-CHECK OBJECT)

* Berechtigung für Ausführung der Transaktion SOST prüfen
AUTHORITY-CHECK OBJECT 'S_TCODE' ID 'TCD' FIELD 'SOST'.
IF sy-subrc = 0.
  WRITE: / 'Ja'.
ELSE.
  WRITE: / 'Nein'.
ENDIF.

Variante 3 (FuBa AUTHORITY_CHECK_DATASET)

* Dateizugriffsberechtigungen auf dem Applikationsserver prüfen
DATA: lv_filename TYPE authb-filename VALUE '/tmp/readme.txt'.

...

* activity
*   SABC_ACT_READ              -> 'READ'
*   SABC_ACT_WRITE             -> 'WRITE'
*   SABC_ACT_READ_WITH_FILTER  -> 'READ_WITH_FILTER'
*   SABC_ACT_WRITE_WITH_FILTER -> 'WRITE_WITH_FILTER'
*   SABC_ACT_DELETE            -> 'DELETE'
CALL FUNCTION 'AUTHORITY_CHECK_DATASET'
  EXPORTING
    activity         = sabc_act_read
    filename         = lv_filename
  EXCEPTIONS
    no_authority     = 1
    activity_unknown = 2
    OTHERS           = 3.

CASE sy-subrc.
  WHEN 0.
    WRITE: / 'Ok'.
  WHEN 1.
    WRITE: / 'no_authority'.
  WHEN 2.
    WRITE: / 'activity_unknown'.
  WHEN OTHERS.
    WRITE: / 'others'.
ENDCASE.

Weiterführende Infos: Link und Link

[ABAP] Daten zu einem Material (MATNR) ermitteln

DATA: lv_material_general_data TYPE bapimatdoa.
DATA: lv_return	TYPE bapireturn.
DATA: lv_materialplantdata TYPE bapimatdoc.
DATA: lv_materialvaluationdata TYPE bapimatdobew.

* Materialdaten holen
CALL FUNCTION 'BAPI_MATERIAL_GET_DETAIL'
  EXPORTING
    material              = '000000001234567890'   " MATNR
    valuationarea         = '01'                   " Werk
  IMPORTING
    material_general_data = lv_material_general_data
    return                = lv_return
    materialplantdata     = lv_materialplantdata
    materialvaluationdata = lv_materialvaluationdata.

* Fehlermessage
WRITE: / lv_return-type, lv_return-code, lv_return-message.

* Kurzbezeichnung
WRITE: / lv_material_general_data-matl_desc.

* Preis
WRITE: / SWITCH string( lv_materialvaluationdata-price_ctrl
                        WHEN 'S' THEN lv_materialvaluationdata-std_price
                        ELSE lv_materialvaluationdata-moving_pr ), lv_materialvaluationdata-currency.

[ABAP] Expliziter Aufruf einer vorhandenen Suchhilfe

* generischer Parameter für den manuell eine Suchhilfe 'AUFK' angezeigt werden soll
PARAMETERS: p_test TYPE char32.
  
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_test.
  TRY.
      DATA: lv_shlp TYPE shlp_descr.

* shlptype:
* SH	Suchhilfe
* CH	Prüftabelle
* CT	Prüftabelle mit Texttabelle
* FV	Domänenfestwerte
* DV	Festwerte aus Ablauflogik
* CA	Kalender-Hilfe
* CL	Uhrzeit-Hilfe
* SR	Suchhilfe am Datenelement (temporär)
* MC	Matchcode
* MI	Matchcode-Id
* IN	interne Tabelle
      CALL FUNCTION 'F4IF_GET_SHLP_DESCR'
        EXPORTING
          shlpname = 'AUFK'
          shlptype = 'CH'
        IMPORTING
          shlp     = lv_shlp.

* Suchhilfefeld festlegen
* wenn mehrere Felder benötigt werden -> für jedes Feld extra
      ASSIGN lv_shlp-interface[ shlpfield = 'AUFNR' ] TO FIELD-SYMBOL(<fs_shf>).
      <fs_shf>-valfield = abap_true.
      <fs_shf>-value = '*'. " Vorgabewert / Einschränkung für die Suchhilfe

      DATA: f_rc TYPE sy-subrc.
      DATA: it_values TYPE STANDARD TABLE OF ddshretval.

      CALL FUNCTION 'F4IF_START_VALUE_REQUEST'
        EXPORTING
          shlp          = lv_shlp
          disponly      = abap_false
          maxrecords    = 0           " alle Ergebnisse auflisten
          multisel      = abap_false  " Einfachauswahl
        IMPORTING
          rc            = f_rc
        TABLES
          return_values = it_values.  " Rückgabewerte

      IF f_rc = 0.
* Rückgabewert an Parameter übergeben
        p_test = it_values[ fieldname = 'AUFNR' ]-fieldval.
      ENDIF.
    CATCH cx_root INTO DATA(e_txt).
      MESSAGE e_txt->get_text( ) TYPE 'S' DISPLAY LIKE 'E'.
  ENDTRY.

Weiterführende Infos: Link und Link

[ABAP] Infos zu einem Transportauftrag lesen

DATA: lv_cofile TYPE ctslg_cofile.
DATA: lv_user TYPE e070-as4user.
DATA: lv_project TYPE trkorr.

CALL FUNCTION 'TR_READ_GLOBAL_INFO_OF_REQUEST'
  EXPORTING
    iv_trkorr  = 'R3PK9004711' " Nr. Transportauftrag
  IMPORTING
    es_cofile  = lv_cofile
    ev_user    = lv_user
    ev_project = lv_project.

LOOP AT lv_cofile-systems ASSIGNING FIELD-SYMBOL(<fs_sys>).
  WRITE: / <fs_sys>-systemid, <fs_sys>-rc.
  LOOP AT <fs_sys>-steps ASSIGNING FIELD-SYMBOL(<fs_step>).
    WRITE: / '  ', <fs_step>-stepid, <fs_step>-clientid, <fs_step>-rc.
      LOOP AT <fs_step>-actions ASSIGNING FIELD-SYMBOL(<fs_action>).
        WRITE: / '    ', <fs_action>-date, <fs_action>-time, <fs_action>-rc.
      ENDLOOP.
  ENDLOOP.
ENDLOOP.

WRITE: / lv_cofile-exists, lv_cofile-imported, lv_cofile-del_lines_only, lv_cofile-rc.
WRITE: / lv_user.
WRITE: / lv_project.

[ABAP] 3D-Diagramm anzeigen

TYPES: BEGIN OF ty_graphdata,
         text TYPE char15,
         val1 TYPE f,
         val2 TYPE f,
         val3 TYPE f,
         val4 TYPE f,
       END OF ty_graphdata.

TYPES: BEGIN OF ty_options,
         option TYPE char20,
       END OF ty_options.

DATA: it_main TYPE STANDARD TABLE OF ty_graphdata WITH DEFAULT KEY.
DATA: it_options TYPE STANDARD TABLE OF ty_options WITH DEFAULT KEY.

APPEND VALUE #( text = 'Country1' val1 = '52.0' val2 = '66.0' val3 = '0.9' val4 = '93.0' ) TO it_main.
APPEND VALUE #( text = 'Country2' val1 = '18.0' val2 = '22.0' val3 = '19.0' val4 = '92.0' ) TO it_main.
APPEND VALUE #( text = 'Country3' val1 = '50.0' val2 = '65.0' val3 = '59.0' val4 = '99.0' ) TO it_main.

APPEND VALUE #( option = 'P3TYPE = LI' ) TO it_options.

CALL FUNCTION 'GRAPH_MATRIX_3D'
  EXPORTING
    col1   = '2013'
    col2   = '2014'
    col3   = '2015'
    col4   = '2016'
    titl   = '3D-Werteanzeige'
  TABLES
    data   = it_main
    opts   = it_options.