fpm_1

47
Integrata - Floor-Plan-Manager - Grundlagen - Seite 1. Zeigen Sie nur die von Ihnen belegten Prozesse durch die Definition einer Wertübergabe innerhalb 2-er Schritte an Definieren Sie eine WebDnpro-Component als wiederverwendbare Einheit als Datenlager Tätigkeit : ZWD_SHARED_DATA_XXX anlegen Tätigkeit : Knoten als Interfaceknoten bekannt machen 1

Transcript of fpm_1

Page 1: fpm_1

Integrata - Floor-Plan-Manager - Grundlagen - Seite

1. Zeigen Sie nur die von Ihnen belegten Prozesse durch die Definition einer Wertübergabe innerhalb 2-er Schritte an

Definieren Sie eine WebDnpro-Component als wiederverwendbare Einheit als Datenlager

Tätigkeit : ZWD_SHARED_DATA_XXX anlegen

Tätigkeit : Knoten als Interfaceknoten bekannt machen

1

Page 2: fpm_1

Integrata - Floor-Plan-Manager - Grundlagen - Seite

Tätigkeit : IF_FPM_SHARED_DATA einbetten

Anwendungen mit dem Floorplan Manager umfassen in der Regel eine Anzahl von UlBBs. die untereinander Daten austauschen. Um diese Daten auf Basis einer zentralen Instanz auszutauschen. kann das FloorpIan-Manager-lnterface 1F_FPM_SHARED_DATA verwendet werden. Eine Web-Dynpro-Component. die dieses Interface einfügt,wird auch Shared-Data-Component genannt.

Das Interface IF_FPM_SHARED_DATA beinhaltet selbst keine zu implementierenden Methoden. Jede Component der Anwendung. die den Zugriff auf die Shared-Data-Component benötigt. muss diese Component als verwendete Web-Dynpro-Component registrieren. Dafürmuss in der ABAP Workbench die entsprechende Component in der Sektion VERWENDETE WEB-DYNPRO-COMPONENTS hinterlegt werden

Der Floorplan Manager sorgt zur Laufzeit der Anwendung dafür dass eine Component. die das Interface IF_FPM_SHARED_DATA implementiert. anwendungsweit nur einmalig instanziert wird. Somit greifen alle Components der Anwendung. die eine Verwendung auf eine bestimmte Shared-Data-Component vermerkt haben. auf ein und dieselbe Instanz dieser Web-Dynpro-Component zu. Dadurch kann die Shared-Data-Component als zentrale Komponente von allen Verwendern für den Austausch von Daten auf folgende Weise eingesetzt werden:

- Mapping auf Basis von Web-Dynpro-Contexten

- Zugriff auf öffentliche Attribute

- Aufruf von öffentlichen Methoden der Shared-Data-Component

2

Page 3: fpm_1

Integrata - Floor-Plan-Manager - Grundlagen - Seite

Anpassung im 1.WebDynpro

Tätigkeit : Component-Verwendung eintragen ZWD_SHARED_DATA_XXX

Tätigkeit : Component-Verwendung anklicken

Tätigkeit : Ergebnis kontrollieren

3

Page 4: fpm_1

Integrata - Floor-Plan-Manager - Grundlagen - Seite

Tätigkeit : Interfaceknoten mappen und markieren

Tätigkeit : Definieren Sie einen Interface-Knoten zur Übergabe der Userkennung

4

Page 5: fpm_1

Integrata - Floor-Plan-Manager - Grundlagen - Seite

- Global Object definieren

Tätigkeit : Zentrale Instanz des FPM holen

===================================================* get fpm instance  wd_this->go_fpm = cl_fpm_factory=>get_instance( ).  data lo_cmp_usage type ref to if_wd_component_usage.

  lo_cmp_usage =   wd_this->wd_cpuse_zwd_shared_data_xxx( ).*  if lo_cmp_usage->has_active_component( ) is initial.*    lo_cmp_usage->create_component( ).*  endif.  call method wd_this->go_fpm->attach_component_to_usage    exporting      iv_component_name  = 'ZWD_SHARED_DATA_XXX'      io_component_usage = lo_cmp_usage.=========================================================

5

Page 6: fpm_1

Integrata - Floor-Plan-Manager - Grundlagen - Seite

Tätigkeit : Aufruf der Datenbeschaffung umlagern Holen des Attributwertes USER.. beim 1.Mal

Setzen des Interfacewertes beim 1.Mal

Die Methode PROCESS_8EFORE_OUT PUT wird immer dann prozessiert wenn der jeweilige UIBB infolge des soeben prozessierten Event Loops letztlich sichtbar wird; das heißt. wenn der View dieses UlBBs schließlich Bestandteil des Web-Dynpro-Renderings ist. Ausschlaggebend für den Aufruf von PROCESS_BEFORE_0UTPUT ist somit immerdie Sichtbarkeit eines UlBBs im Ergebnis der Web-Dynpro-Rendering-Phase.

6

Page 7: fpm_1

Integrata - Floor-Plan-Manager - Grundlagen - Seite

Tätigkeit : Mapping des neuen Knoten Definiton einer Action uebergabe_user

Tätigkeit : Lesen des Users gemäß Lead-Selection in der Action-PhaseLegen Sie eine eigene Methode get_user_from_lead zum Setzen des Interface-Wertes

Nutzen Sie den Code-Wizzard Aktivieren und Test Anpassung im 2.WebDynpro

7

Page 8: fpm_1

Integrata - Floor-Plan-Manager - Grundlagen - Seite

Tätigkeit : Component-Verwendung eintragen ZWD_SHARED_DATA_XXX

Tätigkeit : Controller-Verwendung des InterfaceControllers einstellen und Mapping

Ergebnis

8

Page 9: fpm_1

Integrata - Floor-Plan-Manager - Grundlagen - Seite

Tätigkeit : Zentrale Instanz des FPM holen

