Você está na página 1de 11

*********************************************************************** *** INCLUDE DE EXIT : ZXCOFU20_ZITXPS001 *** *** Descrio: Exit para a confirmao final de uma atividade ***

*** Objetivo : Enviar um e-mail com a confirmao final de uma *** *** atividade aps o apontamento de horas. *** *** Este envio ser feito atravs de um Workflow *** *** *** *** Verso Autor Data Observaes *** *** ------------ ------------------------*** *** 1.0 Juliano 28.10.2008 Desenvolvimento da CONFPS05 *** *********************************************************************** IF sy-uname = 'JUTIAGO' OR sy-uname = 'IVANNAV'. *----------------------------------------------------------------------* *INCLUDE para macros container * *----------------------------------------------------------------------* INCLUDE <cntn01>. " Business Object Repository (Versenden Spoollisten) *----------------------------------------------------------------------* * TIPOS * *----------------------------------------------------------------------* TYPES: BEGIN OF tp_tarefas. INCLUDE STRUCTURE zsps_tarefas. TYPES: END OF tp_tarefas. TYPES: BEGIN OF tp_grau. INCLUDE STRUCTURE zsps_grau. TYPES: END OF tp_grau. TYPES: BEGIN OF tp_atividade. INCLUDE STRUCTURE zsps_atividade. TYPES: END OF tp_atividade. TYPES: BEGIN OF tp_afabd. INCLUDE STRUCTURE afabd. TYPES: END OF tp_afabd. TYPES: BEGIN OF tp_afvx, aufpl TYPE v_olr3_afvx-aufpl, aplzl TYPE v_olr3_afvx-aplzl, ltxa1 TYPE v_olr3_afvx-ltxa1, fsedd TYPE v_olr3_afvx-fsedd, arbid TYPE v_olr3_afvx-arbid, werks TYPE v_olr3_afvx-werks, usr02 TYPE v_olr3_afvx-usr02, END OF tp_afvx. TYPES: BEGIN OF tp_afru, rueck TYPE afru-rueck, rmzhl TYPE afru-rmzhl, ltxa1 TYPE afru-ltxa1, txtsp TYPE afru-txtsp, abarb TYPE afru-abarb, aufpl TYPE afru-aufpl, aplzl TYPE afru-aplzl, aufnr TYPE afru-aufnr, aplfl TYPE afru-aplfl, vornr TYPE afru-vornr, END OF tp_afru. "N de roteiro de operaes na ordem "Numerador geral da ordem "Descrio da tarefa "Data prevista "Identificao de objeto para recurso "Centro "Lista de Distribuio de E-mails

TYPES: BEGIN OF tp_afrud. INCLUDE STRUCTURE afrud. TYPES: END OF tp_afrud. *----------------------------------------------------------------------* * TABELAS * *----------------------------------------------------------------------* DATA: t_swfuagents TYPE swfuagents, t_swc_object TYPE swc_object, t_qntcontainer TYPE qntcontainer. DATA: t_tarefas TYPE TABLE OF tp_tarefas tarefas t_afabd TYPE TABLE OF tp_afabd a de rede: tabela dilogo para AFAB t_afvx TYPE TABLE OF tp_afvx as tarefas t_afrud TYPE TABLE OF tp_afrud, dilogo para confirmao de ordens t_afru TYPE TABLE OF tp_afru aes de ordens t_grau TYPE TABLE OF tp_grau processamento t_linhas TYPE TABLE OF tline as linhas de observao da tarefa t_lista TYPE TABLE OF sodlienti1 s da lista de distribuio t_emails TYPE TABLE OF swd_mrcpnt de E-mails t_opcoes TYPE TABLE OF spopli de Opes t_atividade TYPE TABLE OF tp_atividade de informaes atividade WITH HEADER LINE, WITH HEADER LINE, WITH HEADER LINE, "Prximas "Diagram "Dados d "Tabela WITH HEADER LINE, WITH HEADER LINE, WITH HEADER LINE, WITH HEADER LINE, WITH HEADER LINE, WITH HEADER LINE, WITH HEADER LINE. "Confirm "Grau de "Texto d "Entrada "Tabela "Tabela "Tabela

