[ABAP] Statuswerte zu einem IH-Auftrag lesen

* IH-Auftrag
PARAMETERS: p_aufnr TYPE aufk-aufnr.

START-OF-SELECTION.

  SELECT FROM aufk AS a
    INNER JOIN jest AS j ON a~objnr = j~objnr
    INNER JOIN jsto AS o ON j~objnr = o~objnr
    INNER JOIN tj02 AS t2 ON j~stat = t2~istat
    INNER JOIN tj02t AS t ON j~stat = t~istat
*    LEFT OUTER JOIN tj04 AS t4 ON o~obtyp = t4~obtyp AND j~stat = t4~istat
    FIELDS
      a~aufnr,
      a~auart,
      j~objnr,
      o~obtyp,
      o~stsma,
      t~txt04,
      t~txt30
    WHERE a~aufnr = @p_aufnr
      AND j~inact = @abap_false
      AND t~spras = @sy-langu
      AND t2~nodis = @abap_false " keine internen Statuswerte
    INTO TABLE @DATA(it_data).

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

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

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

[ABAP] Gantt-Chart anzeigen

DATA(lv_title) = CONV text70( 'GANTT Demo' ).
DATA(lv_subtitle) = CONV text70( 'Subtitle' ).
DATA(lv_cattitle) = CONV text70( 'Cattitle' ).
DATA(lv_custob) = CONV w3objid( '/ISDFPS/GC200' ). "/ISDFPS/GC250, /ISDFPS/GC300

DATA(it_gantt_serie_data) = VALUE /isdfps/gantt_serie_tab( ( serie = 'SERIES1' serie_label = 'Person 1' )
                                                           ( serie = 'SERIES2' serie_label = 'Person 2' ) ).

DATA(it_gantt_value_data) = VALUE /isdfps/gantt_value_tab( ( bartext = 'Host Müller' category = '1' sub_category = '1' serie = 'SERIES1' begda = '20250101' begti = '080000' endda = '20250102' endti = '100000' objkey = '1' )
                                                           ( bartext = 'Ina Meier'   category = '2' sub_category = '2' serie = 'SERIES2' begda = '20250101' begti = '100000' endda = '20250103' endti = '110000' objkey = '2' ) ).

* Gantt Chart Anzeige
CALL FUNCTION '/ISDFPS/GANTT_CHART_DISPLAY'
  EXPORTING
    title               = lv_title
    subtitle            = lv_subtitle
    category_title      = lv_cattitle
    gantt_serie_data    = it_gantt_serie_data
    gantt_value_data    = it_gantt_value_data
    customizing_object  = lv_custob
*    begda               = '20250101'
*    endda               = '20250103'
*    3dview              = abap_true
  EXCEPTIONS
    no_serie_data       = 1
    no_value_data       = 2
    no_customizing_data = 3
    OTHERS              = 4.

IF sy-subrc <> 0.

ENDIF.

[ABAP] SAPscript-Texte: Clusterdaten ohne READ_TEXT direkt aus Tabelle STXL lesen

TYPES: BEGIN OF ty_s_stxl_raw,
         clustr TYPE stxl-clustr,
         clustd TYPE stxl-clustd,
       END OF ty_s_stxl_raw.

TYPES: ty_t_stxl_raw TYPE STANDARD TABLE OF ty_s_stxl_raw.

PARAMETERS: p_tdobj TYPE ttxob-tdobject DEFAULT 'TEXT'.
PARAMETERS: p_tdname TYPE stxh-tdname MATCHCODE OBJECT icl_stxh DEFAULT 'ADDRESS'.
PARAMETERS: p_tdid TYPE ttxid-tdid DEFAULT 'ST'.

START-OF-SELECTION.

* STXD SAPscript Text-Datei Header
  SELECT FROM stxh
    FIELDS
      tdname,
      tdobject,
      tdid
    WHERE tdobject = @p_tdobj
      AND tdname   = @p_tdname
      AND tdid     = @p_tdid
      AND tdspras  = @sy-langu
    INTO TABLE @DATA(it_stxh).

  IF sy-subrc = 0.

* STXD SAPscript Text-Datei Lines
    SELECT FROM stxl
      FIELDS
        tdname,
        clustr,
        clustd
      FOR ALL ENTRIES IN @it_stxh
      WHERE relid    = 'TX'
        AND tdobject = @it_stxh-tdobject
        AND tdname   = @it_stxh-tdname
        AND tdid     = @it_stxh-tdid
        AND tdspras  = @sy-langu
      INTO TABLE @DATA(it_stxl)
      PACKAGE SIZE 3000. " Datenmenge bei SELECT begrenzen, um Laufzeitfehler zu vermeiden

      DATA: it_stxl_raw TYPE ty_t_stxl_raw.
      CLEAR: it_stxl_raw.

      LOOP AT it_stxl ASSIGNING FIELD-SYMBOL(<stxl>).

        APPEND VALUE ty_s_stxl_raw( clustr = <stxl>-clustr
                                    clustd = <stxl>-clustd ) TO it_stxl_raw.

        DATA(it_lines) = VALUE tline_t( ).

