*&---------------------------------------------------------------------*
*& 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.