*----------------------------------------------------------------------* * VARIVEIS * *----------------------------------------------------------------------* DATA: v_objkey TYPE sweinstcou-objkey, v_wi_id TYPE swwvpublic-wi_id, v_resposta(1) TYPE c, v_resp_col(1) TYPE c, v_desc_projeto TYPE proj-post1, v_desc_pep TYPE prps-post1, v_desc_tarefa TYPE afvc-ltxa1, v_data_prevista TYPE afvv-fsedd, v_centro_trab TYPE crhd-arbpl, v_centro(12) TYPE c, v_tarefa(17) TYPE c, v_cod_chave TYPE stxh-tdname, v_lista_distr TYPE soobjinfi1-obj_name, v_texto_mensagem(255) TYPE c, v_assunto(70) TYPE c, v_usuario(46) TYPE c, v_owner_name TYPE adrp-name_text, v_owner TYPE icl_claimowner. *----------------------------------------------------------------------* * CONSTANTES * *----------------------------------------------------------------------*

CONSTANTS: c_tipo_objeto c_evento c_tarefa(14) c_sim(1) c_nao(2) c_cancela(3) c_ativo(1)

TYPE TYPE TYPE TYPE TYPE TYPE TYPE

swetypecou-objtype swetypecou-event c c c c c

VALUE VALUE VALUE VALUE VALUE VALUE VALUE

'BUS2001', 'CREATED', 'WS99900005', '1', '2', 'A', 'X'.

*----------------------------------------------------------------------* * DECLARAO DO CONTAINER - WF * *----------------------------------------------------------------------* swc_container container_m. ************************************************************************ * DESENVOLVIMENTO DA CHAMADA DO WF - Confirmao da Atividade * ************************************************************************ ************************************************************************ *Seleciona outros dados da tarefa *--------------------------------------------------------------------* t_afrud[] = afrud_tab[]. SORT t_afrud BY aufpl ASCENDING. DELETE ADJACENT DUPLICATES FROM t_afrud COMPARING aufpl. SELECT aufpl aplzl ltxa1 fsedd arbid werks usr02 FROM v_olr3_afvx INTO TABLE t_afvx FOR ALL ENTRIES IN t_afrud WHERE aufpl = t_afrud-aufpl. *--------------------------------------------------------------------* *Seleciona o grau de processamento das confirmaes de ordens *--------------------------------------------------------------------* t_afrud[] = afrud_tab[]. SORT t_afrud BY rueck ASCENDING. DELETE ADJACENT DUPLICATES FROM t_afrud COMPARING rueck. SELECT rueck rmzhl ltxa1 txtsp abarb aufpl aplzl aufnr aplfl vornr FROM afru INTO TABLE t_afru FOR ALL ENTRIES IN t_afrud WHERE rueck = t_afrud-rueck. *--------------------------------------------------------------------* *Preenche a tabela de opes para a popup de confirmao coletiva *--------------------------------------------------------------------* t_opcoes-varoption = text-009. "Sim APPEND t_opcoes. CLEAR t_opcoes. t_opcoes-varoption = text-011. "No APPEND t_opcoes.

CLEAR t_opcoes. t_opcoes-varoption = text-012. "No, desejo confirmar o envio a cada atividade APPEND t_opcoes. *--------------------------------------------------------------------* *Monta o nome do usurio. v_owner = sy-uname. CALL FUNCTION 'ICLC_CLAIMOWNER_NAME_GET' EXPORTING * OWNERTYPE = 'US' owner = v_owner * DATE = SY-DATUM IMPORTING owner_name = v_owner_name EXCEPTIONS user_does_not_exist = 1 OTHERS = 2. IF sy-subrc IS INITIAL AND v_owner_name IS NOT INITIAL. CONCATENATE sy-uname '-' v_owner_name INTO v_usuario SEPARATED BY space. ELSE. v_usuario = sy-uname. ENDIF. LOOP AT caufvd_tab. *Seleciona a descrio do projeto SELECT SINGLE post1 FROM proj INTO v_desc_projeto WHERE pspnr = caufvd_tab-pronr. *Seleciona SELECT FROM INTO WHERE a descrio do elemento pep SINGLE post1 prps v_desc_pep pspnr = caufvd_tab-pspel.

