63
SAP COMMUNITY NETWORK SDN - sdn.sap.com | BPX - bpx.sap.com | BOC - boc.sap.com © 2009 SAP AG 1 Enhanced Decision Process Type for BW Process Chains Applies to: SAP BI 7.0 and above . For more information, visit the Business Intelligence homepage . Summary BW process chains can be made more flexible and intelligent using DECISION process type to evaluate between different alternatives. Since formula is used in this process the decision making capability is very limited. Enhanced decision uses forms instead of formulas and hence more flexible. Author: Hemant Kumar Vyas Company: Infosys Technologies Limited Created on: 01 December 2009 Author Bio Hemant Kumar Vyas has been working for Infosys technologies limited for past 2.5 years and has experience in SAP BI 7.0 implementations.

Enhanced Decision Process Type for BW Process Chains · Enhanced Decision Process Type for BW Process Chains ... Infosys Technologies Limited ... Enhanced Decision process type

  • Upload
    doque

  • View
    232

  • Download
    5

Embed Size (px)

Citation preview

SAP COMMUNITY NETWORK SDN - sdn.sap.com | BPX - bpx.sap.com | BOC - boc.sap.com

© 2009 SAP AG 1

Enhanced Decision Process Type

for BW Process Chains

Applies to:

SAP BI 7.0 and above . For more information, visit the Business Intelligence homepage.

Summary

BW process chains can be made more flexible and intelligent using DECISION process type to evaluate between different alternatives. Since formula is used in this process the decision making capability is very limited. Enhanced decision uses forms instead of formulas and hence more flexible.

Author: Hemant Kumar Vyas

Company: Infosys Technologies Limited

Created on: 01 December 2009

Author Bio

Hemant Kumar Vyas has been working for Infosys technologies limited for past 2.5 years and has experience in SAP BI 7.0 implementations.

Enhanced Decision Process Type for BW Process Chains

SAP COMMUNITY NETWORK SDN - sdn.sap.com

© 2009 SAP AG 2

Table of Contents

Decision process type in BW process chains ..................................................................................................... 3

Enhanced Decision process type .................................................................................................................... 3 Creation of structures ................................................................................................................................................... 4

Program ZRSPC_DECISION ....................................................................................................................................... 7

Class ZCL_RSPC_DECISION ................................................................................................................................... 39

Adding new process type to process type view .......................................................................................................... 56

Start using the new process type ............................................................................................................................... 57

Start using the new process type ............................................................................................................................... 61

Related Contetns .............................................................................................................................................. 62

xbiCopyright ...................................................................................................................................................... 62

Copyright............................................................................................................ Error! Bookmark not defined.

Enhanced Decision Process Type for BW Process Chains

SAP COMMUNITY NETWORK SDN - sdn.sap.com

© 2009 SAP AG 3

Decision process type in BW process chains

A process which is available in general services category in process types can be used to decide intelligently among multiple alternatives. This process type uses formula for the logic and evaluates it at runtime to decide the course of action. Since formula is used the decision making capability is very limited. In this process type following limitations are experienced

Available fields do not fulfill most common requirements.

Decision based on certain status of table, on availability of particular file or a complex logic of dates can not be made on basis of formula, or it can become too complex.

Use of formula imposes restrictions on the information which can be passed across the process chains (by setting global variables or table fields) and to decide whether to take particular action or not.

Enhanced Decision process type

Decision process can be enhanced if we are able to remove restrictions imposed by use of formula. These forms are embedded in ABAP programs and as a result of evaluation should return Boolean true or false based on logic.

Creating a process type requires a class which extends standard interfaces to be used by overall process chain framework. Additionally a maintenance screen is also to be provided by the process type since we can not use the SAP delivered screen. This article will give step by step method to implement class and maintenance program for the process type.

Enhanced Decision Process Type for BW Process Chains

SAP COMMUNITY NETWORK SDN - sdn.sap.com

© 2009 SAP AG 4

Creation of structure of decision grid (It specifies the format in which any line of the process will appear)

Creation of class ZCL_RSPC_DECISION.

Creation of maintenance program ZRSPC_DECISION.

Adding this new process type to process views, after which it can be usable in process chain.

Creation of structures

o Start transaction SE11

o Select ‘data type’ and give the name as ‘ZRSPC_S_DECISION’

Press ‘create’ and when asked the type, select ‘structure’

Give the field names and component type as shown

Enhanced Decision Process Type for BW Process Chains

SAP COMMUNITY NETWORK SDN - sdn.sap.com

© 2009 SAP AG 5

Save and activate.

Start transaction SE11

Select data type and give name as ‘ZRSPC_T_DECISION’

Press ‘create’ and when asked the type, select ‘table type’

Enhanced Decision Process Type for BW Process Chains

SAP COMMUNITY NETWORK SDN - sdn.sap.com

© 2009 SAP AG 6

Give line type as ‘ZRSPC_S_DECISION’

Enhanced Decision Process Type for BW Process Chains

SAP COMMUNITY NETWORK SDN - sdn.sap.com

© 2009 SAP AG 7

Program ZRSPC_DECISION

To save time we will copy the existing function group RSPC_PROCESSES and modify it to suit our needs.

Start transaction SE38

Give the program name as SAPLRSPC_PROCESSES.

Click on ‘copy program’ button on toolbar or hit CTRL+F5.

Give the new program name as ZRSPC_DECISION

When prompted to copy function modules, deselect all.

After copying the program RSPC_PROCESSES follow the instructions given below. 1. Create include program ZINCLUDE_FORM_DEC. (SE38 program type select Include program). Add

the following code

*&---------------------------------------------------------------------*

*& Include ZINCLUDE_FORM_DEC

*&---------------------------------------------------------------------*

*---------------------------------------------------------------------*

* CLASS lcl_decision_dd DEFINITION

*---------------------------------------------------------------------*

*

*---------------------------------------------------------------------*

CLASS lcl_decision_dd DEFINITION.

PUBLIC SECTION.

DATA: p_s_decision TYPE zrspc_s_decision,

p_row TYPE lvc_index.

ENDCLASS. "lcl_decision_dd DEFINITION

*---------------------------------------------------------------------*

* CLASS lcl_decision DEFINITION

*---------------------------------------------------------------------*

*

*---------------------------------------------------------------------*

Enhanced Decision Process Type for BW Process Chains

SAP COMMUNITY NETWORK SDN - sdn.sap.com

© 2009 SAP AG 8

CLASS lcl_decision DEFINITION.

PUBLIC SECTION.

METHODS:

handle_double_click

FOR EVENT double_click

OF cl_gui_alv_grid

IMPORTING e_row.

METHODS:

on_f4

FOR EVENT onf4

OF cl_gui_alv_grid

IMPORTING e_fieldname

es_row_no

er_event_data

et_bad_cells

e_display.

METHODS:

handle_data_changed

FOR EVENT data_changed

OF cl_gui_alv_grid

IMPORTING er_data_changed

e_onf4 e_onf4_before e_onf4_after.

METHODS:

on_hotspot

FOR EVENT hotspot_click

OF cl_gui_alv_grid

IMPORTING e_row_id.

METHODS:

handle_toolbar

FOR EVENT toolbar

OF cl_gui_alv_grid

IMPORTING e_object e_interactive.

METHODS:

handle_user_command

FOR EVENT user_command

OF cl_gui_alv_grid

IMPORTING e_ucomm.

METHODS:

handle_alv_drag

FOR EVENT ondrag

OF cl_gui_alv_grid

IMPORTING e_row e_column e_dragdropobj,

handle_alv_drop

FOR EVENT ondrop

OF cl_gui_alv_grid

IMPORTING e_row e_column e_dragdropobj.

METHODS:

displaymode_toggle,

Enhanced Decision Process Type for BW Process Chains

SAP COMMUNITY NETWORK SDN - sdn.sap.com

© 2009 SAP AG 9

displaymode_set

IMPORTING i_display_only TYPE rs_bool.

PRIVATE SECTION.

DATA: p_display_only TYPE rs_bool.

ENDCLASS. "lcl_decision DEFINITION

*---------------------------------------------------------------------*

* CLASS lcl_decision IMPLEMENTATION

*---------------------------------------------------------------------*

*

*---------------------------------------------------------------------*

CLASS lcl_decision IMPLEMENTATION.

* ======================

* ==== Display mode ====

* ======================

METHOD displaymode_toggle.

IF p_display_only = 'X'.

CLEAR p_display_only.

ELSE.

p_display_only = 'X'.

ENDIF.

ENDMETHOD. "displaymode_toggle

METHOD displaymode_set.

p_display_only = i_display_only.

ENDMETHOD. "displaymode_set

* ======================

* ==== Double Click ====

* ======================

METHOD handle_double_click.

ENDMETHOD. "lcl_decision

* ============

* ==== F4 ====

* ============

METHOD on_f4.

DATA: l_t_exclude TYPE slis_t_extab,

l_s_exclude TYPE slis_extab,

l_t_f4 TYPE TABLE OF rspc_s_eventtext_f4,

l_s_f4 TYPE rspc_s_eventtext_f4,

l_s_selected TYPE slis_selfield,

l_exit TYPE rs_bool,

l_t_decision TYPE zrspc_t_decision,

l_s_decision TYPE zrspc_s_decision,

l_count TYPE i,

l_max TYPE i.

DATA: ls_modi TYPE lvc_s_modi.

CHECK p_display_only IS INITIAL.

Enhanced Decision Process Type for BW Process Chains

SAP COMMUNITY NETWORK SDN - sdn.sap.com

© 2009 SAP AG 10

l_t_decision = g_t_decision.

SORT l_t_decision BY eventno DESCENDING.

READ TABLE l_t_decision INTO l_s_decision INDEX 1.

l_max = l_s_decision-eventno + 1.

l_count = 1.

WHILE l_count LE l_max.

l_s_f4-eventcolor = 'G'.

l_s_f4-eventno = l_count.

CONCATENATE text-017 l_s_f4-eventno

INTO l_s_f4-eventtext

SEPARATED BY space.

CALL FUNCTION 'RSPC_GET_EVENT_ICON'

EXPORTING

i_eventno = l_s_f4-eventno

IMPORTING

e_icon = l_s_f4-eventicon.

APPEND l_s_f4 TO l_t_f4.

ADD 1 TO l_count.

ENDWHILE.

l_s_f4-eventcolor = 'R'.

CLEAR l_s_f4-eventno.

l_s_f4-eventtext = text-016.

l_s_f4-eventicon = '@5C@'.

APPEND l_s_f4 TO l_t_f4.

l_s_exclude-fcode = '&OL0'.

APPEND l_s_exclude TO l_t_exclude.

CALL FUNCTION 'REUSE_ALV_POPUP_TO_SELECT'

EXPORTING

i_title = text-027

i_tabname = 'L_T_F4'

i_structure_name = 'RSPC_S_EVENTTEXT_F4'

i_screen_start_column = 60

i_screen_start_line = 10

i_screen_end_column = 80

i_screen_end_line = 18

it_excluding = l_t_exclude

IMPORTING

es_selfield = l_s_selected

e_exit = l_exit

TABLES

t_outtab = l_t_f4

EXCEPTIONS

program_error = 1

OTHERS = 2.

IF sy-subrc <> 0.

MESSAGE ID sy-msgid TYPE 'I' NUMBER sy-msgno

WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.

ENDIF.

IF l_exit = rs_c_true.

MESSAGE ID 'RSM' TYPE 'S' NUMBER '213'.

ENDIF.

IF NOT l_s_selected IS INITIAL.

READ TABLE l_t_f4 INTO l_s_f4

INDEX l_s_selected-tabindex.

READ TABLE g_t_decision INTO l_s_decision INDEX es_row_no-row_id.

MOVE-CORRESPONDING l_s_f4 TO l_s_decision.

Enhanced Decision Process Type for BW Process Chains

SAP COMMUNITY NETWORK SDN - sdn.sap.com

© 2009 SAP AG 11

MODIFY g_t_decision FROM l_s_decision INDEX es_row_no-row_id.

ENDIF.

CALL METHOD g_decision_grid->refresh_table_display

EXCEPTIONS

finished = 1

OTHERS = 2.

IF sy-subrc <> 0.

MESSAGE ID sy-msgid TYPE 'I' NUMBER sy-msgno

WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.

ENDIF.

er_event_data->m_event_handled = 'X'.

ENDMETHOD. "lcl_decision

* ======================

* ==== Data Changed ====

* ======================

METHOD handle_data_changed.

ENDMETHOD. "lcl_decision

* =================

* ==== Hotspot ====

* =================

METHOD on_hotspot.

DATA: l_s_decision TYPE zrspc_s_decision,

l_t_fields TYPE rsfob_t_fields,

