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: 

alv : drill down not working.

Former Member
0 Kudos
276

Hi All,

Could you please tell me whats wrong with this code ? its not drilling down to show 'ebeln' with me22n. Am I missing something ?

Please help.

Hrishi

code is :-

*----


REPORT Z_VENDOR_BACKORDER_REPORT_ALV .

TABLES: EKKO, LFA1, MAKT, EKET, EKPO, AFPO, MARC.

*Data Declaration

*----


DATA: BEGIN OF ITAB OCCURS 0 ,

ebeln LIKE ekko-ebeln , " PO number

aedat LIKE ekko-aedat , " creation date

ebelp LIKE ekpo-ebelp , " item no

lifnr LIKE ekko-lifnr , " vendor number

name1 LIKE lfa1-name1 , " vendor name

RESWK LIKE EKKO-RESWK , " PLANT NO

MEMORY LIKE EKKO-MEMORY , " ORDER INCOMPLETE

matnr LIKE ekpo-matnr , " material number

werks like ekpo-werks , " plant

txz01 LIKE ekpo-txz01 , " material description

eindt LIKE eket-eindt , " Promised date

menge LIKE eket-menge , " quantity

wemng LIKE eket-wemng , " delivered quantity

netpr like ekpo-netpr , " value in AUD

peinh like ekpo-peinh , " price unit

banfn like ekpo-banfn , " PR no

aufnr like ebkn-aufnr , " Production order no

MAABC LIKE MARC-MAABC , " MATERIAL ABC Indicator

maktx like makt-maktx , " material long description

open_quant type p decimals 2, " quantity - delivered

VALUE TYPE p decimals 2, " $ VALUE * OPEN QUANTITY

end of ITAB.

data: wa like itab.

DATA: bdcdata LIKE bdcdata OCCURS 0 WITH HEADER LINE.

DATA: TEMP TYPE EKKO-LIFNR.

data: opt like CTU_PARAMS.

*DATA: WA TYPE FINAL.

  • all ALV declarations

*----


type-pools: slis. "ALV Declarations

DATA: fieldcatalog TYPE slis_t_fieldcat_alv with header line,

G_REPID TYPE SY-REPID,

GS_PRINT TYPE SLIS_PRINT_ALV,

GT_LIST_TOP_OF_PAGE TYPE SLIS_T_LISTHEADER,

GT_EVENTS TYPE SLIS_T_EVENT,

GT_SORT TYPE SLIS_T_SORTINFO_ALV,

GS_LAYOUT TYPE SLIS_LAYOUT_ALV,

COL_POS TYPE I.

*----


  • -----------------SELECTION SCREEN----------------------

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

select-options VENDORNO for ekko-lifnr.

select-options MATERIAL for ekpo-matnr.

SELECT-OPTIONS PLANT FOR EKKO-RESWK.

select-options REQDAT for eket-eindt.

selection-screen end of block b1.

*----


*................... GET DATA..................

START-OF-SELECTION.

PERFORM GATHER_DATA.

END-OF-SELECTION.

FORM USER_COMMAND USING r_ucomm LIKE sy-ucomm

rs_selfield TYPE slis_selfield.

CASE r_ucomm.

WHEN '&IC1'.

CASE rs_selfield-sel_tab_field.

WHEN 'ITAB-EBELN'.

CHECK NOT rs_selfield-value IS INITIAL.

SET PARAMETER ID 'BUS' FIELD rs_selfield-value.

CALL TRANSACTION 'ME22N' AND SKIP FIRST SCREEN.

  • Do something at 'Sales document type' field selection

when 'ITAB-MATNR'.

SET PARAMETER ID 'BUS' FIELD rs_selfield-value.

CALL TRANSACTION 'MD04' AND SKIP FIRST SCREEN.

ENDCASE.

ENDCASE.

ENDFORM.

form gather_data.

SELECT EKKO~EBELN

EKKO~AEDAT

EKKO~LIFNR

  • EKKO~MEMORY

  • EKKO~RESWK

EKPO~EBELP

EKPO~MATNR

ekpo~werks

ekpo~netpr

ekpo~peinh

ekpo~banfn

ekpo~txz01

  • makt~maktx

EKET~EINDT

EKET~MENGE

EKET~WEMNG

LFA1~NAME1

INTO corresponding fields of ITAB

FROM (

EKKO inner JOIN EKPO

ON EKKOEBELN = EKPOEBELN

inner JOIN EKET

ON EKPOEBELN = EKETEBELN

AND EKPOEBELP = EKETEBELP

inner JOIN LFA1

ON EKKOLIFNR = LFA1LIFNR

*left outer join makt

*on ekpomatnr = maktmatnr

)

WHERE EKKO~LIFNR IN VENDORNO

AND EKKO~RESWK IN PLANT

and EKPO~MATNR IN MATERIAL

and ekpo~elikz eq ' '

and ekpo~loekz ne 'L'

and eket~eindt in REQDAT.

append itab.

CLEAR ITAB.

endselect.

*----


clear temp.

sort itab by lifnr.

loop at itab .

ITAB-OPEN_QUANT = ITAB-MENGE - ITAB-WEMNG.

if itab-matnr eq ''.

select single aufnr from ebkn into itab-aufnr where banfn = itab-banfn.

select single matnr from afpo into itab-matnr where aufnr = itab-aufnr.

endif.

select single maktx from makt into itab-maktx where matnr = itab-matnr.

select single maabc from MARC INTO ITAB-MAABC WHERE MATNR = ITAB-MATNR.

ITAB-VALUE = ITAB-NETPR * ITAB-OPEN_QUANT / itab-peinh.

modify itab.

endloop.

SKIP.

*----


*

fieldcatalog-tabname = 'ITAB'.

fieldcatalog-fieldname = 'LIFNR'.

fieldcatalog-seltext_m = 'vendor no'.

fieldcatalog-col_pos = 1.

fieldcatalog-outputlen = 15.

fieldcatalog-inttype = 'C'.

fieldcatalog-emphasize = 'X'.

fieldcatalog-key = 'X'.

  • fieldcatalog-do_sum = 'X'.

fieldcatalog-no_zero = 'X'.

append fieldcatalog to fieldcatalog.

clear fieldcatalog.

fieldcatalog-tabname = 'ITAB'.

fieldcatalog-fieldname = 'EBELN'.

fieldcatalog-seltext_m = 'po Number'.

fieldcatalog-col_pos = 2.

fieldcatalog-inttype = 'C'.

fieldcatalog-emphasize = 'C401'.

append fieldcatalog to fieldcatalog.

clear fieldcatalog.

fieldcatalog-tabname = 'ITAB'.

fieldcatalog-fieldname = 'AEDAT'.

fieldcatalog-seltext_m = 'po date'.

fieldcatalog-col_pos = 3.

fieldcatalog-inttype = 'C'.

append fieldcatalog to fieldcatalog.

clear fieldcatalog.

fieldcatalog-tabname = 'ITAB'.

fieldcatalog-fieldname = 'EBELP'.

fieldcatalog-seltext_m = 'item number'.

fieldcatalog-col_pos = 4.

fieldcatalog-inttype = 'C'.

append fieldcatalog to fieldcatalog.

clear fieldcatalog.

fieldcatalog-tabname = 'ITAB'.

fieldcatalog-fieldname = 'MATNR'.

fieldcatalog-no_zero = 'X'.

fieldcatalog-seltext_m = 'material number'.

fieldcatalog-col_pos = 5.

fieldcatalog-inttype = 'C'.

append fieldcatalog to fieldcatalog.

clear fieldcatalog.

fieldcatalog-tabname = 'ITAB'.

fieldcatalog-fieldname = 'MAABC'.

fieldcatalog-seltext_m = 'material type'.

fieldcatalog-col_pos = 6.

