该代码实现了一个月份选择功能,当用户请求选择月份时调用GET_SPMON子程序。若未指定初始月份,则默认显示上月数据(处理跨年情况)。通过调用POPUP_TO_SELECT_MONTH函数弹出月份选择对话框,并将用户选择的月份返回给参数P_MONTH。代码包含异常处理机制,确保日历数据不存在等情况下的程序稳定性。
代码实例
PARAMETERS: p_month TYPE isellist-month . AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_month. PERFORM get_spmon USING p_month CHANGING p_month. FORM get_spmon USING in_spmon LIKE isellist-month CHANGING rt_spmon LIKE isellist-month. IF in_spmon IS INITIAL. in_spmon = sy-datum+0(6) - 1. IF in_spmon+4(2) = '00'. in_spmon+4(2) = '12'. in_spmon+0(4) = in_spmon+0(4) - 1. ENDIF. ENDIF. CALL FUNCTION 'POPUP_TO_SELECT_MONTH' EXPORTING actual_month = in_spmon factory_calendar = ' ' holiday_calendar = ' ' start_column = 40 start_row = 13 language = sy-langu IMPORTING selected_month = rt_spmon EXCEPTIONS factory_calendar_not_found = 1 holiday_calendar_not_found = 2 month_not_found = 3 OTHERS = 4. ENDFORM. "GET_SPMON