l_s_fields TYPE rsfob_s_fields,

l_mode TYPE rsfob_mode,

l_txtlg TYPE rstxtlg,

l_t_formex TYPE rsfob_t_formex,

l_answer TYPE c,

operation(4) TYPE C.

clear: l_uniqueid, onhp_l_t_repid, onhp_e_repid ,onhp_code, onhp_lt_code.

READ TABLE g_t_decision INTO l_s_decision INDEX e_row_id.

IF l_s_decision-button IS INITIAL.

EXIT.

ENDIF.

* IF NOT g_r_formulas IS BOUND.

* CREATE OBJECT g_r_formulas.

* ENDIF.

IF l_s_decision-button = '@11@'.

CHECK p_display_only IS INITIAL.

* ==== Delete Formula ====

APPEND l_s_decision-form TO onhp_l_t_repid.

IF NOT onhp_l_t_repid IS INITIAL.

CALL FUNCTION 'POPUP_TO_CONFIRM'

EXPORTING

titlebar = text-032

text_question = text-031

default_button = '2'

display_cancel_button = ' '

popup_type = 'ICON_MESSAGE_WARNING'

IMPORTING

answer = l_answer

EXCEPTIONS

Enhanced Decision Process Type for BW Process Chains

SAP COMMUNITY NETWORK SDN - sdn.sap.com

© 2009 SAP AG 12

text_not_found = 1

OTHERS = 2.

IF sy-subrc <> 0.

MESSAGE ID sy-msgid TYPE 'I' NUMBER sy-msgno

WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.

ENDIF.

IF l_answer = '1'.

loop at onhp_l_t_repid into onhp_e_repid.

delete report onhp_e_repid.

endloop.

CLEAR l_s_decision-form.

ENDIF.

ENDIF.

ELSE.

* ==== Form ====

zcl_rspc_decision=>p_variant = g_variant.

IF l_s_decision-form IS INITIAL.

l_mode = 1.

operation = 'ADD '.

ELSE.

IF p_display_only = 'X'.

l_mode = 3.

operation = 'SHOW'.

ELSE.

l_mode = 2.

operation = 'ADD '.

ENDIF.

ENDIF.

l_txtlg = l_s_decision-description.

if l_mode = 1. "form does not exist create a new form

CALL FUNCTION 'RSS_SYSTEM_GET_UNIQUE_ID' "get unique id

IMPORTING

e_uni_idc25 = l_uniqueid

EXCEPTIONS

OTHERS = 1.

IF sy-subrc <> 0.

EXIT.

ENDIF.

l_uniqueid+0(1) = 'Z'.

concatenate 'report' l_uniqueid '.' into onhp_code separated by space.

append onhp_code to onhp_lt_code.

clear onhp_code.

onhp_code = 'form evaluate changing p_return type bool. "should return

boolean value'.

append onhp_code to onhp_lt_code.

clear onhp_code.

onhp_code = 'endform.'.

append onhp_code to onhp_lt_code.

insert report l_uniqueid from onhp_lt_code.

else.

l_uniqueid = l_s_decision-form.

endif.

CALL FUNCTION 'RS_TOOL_ACCESS'

EXPORTING

OPERATION = 'SHOW'

Enhanced Decision Process Type for BW Process Chains

SAP COMMUNITY NETWORK SDN - sdn.sap.com

© 2009 SAP AG 13

OBJECT_NAME = 'evaluate'

OBJECT_TYPE = 'PROG_FORM'

ENCLOSING_OBJECT = l_uniqueid

* TABLES

* OBJLIST = fu_objlist

EXCEPTIONS

NOT_EXECUTED = 1

INVALID_OBJECT_TYPE = 2

OTHERS = 3.

IF SY-SUBRC <> 0.

MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

if l_mode = 1. "new form is created

l_s_decision-form = l_uniqueid.

endif.

ENDIF.

* ==== Refresh table and display ====

MODIFY g_t_decision FROM l_s_decision INDEX e_row_id.

PERFORM decision_fill_lines

CHANGING

g_t_decision.

CALL METHOD g_decision_grid->refresh_table_display

EXCEPTIONS

finished = 1

OTHERS = 2.

IF sy-subrc <> 0.

MESSAGE ID sy-msgid TYPE 'I' NUMBER sy-msgno

WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.

ENDIF.

ENDMETHOD. "lcl_decision

* =======================

* ==== Build Toolbar ====

* =======================

METHOD handle_toolbar.

DATA: ls_toolbar TYPE stb_button.

CLEAR ls_toolbar.

MOVE 'APPEND' TO ls_toolbar-function.

MOVE icon_create TO ls_toolbar-icon.

MOVE text-023 TO ls_toolbar-quickinfo.

* MOVE text-023 TO ls_toolbar-text.

MOVE ' ' TO ls_toolbar-disabled.

APPEND ls_toolbar TO e_object->mt_toolbar.

CLEAR ls_toolbar.

MOVE 'INSERT' TO ls_toolbar-function.

MOVE icon_insert_row TO ls_toolbar-icon.

MOVE text-024 TO ls_toolbar-quickinfo.

* MOVE text-024 TO ls_toolbar-text.

MOVE ' ' TO ls_toolbar-disabled.

APPEND ls_toolbar TO e_object->mt_toolbar.

CLEAR ls_toolbar.

Enhanced Decision Process Type for BW Process Chains

SAP COMMUNITY NETWORK SDN - sdn.sap.com

© 2009 SAP AG 14

MOVE 'DELETE' TO ls_toolbar-function.

MOVE icon_delete_row TO ls_toolbar-icon.

MOVE text-025 TO ls_toolbar-quickinfo.

* MOVE text-025 TO ls_toolbar-text.

MOVE ' ' TO ls_toolbar-disabled.

APPEND ls_toolbar TO e_object->mt_toolbar.

CLEAR ls_toolbar.

MOVE 3 TO ls_toolbar-butn_type.

APPEND ls_toolbar TO e_object->mt_toolbar.

CLEAR ls_toolbar.

MOVE 'UP' TO ls_toolbar-function.

MOVE icon_next_value TO ls_toolbar-icon.

MOVE text-028 TO ls_toolbar-quickinfo.

* MOVE text-025 TO ls_toolbar-text.

MOVE ' ' TO ls_toolbar-disabled.

APPEND ls_toolbar TO e_object->mt_toolbar.

CLEAR ls_toolbar.

MOVE 'DOWN' TO ls_toolbar-function.

MOVE icon_previous_value TO ls_toolbar-icon.

MOVE text-029 TO ls_toolbar-quickinfo.

* MOVE text-025 TO ls_toolbar-text.

MOVE ' ' TO ls_toolbar-disabled.

APPEND ls_toolbar TO e_object->mt_toolbar.

CLEAR ls_toolbar.

MOVE 3 TO ls_toolbar-butn_type.

APPEND ls_toolbar TO e_object->mt_toolbar.

CLEAR ls_toolbar.

MOVE 'CHECK' TO ls_toolbar-function.

MOVE icon_check TO ls_toolbar-icon.

MOVE text-026 TO ls_toolbar-quickinfo.

* MOVE text-026 TO ls_toolbar-text.

MOVE ' ' TO ls_toolbar-disabled.

APPEND ls_toolbar TO e_object->mt_toolbar.

ENDMETHOD. "lcl_decision

* ==========================

* ==== Toolbar selected ====

* ==========================

METHOD handle_user_command.

DATA: l_t_rows TYPE lvc_t_row,

l_s_rows TYPE lvc_s_row,

l_t_dec TYPE zrspc_t_decision,

l_s_dec TYPE zrspc_s_decision,

l_indx TYPE i,

l_subrc TYPE sy-subrc.

CASE e_ucomm.

WHEN 'APPEND'.

Enhanced Decision Process Type for BW Process Chains

SAP COMMUNITY NETWORK SDN - sdn.sap.com

© 2009 SAP AG 15

CHECK p_display_only IS INITIAL.

* ==== Append line ====

CALL METHOD cl_gui_cfw=>flush.

PERFORM decision_standardlines

USING '' 0 'X'

CHANGING g_t_decision.

PERFORM decision_fill_lines

CHANGING

g_t_decision.

CALL METHOD g_decision_grid->refresh_table_display

EXCEPTIONS

finished = 1

OTHERS = 2.

IF sy-subrc <> 0.

MESSAGE ID sy-msgid TYPE 'I' NUMBER sy-msgno

WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.

ENDIF.

WHEN 'INSERT'.

CHECK p_display_only IS INITIAL.

* ==== Insert line ====

CALL METHOD g_decision_grid->get_selected_rows

IMPORTING

et_index_rows = l_t_rows.

CALL METHOD cl_gui_cfw=>flush.

IF l_t_rows[] IS INITIAL.

PERFORM decision_standardlines

USING '' 0 'X'

CHANGING g_t_decision.

ELSE.

SORT l_t_rows BY index ASCENDING.

READ TABLE l_t_rows INTO l_s_rows INDEX 1.

PERFORM decision_standardlines

USING '' l_s_rows-index ''

CHANGING g_t_decision.

ENDIF.

PERFORM decision_fill_lines

CHANGING

g_t_decision.

CALL METHOD g_decision_grid->refresh_table_display

EXCEPTIONS

finished = 1

OTHERS = 2.

IF sy-subrc <> 0.

MESSAGE ID sy-msgid TYPE 'I' NUMBER sy-msgno

WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.

ENDIF.

WHEN 'DELETE'.

CHECK p_display_only IS INITIAL.

* ==== Delete line ====

CALL METHOD g_decision_grid->get_selected_rows

IMPORTING

et_index_rows = l_t_rows.

CALL METHOD cl_gui_cfw=>flush.

SORT l_t_rows BY index DESCENDING.

LOOP AT l_t_rows INTO l_s_rows.

DELETE g_t_decision INDEX l_s_rows-index.

Enhanced Decision Process Type for BW Process Chains

SAP COMMUNITY NETWORK SDN - sdn.sap.com

© 2009 SAP AG 16

ENDLOOP.

PERFORM decision_fill_lines

CHANGING

g_t_decision.

CALL METHOD g_decision_grid->refresh_table_display

EXCEPTIONS

finished = 1

OTHERS = 2.

IF sy-subrc <> 0.

MESSAGE ID sy-msgid TYPE 'I' NUMBER sy-msgno

WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.

ENDIF.

WHEN 'CHECK'.

* ==== Prüfen ====

PERFORM decision_check CHANGING l_subrc.

IF l_subrc <> 0.

MESSAGE ID sy-msgid TYPE 'I' NUMBER sy-msgno

WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.

ELSE.

MESSAGE s132(rspc).

ENDIF.

WHEN 'UP' OR 'DOWN'.

CHECK p_display_only IS INITIAL.

* ==== Verschieben ====

CALL METHOD g_decision_grid->get_selected_rows

IMPORTING

et_index_rows = l_t_rows.

CALL METHOD cl_gui_cfw=>flush.

IF e_ucomm = 'UP'.

* ---- Eins hoch ----

SORT l_t_rows BY index ASCENDING.

ELSEIF e_ucomm = 'DOWN'.

* ---- Eins runter ----

SORT l_t_rows BY index DESCENDING.

ENDIF.

LOOP AT l_t_rows INTO l_s_rows.

READ TABLE g_t_decision INTO l_s_dec INDEX l_s_rows-index.

DELETE g_t_decision INDEX l_s_rows-index.

IF e_ucomm = 'UP'.

* ---- Eins hoch ----

l_indx = l_s_rows-index - 1.

ELSEIF e_ucomm = 'DOWN'.

* ---- Eins runter ----

l_indx = l_s_rows-index + 1.

ENDIF.

INSERT l_s_dec INTO g_t_decision INDEX l_indx.

ENDLOOP.

PERFORM decision_fill_lines

CHANGING

g_t_decision.

CALL METHOD g_decision_grid->refresh_table_display

EXCEPTIONS

finished = 1

OTHERS = 2.

IF sy-subrc <> 0.

MESSAGE ID sy-msgid TYPE 'I' NUMBER sy-msgno

Enhanced Decision Process Type for BW Process Chains

SAP COMMUNITY NETWORK SDN - sdn.sap.com

© 2009 SAP AG 17

WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.

ENDIF.

ENDCASE.

ENDMETHOD. "lcl_decision

* ==============

* ==== Drag ====

* ==============

METHOD handle_alv_drag.

DATA: l_r_dataobj TYPE REF TO lcl_decision_dd.

CHECK p_display_only IS INITIAL.

CALL METHOD g_decision_grid->check_changed_data.

CREATE OBJECT l_r_dataobj.

MOVE e_row-index TO l_r_dataobj->p_row.

READ TABLE g_t_decision INDEX e_row-index INTO l_r_dataobj->p_s_decision.

