cancel
Showing results for 
Search instead for 
Did you mean: 

In Solman Support Desk Technical Part

Former Member
0 Kudos

Hi Everybody,

My requirement is In Support Desk, auto message processor and support team to get change while the user changing the status from Underapproval to In Process.

Here I describe the requirement.

Once the status being in In Process, I created one ztable with following fields(guid,status,username,changedate,changetime, supportteam,message process). In that table I am updating the values when the status in In Process.

Once the status is changing to Under approval, the support team and message processor will be change. Again the Call getting changes from underapproval to In Process/customeraction, Here automatically I am reading the values from ztable and replacing the support team name and message processor.

Please let me know how to solve this requirement.

Accepted Solutions (0)

Answers (1)

Answers (1)

Former Member
0 Kudos

Hello all,

I got the solution for the auto determination of partner function

METHOD if_ex_order_save~check_before_save.

DATA gs_status TYPE zsmgl_status.

DATA lt_tguid TYPE crmt_object_guid_tab.

DATA lt_orderadm_h TYPE crmt_orderadm_h_wrkt.

DATA lt_status TYPE crmt_status_wrkt.

DATA ls_status LIKE LINE OF lt_status.

DATA lt_partner TYPE crmt_partner_external_wrkt.

DATA ls_partner LIKE LINE OF lt_partner.

DATA lt_partner_h TYPE TABLE OF crmt_partner_com.

DATA lt_partner_h1 TYPE crmt_partner_comt.

DATA ls_partner_h LIKE LINE OF lt_partner_h.

DATA ls_field_names TYPE crmt_input_field_names.

DATA lt_field_names TYPE crmt_input_field_names_tab.

DATA lv_logical_key(42) TYPE c.

DATA lt_input_fields TYPE crmt_input_field_tab.

DATA ls_input_fields LIKE LINE OF lt_input_fields .

DATA gt_partner_h TYPE crmt_partner_external_wrkt.

DATA gs_partner_h LIKE LINE OF gt_partner_h.

CLEAR lt_status.

CLEAR lt_partner.

CLEAR lt_orderadm_h.

INSERT iv_guid INTO TABLE lt_tguid.

CALL FUNCTION 'CRM_ORDER_READ'

EXPORTING

it_header_guid = lt_tguid

IMPORTING

et_status = lt_status

et_orderadm_h = lt_orderadm_h

et_partner = lt_partner

EXCEPTIONS

document_not_found = 1

error_occurred = 2

document_locked = 3

no_change_authority = 4

no_display_authority = 5

no_change_allowed = 6

OTHERS = 7.

IF sy-subrc = 0.

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

  • Get in only if status is changed to Inprogress.

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

READ TABLE lt_status INTO ls_status WITH KEY status = 'E0010'.

IF sy-subrc = 0.

  • Read Status from Intermidiate Table.

SELECT SINGLE * FROM zsmgl_status INTO gs_status

WHERE guid = iv_guid

AND stat = 'E0002'

AND inact = ''.

IF sy-subrc = 0.

  • make copy to _h table

LOOP AT lt_partner INTO ls_partner.

MOVE-CORRESPONDING ls_partner TO ls_partner_h.

APPEND ls_partner_h TO lt_partner_h.

CLEAR ls_partner_h.

ENDLOOP.

LOOP AT lt_partner_h INTO ls_partner_h WHERE partner_fct = 'SLFN0003' OR partner_fct = 'SLFN0004'.

CASE ls_partner_h-partner_fct.

WHEN 'SLFN0003'.

ls_partner_h-ref_partner_no = gs_status-partner_number.

ls_partner_h-partner_no = gs_status-partner_number.

MODIFY lt_partner_h FROM ls_partner_h TRANSPORTING ref_partner_no partner_no.

CLEAR ls_partner_h.

WHEN 'SLFN0004'.

if gs_status-bu_partner is not initial.

ls_partner_h-ref_partner_no = gs_status-bu_partner.

ls_partner_h-partner_no = gs_status-bu_partner.

else.

ls_partner_h-partner_no = ' '.

ls_partner_h-ref_partner_no = ' '.

endif.

MODIFY lt_partner_h FROM ls_partner_h TRANSPORTING ref_partner_no partner_no.

CLEAR ls_partner_h.

ENDCASE.

ENDLOOP.

ENDIF.

lt_partner_h1[] = lt_partner_h[].

LOOP AT lt_partner_h1 INTO ls_partner_h WHERE ref_partner_fct = 'SLFN0003' OR ref_partner_fct = 'SLFN0004' .

CLEAR ls_field_names.

ls_field_names-fieldname = 'PARTNER_FCT'.

INSERT ls_field_names INTO TABLE lt_field_names.

ls_field_names-fieldname = 'PARTNER_NO'.

INSERT ls_field_names INTO TABLE lt_field_names.

ls_field_names-fieldname = 'DISPLAY_TYPE'.

INSERT ls_field_names INTO TABLE lt_field_names.

ls_field_names-fieldname = 'NO_TYPE'.

INSERT ls_field_names INTO TABLE lt_field_names.

ls_field_names-fieldname = 'KIND_OF_ENTRY'.

INSERT ls_field_names INTO TABLE lt_field_names.

ls_input_fields-ref_guid = iv_guid.

ls_input_fields-ref_kind = 'A'.

ls_input_fields-objectname = 'PARTNER'.

ls_input_fields-field_names = lt_field_names.

lv_logical_key = '0000'.

lv_logical_key+4 = ls_partner_h-partner_fct.

lv_logical_key+12 = ls_partner_h-partner_no.

lv_logical_key+28 = ls_partner_h-ref_display_type.

lv_logical_key+30 = ls_partner_h-ref_no_type.

ls_input_fields-logical_key = lv_logical_key.

INSERT ls_input_fields INTO TABLE lt_input_fields.

endloop.

CALL FUNCTION 'CRM_ORDER_MAINTAIN'

EXPORTING

it_partner = lt_partner_h1

CHANGING

ct_input_fields = lt_input_fields

EXCEPTIONS

error_occurred = 1

document_locked = 2

no_change_allowed = 3

no_authority = 4

OTHERS = 5.

ENDIF.

ENDIF.

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

  • Update intermidiate Status in ZTable *

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

READ TABLE lt_status INTO ls_status WITH KEY status = 'E0010'.

IF sy-subrc NE 0.

READ TABLE lt_status INTO ls_status WITH KEY status = 'E0002'.

IF sy-subrc = 0.

CLEAR gs_status.

gs_status-stat = 'E0002'.

gs_status-inact = ' '.

gs_status-usnam = sy-uname.

gs_status-utime = sy-uzeit.

gs_status-guid = iv_guid.

IF lt_partner[] IS NOT INITIAL.

CLEAR gs_partner_h.

READ TABLE lt_partner INTO ls_partner WITH KEY ref_partner_fct = 'SLFN0003'.

IF sy-subrc = 0.

gs_status-partner_number = ls_partner-ref_partner_no.

ENDIF.

CLEAR ls_partner.

READ TABLE lt_partner INTO ls_partner WITH KEY ref_partner_fct = 'SLFN0004'.

IF sy-subrc = 0.

gs_status-bu_partner = ls_partner-ref_partner_no.

ELSE.

gs_status-bu_partner = ' '.

ENDIF.

ENDIF.

MODIFY zsmgl_status FROM gs_status.

ENDIF.

ENDIF.

ENDMETHOD.