LOOP AT afrud_tab WHERE aufnr = caufvd_tab-aufnr. CHECK afrud_tab-aueru = c_ativo. "Valida se atividade foi completada para continuar "Validao quando for confirmao coletiva de atividades IF sy-tcode = 'CN27' AND v_resp_col IS INITIAL. * CALL FUNCTION 'POPUP_TO_CONFIRM' * EXPORTING * titlebar = text-007 "Apontamento Coletivo de Atividades * text_question = text-008 "Deseja enviar a mensagem de confir mao simultaneamente para todas as atividades apontadas? * display_cancel_button = 'X' * IMPORTING * answer = v_resp_col. CALL FUNCTION 'POPUP_TO_DECIDE_LIST' EXPORTING CURSORLINE = 1 MARK_FLAG = ' ' MARK_MAX = 1 START_COL = 0 START_ROW = 0

* * * * *

* *

textline1 textline2 TEXTLINE3 titel DISPLAY_ONLY IMPORTING answer TABLES t_spopli IF v_resp_col = '3'. v_resp_col = c_cancela. ENDIF. ENDIF.

= = = ' = = '

text-008 text-013 ' text-007 '

= v_resp_col = t_opcoes.

*Monta cdigo da tarefa *--------------------------------------------------------------------* CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT' EXPORTING input = afrud_tab-aufnr IMPORTING output = afrud_tab-aufnr. CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT' EXPORTING input = afrud_tab-vornr IMPORTING output = afrud_tab-vornr. CONCATENATE afrud_tab-aufnr afrud_tab-vornr INTO v_tarefa SEPARATED BY spa ce. *--------------------------------------------------------------------* *Le outros dados da tarefa READ TABLE t_afvx WITH KEY aufpl = afrud_tab-aufpl aplzl = afrud_tab-aplzl. CASE v_resp_col. WHEN c_sim. "Confirmao para todas as atividades v_resposta = c_sim. WHEN c_nao. "No envia nenhuma confirmao de atividade EXIT. WHEN c_cancela OR space. "Solicita confirmao do envio da atividade individ ual CONCATENATE text-014 v_tarefa t_afvx-ltxa1 '?' INTO v_texto_mensagem S EPARATED BY space. CALL FUNCTION 'POPUP_TO_CONFIRM' EXPORTING titlebar = text-004 "Apontamento de Horas text_question = v_texto_mensagem display_cancel_button = ' ' IMPORTING answer = v_resposta. ENDCASE. CHECK v_resposta = c_sim. "Valida a resposta para continuar o processament o

IF t_afvx-usr02 IS INITIAL. "Verifica se h lista de distribuio MESSAGE i899(mm) WITH text-019 text-015 text-021. "No foi possvel enviar a mensagem. No h Lista de Distribuio indicada na ativid ade. CONTINUE. ENDIF. *Seleciona os e-mails da lista de distribuio e monta uma tabela *--------------------------------------------------------------------* v_lista_distr = t_afvx-usr02. CALL FUNCTION 'SO_DLI_READ_API1' EXPORTING dli_name = shared_dli = TABLES dli_entries = EXCEPTIONS dli_not_exist = operation_no_authorization = parameter_error = x_error = OTHERS =

v_lista_distr 'C' t_lista 1 2 3 4 5.

