[ABAP] SAPscript: Texte editieren

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

START-OF-SELECTION.

  DATA(lv_header) = VALUE thead( tdobject   = p_tdobj
                                 tdname     = p_tdname
                                 tdid       = p_tdid
                                 tdlinesize = '132'
                                 tdspras    = sy-langu ).

* ' ' keine Aktion
* 'I' Insert: Textbaustein wurde neu angelegt
* 'U' Update: Textbaustein wurde verändert
* 'D' Delete: Textbaustein wurde gelöscht
  DATA: lv_function TYPE char1.
* FUNCTION
*  ' ' keine Aktion
*  'I' Insert: Textbaustein wurde neu angelegt
*  'U' Update: Textbaustein wurde verändert
*  'D' Delete: Textbaustein wurde gelöscht
* USEREXIT
*  'E' Exit: "Text Beenden"
*  'B' Back: "Springen Zurück"
*  'C' Cancel: "Bearbeiten Abbrechen"
*  'P' Previous: "Voriger Text" (Nur in Oberfläche TA)
*  'N' Next: "Nächster Text" (Nur in Oberfläche TA)
*PCEDITOR
  DATA: lv_result TYPE itcer.

  DATA: it_lines TYPE tline_t.

* Texterstellung Text bearbeiten in Texteditor
  CALL FUNCTION 'EDIT_TEXT'
    EXPORTING
      header        = lv_header
      save          = abap_false " Button "Speichern" im Editor ausblenden
      line_editor   = abap_false " abap_true -> SAP-Script, sonst Inline-Word-Editor (PC-Editor)
    IMPORTING
      function      = lv_function
      result        = lv_result
    TABLES
      lines         = it_lines
    EXCEPTIONS
      id            = 1
      language      = 2
      linesize      = 3
      name          = 4
      object        = 5
      textformat    = 6
      communication = 7
      OTHERS        = 8.
  IF sy-subrc = 0.
    cl_demo_output=>write_data( lv_header ).
    cl_demo_output=>write_data( lv_function ).
    cl_demo_output=>write_data( lv_result ).
    cl_demo_output=>write_data( it_lines ).

* Daten im Inline-Browser im SAP-Fenster anzeigen
    cl_abap_browser=>show_html( EXPORTING title       = 'EDIT_TEXT'
                                          html_string = cl_demo_output=>get( )
                                          container   = cl_gui_container=>default_screen ).

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

[ABAP] DMS: Dokumenteninfosatz zu Bestellung anlegen

* Bestellung: EBELN + EBELP
DATA: lv_objkey TYPE drad-objky VALUE '200000000000010'.

DATA: lv_return_code TYPE char255.
DATA: lv_vb_flag TYPE mcdok-cvhier.
DATA: it_tabdrad TYPE STANDARD TABLE OF drad WITH DEFAULT KEY.

* Allocate documents to object from application
CALL FUNCTION 'DOCUMENT_ASSIGNMENT'
  EXPORTING
    dokob          = 'EKPO'
    objky          = lv_objkey
    include_dynpro = '1337'
    opcode         = '2'       " 1=Anlegen 2=Ändern 3=Anzeigen
    program_name   = ' '       " SAPLMEGUI
  IMPORTING
    return_code    = lv_return_code
    vb_flag        = lv_vb_flag
  TABLES
    tabdrad        = it_tabdrad.

cl_demo_output=>write_data( lv_return_code ).
cl_demo_output=>write_data( lv_vb_flag ).
cl_demo_output=>write_data( it_tabdrad ).

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

[ABAP] PSP-Elemente suchen und anzeigen

* PRPS-POSID (Projektstrukturplanelement (PSP-Element))
PARAMETERS: p_wbs TYPE prps-posid MATCHCODE OBJECT h_wbselem DEFAULT ''.

START-OF-SELECTION.

