'What is reason why my second list for my ALV report not showing any info?

I am trying to create a classical list. Everything until At line-selection works. The problem that I have is with At line-selection. First, I execute the program and it shows me the parameter s_matnr, I then enter the values (e.g. 500-100 - 500-400) and it gets me to the first list. After that, I choose one field by checking and I double-click on it. It then shows me another window and when I try to get to the second list that I've created it just doesn't output any info on the screen.

What I have to do is to get two tables, ekko and ekpo, and to display the info in a list. For that, I have tried to create a inner join between the two tables and then loop through them and write the info. Also, I have to calculate the total quantity of each Purchase order.

Could you help me out? Thank you!

The list has to look like this :

my second list

My lines of code :

TOP-OF-PAGE.

  WRITE: / 'User:',sy-uname,  29 'Programe Name: ', sy-cprog,
  / 'Date: ', sy-datum.
  ULINE.

  TABLES mara.
  TYPES : BEGIN OF ty_mara,
            chck  TYPE char1,
            matnr TYPE mara-matnr,
            maktx TYPE makt-maktx,
            ntgew TYPE mara-ntgew,
            gewei TYPE mara-gewei,
            spart TYPE mara-spart,
            name  TYPE string,
          END OF ty_mara,
          tt_mara TYPE STANDARD TABLE OF ty_mara.

  TYPES: BEGIN OF ty_marc,
           matnr TYPE marc-matnr,
           werks TYPE marc-werks,
         END OF ty_marc.

  TYPES:BEGIN OF ty_ab,
          ebeln TYPE ekpo-ebeln,
          lifnr TYPE ekko-lifnr,
          bedat TYPE  ekko-bedat,
          ekorg TYPE ekko-ekorg,
          ekgrp TYPE ekko-ekgrp,
          bukrs TYPE ekko-bukrs,
          ebelp TYPE ekpo-ebelp,
          aedat TYPE ekpo-aedat,
          menge TYPE ekpo-menge,
          meins TYPE ekpo-meins,
          netpr TYPE ekpo-netpr,
        END OF ty_ab.

  DATA:
    gt_ab TYPE TABLE OF ty_ab,
    gs_ab TYPE ty_ab.

  TYPES: BEGIN OF ty_name,
           cbx    TYPE c,
           cmatnr TYPE mara-matnr,
         END OF ty_name.

  DATA:
    gv_var1     TYPE string VALUE 'Purchase order',
    gv_var2     TYPE string  VALUE 'Vendor',
    gv_var3     TYPE string  VALUE 'Document Date',
    gv_var4     TYPE string  VALUE 'Purchasing Org.',
    gv_var5     TYPE string  VALUE 'Purchasing Group',
    gv_var6     TYPE string  VALUE 'Company Code',
    gv_quantity TYPE ekpo-menge VALUE 0.

  DATA:
    gv_v1 TYPE string VALUE 'Item',
    gv_v2 TYPE string VALUE 'Delivery Date',
    gv_v3 TYPE string VALUE 'PO Quantity',
    gv_v4 TYPE string VALUE 'Unit',
    gv_v5 TYPE string VALUE 'Net Price'.

  TYPES: BEGIN OF ty_ekko,
           ebeln TYPE ekko-ebeln,
           lifnr TYPE ekko-lifnr,
           bedat TYPE  ekko-bedat,
           ekorg TYPE ekko-ekorg,
           ekgrp TYPE ekko-ekgrp,
           bukrs TYPE ekko-bukrs,
         END OF ty_ekko.
  TYPES:BEGIN OF ty_ekpo,
          ebeln TYPE ekpo-ebeln,
          ebelp TYPE ekpo-ebelp,
          aedat TYPE ekpo-aedat,
          menge TYPE ekpo-menge,
          meins TYPE ekpo-meins,
          netpr TYPE ekpo-netpr,
        END OF ty_ekpo.

  DATA: gt_mara   TYPE TABLE OF ty_mara,
        gs_mara   TYPE ty_mara,
        gt_marc   TYPE TABLE OF ty_marc,
        gs_marc   TYPE ty_marc,
        gt_popup  TYPE ty_marc,
        gv_string TYPE string,
        gv_line   TYPE i,
        gs_name   TYPE ty_name,
        gt_name   TYPE TABLE OF ty_name,
        gt_ekko   TYPE TABLE OF ty_ekko,
        gs_ekko   TYPE ty_ekko,
        gt_ekpo   TYPE TABLE OF ty_ekpo,
        gs_ekpo   TYPE ty_ekpo.

  SELECT-OPTIONS s_matnr FOR mara-matnr.

