* Anhänge lesen mit Funktionsbaustein: SO_ATTACHMENT_READ
CLASS lcl_salv DEFINITION FINAL.
PUBLIC SECTION.
CLASS-DATA: o_salv TYPE REF TO cl_salv_table.
CLASS-DATA: it_sood TYPE STANDARD TABLE OF sood WITH DEFAULT KEY.
CLASS-METHODS on_double_click FOR EVENT double_click OF cl_salv_events_table
IMPORTING
row
column
sender.
ENDCLASS.
CLASS lcl_salv IMPLEMENTATION.
METHOD on_double_click.
IF o_salv IS BOUND.
* Wert in der geklickten Zelle holen
DATA(it_sel) = o_salv->get_selections( )->get_selected_cells( ).
IF lines( it_sel ) > 0.
* Schlüsselwerte der selektierten Zeile holen
DATA(lv_soodk) = VALUE soodk( objtp = it_sood[ it_sel[ 1 ]-row ]-objtp
objyr = it_sood[ it_sel[ 1 ]-row ]-objyr
objno = it_sood[ it_sel[ 1 ]-row ]-objno ).
DATA: it_sood5 TYPE STANDARD TABLE OF sood5 WITH DEFAULT KEY.
* SAPoffice: Ermitteln aller Anlagen zu einem Dokument
CALL FUNCTION 'SO_ATTACHMENT_LIST_READ'
EXPORTING
object_id = lv_soodk
TABLES
objects = it_sood5
EXCEPTIONS
system_failure = 1
communication_failure = 2
OTHERS = 3.
IF sy-subrc = 0.
TRY.
DATA: o_pop TYPE REF TO cl_salv_table.
cl_salv_table=>factory( IMPORTING r_salv_table = o_pop
CHANGING t_table = it_sood5 ).
o_pop->get_functions( )->set_all( abap_true ).
o_pop->get_columns( )->set_optimize( abap_true ).
o_pop->get_display_settings( )->set_list_header( 'Attachements' ).
o_pop->get_display_settings( )->set_striped_pattern( abap_true ).
o_pop->get_selections( )->set_selection_mode( if_salv_c_selection_mode=>row_column ).
o_pop->set_screen_popup( start_column = 1
end_column = 140
start_line = 1
end_line = 20 ).
o_pop->display( ).
CATCH cx_root INTO DATA(e_txt).
WRITE: / e_txt->get_text( ).
ENDTRY.
ENDIF.
ENDIF.
ENDIF.
ENDMETHOD.
ENDCLASS.
DATA: lv_obj_type TYPE sood-objtp.
DATA: lv_user TYPE usr02-bname.
SELECT-OPTIONS: so_type FOR lv_obj_type.
SELECT-OPTIONS: so_user FOR lv_user.
PARAMETERS: p_title TYPE sood-objdes DEFAULT ''.
INITIALIZATION.
* Emails: Typ "RAW"
so_type[] = VALUE #( ( sign = 'I'
option = 'EQ'
low = 'RAW' ) ).
* Benutzer
so_user[] = VALUE #( ( sign = 'I'
option = 'EQ'
low = sy-uname ) ).
START-OF-SELECTION.
* unscharfe Suche nach Email-Titel (Subject) mit "%"
DATA(lv_title) = CONV sood-objdes( |%{ p_title }%| ).
* SAPoffice: Objektdefinition
SELECT FROM sood AS s
FIELDS *
WHERE s~objtp IN @so_type
AND s~ownnam IN @so_user
AND s~objdes LIKE @lv_title
INTO TABLE @lcl_salv=>it_sood.
IF sy-subrc = 0.
TRY.
* SALV-Table
DATA: o_salv TYPE REF TO cl_salv_table.
cl_salv_table=>factory( IMPORTING r_salv_table = lcl_salv=>o_salv
CHANGING t_table = lcl_salv=>it_sood ).
* Grundeinstellungen
lcl_salv=>o_salv->get_functions( )->set_all( abap_true ).
lcl_salv=>o_salv->get_columns( )->set_optimize( abap_true ).
lcl_salv=>o_salv->get_display_settings( )->set_list_header( 'Mails' ).
lcl_salv=>o_salv->get_display_settings( )->set_striped_pattern( abap_true ).
lcl_salv=>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 lcl_salv=>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-Hanlder für Link-Klick
SET HANDLER lcl_salv=>on_double_click FOR lcl_salv=>o_salv->get_event( ).
lcl_salv=>o_salv->display( ).
CATCH cx_root INTO DATA(e_txt).
WRITE: / e_txt->get_text( ).
ENDTRY.
ENDIF.
Kategorien
-
Neueste Beiträge
- [ABAP] User-Logondaten lesen
- [ABAP] Prüfen, ob ein Druckername gültig ist
- [ABAP] SALV: Druckausgabe eines SALV-Gitters in SAP-Spool (SP01)
- KI-Software
- [ABAP] SALV: Cell-Merging beim Sortieren der Spalten unterdrücken
- Kartoffelsalat
- [CDS-Views] SAP-Standard CDS Views suchen
- [ABAP] Statuswerte zu einem IH-Auftrag lesen
- [ABAP] Gantt-Chart anzeigen
- [ABAP] SAPscript-Texte: Clusterdaten ohne READ_TEXT direkt aus Tabelle STXL lesen