* WBS Element Details
  SELECT FROM i_wbselement
    FIELDS *
    WHERE wbselement = @p_wbs
    INTO TABLE @DATA(it_psp).

  IF sy-subrc = 0.
* Daten im Inline-Browser im SAP-Fenster anzeigen
    cl_abap_browser=>show_html( EXPORTING title       = 'PSP'
                                          html_string = cl_demo_output=>get( it_psp )
                                          container   = cl_gui_container=>default_screen ).

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

[ABAP] Lesen des Inhalts von CDS-Entitäten

TRY.
* Beispiel: View-Entität 'C_PURCHASEORDERITEMACCTMNTR' lesen
    DATA(o_v) = xco_cds=>view_entity( 'C_PURCHASEORDERITEMACCTMNTR' ).
    IF o_v->exists( ).
      DATA(o_cont) = o_v->content( )->get( ).
      DATA(o_fields) = o_v->fields->all->get( ).

* Daten im Inline-Browser im SAP-Fenster anzeigen
      cl_abap_browser=>show_html( EXPORTING
                                    title        = 'CDS-Info'
                                    html_string  = cl_demo_output=>new( )->write_data( o_cont )->write_data( o_fields )->get( )
                                    container    = cl_gui_container=>default_screen ).

* cl_gui_container=>default_screen erzwingen
      WRITE: space.
    ENDIF.
  CATCH cx_root INTO DATA(e_text).
    MESSAGE e_text->get_text( ) TYPE 'S' DISPLAY LIKE 'E'.
ENDTRY.

Links

[ABAP] SPRO-Customizing – Anzeigen und Ändern eines Projektplans

* Siehe Tabelle TPROJECT (SPROJECT: Projekttabelle)
PARAMETERS: prj_id LIKE tproject-project_id DEFAULT 'CUST_AUTH'.

START-OF-SELECTION.

  DATA(lv_msg) = VALUE spro_message( ).

* Anzeigen und Ändern eines Projektplans
  CALL FUNCTION 'SPROJECT_STRUCTURE_EDIT'
    EXPORTING
      project_id = prj_id
      activity   = 'M' " D = Anzeigen, M = Inhalte ändern , E = Struktur ändern, C = Anlegen
    IMPORTING
      message    = lv_msg.

* Daten im Inline-Browser im SAP-Fenster anzeigen
  cl_abap_browser=>show_html( EXPORTING
                                title        = 'Message'
                                html_string  = cl_demo_output=>new( )->write_data( lv_msg )->get( )
                                container    = cl_gui_container=>default_screen ).

* cl_gui_container=>default_screen erzwingen
  WRITE: space.

Links

[ABAP] SALV: Events abfangen beim Klick auf die ALV Funktions-Buttons am Beispiel des Setzens von Filtern

CLASS lcl_salv DEFINITION.
  PUBLIC SECTION.
    CLASS-METHODS: on_before_function FOR EVENT before_salv_function OF cl_salv_events_table
      IMPORTING e_salv_function
                sender.

    CLASS-METHODS: on_after_function FOR EVENT after_salv_function OF cl_salv_events_table
      IMPORTING e_salv_function
                sender.
ENDCLASS.

CLASS lcl_salv IMPLEMENTATION.
* Event vor ALV-Button Klick
  METHOD on_before_function.
* Werte für e_salv_function sind in cl_salv_gui_ui_function_tools=>cs_list_ui_function deklariert
    CASE e_salv_function.
* '&ETA'
      WHEN cl_salv_gui_ui_function_tools=>cs_list_ui_function-detail.
        MESSAGE |Details { e_salv_function }| TYPE 'S'.
* '&ILT'
      WHEN cl_salv_gui_ui_function_tools=>cs_list_ui_function-filter.
        MESSAGE |Filter { e_salv_function }| TYPE 'S'.
