SMARTFORMS简单动态调用的方法程序

*&---------------------------------------------------------------------*
*& Report ZPROGRAM_F0066
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT zprogram_f0066.

DATA lv_head TYPE zpurchase_header.
DATA lt_item TYPE TABLE OF ZPURCHASE_item.
DATA wa_item TYPE ZPURCHASE_item.
DATA lt_makt TYPE TABLE OF makt.
DATA wa_makt TYPE makt.
DATA fm_name TYPE rs38l_fnam. "这里参考的是函数SSF_FUNCTION_MODULE_NAME里面的输出参数

SELECT SINGLE * FROM ekko
  INTO CORRESPONDING FIELDS OF lv_head.

SELECT SINGLE batxt FROM t161t INTO lv_head-batxt
  WHERE bsart = lv_head-bsart.

lv_head-mc_name1 = '有限公司'.

SELECT * FROM ekpo INTO CORRESPONDING FIELDS OF TABLE lt_item
  WHERE ebeln = lv_head-ebeln.

IF lt_item IS NOT INITIAL.
  SELECT * FROM makt INTO TABLE lt_makt FOR ALL ENTRIES IN
    lt_item WHERE matnr = lt_item-matnr.
ENDIF.

LOOP AT lt_item INTO wa_item.
  READ TABLE lt_makt INTO wa_makt WITH KEY matnr = wa_item-matnr.
  IF sy-subrc = 0.
    wa_item-maktx = wa_makt-maktx.
    MODIFY lt_item FROM wa_item.
  ENDIF.
ENDLOOP.

CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'    ”这个就是接收smartform名字的函数
  EXPORTING
    formname = 'ZSF_F002' "这里的的ZSF_F002是smartform的表单名字
*   VARIANT  = ' '
*   DIRECT_CALL              = ' '
  IMPORTING
    fm_name  = fm_name   这是传回函数解析到的smartform的函数名称,提供给下面的函数调用需要用到的函数名字
* EXCEPTIONS
*   NO_FORM  = 1
*   NO_FUNCTION_MODULE       = 2
*   OTHERS   = 3
  .
IF sy-subrc <> 0.
* Implement suitable error handling here
ENDIF.

CALL FUNCTION fm_name  "这里函数的名字本来是smartforms中生成的对应smartform的函数,但是实际箱项目中都将smartform定义为一个变量来接收smart form函数的名字,起到动态的效果
  EXPORTING
*   ARCHIVE_INDEX    =
*   ARCHIVE_INDEX_TAB          =
*   ARCHIVE_PARAMETERS         =
*   CONTROL_PARAMETERS         =
*   MAIL_APPL_OBJ    =
*   MAIL_RECIPIENT   =
*   MAIL_SENDER      =
*   OUTPUT_OPTIONS   =
*   USER_SETTINGS    = 'X'
    i_head           = lv_head
* IMPORTING
*   DOCUMENT_OUTPUT_INFO       =
*   JOB_OUTPUT_INFO  =
*   JOB_OUTPUT_OPTIONS         =
  TABLES
    t_item           = lt_item
  EXCEPTIONS
    formatting_error = 1
    internal_error   = 2
    send_error       = 3
    user_canceled    = 4
    OTHERS           = 5.
IF sy-subrc <> 0.
* Implement suitable error handling here
ENDIF.

猜你喜欢

转载自www.cnblogs.com/SAPing888/p/12908877.html