[ABAP] Workflow: Workitems zu Objekt

* Einkaufsbelegnummer
PARAMETERS: p_po TYPE ekko-ebeln.
* Typ von Objekten in Persistenten Objektreferenzen, hier z.B. Klasse für Bestellungen
PARAMETERS: p_type TYPE sibftypeid DEFAULT 'CL_MM_PUR_WF_OBJECT_PO'.
* Kategorie von Objekten in Persistenten Objektreferenzen, hier z.B. Typ "Klassen"
PARAMETERS: p_catid TYPE sibfcatid DEFAULT 'CL'.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_type.

* Sucht Objekttypen zu einem Muster
  DATA(it_objtypes) = cl_swf_utl_def_services=>query_objects( EXPORTING im_objcateg = p_catid
                                                                        im_objtype  = '*' ).

  DATA: it_return TYPE TABLE OF ddshretval.

* eigene Suchhilfe für Auswahl der Objekte anzeigen
  CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
    EXPORTING
      retfield        = 'TYPEID'      " Spalte der internen Tabelle bei value_tab
      dynpprog        = sy-repid
      dynpnr          = sy-dynnr
      dynprofield     = 'P_TYPE'      " Name des Dynpro-Feldes für die automatische Werterückgabe
      value_org       = 'S'           " Werteübergabe: C: zellenweise, S: strukturiert
      window_title    = 'Auswahl'
    TABLES
      value_tab       = it_objtypes   " Übergabe-Tabelle mit Werten für die Anzeige und Auswahl
      return_tab      = it_return     " Rückgabe-Tabelle mit den ausgewählten (geklickten) Elementen
    EXCEPTIONS
      parameter_error = 1
      no_values_found = 2
      OTHERS          = 3.

  IF sy-subrc = 0.
    IF lines( it_return ) > 0.
      MESSAGE it_return[ 1 ]-fieldval TYPE 'S'.
    ENDIF.
  ENDIF.

START-OF-SELECTION.

  DATA(lv_object_por) = VALUE sibflporb( instid = CONV #( p_po )
                                         typeid = p_type
                                         catid  = p_catid ).
  DATA: lv_return_code TYPE sy-subrc.
  DATA: it_task_filter TYPE STANDARD TABLE OF swr_task WITH DEFAULT KEY.
  DATA: it_worklist    TYPE STANDARD TABLE OF swr_wihdr WITH DEFAULT KEY.

* Workflow-Schnittstellen: Workitems zu Objekt
  CALL FUNCTION 'SAP_WAPI_WORKITEMS_TO_OBJECT'
    EXPORTING
      object_por  = lv_object_por
    IMPORTING
      return_code = lv_return_code
    TABLES
      task_filter = it_task_filter
      worklist    = it_worklist.

  cl_demo_output=>write_data( lv_object_por ).
  cl_demo_output=>write_data( lv_return_code ).
  cl_demo_output=>write_data( it_task_filter ).
  cl_demo_output=>write_data( it_worklist ).

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

* cl_gui_container=>default_screen erzwingen
  WRITE: space.

[ABAP] Anlagen zu Business-Objekten zählen

PARAMETERS: p_instid TYPE sibfboriid DEFAULT '000000001234567890'.
PARAMETERS: p_typeid TYPE sibftypeid DEFAULT 'BUS1001006'.
PARAMETERS: p_catid TYPE sibfcatid DEFAULT 'BO'.

START-OF-SELECTION.

* Schlüssel des Business-Objekts
  DATA(lv_object) = VALUE sibflporb( instid  = p_instid
                                     typeid  = p_typeid
                                     catid   = p_catid ).

* Statistiken für Anlagen -> Anlagen zählen
  DATA(it_stst) = cl_gos_attachment_query=>count_for_object( is_object = lv_object
                                                             ip_arl    = '' ).

* Übersicht zu angehangenen Objekten, COUNTER enthält die Anzahl
  cl_demo_output=>write_data( it_stst ).
  cl_demo_output=>display( ).