* Zeilen aus Datencluster lesen
        IMPORT tline = it_lines FROM INTERNAL TABLE it_stxl_raw.

        LOOP AT it_lines ASSIGNING FIELD-SYMBOL(<l>).
          WRITE: / <stxl>-tdname, <l>-tdformat, <l>-tdline.
        ENDLOOP.

      ENDLOOP.

    ENDSELECT.

  ENDIF.

Links

[CDS-Views] SAPScript-Texte mit Hilfe von virtuellen Elementen lesen

In den Beiträgen wird beschrieben, wie man den Funktionsbaustein „READ_TEXT“ über sog. virtuelle Elemente in einem CDS-View anspricht:

https://community.sap.com/t5/technology-blog-posts-by-members/using-virtual-elements-with-cds-in-fiori-elements/ba-p/13451568

https://community.sap.com/t5/technology-blog-posts-by-members/read-material-basic-data-text-long-text-without-using-function-module-read/ba-p/13480045

[ABAP] Model-Provider (MPC) und Data-Providerklassen (DPC) zu einem OData-Service ermitteln

* View:
* /iwbep/v_mgw_omg (Übersicht über Objektmodellgruppe)
*
* Tabellen:
* /iwbep/i_mgw_srh (Service (Group) Header)
* /iwbep/i_mgw_srg (Model Grouping)
* /iwbep/i_mgw_srt (Group Description)
* /iwbep/i_mgw_ohd (Model)
* /iwbep/i_mgw_oht (Model Description)

* Name des technischen Service
PARAMETERS: p_srv TYPE /iwbep/v_mgw_omg-group_tech_name.

START-OF-SELECTION.

* Übersicht über Objektmodellgruppe
  SELECT FROM /iwbep/v_mgw_omg
    FIELDS *
    WHERE group_tech_name EQ @p_srv
    INTO TABLE @DATA(it_srv_data).

  IF sy-subrc = 0.
* Daten (MPC, DPC) zum ODATA-Service ausgeben
    cl_demo_output=>write_data( it_srv_data ).

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

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

Links

[ABAP] BDS-Grafiken (Bitmaps) auslesen und anzeigen

* Docking-Container für Einbettung cl_gui_picture
DATA: o_dock TYPE REF TO cl_gui_docking_container.

* Bildname, siehe SE78
PARAMETERS: p_name TYPE tdobname DEFAULT 'IDES_LOGO'.

AT SELECTION-SCREEN OUTPUT.

  TRY.
      IF NOT o_dock IS BOUND.
* Dockingcontainer erzeugen
        o_dock = NEW #( repid = sy-repid
                        dynnr = sy-dynnr
                        side  = cl_gui_docking_container=>dock_at_right
                        ratio = 50 ).
      ENDIF.

* Get a BDS graphic in BMP format (using a cache)
      DATA(lv_xstr_bmp) = cl_ssf_xsf_utilities=>get_bds_graphic_as_bmp( p_object = 'GRAPHICS'
                                                                        p_name   = p_name
                                                                        p_id     = 'BMAP'
                                                                        p_btype  = 'BMON' ). " BMON - Rasterbild schwarz-weiß, BCOL - Rasterbild Farbe

      DATA(it_bin_bmp) = cl_bcs_convert=>xstring_to_solix( lv_xstr_bmp ).

      DATA: lv_url TYPE swk_url.

* temporäre URL auf das Bild erzeugen
      CALL FUNCTION 'DP_CREATE_URL'
        EXPORTING
          type                 = 'image/bmp' " https://wiki.selfhtml.org/wiki/MIME-Type/%C3%9Cbersicht
          subtype              = 'bmp'
        TABLES
          data                 = it_bin_bmp
        CHANGING
          url                  = lv_url
        EXCEPTIONS
          dp_invalid_parameter = 1
          dp_error_put_table   = 2
          dp_error_general     = 3
          OTHERS               = 4.

* Bild über die URL laden und anzeigen
      DATA(o_pic) = NEW cl_gui_picture( parent = o_dock ).
      o_pic->set_display_mode( display_mode = cl_gui_picture=>display_mode_fit_center ).
      o_pic->load_picture_from_url_async( lv_url ).

* Flush ist wichtig für die Abarbeitung des GUI-Queues, sonst gibt es einen Core-Dump -> "SYSTEM_POINTER_PENDING"
      cl_gui_cfw=>flush( ).

    CATCH cx_root INTO DATA(e_txt).
      WRITE: / e_txt->get_text( ).
  ENDTRY.

Links

[ABAP] Benutzerparameter lesen/setzen

* Benutzerparameter
DATA: lv_parid TYPE memoryid VALUE 'ME_USE_GRID'.
* Parameterwert
DATA: lv_parvalue TYPE xuvalue.

* Benutzerparameter lesen
CALL FUNCTION 'ACC_USER_PARAMETER_GET'
  EXPORTING
    i_param_id    = lv_parid
  IMPORTING
    e_param_value = lv_parvalue.

WRITE: / lv_parvalue.

* Benutzerparameter setzen
CALL FUNCTION 'ACC_USER_PARAMETER_SET'
  EXPORTING
    i_param_id          = lv_parid
    i_param_value       = lv_parvalue.

Links