fieldcatalog-inttype = 'C'.

append fieldcatalog to fieldcatalog.

clear fieldcatalog.

fieldcatalog-tabname = 'ITAB'.

fieldcatalog-fieldname = 'TXZ01'.

fieldcatalog-seltext_m = 'short text'.

fieldcatalog-col_pos = 7.

fieldcatalog-inttype = 'C'.

append fieldcatalog to fieldcatalog.

clear fieldcatalog.

fieldcatalog-tabname = 'ITAB'.

fieldcatalog-fieldname = 'MAKTX'.

fieldcatalog-seltext_m = 'long text'.

fieldcatalog-col_pos = 8.

fieldcatalog-inttype = 'C'.

fieldcatalog-outputlen = 15.

append fieldcatalog to fieldcatalog.

clear fieldcatalog.

fieldcatalog-tabname = 'ITAB'.

fieldcatalog-fieldname = 'EINDT'.

fieldcatalog-seltext_m = 'date promised'.

fieldcatalog-col_pos = 9.

fieldcatalog-inttype = 'C'.

append fieldcatalog to fieldcatalog.

clear fieldcatalog.

fieldcatalog-tabname = 'ITAB'.

fieldcatalog-fieldname = 'MENGE'.

fieldcatalog-seltext_m = 'Quantity'.

fieldcatalog-col_pos = 10.

fieldcatalog-inttype = 'C'.

fieldcatalog-outputlen = 15.

append fieldcatalog to fieldcatalog.

clear fieldcatalog.

fieldcatalog-tabname = 'ITAB'.

fieldcatalog-fieldname = 'WEMNG'.

fieldcatalog-seltext_m = 'Delivered'.

fieldcatalog-col_pos = 11.

fieldcatalog-inttype = 'C'.

append fieldcatalog to fieldcatalog.

clear fieldcatalog.

fieldcatalog-tabname = 'ITAB'.

fieldcatalog-fieldname = 'OPEN_QUANT'.

fieldcatalog-seltext_m = 'Open quantity'.

fieldcatalog-col_pos = 12.

fieldcatalog-inttype = 'C'.

append fieldcatalog to fieldcatalog.

clear fieldcatalog.

fieldcatalog-tabname = 'ITAB'.

fieldcatalog-fieldname = 'VALUE'.

fieldcatalog-seltext_m = '$ value'.

fieldcatalog-col_pos = 13.

fieldcatalog-inttype = 'C'.

fieldcatalog-do_sum = 'X'.

append fieldcatalog to fieldcatalog.

clear fieldcatalog.

*----


*----


call function 'REUSE_ALV_GRID_DISPLAY'

exporting

i_callback_program = g_repid

I_CALLBACK_USER_COMMAND = 'USER_COMMAND'

it_fieldcat = fieldcatalog[]

  • is_layout = GS_layout

IT_SORT = gt_sort

I_DEFAULT = 'X'

I_SAVE = 'X'

  • is_variant = z_template

tables

t_outtab = ITAB

exceptions

program_error = 1

others = 2.

endform.

1 ACCEPTED SOLUTION

Former Member
0 Kudos
93

I did the modification to your program ... just cut and paste it will work ...

[code]REPORT Z_VENDOR_BACKORDER_REPORT_ALV .

TABLES: EKKO, LFA1, MAKT, EKET, EKPO, AFPO, MARC.

*Data Declaration

*----


DATA: BEGIN OF ITAB OCCURS 0 ,

ebeln LIKE ekko-ebeln , " PO number

aedat LIKE ekko-aedat , " creation date

ebelp LIKE ekpo-ebelp , " item no

lifnr LIKE ekko-lifnr , " vendor number

name1 LIKE lfa1-name1 , " vendor name

RESWK LIKE EKKO-RESWK , " PLANT NO

MEMORY LIKE EKKO-MEMORY , " ORDER INCOMPLETE

matnr LIKE ekpo-matnr , " material number

werks like ekpo-werks , " plant

txz01 LIKE ekpo-txz01 , " material description

eindt LIKE eket-eindt , " Promised date

menge LIKE eket-menge , " quantity

wemng LIKE eket-wemng , " delivered quantity

netpr like ekpo-netpr , " value in AUD

peinh like ekpo-peinh , " price unit

banfn like ekpo-banfn , " PR no

aufnr like ebkn-aufnr , " Production order no

MAABC LIKE MARC-MAABC , " MATERIAL ABC Indicator

maktx like makt-maktx , " material long description

open_quant type p decimals 2, " quantity - delivered

VALUE TYPE p decimals 2, " $ VALUE * OPEN QUANTITY

end of ITAB.

data: wa_ekko LIKE itab.

DATA: bdcdata LIKE bdcdata OCCURS 0 WITH HEADER LINE.

DATA: TEMP TYPE EKKO-LIFNR.

data: opt like CTU_PARAMS.

*DATA: WA TYPE FINAL.

  • all ALV declarations

*----


type-pools: slis. "ALV Declarations

DATA: fieldcatalog TYPE slis_t_fieldcat_alv with header line,

G_REPID TYPE SY-REPID,

GS_PRINT TYPE SLIS_PRINT_ALV,

GT_LIST_TOP_OF_PAGE TYPE SLIS_T_LISTHEADER,

GT_EVENTS TYPE SLIS_T_EVENT,

GT_SORT TYPE SLIS_T_SORTINFO_ALV,

GS_LAYOUT TYPE SLIS_LAYOUT_ALV,

COL_POS TYPE I.

*----


  • -----------------SELECTION SCREEN----------------------

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

select-options VENDORNO for ekko-lifnr.

select-options MATERIAL for ekpo-matnr.

SELECT-OPTIONS PLANT FOR EKKO-RESWK.

select-options REQDAT for eket-eindt.

selection-screen end of block b1.

*----


*................... GET DATA..................

START-OF-SELECTION.

PERFORM GATHER_DATA.

perform display_alv_report.

form gather_data.

SELECT EKKO~EBELN

EKKO~AEDAT

EKKO~LIFNR

  • EKKO~MEMORY

  • EKKO~RESWK

EKPO~EBELP

EKPO~MATNR

ekpo~werks

ekpo~netpr

ekpo~peinh

ekpo~banfn

ekpo~txz01

  • makt~maktx

EKET~EINDT

EKET~MENGE

EKET~WEMNG

LFA1~NAME1

INTO corresponding fields of ITAB

FROM (

EKKO inner JOIN EKPO

ON EKKOEBELN = EKPOEBELN

inner JOIN EKET

ON EKPOEBELN = EKETEBELN

AND EKPOEBELP = EKETEBELP

inner JOIN LFA1

ON EKKOLIFNR = LFA1LIFNR

*left outer join makt

*on ekpomatnr = maktmatnr

)

WHERE EKKO~LIFNR IN VENDORNO

AND EKKO~RESWK IN PLANT

and EKPO~MATNR IN MATERIAL

and ekpo~elikz eq ' '

and ekpo~loekz ne 'L'

and eket~eindt in REQDAT.

append itab.

CLEAR ITAB.

endselect.

*----


clear temp.

sort itab by lifnr.

loop at itab .

ITAB-OPEN_QUANT = ITAB-MENGE - ITAB-WEMNG.

if itab-matnr eq ''.

select single aufnr from ebkn into itab-aufnr where banfn = itab-banfn.

select single matnr from afpo into itab-matnr where aufnr = itab-aufnr.

endif.

select single maktx from makt into itab-maktx where matnr = itab-matnr.

select single maabc from MARC INTO ITAB-MAABC WHERE MATNR = ITAB-MATNR.

ITAB-VALUE = ITAB-NETPR * ITAB-OPEN_QUANT / itab-peinh.

modify itab.

endloop.

SKIP.

*----


*

