Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.


Auto-Generated Forms

Forms can be configured so that instances of the Form can be generated automatically based on some programmed logic. For example, all open work-items of a particular type can be scanned for and an auto-generated Form created and sent to particular users, based on data associated with the work-item.

...

  1. configuring which Forms should be auto-generated,
  2. scheduling a job to process the Forms
  3. implement logic for selecting the basis for each Form (ie each instance of Form based on what?)
  4. implement logic for selecting data for each instance (Form contents for each instance)


Configure any Forms to be generated automatically via /IQX/CONFIG - >Auto-Generated Forms


Schedule /IQX/FAB_AUTO_GENERATE_FORM

Create a variant for the Form and schedule it as desired, or execute immediately.

...

FAB_DEMO_APPROVE_NOTIF     

Implement

Via the Implementation Class of the Form/App, implement methods:

...

AUTO_GENERATED_FORM_CREATE


AUTO_GENERATED_FORMS_SELECT

In this method, write the logic for selecting the data that is the basis of the auto-generated forms.

...

*   Example 2 - retrieve open workflows of a particular type
    DATA: lt_work_items TYPE STANDARD TABLE OF swwwihead,
          ls_work_items LIKE LINE OF lt_work_items,
          lt_wi_agent TYPE STANDARD TABLE OF swwuserwi.

    SELECT * FROM swwwihead INTO TABLE lt_work_items
      WHERE wi_rh_task = 'TS98100231'                   "example demo workflow WS98100290, task TS98100231
        AND wi_stat = 'READY'.

*   keep only those with agents
    IF lt_work_items IS NOT INITIAL.

      SELECT *
        FROM  swwuserwi
        INTO TABLE lt_wi_agent
        FOR ALL ENTRIES IN lt_work_items
        WHERE wi_id     = lt_work_items-wi_id
           AND no_sel    = space.

      SORT lt_wi_agent BY wi_id.
      DELETE ADJACENT DUPLICATES FROM lt_wi_agent COMPARING wi_id.

      LOOP AT lt_work_items INTO ls_work_items.
        READ TABLE lt_wi_agent WITH KEY wi_id = ls_work_items-wi_id BINARY SEARCH TRANSPORTING NO FIELDS.
        IF sy-subrc = 0.

          ls_keys-zkey 'WorkitemId'.
          ls_keys
-zvalue ls_work_items-wi_id.
          
APPEND ls_keys TO et_keys.


        ENDIF.
      ENDLOOP.
    ENDIF.

AUTO_GENERATED_FORM_CREATE

In this method, we

  1. write the logic for selecting the actual data for each Form that will be generated (based on the key,value pairs generated via AUTO_GENERATED_FORM_SELECT )
  2. Set a starting Action in EV_ACTION (such as GENERATE or SAVE).

...

     WHEN 'WorkitemId'.

        " given key - WorkitemId        "get Notification from workflow container
        DATA: lv_wi_id TYPE sww_wiid,
              ls_object TYPE swr_obj_2.

        lv_wi_id = iv_key_value.

        CALL FUNCTION 'SAP_WAPI_GET_OBJECTS'
          EXPORTING
            workitem_id      = lv_wi_id
*           LANGUAGE         = SY-LANGU
*           USER             = SY-UNAME
*           BUFFERED_ACCESS  = 'X'
          IMPORTING
*           LEADING_OBJECT   =
*           RETURN_CODE      =
            leading_object_2 = ls_object
*           TABLES
*           OBJECTS          =
*           MESSAGE_LINES    =
*           MESSAGE_STRUCT   =
*           OBJECTS_2        =
          .

        lv_qmnum = ls_object-instid.

        IF lv_qmnum IS NOT INITIAL.

          CALL FUNCTION 'BAPI_ALM_NOTIF_GET_DETAIL'
            EXPORTING
              number             = lv_qmnum
            IMPORTING
              notifheader_export = ls_notifheader_export
              notifhdtext        = ls_notifhdtext.

        ENDIF.


 "      set workitem id into Form
        set_field 'WorkitemId' iv_key_value.


    ENDCASE.

    "set fields from Notification into Form

    set_field 'NotificationNumber' lv_qmnum.
    set_field 'Description' ls_notifheader_export-short_text.
    set_field 'NotificationNumber' lv_qmnum.
    set_field 'LocationDescription' ls_notifhdtext-funcldescr.
    set_field 'EquipmentDescription' ls_notifhdtext-equidescr.
    set_field 'StartDate' ls_notifheader_export-notif_date.


    ev_action = 'GENERATE'.

Filter by label
showLabelsfalse
max5
spacescom.atlassian.confluence.content.render.xhtml.model.resource.identifiers.SpaceResourceIdentifier@223dfe
showSpacefalse
sorttitle
typepage
cqllabel = "configurations" and type = "page" and space = "IFAB"
labelskb-how-to-article

...