e_dragdropobj->object = l_r_dataobj.

ENDMETHOD. "handle_alv_drag

* ==============

* ==== Drop ====

* ==============

METHOD handle_alv_drop.

DATA: l_r_dataobj TYPE REF TO lcl_decision_dd,

drop_index TYPE i,

ls_sbook TYPE sbook,

stable TYPE lvc_s_stbl.

CHECK p_display_only IS INITIAL.

stable-row = 'X'.

stable-col = 'X'.

CATCH SYSTEM-EXCEPTIONS move_cast_error = 1.

l_r_dataobj ?= e_dragdropobj->object.

IF e_dragdropobj->effect EQ cl_dragdrop=>copy.

INSERT l_r_dataobj->p_s_decision INTO g_t_decision INDEX e_row-index.

ELSE.

DELETE g_t_decision INDEX l_r_dataobj->p_row.

INSERT l_r_dataobj->p_s_decision INTO g_t_decision INDEX e_row-index.

ENDIF.

PERFORM decision_fill_lines CHANGING g_t_decision.

CALL METHOD g_decision_grid->refresh_table_display

EXPORTING

i_soft_refresh = 'X'

is_stable = stable.

ENDCATCH.

IF sy-subrc <> 0.

CALL METHOD e_dragdropobj->abort.

ENDIF.

ENDMETHOD. "HANDLE_ALV_DROP

ENDCLASS. "lcl_decision IMPLEMENTATION

Enhanced Decision Process Type for BW Process Chains

SAP COMMUNITY NETWORK SDN - sdn.sap.com

© 2009 SAP AG 18

2. Start transaction SE80, select FUNCTION GROUP and function group name as ZRSPC_DECISION.

3. Double click on ZRSPC_DECISION and click on main program on the following screen to display

main program.

4. Add following code

*******************************************************************

* System-defined Include-files. *

*******************************************************************

INCLUDE LZRSPC_DECISIONTOP. " Global Data

INCLUDE ZINCLUDE_FORM_DEC.

INCLUDE LZRSPC_DECISIONUXX. " Function Modules

*******************************************************************

Enhanced Decision Process Type for BW Process Chains

SAP COMMUNITY NETWORK SDN - sdn.sap.com

© 2009 SAP AG 19

* User-defined Include-files (if necessary). *

*******************************************************************

* INCLUDE LRSPC_PROCESSESF... " Subprograms

* INCLUDE LRSPC_PROCESSESO... " PBO-Modules

* INCLUDE LRSPC_PROCESSESI... " PAI-Modules

INCLUDE LZRSPC_DECISIONO01.

*INCLUDE LRSPC_PROCESSESO01.

INCLUDE LZRSPC_DECISIONI01.

*INCLUDE LRSPC_PROCESSESI01.

INCLUDE LZRSPC_DECISIONF02.

*INCLUDE LRSPC_PROCESSESF02.

5. LZRSPC_DECISIONTOP

Double click on LZRSPC_DECISIONTOP

Add following code

FUNCTION-POOL ZRSPC_DECISION. "MESSAGE-ID ..

TYPE-POOLS: rs, rsoc.

DATA: g_variant TYPE rspc_variant,

g_variant_hlp TYPE rspc_variant,

g_variant_text TYPE rstxtlg,

g_variant_text_h TYPE rstxtlg,

okcode TYPE syucomm,

Enhanced Decision Process Type for BW Process Chains

SAP COMMUNITY NETWORK SDN - sdn.sap.com

© 2009 SAP AG 20

g_subrc TYPE sysubrc.

DATA: g_user LIKE rspcvariantattr-tstpnm,

g_date TYPE sydatum,

g_time TYPE syuzeit,

g_s_tstpint TYPE rststpint.

DATA: g_r_variant TYPE REF TO cl_rspc_variant.

DATA g_decision_container_name TYPE scrfname

VALUE 'DECISION_CONTROL'.

DATA g_decision_container TYPE REF TO cl_gui_custom_container.

DATA g_decision_grid TYPE REF TO cl_gui_alv_grid.

CLASS lcl_decision DEFINITION DEFERRED.

CLASS lcl_decision_dd DEFINITION DEFERRED.

DATA g_r_decision TYPE REF TO lcl_decision.

DATA: g_t_decision TYPE ZRSPC_T_DECISION,

g_t_decision_old TYPE ZRSPC_T_DECISION,

g_t_dec_var TYPE rspc_t_variant,

g_s_dec_vart TYPE rspcvariantt,

g_t_dec_fcat TYPE lvc_t_fcat,

g_dec_dd_behaviour TYPE REF TO cl_dragdrop,

g_r_formulas TYPE REF TO cl_rsar_formulas.

DATA: ok_code LIKE sy-ucomm.

DATA: g_display_only TYPE rs_bool.

DATA g_t_fcode LIKE okcode OCCURS 0 WITH HEADER LINE.

DATA FU_OBJLIST LIKE STANDARD TABLE OF RSEUAP .

DATA: onhp_code(72) type c,

onhp_lt_code like standard table of onhp_code.

DATA l_uniqueid LIKE rssgtpdir-uni_idc25.

DATA: onhp_e_repid like sy-repid,

onhp_l_t_repid like table of onhp_e_repid.

Enhanced Decision Process Type for BW Process Chains

SAP COMMUNITY NETWORK SDN - sdn.sap.com

© 2009 SAP AG 21

6. LZRSPC_DECISIONO01

Add following code

*----------------------------------------------------------------------*

***INCLUDE LZRSPC_PROCESSESO01 .

*----------------------------------------------------------------------*

*&---------------------------------------------------------------------*

*& Module STATUS_0600 OUTPUT

*&---------------------------------------------------------------------*

* text

*----------------------------------------------------------------------*

MODULE status_0600 OUTPUT.

IF g_r_variant IS INITIAL.

PERFORM decision_get.

ENDIF.

PERFORM decision_init.

ENDMODULE. " STATUS_0600 OUTPUT

7. LZRSPC_DECISIONI01

Enhanced Decision Process Type for BW Process Chains

SAP COMMUNITY NETWORK SDN - sdn.sap.com

© 2009 SAP AG 22

*&---------------------------------------------------------------------*

*& Module USER_COMMAND_0600 INPUT

*&---------------------------------------------------------------------*

* text

*----------------------------------------------------------------------*

MODULE user_command_0600 INPUT.

CASE sy-ucomm.

WHEN 'SAVE'.

PERFORM decision_save.

WHEN 'CREA' OR 'EXIT' OR 'BACK' OR 'CANC'.

PERFORM decision_changed CHANGING sy-subrc.

IF sy-subrc <> 0.

CALL FUNCTION 'RSPC_VARIANT_OPERATION_STOP'.

ENDIF.

WHEN 'DELE'.

PERFORM decision_delete CHANGING sy-subrc.

IF sy-subrc <> 0.

CALL FUNCTION 'RSPC_VARIANT_OPERATION_STOP'.

ENDIF.

WHEN 'DISP'.

PERFORM displaymode_toggle.

IF g_display_only = 'X'.

CALL METHOD g_decision_grid->set_ready_for_input

EXPORTING

i_ready_for_input = 0.

ELSE.

CALL METHOD g_decision_grid->set_ready_for_input

EXPORTING

i_ready_for_input = 1.

ENDIF.

CALL METHOD g_r_decision->displaymode_toggle.

ENDCASE.

ENDMODULE. " USER_COMMAND_0600 INPUT

Enhanced Decision Process Type for BW Process Chains

SAP COMMUNITY NETWORK SDN - sdn.sap.com

© 2009 SAP AG 23

8. LZRSPC_DECISIONF02

Add following code

*----------------------------------------------------------------------*

***INCLUDE LRSPC_PROCESSESF02 .

*----------------------------------------------------------------------*

*&---------------------------------------------------------------------*

*& Form decision_init

*&---------------------------------------------------------------------*

* text

*----------------------------------------------------------------------*

* --> p1 text

* <-- p2 text

*----------------------------------------------------------------------*

FORM decision_init .

DATA: l_t_fieldcatalog TYPE lvc_t_fcat,

l_s_fieldcatalog TYPE lvc_s_fcat,

l_t_f4 TYPE lvc_t_f4 WITH HEADER LINE,

l_s_layout TYPE lvc_s_layo,

l_t_exclude TYPE ui_functions,

l_dd_effect TYPE i,

l_dd_handle TYPE i.

IF g_decision_container IS INITIAL.

* ---- Container ----

CREATE OBJECT g_decision_container

EXPORTING container_name = g_decision_container_name.

CREATE OBJECT g_decision_grid

EXPORTING i_parent = g_decision_container.

* ---- Fieldcat ----

CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'

EXPORTING

i_structure_name = 'ZRSPC_S_DECISION'

Enhanced Decision Process Type for BW Process Chains

SAP COMMUNITY NETWORK SDN - sdn.sap.com

© 2009 SAP AG 24

i_bypassing_buffer = rs_c_true

CHANGING

ct_fieldcat = l_t_fieldcatalog

EXCEPTIONS

inconsistent_interface = 1

program_error = 2

OTHERS = 3.

IF sy-subrc <> 0.

MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno

WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.

ENDIF.

DELETE l_t_fieldcatalog WHERE fieldname = 'FORM'.

DELETE l_t_fieldcatalog WHERE fieldname = 'EVENTCOLOR'.

DELETE l_t_fieldcatalog WHERE fieldname = 'EVENTNO'.

READ TABLE l_t_fieldcatalog INTO l_s_fieldcatalog

WITH KEY fieldname = 'COMMANDTEXT'.

MODIFY l_t_fieldcatalog FROM l_s_fieldcatalog INDEX sy-tabix.

READ TABLE l_t_fieldcatalog INTO l_s_fieldcatalog

WITH KEY fieldname = 'DESCRIPTION'.

l_s_fieldcatalog-outputlen = 33.

l_s_fieldcatalog-edit = 'X'.

MODIFY l_t_fieldcatalog FROM l_s_fieldcatalog INDEX sy-tabix.

READ TABLE l_t_fieldcatalog INTO l_s_fieldcatalog

WITH KEY fieldname = 'BUTTON'.

l_s_fieldcatalog-coltext = text-021.

l_s_fieldcatalog-outputlen = 07.

l_s_fieldcatalog-hotspot = 'X'.

l_s_fieldcatalog-icon = 'X'.

MODIFY l_t_fieldcatalog FROM l_s_fieldcatalog INDEX sy-tabix.

READ TABLE l_t_fieldcatalog INTO l_s_fieldcatalog

WITH KEY fieldname = 'EVENTICON'.

l_s_fieldcatalog-coltext = text-022.

l_s_fieldcatalog-outputlen = 02.

l_s_fieldcatalog-icon = 'X'.

MODIFY l_t_fieldcatalog FROM l_s_fieldcatalog INDEX sy-tabix.

READ TABLE l_t_fieldcatalog INTO l_s_fieldcatalog

WITH KEY fieldname = 'DANN'.

l_s_fieldcatalog-outputlen = 5.

MODIFY l_t_fieldcatalog FROM l_s_fieldcatalog INDEX sy-tabix.

READ TABLE l_t_fieldcatalog INTO l_s_fieldcatalog

WITH KEY fieldname = 'EVENTTEXT'.

l_s_fieldcatalog-checktable = '!'.

l_s_fieldcatalog-f4availabl = 'X'.

MODIFY l_t_fieldcatalog FROM l_s_fieldcatalog INDEX sy-tabix.

* ---- Dragdrop ----

CREATE OBJECT g_dec_dd_behaviour.

l_dd_effect = cl_dragdrop=>move + cl_dragdrop=>copy.

CALL METHOD g_dec_dd_behaviour->add

EXPORTING

flavor = 'Line' "#EC NOTEXT

dragsrc = 'X'

droptarget = 'X'

effect = l_dd_effect.

CALL METHOD g_dec_dd_behaviour->get_handle

IMPORTING

handle = l_dd_handle.

Enhanced Decision Process Type for BW Process Chains

SAP COMMUNITY NETWORK SDN - sdn.sap.com

© 2009 SAP AG 25

l_s_layout-s_dragdrop-row_ddid = l_dd_handle.

* ---- Layout ----

l_s_layout-sel_mode = 'B'.

l_s_layout-no_rowmove = 'X'.

* ---- Toolbar ----

PERFORM decision_tb_exclude CHANGING l_t_exclude.

* ---- Start ----

CALL METHOD g_decision_grid->set_table_for_first_display

EXPORTING

is_layout = l_s_layout

it_toolbar_excluding = l_t_exclude

CHANGING

it_fieldcatalog = l_t_fieldcatalog

it_outtab = g_t_decision.