================================================================* get fpm instance  wd_this->go_fpm = cl_fpm_factory=>get_instance( ).  data lo_cmp_usage type ref to if_wd_component_usage.

  lo_cmp_usage =   wd_this->wd_cpuse_zwd_shared_data_xxx( ).*  if lo_cmp_usage->has_active_component( ) is initial.*    lo_cmp_usage->create_component( ).*  endif.  call method wd_this->go_fpm->attach_component_to_usage    exporting      iv_component_name  = 'ZWD_SHARED_DATA_XXX'      io_component_usage = lo_cmp_usage.

=========================================================

Tätigkeit : Umlagerung der Datenbeschaffung

9

Page 10: fpm_1

Integrata - Floor-Plan-Manager - Grundlagen - Seite

Anpassungsquellcode im Service-Funktionsbaustein

* ===================================================  data lo_nd_if_user type ref to if_wd_context_node.

  data lo_el_if_user type ref to if_wd_context_element.  data ls_if_user type wd_this->element_if_user.  data lv_bname type wd_this->element_if_user-bname.

* navigate from <CONTEXT> to <IF_USER> via lead selection  lo_nd_if_user = wd_context->get_child_node( name = wd_this->wdctx_if_user ).

* @TODO handle non existant child* IF lo_nd_if_user IS INITIAL.* ENDIF.

* get element via lead selection  lo_el_if_user = lo_nd_if_user->get_element( ).* @TODO handle not set lead selection  if lo_el_if_user is initial.  endif.

* get single attribute  lo_el_if_user->get_attribute(    exporting      name =  `BNAME`    importing      value = lv_bname ).

  sort lt_c_wplist by wp_bname ascending.  delete lt_c_wplist where wp_bname ne lv_bname.* ====================================================

Tätigkeit : Aktivieren und Test der Konfiguration

2. Hilfe Funktion "Quickinfo" aktivieren

10

Page 11: fpm_1

Integrata - Floor-Plan-Manager - Grundlagen - Seite

Tätigkeit : Konfiguration starten

Tätigkeit : Erläuterung Untersicht 1 + 2 hinzufügenTesten

Tätigkeit : Erläuterungsobjekt Untersicht 1 hinzufügenTesten

Tätigkeit : Doku-Objekt einfügen

Tätigkeit : Doku-Objekt zdokuobjekt_1anlegen

11

Page 12: fpm_1

Integrata - Floor-Plan-Manager - Grundlagen - Seite

Tätigkeit : Testen

3. Legen Sie einen Guided Activity Floorplan an

Der Guided Activity Floorplan besteht im Wesentlichen aus einer Abfolge vonHauptschritten und unterschritten. die in einer Roadmap und entsprechenden Sub-Roadmaps abgebildet werden. Jedem Hauptschritt und jedem Unterschritt ist eine eigene Toolbar zugewiesen. Ein Guided Activity Floorplan kann außerdem ein Einstiegsbiid oder einBestätigungsbild haben

Tätigkeit : Application anlegen, GAF-Component zuordnen und sichern

12

Page 13: fpm_1

Integrata - Floor-Plan-Manager - Grundlagen - Seite

Tätigkeit : Konfiguration anlegen

Tätigkeit : Konfiguration-ID eingeben und Anlegen

Tätigkeit : Paket zuordnen und sichern

13

Page 14: fpm_1

Integrata - Floor-Plan-Manager - Grundlagen - Seite

Tätigkeit : Auftrag zuordnen und sichern

Tätigkeit : Konfiguration benennen, zur Konfiguration springen und anlegen

Tätigkeit : Component und Window benennen

Tätigkeit : Hauptschritt hinzufügen

14

Page 15: fpm_1

Integrata - Floor-Plan-Manager - Grundlagen - Seite

Tätigkeit : Component und Window benennen testen

4. Legen Sie einen Substep der die Daten zur letzen Kennwortänderung PWDLGNDATE und Anmeldung PWDCHGDATE anzeigt (USR02)

Webdynpro-Erweiterung im 1.WebDynpro

Tätigkeit : Knoten USR02 im Component-Controller Context anlegen , im View-Controller Context mappen und Layout dazu definieren

Tätigkeit : Knoten USR02 anlegen und Layout dazu definieren Datenbeschaffung aus USR02 über separate Methode im CC die in der

Methode processevent aufgerufen wird definieren

15

Page 16: fpm_1

Integrata - Floor-Plan-Manager - Grundlagen - Seite

=============== get user details ======================================  data lo_nd_if_bname type ref to if_wd_context_node.

  data lo_el_if_bname type ref to if_wd_context_element.  data ls_if_bname type wd_this->element_if_bname.  data lv_bname type wd_this->element_if_bname-bname.

* navigate from <CONTEXT> to <IF_BNAME> via lead selection  lo_nd_if_bname = wd_context->get_child_node( name = wd_this->wdctx_if_bname ).

* @TODO handle non existant child* IF lo_nd_if_bname IS INITIAL.* ENDIF.

* get element via lead selection  lo_el_if_bname = lo_nd_if_bname->get_element( ).* @TODO handle not set lead selection  if lo_el_if_bname is initial.  endif.

* get single attribute  lo_el_if_bname->get_attribute(    exporting      name =  `BNAME`    importing      value = lv_bname ).

  data lo_nd_usr02 type ref to if_wd_context_node.

  data lo_el_usr02 type ref to if_wd_context_element.  data ls_usr02 type wd_this->element_usr02.

*  navigate from <CONTEXT> to <USR02> via lead selection  lo_nd_usr02 = wd_context->get_child_node( name = wd_this->wdctx_usr02 ).

*  @TODO handle non existant child*  IF lo_nd_usr02 IS INITIAL.*  ENDIF.

*  get element via lead selection  lo_el_usr02 = lo_nd_usr02->get_element( ).

*  @TODO handle not set lead selection  if lo_el_usr02 is initial.  endif.

*  @TODO fill static attributes*  ls_usr02 = xxx->get_yyy( ).  select single * from usr02 into ls_usr02 where bname eq lv_bname.

