如何在报表中显示完美的价值?

2020-09-18 20:54发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)大家好, 请...

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


大家好,

请帮助我,过去10天我一直在寻找解决方案。

我要求报告应显示为标准的副本。 但是自定义报告中的预算金额与标准相比变得非常大。


标准报告图片

自定义报告图片。
与标准相比,您可以看到预算列增加了5倍。

请建议我进行任何纠正。

如何停止为多个添加添加预算列? 这是我的代码

执行read_data_cc。
 表格read_data_cc。
   在wrttp ='04'或wrttp ='21'的地方,在it_cosp放入wa_cosp中循环。
     读取表it_​​csks,并使用键objnr = wa_cosp-objnr插入wa_csks。
     使用键kostl = wa_csks-kostl将表it_cskt读入wa_cskt。
     如果sy-subrc = 0。
       将wa_csks-kostl移动到wa_final_cc-kostl。
       将wa_cosp-gjahr移动到wa_final_cc-gjahr。
       将wa_cskt-ktext移动到wa_final_cc-ktext。
     万一。
     如果wa_cosp-wrttp ='04'。
       wa_final_cc-actual =(wa_cosp-wtg001 + wa_cosp-wtg002 + wa_cosp-wtg003 + wa_cosp-wtg004 + wa_cosp-wtg005 + wa_cosp-wtg006 + wa_cosp-wtg007 + wa_cosp-wtg008 + wa_cosp-wtg_ + wa_cosp-wtg008 + wa_cosp-wtg 010  + wa_cosp-wtg013 + wa_cosp-wtg014 + wa_cosp-wtg015 + wa_cosp-wtg016)。

     ELSEIF wa_cosp-wrttp ='21'。
       wa_final_cc-commit =(wa_cosp-wtg001 + wa_cosp-wtg002 + wa_cosp-wtg003 + wa_cosp-wtg004 + wa_cosp-wtg005 + wa_cosp-wtg006 + wa_cosp-wtg007 + wa_cosp-wtg008 + wa_cosp-wtg_ + wa_cosp-wtg008 + wa_cosp-wtg 010  + wa_cosp-wtg013 + wa_cosp-wtg014 + wa_cosp-wtg015 + wa_cosp-wtg016)。

     万一。

     使用键objnr = wa_cosp-objnr wrttp ='41'二进制搜索将表it_bppe读入wa_bppe。

     如果sy-subrc = 0。

       wa_final_cc-budget =(wa_bppe-wtp01 + wa_bppe-wtp02 + wa_bppe-wtp03 + wa_bppe-wtp04 + wa_bppe-wtp05 + wa_bppe-wtp06 + wa_bppe-wtp07 + wa_bppe-wtpe-wtp10 + bp_pepe-wtp10 + bp_wt_pe  -wtp12 + wa_bppe-wtp13 + wa_bppe-wtp14 + wa_bppe-wtp15 + wa_bppe-wtp16)。

     万一。
     wa_final_cc-allot =(wa_final_cc-actual)+(wa_final_cc-commit)。
     wa_final_cc-avail =(wa_final_cc-budget)-(wa_final_cc-allot)。
     将wa_final_cc收集到it_final_cc中。
     排序it_final_cc。
     清除wa_final_cc。
   结局。
 ENDFORM。



 如您在上面看到的,我编写了代码以显示实际,提交,预算,分配和可用状态,如上图所示。
 我只想循环预算列一次,如下图所示,预算预算列应仅添加一次,这是标准报告。
 我以多种方式尝试过,例如,仅为预算栏保持doloop,通过保持sy-index = 1,通过为预算保持sy-tabix = 1,但对于预算栏却无法获得理想的结果。

 如果您建议任何解决方案,它将更有帮助。
 我正在等待解决方案。
 谢谢,
 ish
 
stnd-cc-rpt.jpg (45.6 kB)
6条回答
奄奄一息的小鱼
2020-09-18 21:35

你好 @ roberto.forti

