以下是一个对弹出框中的客户编码进行存在性检验的一个简单样例
DATA:tab TYPE TABLE OF sval WITH HEADER LINE.
DATA: code TYPE c.
CLEAR tab.
tab-tabname = 'KNA1'.
tab-fieldname = 'KUNNR'.
APPEND tab.
"弹出填写数据的框
CALL FUNCTION 'POPUP_GET_VALUES_USER_HELP'
EXPORTING
popup_title = '抬头'
programname = 'ZTEST'
formname = 'TESTFORM'
IMPORTING
returncode = code
TABLES
fields = tab.
IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
*&---------------------------------------------------------------------*
*& Form TESTFORM
*&---------------------------------------------------------------------*
* 检查客户编码是否存在
*----------------------------------------------------------------------*
FORM testform TABLES fields STRUCTURE sval
CHANGING error STRUCTURE svale.
DATA:l_kunnr TYPE kna1-kunnr.
DATA:lw_kna1 TYPE kna1.
READ TABLE fields INDEX 1.
l_kunnr = fields-value.
SELECT SINGLE * INTO lw_kna1 FROM kna1 WHERE kunnr = l_kunnr.
IF sy-subrc <> 0.
* Bitte geben Sie einen gültigen Lagerort an
CLEAR error.
error-errortab = 'KNA1'.
error-errorfield = 'KUNNR'.
error-msgty = 'I'.
error-msgid = '消息对象'.
error-msgno = '消息号'.
ENDIF.
ENDFORM.
附:
SAP对弹出框依据类型进行了分组 分成了SPO1 SPO2 ...
上述的有输入的属于SPO4的组 同一时候SAP系统中有一些这些分组的函数的例子函数。能够通过 RS+分组+* 进行搜索。如我们这里的是SPO4的 使用RSSPO4*进行搜索 有例如以下结果
其它的用户交互框能够通过一下程序进行学习 RSSPO4 *
RSSPO410 函数模块 POPUP_GET_VALUES 的范例
RSSPO420 函数模块 POPUP_GET_VALUES_DB_CHECKED 的范例
RSSPO430 函数模块 POPUP_GET_VALUES_USER_CHECKED 的范例
RSSPO440 函数模块 POPUP_GET_VALUES_USER_CHECKED 的范例
RSSPO450 函数模块 POPUP_GET_VALUES_USER_BUTTONS 的范例
1、sap的函数组列表和用途说明
适用情况 |
Function group |
提示用户将可能丢失数据 |
SPO1 |
提示用户对某个问题选择Yes或者No |
SPO1 |
提示用户将可能丢失数据, 并询问用户是否继续操作 |
SPO1 |
提示用户在多个操作中选择一个操作 |
SPO2 |
提示用户是继续当前操作或者取消当前操作 |
SPO2 |
提示用户输入数据 (能够依据一个表检查或者不检查输入值) |
SPO4 |
将数据显示给用户 |
SPO4 |
将具体数据显示给用户 |
SPO6 |
从列表中选择数据 | SPO5 |
用可滚动的对话框显示数据给用户 |
STAB |
从视图或者数据表中打印数据 |
STPR |
POPUP_TO_CONFIRM 标准对话弹出消息
POPUP_TO_CONFIRM_LOSS_OF_DATA 返回后迅速确实会话框 (POPUP, CONFIRM)
POPUP_TO_CONFIRM_STEP 用此函数能够建立一个对话框用于询问用户是否运行某步操作,用户能够选 择Yes No或者Cancel。该函数能够传入一个标题和两行的文本(提示问题)。
POPUP_TO_CONFIRM_WITH_MESSAGE 类似POPUP_TO_CONFIRM_STEP,仅仅是多三行的文本错误诊断提示。 系统 在窗体上显示一个绿色问号图标。
POPUP_TO_CONFIRM_WITH_VALUE 用此函数能够建立一个对话框用于询问用户是否运行某步操作,该操作可能 会丢失数据,用户能够选择Yes No或者Cancel。该函数能够传入一个标题, 两行的文本(提示问题)和一个对象值(对象值将会插入在提示问题文本的 两部分之间)。
系统在窗体上显示一个绿色问号图标。
POPUP_TO_CONFIRM_WITH_VALUE_2 Do not use! Please use POPUP_TO_CONFIRM.
SPO2 决定年龄的对话框
POPUP_TO_DECIDE 显示一个对话框。用户能够两个操作中的一个或者取消。能够传入三行提示文本。
POPUP_TO_DECIDE_WITH_MESSAGE 用于有诊断选项间的选择的对话框
SPO3 用于输入数据的对话框
POPUP_TO_GET_ONE_VALUE Pop-up window, in order to confirm user-defined processing step (CONF
POPUP_TO_GET_VALUE POPUP for requesting a value
SPO4 用于显示和请求的对话框
ALPHA_EXIT_FOR_TYPE_N_CONTROL
POPUP_GET_VALUES 对于显示和值请求的会话框, 没有检查
POPUP_GET_VALUES_DB_CHECKED 对于请求值的对话框, 预防检查 DB 表/视图
POPUP_GET_VALUES_SET_MAX_FIELD 为此组的对话框设置每一个对话框的字段最大数值
POPUP_GET_VALUES_USER_BUTTONS 用于要求值和提供用户button的对话框
POPUP_GET_VALUES_USER_CHECKED 对于请求值的对话框, 通过存在用户检查
POPUP_GET_VALUES_USER_HELP 请求值的对话框, 用户退出和帮助的调用
SPO5 从列表选择的对话框
POPUP_TO_DECIDE_LIST Dialog box for choosing from a list without diagnosis
SPO6 显示文本的对话框
POPUP_DISPLAY_TEXT 文本显示对话框窗体
POPUP_DISPLAY_TEXT_USER_BUTTON Popup with user-defined pushbuttons to display a text
POPUP_DISPLAY_TEXT_WITH_PARAMS 用參数对话窗显示文本
SPO8 Application Modules
POPUP_TO_DECIDE_LOCKED_DATA