fieldcatalog-tabname = 'ITAB'.

fieldcatalog-fieldname = 'LIFNR'.

fieldcatalog-seltext_m = 'vendor no'.

fieldcatalog-col_pos = 1.

fieldcatalog-outputlen = 15.

fieldcatalog-inttype = 'C'.

fieldcatalog-emphasize = 'X'.

fieldcatalog-key = 'X'.

  • fieldcatalog-do_sum = 'X'.

fieldcatalog-no_zero = 'X'.

append fieldcatalog to fieldcatalog.

clear fieldcatalog.

fieldcatalog-tabname = 'ITAB'.

fieldcatalog-fieldname = 'EBELN'.

fieldcatalog-seltext_m = 'po Number'.

fieldcatalog-col_pos = 2.

fieldcatalog-outputlen = 10 .

*fieldcatalog-inttype = 'C'.

fieldcatalog-emphasize = 'X'.

fieldcatalog-key = 'X'.

append fieldcatalog to fieldcatalog.

clear fieldcatalog.

fieldcatalog-tabname = 'ITAB'.

fieldcatalog-fieldname = 'AEDAT'.

fieldcatalog-seltext_m = 'po date'.

fieldcatalog-col_pos = 3.

fieldcatalog-inttype = 'C'.

append fieldcatalog to fieldcatalog.

clear fieldcatalog.

fieldcatalog-tabname = 'ITAB'.

fieldcatalog-fieldname = 'EBELP'.

fieldcatalog-seltext_m = 'item number'.

fieldcatalog-col_pos = 4.

fieldcatalog-inttype = 'C'.

append fieldcatalog to fieldcatalog.

clear fieldcatalog.

fieldcatalog-tabname = 'ITAB'.

fieldcatalog-fieldname = 'MATNR'.

fieldcatalog-no_zero = 'X'.

fieldcatalog-seltext_m = 'material number'.

fieldcatalog-col_pos = 5.

fieldcatalog-inttype = 'C'.

append fieldcatalog to fieldcatalog.

clear fieldcatalog.

fieldcatalog-tabname = 'ITAB'.

fieldcatalog-fieldname = 'MAABC'.

fieldcatalog-seltext_m = 'material type'.

fieldcatalog-col_pos = 6.

fieldcatalog-inttype = 'C'.

append fieldcatalog to fieldcatalog.

clear fieldcatalog.

fieldcatalog-tabname = 'ITAB'.

fieldcatalog-fieldname = 'TXZ01'.

fieldcatalog-seltext_m = 'short text'.

fieldcatalog-col_pos = 7.

fieldcatalog-inttype = 'C'.

append fieldcatalog to fieldcatalog.

clear fieldcatalog.

fieldcatalog-tabname = 'ITAB'.

fieldcatalog-fieldname = 'MAKTX'.

fieldcatalog-seltext_m = 'long text'.

fieldcatalog-col_pos = 8.

fieldcatalog-inttype = 'C'.

fieldcatalog-outputlen = 15.

append fieldcatalog to fieldcatalog.

clear fieldcatalog.

fieldcatalog-tabname = 'ITAB'.

fieldcatalog-fieldname = 'EINDT'.

fieldcatalog-seltext_m = 'date promised'.

fieldcatalog-col_pos = 9.

fieldcatalog-inttype = 'C'.

append fieldcatalog to fieldcatalog.

clear fieldcatalog.

fieldcatalog-tabname = 'ITAB'.

fieldcatalog-fieldname = 'MENGE'.

fieldcatalog-seltext_m = 'Quantity'.

fieldcatalog-col_pos = 10.

fieldcatalog-inttype = 'C'.

fieldcatalog-outputlen = 15.

append fieldcatalog to fieldcatalog.

clear fieldcatalog.

fieldcatalog-tabname = 'ITAB'.

fieldcatalog-fieldname = 'WEMNG'.

fieldcatalog-seltext_m = 'Delivered'.

fieldcatalog-col_pos = 11.

fieldcatalog-inttype = 'C'.

append fieldcatalog to fieldcatalog.

clear fieldcatalog.

fieldcatalog-tabname = 'ITAB'.

fieldcatalog-fieldname = 'OPEN_QUANT'.

fieldcatalog-seltext_m = 'Open quantity'.

fieldcatalog-col_pos = 12.

fieldcatalog-inttype = 'C'.

append fieldcatalog to fieldcatalog.

clear fieldcatalog.

fieldcatalog-tabname = 'ITAB'.

fieldcatalog-fieldname = 'VALUE'.

fieldcatalog-seltext_m = '$ value'.

fieldcatalog-col_pos = 13.

fieldcatalog-inttype = 'C'.

fieldcatalog-do_sum = 'X'.

append fieldcatalog to fieldcatalog.

clear fieldcatalog.

*----


*----


endform.

form display_alv_report.

g_repid = sy-repid.

call function 'REUSE_ALV_GRID_DISPLAY'

exporting

i_callback_program = g_repid

i_callback_top_of_page = 'TOP-OF-PAGE' "see FORM

i_callback_user_command = 'USER_COMMAND'

  • i_grid_title = outtext

is_layout = gs_layout

it_fieldcat = fieldcatalog[]

  • it_special_groups = gd_tabgroup

it_events = gt_events

  • is_print = gd_prntparams

i_save = 'X'

  • is_variant = z_template

tables

t_outtab = itAB

exceptions

program_error = 1

others = 2.

if sy-subrc <> 0.

  • MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

  • WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

endif.

endform. " DISPLAY_ALV_REPORT

FORM user_command USING r_ucomm LIKE sy-ucomm

rs_selfield TYPE slis_selfield.

  • Check function code

CASE r_ucomm.

WHEN '&IC1'.

  • Check field clicked on within ALVgrid report

IF rs_selfield-fieldname = 'EBELN'.

  • Read data table, using index of row user clicked on

READ TABLE ITAB INTO wa_ekko INDEX rs_selfield-tabindex.

  • Set parameter ID for transaction screen field

SET PARAMETER ID 'BES' FIELD wa_ekko-ebeln.

  • Sxecute transaction ME23N, and skip initial data entry screen

CALL TRANSACTION 'ME23N' AND SKIP FIRST SCREEN.

ENDIF.

ENDCASE.

ENDFORM.[/code]

reward points if it is usefull ..

Girish

10 REPLIES 10

S0025444845
Active Participant
0 Kudos
93

Hi,

try like this

FORM USER_COMMAND USING r_ucomm LIKE sy-ucomm

rs_selfield TYPE slis_selfield.

CASE r_ucomm.

WHEN '&IC1'.

READ TABLE itabINTO wa_itab INDEX r_selfield-tabindex.

IF r_selfield-fieldname = 'EBELN'.

IF sy-subrc IS INITIAL.

SET PARAMETER ID 'BUS' FIELD wa_itab-mblnr.

CALL TRANSACTION 'ME22N' AND SKIP FIRST SCREEN.

  • Do something at 'Sales document type' field selection

endif.

ELSEIF r_selfield-fieldname = 'MATNR'.

SET PARAMETER ID 'BUS' FIELD wa_itab-matnr.

CALL TRANSACTION 'MD04' AND SKIP FIRST SCREEN.

endif.

endif.

endcase.

regards,

sudha

reward points if useful.

0 Kudos
93

Hi ,

use this done some changes.

Hi,

try like this

FORM USER_COMMAND USING r_ucomm LIKE sy-ucomm

rs_selfield TYPE slis_selfield.

CASE r_ucomm.

WHEN '&IC1'.

READ TABLE itabINTO wa_itab INDEX r_selfield-tabindex.

IF r_selfield-fieldname = 'EBELN'.

IF sy-subrc IS INITIAL.

SET PARAMETER ID 'BUS' FIELD wa_itab-mblnr.

