如何在ALV中显示带有两个子表的父表

2020-09-07 16:19发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)此报告中使用了 REUSE_AL...

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

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


此报告中使用了" REUSE_ALV_GRID_DISPLAY"。

我正在用很多父母的表和他们的孩子的表做ALV,并且我想像" parent_sequence"和" child_sequence"一样与各自的父母一起显示它们的行。

我的意思是,父级中有一个唯一的记录,但是孩子们可以与同一个父级一起生成另外2条记录,然后,我将它们显示为ALV。

我尝试过,但是我的ALV只显示了孩子们的一张记录。

请帮帮我!

示例:

| ------------------------------------------- -------------------------------------------------- ----------------- |

| Parent_record-ID | 子记录名称| Child2_record-address | | | Child2_record-address2 |

| | Child2_record-address3 |

| ---------------------------------------------- -------------------------------------------------- --------------- |



7条回答
huskylover
2020-09-07 17:24

谢谢大家,但是我找到了一种更好的方法。

看看最后一个循环:

 SPAN {
 字体家族:" Courier New";
 字体大小:10pt;
 颜色:#000000;
 背景:#FFFFFF;
 }
 .L0S31 {
 字体样式:斜体;
 颜色:#808080;
 }
 .L0S32 {
 颜色:#3399FF;
 }
 .L0S52 {
 颜色:#0000FF;
 }
 .L0S55 {
 颜色:#800080;
 }
 .L0S70 {
 颜色:#808080;
 }

 在lt_r119x INTO ls_r119中循环

                              sequencia_pai = ls_r116-sequencia。

 *如果ls_r119-sequencia_pai = ls_r116-sequencia。

 *清除:ls_r116-sequencia_pai,gv_novo_pai。

 * ELSE。

 * ls_r116-sequencia_pai = ls_r119-sequencia。

 *                              万一。

                               做sy-tabix次。

                                 移动:ls_r119-indnif到ls_excel-indnif,

                                       ls_r119-nifbenef至ls_excel-nifbenef,

                                       ls_r119-frmtribut到ls_excel-frmtribut。



                                 附加ls_excel至lt_tratamento。

                               ENDDO。

                               清除:ls_r119-indnif,ls_r119-nifbenef,ls_r119-frmtribut。



                             结局。

                           结局。

                         结局。

                       结局。

                     万一。

                   其他。

                     追加ls_excel至lt_excel。

                     从lt_excel删除相邻的重复项。

                     清除:ls_excel-branch,

                     ls_excel-cpfbenef,

                     ls_excel-nmbenef,

                     ls_excel-lifnr,

                     ls_excel-natrend,

                     ls_excel-paisresid,

                     ls_excel-dtfg,

                     ls_excel-vlrrendbruto,

                     ls_excel-vlrrendtrib,

                     ls_excel-vlrir,

                     ls_excel-vlrdeducao,

                     ls_excel-vlrisento,

                     ls_excel-indnif,

                     ls_excel-nifbenef,

                     ls_excel-frmtribut。



                   万一。



                   附加ls_excel至lt_tratamento。



                   从lt_tratamento删除相邻的重复项。



                   循环到lt_tratamento进入ls_tratamento。

                     清除lt_excel。

                   结局。

                   将lt_tratamento移动到lt_excel。



                   循环到lt_tratamento进入ls_tratamento。

                     清除:ls_tratamento-vlrdeducao,

                            ls_tratamento-vlrisento,

                            ls_tratamento-vlrrendtrib,

                            ls_tratamento-vlrrendbruto,

                            ls_tratamento-vlrir。



                     附加ls_tratamento至lt_excel。



                   结局。



                   排序lt_excel降级。



                   清除:ls_excel-branch,

                   ls_excel-cpfbenef,

                   ls_excel-nmbenef,

                   ls_excel-lifnr,

                   ls_excel-natrend,

                   ls_excel-paisresid,

                   ls_excel-dtfg,

                   ls_excel-vlrrendbruto,

                   ls_excel-vlrrendtrib,

                   ls_excel-vlrir,

                   ls_excel-vlrdeducao,

                   ls_excel-vlrisento,

                   ls_excel-indnif,

                   ls_excel-nifbenef,

                   ls_excel-frmtribut。



                 结局。

               万一。

             结局。

           万一。

         结局。

       万一。

     结局。



     在lt_excel上进入LOS_Excel。



       如果sy-tabix = 1。

         aux_cpf = ls_excel-cpfbenef。

         aux_vlrrendbruto = ls_excel-vlrrendbruto。

         继续。

       万一。



 * IF(sy-tabix MOD 2)<> 0。

       如果sy-tabix> 1。

         如果ls_excel-vlrrendbruto不是INITIAL。

           如果aux_cpf = ls_excel-cpfbenef和aux_vlrrendbruto = ls_excel-vlrrendbruto。

             删除lt_excel索引(sy-tabix)。

           万一。

         万一。

       万一。

       如果aux_cpf <> ls_excel-cpfbenef或aux_vlrrendbruto <> ls_excel-vlrrendbruto。

         如果ls_excel-vlrrendbruto不是INITIAL。

           aux_cpf = ls_excel-cpfbenef。

           aux_vlrrendbruto = ls_excel-vlrrendbruto。

         万一。

       万一。



     结局。



     在lt_excel上进入LOS_Excel。

       如果sy-tabix = 1。

         aux_cpf = ls_excel-cpfbenef。

         aux_vlrrendbruto = ls_excel-vlrrendbruto。

         删除lt_excel索引(sy-tabix +1)。

         继续。

       万一。



       如果aux_cpf <> ls_excel-cpfbenef。
          aux_cpf = ls_excel-cpfbenef。
          删除lt_excel索引(sy-tabix +1)。
         万一。
     ENDLOOP。

一周热门 更多>