Application Development Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 

Check the Code!

Former Member
0 Kudos

Dear All,

I have wriiten one program in ALV. But it not showing the required output.

can somebody go through the my prob and can come up with the desired results.

Whne u all will go through the program will got to know what exactly I want to display.

As per as I am thinking there is some prob in SELECT stament.

So please check and do help me.

I am giving my code below:-

tables: marc,

mkpf,

mseg,

ekko,

ekpo,

ekbe,

rseg.

type-pools: slis.

&----


data: begin of itab occurs 0,

matnr like marc-matnr,

budat like ekbe-budat,

maktx like makt-maktx,

bedat like ekko-bedat,

ebeln like mseg-ebeln,

menge like mseg-menge,

bprme like mseg-bprme,

netwr like ekpo-netwr,

bstmg like mseg-bstmg,

dmbtr like mseg-dmbtr,

bprbm like rseg-bprbm,

refwr like ekbe-refwr,

end of itab.

data: i_fieldcat type slis_t_fieldcat_alv with header line,

wa_fieldcat type slis_fieldcat_alv.

data v_repid type sy-repid.

&----


selection-screen begin of block b1 with frame title text-001.

select-options: s_matnr for marc-matnr,

s_budat for mkpf-budat.

selection-screen end of block b1.

&----


&----


initialization.

v_repid = sy-repid.

start-of-selection.

  • SELECT werks smbln bstmg dmbtr matnr ebeln FROM mseg INTO

  • CORRESPONDING FIELDS OF TABLE itab

  • WHERE matnr IN s_matnr.

**ENDSELECT.

*

*

  • SELECT SINGLE lifnr FROM ekko INTO CORRESPONDING FIELDS OF itab

  • WHERE ebeln = mseg-ebeln.

*

  • SELECT ebeln menge FROM ekpo INTO CORRESPONDING FIELDS OF itab

  • WHERE ebeln = mseg-ebeln.

  • ENDSELECT.

*

  • SELECT ebeln belnr refwr budat FROM ekbe INTO CORRESPONDING FIELDS OF

  • itab

  • WHERE budat IN s_budat AND

  • ebeln = mseg-ebeln.

  • ENDSELECT.

*

  • SELECT SINGLE matnr FROM marc INTO itab

  • WHERE matnr = mseg-matnr.

**APPEND itab.

**END-OF-SELECTION.

*----


  • SELECT matnr ebeln menge bprme bstmg dmbtr FROM mseg INTO

  • CORRESPONDING FIELDS OF TABLE itab

  • WHERE matnr IN s_matnr.

*

*

  • SELECT matnr maktx FROM makt INTO CORRESPONDING FIELDS OF TABLE itab

  • WHERE matnr = mseg-matnr.

*

  • SELECT ebeln bedat FROM ekko INTO CORRESPONDING FIELDS OF TABLE itab

  • WHERE ebeln = mseg-ebeln.

*

  • SELECT ebeln netwr FROM ekpo INTO CORRESPONDING FIELDS OF TABLE itab

  • WHERE ebeln = mseg-ebeln.

*

  • SELECT ebeln bprbm FROM rseg INTO CORRESPONDING FIELDS OF TABLE itab

  • WHERE ebeln = mseg-ebeln.

*

  • SELECT budat ebeln refwr FROM ekbe INTO CORRESPONDING FIELDS OF TABLE itab

  • WHERE budat IN s_budat AND

  • ebeln = mseg-ebeln.

*----


-


select matnr ebeln menge bprme bstmg dmbtr from mseg into corresponding fields of table itab where matnr in s_matnr.

select matnr maktx from makt into corresponding fields of table itab for all entries in itab where matnr = itab-matnr.

select ebeln bedat from ekko into corresponding fields of table itab for all entries in itab where ebeln = itab-ebeln.

select ebeln netwr from ekpo into corresponding fields of table itab for all entries in itab where ebeln = itab-ebeln.

select ebeln bprbm from rseg into corresponding fields of table itab for all entries in itab where ebeln = itab-ebeln.

select budat ebeln refwr from ekbe into corresponding fields of

table itab for all entries in itab

where budat in s_budat and

ebeln = itab-ebeln.

append itab.

&----


perform build_fieldcatlog.

perform display_alv_report.

&----


  • LOOP AT itab.

*

*WRITE:/ itab-menge, itab-werks, itab-smbln, itab-bstmg, itab-matnr,

*itab-ebeln, itab-lifnr, itab-menge, itab-belnr, itab-refwr, itab-budat.

*

  • ENDLOOP.

&----