CALL TRANSACTION 'ME22N' AND SKIP FIRST SCREEN.

  • Do something at 'Sales document type' field selection

endif.

ELSEIF r_selfield-fieldname = 'MATNR'.

SET PARAMETER ID 'MAT' FIELD wa_itab-matnr.

CALL TRANSACTION 'MD04' AND SKIP FIRST SCREEN.

endif.

endif.

endcase.

regards,

sudha

0 Kudos
93

Thanks Sudha,

I did try that.. but, didnt help. I dont know why this is not working.

Everything seems to be correct. still its not drilling down.

0 Kudos
93

Hi,

try using parameter id 'BES' for mblnr

and ' MAT' for matnr.

sudha

0 Kudos
93

Naah. Still doesnt work

Former Member
0 Kudos
93

Hi,

refer to this standard program DEMO_DYNPRO_DROPDOWN_LISTBOX . this will help you out........

regards,

Ruchika

reward if useful.

former_member186741
Active Contributor
0 Kudos
93

use BES not BUS

SET PARAMETER ID <b>'BES'</b> FIELD rs_selfield-value.

Former Member
0 Kudos
93

hi,

please run the code below.

REPORT yfi7g_ing_mic_001 .

*PROGRAM YFI7G_ING_MIC_001.

TABLES: vbak .

TABLES: mara .

TYPES: BEGIN OF tp_vbak ,

vbeln TYPE vbak-vbeln,

erdat TYPE vbak-erdat,

erzet TYPE vbak-erzet,

ernam TYPE vbak-ernam,

vbtyp TYPE vbak-vbtyp,

trvog TYPE vbak-trvog,

auart TYPE vbak-auart,

lifsk TYPE vbak-lifsk,

faksk TYPE vbak-faksk,

waerk TYPE vbak-waerk,

vkorg TYPE vbak-vkorg,

kunnr TYPE vbak-kunnr,

vgbel TYPE vbak-vgbel,

vgtyp TYPE vbak-vgtyp,

END OF tp_vbak .

TYPES: BEGIN OF tp_mara ,

matnr TYPE mara-matnr,

END OF tp_mara .

TYPES: BEGIN OF tp_alv1_data.

INCLUDE TYPE tp_vbak .

TYPES: END OF tp_alv1_data.

TYPES: BEGIN OF tp_alv2_data.

INCLUDE TYPE tp_mara .

TYPES: END OF tp_alv2_data.

TYPE-POOLS: slis.

DATA: gt_vbak TYPE STANDARD TABLE OF tp_vbak WITH HEADER LINE.

DATA: gt_mara TYPE STANDARD TABLE OF tp_mara WITH HEADER LINE.

DATA: gs_variant LIKE disvariant.

DATA: gt_alv1_data TYPE STANDARD TABLE OF tp_alv1_data WITH HEADER LINE.

DATA: gt_alv2_data TYPE STANDARD TABLE OF tp_alv2_data WITH HEADER LINE.

----


  • SELECTION-SCREEN *

----


----


  • BLOCK b0 *

----


SELECTION-SCREEN BEGIN OF BLOCK b0 WITH FRAME.

SELECT-OPTIONS: s_vbeln FOR vbak-vbeln. "<field not defined?>

PARAMETERS: p_matnr LIKE mara-matnr. "<field not defined?>

SELECTION-SCREEN END OF BLOCK b0.

----


  • BLOCK bvar *

----


SELECTION-SCREEN BEGIN OF BLOCK bvar WITH FRAME.

PARAMETERS: p_vari LIKE disvariant-variant.

SELECTION-SCREEN END OF BLOCK bvar.

----


  • BLOCK bbox *

----


SELECTION-SCREEN BEGIN OF BLOCK bbox WITH FRAME.

PARAMETERS: p_box_up RADIOBUTTON GROUP b1,

p_box_do RADIOBUTTON GROUP b1 DEFAULT 'X',

p_box_no RADIOBUTTON GROUP b1.

SELECTION-SCREEN END OF BLOCK bbox.

----


  • AT SELECTION-SCREEN ON P_VARI *

----


AT SELECTION-SCREEN ON p_vari.

PERFORM alv_variant_existence USING p_vari

CHANGING gs_variant.

----


  • AT SELECTION-SCREEN ON VALUE REQUEST FOR P_VARI *

----


AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_vari.

PERFORM alv_variant_f4 CHANGING p_vari

gs_variant.

----


  • INITIALIZATION *

----


INITIALIZATION.

----


  • START-OF-SELECTION *

----


START-OF-SELECTION.

PERFORM authority_check.

PERFORM get_control_data.

PERFORM get_transaction_data.

PERFORM process_transaction_data.

----


  • END-OF-SELECTION *

----


END-OF-SELECTION.

PERFORM output_data.

----


  • F O R M S *

----


----


  • FORM AUTHORITY_CHECK *

----


  • Perform authority checks for the report *

----


FORM authority_check.

  • !!! Note: authorisation checks are application-dependent.

  • !!! Some common cases are listed below - please select one of them

  • !!! or add new authorisation checks.

  • !!! If the report is creating batch input session or using LDB

  • !!! it may be sufficient to use automatic SAP auth.checks.

  • Authorisation for displaying documents in a single company code

  • ---------------------------------------------------------------

  • authority-check object 'F_BKPF_BUK'

  • id 'BUKRS' field p_bukrs

  • id 'ACTVT' field '03'.

  • if sy-subrc <> 0.

  • message e001(z9) with 'No authorisation to display documents'

  • 'in company code' p_bukrs.

  • endif.

  • Displaying documents from a list of company codes (select-options)

  • ------------------------------------------------------------------

  • call function 'Y_BUKRS_AUTHORITY_CHECK'

  • EXPORTING

  • ACTVT = '03'

  • NOMESSAGE = ' '

  • tables

  • s_bukrs = s_bukrs.

ENDFORM. " AUTHORITY_CHECK

----


  • FORM GET_CONTROL_DATA *

----


  • Read configuration etc. *

----


FORM get_control_data.

ENDFORM. " GET_CONTROL_DATA

----


  • FORM GET_TRANSACTION_DATA *

----


  • Read documents etc. *

----


FORM get_transaction_data.

  • !!! Data selection statement below has been generated automatically.

  • !!! Please check if it is correct and complete.

  • !!! Use table joins or 'SELECT FOR ALL ENTRIES' when selecting data

  • !!! from related tables.

SELECT

vbeln

erdat

erzet

ernam

FROM vbak

INTO CORRESPONDING FIELDS OF TABLE gt_vbak

.

CHECK NOT gt_vbak[] IS INITIAL.

SELECT

matnr

FROM mara

INTO CORRESPONDING FIELDS OF TABLE gt_mara

FOR ALL ENTRIES IN gt_vbak

WHERE ernam = gt_vbak-ernam

.

ENDFORM. " GET_TRANSACTION_DATA

----


  • FORM PROCESS_TRANSACTION_DATA *

----


  • ........ *

----


FORM process_transaction_data.

LOOP AT gt_vbak .

MOVE-CORRESPONDING gt_vbak TO gt_alv1_data .

APPEND gt_alv1_data .

ENDLOOP.

FREE gt_vbak .

LOOP AT gt_mara .

MOVE-CORRESPONDING gt_mara TO gt_alv2_data .

APPEND gt_alv2_data .

ENDLOOP.

FREE gt_mara .

ENDFORM. " PROCESS_TRANSACTION_DATA

----


  • FORM OUTPUT_DATA *

----


  • ........ *

----


FORM output_data.

PERFORM alv_list_display.

ENDFORM. " OUTPUT_DATA

----


  • FORM DISPLAY_RECORD *

----


  • Display object associated with the current ALV line *

----


FORM display_record USING is_selfield TYPE slis_selfield.

