如何显示丢失的信息消息以及获取的信息?

2020-09-03 20:02发布

         点击此处--->   EasySAP.com群内免费提供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。

         点击此处--->   EasySAP.com群内免费提供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。
付费偷看设置
发送
10条回答
半个程序猿
1楼 · 2020-09-03 20:37.采纳回答

我认为您可以不加入kna1和vbak,而无需在内部循环中进行检查,理想的选择是:

 SELECT kna1〜KUNNR
       ,kna1〜NAME1
       ,kna1〜ORT01
       ,COALESCE(vbak〜VBELN,'未找到')作为vbeln
  从kna1左外连接vbak ON(kna1〜kunnr = vbak〜kunnr)
   在@s_kunnr中的kna1〜kunnr
   vbak〜VBELN订购
   INTO TABLE @DATA(customer_info)。
clasier
2楼-- · 2020-09-03 20:53

否,您没有从KNA1表中获得客户编号。 您正在对照KNA1表检查客户编号。

如果用户将在选择屏幕上输入漂亮的客户编号列表,例如1、2、3、4、5,一直到N,则 太好了,您可以针对KNA1检查每个。 但是,如果用户可以输入任何选择范围,例如1到100、1到9999999999、1 * 23 * 4到* 999等,那么您将如何得出客户编号列表以开始搜索KNA1 ??????? ?

您需要对如何使用选择屏幕导出客户编号的初始列表设置一些规则。

haha101010
3楼-- · 2020-09-03 21:04

Surbjeet Dhillon

我正在从KNA1表中获取客户编号。 在选择屏幕上,用户将能够输入1到N的范围。

Climb_Ma
4楼-- · 2020-09-03 21:00

我认为您的输入方向错误。 客户信息是从KNA1获得的,具有正常的屏幕选择选项。 用户输入什么都没有关系。 问题不是要检查客户的存在,而是要检查没有销售单据的客户范围。

一周热门 更多>