感谢您在上一个问题中提供的代码。 (正如我两次问这个问题一样,他们(SAP社区主持人)删除了您回答的我的问题。

https://answers.sap.com/questions/540319/how-to-loop-only-budget.html?childToView=540737#answer-540737

下面是我从数据库表中获取数据的代码。

FORM get_data_cc。

选择kokrs
kostl
objnr
将bukrs从csks插入表it_csks在s_kokrs和kostl中的kokrs在s_kostl中,并且在s_bukrs中的bukrs。 kostl IN s_kostl。
如果sy-subrc =0。
排序it_csks升序。
选择lednr目标对象gjahr wrttp wtg001 wtg002 wtg003 wtg004
wtg005 wtg006 wtg007 wtg008 wtg009 wtg011 wtg011 wtg012 wtg016从cosp进入表it_cosp,用于it_csks中的所有条目objnr = it_csks-objnr并且gjahr = sy-datum + 0(4)。
如果sy-subrc = 0并且it_cosp不是初始的。 。
ENDIF。
从bppe INTO es到它it_bppe FOR ENn表中选择ENDPE END_ESW ENDLE SELECT LENDR objnr wrttp gjahr wtp01 wtp02wtp03 wtp04 -objnr AND gjahr = sy-datum + 0(4)。
如果sy-subrc = 0并且it_bppe不是INITIAL。
排序it_bppe升序。
ENDIF。/p>

ENDFORM。

现在,我将数据传递到最终内部表以显示ALV网格输出。

这是我们传递给最终内部表的代码。

FORM read_data_cc。

在it_cosp处将其循环到wa_cosp WwrE wrttp ='04'或wrttp ='21'。


读取表it_​​csks通过键objnr = wa_cosp-objnr进入wa_csks。 br>读取表it_​​cskt,并使用键kostl = wa_csks-kostl插入wa_cskt。

如果sy-subrc =0。
将wa_csks-kostl移动到wa_final_cc-kostl。
将wa_cosp-gjahr转换为wa_ gjahr。
将wa_cskt-ktext移动到wa_final_cc-ktext。
ENDIF。
如果wa_cosp-wrttp ='04'。
wa_final_cc-actual =(wa_cosp-wtg001 + wa_cosp-wtg002 + wa_cosp-wt + wa_cosp-wtg004 + wa_cosp-wtg005
+ wa_cosp-wtg006 + wa_cosp-wtg007 + wa_cosp-wtg008 + wa_cosp-wtg009 + wa_cosp-wtg010
+ wa_cosp-wtg011 + wa_cosp-wtg012 + wa_cosp-wtg012 + wa_cosp-wtg012 + wa_cosp-wtg015
+ wa_cosp-wtg016)。
ELSEIF wa_cosp-wrttp ='21'。
wa_final_cc-commit =(wa_cosp-wtg001 + wa_cosp-wtg002 + wa_cosp-wtg003 + wa_cosp-004 -wtg005
+ wa_cosp-wtg006 + wa_cosp-wtg007 + wa_cosp-wtg008 + wa_cosp-wtg009 + wa_cosp-wtg010
+ wa_cosp-wtg0 11 + wa_cosp-wtg012 + wa_cosp-wtg013 + wa_cosp-wtg014 + wa_cosp-wtg015
+ wa_cosp-wtg016)。
ENDIF。


收集wa_final_cc放入it_final_cc。

SORT it_final_cc。

ENDLOOP。

数据:lv_tabix TYPE sytabix,"内部表索引
wa_bppe1 LIKE LINE of it_bppe,
wa_bppe2类似于LINE of it_bppe。
排序it_bppe通过wrttp。

* CO对象:外部过帐的成本总计
读取表it_​​bppe到wa_bppe1二进制搜索 WITH KEY wrttp ='41'。"预算

IF sy-subrc EQ 0.
"内部表的索引
lv_tabix = sy-tabix。
循环到it_bppe从lv_tabix进入wa_bppe2 。

IF(wa_bppe1-wrttp NE wa_bppe2-wrttp)。
退出。
ELSE。
wa_final_cc-budget =(wa_bppe2-wtp01 + wa_bppe2-wtp02 + wa_bppe2-wtp03 + wa_bppe2- wtp04
+ wa_bppe2-wtp05 + wa_bppe2-wtp06 + wa_bppe2-wtp07 + wa_bppe2-wtp08
+ wa_bppe2-wtp09 + wa_bppe2-wtp10 + wa_bppe2-wtp11 + wa_bppe2-wtp12
+ wa_bppe2-wtp12 + wa_bppe2-wtp15 + wa_bppe2-wtp16)。

wa_final_cc-allot =(wa_final_cc-commit)+(wa_final_cc-actual)。
wa _final_cc-avail =(wa_final_cc-allot)-(wa_final_cc-budget)。

收集wa_final_cc到it_final_cc中。


清除sy-tabix。

ENDIF。

< br>清除:wa_bppe2,
wa_final_cc。

ENDLOOP。

ENDIF。

ENDFORM。

这是个问题。

如下图所示,预算字段已添加到"上一条记录"中,即测试,但应将其添加到管理员中。

并且也如下图所示,当它穿过collect语句时,sytabix变为5。

最终表的最后一列被添加了多次,如下图所示。

我调试了很多次,并相应地更改了代码,但没有用。

请给我我的建议,这将对您有很大帮助。

一周热门 更多>