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

    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.
    
    "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 = 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