READ TABLE gt_alv1_data INDEX is_selfield-tabindex.

CHECK sy-subrc = 0.

  • !!! SAMPLE IMPLEMENTATION FOR DISPLAYING FI DOCUMENTS:

SET PARAMETER ID 'BUK' FIELD gt_alv1_data-vbeln.

  • set parameter id 'BLN' field gt_alv1_data-belnr.

  • set parameter id 'GJR' field gt_alv1_data-gjahr.

CALL TRANSACTION 'FB03' AND SKIP FIRST SCREEN.

ENDFORM. " DISPLAY_RECORD

----


  • FORM ALV_LIST_DISPLAY *

----


  • Invoke main ALV function to format and show the report *

----


FORM alv_list_display.

DATA: ls_layout TYPE slis_layout_alv,

ls_print TYPE slis_print_alv,

ls_keyinfo TYPE slis_keyinfo_alv,

lt_fieldcat TYPE slis_t_fieldcat_alv,

lt_exctab TYPE slis_t_extab,

lt_sorttab TYPE slis_t_sortinfo_alv,

lt_events TYPE slis_t_event.

PERFORM alv_init_report_events TABLES lt_events.

PERFORM alv_init_report_layout TABLES lt_fieldcat

lt_exctab

lt_sorttab

CHANGING ls_layout

ls_print

ls_keyinfo.

CALL FUNCTION 'REUSE_ALV_HIERSEQ_LIST_DISPLAY'

EXPORTING

i_interface_check = ' '

i_callback_program = sy-cprog

is_layout = ls_layout

it_fieldcat = lt_fieldcat

it_excluding = lt_exctab

  • IT_SPECIAL_GROUPS =

it_sort = lt_sorttab

  • IT_FILTER =

  • IS_SEL_HIDE =

  • I_SCREEN_START_COLUMN = 0

  • I_SCREEN_START_LINE = 0

  • I_SCREEN_END_COLUMN = 0

  • I_SCREEN_END_LINE = 0

  • I_DEFAULT = 'X'

i_save = 'A'

is_variant = gs_variant

it_events = lt_events

  • IT_EVENT_EXIT =

i_tabname_header = 'GT_ALV1_DATA'

i_tabname_item = 'GT_ALV2_DATA'

  • I_STRUCTURE_NAME_HEADER =

  • I_STRUCTURE_NAME_ITEM =

is_keyinfo = ls_keyinfo

is_print = ls_print

  • IS_REPREP_ID =

  • IMPORTING

  • E_EXIT_CAUSED_BY_CALLER =

  • ES_EXIT_CAUSED_BY_USER =

TABLES

t_outtab_header = gt_alv1_data

t_outtab_item = gt_alv2_data.

  • EXCEPTIONS

  • PROGRAM_ERROR = 1

  • OTHERS = 2

ENDFORM. " ALV_LIST_DISPLAY

----


  • FORM ALV_INIT_REPORT_LAYOUT *

----


  • Set up report layout definition for ALV_LIST_DISPLAY *

----


  • <-- OT_FIELDCAT list of fields *

  • <-- OT_EXCTAB excluded menu options *

  • <-- OT_SORTTAB sorting/grouping definition *

  • <-- OS_LAYOUT global report layout settings *

  • <-- OS_PRINT global report printout settings *

  • <-- OS_KEYINFO itab key fields (required only for hier.lists) *

----


FORM alv_init_report_layout TABLES ot_fieldcat TYPE slis_t_fieldcat_alv

ot_exctab TYPE slis_t_extab

ot_sorttab TYPE slis_t_sortinfo_alv

CHANGING cs_layout TYPE slis_layout_alv

cs_print TYPE slis_print_alv

cs_keyinfo TYPE slis_keyinfo_alv.

  • add menu items to be excluded to ot_exctab.

REFRESH ot_exctab.

REFRESH ot_fieldcat.

REFRESH ot_sorttab.

  • !!!

  • !!! List all ALV data fields for display here:

  • !!!

  • DD-struct = data dictionary structure name

  • DD-field = field of data dictionary structure

  • itab = internal table for output data

  • itab-field = internal table field name

  • key = set to 'X' if key field

  • sum = set to 'X' for totals

  • hid = set to 'X' if field is initially hidden

  • row = list row number (multi-line list if >1)

*

  • DD-struct DD-field itab itab-field key sum hid row

  • ------------------------------------------------------------------

PERFORM alv_build_fieldcat TABLES ot_fieldcat USING:

'VBAK' 'VBELN' 'GT_ALV1_DATA' 'VBELN' ' ' ' ' ' ' 1 ,

'VBAK' 'ERDAT' 'GT_ALV1_DATA' 'ERDAT' ' ' ' ' ' ' 1 ,

'VBAK' 'ERZET' 'GT_ALV1_DATA' 'ERZET' ' ' ' ' ' ' 1 ,

'VBAK' 'ERNAM' 'GT_ALV1_DATA' 'ERNAM' ' ' ' ' ' ' 1.

PERFORM alv_build_fieldcat TABLES ot_fieldcat USING:

'MARA' 'MATNR' 'GT_ALV2_DATA' 'MATNR' ' ' ' ' ' ' 1 .

  • !!!

  • !!! List all ALV data fields for sorting/grouping here

  • !!!

  • itab = internal table for output data

  • itab-field = internal table field name

  • up = sort ascending

  • down = sort descending

  • grp = group by

  • comp = group initially compressed

  • pos = field position in sort sequence

*

  • itab field up down grp comp pos

  • ---------------------------------------------------------------------

PERFORM alv_build_sorttab TABLES ot_sorttab USING:

'GT_ALV1_DATA' 'VBELN' 'X' ' ' ' ' ' ' 1.

PERFORM alv_build_sorttab TABLES ot_sorttab USING:

'GT_ALV2_DATA' 'MATNR' 'X' ' ' ' ' ' ' 1.

  • !!! key definition - required only for hierarchical display (2 itabs)

cs_keyinfo-header01 = 'VBELN' .

cs_keyinfo-item01 = 'MATNR' .

  • !!! See the declaration of type SLIS_LAYOUT_ALV and set the fields

  • !!! of OS_LAYOUT record to change list-level attributes

  • os_layout-no_colhead = 'X'. " no headings

cs_layout-zebra = 'X'. " stripped pattern

  • os_layout-no_vline = 'X'. " columns separated by space

  • os_layout-totals_only = 'X'. " show only totals

  • os_layout-totals_text = 'Total'. " totals line label

  • os_layout-subtotals_text = 'Subtotal'. " subtotals line label

  • os_layout-subtotals_text = 'Subtotal'. " subtotals line label

  • os_layout-key_hotspot = 'X'. " keys as hotspot

  • os_layout-expand_all = 'X'. " Expand all positions

  • os_layout...

cs_print-no_print_selinfos = 'X'. " Skip selection statistics

cs_print-no_print_listinfos = 'X'. " Skip list statistics

  • os_print-...

ENDFORM. " INIT_REPORT_LAYOUT

----


  • FORM ALV_BUILD_FIELDCAT *

----


  • Format a single line for ALV_INIT_REPORT_LAYOUT *

----


FORM alv_build_fieldcat TABLES ot_fieldcat

USING iv_ref_tabname "ref to a table/field

iv_ref_fieldname

iv_tabname "actual table/field name

iv_fieldname

iv_key

iv_do_sum

iv_no_out

iv_row_pos.

  • status variables for auto-numbering of field column position

  • (column number reset when a new table or row begins)

STATICS: sv_last_tabname TYPE slis_tabname,

sv_last_row_pos TYPE i,

sv_current_col TYPE i.

IF sv_last_tabname <> iv_tabname OR sv_last_row_pos <> iv_row_pos.

