Módulo: DOC. EXPORTAÇÃO
Funcionalidade: Embarque
Data/Hora da Publicação: 24/10/2011 09:56:07
Data/Hora Última Alteração: 24/10/2011 09:56:07
Descrição da Nota: CRIAÇÃO DOS OBJETOS COMUNS DO GENERIC SERVICES OBJECT (GOS)
Sintoma
Criação dos objetos comuns para uso dos "Serviços para objeto" nos programas.
Solução
Criar os objetos abaixo. A funcionalidade é habilitada por programa, usando a transação
/PWS/ZYGLT388.
8.0
Informações Complementares
----------------------------------------------------------------------------------------------------
Nota Número 11551 Data: 17/10/2011 Hora: 12:07:13
----------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------
Nota Número : 11551
Categoria : Melhoria
Prioridade : Baixa
Versão PW.CE : 8.0
Pacote : 00009
Agrupamento : 00090
----------------------------------------------------------------------------------------------------
Referência às notas relacionadas:
Número - Ordem - Versão - Pacote - Descrição Breve
----------------------------------------------------------------------------------------------------
CRIAÇÃO DOS OBJETOS COMUNS DO GENERIC SERVICES OBJECT (GOS)
----------------------------------------------------------------------------------------------------
Palavras Chave:
GENERIC SERVICES OBJECT GOS SERVIÇOS PARA OBJETO
----------------------------------------------------------------------------------------------------
Objetos da nota:
CLAS /PWS/ZYGL_CL_GOS
FUGR /PWS/ZYGLGF7
TABL /PWS/ZYGLT388
TOBJ /PWS/ZYGLT388S
TRAN /PWS/ZYGLT388
----------------------------------------------------------------------------------------------------
Modificações efetuadas em CLAS /PWS/ZYGL_CL_GOS
Criar a classe /PWS/ZYGL_CL_GOS (classes são criadas usando a transação SE24)
Descrição: GL - Classe para manipulação do Generic Object Services
Pacote: /PWS/ZYGL
Final: SIM
Geração de instância: 2 - Público
Criar 2 atributos:
1º) Atributo
Nome: BUS_OBJ_IDENT
Tipo: Instance Attribute
Visibilidade: Private
Tipo Atributo: Type
Tipo Referência: BORIDENT
Descrição: <aceitar descrição do elemento de dados>
2º) Atributo
Nome: BUS_OBJ_MANAGER
Tipo: Instance Attribute
Visibilidade: Private
Tipo Atributo: Type Ref To
Tipo Referência: CL_GOS_MANAGER
Descrição: <aceitar descrição do elemento de dados>
Criar 5 métodos:
1º) Método
Nome: CONSTRUCTOR
Tipo: Instance Method
Visibilidade: Public
Descrição: CONSTRUCTOR
Parâmetros (3):
2.1) 1º Parâmetro
Nome: OBJTYPE Type BORIDENT-OBJTYPE
Descrição: Categoria de objeto
2.2) 2º Parâmetro
Nome: OBJKEY Type BORIDENT-OBJKEY
Descrição: Chave de objeto
2.3) 3º Parâmetro
Nome: PROGRAM Type PROGRAMM
Descrição: Nome do programa ABAP
Exceções (1):
Nome: NOT_AUTHORIZED
Descrição: Publicação não autorizada para o programa
Código:
* >> Início
METHOD constructor.
IF is_publication_authorized( program ) = abap_false.
RAISE not_authorized.
ENDIF.
me->bus_obj_ident-objtype = objtype.
me->bus_obj_ident-objkey = objkey.
ENDMETHOD.
* << Fim
2º) Método
Nome: DELETE_ALL_ITEMS
Tipo: Instance Method
Visibilidade: Public
Descrição: Exclui todos os objetos criados
Parâmetros (0): Não há
Código:
* >> Início
METHOD delete_all_items.
DATA: _parent TYPE borident,
_child TYPE borident,
_links TYPE STANDARD TABLE OF relgraphlk,
_link LIKE LINE OF _links[],
_folder TYPE soodk,
_object TYPE soodk.
* 1º passo: Determinar a os objetos ligados
CALL FUNCTION 'SREL_GET_NEXT_RELATIONS'
EXPORTING
object = me->bus_obj_ident
TABLES
links = _links[]
EXCEPTIONS
internal_error = 1
no_logsys = 2
OTHERS = 3.
IF sy-subrc <> 0 OR _links[] IS INITIAL.
EXIT.
ENDIF.
* 2º passo: Excluir os objetos, um a um
LOOP AT _links[] INTO _link
WHERE reltype = 'NOTE'
OR reltype = 'PNOT'
OR reltype = 'ATTA'
OR reltype = 'URL'.
_parent-objkey = _link-objkey_a.
_parent-objtype = _link-objtype_a.
_parent-logsys = _link-logsys_a.
_child-objkey = _link-objkey_b.
_child-objtype = _link-objtype_b.
_child-logsys = _link-logsys_b.
CALL FUNCTION 'BINARY_RELATION_DELETE_COMMIT'
EXPORTING
obj_rolea = _parent
obj_roleb = _child
relationtype = _link-reltype
EXCEPTIONS
OTHERS = 0.
CASE _link-reltype.
WHEN 'NOTE' OR 'ATTA' OR 'URL'.
_folder = _child-objkey(17).
_object = _child-objkey+17(17).
WHEN 'PNOT'.
_folder = _child-objkey+12(17).
_object = _child-objkey+29(17).
WHEN OTHERS.
CONTINUE.
ENDCASE.
CALL FUNCTION 'SO_OBJECT_DELETE_IN_VB' IN UPDATE TASK
EXPORTING
folder_id = _folder
object_id = _object
EXCEPTIONS
OTHERS = 0.
ENDLOOP.
ENDMETHOD.
* << Fim
3º) Método
Nome: PUBLISH
Tipo: Instance Method
Visibilidade: Public
Descrição: Publica os serviços (exibe o ícone dos serviços)
Parâmetros (0): Não há
Exceções (3):
3.1)Nome: OBJECT_INVALID
3.1)Descrição: Identificador inválido de objeto BOR
3.2)Nome: CALLBACK_INVALID
3.2)Descrição: Tipo incorreto de interface para callback
3.3)Nome: ERROR
3.3)Descrição: Erro não especificado
Código:
* >> Início
METHOD publish.
CHECK me->bus_obj_manager IS INITIAL.
CREATE OBJECT me->bus_obj_manager
EXPORTING
is_object = me->bus_obj_ident
ip_no_commit = ' '
EXCEPTIONS
object_invalid = 1
callback_invalid = 2
others = 3.
CASE sy-subrc.
WHEN 1.
MESSAGE ID sy-msgid
TYPE sy-msgty
NUMBER sy-msgno
WITH sy-msgv1
sy-msgv2
sy-msgv3
sy-msgv4
RAISING object_invalid.
WHEN 2.
MESSAGE ID sy-msgid
TYPE sy-msgty
NUMBER sy-msgno
WITH sy-msgv1
sy-msgv2
sy-msgv3
sy-msgv4
RAISING callback_invalid.
WHEN 3.
RAISE error.
ENDCASE.
ENDMETHOD.
* << Fim
4º) Método
Nome: UNPUBLISH
Tipo: Instance Method
Visibilidade: Public
Descrição: Despublica os serviços (remove o ícone dos serviços)
Parâmetros (0): Não há
Código:
* >> Início
METHOD unpublish.
CALL METHOD me->bus_obj_manager->unpublish.
FREE me->bus_obj_manager.
ENDMETHOD.
* << Fim
5º) Método
Nome: IS_PUBLICATION_AUTHORIZED
Tipo: Instance Method
Visibilidade: Private
Descrição: A publicação está autorizada? (V/F)
Parâmetros (2):
5.1) 1º Parâmetro
Nome: PROGRAM
Tipo: Importing
Tipo Atributo: Type
Tipo referência: PROGRAMM
Descrição: Nome do programa ABAP
5.2) 2º Parâmetro
Nome: AUTHORIZED
Tipo: Returning
Tipo Atributo: Type
Tipo referência: ABAP_BOOL
Descrição: Autorizado
Código:
* >> Início
METHOD is_publication_authorized.
DATA: _program TYPE /pws/zyglt388-program_name. "#EC NEEDED
SELECT SINGLE program_name
FROM /pws/zyglt388
INTO _program
WHERE program_name = program.
IF sy-subrc = 0.
authorized = abap_true.
ELSE.
authorized = abap_false.
ENDIF.
ENDMETHOD.
* << Fim
----------------------------------------------------------------------------------------------------
Modificações efetuadas em FUGR /PWS/ZYGLGF7
Criar o grupo de funções /PWS/ZYGLGF7
Pacote: /PWS/ZYGL
Descrição: GL - Funções/Diálogos do GOS
----------------------------------------------------------------------------------------------------
Modificações efetuadas em TABL /PWS/ZYGLT388
Criar a tabela transparante /PWS/ZYGLT388
Descrição (PT): GL - Programas autorizados para Generic Object Services
Descrição (EN): GL - Authorized programs for Generic Object Services
Pacote: /PWS/ZYGL
Classe de entrega: C
Atualização permitida?: SIM
Lista de campos (2):
Nome: MANDT
Elemento de dados: MANDT
Chave: Sim
Nome: PROGRAM_NAME
Elemento de dados: PROGRAMM
Chave: Sim
Opções técnicas da tabela:
-Tipo de dados: APPL2
-Categor.tamanho: 0
-Armazenamento em buffer: Não permitido
----------------------------------------------------------------------------------------------------
Modificações efetuadas em TOBJ /PWS/ZYGLT388S
Criar o diálogo de atualização para a tabela /PWS/ZYGLT388 (Criados na transação SE54, opção
"Objetos Gerados")
Grupo de autorização: &NC&
Grupo de funções: /PWS/ZYGLGF7
Cl.desenvolvimento: /PWS/ZYGL
Categoria de atualização: Nível único
Tela de síntese: 388
Rotina de registro: Standard
----------------------------------------------------------------------------------------------------
Modificações efetuadas em TRAN /PWS/ZYGLT388
Criar a transação de parâmetros /PWS/ZYGLT388
Cl.desenvolvimento: /PWS/ZYGL
Texto da transação (PT): Autorização para GOS
Texto da transação (EN): Authorization for GOS
Transação: SM30
Omitir 1ª tela: Sim
Herdar características GUI: Sim
Parâmetros (2):
-(a) Campo de tela: VIEWNAME
-(a) Valor: /PWS/ZYGLT388
-(b) Campo de tela: SHOW
-(b) Valor: X