*  set all declared attributes  lo_el_usr02->set_static_attributes(     static_attributes = ls_usr02 ).===========================================================

================= processevent ======================================

16

Page 17: fpm_1

Integrata - Floor-Plan-Manager - Grundlagen - Seite

data lr_event type ref to cl_fpm_event.  case io_event->mv_event_id.* --------------------------------- STEP1 -------------------------------------    when 'USER_DETAIL'.      lr_event = cl_fpm_event=>create_by_id( cl_fpm_event=>gc_event_change_step ).      lr_event->mo_event_data->set_value( iv_key = cl_fpm_event=>gc_event_param_mainstep_id                                      iv_value = 'USER_LISTE' ).      lr_event->mo_event_data->set_value( iv_key = cl_fpm_event=>gc_event_param_substep_id                                     iv_value = 'USER_DETAIL' ).      lr_event->mo_event_data->set_value( iv_key = cl_fpm_event=>gc_event_param_subvariant_id                                     iv_value = 'VARIANT_1' ).

      wd_this->get_user_details(      ).      wd_this->go_fpm->raise_event( io_event = lr_event  ).  endcase.==============================================================

Tätigkeit : Konfigurator starten

17

Page 18: fpm_1

Integrata - Floor-Plan-Manager - Grundlagen - Seite

Tätigkeit : Unterschritt hinzufügen

Tätigkeit : Unterschritt hinzufügen

Tätigkeit : Component , Window hinzufügen und sichernTesten

18

Page 19: fpm_1

Integrata - Floor-Plan-Manager - Grundlagen - Seite

Tätigkeit : Element zur Drucktastenleiste hinzufügen

Tätigkeit : Drucktastenleiste zum Hauptstep beleben

19

Page 20: fpm_1

Integrata - Floor-Plan-Manager - Grundlagen - Seite

Tätigkeit : Ansprung Substep User_Detail definieren und sichern

Tätigkeit : Ansprung Mainstep definieren

Tätigkeit : Ansprung Mainstep definieren

20

Page 21: fpm_1

Integrata - Floor-Plan-Manager - Grundlagen - Seite

Tätigkeit : Attribute Rücksprung definieren Testen

5. Statische und dynamische Komponentenkonfiguration

Tätigkeit : Nutzen Sie ihre OIF Komponente

Tätigkeit : Konfiguration anlegen

21

Page 22: fpm_1

Integrata - Floor-Plan-Manager - Grundlagen - Seite

Tätigkeit : Konfiguration ZWD_USER_LIST_XXX_G1 anlegen

Tätigkeit : Mandant ausblenden

22

Page 23: fpm_1

Integrata - Floor-Plan-Manager - Grundlagen - Seite

Tätigkeit : Sichern

23

Page 24: fpm_1

Integrata - Floor-Plan-Manager - Grundlagen - Seite

Tätigkeit : Ergebnis sichten und Konfiguration entfernen

* =============== Dynamische Konfiguration Process Before Output  data lo_api_controller TYPE REF TO if_wd_component.  data lo_pers_manager TYPE REF TO if_wd_personalization.  data ls_konfig_key type wdy_config_key.  lo_api_controller = wd_this->wd_get_api( ).  lo_pers_manager = lo_api_controller->get_personalization_manager( ).  if sy-uname eq 'PWD'.     ls_konfig_key-config_id = 'ZWD_USER_LIST_XXX_G1'.     lo_pers_manager->load_config_by_key( ls_konfig_key ).  endif.* ========================================

6. Dynamische Titelleisten ausgeben

* ============== Dynamische Titelleiste Process Before Output  data: lo_idr type ref to if_fpm_idr,           lo_fpm type ref to if_fpm.

  lo_fpm = cl_fpm_factory=>get_instance( ).  lo_idr ?= lo_fpm->get_service( cl_fpm_service_manager=>gc_key_idr ).

  lo_idr->set_application_title(  exporting      iv_title         = 'Test dynamic title'      iv_title_tooltip = 'Title'      ).  lo_idr->set_ticket( exporting      iv_top            = 'Ticket top dynamic '      iv_bottom         = 'Ticket bottom dynamic'  ).

24

Page 25: fpm_1

Integrata - Floor-Plan-Manager - Grundlagen - Seite

7. Nutzen Sie auch den fpm_cfg_hierarchy_browser

Tätigkeit : Anwendung testen und ihre Konfiguration ZWD_USER_WP_LIST_XXX_OIF eingeben

Tätigkeit : Anwendungsaufbau sichten

25

Page 26: fpm_1

Integrata - Floor-Plan-Manager - Grundlagen - Seite

8. Definieren Sie einen FPM Search Generic User Interface Building Block

Legen Sie eine ZTabelle ZSCARR_XX abgeleitet aus SCARR an und kopieren Sie den Inhalt

>Aktivieren der Tabelle<================= Kopier 4-Zeiler ==================

report  zscarr_copy.data: it_scarr type table of scarr.select * from scarr into table it_scarr package size 1000.  insert zscarr_XX from table it_scarr accepting duplicate keys.endselect.====================================================

26

Page 27: fpm_1

Integrata - Floor-Plan-Manager - Grundlagen - Seite

Klasse anlegen und lokal sichern

27

Page 28: fpm_1

Integrata - Floor-Plan-Manager - Grundlagen - Seite

class ZCL_SCARR_SEARCH_UIBB_99 definition  public  final  create public .

public section.

  interfaces IF_FPM_GUIBB .  interfaces IF_FPM_GUIBB_SEARCH .

  class-data MS_SCARR type SCARR .  class-data:    mt_SCARR type standard table of SCARR .  data MO_CATALOG type ref to CL_ABAP_STRUCTDESCR .protected section.private section.ENDCLASS.

CLASS ZCL_SCARR_SEARCH_UIBB_99 IMPLEMENTATION.

