场景描述:获取汇率显示或者发送
先来预览图:
代码:
ZFIR003 :其中有四个包含文件
REPORT ZFIR003.
"TOP: contains declaration of varibles and constants
INCLUDE ZFIR003_TOP.
"S01: contains selection screen elements
INCLUDE ZFIR003_S01.
"E01: contains all events for selection screen
INCLUDE ZFIR003_E01.
"F01: contains all subroutines
INCLUDE ZFIR003_F01.
ZFIR003_TOP :数据定义
DATA EV_UKURS TYPE TCURR-UKURS.
ZFIR003_S01 :选择屏幕设置
SELECTION-SCREEN BEGIN OF BLOCK B1.
"定义屏幕输入
PARAMETERS P_KURST TYPE TCURR-KURST OBLIGATORY DEFAULT 'M' .
PARAMETERS P_FCURR TYPE TCURR-FCURR OBLIGATORY DEFAULT 'JPY'.
PARAMETERS P_TCURR TYPE TCURR-TCURR OBLIGATORY DEFAULT 'EUR'.
PARAMETERS P_GDATU TYPE SY-DATUM OBLIGATORY DEFAULT SY-DATUM.
SELECTION-SCREEN SKIP 1. "屏幕换行
SELECTION-SCREEN PUSHBUTTON 30(10) TEXT-001 USER-COMMAND PB1. "查询按钮
SELECTION-SCREEN SKIP 1. "屏幕换行
SELECTION-SCREEN PUSHBUTTON 30(10) TEXT-002 USER-COMMAND PB2. "发送按钮
SELECTION-SCREEN SKIP 1. "屏幕换行
SELECTION-SCREEN COMMENT 30(65) TXT1 ."屏幕上输出文本
SELECTION-SCREEN END OF BLOCK B1.
上述代码讲解:
1、SELECTION-SCREEN PUSHBUTTON 30(10) TEXT-001 USER-COMMAND PB1. "查询按钮
其中
PUSHBUTTON表示这是一个按钮
30(10)为PUSHBUTTON按钮在屏幕生成的位置与长度。
TEXT-001为文本元素设置文本
USER-COMMAND PB1表示给按钮设置上用户命令,命令名称为PB1
2、SELECTION-SCREEN COMMENT 30(65) TXT1 ."屏幕上输出文本
其中
COMMENT表示这是一个备注文本
30(65)为COMMENT在屏幕生成的位置与长度。
TXT1为文本内容,这里不用上面那种TEXT-001是因为后面要修改他,而TEXT-001没法修改
ZFIR003_E01 :事件流
INITIALIZATION.
TXT1 = 'UKURS='.
AT SELECTION-SCREEN OUTPUT.
START-OF-SELECTION.
PERFORM FRM_AUTH_CHECK.
AT SELECTION-SCREEN.
CASE SY-UCOMM.
WHEN 'PB1'.
PERFORM FRM_GET_DATA.
PERFORM FRM_DISPLAY_DATA.
WHEN 'PB2'.
PERFORM FRM_GET_DATA.
PERFORM FRM_SEND_DATA.
ENDCASE.
END-OF-SELECTION.
ZFIR003_F01 :子例程
FORM FRM_AUTH_CHECK .
ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_GET_DATA
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM FRM_GET_DATA .
P_FCURR = TO_UPPER( VAL = P_FCURR ).
P_TCURR = TO_UPPER( VAL = P_TCURR ).
"设置有效日期
DATA LV_VALID_DATE LIKE TCURR-GDATU.
* CONVERT DATE SY-DATUM INTO INVERTED-DATE LV_VALID_DATE.
LV_VALID_DATE = P_GDATU.
SELECT SINGLE
UKURS
FROM TCURR
INTO @EV_UKURS
BYPASSING BUFFER
WHERE
KURST = @P_KURST
AND FCURR = @P_FCURR
AND TCURR = @P_TCURR
AND GDATU = ( SELECT
MIN( A~GDATU )
FROM TCURR AS A
WHERE
A~KURST = TCURR~KURST
AND A~FCURR = TCURR~FCURR
AND A~TCURR = TCURR~TCURR
AND A~GDATU GE @LV_VALID_DATE )
.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_DISPLAY_DATA
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM FRM_DISPLAY_DATA .
TXT1 = CONV CHAR20( EV_UKURS ).
TXT1 = 'UKURS=' && TXT1.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_SEND_DATA
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM FRM_SEND_DATA .
TXT1 = '发送成功'.
"调用外部接口
ENDFORM.