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

[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] Geschäftspartner (Business Partner) in der Transaktion BP anzeigen

Variante 1: Anzeige über Partnernummer


PARAMETERS: p_bp TYPE bapibus1006_head-bpartner.

START-OF-SELECTION.

  IF NOT p_bp IS INITIAL.

* SAP-GP Dialog: Navigationscommando
    DATA(o_req) = NEW cl_bupa_navigation_request( ).
* Partnernummer setzen, analog zu set_partner_guid( )
    o_req->set_partner_number( p_bp ).
* Setzt die aktive Pflege (Einstieg, Partnerdaten, Beziegungen)
    o_req->set_maintenance_id( iv_value = cl_bupa_navigation_request=>gc_maintenance_id_partner ).
* Aktivität zur Anzeige / Pflege der Geschäftspartnerdaten
    o_req->set_bupa_activity( iv_value = cl_bupa_navigation_request=>gc_activity_display ).
* Setzt den aktiven Tabreiter der Geschäftspartnerpflege
*    o_req->set_bupa_sub_header_tab( 'CVIC01' ). " Tabelle TBZ3A, Objekt BUPA
* Setzt die Geschäftspartnerrolle für die Geschäftspartnerpflege
*    o_req->set_bupa_partner_role( VALUE #( role = 'FS0000' ) ). " Tabelle TB003

* SAP-GP Dialog: Startoptionen für die Pflegeoberfläche
    DATA(o_options) = NEW cl_bupa_dialog_joel_options( ).
* Setzt die Sichtbarkeit des Locators
    o_options->set_locator_visible( space ).

* Macht das Navigieren zu anderen Partnern unmöglich
*    o_options->set_navigation_disabled( abap_true ).
* Setzt das Kennzeichen für 'Anlegen von Beziehungen' erlaubt
*    o_options->set_bupr_create_not_allowed( abap_true ).
* Macht das Navigieren zu anderen Rollen unmöglich
*    o_options->set_role_switching_disabled( abap_true ).
* Maintenance
*    o_options->set_bupr_maintenance( VALUE #( create_allowed = abap_true
*                                              change_allowed = abap_true
*                                              delete_allowed = abap_true ) ).
* Macht das Navigieren zu einer anderen Aktivität unmöglich
*    o_options->set_activity_switching_off( space ).

* Startmethode für Aufrufe aus anderen Anwendungen
    cl_bupa_dialog_joel=>start_with_navigation( iv_request              = o_req
                                                iv_options              = o_options
                                                iv_in_new_internal_mode = abap_true ).
  ENDIF.

Variante 2: Anzeige über GUID des Business-Partners

PARAMETERS: p_bp TYPE bapibus1006_head-bpartner.

START-OF-SELECTION.

  IF NOT p_bp IS INITIAL.

* GP: Allgemeine Daten I
* BP-GUID zur Partnernummer holen
    SELECT SINGLE FROM but000
      FIELDS partner_guid
      WHERE partner = @p_bp
      INTO @DATA(lv_bp_guid).

    IF lv_bp_guid IS NOT INITIAL.
* SAP-GP Dialog: Navigationscommando
      DATA(o_req) = NEW cl_bupa_navigation_request( ).
      o_req->set_partner_guid( lv_bp_guid ).
      o_req->set_maintenance_id( iv_value = cl_bupa_navigation_request=>gc_maintenance_id_partner ).
      o_req->set_bupa_activity( iv_value = cl_bupa_navigation_request=>gc_activity_display ).

* SAP-GP Dialog: Startoptionen für die Pflegeoberfläche
      DATA(o_options) = NEW cl_bupa_dialog_joel_options( ).
      o_options->set_locator_visible( space ).

* Startmethode für Aufrufe aus anderen Anwendungen
      cl_bupa_dialog_joel=>start_with_navigation( iv_request              = o_req
                                                  iv_options              = o_options
                                                  iv_in_new_internal_mode = abap_true ).
    ENDIF.
  ENDIF.

Links

[ABAP] Informationen zu einer Einkäufergruppe als Popup anzeigen

