这篇文章主要讲下如何在屏幕上添加按钮,以及添加下载模板的功能。
首先讲下如何在屏幕上添加按钮:
1、首先定义一些东西:
TABLES: SSCRFIELDS.
DATA: FUNCTXT TYPE SMP_DYNTXT.
2、在定义选择屏幕之前先定义这个function key (据说这种方式最多可以添加4个。)
SELECTION-SCREEN:FUNCTION KEY 1. " download
3、在initialization里面输入你这个按钮的名字text-002
INITIALIZATION.
FUNCTXT-ICON_ID = ICON_XXL. 这个是icon的样子可以到一个表ICON里面查
FUNCTXT-ICON_TEXT = TEXT-002.
SSCRFIELDS-FUNCTXT_01 = FUNCTXT.
4、在AT SELECTION-SCREEN.里面定义操作就好了
AT SELECTION-SCREEN.
CASE SSCRFIELDS-UCOMM.
WHEN 'FC01'.
PERFORM FRM_DOWNLOAD_DATA. 这个就是下载模板用的form。
ENDCASE.
下面就介绍如何实现下载模板的功能:
1、用t-code SMW0可以上传模板,上传成功之后,在表WWWDATA里面可以查到。
然后就是程序的实现:直接copy过来了:
FORM FRM_DOWNLOAD_DATA .
DATA: DEF_FILENAME TYPE STRING,
P_OBJID TYPE WWWDATATAB-OBJID,
P_KEY TYPE WWWDATATAB,
L_RC TYPE SY-SUBRC,
P_DESC TYPE RLGRAP-FILENAME.
P_OBJID = 'ZFII028'. 这里放你刚才通过SMW0设置的名字
CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'
EXPORTING
TEXT = TEXT-002
EXCEPTIONS
OTHERS = 1.
* GET FILENAME
PERFORM FRM_GET_FILENAME1 USING TEXT-005
TEXT-006
CHANGING DEF_FILENAME.
IF DEF_FILENAME IS NOT INITIAL.
P_DESC = DEF_FILENAME.
SELECT SINGLE *
INTO CORRESPONDING FIELDS OF P_KEY
FROM WWWDATA
WHERE SRTF2 = 0
AND RELID = 'MI'
AND OBJID = P_OBJID.
IF SY-SUBRC = 0.
CALL FUNCTION 'DOWNLOAD_WEB_OBJECT'
EXPORTING
KEY = P_KEY
DESTINATION = P_DESC
IMPORTING
RC = L_RC
EXCEPTIONS
OTHERS = 1.
IF L_RC <> 0.
MESSAGE TEXT-003 TYPE 'E'.
ELSE.
MESSAGE TEXT-004 TYPE 'S'.
ENDIF .
ELSE.
"Do nothing
ENDIF .
ELSE.
"Do nothing
ENDIF .
ENDFORM. " FRM_DOWNLOAD_DATA
*&---------------------------------------------------------------------*
*& Form FRM_GET_FILENAME1
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_TEXT_001 text
* -->P_TEXT_002 text
* <--P_DEF_FILENAME text
*----------------------------------------------------------------------*
FORM FRM_GET_FILENAME1 USING FILEFILTER INIT_DIR CHANGING FILENAME.
DATA: ACTION TYPE I, " user action
L_TILTER TYPE STRING, " Window TITle
PATH TYPE STRING, " PATH
FULLPATH TYPE STRING. " PATH
FIELD-SYMBOLS: <F> TYPE FILE_TABLE. " File name
L_TILTER = TEXT-032.
PATH = INIT_DIR.
FULLPATH = INIT_DIR.
CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG
EXPORTING
WINDOW_TITLE = L_TILTER
FILE_FILTER = FILEFILTER
INITIAL_DIRECTORY = INIT_DIR
PROMPT_ON_OVERWRITE = 'X'
CHANGING
FILENAME = FILENAME
PATH = PATH
FULLPATH = FULLPATH
USER_ACTION = ACTION
EXCEPTIONS
CNTL_ERROR = 1
ERROR_NO_GUI = 2
NOT_SUPPORTED_BY_GUI = 3
OTHERS = 4.
IF SY-SUBRC <> 0.
"Do nothing
ELSE.
"Do nothing
ENDIF.
CALL METHOD CL_GUI_CFW=>FLUSH
EXCEPTIONS
CNTL_SYSTEM_ERROR = 1
CNTL_ERROR = 2
OTHERS = 3.
FILENAME = FULLPATH.
ENDFORM. " FRM_GET_FILENAME1