*& Form build_fieldcatlog

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


form build_fieldcatlog . "Form BUILD_FIELDCATLOG, Start

wa_fieldcat-fieldname = 'maktx'.

wa_fieldcat-seltext_m = 'maktx.'.

append wa_fieldcat to i_fieldcat.

clear wa_fieldcat.

wa_fieldcat-fieldname = 'bedat'.

wa_fieldcat-seltext_m = 'bedat.'.

append wa_fieldcat to i_fieldcat.

clear wa_fieldcat.

wa_fieldcat-fieldname = 'EBELN'.

wa_fieldcat-seltext_m = 'ebeln.'.

append wa_fieldcat to i_fieldcat.

clear wa_fieldcat.

wa_fieldcat-fieldname = 'MENGE'.

wa_fieldcat-seltext_m = 'menge.'.

append wa_fieldcat to i_fieldcat.

clear wa_fieldcat.

wa_fieldcat-fieldname = 'bprme'.

wa_fieldcat-seltext_m = 'bprme.'.

append wa_fieldcat to i_fieldcat.

clear wa_fieldcat.

wa_fieldcat-fieldname = 'netwr'.

wa_fieldcat-seltext_m = 'netwr.'.

append wa_fieldcat to i_fieldcat.

clear wa_fieldcat.

wa_fieldcat-fieldname = 'BSTMG'.

wa_fieldcat-seltext_m = 'bstmg.'.

append wa_fieldcat to i_fieldcat.

clear wa_fieldcat.

wa_fieldcat-fieldname = 'dmbtr'.

wa_fieldcat-seltext_m = 'dmbtr.'.

append wa_fieldcat to i_fieldcat.

clear wa_fieldcat.

wa_fieldcat-fieldname = 'bprbm'.

wa_fieldcat-seltext_m = 'bprbm'.

append wa_fieldcat to i_fieldcat.

clear wa_fieldcat.

wa_fieldcat-fieldname = 'REFWR'.

wa_fieldcat-seltext_m = 'refwr.'.

append wa_fieldcat to i_fieldcat.

clear wa_fieldcat.

endform. "build_fieldcatlog

" build_fieldcatlog "Form BUILD_FIELDCATLOG, End

&----


*& Form display_alv_report

&----


  • text

----


form display_alv_report. "Form DISPLAY_ALV_REPORT, Start

v_repid = sy-repid.

call function 'REUSE_ALV_GRID_DISPLAY'

exporting

i_callback_program = v_repid

it_fieldcat = i_fieldcat[]

i_callback_top_of_page = 'TOP-OF-PAGE'

i_save = 'A'

tables

t_outtab = itab.

endform. "display_alv_report

----


top-of-page.

write:/ 'Purchase request Print program'.

end-of-page.

Thanks & Regards,

Abhay.

6 REPLIES 6

0 Kudos

Hi,

Two things that caugt my eye are

FIELDNAMES in field catalog are in lower case, you need to pass them in UPPER CASE.

Also you are passing itab, may be its good idea to pass itab[ ] as this is a table with header line.

Regards,

Sesh

Former Member
0 Kudos

Hi,

first you have to define the fieldcat in capital letters.

wa_fieldcat-fieldname = 'maktx'.

--> MAKTX

regards

Former Member
0 Kudos

please correct the fieldcatalog as marked in bold and let us know the results

(fieldnames should be populated in CAPS )

form build_fieldcatlog . "Form BUILD_FIELDCATLOG, Start

wa_fieldcat-fieldname = 'maktx'. " <b>'MAKTX'</b>

wa_fieldcat-seltext_m = 'maktx.'.

append wa_fieldcat to i_fieldcat.

clear wa_fieldcat.

wa_fieldcat-fieldname = 'bedat'. <b>'BEDAT'</b>

wa_fieldcat-seltext_m = 'bedat.'.

append wa_fieldcat to i_fieldcat.

clear wa_fieldcat.

wa_fieldcat-fieldname = 'EBELN'.

wa_fieldcat-seltext_m = 'ebeln.'.

append wa_fieldcat to i_fieldcat.

clear wa_fieldcat.

wa_fieldcat-fieldname = 'MENGE'.

wa_fieldcat-seltext_m = 'menge.'.

append wa_fieldcat to i_fieldcat.

clear wa_fieldcat.

wa_fieldcat-fieldname = 'bprme'<b>.'BPRME'</b>

wa_fieldcat-seltext_m = 'bprme.'.

append wa_fieldcat to i_fieldcat.

clear wa_fieldcat.