START-OF-SELECTION.

  SET PF-STATUS 'DIALOG'.

  SELECT a~matnr, a~ntgew, a~gewei, a~spart, b~maktx
  FROM mara AS a
  INNER JOIN makt AS b
  ON a~matnr = b~matnr
  INTO CORRESPONDING FIELDS OF TABLE @gt_mara
  WHERE a~matnr IN @s_matnr
  AND b~spras = 'E'.

  WRITE: AT 3  'Material', AT 30 'Material Description', AT 60 'Net Weight',
  AT 80 'Unit', AT 85 'Division'.
  LOOP AT gt_mara INTO gs_mara.

    IF gs_mara-ntgew < 10.
      WRITE: / gs_name-cbx AS CHECKBOX,
                gs_mara-matnr COLOR 4,
                gs_mara-maktx COLOR 4,
                gs_mara-ntgew COLOR 4,
                gs_mara-gewei COLOR 4,
                gs_mara-spart COLOR 4.

    ELSE.
      WRITE: / gs_name-cbx AS CHECKBOX,
              gs_mara-matnr  COLOR COL_NEGATIVE,
               gs_mara-maktx  COLOR COL_NEGATIVE,
               gs_mara-ntgew  COLOR COL_NEGATIVE,
               gs_mara-gewei COLOR COL_NEGATIVE,
               gs_mara-spart COLOR COL_NEGATIVE.
    ENDIF.

  ENDLOOP.

AT USER-COMMAND.
  CASE sy-ucomm.
    WHEN'DISPLAY'.
      SET PF-STATUS 'POP'.
      SET TITLEBAR 'Titlu'.
      WINDOW STARTING AT 5 3 ENDING AT 40 10.
      CLEAR: gs_mara,gv_string.
      DO .
        READ LINE sy-index FIELD VALUE gs_name-cbx INTO gs_name-cbx.
        IF sy-subrc = 0.
          IF gs_name-cbx = 'X'.
            READ LINE sy-index FIELD VALUE gs_mara-matnr      INTO gs_name-cmatnr.
            SELECT marc~matnr marc~werks
            INTO CORRESPONDING FIELDS OF TABLE gt_marc
            FROM marc
            WHERE marc~matnr LIKE gs_name-cmatnr.

            IF sy-subrc = 0.

              LOOP AT gt_marc INTO gs_marc.

                WRITE: / gs_marc-matnr, gs_marc-werks.

              ENDLOOP.



            ELSE .


              MESSAGE e208(00) WITH 'No records found!'.
            ENDIF.
          ENDIF.
        ELSE.
          EXIT.
        ENDIF.
      ENDDO.

      WRITE:/ '' .

  ENDCASE.

AT LINE-SELECTION.

  GET CURSOR LINE gv_line.


  READ LINE gv_line FIELD VALUE gs_mara-matnr  INTO gs_name-cmatnr.
  SELECT
  c~lifnr
  c~bedat
  c~ekorg
  c~ekgrp
  c~bukrs
  c~ebeln
  d~ebelp
  d~aedat
  d~menge
  d~meins
  d~netpr
  FROM ekko AS c
  INNER JOIN ekpo AS d
  ON c~ebeln = d~ebeln
  INTO CORRESPONDING FIELDS OF TABLE gt_ab
  WHERE  d~matnr = gs_name-cmatnr  .

  LOOP AT gt_ab INTO gs_ab.
    IF sy-subrc = 0.

      gv_quantity = 0.
      ULINE.
      WRITE:/
      gs_ekko-ebeln UNDER gv_var1 COLOR 6,
     gs_ekko-lifnr UNDER gv_var2 COLOR 6,
      gs_ekko-bedat UNDER gv_var3 COLOR 6,
      gs_ekko-ekorg UNDER gv_var4 COLOR 6,
      gs_ekko-ekgrp UNDER gv_var5 COLOR 6,
      gs_ekko-bukrs UNDER gv_var6 COLOR 6.

      WRITE:/

      gs_ekpo-ebelp UNDER gv_v1 ,
      gs_ekpo-aedat UNDER gv_v2 ,
      gs_ekpo-menge UNDER gv_v3 ,
     gs_ekpo-meins UNDER gv_v4 ,
      gs_ekpo-netpr UNDER gv_v5 .
      gv_quantity = gv_quantity + gs_ekpo-menge.



      WRITE:/ 'Total Quantity=' UNDER gv_v3 COLOR 3, gv_quantity COLOR 3.

    ELSE.
      MESSAGE e208(00) WITH 'Nu a fost gasit!'.

    ENDIF.
  ENDLOOP.


Solution 1:[1]

I guess you need to debug your code to check what's going on, what the exact issue is.

Here is a Minimal Reproducible Example, which demonstrates that there's basically no issue from the different list levels:

REPORT.

TYPES ty_matnr TYPE c LENGTH 10.
DATA matnr TYPE ty_matnr.

SELECT-OPTIONS s_matnr FOR matnr.

TOP-OF-PAGE.
  WRITE: / 'User:',sy-uname,  29 'Programe Name: ', sy-cprog,
         / 'Date: ', sy-datum.
  ULINE.

START-OF-SELECTION.
  WRITE / 'Enter DISPLAY in the Command Field and press Enter'.

AT USER-COMMAND.
  CASE sy-ucomm.
    WHEN'DISPLAY'.
      WINDOW STARTING AT 5 3 ENDING AT 40 10.
      matnr = '500-100'.
      WRITE / matnr.
      matnr = '500-400'.
      WRITE / matnr.
      matnr = '700-220'.
      WRITE / matnr.
  ENDCASE.

AT LINE-SELECTION.
  DATA gv_line TYPE i.
  GET CURSOR LINE gv_line.
  DATA matnr2 TYPE ty_matnr.
  READ LINE gv_line FIELD VALUE matnr INTO matnr2.
  WRITE : / 'Second list. Selected line is', matnr2.

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 Sandra Rossi