点击此处---> 群内免费提供SAP练习系统(在群公告中)
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
大家好,
我绝对是ABAP(和编码)的初学者,并且遇到一个不确定的问题,我不确定该如何描述。 好吧,我被要求做一个简单的程序,该程序将输出一个包含客户编号,客户名称,城市和每个客户所下订单的数量的列表。
我还被告知,如果客户编号 丢失(或不存在),它仍应在列表中显示为"找不到客户端"或" X"。 例如,我正在搜索1号至50号客户,系统找不到15-20号客户的任何结果。 在这种情况下,列表将给出从1到14的输出,然后为接下来的6条记录写'X',然后将再次照常显示输出,其值从21开始。
我的问题是,我无法解决问题的这一部分。 我的输出仅显示可以在系统中找到的客户编号。
感谢您的帮助,并提前感谢您。
最诚挚的问候,
Arnab Goswami
报告z_XYZ 类型:开始于g_ty_kna1, KUNNR TYPE KUNNR, NAME1 TYPE NAME1, ORT01类型ORT01, g_ty_kna1结束。 数据:g_ty_kna1的g_it_kna1类型标准表, g_wa_kna1类型g_ty_kna1, g_kunnr TYPE kna1-KUNNR, g_name1 TYPE kna1-NAME1, g_ORT01类型kna1-ORT01, 安扎尔类型i。 带有框架标题text-001的Eingabe块的选择屏幕开始。 SELECT_OPTIONS s_kunnr FOR g_kunnr。 Eingabe区块的选择屏幕结束。 如果s_kunnr是INITIAL。 消息'Bitte geben Sie eine Kundennummer an。'(003)TYPE'E'。 其他。 执行Datenerfassung。 执行日期。 万一。 *&------------------------------------------------ --------------------- * *&表格Datenerfassung *&------------------------------------------------ --------------------- * *文字 * ------------------------------------------------- --------------------- * 表格Datenerfassung。 选择昆纳名称1 ORT01 从KNA1 表g_it_kna1的对应字段 s_kunnr中的KUNNR。 ENDFORM。 " Datenerfassung *&------------------------------------------------ --------------------- * *&表格日期和日期 *&------------------------------------------------ --------------------- * *文字 * ------------------------------------------------- --------------------- * 表格Datenverarbeitung。 新队。 乌兰(78)。 新队。 写:sy-vline, (7):'Kunde'(004),sy-vline, (22):"名称"(005),sy-vline, (18):" Ort"(006),sy-vline, (18):" AnzahlAufträge"(007),sy-vline。 新队。 乌兰(78)。 新队。 循环至g_it_kna1,进入g_wa_kna1。 " WHERE KUNNR = g_wa_kna1-KUNNR。 选择计数(*) INTO安扎尔 从VBAK 哪里KUNNR = g_wa_kna1-KUNNR 由Kunr分组。 ENDSELECT。 如果sy-index = g_kunnr。 写:sy-vline, (7):g_wa_kna1-KUNNR,sy-vline, (22):g_wa_kna1-NAME1,sy-vline, (18):g_wa_kna1-ORT01,sy-vline, (18):anzahl,sy-vline。 新队。 乌兰(78)。 新队。 其他。 做6次。 检查14和21之间的sy-index。 写:/sy-vline, (7):" Kunde"(004)下的" X",sy-vline, (22):" Der Kunde existiert nicht"。(002)在"名称"下,sy-vline, (18):" Ort"下的" X",sy-vline, (18):" AnzahlAufträge"下的" X",sy-vline。 ENDDO。 新队。 乌兰(78)。 新队。 万一。 结局。 ENDFORM。 "大自然保护区 页面顶部。 新队。 乌兰(78)。 新队。 写:sy-vline, (7):'Datum:'(009),sy-datum,sy-vline, (10):" Uhrzeit:"(010),sy-uzeit,sy-vline, (18):'Benutzer/in:'(011),sy-uname,sy-vline。 新队。 乌兰(78)。 新队。 写:'Gesamtdatensatz abgerufen'(008),sy-dbcnt。
我认为您可以不加入kna1和vbak,而无需在内部循环中进行检查,理想的选择是:
否,您没有从KNA1表中获得客户编号。 您正在对照KNA1表检查客户编号。
如果用户将在选择屏幕上输入漂亮的客户编号列表,例如1、2、3、4、5,一直到N,则 太好了,您可以针对KNA1检查每个。 但是,如果用户可以输入任何选择范围,例如1到100、1到9999999999、1 * 23 * 4到* 999等,那么您将如何得出客户编号列表以开始搜索KNA1 ??????? ?
您需要对如何使用选择屏幕导出客户编号的初始列表设置一些规则。
Surbjeet Dhillon ,
我正在从KNA1表中获取客户编号。 在选择屏幕上,用户将能够输入1到N的范围。
我认为您的输入方向错误。 客户信息是从KNA1获得的,具有正常的屏幕选择选项。 用户输入什么都没有关系。 问题不是要检查客户的存在,而是要检查没有销售单据的客户范围。
一周热门 更多>