* ---- F4 ----

CLEAR l_t_f4.

l_t_f4-fieldname = 'EVENTTEXT'.

l_t_f4-register = 'X'.

l_t_f4-getbefore = 'X'.

l_t_f4-chngeafter = 'X'.

INSERT table l_t_f4.

CALL METHOD g_decision_grid->register_f4_for_fields

EXPORTING

it_f4 = l_t_f4[].

* ---- events ----

CREATE OBJECT g_r_decision.

SET HANDLER g_r_decision->on_f4

FOR g_decision_grid.

SET HANDLER g_r_decision->handle_data_changed

FOR g_decision_grid.

SET HANDLER g_r_decision->on_hotspot

FOR g_decision_grid.

SET HANDLER g_r_decision->handle_user_command

FOR g_decision_grid.

SET HANDLER g_r_decision->handle_toolbar

FOR g_decision_grid.

SET HANDLER g_r_decision->handle_alv_drag

FOR g_decision_grid.

SET HANDLER g_r_decision->handle_alv_drop

FOR g_decision_grid.

* ---- Input ----

IF g_display_only = 'X'.

CALL METHOD g_decision_grid->set_ready_for_input

EXPORTING

i_ready_for_input = 0.

ELSE.

CALL METHOD g_decision_grid->set_ready_for_input

EXPORTING

i_ready_for_input = 1.

ENDIF.

CALL METHOD g_r_decision->displaymode_set( g_display_only ).

* ---- Toolbar ----

CALL METHOD g_decision_grid->set_toolbar_interactive.

ENDIF.

ENDFORM. " decision_init

*&---------------------------------------------------------------------*

Enhanced Decision Process Type for BW Process Chains

SAP COMMUNITY NETWORK SDN - sdn.sap.com

© 2009 SAP AG 26

*& Form decision_get

*&---------------------------------------------------------------------*

* text

*----------------------------------------------------------------------*

* --> p1 text

* <-- p2 text

*----------------------------------------------------------------------*

FORM decision_get .

DATA: l_s_rspcvariant TYPE rspcvariant,

l_count TYPE i,

l_s_decision TYPE ZRSPC_S_DECISION,

l_lines TYPE i.

* ==== Factory ====

CALL FUNCTION 'RSPC_VARIANT_GET'

IMPORTING

e_variant = g_variant.

CALL METHOD cl_rspc_variant=>create

EXPORTING

i_type = 'ZDECISION'

i_variant = g_variant

RECEIVING

r_r_variant = g_r_variant

EXCEPTIONS

locked = 1

OTHERS = 2.

IF sy-subrc <> 0.

MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno

WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.

EXIT.

ENDIF.

* ==== Get Info ====

CALL METHOD g_r_variant->get_info

IMPORTING

e_t_rspcvariant = g_t_dec_var

e_s_rspcvariantt = g_s_dec_vart.

g_variant_text = g_s_dec_vart-txtlg.

* ==== Refresh fields ====

REFRESH: g_t_decision_old, g_t_decision.

* ==== Put to fields ====

DATA: l_ccount LIKE l_s_rspcvariant-high.

l_count = 0.

DO.

CLEAR: l_s_decision, l_s_rspcvariant.

ADD 1 TO l_count.

WRITE l_count TO l_ccount LEFT-JUSTIFIED.

READ TABLE g_t_dec_var INTO l_s_rspcvariant

WITH KEY high = l_ccount

fnam = 'DESCRIPTION'.

l_s_decision-description = l_s_rspcvariant-low.

READ TABLE g_t_dec_var INTO l_s_rspcvariant

WITH KEY high = l_ccount

fnam = 'FORM'.

l_s_decision-form = l_s_rspcvariant-low.

READ TABLE g_t_dec_var INTO l_s_rspcvariant

Enhanced Decision Process Type for BW Process Chains

SAP COMMUNITY NETWORK SDN - sdn.sap.com

© 2009 SAP AG 27

WITH KEY high = l_ccount

fnam = 'EVENTCOLOR'.

l_s_decision-eventcolor = l_s_rspcvariant-low.

READ TABLE g_t_dec_var INTO l_s_rspcvariant

WITH KEY high = l_ccount

fnam = 'EVENTNO'.

l_s_decision-eventno = l_s_rspcvariant-low.

IF l_s_decision IS INITIAL.

EXIT.

ELSE.

APPEND l_s_decision TO g_t_decision_old.

ENDIF.

ENDDO.

* ==== Fill other information ====

DESCRIBE TABLE g_t_decision_old LINES l_lines.

IF l_lines = 0.

PERFORM decision_standardlines USING 'X' 0 '' CHANGING g_t_decision_old.

PERFORM decision_standardlines USING '' 0 'X' CHANGING g_t_decision_old.

ENDIF.

PERFORM decision_fill_lines CHANGING g_t_decision_old.

g_t_decision = g_t_decision_old.

ENDFORM. " decision_get

*&---------------------------------------------------------------------*

*& Form decision_changed

*&---------------------------------------------------------------------*

* text

*----------------------------------------------------------------------*

* --> p1 text

* <-- p2 text

*----------------------------------------------------------------------*

FORM decision_changed CHANGING p_subrc.

DATA: l_answer TYPE c.

p_subrc = 0.

IF g_display_only IS INITIAL.

CALL METHOD g_decision_grid->check_changed_data.

IF sy-datar = 'X' OR g_t_decision_old <> g_t_decision.

CALL FUNCTION 'POPUP_TO_CONFIRM_STEP'

EXPORTING

defaultoption = 'Y'

textline1 = text-002

titel = text-006

start_column = 25

start_row = 6

cancel_display = ' '

IMPORTING

answer = l_answer.

IF l_answer = 'A'.

p_subrc = 4.

EXIT.

ENDIF.

IF l_answer = 'J'.

PERFORM decision_save.

ENDIF.

ENDIF.

ENDIF.

Enhanced Decision Process Type for BW Process Chains

SAP COMMUNITY NETWORK SDN - sdn.sap.com

© 2009 SAP AG 28

IF p_subrc = 0.

CLEAR g_r_variant.

CALL METHOD g_decision_grid->free.

FREE g_decision_grid.

CALL METHOD g_decision_container->free.

FREE g_decision_container.

REFRESH: g_t_decision, g_t_decision_old.

ENDIF.

ENDFORM. " decision_changed

*&---------------------------------------------------------------------*

*& Form decision_save

*&---------------------------------------------------------------------*

* text

*----------------------------------------------------------------------*

* --> p1 text

* <-- p2 text

*----------------------------------------------------------------------*

FORM decision_save .

DATA: l_s_decision TYPE zrspc_s_decision,

l_count TYPE i VALUE 0,

l_s_rspcvariant TYPE rspcvariant,

l_t_formex TYPE rsfob_t_formex,

l_tlogo TYPE rstlogo,

l_objnm TYPE sobj_name.

* ==== Move over ====

CALL METHOD g_decision_grid->check_changed_data.

REFRESH g_t_dec_var.

LOOP AT g_t_decision INTO l_s_decision.

ADD 1 TO l_count.

l_s_rspcvariant-high = l_count.

SHIFT l_s_rspcvariant-high LEFT DELETING LEADING space.

l_s_rspcvariant-fnam = 'DESCRIPTION'.

l_s_rspcvariant-low = l_s_decision-description.

APPEND l_s_rspcvariant TO g_t_dec_var.

l_s_rspcvariant-fnam = 'FORM'.

l_s_rspcvariant-low = l_s_decision-form.

IF NOT l_s_decision-form IS INITIAL.

APPEND l_s_decision-form TO l_t_formex.

ENDIF.

APPEND l_s_rspcvariant TO g_t_dec_var.

l_s_rspcvariant-fnam = 'EVENTCOLOR'.

l_s_rspcvariant-low = l_s_decision-eventcolor.

APPEND l_s_rspcvariant TO g_t_dec_var.

l_s_rspcvariant-fnam = 'EVENTNO'.

l_s_rspcvariant-low = l_s_decision-eventno.

APPEND l_s_rspcvariant TO g_t_dec_var.

ENDLOOP.

CALL FUNCTION 'RSPC_VARIANT_GET'

IMPORTING

e_variant_text = g_s_dec_vart-txtlg.

* ==== Save dependent formulas ====

* IF g_r_formulas IS BOUND.

* CALL METHOD cl_rspc_variant=>get_tlogo

Enhanced Decision Process Type for BW Process Chains

SAP COMMUNITY NETWORK SDN - sdn.sap.com

© 2009 SAP AG 29

* EXPORTING

* i_type = 'ZDECISION'

* i_variant = g_variant

* IMPORTING

* e_tlogo = l_tlogo

* e_objnm = l_objnm.

* CALL METHOD g_r_formulas->save

* EXPORTING

* i_t_formex = l_t_formex

* i_tlogo = l_tlogo

* i_tlogo_objnm = l_objnm

* EXCEPTIONS

* rsfo_transport_error = 1

* rsfo_invalid_unique_id = 2

* rsfo_text_wrong_type = 3

* OTHERS = 4.

* IF sy-subrc <> 0.

* MESSAGE ID sy-msgid TYPE 'I' NUMBER sy-msgno

* WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.

* ENDIF.

* CALL METHOD g_r_formulas->delete_on_activate

* EXPORTING

* i_t_formex = l_t_formex

* EXCEPTIONS

* rsfo_delete_error = 1

* OTHERS = 2.

* IF sy-subrc <> 0.

* MESSAGE ID sy-msgid TYPE 'I' NUMBER sy-msgno

* WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.

* ENDIF.

* CALL METHOD g_r_formulas->activate

* EXPORTING

* i_t_formex = l_t_formex

* i_tlogo = l_tlogo

* i_tlogo_objnm = l_objnm

** IMPORTING

** E_T_MSG = l_t_msg

* EXCEPTIONS

* rsfo_delete_error = 1

* rsfo_invalid_unique_id = 2

* rsfo_empty_formula = 3

* rsfo_transport_error = 4

* OTHERS = 5.

* IF sy-subrc <> 0.

* MESSAGE ID sy-msgid TYPE 'I' NUMBER sy-msgno

* WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.

* ENDIF.

* ==== Save ====

CALL METHOD g_r_variant->save

EXPORTING

i_t_rspcvariant = g_t_dec_var

i_s_rspcvariantt = g_s_dec_vart

EXCEPTIONS

failed = 1

OTHERS = 2.

* ==== Delete obsolete formulas ====

Enhanced Decision Process Type for BW Process Chains

SAP COMMUNITY NETWORK SDN - sdn.sap.com

© 2009 SAP AG 30

* REFRESH l_t_formex.

LOOP AT g_t_decision_old INTO l_s_decision WHERE NOT form IS INITIAL.

READ TABLE g_t_decision WITH KEY form = l_s_decision-form

TRANSPORTING NO FIELDS.

IF sy-subrc <> 0.

* ---- Obsolete ----

delete report l_s_decision-form.

ENDIF.

ENDLOOP.

* ==== Check ====

PERFORM decision_check CHANGING sy-subrc.

IF sy-subrc <> 0.

MESSAGE ID sy-msgid TYPE 'I' NUMBER sy-msgno

WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.

ENDIF.

* ==== finish ====

g_t_decision_old = g_t_decision.

ENDFORM. " decision_save

*&--------------------------------------------------------------------*

*& Form decision_tb_exclude

*&--------------------------------------------------------------------*

* text

*---------------------------------------------------------------------*

* -->P_T_EXCLUDEtext

*---------------------------------------------------------------------*

FORM decision_tb_exclude CHANGING p_t_exclude TYPE ui_functions.

DATA l_s_exclude TYPE ui_func.

l_s_exclude = cl_gui_alv_grid=>mc_fc_auf.

APPEND l_s_exclude TO p_t_exclude.

l_s_exclude = cl_gui_alv_grid=>mc_fc_average.

APPEND l_s_exclude TO p_t_exclude.

l_s_exclude = cl_gui_alv_grid=>mc_fc_back_classic.

APPEND l_s_exclude TO p_t_exclude.

l_s_exclude = cl_gui_alv_grid=>mc_fc_call_abc.

APPEND l_s_exclude TO p_t_exclude.

l_s_exclude = cl_gui_alv_grid=>mc_fc_call_chain.

APPEND l_s_exclude TO p_t_exclude.

l_s_exclude = cl_gui_alv_grid=>mc_fc_call_crbatch.

APPEND l_s_exclude TO p_t_exclude.

l_s_exclude = cl_gui_alv_grid=>mc_fc_call_crweb.

APPEND l_s_exclude TO p_t_exclude.

l_s_exclude = cl_gui_alv_grid=>mc_fc_call_lineitems.

APPEND l_s_exclude TO p_t_exclude.

