quinta-feira, 20 de setembro de 2012

Smartforms - Passo a Passo - Parte II

* Olha ai, essa e a segunda parte sobre Smartforms onde agora falaremos
* sobre o programa que irá chamar e popular seu Smartforms.
* lembrando que depois desse passo iremos deixar esse mesmo Smart com
* uma cara de documento mesmo, e não esse rascunho de nada que fizemos,
* faremos tratativas de dados internos, criaremos mas parametros de
* Importação e tabelas, sem conta o Estilo que mostrei num proximo post.
*  Bons estudos.
*&---------------------------------------------------------------------*
REPORT z_prog_call_smartforms.

DATA :
  it_tsp01   TYPE TABLE OF tsp01,
  vl_fm_name TYPE rs38l_fnam.
CONSTANTS :
*  Aqui voçês coloquem o nome do Smartforms de vocês.
 
c_form TYPE rs38l_fnam VALUE 'ZSD_TESTE2'.


START-OF-SELECTION.

  SELECT *
    FROM tsp01
    INTO TABLE it_tsp01
    WHERE rqowner = sy-uname.

 
BREAK-POINT.

* Eu mantive os comentários do Post sobre essa função. Good Luck.

  IF it_tsp01 IS NOT INITIAL.

*  Executada a função que retorna o nome da função que chama o formulário
    PERFORM z_busca_nome_function.

* Executa o function que chama o formulário.
    PERFORM z_call_form.

 
ENDIF.


*&---------------------------------------------------------------------*
*&      Form  z_busca_nome_function
*&---------------------------------------------------------------------*
FORM z_busca_nome_function .

  CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'
    EXPORTING
      formname                 = c_form
*   VARIANT                  = ' '
*   DIRECT_CALL              = ' '
   IMPORTING
     fm_name                  = vl_fm_name
 EXCEPTIONS
   no_form                  = 1
   no_function_module       = 2
   OTHERS                   = 3
            .
ENDFORM.                    " z_busca_nome_function
*&---------------------------------------------------------------------*
*&      Form  z_call_form
*&---------------------------------------------------------------------*
FORM z_call_form .
*  Uma diquinha pra que você traga todos os parametros corretos é executar
* o smartforms, quando você apertar F8 ele ira para a transação se37 com
* função já escrita no campo do nome da função, copie o nome daquela função,
* volte para esse programa, clique no botão MODELO e e cole o nome da função,
* mas não se esqueça que esse nome de função é temporário, portanto, depois
* de fazer esse procedimento mude o nome da função que você colou pela variavel
* de retorno da função acima conforme eu fiz abaixo.

 
CALL FUNCTION vl_fm_name
* EXPORTING
*   ARCHIVE_INDEX              =
*   ARCHIVE_INDEX_TAB          =
*   ARCHIVE_PARAMETERS         =
*   CONTROL_PARAMETERS         =
*   MAIL_APPL_OBJ              =
*   MAIL_RECIPIENT             =
*   MAIL_SENDER                =
*   OUTPUT_OPTIONS             =
*   USER_SETTINGS              = 'X'
* IMPORTING
*   DOCUMENT_OUTPUT_INFO       =
*   JOB_OUTPUT_INFO            =
*   JOB_OUTPUT_OPTIONS         =
    TABLES
      it_tsp01                   = it_tsp01
   EXCEPTIONS
     formatting_error           = 1
     internal_error             = 2
     send_error                 = 3
     user_canceled              = 4
     OTHERS                     = 5
            .
  IF sy-subrc <> 0.
    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
            WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
 
ENDIF.


ENDFORM.                    " z_call_form

2 comentários:

  1. o tipo de variavel 'rs381_fnam' nao existe!! :/

    ResponderExcluir
    Respostas
    1. Olá! Sou iniciante em Smartforms, mas pelo que eu entendi, o correto seria o tipo RS38L-NAME.

      Pois o RS38L é um tipo de estrutura e NAME é um campo dessa estrutura.
      RS38L_FNAM é o elemento de dados do campo NAME da estrutura RS38L.

      Deu para entender? rsrs
      Creio ser isso, boa sorte ;)

      Excluir