sv_current_col = 1.

ELSE.

ADD 1 TO sv_current_col.

ENDIF.

sv_last_tabname = iv_tabname.

sv_last_row_pos = iv_row_pos.

DATA: ls_fieldcat TYPE slis_fieldcat_alv.

DATA: lv_fieldname TYPE slis_fieldname.

lv_fieldname = iv_fieldname.

  • !!!

  • !!! List all the special formatting requirements in cases below

  • !!!

  • case lv_fieldname.

  • when 'WRBTR'. "<-- link with currency required

  • ls_fieldcat-cfieldname = 'WAERS'.

  • ls_fieldcat-ctabname = iv_tabname.

*

  • when 'HKONT'. "<-- change default column header

  • ls_fieldcat-seltext_s = 'GL Acc.'.

  • ls_fieldcat-ddictxt = 'S'. " (S)hort (M)iddle (L)ong

*

  • when 'SOME_NUMBER' "<-- change number formatting

  • ls_fieldcat-nosign = 'X'.

  • ls_fieldcat-nozero = 'X'.

  • ls_fieldcat-just = 'L'. " (L)eft (R)ight (C)enter

  • endcase.

ls_fieldcat-ref_tabname = iv_ref_tabname.

ls_fieldcat-ref_fieldname = iv_ref_fieldname.

ls_fieldcat-tabname = iv_tabname.

ls_fieldcat-fieldname = iv_fieldname.

ls_fieldcat-key = iv_key.

ls_fieldcat-do_sum = iv_do_sum.

ls_fieldcat-no_out = iv_no_out.

ls_fieldcat-row_pos = iv_row_pos.

ls_fieldcat-col_pos = sv_current_col.

APPEND ls_fieldcat TO ot_fieldcat.

ENDFORM. " ALV_BUILD_FIELDCAT

----


  • FORM ALV_BUILD_SORTTAB *

----


  • Set up sorting information for ALV_INIT_REPORT_LAYOUT *

----


FORM alv_build_sorttab TABLES ot_sorttab TYPE slis_t_sortinfo_alv

USING iv_tabname TYPE slis_fieldname

iv_fieldname TYPE slis_fieldname

iv_up TYPE c

iv_down TYPE c

iv_subtot TYPE c

iv_comp TYPE c

iv_spos TYPE n.

ot_sorttab-spos = iv_spos.

ot_sorttab-fieldname = iv_fieldname.

ot_sorttab-tabname = iv_tabname.

ot_sorttab-up = iv_up.

ot_sorttab-down = iv_down.

ot_sorttab-subtot = iv_subtot.

ot_sorttab-comp = iv_comp.

APPEND ot_sorttab.

ENDFORM. " ALV_BUILD_SORTTAB

----


  • FORM ALV_INIT_REPORT_EVENTS *

----


  • Set up program events for ALV_LIST_DISPLAY *

----


  • <-- OT_EVENTS list of events and associated report subroutines *

----


FORM alv_init_report_events TABLES ot_events TYPE slis_t_event.

CLEAR ot_events.

REFRESH ot_events.

ot_events-name = slis_ev_user_command.

ot_events-form = 'USER_COMMAND'.

APPEND ot_events.

ot_events-name = slis_ev_pf_status_set.

ot_events-form = ''. "'PF_STATUS_SET'.

APPEND ot_events.

ot_events-name = slis_ev_top_of_list.

ot_events-form = 'TOP_OF_LIST'.

APPEND ot_events.

ot_events-name = slis_ev_end_of_list.

ot_events-form = 'END_OF_LIST'.

APPEND ot_events.

ot_events-name = slis_ev_top_of_page.

ot_events-form = 'TOP_OF_PAGE'.

APPEND ot_events.

ot_events-name = slis_ev_end_of_page.

ot_events-form = 'END_OF_PAGE'.

APPEND ot_events.

ot_events-name = slis_ev_foreign_top_of_page.

ot_events-form = ''.

APPEND ot_events.

ot_events-name = slis_ev_foreign_end_of_page.

ot_events-form = ''.

APPEND ot_events.

ot_events-name = slis_ev_top_of_coverpage.

ot_events-form = ''.

APPEND ot_events.

ot_events-name = slis_ev_end_of_coverpage.

ot_events-form = ''.

APPEND ot_events.

ot_events-name = slis_ev_before_line_output.

ot_events-form = ''.

APPEND ot_events.

ot_events-name = slis_ev_after_line_output.

ot_events-form = ''.

APPEND ot_events.

ot_events-name = slis_ev_caller_exit_at_start.

ot_events-form = ''.

APPEND ot_events.

ot_events-name = slis_ev_list_modify.

ot_events-form = ''.

APPEND ot_events.

ot_events-name = slis_ev_subtotal_text.

ot_events-form = ''.

APPEND ot_events.

ENDFORM. " ALV_INIT_REPORT_EVENTS

----


  • FORM USER_COMMAND *

----


  • Subroutine attached as callback form to ABAP List Viewer *

  • --> UCOMM - user command code passed from ALV *

  • --> SELFIELD - information record describing current line/field *

----


FORM user_command USING value(iv_ucomm) LIKE sy-ucomm

is_selfield TYPE slis_selfield.

CASE iv_ucomm.

WHEN '&IC1'. "ALV record selection

PERFORM display_record USING is_selfield.

  • when ...

  • ...

ENDCASE.

ENDFORM. " USER_COMMAND

----


  • FORM PF_STATUS_SET *

----


  • Subroutine attached as callback form to ABAP List Viewer, *

  • allows setting alternative menu. If necessary: *

  • 1. Copy 'STANDARD' menu from SAPLKKBL and modify as required, *

  • 2. Activate callback *

----


FORM pf_status_set USING it_exctab TYPE slis_t_extab.

  • set pf-status 'STANDARD' excluding it_exctab.

ENDFORM. " PF_STATUS_SET

----


  • FORM TOP_OF_LIST *

----


  • Subroutine attached as callback form to ABAP List Viewer, *

  • executed once at the start of list output. *

----


FORM top_of_list.

DATA: lt_seltab TYPE STANDARD TABLE OF rsparams WITH HEADER LINE.

DATA: lv_report LIKE sy-repid.

lv_report = sy-repid. "do not pass sy-repid to function!

IF p_box_up = 'X'. "display select options at report start

CALL FUNCTION 'RS_REFRESH_FROM_SELECTOPTIONS'

EXPORTING

curr_report = lv_report

TABLES

selection_table = lt_seltab.

  • remove 'technical' parameters with 'DELETE LT_SELTAB WHERE...'

  • before display, if necessary

CALL FUNCTION 'RS_LIST_SELECTION_TABLE'

EXPORTING

report = lv_report

seltext = 'X'

  • dyn_range =

newpage = ' '

  • screennr = 1000

TABLES

sel_tab = lt_seltab

EXCEPTIONS

sel_tab_empty = 1.

ENDIF. "p_box_up = 'X'

ENDFORM. " TOP_OF_LIST

----


  • FORM END_OF_LIST *

----


  • Subroutine attached as callback form to ABAP List Viewer *

  • executed once at the end of list output. *

----


FORM end_of_list.

DATA: lt_seltab TYPE STANDARD TABLE OF rsparams WITH HEADER LINE.

DATA: lv_report LIKE sy-repid.

lv_report = sy-repid. "do not pass sy-repid to function!

IF p_box_do = 'X'. "display select options at report end

CALL FUNCTION 'RS_REFRESH_FROM_SELECTOPTIONS'

EXPORTING

curr_report = lv_report

TABLES

selection_table = lt_seltab.

  • remove 'technical' parameters with 'DELETE LT_SELTAB WHERE...'

  • before display, if necessary

CALL FUNCTION 'RS_LIST_SELECTION_TABLE'

EXPORTING