IF sy-subrc = 1. "Verifica se a Lista de Distribuio existe MESSAGE i899(mm) WITH text-019 text-016 text-020. "No foi possvel enviar a mensagem. Lista de Distribuio indicada na atividade no existe. CONTINUE. ENDIF. IF t_lista[] IS INITIAL. "Verifica se h e-mails cadastrados na lista de Dis trubuio MESSAGE i899(mm) WITH text-019 text-017. "No foi possvel enviar a mensagem. No contm e-mails na Lista de Distribuio. CONTINUE. ENDIF. LOOP AT t_lista. t_emails = t_lista-member_adr. APPEND t_emails. ENDLOOP. swc_set_table container_m 'TAB_EMAILS' t_emails. FREE t_emails. *--------------------------------------------------------------------* *Monta tabela informaes da atividade e armazena no container *--------------------------------------------------------------------* * swc_set_element container_m 'PROJETO' caufvd_tab-pronr. * swc_set_element container_m 'DESC_PROJETO' v_desc_projeto. * * swc_set_element container_m 'PEP' caufvd_tab-pspel. * swc_set_element container_m 'DESC_PEP' v_desc_pep. * * swc_set_element container_m 'TAREFA' v_tarefa. * swc_set_element container_m 'DESC_TAREFA' t_afvx-ltxa1.

*****PROJETO CLEAR t_atividade. t_atividade-campo = text-027. "Projeto: CALL FUNCTION 'CONVERSION_EXIT_KONPD_OUTPUT' EXPORTING input = caufvd_tab-pronr IMPORTING output = t_atividade-valor. APPEND t_atividade. *Monta o campo assunto do e-mail com o projeto e descrio do projeto CONCATENATE t_atividade-valor '-' v_desc_projeto INTO v_assunto. swc_set_element container_m 'ASSUNTO' v_assunto. CLEAR t_atividade. t_atividade-campo = text-023. "Descrio: t_atividade-valor = v_desc_projeto. APPEND t_atividade. CLEAR t_atividade. APPEND t_atividade. *****ELEMENTO PEP CLEAR t_atividade. t_atividade-campo = text-028. "Elem. PEP: CALL FUNCTION 'CONVERSION_EXIT_ABPSP_OUTPUT' EXPORTING input = caufvd_tab-pspel IMPORTING output = t_atividade-valor. APPEND t_atividade. CLEAR t_atividade. t_atividade-campo = text-023. "Descrio: t_atividade-valor = v_desc_pep. APPEND t_atividade. CLEAR t_atividade. APPEND t_atividade. *****TAREFA CLEAR t_atividade. t_atividade-campo = text-029. "Tarefa: t_atividade-valor = v_tarefa. APPEND t_atividade. CLEAR t_atividade. t_atividade-campo = text-023. "Descrio: t_atividade-valor = t_afvx-ltxa1. APPEND t_atividade. swc_set_table container_m 'TAB_ATIVIDADE' t_atividade. FREE t_atividade. *--------------------------------------------------------------------* *Monta tabela de datas da atividade e armazena no container *--------------------------------------------------------------------* * swc_set_element container_m 'DATA_PREVISTA' t_afvx-fsedd.

swc_set_element container_m 'DATA_REAL' afrud_tab-iedd.

*****DATA PREVISTA CLEAR t_atividade. t_atividade-campo = text-030. "Dt.Prevista: WRITE t_afvx-fsedd TO t_atividade-valor . APPEND t_atividade. *****DATA REAL CLEAR t_atividade. t_atividade-campo = text-031. "Dt.Real: WRITE afrud_tab-iedd TO t_atividade-valor . APPEND t_atividade. *****USURIO CLEAR t_atividade. t_atividade-campo = text-032. "Usurio: t_atividade-valor = v_usuario. APPEND t_atividade. swc_set_table container_m 'TAB_ATIVIDADE_DATAS' t_atividade. FREE t_atividade. *--------------------------------------------------------------------* *Seleciona e monta a tabela de Prximas tarefas *--------------------------------------------------------------------* CALL FUNCTION 'NW_BT_GET_AFABD_FOR_ACT' EXPORTING aplzl_imp = afrud_tab-aplzl aufpl_imp = afrud_tab-aufpl TABLES afab_tab = t_afabd. * Preenche cabealho das prximas tarefas t_tarefas-tarefa = text-022. "Prximas(s) tarefas(s): t_tarefas-ltxa1 = text-023. "Descrio: APPEND t_tarefas. LOOP AT t_afabd WHERE aplzl_vor = afrud_tab-aplzl AND aufpl_vor = afrud_tab-aufpl. CLEAR: t_tarefas, v_tarefa, v_centro. *Monta o cdigo da prxima tarefa *--------------------------------------------------------------------* CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT' EXPORTING input = t_afabd-netzpl_nch IMPORTING output = t_afabd-netzpl_nch. CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT' EXPORTING input = t_afabd-vorn2 IMPORTING

