DATA: lt_attach_types TYPE TABLE OF t5asrfscnstgatm,
ls_attach_types TYPE t5asrfscnstgatm.
DATA: I_PROCESS TYPE QISRDFIELDVALUE.
SELECT * FROM t5asrfscnstgatm INTO TABLE lt_attach_types WHERE form_scenario = i_process AND form_scen_stage = 'DEFAULT'.
LOOP AT lt_attach_types INTO ls_attach_types.
MOVE: ls_attach_types-attachment_type TO ls_attach_det-attachment_type,
ls_attach_types-demand_level TO ls_attach_det-demand_level.
SELECT SINGLE description
FROM t5asrattachmentt
INTO ls_attach_det-description
WHERE attachment_type = ls_attach_det-attachment_type AND
langu = sy-langu.
IF ls_attach_det-demand_level = abap_false.
ls_attach_det-demand_level = 'O'.
ENDIF.
APPEND ls_attach_det TO e_attach_det.
ENDLOOP.
DATA: lt_att TYPE TABLE OF hrasr00attachment_dtl,
ls_att TYPE hrasr00attachment_dtl,
ls_attachments TYPE zhrasr00attachment_dtl.
LOOP AT ct_attachments INTO ls_attachments.
MOVE-CORRESPONDING: ls_attachments TO ls_att.
CALL FUNCTION 'SSFC_BASE64_DECODE'
EXPORTING
b64data = ls_attachments-attachment_content
IMPORTING
bindata = ls_att-attachment_content
EXCEPTIONS
ssf_krn_error = 1
ssf_krn_noop = 2
ssf_krn_nomemory = 3
ssf_krn_opinv = 4
ssf_krn_input_data_error = 5
ssf_krn_invalid_par = 6
ssf_krn_invalid_parlen = 7
OTHERS = 8.
IF sy-subrc <> 0.
ELSE.
APPEND ls_att TO lt_att.
CLEAR: ls_att.
ENDIF.
ENDLOOP.
DATA: lv_case_guid TYPE scmg_case_guid.
"Attachement Storage
LOOP AT lt_att INTO ls_att.
IF ls_att-attachment_type IS NOT INITIAL OR
ls_att-attachment_filename IS NOT INITIAL OR
ls_att-attachment_content IS NOT INITIAL.
CALL FUNCTION 'HR_ASR_STORE_ATTACHMENT'
EXPORTING
step_object_guid = lv_case_guid
attachment_type = ls_att-attachment_type
filename = ls_att-attachment_filename
attachment_content = ls_att-attachment_content
IMPORTING
return = ls_att_return
attachment_index = lv_attachment_index.
APPEND ls_att_return TO lt_att_return.
CLEAR ls_att_return.
ENDIF.
ENDLOOP.
SELECT SINGLE case_guid no_of_attachment scenario_stage
FROM t5asrsteps
INTO (lv_step_object_guid, lv_asr_no_of_attachments, lv_scenario_stage)
WHERE parent_scenario = lv_sguid AND status = 'READY'.
CLEAR e_attch_create_allowed.
SELECT SINGLE modify_allowed
FROM t5asrfscnstgatm
INTO e_attch_create_allowed
WHERE form_scenario EQ lv_form_scenario AND
form_scen_stage EQ lv_scenario_stage.
DATA: lt_attachment_m TYPE TABLE OF zhrasr00attachment_dtl,
ls_attachment_m TYPE zhrasr00attachment_dtl.
IF lv_step_object_guid IS NOT INITIAL AND e_attch_create_allowed = abap_true.
LOOP AT i_attachment INTO ls_attachment_m.
MOVE-CORRESPONDING: ls_attachment_m TO ls_attachment.
CALL FUNCTION 'SSFC_BASE64_DECODE'
EXPORTING
b64data = ls_attachment_m-attachment_content
IMPORTING
bindata = ls_attachment-attachment_content
EXCEPTIONS
ssf_krn_error = 1
ssf_krn_noop = 2
ssf_krn_nomemory = 3
ssf_krn_opinv = 4
ssf_krn_input_data_error = 5
ssf_krn_invalid_par = 6
ssf_krn_invalid_parlen = 7
OTHERS = 8.
IF sy-subrc <> 0.
ELSE.
APPEND ls_attachment TO lt_attachment.
CLEAR: ls_attachment.
ENDIF.
ENDLOOP.
form_scenario = lv_form_scenario.
CALL FUNCTION 'HR_ASR_GET_ATTACHMENT_LIST'
EXPORTING
step_object_guid = lv_step_object_guid
form_scenario = form_scenario
form_scenario_version = form_scenario_version
form_scenario_stage = form_scenario_stage
get_attachment_content = 'X'
mode = mode
IMPORTING
* RETURN =
attachment_list = attachment_list.
"Attachement Storage
LOOP AT lt_attachment INTO ls_attachment.
IF ls_attachment-attachment_type IS NOT INITIAL OR
ls_attachment-attachment_filename IS NOT INITIAL OR
ls_attachment-attachment_content IS NOT INITIAL.
CALL FUNCTION 'HR_ASR_STORE_ATTACHMENT'
EXPORTING
step_object_guid = lv_step_object_guid
attachment_type = ls_attachment-attachment_type
filename = ls_attachment-attachment_filename
attachment_content = ls_attachment-attachment_content
IMPORTING
return = ls_att_return
attachment_index = lv_attachment_index.
APPEND ls_att_return TO lt_att_return.
CLEAR ls_att_return.
ENDIF.
ENDLOOP.
CALL FUNCTION 'HR_ASR_GET_ATTACHMENT_LIST'
EXPORTING
step_object_guid = lv_step_object_guid
form_scenario = form_scenario
form_scenario_version = form_scenario_version
form_scenario_stage = form_scenario_stage
get_attachment_content = 'X'
mode = mode
IMPORTING
* RETURN =
attachment_list = attachment_list.
CALL FUNCTION 'HR_ASR_GET_STEP_PROPERTIES'
EXPORTING
workitem_id = i_workitem_id
TABLES
step_properties = step_properties
message_lines = message_lines
error_agent_messages = error_agent_messages.
LOOP AT lt_external_data INTO external_data_wa.
READ TABLE step_properties INTO step_properties_wa WITH KEY name = external_data_wa-fieldname.
IF sy-subrc = 0.
IF external_data_wa-fieldname = 'PROCESS_OBJECT_GUID'.
external_data_wa-fieldvalue = lv_pro_guid.
MODIFY lt_external_data FROM external_data_wa.
ELSE.
external_data_wa-fieldvalue = step_properties_wa-value.
MODIFY lt_external_data FROM external_data_wa.
ENDIF.
ELSEIF external_data_wa-fieldname = 'PROCESS_REFERENCE_NUMBER'.
external_data_wa-fieldvalue = lv_ref_number.
MODIFY lt_external_data FROM external_data_wa.
ELSEIF external_data_wa-fieldname = 'WORKITEM_ID'.
external_data_wa-fieldvalue = i_workitem_id.
MODIFY lt_external_data FROM external_data_wa.
ENDIF.
ENDLOOP.
ls_data-fieldindex = 1.
ls_data-fieldname = 'ISR_SCENARIO_PARAMS'.
CONCATENATE 'VERSION=' form_scenario_version INTO ls_data-fieldvalue.
APPEND ls_data TO lt_data.
lv_mode = 'CHANGE'.
CALL FUNCTION 'ISR_PROCESS_EVENT'
EXPORTING
scenario = lv_scenario
mode = lv_mode
flag_inout_conversion = space
IMPORTING
return = lv_return
TABLES
external_data = lt_external_data
additional_data = lt_additional_data
data = lt_data
message_list = lt_message_list.
CALL FUNCTION 'ISR_PROCESS_EVENT'
EXPORTING
scenario = lv_scenario
mode = lv_mode
event = 'CHECK'
flag_inout_conversion = space
IMPORTING
return = lv_return
TABLES
data = lt_data
additional_data = lt_additional_data
external_data = lt_external_data
message_list = lt_message_list.
error_found = ' '.
LOOP AT lt_message_list INTO isrmessage.
IF isrmessage-type = 'E' OR isrmessage-type = 'A'.
error_found = abap_true.
ENDIF.
ENDLOOP.
IF error_found = ''.
external_data_wa-fieldindex = 1.
external_data_wa-fieldname = 'PROCESSING_STATUS'.
external_data_wa-fieldvalue = 'PROCESSED'.
READ TABLE lt_external_data WITH KEY fieldindex = 1 fieldname = 'PROCESSING_STATUS' TRANSPORTING NO FIELDS.
IF sy-subrc EQ 0.
MODIFY lt_external_data INDEX sy-tabix FROM external_data_wa TRANSPORTING fieldvalue.
ELSE.
APPEND external_data_wa TO lt_external_data.
ENDIF.
CALL FUNCTION 'ISR_PROCESS_EVENT'
EXPORTING
scenario = lv_scenario
mode = lv_mode
event = 'SAVE'
flag_inout_conversion = space
IMPORTING
return = lv_return
TABLES
data = lt_data
additional_data = lt_additional_data
external_data = lt_external_data
message_list = lt_message_list.
ENDIF.
ENDIF.
ENDIF.
SELECT SINGLE case_guid no_of_attachment
FROM t5asrsteps
INTO (lv_step_object_guid, lv_asr_no_of_attachments)
WHERE parent_scenario = lv_sguid AND scenario_stage = 'DEFAULT'.
SELECT SINGLE modify_allowed display_allowed
FROM t5asrfscnstgatm
INTO (e_attch_create_allowed, e_attch_display_allowed)
WHERE form_scenario EQ lv_form_scenario AND
form_scen_stage EQ lv_step.
MOVE: e_attch_create_allowed TO ls_attachment_attr-modify_allowed,
e_attch_display_allowed TO ls_attachment_attr-display_allowed.
APPEND ls_attachment_attr TO lt_attachment_attr.
CLEAR: ls_attachment_attr.
IF lv_step_object_guid IS NOT INITIAL AND e_attch_display_allowed = abap_true.
cl_hrasr00_proc_obj_handler=>get_instance(
EXPORTING
step_guid = lv_step_object_guid " Step GUID
message_handler = lo_message_list " HR-PD Infotypes: Messages
no_auth_check = abap_true " Data Element for Domain BOOLE: TRUE (="X") and FALSE (=" ")
activity = 'R' " Activities - 'S', 'R' , 'W', 'X', 'D'
IMPORTING
instance = lo_ins " Process Object Handler
is_ok = lv_is_ok
).
IF lv_is_ok = abap_true.
lo_ins->get_attachments(
EXPORTING
message_handler = lo_message_list " HR-PD Infotypes: Messages
no_auth_check = abap_true " Data Element for Domain BOOLE: TRUE (="X") and FALSE (=" ")
activity = 'R' " Activities - 'R'
IMPORTING
attachments = lt_attachment "att " Table of Attributes and Contents of Attachment
).
LOOP AT lt_attachment INTO ls_attachment.
MOVE-CORRESPONDING: ls_attachment TO ls_attachment_m.
CALL FUNCTION 'SSFC_BASE64_ENCODE'
EXPORTING
bindata = ls_attachment-attachment_content
IMPORTING
b64data = ls_attachment_m-attachment_content
EXCEPTIONS
ssf_krn_error = 1
ssf_krn_noop = 2
ssf_krn_nomemory = 3
ssf_krn_opinv = 4
ssf_krn_input_data_error = 5
ssf_krn_invalid_par = 6
ssf_krn_invalid_parlen = 7
OTHERS = 8.
IF sy-subrc <> 0.
* Implement suitable error handling here
ENDIF.
APPEND ls_attachment_m TO lt_attachment_m.
CLEAR ls_attachment_m.
ENDLOOP.
ENDIF.
ENDIF.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
User | Count |
---|---|
3 | |
2 | |
2 | |
2 | |
2 | |
2 | |
2 | |
2 | |
1 | |
1 |