report = lv_report

seltext = 'X'

  • dyn_range =

newpage = ' '

  • screennr = 1000

TABLES

sel_tab = lt_seltab

EXCEPTIONS

sel_tab_empty = 1.

ENDIF. "p_box_do = 'X'

ENDFORM. " END_OF_LIST

----


  • FORM TOP_OF_PAGE *

----


  • Subroutine attached as callback form to ABAP List Viewer *

----


FORM top_of_page.

  • standard Ingram Micro report page heading

DATA: lv_coco_pos TYPE i, "CurPos of 'Company confidential'

lv_title_pos TYPE i, "CurPos of report title

lv_title(70) TYPE c, "Truncated report title

lv_page_pos TYPE i, "CurPos of page number

lv_date_pos TYPE i, "CurPos of date and time

lv_page_no(10) TYPE c,

lv_date(25) TYPE c,

lv_time(20) TYPE c,

lv_page(10) TYPE c.

  • We may need to truncate title if the line size is < 81.

IF sy-linsz < 81.

lv_title = sy-title+0(50).

ELSE.

lv_title = sy-title.

ENDIF.

  • Decide on positioning of text depending on width of page

lv_title_pos = ( sy-linsz / 2 ) - ( STRLEN( lv_title ) / 2 ).

lv_coco_pos = sy-linsz - 20.

FORMAT COLOR COL_HEADING INTENSIFIED ON.

WRITE: / 'Ingram Micro',

AT lv_title_pos lv_title,

AT lv_coco_pos 'Company Confidential'.

  • Setup data correctly in the correct format for the display fields.

lv_page = sy-pagno.

SHIFT lv_page LEFT DELETING LEADING ' '.

CONCATENATE sy-datum6(2) sy-datum4(2) sy-datum+0(4)

INTO lv_date SEPARATED BY '.'.

CONCATENATE sy-uzeit0(2) ':' sy-uzeit2(2) INTO lv_time.

CONCATENATE lv_date lv_time INTO lv_date SEPARATED BY ' '.

CONCATENATE 'Page' lv_page INTO lv_page_no SEPARATED BY ' '.

  • Decide on positioning of text depending on width of page.

lv_page_pos = sy-linsz - ( STRLEN( lv_page_no ) ).

WRITE: / lv_date,

AT lv_page_pos lv_page_no.

ULINE.

ENDFORM. " TOP_OF_PAGE

----


  • FORM END_OF_PAGE *

----


  • Subroutine attached as callback form to ABAP List Viewer *

----


FORM end_of_page.

ENDFORM. " END_OF_PAGE

*----


  • Form ALV_VARIANT_EXISTENCE

*----


  • Reads ALV variant definition

*----


FORM alv_variant_existence USING iv_variant LIKE disvariant-variant

CHANGING os_variant LIKE disvariant.

CHECK NOT iv_variant IS INITIAL.

os_variant-report = sy-repid.

os_variant-variant = iv_variant.

IF iv_variant CP '/*'. "user-specific variants begin with slash

os_variant-username = sy-uname.

ENDIF.

CALL FUNCTION 'REUSE_ALV_VARIANT_EXISTENCE'

EXPORTING

i_save = 'A'

CHANGING

cs_variant = os_variant

EXCEPTIONS

wrong_input = 1

not_found = 2

program_error = 3

OTHERS = 4.

IF sy-subrc <> 0.

MESSAGE e001(z9) WITH 'Please select a valid display variant.'.

ENDIF.

ENDFORM. " ALV_VARIANT_EXISTENCE

----


  • FORM ALV_VARIANT_F4 *

----


  • Display list of layout variants on report selection screen *

----


FORM alv_variant_f4 CHANGING cv_varname LIKE disvariant-variant

cs_variant LIKE disvariant.

DATA: lv_exit(1) TYPE c.

cs_variant-report = sy-repid.

CALL FUNCTION 'REUSE_ALV_VARIANT_F4'

EXPORTING

is_variant = cs_variant

i_save = 'A'

  • it_default_fieldcat =

IMPORTING

e_exit = lv_exit

es_variant = cs_variant

EXCEPTIONS

not_found = 2.

IF sy-subrc = 2.

MESSAGE ID sy-msgid TYPE 'S' NUMBER sy-msgno

WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.

ELSE.

IF lv_exit = space.

cv_varname = cs_variant-variant.

ENDIF.

ENDIF.

hope this will help.

see form user_command.

regards,

Ruchika

Former Member
0 Kudos
94

I did the modification to your program ... just cut and paste it will work ...

[code]REPORT Z_VENDOR_BACKORDER_REPORT_ALV .

TABLES: EKKO, LFA1, MAKT, EKET, EKPO, AFPO, MARC.

*Data Declaration

*----


DATA: BEGIN OF ITAB OCCURS 0 ,

ebeln LIKE ekko-ebeln , " PO number

aedat LIKE ekko-aedat , " creation date

ebelp LIKE ekpo-ebelp , " item no

lifnr LIKE ekko-lifnr , " vendor number

name1 LIKE lfa1-name1 , " vendor name

RESWK LIKE EKKO-RESWK , " PLANT NO

MEMORY LIKE EKKO-MEMORY , " ORDER INCOMPLETE

matnr LIKE ekpo-matnr , " material number

werks like ekpo-werks , " plant

txz01 LIKE ekpo-txz01 , " material description

eindt LIKE eket-eindt , " Promised date

menge LIKE eket-menge , " quantity

wemng LIKE eket-wemng , " delivered quantity

netpr like ekpo-netpr , " value in AUD

peinh like ekpo-peinh , " price unit

banfn like ekpo-banfn , " PR no

aufnr like ebkn-aufnr , " Production order no

MAABC LIKE MARC-MAABC , " MATERIAL ABC Indicator

maktx like makt-maktx , " material long description

open_quant type p decimals 2, " quantity - delivered

VALUE TYPE p decimals 2, " $ VALUE * OPEN QUANTITY

end of ITAB.

data: wa_ekko LIKE itab.

DATA: bdcdata LIKE bdcdata OCCURS 0 WITH HEADER LINE.

DATA: TEMP TYPE EKKO-LIFNR.

data: opt like CTU_PARAMS.

*DATA: WA TYPE FINAL.

  • all ALV declarations

*----


type-pools: slis. "ALV Declarations

DATA: fieldcatalog TYPE slis_t_fieldcat_alv with header line,

G_REPID TYPE SY-REPID,

GS_PRINT TYPE SLIS_PRINT_ALV,

GT_LIST_TOP_OF_PAGE TYPE SLIS_T_LISTHEADER,

GT_EVENTS TYPE SLIS_T_EVENT,

GT_SORT TYPE SLIS_T_SORTINFO_ALV,

GS_LAYOUT TYPE SLIS_LAYOUT_ALV,

COL_POS TYPE I.

*----


  • -----------------SELECTION SCREEN----------------------

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

select-options VENDORNO for ekko-lifnr.

select-options MATERIAL for ekpo-matnr.

SELECT-OPTIONS PLANT FOR EKKO-RESWK.

select-options REQDAT for eket-eindt.

selection-screen end of block b1.

*----


*................... GET DATA..................

START-OF-SELECTION.

PERFORM GATHER_DATA.

perform display_alv_report.

form gather_data.

SELECT EKKO~EBELN

EKKO~AEDAT

EKKO~LIFNR

  • EKKO~MEMORY

  • EKKO~RESWK

EKPO~EBELP

EKPO~MATNR

ekpo~werks

ekpo~netpr

ekpo~peinh

ekpo~banfn

ekpo~txz01

  • makt~maktx

EKET~EINDT

EKET~MENGE

EKET~WEMNG

LFA1~NAME1

INTO corresponding fields of ITAB