output = t_afabd-vorn2. CONCATENATE t_afabd-netzpl_nch t_afabd-vorn2 INTO v_tarefa SEPARATED BY space. t_tarefas-tarefa = v_tarefa. *--------------------------------------------------------------------* *Le o texto descritivo e centro da prxima tarefa READ TABLE t_afvx WITH KEY aufpl = t_afabd-aufpl_nch aplzl = t_afabd-aplzl_nch. IF sy-subrc IS INITIAL. t_tarefas-ltxa1 = t_afvx-ltxa1. "Descrio da prxima tarefa SELECT FROM INTO WHERE space. ENDIF. APPEND t_tarefas. CLEAR t_tarefas. t_tarefas-tarefa = text-024. "CT/Centro t_tarefas-ltxa1 = v_centro. APPEND t_tarefas. CLEAR t_tarefas. APPEND t_tarefas. ENDLOOP. swc_set_table container_m 'TAB_TAREFAS' t_tarefas. FREE: t_afabd, t_tarefas. *--------------------------------------------------------------------* *Seleciona e monta o grau de processamento *--------------------------------------------------------------------* MOVE-CORRESPONDING afrud_tab TO t_afru. "Necessrio para capturar o ltimo apo ntamento APPEND t_afru. SORT t_afru BY rueck rmzhl ASCENDING. * Preenche cabealho do grau de processamento t_grau-grau = text-025. "Grau Proces. t_grau-observacao = text-026. "Observao de tarefa: APPEND t_grau. LOOP AT t_afru WHERE rueck = afrud_tab-rueck. CLEAR t_grau. APPEND t_grau. CONCATENATE ' ' t_afru-abarb '%:' INTO t_grau-grau RESPECTING BLANKS. SINGLE arbpl crhd v_centro_trab objid = t_afvx-arbid.

CONCATENATE v_centro_trab '/' t_afvx-werks INTO v_centro SEPARATED BY

IF t_afru-txtsp IS INITIAL. t_grau-observacao = t_afru-ltxa1. APPEND t_grau. ELSE.

CLEAR v_cod_chave. CALL FUNCTION 'CO_ZK_TEXTKEY_AFRU' EXPORTING rmzhl = t_afru-rmzhl rueck = t_afru-rueck IMPORTING ltsch = v_cod_chave. CALL FUNCTION 'READ_TEXT' EXPORTING id language name object TABLES lines EXCEPTIONS id language name not_found object reference_check wrong_access_to_archive OTHERS IF sy-subrc IS INITIAL. LOOP AT t_linhas. t_grau-observacao = t_linhas-tdline. APPEND t_grau. CLEAR t_grau. ENDLOOP. ENDIF. ENDIF. CLEAR t_grau. APPEND t_grau. ENDLOOP. swc_set_table container_m 'TAB_GRAU' t_grau. FREE t_grau. *--------------------------------------------------------------------* *Dispara o WF CALL FUNCTION 'SWW_WI_START_SIMPLE' EXPORTING task = c_tarefa called_in_background = 'X' IMPORTING wi_id = v_wi_id TABLES agents = t_swfuagents wi_container = container_m EXCEPTIONS id_not_created = 1 read_failed = 2

= = = =

'RMEL' t_afru-txtsp v_cod_chave 'AUFK'

= t_linhas = = = = = = = = 1 2 3 4 5 6 7 8.

immediate_start_not_possible execution_failed invalid_status OTHERS

= = = =

3 4 5 6.

IF sy-subrc IS NOT INITIAL. MESSAGE i899(mm) WITH text-006. "A confirmao da Atividade no foi enviada ENDIF. ENDLOOP. IF v_resp_col = c_nao. EXIT. ENDIF. ENDLOOP. ENDIF.