* '%PC'
      WHEN cl_salv_gui_ui_function_tools=>cs_list_ui_function-system_localfile.
        MESSAGE |Export { e_salv_function }| TYPE 'S'.
      WHEN OTHERS.
        MESSAGE |Before Other { e_salv_function }| TYPE 'S'.
    ENDCASE.
  ENDMETHOD.

* Event nach ALV-Button Klick
  METHOD on_after_function.
* Werte für e_salv_function sind in cl_salv_gui_ui_function_tools=>cs_list_ui_function deklariert
    CASE e_salv_function.
* '&ETA'
      WHEN cl_salv_gui_ui_function_tools=>cs_list_ui_function-detail.
        MESSAGE |Details { e_salv_function }| TYPE 'S'.
* '&ILT'
      WHEN cl_salv_gui_ui_function_tools=>cs_list_ui_function-filter.
        MESSAGE |Filter { e_salv_function }| TYPE 'S'.
* '%PC'
      WHEN cl_salv_gui_ui_function_tools=>cs_list_ui_function-system_localfile.
        MESSAGE |Export { e_salv_function }| TYPE 'S'.
      WHEN OTHERS.
        MESSAGE |After Other { e_salv_function }| TYPE 'S'.
    ENDCASE.
  ENDMETHOD.
ENDCLASS.

START-OF-SELECTION.

  SELECT FROM mara
    FIELDS *
    INTO TABLE @DATA(it_mara)
    UP TO 10 ROWS.

    try.
* SALV-Table
  DATA: o_salv TYPE REF TO cl_salv_table.

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

* Grundeinstellungen
  o_salv->get_functions( )->set_all( abap_true ).
  o_salv->get_columns( )->set_optimize( abap_true ).
  o_salv->get_display_settings( )->set_list_header( 'Überschrift' ).
  o_salv->get_display_settings( )->set_striped_pattern( abap_true ).
  o_salv->get_selections( )->set_selection_mode( if_salv_c_selection_mode=>row_column ).

* Spaltenüberschriften: technischer Name und Beschreibungstexte, Short Text und Medium Text leer lassen für Autosize
  LOOP AT o_salv->get_columns( )->get( ) ASSIGNING FIELD-SYMBOL(<c>).
    DATA(o_col) = <c>-r_column.
    o_col->set_short_text( || ).
    o_col->set_medium_text( || ).
    o_col->set_long_text( |{ o_col->get_columnname( ) } [{ o_col->get_long_text( ) }]| ).
  ENDLOOP.

* Event-Handler für Klick auf die ALV-Funktionsbuttons (Sort, Filter, Export...)
  SET HANDLER lcl_salv=>on_before_function FOR o_salv->get_event( ).
  SET HANDLER lcl_salv=>on_after_function FOR o_salv->get_event( ).

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

[ABAP] Leistungsverzeichnis mit Gliederung zu einem Einkaufsbeleg lesen

PARAMETERS: p_ebeln TYPE ekpo-ebeln.

START-OF-SELECTION.

  SELECT SINGLE FROM ekpo
    FIELDS
      menge,
      meins,
      bprme,
      netpr,
      peinh,
      txz01,
      packno
    WHERE ebeln EQ @p_ebeln
      AND ebelp EQ '00001'
    INTO @DATA(lv_ekpo).

  IF sy-subrc EQ 0.
    DATA: it_gliederung TYPE STANDARD TABLE OF ml_esll WITH DEFAULT KEY.

* Holen Gliederungsdaten für Listausgabe
    CALL FUNCTION 'MS_SUBDIVISION_FOR_PRINT'
      EXPORTING
        packno           = lv_ekpo-packno
      TABLES
        gliederung       = it_gliederung
      EXCEPTIONS
        packno_not_exist = 1
        OTHERS           = 2.

    IF sy-subrc = 0.

      DATA: it_leistung TYPE STANDARD TABLE OF ml_esll WITH DEFAULT KEY.

      LOOP AT it_gliederung ASSIGNING FIELD-SYMBOL(<g>).

        DATA(pos) = ( <g>-rang * 2 ).

        IF <g>-rang = 0.
          WRITE: AT /pos '#', lv_ekpo-txz01, lv_ekpo-menge, lv_ekpo-meins, lv_ekpo-netpr.
        ELSE.
          WRITE: AT /pos '#', <g>-ktext1.
        ENDIF.

        CLEAR: it_leistung.