FROM (

EKKO inner JOIN EKPO

ON EKKOEBELN = EKPOEBELN

inner JOIN EKET

ON EKPOEBELN = EKETEBELN

AND EKPOEBELP = EKETEBELP

inner JOIN LFA1

ON EKKOLIFNR = LFA1LIFNR

*left outer join makt

*on ekpomatnr = maktmatnr

)

WHERE EKKO~LIFNR IN VENDORNO

AND EKKO~RESWK IN PLANT

and EKPO~MATNR IN MATERIAL

and ekpo~elikz eq ' '

and ekpo~loekz ne 'L'

and eket~eindt in REQDAT.

append itab.

CLEAR ITAB.

endselect.

*----


clear temp.

sort itab by lifnr.

loop at itab .

ITAB-OPEN_QUANT = ITAB-MENGE - ITAB-WEMNG.

if itab-matnr eq ''.

select single aufnr from ebkn into itab-aufnr where banfn = itab-banfn.

select single matnr from afpo into itab-matnr where aufnr = itab-aufnr.

endif.

select single maktx from makt into itab-maktx where matnr = itab-matnr.

select single maabc from MARC INTO ITAB-MAABC WHERE MATNR = ITAB-MATNR.

ITAB-VALUE = ITAB-NETPR * ITAB-OPEN_QUANT / itab-peinh.

modify itab.

endloop.

SKIP.

*----


*

fieldcatalog-tabname = 'ITAB'.

fieldcatalog-fieldname = 'LIFNR'.

fieldcatalog-seltext_m = 'vendor no'.

fieldcatalog-col_pos = 1.

fieldcatalog-outputlen = 15.

fieldcatalog-inttype = 'C'.

fieldcatalog-emphasize = 'X'.

fieldcatalog-key = 'X'.

  • fieldcatalog-do_sum = 'X'.

fieldcatalog-no_zero = 'X'.

append fieldcatalog to fieldcatalog.

clear fieldcatalog.

fieldcatalog-tabname = 'ITAB'.

fieldcatalog-fieldname = 'EBELN'.

fieldcatalog-seltext_m = 'po Number'.

fieldcatalog-col_pos = 2.

fieldcatalog-outputlen = 10 .

*fieldcatalog-inttype = 'C'.

fieldcatalog-emphasize = 'X'.

fieldcatalog-key = 'X'.

append fieldcatalog to fieldcatalog.

clear fieldcatalog.

fieldcatalog-tabname = 'ITAB'.

fieldcatalog-fieldname = 'AEDAT'.

fieldcatalog-seltext_m = 'po date'.

fieldcatalog-col_pos = 3.

fieldcatalog-inttype = 'C'.

append fieldcatalog to fieldcatalog.

clear fieldcatalog.

fieldcatalog-tabname = 'ITAB'.

fieldcatalog-fieldname = 'EBELP'.

fieldcatalog-seltext_m = 'item number'.

fieldcatalog-col_pos = 4.

fieldcatalog-inttype = 'C'.

append fieldcatalog to fieldcatalog.

clear fieldcatalog.

fieldcatalog-tabname = 'ITAB'.

fieldcatalog-fieldname = 'MATNR'.

fieldcatalog-no_zero = 'X'.

fieldcatalog-seltext_m = 'material number'.

fieldcatalog-col_pos = 5.

fieldcatalog-inttype = 'C'.

append fieldcatalog to fieldcatalog.

clear fieldcatalog.

fieldcatalog-tabname = 'ITAB'.

fieldcatalog-fieldname = 'MAABC'.

fieldcatalog-seltext_m = 'material type'.

fieldcatalog-col_pos = 6.

fieldcatalog-inttype = 'C'.

append fieldcatalog to fieldcatalog.

clear fieldcatalog.

fieldcatalog-tabname = 'ITAB'.

fieldcatalog-fieldname = 'TXZ01'.

fieldcatalog-seltext_m = 'short text'.

fieldcatalog-col_pos = 7.

fieldcatalog-inttype = 'C'.

append fieldcatalog to fieldcatalog.

clear fieldcatalog.

fieldcatalog-tabname = 'ITAB'.

fieldcatalog-fieldname = 'MAKTX'.

fieldcatalog-seltext_m = 'long text'.

fieldcatalog-col_pos = 8.

fieldcatalog-inttype = 'C'.

fieldcatalog-outputlen = 15.

append fieldcatalog to fieldcatalog.

clear fieldcatalog.

fieldcatalog-tabname = 'ITAB'.

fieldcatalog-fieldname = 'EINDT'.

fieldcatalog-seltext_m = 'date promised'.

fieldcatalog-col_pos = 9.

fieldcatalog-inttype = 'C'.

append fieldcatalog to fieldcatalog.

clear fieldcatalog.

fieldcatalog-tabname = 'ITAB'.

fieldcatalog-fieldname = 'MENGE'.

fieldcatalog-seltext_m = 'Quantity'.

fieldcatalog-col_pos = 10.

fieldcatalog-inttype = 'C'.

fieldcatalog-outputlen = 15.

append fieldcatalog to fieldcatalog.

clear fieldcatalog.

fieldcatalog-tabname = 'ITAB'.

fieldcatalog-fieldname = 'WEMNG'.

fieldcatalog-seltext_m = 'Delivered'.

fieldcatalog-col_pos = 11.

fieldcatalog-inttype = 'C'.

append fieldcatalog to fieldcatalog.

clear fieldcatalog.

fieldcatalog-tabname = 'ITAB'.

fieldcatalog-fieldname = 'OPEN_QUANT'.

fieldcatalog-seltext_m = 'Open quantity'.

fieldcatalog-col_pos = 12.

fieldcatalog-inttype = 'C'.

append fieldcatalog to fieldcatalog.

clear fieldcatalog.

fieldcatalog-tabname = 'ITAB'.

fieldcatalog-fieldname = 'VALUE'.

fieldcatalog-seltext_m = '$ value'.

fieldcatalog-col_pos = 13.

fieldcatalog-inttype = 'C'.

fieldcatalog-do_sum = 'X'.

append fieldcatalog to fieldcatalog.

clear fieldcatalog.

*----


*----


endform.

form display_alv_report.

g_repid = sy-repid.

call function 'REUSE_ALV_GRID_DISPLAY'

exporting

i_callback_program = g_repid

i_callback_top_of_page = 'TOP-OF-PAGE' "see FORM

i_callback_user_command = 'USER_COMMAND'

  • i_grid_title = outtext

is_layout = gs_layout

it_fieldcat = fieldcatalog[]

  • it_special_groups = gd_tabgroup

it_events = gt_events

  • is_print = gd_prntparams

i_save = 'X'

  • is_variant = z_template

tables

t_outtab = itAB

exceptions

program_error = 1

others = 2.

if sy-subrc <> 0.

  • MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

  • WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

endif.

endform. " DISPLAY_ALV_REPORT

FORM user_command USING r_ucomm LIKE sy-ucomm

rs_selfield TYPE slis_selfield.

  • Check function code

CASE r_ucomm.

WHEN '&IC1'.

  • Check field clicked on within ALVgrid report

IF rs_selfield-fieldname = 'EBELN'.

  • Read data table, using index of row user clicked on

READ TABLE ITAB INTO wa_ekko INDEX rs_selfield-tabindex.

  • Set parameter ID for transaction screen field

SET PARAMETER ID 'BES' FIELD wa_ekko-ebeln.

  • Sxecute transaction ME23N, and skip initial data entry screen

CALL TRANSACTION 'ME23N' AND SKIP FIRST SCREEN.

ENDIF.

ENDCASE.

ENDFORM.[/code]

reward points if it is usefull ..

Girish

0 Kudos
93

You are the man Girish ! Thanks a lot ! You get 10 on 10 !

Regards

Hrishi