* <SIGNATURE>---------------------------------------------------------------------------------------+* | Instance Public Method ZCL_SCARR_SEARCH_UIBB_99->IF_FPM_GUIBB_SEARCH~CHECK_CONFIG* +-------------------------------------------------------------------------------------------------+* | [--->] IO_LAYOUT_CONFIG               TYPE REF TO IF_FPM_GUIBB_SEARCH_CONFIG* | [<---] ET_MESSAGES                    TYPE        FPMGB_T_MESSAGES* +--------------------------------------------------------------------------------------</SIGNATURE>method IF_FPM_GUIBB_SEARCH~CHECK_CONFIG.endmethod.

* <SIGNATURE>---------------------------------------------------------------------------------------+* | Instance Public Method ZCL_SCARR_SEARCH_UIBB_99->IF_FPM_GUIBB_SEARCH~FLUSH* +-------------------------------------------------------------------------------------------------+* | [--->] IT_FPM_SEARCH_CRITERIA         TYPE        FPMGB_T_SEARCH_CRITERIA* | [--->] IV_MAX_NUM_RESULTS             TYPE        I* | [--->] IT_SELECTED_LINES_OF_RESULT    TYPE        T_RESULT* | [--->] IV_RESULT_LEAD_SEL             TYPE        I(optional)* +--------------------------------------------------------------------------------------</SIGNATURE>method IF_FPM_GUIBB_SEARCH~FLUSH.endmethod.

* <SIGNATURE>---------------------------------------------------------------------------------------+* | Instance Public Method ZCL_SCARR_SEARCH_UIBB_99->IF_FPM_GUIBB_SEARCH~GET_DATA* +-------------------------------------------------------------------------------------------------+* | [--->] IO_EVENT                       TYPE REF TO CL_FPM_EVENT

28

Page 29: fpm_1

Integrata - Floor-Plan-Manager - Grundlagen - Seite

* | [--->] IV_RAISED_BY_OWN_UI            TYPE        BOOLE_D* | [--->] IT_VISIBLE_ATTRIBUTES          TYPE        FPMGB_T_SELECTED_FIELDS* | [--->] IT_SELECTED_COLUMNS_OF_RESULT  TYPE        FPMGB_T_SELECTED_FIELDS* | [--->] IT_SELECTED_SEARCH_ATTRIBUTES  TYPE        FPMGB_T_SELECTED_FIELDS* | [<---] ET_MESSAGES                    TYPE        FPMGB_SEARCH_T_T100_MESSAGE* | [<---] EV_SEARCH_CRITERIA_CHANGED     TYPE        BOOLE_D* | [<---] ET_RESULT_LIST                 TYPE        DATA* | [<---] EV_RESULT_LIST_TITLE           TYPE        STRING* | [<-->] CT_FPM_SEARCH_CRITERIA         TYPE        FPMGB_T_SEARCH_CRITERIA* +--------------------------------------------------------------------------------------</SIGNATURE>method if_fpm_guibb_search~get_data.  check io_event->mv_event_id = if_fpm_guibb_search=>fpm_execute_search.  et_result_list = mt_SCARR.endmethod.

* <SIGNATURE>---------------------------------------------------------------------------------------+* | Instance Public Method ZCL_SCARR_SEARCH_UIBB_99->IF_FPM_GUIBB_SEARCH~GET_DEFAULT_CONFIG* +-------------------------------------------------------------------------------------------------+* | [--->] IO_LAYOUT_CONFIG               TYPE REF TO IF_FPM_GUIBB_SEARCH_CONFIG* +--------------------------------------------------------------------------------------</SIGNATURE>method IF_FPM_GUIBB_SEARCH~GET_DEFAULT_CONFIG.endmethod.

* <SIGNATURE>---------------------------------------------------------------------------------------+* | Instance Public Method ZCL_SCARR_SEARCH_UIBB_99->IF_FPM_GUIBB_SEARCH~GET_DEFINITION* +-------------------------------------------------------------------------------------------------+* | [<---] EO_FIELD_CATALOG_ATTR          TYPE REF TO CL_ABAP_STRUCTDESCR* | [<---] ET_FIELD_DESCRIPTION_ATTR      TYPE        FPMGB_T_SEARCHFIELD_DESCR* | [<---] EO_FIELD_CATALOG_RESULT        TYPE REF TO CL_ABAP_TABLEDESCR* | [<---] ET_FIELD_DESCRIPTION_RESULT    TYPE        FPMGB_T_SEARCHRESULT_DESCR* | [<---] EV_RESULT_TABLE_SELECTION_MODE TYPE        WDUI_TSMODE* | [<---] ES_MESSAGE                     TYPE        FPMGB_S_T100_MESSAGE* | [<---] EV_ADDITIONAL_ERROR_INFO       TYPE        DOKU_OBJ* | [<---] ES_OPTIONS                     TYPE        FPMGB_S_SEARCH_OPTIONS* | [<---] ET_ACTION_DEFINITION           TYPE        FPMGB_T_ACTIONDEF* | [<---] ET_SPECIAL_GROUPS              TYPE        FPMGB_T_SPECIAL_GROUPS* +--------------------------------------------------------------------------------------</SIGNATURE>method IF_FPM_GUIBB_SEARCH~GET_DEFINITION.  data : wa_fields     type dfies,    " Work area dicitonary field attributes         it_fields     type ddfields, " Internal table Dicitonary field att

29

Page 30: fpm_1

Integrata - Floor-Plan-Manager - Grundlagen - Seite

ributes         ls_field_desc like line of et_field_description_result.  " Work area result column description

* Creating the field catalog

  eo_field_catalog_attr ?= cl_abap_structdescr=>describe_by_data( ms_SCARR ).  mo_catalog = eo_field_catalog_attr.* Assigning the result catalog

  eo_field_catalog_result ?= cl_abap_tabledescr=>describe_by_data( mt_SCARR ).

* Assigning field description

  it_fields = eo_field_catalog_attr->get_ddic_field_list( ).

  loop at it_fields into wa_fields.

    ls_field_desc-name = wa_fields-fieldname.    ls_field_desc-text = wa_fields-fieldtext.

    append ls_field_desc to et_field_description_result.    clear ls_field_desc.

  endloop.endmethod.