l_s_exclude = cl_gui_alv_grid=>mc_fc_call_master_data.

APPEND l_s_exclude TO p_t_exclude.

l_s_exclude = cl_gui_alv_grid=>mc_fc_call_more.

APPEND l_s_exclude TO p_t_exclude.

l_s_exclude = cl_gui_alv_grid=>mc_fc_call_report.

APPEND l_s_exclude TO p_t_exclude.

l_s_exclude = cl_gui_alv_grid=>mc_fc_call_xint.

APPEND l_s_exclude TO p_t_exclude.

Enhanced Decision Process Type for BW Process Chains

SAP COMMUNITY NETWORK SDN - sdn.sap.com

© 2009 SAP AG 31

l_s_exclude = cl_gui_alv_grid=>mc_fc_call_xxl.

APPEND l_s_exclude TO p_t_exclude.

l_s_exclude = cl_gui_alv_grid=>mc_fc_check.

APPEND l_s_exclude TO p_t_exclude.

l_s_exclude = cl_gui_alv_grid=>mc_fc_col_invisible.

APPEND l_s_exclude TO p_t_exclude.

l_s_exclude = cl_gui_alv_grid=>mc_fc_col_optimize.

APPEND l_s_exclude TO p_t_exclude.

l_s_exclude = cl_gui_alv_grid=>mc_fc_count.

APPEND l_s_exclude TO p_t_exclude.

l_s_exclude = cl_gui_alv_grid=>mc_fc_current_variant.

APPEND l_s_exclude TO p_t_exclude.

l_s_exclude = cl_gui_alv_grid=>mc_fc_data_save.

APPEND l_s_exclude TO p_t_exclude.

l_s_exclude = cl_gui_alv_grid=>mc_fc_delete_filter.

APPEND l_s_exclude TO p_t_exclude.

l_s_exclude = cl_gui_alv_grid=>mc_fc_deselect_all.

APPEND l_s_exclude TO p_t_exclude.

l_s_exclude = cl_gui_alv_grid=>mc_fc_detail.

APPEND l_s_exclude TO p_t_exclude.

l_s_exclude = cl_gui_alv_grid=>mc_fc_excl_all.

APPEND l_s_exclude TO p_t_exclude.

l_s_exclude = cl_gui_alv_grid=>mc_fc_expcrdata.

APPEND l_s_exclude TO p_t_exclude.

l_s_exclude = cl_gui_alv_grid=>mc_fc_expcrdesig.

APPEND l_s_exclude TO p_t_exclude.

l_s_exclude = cl_gui_alv_grid=>mc_fc_expcrtempl.

APPEND l_s_exclude TO p_t_exclude.

l_s_exclude = cl_gui_alv_grid=>mc_fc_expmdb.

APPEND l_s_exclude TO p_t_exclude.

l_s_exclude = cl_gui_alv_grid=>mc_fc_extend.

APPEND l_s_exclude TO p_t_exclude.

l_s_exclude = cl_gui_alv_grid=>mc_fc_f4.

APPEND l_s_exclude TO p_t_exclude.

l_s_exclude = cl_gui_alv_grid=>mc_fc_filter.

APPEND l_s_exclude TO p_t_exclude.

l_s_exclude = cl_gui_alv_grid=>mc_fc_find.

APPEND l_s_exclude TO p_t_exclude.

l_s_exclude = cl_gui_alv_grid=>mc_fc_fix_columns.

APPEND l_s_exclude TO p_t_exclude.

l_s_exclude = cl_gui_alv_grid=>mc_fc_graph.

APPEND l_s_exclude TO p_t_exclude.

l_s_exclude = cl_gui_alv_grid=>mc_fc_help.

APPEND l_s_exclude TO p_t_exclude.

l_s_exclude = cl_gui_alv_grid=>mc_fc_html.

APPEND l_s_exclude TO p_t_exclude.

l_s_exclude = cl_gui_alv_grid=>mc_fc_info.

APPEND l_s_exclude TO p_t_exclude.

l_s_exclude = cl_gui_alv_grid=>mc_fc_load_variant.

APPEND l_s_exclude TO p_t_exclude.

l_s_exclude = cl_gui_alv_grid=>mc_fc_loc_append_row.

APPEND l_s_exclude TO p_t_exclude.

l_s_exclude = cl_gui_alv_grid=>mc_fc_loc_copy.

APPEND l_s_exclude TO p_t_exclude.

l_s_exclude = cl_gui_alv_grid=>mc_fc_loc_copy_row.

APPEND l_s_exclude TO p_t_exclude.

Enhanced Decision Process Type for BW Process Chains

SAP COMMUNITY NETWORK SDN - sdn.sap.com

© 2009 SAP AG 32

l_s_exclude = cl_gui_alv_grid=>mc_fc_loc_cut.

APPEND l_s_exclude TO p_t_exclude.

l_s_exclude = cl_gui_alv_grid=>mc_fc_loc_delete_row.

APPEND l_s_exclude TO p_t_exclude.

l_s_exclude = cl_gui_alv_grid=>mc_fc_loc_insert_row.

APPEND l_s_exclude TO p_t_exclude.

l_s_exclude = cl_gui_alv_grid=>mc_fc_loc_move_row.

APPEND l_s_exclude TO p_t_exclude.

l_s_exclude = cl_gui_alv_grid=>mc_fc_loc_paste.

APPEND l_s_exclude TO p_t_exclude.

l_s_exclude = cl_gui_alv_grid=>mc_fc_loc_paste_new_row.

APPEND l_s_exclude TO p_t_exclude.

l_s_exclude = cl_gui_alv_grid=>mc_fc_loc_undo.

APPEND l_s_exclude TO p_t_exclude.

l_s_exclude = cl_gui_alv_grid=>mc_fc_maintain_variant.

APPEND l_s_exclude TO p_t_exclude.

l_s_exclude = cl_gui_alv_grid=>mc_fc_maximum.

APPEND l_s_exclude TO p_t_exclude.

l_s_exclude = cl_gui_alv_grid=>mc_fc_minimum.

APPEND l_s_exclude TO p_t_exclude.

l_s_exclude = cl_gui_alv_grid=>mc_fc_pc_file.

APPEND l_s_exclude TO p_t_exclude.

l_s_exclude = cl_gui_alv_grid=>mc_fc_print.

APPEND l_s_exclude TO p_t_exclude.

l_s_exclude = cl_gui_alv_grid=>mc_fc_print_back.

APPEND l_s_exclude TO p_t_exclude.

l_s_exclude = cl_gui_alv_grid=>mc_fc_print_prev.

APPEND l_s_exclude TO p_t_exclude.

l_s_exclude = cl_gui_alv_grid=>mc_fc_refresh.

APPEND l_s_exclude TO p_t_exclude.

l_s_exclude = cl_gui_alv_grid=>mc_fc_reprep.

APPEND l_s_exclude TO p_t_exclude.

l_s_exclude = cl_gui_alv_grid=>mc_fc_save_variant.

APPEND l_s_exclude TO p_t_exclude.

l_s_exclude = cl_gui_alv_grid=>mc_fc_select_all.

APPEND l_s_exclude TO p_t_exclude.

l_s_exclude = cl_gui_alv_grid=>mc_fc_send.

APPEND l_s_exclude TO p_t_exclude.

l_s_exclude = cl_gui_alv_grid=>mc_fc_separator.

APPEND l_s_exclude TO p_t_exclude.

l_s_exclude = cl_gui_alv_grid=>mc_fc_sort.

APPEND l_s_exclude TO p_t_exclude.

l_s_exclude = cl_gui_alv_grid=>mc_fc_sort_asc.

APPEND l_s_exclude TO p_t_exclude.

l_s_exclude = cl_gui_alv_grid=>mc_fc_sort_dsc.

APPEND l_s_exclude TO p_t_exclude.

l_s_exclude = cl_gui_alv_grid=>mc_fc_subtot.

APPEND l_s_exclude TO p_t_exclude.

l_s_exclude = cl_gui_alv_grid=>mc_fc_sum.

APPEND l_s_exclude TO p_t_exclude.

l_s_exclude = cl_gui_alv_grid=>mc_fc_to_office.

APPEND l_s_exclude TO p_t_exclude.

l_s_exclude = cl_gui_alv_grid=>mc_fc_to_rep_tree.

APPEND l_s_exclude TO p_t_exclude.

l_s_exclude = cl_gui_alv_grid=>mc_fc_unfix_columns.

APPEND l_s_exclude TO p_t_exclude.

Enhanced Decision Process Type for BW Process Chains

SAP COMMUNITY NETWORK SDN - sdn.sap.com

© 2009 SAP AG 33

l_s_exclude = cl_gui_alv_grid=>mc_fc_url_copy_to_clipboard.

APPEND l_s_exclude TO p_t_exclude.

l_s_exclude = cl_gui_alv_grid=>mc_fc_variant_admin.

APPEND l_s_exclude TO p_t_exclude.

l_s_exclude = cl_gui_alv_grid=>mc_fc_views.

APPEND l_s_exclude TO p_t_exclude.

l_s_exclude = cl_gui_alv_grid=>mc_fc_view_crystal.

APPEND l_s_exclude TO p_t_exclude.

l_s_exclude = cl_gui_alv_grid=>mc_fc_view_excel.

APPEND l_s_exclude TO p_t_exclude.

l_s_exclude = cl_gui_alv_grid=>mc_fc_view_grid.

APPEND l_s_exclude TO p_t_exclude.

l_s_exclude = cl_gui_alv_grid=>mc_fc_view_lotus.

APPEND l_s_exclude TO p_t_exclude.

l_s_exclude = cl_gui_alv_grid=>mc_fc_word_processor.

APPEND l_s_exclude TO p_t_exclude.

ENDFORM. "decision_tb_exclude

*&--------------------------------------------------------------------*

*& Form decision_standardlines

*&--------------------------------------------------------------------*

* text

*---------------------------------------------------------------------*

* -->P_FIRST text

* -->P_LAST text

* -->P_S_DECISIOtext

*---------------------------------------------------------------------*

FORM decision_standardlines

USING p_first TYPE rs_bool

p_index

p_last TYPE rs_bool

CHANGING p_t_decision TYPE zrspc_t_decision.

DATA: l_s_decision TYPE zrspc_s_decision.

IF p_first = rs_c_true.

l_s_decision-eventcolor = 'G'.

l_s_decision-eventno = '01'.

INSERT l_s_decision INTO p_t_decision INDEX 1.

ENDIF.

IF NOT p_index IS INITIAL.

l_s_decision-eventcolor = 'G'.

l_s_decision-eventno = p_index.

INSERT l_s_decision INTO p_t_decision INDEX p_index.

ENDIF.

IF p_last = rs_c_true.

l_s_decision-eventcolor = 'R'.

l_s_decision-eventno = '00'.

APPEND l_s_decision TO p_t_decision.

ENDIF.

ENDFORM. "decision_standardlines

*&--------------------------------------------------------------------*

*& Form decision_fill_lines

Enhanced Decision Process Type for BW Process Chains

SAP COMMUNITY NETWORK SDN - sdn.sap.com

© 2009 SAP AG 34

*&--------------------------------------------------------------------*

* text

*---------------------------------------------------------------------*

* -->P_T_DECISIOtext

*---------------------------------------------------------------------*

FORM decision_fill_lines CHANGING p_t_decision TYPE rspc_t_decision.

DATA: l_s_decision TYPE zrspc_s_decision,

l_lines TYPE i,

l_icon TYPE icon_d,

l_text TYPE rstxtsh.

DESCRIBE TABLE p_t_decision LINES l_lines.

LOOP AT p_t_decision INTO l_s_decision.

IF sy-tabix = 1.

l_s_decision-commandtext = text-018.

ELSEIF sy-tabix = l_lines.

l_s_decision-commandtext = text-020.

ELSE.

l_s_decision-commandtext = text-019.

ENDIF.

l_s_decision-dann = text-015.

IF l_s_decision-eventcolor = 'R'.

l_s_decision-eventtext = text-016.

l_icon = '@5C@'.

ELSE.

CONCATENATE text-017 l_s_decision-eventno

INTO l_s_decision-eventtext

SEPARATED BY space.

CALL FUNCTION 'RSPC_GET_EVENT_ICON'

EXPORTING

i_eventno = l_s_decision-eventno

IMPORTING

e_icon = l_icon.

ENDIF.

CALL FUNCTION 'RSSM_ICON_CREATE'

EXPORTING

name = l_icon

info = l_s_decision-eventtext

IMPORTING

RESULT = l_s_decision-eventicon

EXCEPTIONS

icon_not_found = 0

outputfield_too_short = 0

OTHERS = 0.

IF l_s_decision-form IS INITIAL.

