数据不完整';t显示在第一行,并从第二行开始计算(ABAP,BW)

数据不完整';t显示在第一行,并从第二行开始计算(ABAP,BW),abap,Abap,你能帮我写ABAP代码吗(我为BW做了一些简单的逻辑) 当数据被追加到表中时,它计算第一行,但将结果写入第二行、第二行到第三行等。在第一行,我的结果为零 可能是什么?你能帮帮我吗,也许我的密码丢了什么 我的代码: FIELD-SYMBOLS: <ls_data> TYPE any, <lv_plant> TYPE /BI0/OIPLANT. TYPES: begin of ty

你能帮我写ABAP代码吗(我为BW做了一些简单的逻辑)

当数据被追加到表中时,它计算第一行,但将结果写入第二行、第二行到第三行等。在第一行,我的结果为零

可能是什么?你能帮帮我吗,也许我的密码丢了什么

我的代码:

      FIELD-SYMBOLS:   <ls_data>       TYPE any,
                 <lv_plant>     TYPE /BI0/OIPLANT.   
      TYPES: begin of    ty_kpi_result,
         plant           type  /BI0/OIPLANT,
         mat_num_01(18)  type  n,
         mat_num_02(18)  type  n,    
    END OF ty_kpi_result.


    DATA: lt_result        TYPE TABLE OF ty_kpi_result,
        ls_result        like LINE OF lt_result,
        lv_count         type i,
        lv_plant_1       type /BI0/OIPLANT.   
    sort ct_data ASCENDING.  
    LOOP AT ct_data ASSIGNING <ls_data>.
    ASSIGN COMPONENT 'PLANT' OF STRUCTURE <ls_data> to <lv_plant>.
     * lv_count             = lv_count + 1.
      ls_result-plant      = <lv_plant>.
    IF lv_plant_1        = <lv_plant>.
       lv_count             = lv_count + 1.
        ls_result-mat_num_01 = lv_count.
    ELSE.
      lv_count = 0.
      lv_count = lv_count + 1.


    APPEND ls_result to lt_result.
    ENDIF.

    lv_plant_1 = <lv_plant>.
    ls_result-mat_num_01 = lv_count.  
 ENDLOOP.
字段符号:键入任意,
类型/BI0/OI设备。
类型:ty_kpi_结果的开始,
设备类型/BI0/OI设备,
材料编号01(18)类型n,
材料编号02(18)类型n,
结束ty_kpi_结果。
数据:ty_kpi_结果的lt_结果类型表,
ls_结果类似于lt_结果行,
lv_计数类型i,
低压装置1型/BI0/OI装置。
对ct\U数据进行升序排序。
在ct_数据分配处循环。
将结构的组件“工厂”分配给。
*lv_计数=lv_计数+1。
结果工厂=。
如果lv_设备_1=。
lv_计数=lv_计数+1。
ls\u result-mat\u num\u 01=lv\u计数。
其他的
lv_计数=0。
lv_计数=lv_计数+1。
将ls\u结果附加到lt\u结果。
恩迪夫。
低压装置1=。
ls\u result-mat\u num\u 01=lv\u计数。
结束循环。

在SAP论坛上找到解决方案:

FIELD-SYMBOLS: <ls_data>        TYPE any,
                 <lv_plant>     TYPE /bi0/oiplant.
TYPES: BEGIN OF ty_kpi_result,
     plant           TYPE  /bi0/oiplant,
     mat_num_01      TYPE  i,
     mat_num_02      TYPE  i,
END OF ty_kpi_result.


DATA: lt_result        TYPE sorted TABLE OF ty_kpi_result with UNIQUE KEY  plant,
    ls_result        LIKE LINE OF lt_result,
    lv_count         TYPE i,
    lv_plant_1       TYPE /bi0/oiplant.

SORT ct_data BY ('PLANT').
CLEAR ls_result.

LOOP AT ct_data ASSIGNING <ls_data>.

ASSIGN COMPONENT 'PLANT' OF STRUCTURE <ls_data> TO <lv_plant>.

IF  <lv_plant> EQ ls_result-plant.

ADD 1 TO ls_result-mat_num_01.

 ELSE.
IF ls_result-plant IS NOT INITIAL. " first record
  APPEND ls_result TO lt_result.
ENDIF.
CLEAR ls_result.
ls_result-plant = <lv_plant>.
ls_result-mat_num_01 = 1.
 ENDIF.

AT LAST. " last record

APPEND ls_result TO lt_result.

ENDAT.
 ENDLOOP.
  ENDMETHOD.
字段符号:键入任意,
类型/bi0/OI设备。
类型:ty_kpi_结果的开始,
设备类型/bi0/OI设备,
材料编号01类型i,
材料编号02类型i,
结束ty_kpi_结果。
数据:lt_结果类型具有唯一关键工厂的ty_kpi_结果排序表,
ls_结果类似于lt_结果行,
lv_计数类型i,
低压装置1型/bi0/OI装置。
按(“工厂”)对ct\U数据进行排序。
清除ls_结果。
在ct_数据分配处循环。
将结构的组件“工厂”分配给。
如果等式ls_,则为结果工厂。
将1添加到ls_result-mat_num_01。
其他的
如果ls_结果工厂不是初始的。“第一记录
将ls\u结果附加到lt\u结果。
恩迪夫。
清除ls_结果。
结果工厂=。
ls_result-mat_num_01=1。
恩迪夫。
最后一张唱片
将ls\u结果附加到lt\u结果。
恩达。
结束循环。
ENDMETHOD。