Skip to Content
0
Dec 08, 2008 at 05:35 AM

ALV Problems

59 Views

Hi All,

I have written the following ALV:

REPORT ZSARALV_GRID_EVNTINITLZE MESSAGE-ID ZSARMSGCLASS.

TYPE-POOLS:slis.

DATA:BEGIN OF it_vbak OCCURS 3, "internal table for vbak

vbeln LIKE vbak-vbeln,

erdat LIKE vbak-erdat,

bstnk LIKE vbak-bstnk,

kunnr LIKE vbak-kunnr,

auart LIKE vbak-auart,

vsnmr_v LIKE vbak-vsnmr_v,

END OF it_vbak.

DATA:BEGIN OF it_vkvp OCCURS 3, "internal table to hold record of vbak and vbap joining

vbeln LIKE vbak-vbeln,

erdat LIKE vbak-erdat,

bstnk LIKE vbak-bstnk,

kunnr LIKE vbak-kunnr,

vsnmr_v LIKE vbak-vsnmr_v,

posnr LIKE vbap-posnr,

matnr LIKE vbap-matnr,

arktx LIKE vbap-arktx,

werks LIKE vbap-werks,

wavwr LIKE vbap-wavwr,

kwmeng LIKE vbap-kwmeng,

bedae LIKE vbap-bedae,

prctr LIKE vbap-prctr,

netwr LIKE vbap-netwr,

pstyv LIKE vbap-pstyv,

END OF it_vkvp.

DATA:BEGIN OF it_keko OCCURS 3, "internal table for keko

matnr LIKE keko-matnr,

vbeln LIKE keko-vbeln,

posnr LIKE keko-posnr,

feh_k_anz LIKE keko-feh_k_anz,

feh_sta LIKE keko-feh_sta,

maxmsg LIKE keko-maxmsg,

END OF it_keko.

DATA:BEGIN OF it_final_tab OCCURS 3,

vbeln LIKE vbak-vbeln,

posnr LIKE vbap-posnr,

matnr LIKE vbap-matnr,

arktx LIKE vbap-arktx,

werks LIKE vbap-werks,

vsnmr_v LIKE vbak-vsnmr_v,

bstnk LIKE vbak-bstnk,

wavwr LIKE vbap-wavwr,

kwmeng LIKE vbap-kwmeng,

bedae LIKE vbap-bedae,

feh_sta LIKE keko-feh_sta,

prctr LIKE vbap-prctr,

erdat LIKE vbak-erdat,

feh_k_anz LIKE keko-feh_k_anz,

maxmsg LIKE keko-maxmsg,

netwr LIKE vbap-netwr,

kunnr LIKE vbak-kunnr,

END OF it_final_tab.

" Variables required to build ALV

DATA: report_id TYPE sy-repid.

DATA: i_layout TYPE slis_layout_alv.

DATA: i_fieldcat TYPE slis_t_fieldcat_alv.

DATA: ws_title TYPE lvc_title VALUE 'Collective List of Sales Order Cost Estimates'.

SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.

PARAMETERS: OrdrCrDt TYPE vbak-erdat OBLIGATORY,

SalsOrg TYPE vbak-vkorg OBLIGATORY,

DevryPlt TYPE vbap-werks OBLIGATORY,

ReqrmntT TYPE vbap-bedae OBLIGATORY DEFAULT 'ZHLV',

SlsDocTp TYPE vbak-auart,

Materal# TYPE vbap-matnr,

CostinSt TYPE keko-feh_sta,

PrfitCnt TYPE vbap-prctr,

SalsItmC TYPE vbap-pstyv,

Soldto TYPE vbak-kunnr,

SalesDc# TYPE vbak-vbeln.

SELECTION-SCREEN END OF BLOCK b1.

START-OF-SELECTION.

" Data Selection from VBAK into corresponding internal table(it_vbak)

SELECT vbeln erdat bstnk kunnr auart vsnmr_v INTO CORRESPONDING FIELDS OF TABLE it_vbak FROM vbak

WHERE vbtyp = 'C' AND erdat = OrdrCrDt AND vkorg = SalsOrg .

IF NOT it_vbak[] IS INITIAL.

IF SlsDocTp <> ' ' .

DELETE it_vbak WHERE auart <> SlsDocTp.

ENDIF.

IF Soldto <> ' '.

DELETE it_vbak WHERE kunnr <> Soldto.

ENDIF.

IF SalesDc# <> ' '.

DELETE it_vbak WHERE vbeln <> SalesDc#.

ENDIF.

ELSE.

MESSAGE E001.

ENDIF.

" Data Selection from VBAK and VBAP into corresponding internal table(it_vkvp)

SELECT vbakvbeln vbakerdat vbakbstnk vbakkunnr

vbakvsnmr_v vbapposnr vbapmatnr vbaparktx

vbappstyv vbapnetwr vbapkwmeng vbapwerks

vbapwavwr vbapprctr vbap~bedae

INTO CORRESPONDING FIELDS OF TABLE it_vkvp FROM vbak INNER JOIN vbap ON vbakvbeln = vbapvbeln

FOR ALL ENTRIES IN it_vbak WHERE vbakvbeln = it_vbak-vbeln AND vbapwerks = DevryPlt AND vbap~bedae = ReqrmntT.

IF NOT it_vkvp[] IS INITIAL.

IF Materal# <> ' ' .