* Holen Leistungen für Listanzeige
        CALL FUNCTION 'MS_SERVICES_FOR_PRINT'
          EXPORTING
            packno            = <g>-sub_packno
          TABLES
            leistung          = it_leistung
          EXCEPTIONS
            no_services_found = 1
            OTHERS            = 2.

        IF sy-subrc = 0.
          LOOP AT it_leistung ASSIGNING FIELD-SYMBOL(<l>).
            WRITE: AT /10 <l>-extrow, '|', <l>-srvpos, '|', <l>-menge, <l>-meins, <l>-brtwr, <l>-waers, <l>-ktext1, '|', <l>-ebeln, <l>-ebelp.
          ENDLOOP.
        ENDIF.

        WRITE: /.

      ENDLOOP.

    ENDIF.
  ENDIF.

[ABAP] SPRO-Customizing Strukturen anzeigen

* TTREE-IDs stehen in Tabelle TTREE (Definitionstabelle für Strukturen) + TTREET (Bezeichung einer Struktur)
* Hier als Beispiel vorbelegt mit 5BB3C2F5329FD21195360060B03C6B76 für Knoten 'Logistik Allgemein'
DATA: lv_img_id type ttree-id VALUE '5BB3C2F5329FD21195360060B03C6B76'.

* Lesen der ID für den Referenz-IMG
* SPRO-ID aus der Tabelle SCUS_HIER (Ersetzungstabelle für Hierarchien)
CALL FUNCTION 'S_CUS_IMG_GET_REFERENCE_IMG_ID'
  IMPORTING
    reference_img_id = lv_img_id.

* Anzeigeattribute der Hierarchiepflege
DATA(it_user_parameters) = VALUE streeprop_t( ( name = 'APPLICATION'     value = 'CU' )
                                              ( name = 'CONTROL_ENABLED' value = abap_true )
                                              ( name = 'DYNPRO_TITLE'    value = 'Überschrift' ) ).

* Anzeige einer Struktur
CALL FUNCTION 'STREE_EXTERNAL_DISPLAY'
  EXPORTING
    structure_id    = lv_img_id
  TABLES
    user_parameters = it_user_parameters.

Links

[ABAP] Sichten zu einem Material anzeigen

PARAMETERS: p_mat TYPE mara-matnr.

START-OF-SELECTION.

* Status definieren
  SELECT FROM t132 AS t
    LEFT OUTER JOIN t132t AS tt ON t~statm = tt~statm
    FIELDS
      t~statm,
      t~kzdum,
      tt~sttxt
    WHERE tt~spras = @sy-langu
    INTO TABLE @DATA(it_t132).

* Werksdaten zum Material
  SELECT FROM marc
    FIELDS
      matnr,
      werks,
      pstat
    WHERE matnr EQ @p_mat
    ORDER BY werks
    INTO TABLE @DATA(it_marc).

* Materialstammstatus
  SELECT FROM msta
    FIELDS *
    WHERE matnr EQ @p_mat
    ORDER BY werks
    INTO TABLE @DATA(it_msta).

* Daten im Inline-Browser im SAP-Fenster anzeigen
  cl_abap_browser=>show_html( EXPORTING
                                title        = 'Sichten zum Material'
                                html_string  = cl_demo_output=>new( )->write_data( it_t132 )->write_data( it_marc )->write_data( it_msta )->get( )
                                container    = cl_gui_container=>default_screen ).

* cl_gui_container=>default_screen erzwingen
  WRITE: space.