* <SIGNATURE>---------------------------------------------------------------------------------------+* | Instance Public Method ZCL_SCARR_SEARCH_UIBB_99->IF_FPM_GUIBB_SEARCH~PROCESS_EVENT* +-------------------------------------------------------------------------------------------------+* | [--->] IO_EVENT                       TYPE REF TO CL_FPM_EVENT* | [--->] IT_FPM_SEARCH_CRITERIA         TYPE        FPMGB_T_SEARCH_CRITERIA* | [--->] IV_RAISED_BY_OWN_UI            TYPE        BOOLE_D* | [--->] IV_MAX_NUM_RESULTS             TYPE        I* | [--->] IO_SEARCH_CONVERSION           TYPE REF TO IF_FPM_GUIBB_SEARCH_CONVERSION(optional)* | [<---] ET_MESSAGES                    TYPE        FPMGB_SEARCH_T_T100_MESSAGE* | [<---] EV_RESULT                      TYPE        FPM_EVENT_RESULT* +--------------------------------------------------------------------------------------</SIGNATURE>method if_fpm_guibb_search~process_event.  data : lt_where_string type rsds_where_tab.  data : lo_exe type ref to cx_fpmgb.

  check io_event->mv_event_id = if_fpm_guibb_search=>fpm_execute_search.

* Convert the search query into sql string

  try.

      cl_fpm_guibb_search_conversion=>to_abap_select_where_tab(      exporting      it_fpm_search_criteria = it_fpm_search_criteria    " search criteria for GUIBB Search

30

Page 31: fpm_1

Integrata - Floor-Plan-Manager - Grundlagen - Seite

      iv_table_name          = 'SCARR'                 " Table Name      io_field_catalog       = mo_catalog                         " Runtime Type Services      importing      et_abap_select_table   = lt_where_string      ).    catch cx_fpmgb into lo_exe.    " GUIBB Exceptions

*  Exception part handled here

  endtry.

* Fetching the result

  select *   from SCARR  into table mt_SCARR up to iv_max_num_results rows  where (lt_where_string).endmethod.

* <SIGNATURE>---------------------------------------------------------------------------------------+* | Instance Public Method ZCL_SCARR_SEARCH_UIBB_99->IF_FPM_GUIBB~GET_PARAMETER_LIST* +-------------------------------------------------------------------------------------------------+* | [<-()] RT_PARAMETER_DESCR             TYPE        FPMGB_T_PARAM_DESCR* +--------------------------------------------------------------------------------------</SIGNATURE>method IF_FPM_GUIBB~GET_PARAMETER_LIST.endmethod.

* <SIGNATURE>---------------------------------------------------------------------------------------+* | Instance Public Method ZCL_SCARR_SEARCH_UIBB_99->IF_FPM_GUIBB~INITIALIZE* +-------------------------------------------------------------------------------------------------+* | [--->] IT_PARAMETER                   TYPE        FPMGB_T_PARAM_VALUE* | [--->] IO_APP_PARAMETER               TYPE REF TO IF_FPM_PARAMETER(optional)* | [--->] IV_COMPONENT_NAME              TYPE        FPM_COMPONENT_NAME(optional)* | [--->] IS_CONFIG_KEY                  TYPE        WDY_CONFIG_KEY(optional)* | [--->] IV_INSTANCE_ID                 TYPE        FPM_INSTANCE_ID(optional)* +--------------------------------------------------------------------------------------</SIGNATURE>method IF_FPM_GUIBB~INITIALIZE.endmethod.ENDCLASS.

31

Page 32: fpm_1

Integrata - Floor-Plan-Manager - Grundlagen - Seite

Applikation + Konfiguration anlegen

>Sichern + Konfiguration starten<

Suchkomponente definieren

32

Page 33: fpm_1

Integrata - Floor-Plan-Manager - Grundlagen - Seite

Feeder Klasse zuordnen + >Parameter bearbeiten< + >ok<

>Suchkriterien<

Block auswählen + ok

33

Page 34: fpm_1

Integrata - Floor-Plan-Manager - Grundlagen - Seite

Spalten der Ergebnisliste + ok

>Sichern und Debugging<

==================================================================

>Testen der Einstellung< >Testen gesicherte Suche<>Operatoren ausschliessen<

34

Page 35: fpm_1

Integrata - Floor-Plan-Manager - Grundlagen - Seite

9. Definieren Sie einen FPM LIST Generic User Interface Building Block

Klasse ZCL_ZSCARR_LIST anlegen und lokal sichern

class ZCL_ZSCARR_LIST_99 definition  public  final  create public .

public section.

  interfaces IF_FPM_GUIBB .  interfaces IF_FPM_GUIBB_LIST .

  data:    MT_SCARR type standard table of SCARR .  class-data MS_SCARR type SCARR .protected section.private section.ENDCLASS.

CLASS ZCL_ZSCARR_LIST_99 IMPLEMENTATION.

* <SIGNATURE>---------------------------------------------------------------------------------------+* | Instance Public Method ZCL_ZSCARR_LIST_99->IF_FPM_GUIBB_LIST~CHECK_CONFIG* +-------------------------------------------------------------------------------------------------+* | [--->] IO_LAYOUT_CONFIG               TYPE REF TO IF_FPM_GUIBB_LIST_CONFIG

35

Page 36: fpm_1

Integrata - Floor-Plan-Manager - Grundlagen - Seite

* | [<---] ET_MESSAGES                    TYPE        FPMGB_T_MESSAGES* +--------------------------------------------------------------------------------------</SIGNATURE>method IF_FPM_GUIBB_LIST~CHECK_CONFIG.endmethod.

* <SIGNATURE>---------------------------------------------------------------------------------------+* | Instance Public Method ZCL_ZSCARR_LIST_99->IF_FPM_GUIBB_LIST~FLUSH* +-------------------------------------------------------------------------------------------------+* | [--->] IT_CHANGE_LOG                  TYPE        FPMGB_T_CHANGELOG* | [--->] IT_DATA                        TYPE REF TO DATA* | [--->] IV_OLD_LEAD_SEL                TYPE        I(optional)* | [--->] IV_NEW_LEAD_SEL                TYPE        I(optional)* +--------------------------------------------------------------------------------------</SIGNATURE>method IF_FPM_GUIBB_LIST~FLUSH.endmethod.

