赛跑网

 找回密码
 注册

QQ登录

只需一步,快速开始

快捷登录

查看: 2433|回复: 4

[ABAP问题] 出供应商主数据报表时碰到的一个问题

[复制链接]
发表于 2011-5-23 22:56:18 | 显示全部楼层 |阅读模式
1赛跑币

5月14日面授结束老师布置了一个作业,出一个供应商主数据报表,题目回顾在lfa1中抓取name1
land1
stras 三个字段,在lfb1中抓取bukrs
lifnr字段,lfa1和lfb1通过字段lifnr关联!

    老师推荐的解法是:

    建立三个内部表:it_lfa1(包含字段lifnr
name1
land1
stras)

                    it_lfb1(包含字段bukrs
lifnr

                    it_table(包含字段lifnr
name1
land1
stras
bukrs )。     

    1.通过select语句将lifnr
name1
land1
stras四个字段读取到it_lfa1中;

    2.用select 加for all entries in关键字,将bukrs
lifnr读取到it_lfb1中

3.在通过loop循环将it_lfb1读到工作区域wa_lfb1,再用read table 加关键字with key,把it_lfa1的字段也读到wa_lfa1中。

4.用move-corresponding把两个小工作区的内容复制到wa_table中,

5.最后append到it_table。


在上面思路的提醒下我打算用下面的方法(用了corresponding fields of效率不高)出报表,但是每次输出的内容都不是我想要的!我只建一个内部表,包含要输出的这五个字段it_table(包含字段lifnr
bukrs
name1
land1
stras

思路如下:

1,用select 加corresponding fields of 关键字将lifnr
bukrs 两个字段从lfb1中先读到it_table中。

2,在用loop循环把it_table中的记录读取到工作区域中,在用字段wa_table-lifnr作为条件,从lfa1中读取另外三个字段(同样使用corresponding fields of)


REPORT  zs029_litaoreport3 MESSAGE-ID fz LINE-COUNT 58.

TABLES:vbrk,
       lfb1,
       lfa1.
TYPES:BEGIN OF ty_lfb1,
        bukrs TYPE lfb1-bukrs,
        lifnr TYPE lfb1-lifnr,
        name1 TYPE lfa1-name1,
        land1 TYPE lfa1-land1,
        stras TYPE lfa1-stras,
      END OF ty_lfb1.
DATA wa_lfb1 TYPE ty_lfb1.
DATA it_lfb1 TYPE STANDARD TABLE OF ty_lfb1.

SELECT-OPTIONS s_bukrs FOR vbrk-bukrs.
SELECT-OPTIONS s_lifnr FOR lfb1-lifnr.
PARAMETERS p_land1 LIKE lfa1-land1 OBLIGATORY.

START-OF-SELECTION.

  SELECT bukrs
         lifnr
         FROM lfb1
         INTO CORRESPONDING FIELDS OF TABLE it_lfb1
         WHERE bukrs IN s_bukrs
         AND lifnr IN s_lifnr
         AND lifnr NOT LIKE 'e%'
         AND lifnr NOT LIKE 'p%'.

LOOP AT it_lfb1 INTO wa_lfb1.
  SELECT name1
         land1
         stras
         FROM lfa1
         INTO CORRESPONDING FIELDS OF wa_lfb1
         WHERE land1 = p_land1
         AND  lifnr = wa_lfb1-lifnr.
   ENDSELECT.
  COLLECT wa_lfb1  INTO  it_lfb1.
   ENDLOOP.
SORT it_lfb1 BY bukrs ASCENDING
                lifnr ASCENDING.
END-OF-SELECTION.
LOOP AT it_lfb1 INTO wa_lfb1.
  WRITE:/ wa_lfb1-bukrs,wa_lfb1-lifnr,wa_lfb1-name1,wa_lfb1-land1,
wa_lfb1-stras.
ENDLOOP.

问题如下:只能输出两个字段,其余的是被覆盖了吗?

          这样去想这个问题是不是思路有问题?

          是不是COLLECT wa_table into it_table.这段代码不对?

谢谢各位帮助!!

最佳答案

查看完整内容

李涛,你的思路是对的,你能想出这方法来说明你对ABAP研究的还是比较深刻的,单看程序好像没有什么问题,至于你说的那个问题的话,你用DEBUG模式进去,然后一步一步执行,看看哪里出问题了就可以了,实在不行等周六我来debug给你看一下,关键是知道解决问题的方法就行了。

最近访客

  • 鲁路修
    2021-11-21




上一篇:‘-’ ‘_’ ‘ ~’的用法?
下一篇:帮别人代问问题 关于like
本楼点评(0) 收起
发表于 2011-5-23 22:56:19 | 显示全部楼层
李涛,你的思路是对的,你能想出这方法来说明你对ABAP研究的还是比较深刻的,单看程序好像没有什么问题,至于你说的那个问题的话,你用DEBUG模式进去,然后一步一步执行,看看哪里出问题了就可以了,实在不行等周六我来debug给你看一下,关键是知道解决问题的方法就行了。
本楼点评(0) 收起
回复

使用道具 举报

 楼主| 发表于 2011-5-23 23:01:15 | 显示全部楼层
晕,怎么这么乱!
我打算按这个思路:
1,用select 加corresponding fields of 关键字将lifnr bukrs 两个字段从lfb1中先读到it_table中。
2,在用loop循环把it_table中的记录读取到工作区域中,在用字段wa_table-lifnr作为条件,从lfa1中读取另外三个字段(同样使用corresponding fields of) 但是但是碰到了问题
代码相见(zs029_litaoreport3)
本楼点评(0) 收起
回复

使用道具 举报

发表于 2013-6-24 22:59:56 | 显示全部楼层
学习
本楼点评(0) 收起
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|联系我们|赛跑网 ( QQ:108519493QQfsq

GMT+8, 2024-5-20 22:51 , Processed in 0.216034 second(s), 38 queries .

Powered by 91SAP X3.4

© 2001-2023 91sap Team.

快速回复 返回顶部 返回列表