要运行这个程序要先做个 SMARTFORM 程序。例子可参照:
SETP1 :http://www.cnblogs.com/zhumk/archive/2005/06/04/167896.html
SETP2:http://www.cnblogs.com/zhumk/archive/2005/06/04/167904.html
*&---------------------------------------------------------------------*
*& Report ZTEST6
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT ZTEST6.
INCLUDE ZTEST6TOP.
INCLUDE ZTEST6FI01.
INITIALIZATION.
PERFORM SMARTFORMSTEST.
〉〉〉〉〉〉〉〉〉〉〉〉〉〉〉〉〉〉〉〉〉〉〉〉〉〉〉〉〉〉
*&---------------------------------------------------------------------*
*& Include ZTEST6TOP
*&---------------------------------------------------------------------*
TYPES: BUFFER_ID(80) TYPE C.
DATA WA_INDX TYPE INDX.
DATA: HEADERNAME(18) TYPE C,
ITEMSNAME(18) TYPE C.
DATA: WL_FMNAME TYPE RS38L_FNAM.
DEFINE SAVEBUFFER.
PERFORM SAVE_TO_BUFFER USING &1 &2.
END-OF-DEFINITION.
DEFINE CLEARBUFFER.
PERFORM CLEAR_BUFFER USING &1.
END-OF-DEFINITION.
DATA: FNAME(128),
FTYPE(3),
FSIZE TYPE I.
* CELL CONTENT DEFINE
TYPES: BEGIN OF LINE,
COL1 TYPE I,
COL2 TYPE I,
COL3 TYPE I,
COL4 TYPE I,
COL5 TYPE I,
COL6 TYPE I,
COL7 TYPE I,
COL8 TYPE I,
END OF LINE.
DATA: TAB TYPE TABLE OF LINE,
LIN TYPE LINE.
* CELL NAME DEFINE
TYPES: BEGIN OF LINECELL,
COL1(8) TYPE C,
COL2(8) TYPE C,
COL3(8) TYPE C,
COL4(8) TYPE C,
COL5(8) TYPE C,
COL6(8) TYPE C,
COL7(8) TYPE C,
COL8(8) TYPE C,
END OF LINECELL.
DATA: LINNAME TYPE LINECELL,
TABNAME TYPE TABLE OF LINECELL.
*
〉〉〉〉〉〉〉〉〉〉〉〉〉〉〉〉〉〉〉〉〉〉〉〉〉〉〉〉〉〉〉〉〉〉〉
*&---------------------------------------------------------------------*
*& Include ZTEST6FI01
*&---------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& Form SMARTFORMSTEST
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM SMARTFORMSTEST .
DO 5 TIMES.
LIN-COL1 = SY-INDEX.
LIN-COL2 = SY-INDEX * 2.
LIN-COL3 = SY-INDEX * 3.
LIN-COL4 = SY-INDEX * 4.
LIN-COL5 = SY-INDEX * 5.
LIN-COL6 = SY-INDEX * 6.
LIN-COL7 = SY-INDEX * 7.
LIN-COL8 = SY-INDEX * 8.
APPEND LIN TO TAB.
ENDDO.
LINname-COL1 = 'COLA1'.
LINname-COL2 = 'COLB2'.
LINname-COL3 = 'COLC3'.
LINname-COL4 = 'COLD4'.
LINname-COL5 = 'COLE5'.
LINname-COL6 = 'COLF6'.
LINname-COL7 = 'COLG7'.
LINname-COL8 = 'COLH8'.
APPEND LINNAME TO TABNAME.
* " 在句柄中加上服务器当前时间作为句柄名称,防止多人同时使用该程序,导致句柄名称相同
CONCATENATE 'ZTEST001HD' SY-UZEIT INTO HEADERNAME .
CONCATENATE 'ZTEST001IT' SY-UZEIT INTO ITEMSNAME.
SAVEBUFFER TABNAME[] HEADERNAME. "ig_output_h是保存输出表单表头数据的内表
SAVEBUFFER TAB[] ITEMSNAME. "ig_output_d是保存输出数据明细的内表,与表头数据有关联字段
* 通过SmartForms的名称取得编译以后的对应的Function Module的名称
CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'
EXPORTING
FORMNAME = 'ZTEST001' "SmartForms的名称
* VARIANT = ' '
* DIRECT_CALL = ' '
IMPORTING
FM_NAME = WL_FMNAME
EXCEPTIONS
NO_FORM = 1
NO_FUNCTION_MODULE = 2
OTHERS = 3
.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
CALL FUNCTION WL_FMNAME
EXPORTING
PTR_HEADER = HEADERNAME
PTR_ITEMS = ITEMSNAME
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.
CLEARBUFFER HEADERNAME. "调用完毕以后,删除数据
CLEARBUFFER ITEMSNAME.
ENDFORM. " SMARTFORMSTEST
*&--------------------------------------------------------------------*
*& Form Get_Unique_Id
*&--------------------------------------------------------------------*
* text
*---------------------------------------------------------------------*
* -->ID text
*---------------------------------------------------------------------*
*FORM get_unique_id USING typeid TYPE c CHANGING id TYPE c.
* DATA: m_buff(32) TYPE c.
* CALL FUNCTION 'TH_GET_SESSION_ID'
* IMPORTING
* session_id = m_buff
** ID_LEN =
* .
* CONCATENATE sy-repid '_' m_buff typeid INTO id.
*ENDFORM. "Get_Unique_Id
*&--------------------------------------------------------------------*
*& Form Save_To_Buffer
*&--------------------------------------------------------------------*
* text
*---------------------------------------------------------------------*
* -->T text
* -->BUFF_ID text
*---------------------------------------------------------------------*
FORM SAVE_TO_BUFFER USING T TYPE TABLE TYPEID TYPE C .
WA_INDX-AEDAT = SY-DATUM.
WA_INDX-USERA = SY-UNAME.
WA_INDX-PGMID = SY-REPID.
* PERFORM get_unique_id USING buff_id CHANGING buff_id.
EXPORT T TO DATABASE INDX(HK) ID TYPEID FROM WA_INDX.
ENDFORM. "Save_To_Buffer
*&--------------------------------------------------------------------*
*& Form Clear_Buffer
*&--------------------------------------------------------------------*
* text
*---------------------------------------------------------------------*
* -->BUFF_ID text
*---------------------------------------------------------------------*
FORM CLEAR_BUFFER USING BUFFID TYPE C.
DELETE FROM DATABASE INDX(HK) ID BUFFID.
ENDFORM. "Clear_Buffer
*&---------------------------------------------------------------------*
*& Form Restor_buffer
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->TYPEID text
* -->T text
*----------------------------------------------------------------------*
FORM RESTOR_BUFFER USING TYPEID TYPE C CHANGING T TYPE TABLE.
IMPORT T FROM DATABASE INDX(HK) ID TYPEID.
ENDFORM. "Restor_buffer