* <SIGNATURE>---------------------------------------------------------------------------------------+* | Instance Public Method ZCL_ZSCARR_LIST_99->IF_FPM_GUIBB_LIST~GET_DATA* +-------------------------------------------------------------------------------------------------+* | [--->] IV_EVENTID                     TYPE REF TO CL_FPM_EVENT* | [--->] IT_SELECTED_FIELDS             TYPE        FPMGB_T_SELECTED_FIELDS(optional)* | [--->] IV_RAISED_BY_OWN_UI            TYPE        BOOLE_D(optional)* | [--->] IV_VISIBLE_ROWS                TYPE        I(optional)* | [--->] IV_EDIT_MODE                   TYPE        FPM_EDIT_MODE(optional)* | [--->] IO_EXTENDED_CTRL               TYPE REF TO IF_FPM_LIST_ATS_EXT_CTRL(optional)* | [<---] ET_MESSAGES                    TYPE        FPMGB_T_MESSAGES* | [<---] EV_DATA_CHANGED                TYPE        BOOLE_D* | [<---] EV_FIELD_USAGE_CHANGED         TYPE        BOOLE_D* | [<---] EV_ACTION_USAGE_CHANGED        TYPE        BOOLE_D* | [<---] EV_SELECTED_LINES_CHANGED      TYPE        BOOLE_D* | [<---] EV_DND_ATTR_CHANGED            TYPE        BOOLE_D* | [<---] EO_ITAB_CHANGE_LOG             TYPE REF TO IF_SALV_ITAB_CHANGE_LOG* | [<-->] CT_DATA                        TYPE        DATA* | [<-->] CT_FIELD_USAGE                 TYPE        FPMGB_T_FIELDUSAGE* | [<-->] CT_ACTION_USAGE                TYPE        FPMGB_T_ACTIONUSAGE* | [<-->] CT_SELECTED_LINES              TYPE        RSTABIXTAB* | [<-->] CV_LEAD_INDEX                  TYPE        SYTABIX* | [<-->] CV_FIRST_VISIBLE_ROW           TYPE        I* | [<-->] CS_ADDITIONAL_INFO             TYPE        FPMGB_S_ADDITIONAL_INFO(optional)* | [<-->] CT_DND_ATTRIBUTES              TYPE        FPMGB_T_DND_DEFINITION(optional)* +--------------------------------------------------------------------------------------</SIGNATURE>method IF_FPM_GUIBB_LIST~GET_DATA.*  if iv_eventid->mv_event_id = 'FPM_START'.**    ev_data_changed = abap_true.**    ct_data = mt_SCARR.

36

Page 37: fpm_1

Integrata - Floor-Plan-Manager - Grundlagen - Seite

**  endif.  if iv_eventid->mv_event_id = 'FPM_EXECUTE_SEARCH'.

    ct_data = ZCL_SCARR_SEARCH_UIBB_XX=>mt_SCARR.

*    ct_data = mt_SCARR.

    ev_data_changed = abap_true.

  endif.endmethod.

* <SIGNATURE>---------------------------------------------------------------------------------------+* | Instance Public Method ZCL_ZSCARR_LIST_99->IF_FPM_GUIBB_LIST~GET_DEFAULT_CONFIG* +-------------------------------------------------------------------------------------------------+* | [--->] IO_LAYOUT_CONFIG               TYPE REF TO IF_FPM_GUIBB_LIST_CONFIG* +--------------------------------------------------------------------------------------</SIGNATURE>method IF_FPM_GUIBB_LIST~GET_DEFAULT_CONFIG.endmethod.

* <SIGNATURE>---------------------------------------------------------------------------------------+* | Instance Public Method ZCL_ZSCARR_LIST_99->IF_FPM_GUIBB_LIST~GET_DEFINITION* +-------------------------------------------------------------------------------------------------+* | [<---] EO_FIELD_CATALOG               TYPE REF TO CL_ABAP_TABLEDESCR* | [<---] ET_FIELD_DESCRIPTION           TYPE        FPMGB_T_LISTFIELD_DESCR* | [<---] ET_ACTION_DEFINITION           TYPE        FPMGB_T_ACTIONDEF* | [<---] ET_SPECIAL_GROUPS              TYPE        FPMGB_T_SPECIAL_GROUPS* | [<---] ES_MESSAGE                     TYPE        FPMGB_S_T100_MESSAGE* | [<---] EV_ADDITIONAL_ERROR_INFO       TYPE        DOKU_OBJ* | [<---] ET_DND_DEFINITION              TYPE        FPMGB_T_DND_DEFINITION* | [<---] ET_ROW_ACTIONS                 TYPE        FPMGB_T_ROW_ACTION* | [<---] ES_OPTIONS                     TYPE        FPMGB_S_LIST_OPTIONS* +--------------------------------------------------------------------------------------</SIGNATURE>method IF_FPM_GUIBB_LIST~GET_DEFINITION.*  field catalog - Table columns

  eo_field_catalog ?= cl_abap_tabledescr=>describe_by_data( mt_SCARR ).endmethod.

* <SIGNATURE>---------------------------------------------------------------------------------------+* | Instance Public Method ZCL_ZSCARR_LIST_99->IF_FPM_GUIBB_LIST~PROCESS_EVENT* +-------------------------------------------------------------------------------------------------+* | [--->] IO_EVENT                       TYPE REF TO CL_FPM_EVENT

37

Page 38: fpm_1

Integrata - Floor-Plan-Manager - Grundlagen - Seite

