terça-feira, 9 de novembro de 2021

Alterando nome de arquivo anexo - caixa de entrada FIORI

UKM_CASE - com workflow de aprovação de crédito.
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

    DATAl_doc_id    TYPE sofolenti1-doc_id,
          ls_doc_data TYPE sofolenti1.

    DATAlt_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.
        
      "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.
     
      "Nesse caso peguei somente o objeto COMMENT ref. a justificativa gravado
      IF sy-subrc AND
         ls_doc_data-obj_name 'COMMENT' AND
         ls_doc_data-obj_descr /iwwrk/if_wf_constants_gw=>gc_approver_comments.

        DATAl_attach_id TYPE soattinfi1-attach_id.
        DATAls_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.