* 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.
* 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
.
*&---------------------------------------------------------------------*
*& 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
o tipo de variavel 'rs381_fnam' nao existe!! :/
ResponderExcluirOlá! Sou iniciante em Smartforms, mas pelo que eu entendi, o correto seria o tipo RS38L-NAME.
ExcluirPois 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 ;)