PARAMETERS: p_ekgrp TYPE t024-ekgrp.

START-OF-SELECTION.

  SELECT FROM t024
    FIELDS *
    WHERE ekgrp EQ @p_ekgrp
    INTO TABLE @DATA(it_t024).

  IF sy-subrc = 0.

    TRY.
        DATA: o_pop_ekgrp TYPE REF TO cl_salv_table.

        cl_salv_table=>factory( IMPORTING r_salv_table = o_pop_ekgrp
                                CHANGING  t_table      = it_t024 ).

        o_pop_ekgrp->get_functions( )->set_all( abap_true ).
        o_pop_ekgrp->get_columns( )->set_optimize( abap_true ).
        o_pop_ekgrp->get_display_settings( )->set_list_header( 'Einkäufergruppe' ).
        o_pop_ekgrp->get_display_settings( )->set_striped_pattern( abap_true ).
        o_pop_ekgrp->get_selections( )->set_selection_mode( if_salv_c_selection_mode=>row_column ).

        o_pop_ekgrp->set_screen_popup( start_column = 1
                                       end_column   = 140
                                       start_line   = 1
                                       end_line     = 20 ).
        o_pop_ekgrp->display( ).
      CATCH cx_root INTO DATA(e_txt).
        WRITE: / e_txt->get_text( ).
    ENDTRY.

  ENDIF.

[ABAP] Adressdaten lesen

* Adressnummer mit führenden Nullen
PARAMETERS: p_adr TYPE adrc-addrnumber.

START-OF-SELECTION.

  DATA(lv_addr1_sel) = VALUE addr1_sel( addrnumber = p_adr ).
  DATA(lv_addr1_val) = VALUE addr1_val( ).

  CALL FUNCTION 'ADDR_GET'
    EXPORTING
      address_selection = lv_addr1_sel
    IMPORTING
      address_value     = lv_addr1_val
    EXCEPTIONS
      parameter_error   = 1
      address_not_exist = 2
      version_not_exist = 3
      internal_error    = 4
      OTHERS            = 5.

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

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

Links

[ABAP] Adressdaten anzeigen

* Adressnummer mit führenden Nullen
PARAMETERS: p_adr TYPE adrc-addrnumber.

START-OF-SELECTION.

  DATA: lv_okcode TYPE sy-ucomm.
  DATA: it_handle TYPE STANDARD TABLE OF addr1_dia WITH NON-UNIQUE DEFAULT KEY.
  DATA: it_values TYPE STANDARD TABLE OF addr1_data WITH DEFAULT KEY.

* Adressgruppe aus der ADRC holen
  SELECT SINGLE FROM adrc
    FIELDS addr_group
    WHERE addrnumber EQ @p_adr
    INTO @DATA(lv_adr_grp).

  it_handle = VALUE #( ( addrnumber = p_adr      " Adressnummer aus er ADRC
                         maint_mode = 'DISPLAY'  " Daten nur anzeigen, weitere Modi sind 'CREATE' und 'CHANGE'
                         country    = 'DE'       " Ausgabeformat
                         addr_group = lv_adr_grp " siehe Tabelle TSAD7 (Adreßgruppen (Business Address Services))
                       ) ).

* Dialogpflege von Adressen
  CALL FUNCTION 'ADDR_DIALOG'
    IMPORTING
      ok_code           = lv_okcode
    TABLES
      number_handle_tab = it_handle
      values            = it_values
    EXCEPTIONS
      address_not_exist = 1
      group_not_valid   = 2
      parameter_error   = 3
      internal_error    = 4
      OTHERS            = 5.

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

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

Links

[ABAP] User-Logondaten lesen

DATA: lv_uslogond TYPE uslogond.

* Benutzer: Lesen Logondaten aus Puffer
CALL FUNCTION 'SUSR_USER_LOGONDATA_GET'
  EXPORTING
    user_name           = sy-uname
  IMPORTING
    user_logondata      = lv_uslogond
  EXCEPTIONS
    user_name_not_exist = 1
    OTHERS              = 2.

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

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

* cl_gui_container=>default_screen erzwingen
  WRITE: space.
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

[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