使用 ABAP 创建选择
Create Selection with ABAP
我是 ABAP 新手。我希望我的代码创建一个选择,我可以在其中输入数字,它会显示我之前创建的客户列表。
这是代码:
REPORT ZBSP_CODING.
DATA: ls_ZBSPCUSTOMERS TYPE ZBSPCUSTOMERS,
lt_ZBSPCUSTOMERS TYPE TABLE OF ZBSPCUSTOMERS,
lv_KUNNR TYPE KUNNR.
SELECT-OPTIONS p_KUNNR FOR lv_KUNNR NO INTERVALS.
SELECT * FROM ZBSPCUSTOMERS INTO ls_ZBSPCUSTOMERS WHERE KUNNR IN p_KUNNR.
WRITE: / ls_ZBSPCUSTOMERS-KUNNR,
/ ls_ZBSPCUSTOMERS-NAME_FIRST, ls_ZBSPCUSTOMERS-NAME_LAST,
/ ls_ZBSPCUSTOMERS-STREET, ls_ZBSPCUSTOMERS-HOUSE_NUM1,
/ ls_ZBSPCUSTOMERS-POST_CODE1, ls_ZBSPCUSTOMERS-CITY1.
ENDSELECT.
问题是,它不会向我显示任何客户。我做错了什么?
会有两种情况。-
要么 ZBSPCUSTOMERS
table 不包含任何数据。
或者可能是 KUNNR
字段数据值中前导 0's
的数据不匹配。所以,添加这些行-
SELECT-OPTIONS p_KUNNR FOR lv_KUNNR NO INTERVALS.
"-------add below lines-----
LOOP AT p_KUNNR.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
input = p_KUNNR-low
IMPORTING
output = p_KUNNR-low.
MODIFY p_KUNNR.
ENDLOOP.
"-------End of addition-------------
SELECT * FROM ZBSPCUSTOMERS INTO ls_ZBSPCUSTOMERS WHERE KUNNR IN p_KUNNR.
WRITE: / ls_ZBSPCUSTOMERS-KUNNR,
/ ls_ZBSPCUSTOMERS-NAME_FIRST, ls_ZBSPCUSTOMERS-NAME_LAST,
/ ls_ZBSPCUSTOMERS-STREET, ls_ZBSPCUSTOMERS-HOUSE_NUM1,
/ ls_ZBSPCUSTOMERS-POST_CODE1, ls_ZBSPCUSTOMERS-CITY1.
ENDSELECT.
CONVERSION_EXIT_ALPHA_INPUT 功能模块在值中添加前导 0。例如,如果 DE 大小是 10 位数字,如果您输入 102,那么它会将 fron 102 转换为 0000000102。
谢谢大家,@divScorp 提到它是 F8 按钮而不是 Enter-Key
我是 ABAP 新手。我希望我的代码创建一个选择,我可以在其中输入数字,它会显示我之前创建的客户列表。
这是代码:
REPORT ZBSP_CODING.
DATA: ls_ZBSPCUSTOMERS TYPE ZBSPCUSTOMERS,
lt_ZBSPCUSTOMERS TYPE TABLE OF ZBSPCUSTOMERS,
lv_KUNNR TYPE KUNNR.
SELECT-OPTIONS p_KUNNR FOR lv_KUNNR NO INTERVALS.
SELECT * FROM ZBSPCUSTOMERS INTO ls_ZBSPCUSTOMERS WHERE KUNNR IN p_KUNNR.
WRITE: / ls_ZBSPCUSTOMERS-KUNNR,
/ ls_ZBSPCUSTOMERS-NAME_FIRST, ls_ZBSPCUSTOMERS-NAME_LAST,
/ ls_ZBSPCUSTOMERS-STREET, ls_ZBSPCUSTOMERS-HOUSE_NUM1,
/ ls_ZBSPCUSTOMERS-POST_CODE1, ls_ZBSPCUSTOMERS-CITY1.
ENDSELECT.
问题是,它不会向我显示任何客户。我做错了什么?
会有两种情况。-
要么
ZBSPCUSTOMERS
table 不包含任何数据。或者可能是
KUNNR
字段数据值中前导0's
的数据不匹配。所以,添加这些行-
SELECT-OPTIONS p_KUNNR FOR lv_KUNNR NO INTERVALS. "-------add below lines----- LOOP AT p_KUNNR. CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT' EXPORTING input = p_KUNNR-low IMPORTING output = p_KUNNR-low. MODIFY p_KUNNR. ENDLOOP. "-------End of addition------------- SELECT * FROM ZBSPCUSTOMERS INTO ls_ZBSPCUSTOMERS WHERE KUNNR IN p_KUNNR. WRITE: / ls_ZBSPCUSTOMERS-KUNNR, / ls_ZBSPCUSTOMERS-NAME_FIRST, ls_ZBSPCUSTOMERS-NAME_LAST, / ls_ZBSPCUSTOMERS-STREET, ls_ZBSPCUSTOMERS-HOUSE_NUM1, / ls_ZBSPCUSTOMERS-POST_CODE1, ls_ZBSPCUSTOMERS-CITY1. ENDSELECT.
CONVERSION_EXIT_ALPHA_INPUT 功能模块在值中添加前导 0。例如,如果 DE 大小是 10 位数字,如果您输入 102,那么它会将 fron 102 转换为 0000000102。
谢谢大家,@divScorp 提到它是 F8 按钮而不是 Enter-Key