为什么只打印最后一个值?

2020-09-05 08:37发布

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

         点击此处--->   EasySAP.com群内免费提供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)
付费偷看设置
发送
9条回答
小c菟菟
1楼-- · 2020-09-05 09:16

也许它会临时存储对全局变量的引用。 也许在文档:"所有其他窗口在主窗口之后进行处理。系统首先收集定向到它们的所有输出。它以ITF格式存储要输出的文本行;但不会在以下位置对它们进行格式化 当调用功能模块WRITE_FORM或WRITE_FORM_LINES时,只有在主窗口触发了分页符时,系统才会在其他窗口中格式化文本并将其放置在输出队列中,这在使用变量时尤其重要。 在处理完主窗口后,将其替换为有效值。"

解决方法:使用WRITE_FORM_LINES(并且您无需在SAPscript中使用&...&)。

Bunny_CDM
2楼-- · 2020-09-05 09:36

我认为您的摘要格式应为IL(项目行)而不是UA。 再次,您可以查看演示RSTXEXP2

野沐沐
3楼-- · 2020-09-05 09:36

,那么您的窗口就太小了。 看起来您的窗口中只有一行,因此它被下一行一遍又一遍覆盖。

您可以进行测试,只需删除表格的最后一行,看看是否 " Seestrasse ..."

渐行渐远_HoldOn
4楼-- · 2020-09-05 09:28

Quynh Doan Manh 为什么 选择一种或另一种格式有问题吗? 段落格式可以自由定义,每种SAPscript形式都可以不同(UA或IL可能不存在很多形式)。 无论如何,格式不会更改值。

暮风yp
5楼-- · 2020-09-05 09:25

嗨,

您能否从FM中删除该功能并尝试使用。

呼叫功能'  WRITE_FORM'
     出口
       元素='CUSTOMER_ADDR'
       窗口='KADR_B'
     例外情况
       元素= 1
       窗口= 2。
 
小c菟菟
6楼-- · 2020-09-05 09:35

有关信息,我转载了您的问题,并可以使用WRITE_FORM_LINES解决。

一周热门 更多>