DELETE it_vkvp WHERE matnr <> Materal#.

ENDIF.

IF PrfitCnt <> ' '.

DELETE it_vkvp WHERE prctr <> PrfitCnt.

ENDIF.

IF SalsItmC <> ' '.

DELETE it_vkvp WHERE pstyv <> SalsItmC.

ENDIF.

ELSE.

MESSAGE E002.

ENDIF.

" Data Selection from KEKO

SELECT matnr vbeln posnr feh_k_anz feh_sta maxmsg INTO CORRESPONDING FIELDS OF TABLE it_keko FROM keko.

IF NOT it_keko[] IS INITIAL.

IF CostinSt <> ' ' .

DELETE it_keko WHERE feh_sta <> CostinSt.

ENDIF.

ELSE.

MESSAGE E003.

ENDIF.

LOOP AT it_vkvp.

READ TABLE it_keko WITH KEY matnr = it_vkvp-matnr vbeln = it_vkvp-vbeln posnr = it_vkvp-posnr.

it_final_tab-vbeln = it_vkvp-vbeln.

it_final_tab-posnr = it_vkvp-posnr.

it_final_tab-matnr = it_vkvp-matnr.

it_final_tab-arktx = it_vkvp-arktx.

it_final_tab-werks = it_vkvp-werks.

it_final_tab-vsnmr_v = it_vkvp-vsnmr_v.

it_final_tab-bstnk = it_vkvp-bstnk.

it_final_tab-wavwr = it_vkvp-wavwr.

it_final_tab-kwmeng = it_vkvp-kwmeng.

it_final_tab-bedae = it_vkvp-bedae.

it_final_tab-feh_sta = it_keko-feh_sta.

it_final_tab-prctr = it_vkvp-prctr.

it_final_tab-erdat = it_vkvp-erdat.

it_final_tab-feh_k_anz = it_keko-feh_k_anz.

it_final_tab-maxmsg = it_keko-maxmsg.

it_final_tab-netwr = it_vkvp-netwr.

it_final_tab-kunnr = it_vkvp-kunnr.

REFRESH it_keko.

APPEND it_final_tab.

ENDLOOP.

report_id = sy-repid.

END-OF-SELECTION.

PERFORM alv_layout_creation CHANGING i_layout.

CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'

EXPORTING

I_PROGRAM_NAME = report_id

I_INTERNAL_TABNAME = 'IT_FINAL_TAB'

  • I_STRUCTURE_NAME =

  • I_CLIENT_NEVER_DISPLAY = 'X'

I_INCLNAME = report_id

  • I_BYPASSING_BUFFER =

  • I_BUFFER_ACTIVE =

CHANGING

ct_fieldcat = i_fieldcat

EXCEPTIONS

INCONSISTENT_INTERFACE = 1

PROGRAM_ERROR = 2

OTHERS = 3

.

IF sy-subrc <> 0.

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

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

ENDIF.

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'

EXPORTING

  • I_INTERFACE_CHECK = ' '

  • I_BYPASSING_BUFFER = ' '

  • I_BUFFER_ACTIVE = ' '

I_CALLBACK_PROGRAM = report_id

  • I_CALLBACK_PF_STATUS_SET = ' '

  • I_CALLBACK_USER_COMMAND = ' '

  • I_CALLBACK_TOP_OF_PAGE = ' '

  • I_CALLBACK_HTML_TOP_OF_PAGE = ' '

  • I_CALLBACK_HTML_END_OF_LIST = ' '

  • I_STRUCTURE_NAME =

  • I_BACKGROUND_ID = ' '

I_GRID_TITLE = ws_title

  • I_GRID_SETTINGS =

IS_LAYOUT = i_layout

IT_FIELDCAT = i_fieldcat

  • IT_EXCLUDING =

  • IT_SPECIAL_GROUPS =

  • IT_SORT =

  • IT_FILTER =

  • IS_SEL_HIDE =

  • I_DEFAULT = 'X'

  • I_SAVE = ' '

  • IS_VARIANT =

  • IT_EVENTS =

  • IT_EVENT_EXIT =

  • IS_PRINT =

  • IS_REPREP_ID =

  • I_SCREEN_START_COLUMN = 0

  • I_SCREEN_START_LINE = 0

  • I_SCREEN_END_COLUMN = 0

  • I_SCREEN_END_LINE = 0

  • I_HTML_HEIGHT_TOP = 0

  • I_HTML_HEIGHT_END = 0

  • IT_ALV_GRAPHICS =

  • IT_HYPERLINK =

  • IT_ADD_FIELDCAT =

  • IT_EXCEPT_QINFO =

  • IR_SALV_FULLSCREEN_ADAPTER =

  • IMPORTING

  • E_EXIT_CAUSED_BY_CALLER =

  • ES_EXIT_CAUSED_BY_USER =

TABLES

t_outtab = it_final_tab

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.

&----


*& Form alv_layout_creation

&----


  • text

----


  • <--P_I_LAYOUT text

----


form alv_layout_creation changing p_i_layout TYPE slis_layout_alv.

CLEAR p_i_layout.

p_i_layout-colwidth_optimize = 'X'.

endform. " alv_layout_creation

When trying to execute the above code I'm getting the follwing error:

Runtime Errors:Read_Report_Line_Too_Long

Short Text:The ABAP Program Lines are wider than the internal table

Need your help to resolve the issue.