IF sy-tabix <> l_lines OR l_lines = 1.

l_icon = '@0Y@'.

l_text = text-034.

ELSE.

CLEAR l_icon.

ENDIF.

ELSE.

IF sy-tabix <> l_lines OR l_lines = 1.

l_icon = '@0Z@'.

l_text = text-033.

Enhanced Decision Process Type for BW Process Chains

SAP COMMUNITY NETWORK SDN - sdn.sap.com

© 2009 SAP AG 35

ELSE.

l_icon = '@11@'.

l_text = text-032.

ENDIF.

ENDIF.

IF NOT l_icon IS INITIAL.

CALL FUNCTION 'RSSM_ICON_CREATE'

EXPORTING

name = l_icon

info = l_text

IMPORTING

RESULT = l_s_decision-button

EXCEPTIONS

icon_not_found = 0

outputfield_too_short = 0

OTHERS = 0.

ELSE.

CLEAR l_s_decision-button.

ENDIF.

MODIFY p_t_decision FROM l_s_decision.

ENDLOOP.

ENDFORM. "decision_fill_lines

*&---------------------------------------------------------------------*

*& Form decision_delete

*&---------------------------------------------------------------------*

* text

*----------------------------------------------------------------------*

* --> p1 text

* <-- p2 text

*----------------------------------------------------------------------*

FORM decision_delete CHANGING p_subrc TYPE sysubrc.

DATA: l_s_decision TYPE zrspc_s_decision,

l_answer TYPE c,

e_repid LIKE sy-repid,

l_t_repid like standard table of e_repid.

* ==== Delete formulas ====

LOOP AT g_t_decision INTO l_s_decision WHERE NOT form IS INITIAL.

APPEND l_s_decision-form TO l_t_repid.

ENDLOOP.

IF NOT l_t_repid IS INITIAL.

CALL FUNCTION 'POPUP_TO_CONFIRM'

EXPORTING

titlebar = text-032

text_question = text-030

default_button = '2'

display_cancel_button = ' '

popup_type = 'ICON_MESSAGE_WARNING'

IMPORTING

answer = l_answer

EXCEPTIONS

text_not_found = 1

OTHERS = 2.

IF sy-subrc <> 0.

MESSAGE ID sy-msgid TYPE 'I' NUMBER sy-msgno

Enhanced Decision Process Type for BW Process Chains

SAP COMMUNITY NETWORK SDN - sdn.sap.com

© 2009 SAP AG 36

WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.

ENDIF.

IF l_answer = '2'.

p_subrc = 12.

EXIT.

ENDIF.

loop at l_t_repid into e_repid.

delete report e_repid.

endloop.

ENDIF.

ENDFORM. " decision_delete

*&---------------------------------------------------------------------*

*& Form decision_check

*&---------------------------------------------------------------------*

* text

*----------------------------------------------------------------------*

* <--P_SY_SUBRC text

*----------------------------------------------------------------------*

FORM decision_check CHANGING p_subrc.

DATA: l_s_decision TYPE zrspc_s_decision,

l_dummy TYPE c,

l_lines TYPE i.

DESCRIBE TABLE g_t_decision LINES l_lines.

IF l_lines < 2.

MESSAGE e116(rspc) INTO l_dummy.

p_subrc = 4.

ENDIF.

LOOP AT g_t_decision INTO l_s_decision.

IF l_s_decision-button = '@0Y@'.

MESSAGE e105(rspc) INTO l_dummy.

p_subrc = 4.

ENDIF.

ENDLOOP.

ENDFORM. " decision_check

*&---------------------------------------------------------------------*

*& Form displaymode_set

*&---------------------------------------------------------------------*

* text

*----------------------------------------------------------------------*

* --> p1 text

* <-- p2 text

*----------------------------------------------------------------------*

FORM displaymode_set

USING p_display_only.

g_display_only = p_display_only.

ENDFORM. " displaymode_set

*&---------------------------------------------------------------------*

*& Form displaymode_toggle

*&---------------------------------------------------------------------*

* text

*----------------------------------------------------------------------*

Enhanced Decision Process Type for BW Process Chains

SAP COMMUNITY NETWORK SDN - sdn.sap.com

© 2009 SAP AG 37

* --> p1 text

* <-- p2 text

*----------------------------------------------------------------------*

FORM displaymode_toggle .

IF g_display_only = 'X'.

CLEAR g_display_only.

ELSE.

g_display_only = 'X'.

ENDIF.

ENDFORM. " displaymode_toggle

9. Delete all screens except 0600.

10. Text elements

Start transaction SE38, give the program name as SAPLZRSPC_DECISION and select text elements.

Enhanced Decision Process Type for BW Process Chains

SAP COMMUNITY NETWORK SDN - sdn.sap.com

© 2009 SAP AG 38

Enhanced Decision Process Type for BW Process Chains

SAP COMMUNITY NETWORK SDN - sdn.sap.com

© 2009 SAP AG 39

11. Save and activate.

Class ZCL_RSPC_DECISION

To save time we will copy the existing class ‘CL_RSPC_DECISION’ and add modified codes in the methods.

1. Start transaction SE24.

2. Give class name as ‘CL_RSPC_DECISION’.

3. Click on ‘copy class/interface’ button on toolbar or hit CTRL+F5

4. Select ‘copy to’ as ‘ZCL_RSPC_DECISION’.

Enhanced Decision Process Type for BW Process Chains

SAP COMMUNITY NETWORK SDN - sdn.sap.com

© 2009 SAP AG 40

1. Properties -> change description to suit your needs or let it be the same.

2. Interfaces -> remain unchanged

3. Attributes -> change type of attribute P_T_DECISION to ZRSPC_T_DECISION

Enhanced Decision Process Type for BW Process Chains

SAP COMMUNITY NETWORK SDN - sdn.sap.com

© 2009 SAP AG 41

4. Methods

4.1. IF_RSPV_TRANSPORT~AFTER_IMPORT

METHOD IF_RSPV_TRANSPORT~AFTER_IMPORT.

CALL METHOD zcl_rspc_decision=>activate_0bool

IMPORTING

e_t_prot = e_t_prot.

ENDMETHOD.

IF_RSPV_TRANSPORT~GET_RELATED

METHOD IF_RSPV_TRANSPORT~GET_RELATED.

DATA: l_s_decision TYPE zrspc_s_decision,

l_t_obj TYPE rs_t_tr_object,

l_s_obj TYPE rs_s_tr_object,

l_s_export TYPE rso_s_tlogo_asc.

CALL METHOD zcl_rspc_decision=>read_parameters

EXPORTING

i_variant = i_variant

i_objvers = i_objvers

EXCEPTIONS

failed = 1

OTHERS = 2.

IF sy-subrc <> 0.

RAISE EXCEPTION TYPE cx_rs_version_not_found.

ENDIF.

LOOP AT p_t_decision INTO l_s_decision WHERE NOT form IS INITIAL.

l_s_export-tlogo = 'PROG'.

l_s_export-objnm = l_s_decision-form.

l_s_export-asc_type = rsoc_c_asc_type-existential.

APPEND l_s_export TO e_t_obj_existential.

ENDLOOP.

ENDMETHOD.

4.2. IF_RSPV_TRANSPORT~GET_ADDITIONAL_OBJECTS

method IF_RSPV_TRANSPORT~GET_ADDITIONAL_OBJECTS.

endmethod.

4.3. IF_RSPC_TRANSPORT~GET_TLOGO

METHOD IF_RSPC_TRANSPORT~GET_TLOGO.

CALL METHOD cl_rspc_variant=>get_tlogo

EXPORTING

i_type = 'ZDECISION'

i_variant = i_variant

i_objvers = i_objvers

IMPORTING

e_tlogo = e_tlogo

e_objnm = e_objnm.

ENDMETHOD.

Enhanced Decision Process Type for BW Process Chains

SAP COMMUNITY NETWORK SDN - sdn.sap.com

© 2009 SAP AG 42

4.4. IF_RSPC_TRANSPORT~KEY_CHANGE

method IF_RSPC_TRANSPORT~KEY_CHANGE.

endmethod.

4.5. IF_RSPC_MULTI_EVENT~GET_EVENTS

METHOD IF_RSPC_MULTI_EVENT~GET_EVENTS.

DATA: l_s_events TYPE rspc_s_events,

l_s_decision TYPE zrspc_s_decision.

CALL METHOD zcl_rspc_decision=>read_parameters

EXPORTING

i_variant = i_variant

EXCEPTIONS

failed = 1

OTHERS = 2.

IF sy-subrc <> 0.

MESSAGE ID sy-msgid TYPE 'I' NUMBER sy-msgno

WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.

ENDIF.

LOOP AT p_t_decision INTO l_s_decision.

l_s_events-eventno = l_s_decision-eventno.

l_s_events-text = l_s_decision-description.

APPEND l_s_events TO e_t_events.

ENDLOOP.

ENDMETHOD.

4.6. IF_RSPC_MULTI_EVENT~GET_EVENT

METHOD IF_RSPC_MULTI_EVENT~GET_EVENT.

DATA: l_s_events TYPE rspc_s_events,

l_s_decision TYPE zrspc_s_decision.

CALL METHOD zcl_rspc_decision=>read_parameters

EXPORTING

i_variant = i_variant

EXCEPTIONS

failed = 1

OTHERS = 2.

IF sy-subrc <> 0.

MESSAGE ID sy-msgid TYPE 'I' NUMBER sy-msgno

WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.

ENDIF.

READ TABLE p_t_decision INTO l_s_decision WITH KEY

eventno = i_eventno.

IF sy-subrc = 0.

e_text = l_s_decision-description.

ELSE.

RAISE not_exist.

ENDIF.

ENDMETHOD.

4.7. IF_RSPC_MAINTAIN~MAINTAIN

Enhanced Decision Process Type for BW Process Chains

SAP COMMUNITY NETWORK SDN - sdn.sap.com

© 2009 SAP AG 43

METHOD IF_RSPC_MAINTAIN~MAINTAIN .

DATA: l_t_prot TYPE rs_t_tr_prot,

l_t_type TYPE rspc_t_processtypes_sel,

l_s_type TYPE rspc_s_processtypes_sel.

* ==== Activate 0BOOL if needed ====

CALL METHOD zcl_rspc_decision=>activate_0bool

IMPORTING

e_t_prot = l_t_prot.

IF NOT l_t_prot[] IS INITIAL.

MESSAGE i111(rspc).

EXIT.

ENDIF.

* ==== store context for later f4 ====

p_t_chain = i_t_chain.

* ==== Start maintainance ====

PERFORM displaymode_set IN PROGRAM SAPLZRSPC_DECISION USING i_display_only.

CALL FUNCTION 'RSPC_VARIANT_MAINTAIN'

EXPORTING

i_type = 'ZDECISION'

i_dynnr = '0600'

i_repid = 'SAPLZRSPC_DECISION'

i_callback_at_exit = 'DECISION_CHANGED'

i_variant = i_variant

i_display_only = i_display_only

IMPORTING

e_variant = e_variant

e_variant_text = e_variant_text

EXCEPTIONS

aborted = 1

OTHERS = 2.

IF sy-subrc <> 0.

MESSAGE ID sy-msgid TYPE 'S' NUMBER sy-msgno

WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.

ENDIF.

ENDMETHOD.

4.8. IF_RSPC_MAINTAIN~GET_HEADER

METHOD IF_RSPC_MAINTAIN~GET_HEADER .

DATA: l_r_variant TYPE REF TO cl_rspc_variant,

l_s_variantattr TYPE rspcvariantattr,

l_s_variantt TYPE rspcvariantt.

CALL METHOD cl_rspc_variant=>create

EXPORTING

i_type = 'ZDECISION'

i_variant = i_variant

i_no_transport = rs_c_true

RECEIVING

r_r_variant = l_r_variant

EXCEPTIONS

locked = 1

Enhanced Decision Process Type for BW Process Chains

SAP COMMUNITY NETWORK SDN - sdn.sap.com

© 2009 SAP AG 44

OTHERS = 2.

IF sy-subrc <> 0.

MESSAGE ID sy-msgid TYPE 'S' NUMBER sy-msgno

WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.

ENDIF.

CALL METHOD l_r_variant->get_info

IMPORTING

e_s_rspcvariantattr = l_s_variantattr

e_s_rspcvariantt = l_s_variantt.

CALL METHOD l_r_variant->free.

MOVE-CORRESPONDING l_s_variantattr TO e_s_changed.

e_contrel = l_s_variantattr-contrel.

e_conttimestmp = l_s_variantattr-conttimestmp.

e_variant_text = l_s_variantt-txtlg.

ENDMETHOD.

4.9. IF_RSPC_GET_VARIANT~GET_VARIANT

