点击此处---> 群内免费提供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。
您的主要问题是这种逻辑。 您想在这里发生什么?
,例如
清除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'
但是还有其他问题:
列是否在ALV中,但所有值都为空?
您好 Manoj Kumar
您不会将信息从源内部表移动到结果内部表。 这就是为什么您没有在ALV中获得价值的原因。
您可以使用移动对应或逐字段。 视情况而定。
此外,仅当VBAK SELECT返回任何结果时,才应在VBAP表上执行SELECT。
您可以这样做,也可以简单地退出GET过程,因为其中一个KNA1/VBAK SELECT语句都不返回结果,因为所有其他语句都依赖于这些结果。/p>
这样,代码更易于阅读和理解。
此外,最好将IT_VBAP,IT_MAKT和IT_KNA1定义为排序的内部表,因为 在LOOP中从这些表中读取数据。 将它们定义为排序类型(TYPE SORTED TABLE OF),并使用用于读取的键,可以使报表的性能更好。
此致
Mateusz
1。 如果从表VBAP中选择选项FOR ALL ENTRIES,请确保该表不是初始表,否则,将选择所有值:
2。 如果使用READ TABLE,请确保处理sy-subrc = 0或初始化字段,否则,如果缺少匹配项,则可能会以其他记录中的值结尾:
3。 当前,您正在为客户选择所有可能的VBAK订单,以及为VBAK订单选择所有VBAP头寸,但是您没有将这些订单转移到ALV,这是故意的吗? 截至目前,您只需要从VBAK以及从VBAP到ALV的一个订单中选择一个"随机"匹配。 要解决此问题,您将不得不在it_vbak上做一个LOOP而不是在READ TABLE it_vbak上做同样的处理: 使用密钥kunnr = wa_knal-kunnr在it_vbak上输入数据(wa_vbak)。 用键vbeln = wa_vbak-vbeln循环到it_vbap INTO数据(wa_vbap)。 使用键matnr = wa_vbap-matnr读取表it_makt INTO数据(wa_makt)。 wa-kunnr = wa_vbak-kunnr。 wa-name1 = wa_knal-name1。 wa-vbeln = wa_vbap-vbeln。 wa-audat = wa_vbak-audat。 wa-posnr = wa_vbap-posnr。 wa-matnr = wa_makt-matnr。 wa-kwmeng = wa_vbap-kwmeng。 wa-meins = wa_vbap-meins。 wa-netwr = wa_vbap-netwr。 wa-maktx = wa_makt-maktx。 附加到它。 清除:wa,wa_makt。 结局。 结局。 ENDLOOP。
4。 当前,您从语言相关的描述表MAKT中选择没有首选语言的材料描述(例如SPRAS = sy-langu),因此将选择所有语言描述。 而且当您循环播放时,您也无法解决此问题,而且您也无法解决,因为您没有选择语言。
感谢您 Mateusz Adamus ..!
一周热门 更多>