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