METHOD IF_RSPC_GET_VARIANT~GET_VARIANT.

CALL METHOD cl_rspc_variant=>f4

EXPORTING

i_type = 'ZDECISION'

i_variant = i_variant

i_objvers = i_objvers

i_t_select = i_t_select

i_allow_new = rs_c_false

IMPORTING

e_variant = e_variant

e_variant_text = e_variant_text

EXCEPTIONS

aborted = 1

nothing_found = 2

internal_error = 3

OTHERS = 4.

IF sy-subrc <> 0.

MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno

WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4

RAISING nothing_selected.

ENDIF.

ENDMETHOD.

4.10. IF_RSPC_GET_VARIANT~WILDCARD_ENABLED

METHOD IF_RSPC_GET_VARIANT~WILDCARD_ENABLED.

result = 'X'.

ENDMETHOD.

4.11. IF_RSPC_GET_VARIANT~EXISTS

METHOD IF_RSPC_GET_VARIANT~EXISTS.

CALL METHOD cl_rspc_variant=>exists

EXPORTING

i_type = 'ZDECISION'

i_variant = i_variant

RECEIVING

Enhanced Decision Process Type for BW Process Chains

SAP COMMUNITY NETWORK SDN - sdn.sap.com

© 2009 SAP AG 45

r_exists = r_exists.

ENDMETHOD.

4.12. IF_RSPC_EXECUTE~EXECUTE

METHOD IF_RSPC_EXECUTE~EXECUTE .

DATA: l_unique_id TYPE sysuuid_25,

l_s_processlist TYPE rspc_s_processlist,

l_s_decision TYPE zrspc_s_decision.

DATA: l_formid TYPE rscodeid,

l_r_formula TYPE REF TO cl_foev_formula,

l_r_connector TYPE REF TO zcl_rspc_decision,

l_result TYPE bool,

l_lines TYPE i.

FIELD-SYMBOLS: <l_rresult> TYPE ANY.

CREATE OBJECT l_r_connector.

CALL FUNCTION 'RSSM_UNIQUE_ID'

IMPORTING

e_uni_idc25 = l_unique_id.

e_instance = l_unique_id.

MESSAGE s008(rspc) WITH i_variant e_instance i_logid.

p_t_processlist = i_t_processlist.

p_variant = i_variant.

CALL METHOD zcl_rspc_decision=>read_parameters

EXPORTING

i_variant = i_variant

EXCEPTIONS

failed = 1

OTHERS = 2.

IF sy-subrc <> 0.

MESSAGE ID sy-msgid TYPE 'S' NUMBER sy-msgno

WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.

e_state = 'R'.

EXIT.

ENDIF.

DESCRIBE TABLE p_t_decision LINES l_lines.

LOOP AT p_t_decision INTO l_s_decision.

CALL FUNCTION 'RSPC_GET_KILL'

EXPORTING

i_logid = i_logid

EXCEPTIONS

to_be_killed = 1

OTHERS = 2.

IF sy-subrc <> 0.

MESSAGE ID sy-msgid TYPE 'I' NUMBER sy-msgno

WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.

e_state = 'R'.

EXIT.

Enhanced Decision Process Type for BW Process Chains

SAP COMMUNITY NETWORK SDN - sdn.sap.com

© 2009 SAP AG 46

ENDIF.

MESSAGE s109(rspc) WITH l_s_decision-description.

IF sy-tabix < l_lines.

TRY.

l_formid = l_s_decision-form .

perform evaluate in program (l_formid) changing l_result.

ASSIGN l_result TO <l_rresult>.

IF <l_rresult> = rs_c_true.

e_eventno = l_s_decision-eventno.

e_state = l_s_decision-eventcolor.

EXIT.

ENDIF.

CATCH cx_root.

MESSAGE i110(rspc) WITH l_s_decision-description.

e_state = 'R'.

EXIT.

ENDTRY.

ELSE.

e_eventno = l_s_decision-eventno.

e_state = l_s_decision-eventcolor.

ENDIF.

ENDLOOP.

ENDMETHOD.

IF_RSPC_EXECUTE~GIVE_CHAIN

METHOD IF_RSPC_EXECUTE~GIVE_CHAIN .

return = 'X'.

ENDMETHOD.

4.13. IF_RSPC_DELETE~DELETE

METHOD IF_RSPC_DELETE~DELETE.

DATA: l_r_variant TYPE REF TO cl_rspc_variant.

CALL METHOD cl_rspc_variant=>create

EXPORTING

i_type = 'ZDECISION'

i_variant = i_variant

i_lock = 'X'

RECEIVING

r_r_variant = l_r_variant

EXCEPTIONS

locked = 1

OTHERS = 2.

IF sy-subrc <> 0.

MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno

WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4

RAISING failed.

ENDIF.

CALL METHOD l_r_variant->delete

EXCEPTIONS

failed = 1

OTHERS = 2.

IF sy-subrc <> 0.

MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno

WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4

Enhanced Decision Process Type for BW Process Chains

SAP COMMUNITY NETWORK SDN - sdn.sap.com

© 2009 SAP AG 47

RAISING failed.

ENDIF.

ENDMETHOD.

4.14. IF_FOEV_CONNECTOR~EVALUATE

METHOD IF_FOEV_CONNECTOR~EVALUATE.

FIELD-SYMBOLS: <l_result> TYPE ANY,

<l_value> TYPE ANY.

DATA:

l_tabname TYPE tabname,

l_fieldname TYPE fieldname.

SPLIT im_fieldname AT '-' INTO l_tabname l_fieldname.

IF l_tabname EQ 'SYST'.

ASSIGN COMPONENT l_fieldname OF STRUCTURE syst TO <l_value>.

if sy-subrc ne 0.

exit.

endif.

CREATE DATA re_result TYPE (im_fieldname).

ASSIGN re_result->* TO <l_result>.

<l_result> = <l_value>.

ENDIF.

ENDMETHOD.

4.15. FORMULA_GET_PREDECESSOR_PARAM

METHOD FORMULA_GET_PREDECESSOR_PARAM .

DATA: l_s_processlist TYPE rspc_s_processlist,

l_type TYPE rspc_type,

l_variant TYPE rspc_variant.

CALL METHOD zcl_rspc_decision=>formula_get_predecessor

IMPORTING

e_type = l_type

e_variant = l_variant.

CALL METHOD zcl_rspc_decision=>formula_get_value

EXPORTING

i_type = l_type

i_variant = l_variant

i_fieldname = i_fieldname

i_low_or_high = i_low_or_high

i_number_of_value = i_number_of_value

IMPORTING

e_value = e_value.

ENDMETHOD.

4.16. FORMULA_GET_PROCESS_PARAMETER

METHOD FORMULA_GET_PROCESS_PARAMETER.

CALL METHOD zcl_rspc_decision=>formula_get_value

Enhanced Decision Process Type for BW Process Chains

SAP COMMUNITY NETWORK SDN - sdn.sap.com

© 2009 SAP AG 48

EXPORTING

i_type = i_type

i_variant = i_variant

i_fieldname = i_fieldname

i_low_or_high = i_low_or_high

i_number_of_value = i_number_of_value

IMPORTING

e_value = e_value.

ENDMETHOD.

4.17. FORMULA_EX_PROCESS_VALUE

METHOD FORMULA_EX_PROCESS_VALUE .

DATA: l_value TYPE rspc_value.

CALL METHOD zcl_rspc_decision=>formula_get_value

EXPORTING

i_type = i_type

i_variant = i_variant

i_fieldname = i_fieldname

i_value = i_value

IMPORTING

e_value = l_value.

e_exists = l_value.

ENDMETHOD.

4.18. FORMULA_F4_BUFFER_TYPE

METHOD FORMULA_F4_BUFFER_TYPE.

DATA: l_s_type TYPE rspc_s_processtypes_sel,

l_s_chain TYPE rspc_s_chain,

l_s_typet TYPE rsprocesstypest.

STATICS: s_t_typet TYPE TABLE OF rsprocesstypest.

IF s_t_typet IS INITIAL.

SELECT * FROM rsprocesstypest INTO TABLE s_t_typet WHERE langu = sy-langu.

ENDIF.

LOOP AT p_t_chain INTO l_s_chain.

CALL FUNCTION 'RSPC_HAS_INTERFACE'

EXPORTING

i_type = l_s_chain-type

i_method = 'GET_INFO'

EXCEPTIONS

interface_not_implemented = 1

unknown_process = 2

OTHERS = 3.

IF sy-subrc <> 0.

CONTINUE.

ENDIF.

Enhanced Decision Process Type for BW Process Chains

SAP COMMUNITY NETWORK SDN - sdn.sap.com

© 2009 SAP AG 49

l_s_type-type = l_s_chain-type.

READ TABLE s_t_typet INTO l_s_typet WITH KEY type = l_s_chain-type.

l_s_type-description = l_s_typet-description.

APPEND l_s_type TO e_t_type.

ENDLOOP.

SORT e_t_type BY description type.

DELETE ADJACENT DUPLICATES FROM e_t_type.

ENDMETHOD.

4.19. FORMULA_F4_BUFFER_VARIANT

METHOD FORMULA_F4_BUFFER_VARIANT .

DATA: l_s_variant TYPE rspc_s_type_variant_f4,

l_s_chain TYPE rspc_s_chain,

l_object TYPE seoclsname.

LOOP AT p_t_chain INTO l_s_chain.

IF NOT p_formula_f4_type IS INITIAL AND

p_formula_f4_type <> l_s_chain-type.

CONTINUE.

ELSE.

CALL FUNCTION 'RSPC_HAS_INTERFACE'

EXPORTING

i_type = l_s_chain-type

i_method = 'GET_INFO'

IMPORTING

e_object = l_object

EXCEPTIONS

interface_not_implemented = 1

unknown_process = 2

OTHERS = 3.

IF sy-subrc <> 0.

CONTINUE.

ENDIF.

ENDIF.

l_s_variant-type = l_s_chain-type.

l_s_variant-variant = l_s_chain-variante.

CALL FUNCTION 'RSPC_HAS_INTERFACE'

EXPORTING

i_type = l_s_chain-type

i_method = 'MAINTAIN'

IMPORTING

e_object = l_object

EXCEPTIONS

interface_not_implemented = 1

unknown_process = 2

OTHERS = 3.

IF sy-subrc = 0.

CALL METHOD (l_object)=>if_rspc_maintain~get_header

EXPORTING

i_variant = l_s_chain-variante

IMPORTING

Enhanced Decision Process Type for BW Process Chains

SAP COMMUNITY NETWORK SDN - sdn.sap.com

© 2009 SAP AG 50

e_variant_text = l_s_variant-text.

ENDIF.

APPEND l_s_variant TO e_t_variant.

ENDLOOP.

SORT e_t_variant BY text type variant.

DELETE ADJACENT DUPLICATES FROM e_t_variant.

ENDMETHOD.

FORMULA_F4_BUFFER_FIELDNAME

METHOD FORMULA_F4_BUFFER_FIELDNAME .

DATA: l_s_fnam TYPE rspc_s_infoparms,

l_object TYPE seoclsname.

CALL FUNCTION 'RSPC_HAS_INTERFACE'

EXPORTING

i_type = p_formula_f4_type

i_method = 'GET_INFO'

IMPORTING

e_object = l_object

EXCEPTIONS

interface_not_implemented = 1

unknown_process = 2

OTHERS = 3.

IF sy-subrc <> 0.

MESSAGE i115(rspc).

EXIT.

ENDIF.

CALL METHOD (l_object)=>if_rspc_get_info~runtime_parameters

EXPORTING

i_variant = p_formula_f4_variant

IMPORTING

e_t_fnam = e_t_fieldname.

ENDMETHOD.

4.20. FORMULA_F4_BUFFER_PRED_FNAM

METHOD FORMULA_F4_BUFFER_PRED_FNAM .

DATA: l_s_fnam TYPE rspc_s_infoparms,

l_object TYPE seoclsname,

l_type TYPE rspc_type,

l_variant TYPE rspc_variant.

CALL METHOD zcl_rspc_decision=>formula_get_predecessor

IMPORTING

e_type = l_type

e_variant = l_variant.

CALL FUNCTION 'RSPC_HAS_INTERFACE'

EXPORTING

i_type = l_type

i_method = 'GET_INFO'

IMPORTING

Enhanced Decision Process Type for BW Process Chains

SAP COMMUNITY NETWORK SDN - sdn.sap.com

© 2009 SAP AG 51

e_object = l_object

EXCEPTIONS

interface_not_implemented = 1

unknown_process = 2

OTHERS = 3.

IF sy-subrc <> 0.

MESSAGE i115(rspc).

EXIT.

ENDIF.

