错误的abap 7.5循环

2020-08-18 20:12发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)大家好, 我没有在alv输出中...

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


大家好,

我没有在alv输出中获取这些字段数据...

VBELN,AUDAT,POSNR,MATNR,MEINS,MAKTX。 请检查代码。

报告zmanoj4。
 表格:kna1,vbak,vbap,makt。

 类型:ty开始,
           kunnr TYPE kunnr,
           name1 TYPE name1,
           vbeln TYPE vbeln,
           TYPE Audat,
           posnr TYPE posnr,
           matnr TYPE matnr,
           kwmeng TYPE kwmeng,
           类型,
           netwr TYPE netwr,
           maktx TYPE maktx,
         ty of ty。


 数据:它的类型表,
        wa TYPE TY。
 数据:it_fieldcat类型slis_t_fieldcat_alv,
       wa_fieldcat类型slis_fieldcat_alv。

 带有标题标题文本001的b1块的选择屏幕开始。
 参数p_num类型kna1-kunnr。
 块b的选择屏幕结束。

 选择开始。
   性能得到。
   执行广告
   执行。

 形式得到。
   选择kunnr,
          从kna1到表@DATA(it_knal)的name1
          在kunnr EQ @p_num处。

   如果sy-subrc EQ 0。
   SELECT vbeln,
            奥德
            kunnr从vbak到表@DATA(it_vbak)
            对于@it_knal中的所有条目
            在kunnr EQ @ it_knal-kunnr。
   万一。

   SELECT vbeln,
          posnr,
          matnr,
          w
          我的意思
          从vbap到表@DATA(it_vbap)中的netwr
          对于@it_vbak中的所有条目
          在哪里vbeln EQ @ it_vbak-vbeln。

   如果sy-subrc EQ 0。
     SELECT matnr,
            maktx从makt到表@DATA(it_makt)
            对于@it_vbap中的所有条目
            matnr EQ @ it_vbap-matnr在哪里。
   万一。


   循环到it_vbak INTO DATA(wa_vbak)。
     使用键vbeln = wa_vbak-vbeln将表it_vbap读入数据(wa_vbap)。
     使用键kunnr = wa_vbak-kunnr读取表it_​​knal到DATA(wa_knal)中。
     使用键matnr = wa_vbap-matnr读取表it_​​makt到DATA(wa_makt)中。
     附加wa_vbak。
   结局。
 ENDFORM。



 形式alv。
   wa_fieldcat-fieldname ='KUNNR'。
   wa_fieldcat-ref_tabname ='KNA1'。
   wa_fieldcat-seltext_m ='会计凭证编号'。
   将wa_fieldcat附加到it_fieldcat。
   清除wa_fieldcat。

   wa_fieldcat-fieldname ='NAME1'。
   wa_fieldcat-ref_tabname ='KNA1'。
   wa_fieldcat-seltext_m ='AccountDocument号'。
   将wa_fieldcat附加到it_fieldcat。
   清除wa_fieldcat。

   wa_fieldcat-fieldname ='VBELN'。
   wa_fieldcat-ref_tabname ='VBAK'。
   wa_fieldcat-seltext_m ='会计凭证编号'。
   将wa_fieldcat附加到it_fieldcat。
   清除wa_fieldcat。

   wa_fieldcat-fieldname ='AUDAT'。
   wa_fieldcat-ref_tabname ='VBAK'。
   wa_fieldcat-seltext_m ='AccounDocument号'。
   将wa_fieldcat附加到it_fieldcat。
   清除wa_fieldcat。


   wa_fieldcat-fieldname ='POSNR'。
   wa_fieldcat-ref_tabname ='VBAP'。
   wa_fieldcat-seltext_m ='Acing文档编号'。
   将wa_fieldcat附加到it_fieldcat。
   清除wa_fieldcat。


   wa_fieldcat-fieldname ='MATNR'。
   wa_fieldcat-ref_tabname ='VBAP'。
   wa_fieldcat-seltext_m ="地点编号"。
   将wa_fieldcat附加到it_fieldcat。
   清除wa_fieldcat。


   wa_fieldcat-fieldname ='KWMENG'。
   wa_fieldcat-ref_tabname ='VBAP'。
   wa_fieldcat-seltext_m ='Acing文档编号'。
   将wa_fieldcat附加到it_fieldcat。
   清除wa_fieldcat。


   wa_fieldcat-fieldname ='MEINS'。
   wa_fieldcat-ref_tabname ='VBAP'。
   wa_fieldcat-seltext_m ='Acing文档编号'。
   将wa_fieldcat附加到it_fieldcat。
   清除wa_fieldcat。


   wa_fieldcat-fieldname ='NETWR'。
   wa_fieldcat-ref_tabname ='VBAP'。
   wa_fieldcat-seltext_m ='AcingD'。
   将wa_fieldcat附加到it_fieldcat。
   清除wa_fieldcat。


   wa_fieldcat-fieldname ='MAKTX'。
   wa_fieldcat-ref_tabname ='MAKT'。
   wa_fieldcat-seltext_m ='Acing r'。
   将wa_fieldcat附加到it_fieldcat。
   清除wa_fieldcat。
 ENDFORM。

 形成。
   通话功能'REUSE_ALV_GRID_DISPLAY'
     出口
       i_grid_title ='会计凭证详细信息'
       it_fieldcat = it_fieldcat
     桌子
       t_outtab =它。
 ENDFORM。
5条回答
槿木_熙
2020-08-18 21:14

您的主要问题是这种逻辑。 您想在这里发生什么?

循环到it_vbak INTO DATA(wa_vbak)。
     使用键vbeln = wa_vbak-vbeln将表it_vbap读入数据(wa_vbap)。
     使用键kunnr = wa_vbak-kunnr读取表it_​​knal到DATA(wa_knal)中。
     使用键matnr = wa_vbap-matnr读取表it_​​makt到DATA(wa_makt)中。
     附加wa_vbak。
   ENDLOOP。
  • 您从表中读取了结构,但对这些内容不做任何操作
    ,例如
    清除wa。
    移动wa_vbak到wa。
    移动wa_vbap到wa。
    移动wa_knal到wa。
    移动wa_makt到wa。
    附录
  • 您不必遍历订单头寸以获取订单的所有可能项目。
    使用键vbeln = wa_vbak-vbeln在it_vbap中将其放入DATA(wa_vbap)。
    。 ..
    ENDLOOP。
  • 您想从市场上读什么语言
    例如 您选择语句中的SPRAS ='D'

但是还有其他问题:

  • 除了进行多带带的选择,您还可以对联接进行一次选择
  • ,否则,您应该考虑对表类型使用KEY,以便在具有读取和嵌套循环的循环中获得更好的性能, 但这取决于选择的数据量
  • 您不必分别构建字段目录,它将由给定的表类型自动生成。 如果要使用其他DDIC功能(例如描述和f4值),或者正在使用不具有DDIC功能的ABAP内部类型,只需更改它即可。

一周热门 更多>