Quando o caso entra na caixa de entrada do usuário/responsável na aprovação ou qualquer outra decisão na caixa de entrada do FIORI é possível incluir um comentário/justificativa, esse texto quando volta para o backend entra como um anexo na caixa de email na SOST, o problema é que o nome do arquivo por standard fica como "Approver Comments", debugando percebi que esse texto é uma constante sem opção de tradução.
Sem muita opção no retorno para o backend eu altero o nome do arquivo antes de entrar na caixa de email para envio.
Essa informação fica gravado na tabela SOOD
Utilizei a função conforme abaixo:
Essa rotina eu inseri numa classe criada dentro do fluxo do workflow
DATA: l_doc_id TYPE sofolenti1-doc_id,
ls_doc_data TYPE sofolenti1.
DATA: lt_header TYPE TABLE OF solisti1,
lt_content TYPE TABLE OF solisti1.
ls_doc_data TYPE sofolenti1.
DATA: lt_header TYPE TABLE OF solisti1,
lt_content TYPE TABLE OF solisti1.
"O LOOP é necessário pois pode haver mais anexos
LOOP AT it_attach INTO DATA(ls_attach).
l_doc_id = ls_attach-instid.
LOOP AT it_attach INTO DATA(ls_attach).
l_doc_id = ls_attach-instid.
"Faço a importação dos dados do anexo
CALL FUNCTION 'SO_DOCUMENT_READ_API1'
EXPORTING
document_id = l_doc_id
IMPORTING
document_data = ls_doc_data
TABLES
object_header = lt_header
object_content = lt_content
EXCEPTIONS
document_id_not_exist = 1
operation_no_authorization = 2
x_error = 3
OTHERS = 4.
CALL FUNCTION 'SO_DOCUMENT_READ_API1'
EXPORTING
document_id = l_doc_id
IMPORTING
document_data = ls_doc_data
TABLES
object_header = lt_header
object_content = lt_content
EXCEPTIONS
document_id_not_exist = 1
operation_no_authorization = 2
x_error = 3
OTHERS = 4.
"Nesse caso peguei somente o objeto COMMENT ref. a justificativa gravado
IF sy-subrc = 0 AND
ls_doc_data-obj_name = 'COMMENT' AND
ls_doc_data-obj_descr = /iwwrk/if_wf_constants_gw=>gc_approver_comments.
DATA: l_attach_id TYPE soattinfi1-attach_id.
DATA: ls_attach_data TYPE soattchgi1.
CONCATENATE ls_doc_data-doc_id ls_doc_data-object_id
INTO l_attach_id RESPECTING BLANKS.
CLEAR ls_attach_data.
MOVE-CORRESPONDING ls_doc_data TO ls_attach_data.
ls_attach_data-obj_descr = mc_approver_filename. "Constante com outro nome " do arquivo
ls_attach_data-att_size = ls_doc_data-doc_size.
CALL FUNCTION 'SO_ATTACHMENT_UPDATE_API1'
EXPORTING
attachment_id = l_attach_id
attachment_data = ls_attach_data
TABLES
attachment_header = lt_header
attachment_content = lt_content
EXCEPTIONS
attachment_not_exist = 1
operation_no_authorization = 2
parameter_error = 3
x_error = 4
enqueue_error = 5
OTHERS = 6.
IF sy-subrc <> 0.
ENDIF.
ENDIF.
ENDLOOP.
IF sy-subrc = 0 AND
ls_doc_data-obj_name = 'COMMENT' AND
ls_doc_data-obj_descr = /iwwrk/if_wf_constants_gw=>gc_approver_comments.
DATA: l_attach_id TYPE soattinfi1-attach_id.
DATA: ls_attach_data TYPE soattchgi1.
CONCATENATE ls_doc_data-doc_id ls_doc_data-object_id
INTO l_attach_id RESPECTING BLANKS.
CLEAR ls_attach_data.
MOVE-CORRESPONDING ls_doc_data TO ls_attach_data.
ls_attach_data-obj_descr = mc_approver_filename. "Constante com outro nome " do arquivo
ls_attach_data-att_size = ls_doc_data-doc_size.
CALL FUNCTION 'SO_ATTACHMENT_UPDATE_API1'
EXPORTING
attachment_id = l_attach_id
attachment_data = ls_attach_data
TABLES
attachment_header = lt_header
attachment_content = lt_content
EXCEPTIONS
attachment_not_exist = 1
operation_no_authorization = 2
parameter_error = 3
x_error = 4
enqueue_error = 5
OTHERS = 6.
IF sy-subrc <> 0.
ENDIF.
ENDIF.
ENDLOOP.
Nenhum comentário:
Postar um comentário