* | [--->] IV_RAISED_BY_OWN_UI            TYPE        BOOLE_D(optional)* | [--->] IV_LEAD_INDEX                  TYPE        SYTABIX* | [--->] IV_EVENT_INDEX                 TYPE        SYTABIX* | [--->] IT_SELECTED_LINES              TYPE        RSTABIXTAB* | [--->] IO_UI_INFO                     TYPE REF TO IF_FPM_LIST_ATS_UI_INFO(optional)* | [<---] EV_RESULT                      TYPE        FPM_EVENT_RESULT* | [<---] ET_MESSAGES                    TYPE        FPMGB_T_MESSAGES* +--------------------------------------------------------------------------------------</SIGNATURE>method IF_FPM_GUIBB_LIST~PROCESS_EVENT.   data ls_makt type makt.  if io_event->mv_event_id = 'FPM_GUIBB_LIST_ON_LEAD_SELECTI'.

    read table mt_scarr into ms_scarr index iv_lead_index.  endif.endmethod.

* <SIGNATURE>---------------------------------------------------------------------------------------+* | Instance Public Method ZCL_ZSCARR_LIST_99->IF_FPM_GUIBB~GET_PARAMETER_LIST* +-------------------------------------------------------------------------------------------------+* | [<-()] RT_PARAMETER_DESCR             TYPE        FPMGB_T_PARAM_DESCR* +--------------------------------------------------------------------------------------</SIGNATURE>method IF_FPM_GUIBB~GET_PARAMETER_LIST.endmethod.

* <SIGNATURE>---------------------------------------------------------------------------------------+* | Instance Public Method ZCL_ZSCARR_LIST_99->IF_FPM_GUIBB~INITIALIZE* +-------------------------------------------------------------------------------------------------+* | [--->] IT_PARAMETER                   TYPE        FPMGB_T_PARAM_VALUE* | [--->] IO_APP_PARAMETER               TYPE REF TO IF_FPM_PARAMETER(optional)* | [--->] IV_COMPONENT_NAME              TYPE        FPM_COMPONENT_NAME(optional)* | [--->] IS_CONFIG_KEY                  TYPE        WDY_CONFIG_KEY(optional)* | [--->] IV_INSTANCE_ID                 TYPE        FPM_INSTANCE_ID(optional)* +--------------------------------------------------------------------------------------</SIGNATURE>method IF_FPM_GUIBB~INITIALIZE.  select * from SCARR into table mt_SCARR up to 10 rows.endmethod.ENDCLASS.

38

Page 39: fpm_1

Integrata - Floor-Plan-Manager - Grundlagen - Seite

Zur Anwendung die Konfiguration anlegen

application configuration name eingeben  “ZCL_LIST_GUIBB_XXX”.

Konfigurations-ID : ZCL_LIST_GUIBB_XXX_ID anlegen

39

Page 40: fpm_1

Integrata - Floor-Plan-Manager - Grundlagen - Seite 40

Page 41: fpm_1

Integrata - Floor-Plan-Manager - Grundlagen - Seite

Aktion : UIBB Konfigurieren

Aktion : anlagen

41

Page 42: fpm_1

Integrata - Floor-Plan-Manager - Grundlagen - Seite

Aktion : Parameter bearbeiten

Aktion : OK

Aktion : Spalten konfigurieren + Testen

Aktion : Alles auswählen + Spalten hinzufügen

Sichern und testen

10. Definieren Sie einen FPM FORM Generic User Interface Building Block

Rufen Sie SE24 auf

Name der Klasse : ZCL_UIBB_FORM als lokales Objekt anlegen====================================================================================class zcl_zscarr_form_99 definition  public  final  create public .

  public section.

42

Page 43: fpm_1

Integrata - Floor-Plan-Manager - Grundlagen - Seite

    interfaces if_fpm_guibb .    interfaces if_fpm_guibb_form .

    data mo_search type ref to zcl_zscarr_list_99 .  protected section.  private section.ENDCLASS.

CLASS ZCL_ZSCARR_FORM_99 IMPLEMENTATION.

* <SIGNATURE>---------------------------------------------------------------------------------------+* | Instance Public Method ZCL_ZSCARR_FORM_99->IF_FPM_GUIBB_FORM~CHECK_CONFIG* +-------------------------------------------------------------------------------------------------+* | [--->] IO_LAYOUT_CONFIG               TYPE REF TO IF_FPM_GUIBB_FORM_CONFIG* | [--->] IO_LAYOUT_CONFIG_GL2           TYPE REF TO IF_FPM_GUIBB_FORM_CFG_GL2(optional)* | [<---] ET_MESSAGES                    TYPE        FPMGB_T_MESSAGES* +--------------------------------------------------------------------------------------</SIGNATURE>  method if_fpm_guibb_form~check_config.  endmethod.                    "IF_FPM_GUIBB_FORM~CHECK_CONFIG

* <SIGNATURE>---------------------------------------------------------------------------------------+* | Instance Public Method ZCL_ZSCARR_FORM_99->IF_FPM_GUIBB_FORM~FLUSH* +-------------------------------------------------------------------------------------------------+* | [--->] IT_CHANGE_LOG                  TYPE        FPMGB_T_CHANGELOG* | [--->] IS_DATA                        TYPE REF TO DATA* +--------------------------------------------------------------------------------------</SIGNATURE>  method if_fpm_guibb_form~flush.  endmethod.                    "IF_FPM_GUIBB_FORM~FLUSH

* <SIGNATURE>---------------------------------------------------------------------------------------+* | Instance Public Method ZCL_ZSCARR_FORM_99->IF_FPM_GUIBB_FORM~GET_DATA* +-------------------------------------------------------------------------------------------------+* | [--->] IO_EVENT                       TYPE REF TO CL_FPM_EVENT* | [--->] IT_SELECTED_FIELDS             TYPE        FPMGB_T_SELECTED_FIELDS(optional)* | [--->] IV_RAISED_BY_OWN_UI            TYPE        BOOLE_D(optional)* | [--->] IV_EDIT_MODE                   TYPE        FPM_EDIT_MODE(optional)* | [<---] ET_MESSAGES                    TYPE        FPMGB_T_MESSAGES* | [<---] EV_DATA_CHANGED                TYPE        BOOLE_D* | [<---] EV_FIELD_USAGE_CHANGED         TYPE        BOOLE_D* | [<---] EV_ACTION_USAGE_CHANGED        TYPE        BOOLE_D* | [<-->] CS_DATA                        TYPE        DATA* | [<-->] CT_FIELD_USAGE                 TYPE        FPMGB_T_FIELDUSAGE* | [<-->] CT_ACTION_USAGE                TYPE        FPMGB_T_ACTIONUSAGE

