'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 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 |