wa_fieldcat-fieldname = 'netwr'.'<b>NETWR'</b>

wa_fieldcat-seltext_m = 'netwr.'.

append wa_fieldcat to i_fieldcat.

clear wa_fieldcat.

wa_fieldcat-fieldname = 'BSTMG'.

wa_fieldcat-seltext_m = 'bstmg.'.

append wa_fieldcat to i_fieldcat.

clear wa_fieldcat.

wa_fieldcat-fieldname = 'dmbtr'.'<b>DMBTR'</b>

wa_fieldcat-seltext_m = 'dmbtr.'.

append wa_fieldcat to i_fieldcat.

clear wa_fieldcat.

wa_fieldcat-fieldname = 'bprbm'.'<b>BPRBM'</b>

wa_fieldcat-seltext_m = 'bprbm'.

append wa_fieldcat to i_fieldcat.

clear wa_fieldcat.

wa_fieldcat-fieldname = 'REFWR'.

wa_fieldcat-seltext_m = 'refwr.'.

append wa_fieldcat to i_fieldcat.

clear wa_fieldcat.

JozsefSzikszai
Active Contributor
0 Kudos

hi Abhay,

select matnr ebeln menge bprme bstmg dmbtr from mseg into corresponding fields of table itab where matnr in s_matnr.

<b>==> the corresponding fields of itab are filled here, OK</b>

select matnr maktx from makt into corresponding fields of table itab for all entries in itab where matnr = itab-matnr.

<b>==> this won't fill the fields you want, you have to loop on the internal table select on each line (not really nice!) or create a JOIN</b>

select ebeln bedat from ekko into corresponding fields of table itab for all entries in itab where ebeln = itab-ebeln.

<b>same like above</b>

select ebeln netwr from ekpo into corresponding fields of table itab for all entries in itab where ebeln = itab-ebeln.

<b>==> same like above</b>

select ebeln bprbm from rseg into corresponding fields of table itab for all entries in itab where ebeln = itab-ebeln.

<b>==> same like above</b>

select budat ebeln refwr from ekbe into corresponding fields of

table itab for all entries in itab

where budat in s_budat and

ebeln = itab-ebeln.

<b>==> same like above</b>

append itab.

<b>==> an empty line will be added to the itab here...</b>

former_member480923
Active Contributor
0 Kudos

here is the changed Select Logic:


field-symbols: <l_itab> type line of itab. 
select matnr ebeln menge bprme bstmg dmbtr from mseg into corresponding fields of table itab where matnr in s_matnr.

if sy-subrc = 0.
loop at itab assigning <l_itab>.
select single maktx from makt into <l_itab>-maktx where matnr = <l_itab>-matnr.


select single ekko~ebeln ekko~bedat ekpo~netwr from ekko inner join ekpo 
on ekko~ebeln = ekpo~ebeln 
into <l_itab>-ebeln <l_itab>-bedat <l_itab>-netwr
where ekpo~MATNR = <l_itab>-MATNR.

* Since u haven't got EBELN before this this is a wrong field comparison 

select single budat ebeln refwr from ekbe into corresponding fields of
<L_itab> 
where budat in s_budat and
ebeln = <l_itab>-ebeln.
*append itab.
endloop. 
endif. 

Hope That Helps

Anirban M.

Former Member
0 Kudos

HI,

make all the field names while creating fieldcat as capital.

select statements u have to write as below.

SELECT matnr ebeln menge bprme bstmg dmbtr FROM mseg INTO

CORRESPONDING FIELDS OF TABLE itab

WHERE matnr IN s_matnr.

SELECT matnr maktx FROM makt INTO CORRESPONDING FIELDS OF TABLE itab

FOR ALL ENTRIES IN itab WHERE matnr = itab-matnr.

SELECT ebeln bedat FROM ekko INTO CORRESPONDING FIELDS OF TABLE itab

FOR ALL ENTRIES IN itab WHERE ebeln = itab-ebeln.

SELECT ebeln netwr FROM ekpo INTO CORRESPONDING FIELDS OF TABLE itab

FOR ALL ENTRIES IN itab WHERE ebeln = itab-ebeln.

SELECT ebeln bprbm FROM rseg INTO CORRESPONDING FIELDS OF TABLE itab

FOR ALL ENTRIES IN itab WHERE ebeln = itab-ebeln.

SELECT budat ebeln refwr FROM ekbe INTO CORRESPONDING FIELDS OF

TABLE itab FOR ALL ENTRIES IN itab

WHERE budat IN s_budat AND

ebeln = itab-ebeln.

rgds,

bharat.