SAP ABAP ALV

大家好,最近在学习的时候遇到一个问题,我需要开发一个ALV报表,但是涉及了很多个表的字段,因为我是自学的,实力非常薄弱,有没有兄弟能帮个忙,让我看下这个应该怎么取数,研究了半个月查阅了各种资料,网上关于SAP ABAP的资料少之又少,有一点想放弃了都,唉。

img

参考C知道:
你可以使用以下步骤来在SAP ABAP中取数并显示在ALV报表中:

首先,使用SELECT语句从数据库表中选择需要的数据。
将选定的数据存储在内部表中。
使用CL_SALV_TABLE类创建一个ALV对象。
使用ADD_COLUMNS方法向ALV对象添加列。
使用SET_TABLE_FOR_FIRST_DISPLAY方法将内部表作为数据源传递给ALV对象。
最后,使用DISPLAY方法显示ALV报表。
下面是一个示例代码片段:

DATA: it_data TYPE TABLE OF your_data_structure,
      wa_data TYPE your_data_structure,
      alv_grid TYPE REF TO cl_gui_alv_grid.

SELECT * FROM your_table INTO TABLE it_data.

CREATE OBJECT alv_grid.
alv_grid->set_table_for_first_display(
  EXPORTING
    i_structure_name = 'YOUR_DATA_STRUCTURE'
  CHANGING
    it_outtab        = it_data
).

alv_grid->display( ).

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 这篇博客: 关于SAP ABAP字符变量和字符串变量字符个数的一个知识点,和一个血案中的 '15’是怎么变成魔幻数字3473457的? 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:

    Jerry先不解释,而是请大家看下面这段代码:

    执行,正好输出3473457这个魔幻数字。那么代码第四行31003500是哪里来的?其实就是字符串’15’的十六进制编码。

    也就是说,二次开发顾问在RFC调用时,将硬编码的’15’传给了接受整型变量的函数参数IV_MAX_ENTRIES. 应该该参数类型为整型,所以’15’的十六进制编码’31003500’被自动转换成了对应的整型数3473457. 显然这不是开发顾问期望的行为,但因为程序能够继续运行,所以这个问题暂时被掩盖了。

    而RFC调用完成之后,紧接着是一个嵌套的LOOP. 在Max Hit能按照期望工作的前提下,对于最多包含15条记录的内表,就算进行嵌套的LOOP操作也能很快完成。但如今因为Max Hit不工作,内表记录从最多15条一下子变成了超过40万条,在这么庞大规模的内表上进行嵌套LOOP操作,性能可想而知。

    经历过这次incident的处理之后,我个人觉得,使用隐式类型转换的最佳实践就是根本不去用它。程序员在工作的时候,必须时刻清醒地知道自己在做什么,要扼住编译器的咽喉,而不要被编译器扼住了咽喉。

    感谢阅读,祝大家五一节快乐。

    要获取更多Jerry的原创文章,请关注公众号"汪子熙":


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^