CALL METHOD (l_object)=>if_rspc_get_info~runtime_parameters

EXPORTING

i_variant = l_variant

IMPORTING

e_t_fnam = e_t_fieldname.

ENDMETHOD. "formula_f4_buffer_fieldname

4.21. ACTIVATE_0BOOL

METHOD ACTIVATE_0BOOL .

DATA: l_r_iobj_coll TYPE REF TO cl_rsd_iobj_collection,

l_exists TYPE rs_bool,

l_rx_message TYPE REF TO cx_rs_error,

l_t_msg TYPE rs_t_msg,

l_s_msg TYPE bal_s_msg,

l_s_prot TYPE sprot_u,

l_ja TYPE rs_bool VALUE rs_c_true.

CALL METHOD cl_rsd_iobj=>if_rso_tlogo_general~exists_on_db

EXPORTING

i_objnm = '0BOOL'

i_objvers = rs_c_objvers-active

i_with_message = rs_c_false

RECEIVING

r_answer = l_exists.

IF l_exists IS INITIAL.

CREATE OBJECT l_r_iobj_coll.

TRY.

CALL METHOD l_r_iobj_coll->add_tlogo

EXPORTING

i_objnm = '0BOOLEAN'

i_modify = rs_c_false

i_with_cto = rs_c_false

i_objvers = rs_c_objvers-active

i_detlevel = '2'.

CATCH cx_rs_error INTO l_rx_message.

CALL METHOD l_rx_message->if_rs_message~get_message

RECEIVING

r_s_msg = l_s_msg.

l_s_prot-level = l_s_msg-detlevel.

l_s_prot-severity = l_s_msg-msgty.

l_s_prot-ag = l_s_msg-msgid.

l_s_prot-msgnr = l_s_msg-msgno.

l_s_prot-var1 = l_s_msg-msgv1.

l_s_prot-var2 = l_s_msg-msgv2.

Enhanced Decision Process Type for BW Process Chains

SAP COMMUNITY NETWORK SDN - sdn.sap.com

© 2009 SAP AG 52

l_s_prot-var3 = l_s_msg-msgv3.

l_s_prot-var4 = l_s_msg-msgv4.

APPEND l_s_prot TO e_t_prot.

ENDTRY.

IF NOT l_rx_message IS INITIAL.

EXIT.

ENDIF.

TRY.

CALL METHOD l_r_iobj_coll->activate_content

EXPORTING

i_with_activation = rs_c_true

i_check_mode = rs_c_false

i_with_dependent = rs_c_false

i_with_cto = rs_c_false

i_show_check_protocol = rs_c_false

i_detlevel = '2'

CHANGING

c_no_dialog = l_ja.

CATCH cx_rs_error INTO l_rx_message.

CALL METHOD l_rx_message->if_rs_message~get_message

RECEIVING

r_s_msg = l_s_msg.

l_s_prot-level = l_s_msg-detlevel.

l_s_prot-severity = l_s_msg-msgty.

l_s_prot-ag = l_s_msg-msgid.

l_s_prot-msgnr = l_s_msg-msgno.

l_s_prot-var1 = l_s_msg-msgv1.

l_s_prot-var2 = l_s_msg-msgv2.

l_s_prot-var3 = l_s_msg-msgv3.

l_s_prot-var4 = l_s_msg-msgv4.

APPEND l_s_prot TO e_t_prot.

ENDTRY.

ENDIF.

ENDMETHOD.

4.22. READ_PARAMETERS

METHOD READ_PARAMETERS.

DATA: l_r_variant TYPE REF TO cl_rspc_variant,

l_t_variant TYPE rspc_t_variant,

l_s_variant TYPE rspcvariant,

l_s_decision TYPE zrspc_s_decision,

l_count TYPE i.

REFRESH p_t_decision.

CALL METHOD cl_rspc_variant=>create

EXPORTING

i_type = 'ZDECISION'

i_variant = i_variant

i_objvers = i_objvers

i_no_transport = 'X'

RECEIVING

r_r_variant = l_r_variant

EXCEPTIONS

Enhanced Decision Process Type for BW Process Chains

SAP COMMUNITY NETWORK SDN - sdn.sap.com

© 2009 SAP AG 53

locked = 1

OTHERS = 2.

IF sy-subrc <> 0.

MESSAGE ID sy-msgid TYPE 'I' NUMBER sy-msgno

WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4

RAISING failed.

ENDIF.

CALL METHOD l_r_variant->get_info

IMPORTING

e_t_rspcvariant = l_t_variant.

CALL METHOD l_r_variant->free.

DATA: l_ccount LIKE l_s_variant-high.

l_count = 0.

DO.

CLEAR: l_s_decision, l_s_variant.

ADD 1 TO l_count.

WRITE l_count TO l_ccount LEFT-JUSTIFIED.

READ TABLE l_t_variant INTO l_s_variant

WITH KEY high = l_ccount

fnam = 'DESCRIPTION'.

l_s_decision-description = l_s_variant-low.

READ TABLE l_t_variant INTO l_s_variant

WITH KEY high = l_ccount

fnam = 'FORM'.

l_s_decision-form = l_s_variant-low.

READ TABLE l_t_variant INTO l_s_variant

WITH KEY high = l_ccount

fnam = 'EVENTCOLOR'.

l_s_decision-eventcolor = l_s_variant-low.

READ TABLE l_t_variant INTO l_s_variant

WITH KEY high = l_ccount

fnam = 'EVENTNO'.

l_s_decision-eventno = l_s_variant-low.

IF l_s_decision IS INITIAL.

EXIT.

ELSE.

APPEND l_s_decision TO p_t_decision.

ENDIF.

ENDDO.

ENDMETHOD.

4.23. FORMULA_GET_VALUE

METHOD FORMULA_GET_VALUE .

DATA: l_object TYPE seoclsname,

l_s_processlist TYPE rspc_s_processlist,

l_t_info TYPE rs_t_rscedst,

l_s_info TYPE rscedst,

l_count TYPE i,

l_value TYPE rspc_value.

CALL FUNCTION 'RSPC_HAS_INTERFACE'

Enhanced Decision Process Type for BW Process Chains

SAP COMMUNITY NETWORK SDN - sdn.sap.com

© 2009 SAP AG 54

EXPORTING

i_type = i_type

i_method = 'GET_INFO'

IMPORTING

e_object = l_object

EXCEPTIONS

interface_not_implemented = 1

unknown_process = 2

OTHERS = 3.

IF sy-subrc <> 0.

RAISE EXCEPTION TYPE cx_foev_error_in_function.

ENDIF.

READ TABLE p_t_processlist INTO l_s_processlist WITH KEY

type = i_type

variante = i_variant.

IF sy-subrc <> 0.

RAISE EXCEPTION TYPE cx_foev_error_in_function.

ENDIF.

CALL METHOD (l_object)=>if_rspc_get_info~get_info

EXPORTING

i_variant = i_variant

i_instance = l_s_processlist-instance

IMPORTING

e_t_info = l_t_info.

IF i_value IS INITIAL.

LOOP AT l_t_info INTO l_s_info WHERE fnam = i_fieldname.

IF i_number_of_value IS INITIAL.

i_number_of_value = 1.

ENDIF.

ADD 1 TO l_count.

IF l_count = i_number_of_value.

IF i_low_or_high = 'LOW' OR i_low_or_high IS INITIAL.

e_value = l_s_info-low.

ELSEIF i_low_or_high = 'HIGH'.

e_value = l_s_info-high.

ENDIF.

EXIT.

ENDIF.

ENDLOOP.

ELSE.

CLEAR e_value.

l_value = i_value.

SHIFT l_value LEFT DELETING LEADING space.

LOOP AT l_t_info INTO l_s_info WHERE fnam = i_fieldname.

SHIFT l_s_info-low LEFT DELETING LEADING space.

SHIFT l_s_info-high LEFT DELETING LEADING space.

IF l_s_info-low = l_value OR l_s_info-high = l_value.

e_value = rs_c_true.

EXIT.

ENDIF.

ENDLOOP.

ENDIF.

ENDMETHOD.

Enhanced Decision Process Type for BW Process Chains

SAP COMMUNITY NETWORK SDN - sdn.sap.com

© 2009 SAP AG 55

4.24. FORMULA_GET_PREDECESSOR

METHOD FORMULA_GET_PREDECESSOR.

DATA: l_s_processlist TYPE rspc_s_processlist,

l_s_chain TYPE rspc_s_chain.

IF NOT p_t_processlist IS INITIAL.

READ TABLE p_t_processlist INTO l_s_processlist

WITH KEY type = 'ZDECISION'

variante = p_variant.

READ TABLE p_t_processlist INTO l_s_processlist

WITH KEY event_end = l_s_processlist-event_start

eventp_end = l_s_processlist-eventp_start.

e_type = l_s_processlist-type.

e_variant = l_s_processlist-variante.

ELSEIF NOT p_t_chain IS INITIAL.

READ TABLE p_t_chain INTO l_s_chain

WITH KEY type = 'ZDECISION'

variante = p_variant.

READ TABLE p_t_chain INTO l_s_chain

WITH KEY event_green = l_s_chain-event_start

eventp_green = l_s_chain-eventp_start.

IF sy-subrc <> 0.

READ TABLE p_t_chain INTO l_s_chain

WITH KEY event_red = l_s_chain-event_start

eventp_red = l_s_chain-eventp_start.

ENDIF.

e_type = l_s_chain-type.

e_variant = l_s_chain-variante.

ENDIF.

ENDMETHOD.

Enhanced Decision Process Type for BW Process Chains

SAP COMMUNITY NETWORK SDN - sdn.sap.com

© 2009 SAP AG 56

Adding new process type to process type view

Once the class and the maintenance program are ready we will add this new process type to existing process types.

1. Start transaction RSPC

2. Go to Settings->maintain process types

3. On the next screen click on ‘change’ button and click on ‘New entries’.

4. give following values and save

Enhanced Decision Process Type for BW Process Chains

SAP COMMUNITY NETWORK SDN - sdn.sap.com

© 2009 SAP AG 57

**It is important to mention possible events as Process ends with complex status.

This activity will ask for Transport request. So it is better to be ready with transports before beginning.

Start using the new process type

The maintenance screen of new decision is same as the SAP delivered with difference that you have to write your logic in an ABAP program instead of FORMULA.

1. Drag the new process type from left pane.

Enhanced Decision Process Type for BW Process Chains

SAP COMMUNITY NETWORK SDN - sdn.sap.com

© 2009 SAP AG 58

2. Give the name of variant

3. click on button Maintain variant

4. A program is generated and we can write our logic in it. Setting p_retrun = ‘X’ will cause true

value to be written while p_retrun =’’ will cause it to return false value.

Enhanced Decision Process Type for BW Process Chains

SAP COMMUNITY NETWORK SDN - sdn.sap.com

© 2009 SAP AG 59

5. Save and activate.

6. Make the connections in process chain

7. According to logic we have written and the value returned in p_retrun the appropriate option is

executed.

Enhanced Decision Process Type for BW Process Chains

SAP COMMUNITY NETWORK SDN - sdn.sap.com

© 2009 SAP AG 60

Enhanced Decision Process Type for BW Process Chains

SAP COMMUNITY NETWORK SDN - sdn.sap.com

© 2009 SAP AG 61

Start using the new process type

http://www.sdn.sap.com/irj/scn/index?rid=/library/uuid/30664504-40dd-2a10-3794-db7b4190bef3&overridelayout=true

http://www.sdn.sap.com/irj/scn/index?rid=/library/uuid/30664504-40dd-2a10-3794-db7b4190bef3&overridelayout=true

http://www.sdn.sap.com/irj/scn/index?rid=/library/uuid/301fb325-9d90-2c10-7199-89fc7b5a17b9&overridelayout=true

Enhanced Decision Process Type for BW Process Chains

SAP COMMUNITY NETWORK SDN - sdn.sap.com

© 2009 SAP AG 62

Related Contetns

For more information, visit the Business Intelligence homepage.

Enhanced Decision Process Type for BW Process Chains

SAP COMMUNITY NETWORK SDN - sdn.sap.com

© 2009 SAP AG 63

Disclaimer and Liability Notice

This document may discuss sample coding or other information that does not include SAP official interfaces and therefore is not supported by SAP. Changes made based on this information are not supported and can be overwritten during an upgrade.

SAP will not be held liable for any damages caused by using or misusing the information, code or methods suggested in this document, and anyone using these methods does so at his/her own risk.

SAP offers no guarantees and assumes no responsibility or liability of any type with respect to the content of this technical article or code sample, including any liability resulting from incompatibility between the content within this document and the materials and services offered by SAP. You agree that you will not hold, or seek to hold, SAP responsible or liable with respect to the content of this document.