CE PLUS - Nota 011551

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.

 

Versões Tratadas

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