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

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

Оффлайн Uukrul

  • SAP ECC 6.0 Ehp(*)
  • Administrator
  • Epic Member
  • *****
  • Сообщений: 3 809
  • Репутация: +47/-0
  • Пол: Мужской
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • 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
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • 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

Sapforum.Biz