Автор Тема: SSF_FUNCTION_MODULE_NAME - Получить имя функционального модуля смартформы  (Прочитано 5777 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Uukrul

  • SAP ECC 6.0 Ehp(*)
  • Administrator
  • Epic Member
  • *****
  • Сообщений: 3 758
  • Репутация: +47/-0
  • Пол: Мужской
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • Sapforum.BIZ
SSF_FUNCTION_MODULE_NAME - Получить имя функционального модуля смартформы. В общем виде имена функциональных модулей интерфейса для смартформ генерируются автоматически, будет что-то типа /1BCDWB/SF00000032 при этом в системе разработки и в системе продуктива имена вероятнее всего будут разные. поэтому в своих программах где печатаются какие-то выходные формы сначала узнаем имя функционального модуля интерфейса для смартформы, а уже дальше делаем его вызов. Примерно где-то так:
Код: You are not allowed to view links. Register or Login
DATA: l_fm_name type rs38l_fnam.

  call function 'SSF_FUNCTION_MODULE_NAME'
    exporting
      formname                 = 'Z_SMART_FORM'
*     VARIANT                  = ' '
*     DIRECT_CALL              = ' '
   importing
     fm_name                  = l_fm_name
   exceptions
     no_form                  = 1
     no_function_module       = 2
     others                   = 3.
  if sy-subrc <> 0.
*   Типа не нашли такой смартформы
    message i263 with 'Z_SMART_FORM'.
    exit.
  endif.

* Вывод печатной формы по найденому имени.
  call function l_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
      lt_matnr                 = lt_matnr_prn
   exceptions
     formatting_error           = 1
     internal_error             = 2
     send_error                 = 3
     user_canceled              = 4
     others                     = 5.

Оффлайн Паганель

  • Я НЕ ЗАНИМАЮСЬ SAP
  • Administrator
  • Full Member
  • *****
  • Сообщений: 1 367
  • Репутация: +20/-0
  • Пол: Мужской
  • https://noteifyapp.com
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • MacPlus Software
Добавлю и свои 5 копеек (сразу скажу, что системы  под рукой нет, пишу по сохраненным в файл программам, если будут ошибки, пишите).

Итак, данный FM удобно использовать в своих программах печати, например у меня, есть несколько программ, которые выводят на печать несколько форм.

Глобальные данные, например в начале программы:
Код: You are not allowed to view links. Register or Login
FORMNAME type TDSFNAME.          " Глобальная переменная для имени формы, можно конечно и передавать в perform
fm1 type RS38L_FNAM.                  " Имя функционального модуля смартформы, у Уукрула - l_fm_name - имя функционального модуля смартформы
z_bwart like mseg-bwart.               " Переменная с видом движения

"определение параметров, которые передаются в смартформу

data: OUTP type SSFCTRLOP.
data: z_mblnr type mseg-mblnr.
data: z_tax type mseg-dmbtr.

"................
!!! Важно, что бы передать в cмартформу табличку, в интерфейсе смартформы, должна быть объявлена таблица,
в объявлении используется существующая структура (создавать в SE11 ;-)). см. рисунок 1.
С этим же типом, в программе объявляем внутреннюю таблицу:
Код: You are not allowed to view links. Register or Login
" объявление таблицы, с использованием существующей структуры
" вроде бы так, если ошибся, подправьте
GT_ITEMS type standart table of z_print_items.
   

Для удобства использования, FM упакована в отдельную форму:
Код: You are not allowed to view links. Register or Login
form ssf.
  call function 'SSF_FUNCTION_MODULE_NAME'
    EXPORTING
      formname           = FORMNAME
    IMPORTING
      FM_NAME            = fm1
    EXCEPTIONS
      NO_FORM            = 1
      NO_FUNCTION_MODULE = 2
      OTHERS             = 3.
endform.                    "ssf

Пример использования, в зависимости от,  например вида движения, выводится либо та,  либо иная форма.
Выборка и подготовка данных, для простоты примера пропущена, думаю,  кто захочет - сможет наваять.

Код: You are not allowed to view links. Register or Login
case z_bwart.
    when '101'. " Приход
           FORMNAME = 'ZF_INCOME'.
           perform ssf.
           perform smpr101.
    when '311'.  " Перемещение
           FORMNAME = 'ZF_MOVE'.
           perform ssf.
           perform smpr311.        
endcase.

Ну и код вывода печатной формы (на печать или предварительный просмотр)

Код: You are not allowed to view links. Register or Login
form smpr101.
  "Парметры вывода, см подробнее структуру SSFCTRLOP
  outp-no_dialog = 'X'.
  outp-preview = 'X'.
  
  call function fm1
    EXPORTING
      CONTROL_PARAMETERS = OUTP " определено в SmartForm"е
I_MBLNR         =  Z_MBLNR
      " I_TAX                =  Z_TAX
" .......
" Другие параметры объявленные в интерфейсе смартформы (секция Интерфейс формуляра)
" .......
TABLES
      I_ITEMS             = GT_ITEMS " См. выше
    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.
  else.
  endif.
« Последнее редактирование: Февраль 15, 2010, 09:08:22 pm от Паганель »
You are not allowed to view links. Register or Login
You are not allowed to view links. Register or Login
You are not allowed to view links. Register or Login
You are not allowed to view links. Register or Login