点击此处---> 群内免费提供SAP练习系统(在群公告中)
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
大家好
我正在abap程序中遍历一个内部表,并将该表中的值打印到sap脚本窗体上。
数据:gt_addr的开头出现0, 文字TYPE文字50。 数据:gt_addr的结尾。 格式print_addr使用pf_ADRNR类型AD_ADDRNUM。 数据ls_addr_s与gt_addr类似。 data(lo_addr)=新的ZCL_ADDR_CREATOR(iv_addr = pf_adrnr)。 data(lt_addr)= lo_addr-> format()。 刷新gt_addr。 将lt_addr引用到数据(ls_addr)中。 ls_addr_s-text =转换text50(ls_addr-> text)。 将ls_addr_s附加到gt_addr。 结局。 循环到gt_addr。 调用函数" WRITE_FORM" 出口 元素='CUSTOMER_ADDR' 窗口='KADR_B' 函数='APPEND' 例外情况 元素= 1 窗口= 2。 如果sy-subrc ne 0。 执行protocol_update。 万一。 结局。 ENDFORM。
问题是,它正在打印最后一个值,而不是表中的所有值:
我做错了什么?
谢谢
(1.2 kB)
也许它会临时存储对全局变量的引用。 也许在文档:"所有其他窗口在主窗口之后进行处理。系统首先收集定向到它们的所有输出。它以ITF格式存储要输出的文本行;但不会在以下位置对它们进行格式化 当调用功能模块WRITE_FORM或WRITE_FORM_LINES时,只有在主窗口触发了分页符时,系统才会在其他窗口中格式化文本并将其放置在输出队列中,这在使用变量时尤其重要。 在处理完主窗口后,将其替换为有效值。"
解决方法:使用WRITE_FORM_LINES(并且您无需在SAPscript中使用&...&)。
我认为您的摘要格式应为IL(项目行)而不是UA。 再次,您可以查看演示RSTXEXP2
,那么您的窗口就太小了。 看起来您的窗口中只有一行,因此它被下一行一遍又一遍覆盖。
您可以进行测试,只需删除表格的最后一行,看看是否 " Seestrasse ..."
Quynh Doan Manh 为什么 选择一种或另一种格式有问题吗? 段落格式可以自由定义,每种SAPscript形式都可以不同(UA或IL可能不存在很多形式)。 无论如何,格式不会更改值。
嗨,
您能否从FM中删除该功能并尝试使用。
有关信息,我转载了您的问题,并可以使用WRITE_FORM_LINES解决。
一周热门 更多>