43

Page 44: fpm_1

Integrata - Floor-Plan-Manager - Grundlagen - Seite

* +--------------------------------------------------------------------------------------</SIGNATURE>  method if_fpm_guibb_form~get_data.    data wa type zscarr_00.    ev_data_changed = abap_true.   if io_event->mv_event_id  = 'FPM_EXECUTE_SEARCH'.

      cs_data = zcl_zscarr_list_99=>ms_scarr.

*    ct_data = mt_SCARR.

      ev_data_changed = abap_true.

    else.      select single * from zscarr_00 into wa where carrid = 'AA'.        cs_data = wa.      endif.    endmethod.                    "if_fpm_guibb_form~get_data

* <SIGNATURE>---------------------------------------------------------------------------------------+* | Instance Public Method ZCL_ZSCARR_FORM_99->IF_FPM_GUIBB_FORM~GET_DEFAULT_CONFIG* +-------------------------------------------------------------------------------------------------+* | [--->] IO_LAYOUT_CONFIG               TYPE REF TO IF_FPM_GUIBB_FORM_CONFIG* | [--->] IO_LAYOUT_CONFIG_GL2           TYPE REF TO IF_FPM_GUIBB_FORM_CFG_GL2(optional)* +--------------------------------------------------------------------------------------</SIGNATURE>    method if_fpm_guibb_form~get_default_config.    endmethod.                    "IF_FPM_GUIBB_FORM~GET_DEFAULT_CONFIG

* <SIGNATURE>---------------------------------------------------------------------------------------+* | Instance Public Method ZCL_ZSCARR_FORM_99->IF_FPM_GUIBB_FORM~GET_DEFINITION* +-------------------------------------------------------------------------------------------------+* | [<---] ES_MESSAGE                     TYPE        FPMGB_S_T100_MESSAGE* | [<---] EO_FIELD_CATALOG               TYPE REF TO CL_ABAP_STRUCTDESCR* | [<---] ET_FIELD_DESCRIPTION           TYPE        FPMGB_T_FORMFIELD_DESCR* | [<---] ET_ACTION_DEFINITION           TYPE        FPMGB_T_ACTIONDEF* | [<---] ET_SPECIAL_GROUPS              TYPE        FPMGB_T_SPECIAL_GROUPS* | [<---] EV_ADDITIONAL_ERROR_INFO       TYPE        DOKU_OBJ* | [<---] ET_DND_DEFINITION              TYPE        FPMGB_T_DND_DEFINITION* +--------------------------------------------------------------------------------------</SIGNATURE>    method if_fpm_guibb_form~get_definition.      data: li_action_line    type fpmgb_s_actiondef.      eo_field_catalog ?= cl_abap_tabledescr=>describe_by_name( 'SCARR' ).

    endmethod.                    "IF_FPM_GUIBB_FORM~GET_DEFINITION

* <SIGNATURE>--------------------------------------------------------------

44

Page 45: fpm_1

Integrata - Floor-Plan-Manager - Grundlagen - Seite

-------------------------+* | Instance Public Method ZCL_ZSCARR_FORM_99->IF_FPM_GUIBB_FORM~PROCESS_EVENT* +-------------------------------------------------------------------------------------------------+* | [--->] IO_EVENT                       TYPE REF TO CL_FPM_EVENT* | [--->] IV_RAISED_BY_OWN_UI            TYPE        BOOLE_D(optional)* | [<---] EV_RESULT                      TYPE        FPM_EVENT_RESULT* | [<---] ET_MESSAGES                    TYPE        FPMGB_T_MESSAGES* +--------------------------------------------------------------------------------------</SIGNATURE>    method if_fpm_guibb_form~process_event.    endmethod.                    "IF_FPM_GUIBB_FORM~PROCESS_EVENT

* <SIGNATURE>---------------------------------------------------------------------------------------+* | Instance Public Method ZCL_ZSCARR_FORM_99->IF_FPM_GUIBB~GET_PARAMETER_LIST* +-------------------------------------------------------------------------------------------------+* | [<-()] RT_PARAMETER_DESCR             TYPE        FPMGB_T_PARAM_DESCR* +--------------------------------------------------------------------------------------</SIGNATURE>    method if_fpm_guibb~get_parameter_list.    endmethod.                    "IF_FPM_GUIBB~GET_PARAMETER_LIST

* <SIGNATURE>---------------------------------------------------------------------------------------+* | Instance Public Method ZCL_ZSCARR_FORM_99->IF_FPM_GUIBB~INITIALIZE* +-------------------------------------------------------------------------------------------------+* | [--->] IT_PARAMETER                   TYPE        FPMGB_T_PARAM_VALUE* | [--->] IO_APP_PARAMETER               TYPE REF TO IF_FPM_PARAMETER(optional)* | [--->] IV_COMPONENT_NAME              TYPE        FPM_COMPONENT_NAME(optional)* | [--->] IS_CONFIG_KEY                  TYPE        WDY_CONFIG_KEY(optional)* | [--->] IV_INSTANCE_ID                 TYPE        FPM_INSTANCE_ID(optional)* +--------------------------------------------------------------------------------------</SIGNATURE>    method if_fpm_guibb~initialize.    endmethod.                    "IF_FPM_GUIBB~INITIALIZEENDCLASS. ==================================================================

Konfiguration zur Komponent : FPM_FORM_UIBB anlegen

45

Page 46: fpm_1

Integrata - Floor-Plan-Manager - Grundlagen - Seite 46