Application Development and Automation 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: 
Read only

Alv report

Former Member
0 Likes
1,366

Hi All

i am displaying the blocked sales orders in the ALV GRID display after the display when i click on the sales order it should navigate to VA02 .but is giving the shot dump like

Assignment error: Overwriting a protected field.

1 ACCEPTED SOLUTION
Read only

Former Member
0 Likes
1,327

Hi,

Just check whether you have any field symbols in your program. If yes, then the declaration of those fields symbols should be correct as FIELD-SYMBOLS: <fs> TYPE ANY.

Just check for this...

Hi All

i am displaying the blocked sales orders in the ALV GRID display after the display when i click on the sales order it should navigate to VA02 .but is giving the shot dump like

Assignment error: Overwriting a protected field.

8 REPLIES 8
Read only

Former Member
0 Likes
1,328

Hi,

Just check whether you have any field symbols in your program. If yes, then the declaration of those fields symbols should be correct as FIELD-SYMBOLS: <fs> TYPE ANY.

Just check for this...

Read only

Former Member
0 Likes
1,327

Hi,

Try using VA03.

Are you using Exit Subroutine for this?

Read only

Former Member
0 Likes
1,327

Hi,

In the FM u will have to call perform 'USER_COMMAND' in the importing parameter I_CALLBACK_USER_COMMAND

In the perform you will have to call transcation VA02

Regards,

Mansi.

Read only

Former Member
0 Likes
1,327

Hi,

Can you send me your code...

Read only

0 Likes
1,327

i copied the v23 transaction standed program i added the addtional code when the radio button (open SD documents ) in the selection screen is selected i am displaying the blocked sales orders.

below code i added in the pstanded program

PERFORM eventtab_build1 USING fk_events1[].

PERFORM comment_build1 USING fk_list_top_of_page1[].

PERFORM sp_group_build1 USING fk_sp_group1[].

PERFORM layout_build1 USING fk_layout1."wg.Optionsparameters

PERFORM fieldcat_init1 USING fk_fieldcat1[].

PERFORM reuse_alv_list_display1.

SET PARAMETER ID 'SKO' FIELD vkorg.

SET PARAMETER ID 'STW' FIELD vtweg-low.

SET PARAMETER ID 'SSP' FIELD spart-low.

DATA: flag.

DATA: lt_tmp TYPE STANDARD TABLE OF ty_vbeln INITIAL SIZE 0,

lwa_tmp TYPE ty_vbeln.

SELECT vbeln lifsk faksk

INTO TABLE t_vbak

FROM vbak

WHERE vbeln IN vbeln

AND erdat IN erdat

AND ernam IN ernam

AND vbtyp IN vbtyp

  • AND ( lifsk NE space OR faksk NE space )

AND vkorg = vkorg

AND vtweg IN vtweg

AND spart IN spart

AND vkbur IN vkbur

AND vkgrp IN vkgrp

AND vkbur IN vkbur

AND kunnr IN kunnr.

IF sy-subrc EQ 0.

SORT t_vbak BY vbeln.

ENDIF.

SELECT vbeln posnr faksp cmtfg

INTO TABLE t_vbap

FROM vbap

FOR ALL ENTRIES IN t_vbak

WHERE vbeln = t_vbak-vbeln

AND ( faksp NE space

OR cmtfg NE space ).

IF sy-subrc EQ 0.

SORT t_vbap BY vbeln posnr.

DELETE ADJACENT DUPLICATES FROM t_vbap COMPARING vbeln.

ENDIF.

DELETE t_vbak WHERE ( lifsk EQ space AND faksk EQ space ).

LOOP AT t_vbak INTO w_vbak.

MOVE-CORRESPONDING w_vbak TO w_vbeln.

APPEND w_vbeln TO t_vbeln.

CLEAR: w_vbeln,w_vbak.

ENDLOOP.

LOOP AT t_vbap INTO w_vbap.

MOVE-CORRESPONDING w_vbap TO w_vbeln.

APPEND w_vbeln TO t_vbeln.

CLEAR :w_vbeln,w_vbap.

ENDLOOP.

lt_tmp[] = t_vbeln[].

CLEAR: t_vbeln[].

DELETE ADJACENT DUPLICATES FROM lt_tmp COMPARING vbeln.

LOOP AT lt_tmp INTO lwa_tmp.

CLEAR: w_vbak.

READ TABLE t_vbak INTO w_vbak WITH KEY vbeln = lwa_tmp-vbeln.

IF sy-subrc EQ 0.

MOVE-CORRESPONDING w_vbak TO w_vbeln.

ENDIF.

CLEAR:w_vbap.

READ TABLE t_vbap INTO w_vbap WITH KEY vbeln = lwa_tmp-vbeln.

IF sy-subrc EQ 0.

MOVE-CORRESPONDING w_vbap TO w_vbeln.

ENDIF.

APPEND w_vbeln TO t_vbeln.

CLEAR w_vbeln.

ENDLOOP.

CLEAR: lt_tmp[].

SORT t_vbeln BY vbeln.

lt_tmp[] = t_vbeln[].

DELETE ADJACENT DUPLICATES FROM lt_tmp COMPARING vbeln.

IF lt_tmp[] IS NOT INITIAL.

SELECT vbelv posnv vbeln posnn vbtyp_n

INTO TABLE t_vbfa

FROM vbfa

FOR ALL ENTRIES IN lt_tmp

WHERE vbelv = lt_tmp-vbeln AND

vbtyp_n IN ('J','M').

IF sy-subrc = 0.

SORT t_vbfa BY vbelv.

i_bill[] = i_deliv[] = t_vbfa[].

DELETE i_bill WHERE vbtyp_n NE 'M'.

DELETE i_deliv WHERE vbtyp_n NE 'J'.

SORT i_bill BY vbeln.

SORT i_deliv BY vbeln.

DELETE ADJACENT DUPLICATES FROM i_bill COMPARING vbeln.

DELETE ADJACENT DUPLICATES FROM i_deliv COMPARING vbeln.

ENDIF.

ENDIF.

IF i_deliv[] IS NOT INITIAL.

SELECT vbeln faksk lifsk trspg

INTO TABLE t_likp

FROM likp FOR ALL ENTRIES IN i_deliv

WHERE vbeln EQ i_deliv-vbeln

AND faksk NE space OR lifsk NE space

OR trspg NE space.

IF sy-subrc = 0.

SORT t_likp BY vbeln.

ENDIF.

SELECT vbeln posnr faksp

INTO TABLE t_lips

FROM lips FOR ALL ENTRIES IN i_deliv

WHERE vbeln EQ i_deliv-vbeln

AND faksp NE space.

IF sy-subrc EQ 0.

SORT t_lips BY vbeln.

DELETE ADJACENT DUPLICATES FROM t_lips COMPARING vbeln.

ENDIF.

ENDIF.

IF i_bill[] IS NOT INITIAL.

SELECT vbeln mansp

INTO TABLE t_vbrk

FROM vbrk FOR ALL ENTRIES IN i_bill

WHERE vbeln EQ i_bill-vbeln

AND mansp NE space.

IF sy-subrc EQ 0.

SORT t_vbrk BY vbeln.

ENDIF.

ENDIF.

        • Move all Sales Orders

LOOP AT lt_tmp INTO lwa_tmp.

w_itab-vbeln = lwa_tmp-vbeln.

w_itab-flag = 'S'.

APPEND: w_itab TO itab,

w_itab TO t_vbeln.

CLEAR: w_vbrk,w_itab.

ENDLOOP.

        • Move all Billing Orders

LOOP AT t_vbrk INTO w_vbrk .

w_itab-vbeln = w_vbrk-vbeln.

w_itab-flag = 'M'.

APPEND w_itab TO itab.

CLEAR: w_vbrk,w_itab.

ENDLOOP.

        • Move all Delivery Orders

LOOP AT t_likp INTO w_likp .

w_itab-vbeln = w_likp-vbeln.

w_itab-flag = 'J'.

APPEND w_itab TO itab.

CLEAR: w_likp,w_itab.

ENDLOOP.

*retrive sales order status from selection screen value

IF vbeln[] IS NOT INITIAL.

SELECT vbeln lfstk fkstk fsstk lsstk spstg cmgst

INTO TABLE t_vbuk

FROM vbuk

WHERE vbeln IN vbeln AND

( cmgst IN cmgst OR spstg IN spstg )

AND fsstk NE space AND lsstk NE space.

IF sy-subrc EQ 0.

SORT t_vbuk BY vbeln.

  • Retrive all sales documents into one table for final loop

  • T_VBELN[] = T_VBUK[].

  • CLEAR: t_vbuk[].

ENDIF.

ENDIF.

IF itab[] IS NOT INITIAL.

*retrive Delivery & Invoice status

SELECT vbeln lfstk fkstk fsstk lsstk spstg cmgst

APPENDING TABLE t_vbuk

FROM vbuk FOR ALL ENTRIES IN itab

WHERE vbeln EQ itab-vbeln AND

( cmgst IN cmgst OR spstg IN spstg ).

IF sy-subrc EQ 0.

SORT t_vbuk BY vbeln.

LOOP AT t_vbuk INTO w_vbuk.

CLEAR:flag,w_itab.

READ TABLE itab INTO w_itab WITH KEY vbeln = w_vbuk-vbeln BINARY SEARCH.

IF sy-subrc EQ 0.

flag = w_itab-flag.

MOVE-CORRESPONDING w_vbuk TO w_itab.

w_itab-flag = flag.

MODIFY itab FROM w_itab INDEX sy-tabix.

ELSE.

MOVE-CORRESPONDING w_vbuk TO w_itab.

APPEND w_itab TO itab.

CLEAR w_itab.

ENDIF.

ENDLOOP.

ENDIF.

SORT itab BY vbeln flag.

DELETE ADJACENT DUPLICATES FROM itab COMPARING vbeln.

ENDIF.

ENDFORM. " get_data

FORM process_data .

CLEAR: w_vbak01.

SORT: itab BY vbeln,

t_vbak BY vbeln,

i_bill BY vbelv,

i_deliv BY vbeln,

t_vbuk BY vbeln,

t_likp BY vbeln,

t_vbrk BY vbeln,

t_vbfa BY vbelv vbeln vbtyp_n.

DELETE ADJACENT DUPLICATES FROM t_vbfa COMPARING vbelv vbeln vbtyp_n.

LOOP AT itab INTO w_itab WHERE flag NE 'M' AND flag NE 'J'.

CLEAR: w_vbeln.

READ TABLE t_vbeln INTO w_vbeln WITH KEY vbeln = w_itab-vbeln.

IF sy-subrc EQ 0.

w_result-s_vbeln = w_itab-vbeln.

w_result-lifsk = w_vbeln-lifsk.

w_result-faksk = w_vbeln-faksk.

    • Read Sales Item data

w_result-cmtfg = w_vbeln-cmtfg.

IF w_result-lifsk NE space OR w_result-faksk NE space .

w_result-i_faksp = 'X'.

ELSE.

w_result-h_faksp = 'X'.

ENDIF.

      • For Sales Header status

CLEAR: w_vbuk.

LOOP AT t_vbuk INTO w_vbuk WHERE vbeln = w_vbeln-vbeln

AND ( fsstk NE space OR fkstk NE space ).

w_result-s_vbeln = w_vbeln-vbeln.

IF ( w_vbuk-fkstk = 'B' OR w_vbuk-fsstk = 'B' ).

w_result-b_text = 'Partially processed'.

ELSEIF ( w_vbuk-fkstk = 'A' OR w_vbuk-fsstk = 'A' ).

w_result-b_text = 'Not Yet Processed'.

ENDIF.

CLEAR: w_vbuk.

ENDLOOP.

      • Read Delivery data

CLEAR: w_vbfa.

LOOP AT t_vbfa INTO w_vbfa

WHERE vbelv = w_vbeln-vbeln

AND vbtyp_n = 'J'.

CLEAR: w_likp.

READ TABLE t_likp INTO w_likp

WITH KEY vbeln = w_vbfa-vbeln.

IF sy-subrc = 0.

w_result-d_vbeln = w_likp-vbeln.

w_result-trspg = w_likp-trspg.

      • For Delivery status

CLEAR: w_vbuk.

LOOP AT t_vbuk INTO w_vbuk WHERE vbeln = w_likp-vbeln

AND ( lsstk NE space OR lfstk NE space ).

IF ( w_vbuk-lsstk = 'B' OR w_vbuk-lfstk = 'B' ).

w_result-d_text = 'Partially processed'.

ELSEIF ( w_vbuk-lsstk = 'A' OR w_vbuk-lfstk = 'A' ).

w_result-d_text = 'Not Yet Processed'.

ENDIF.

CLEAR: w_vbuk.

ENDLOOP.

CLEAR: w_lips.

  • READ TABLE t_lips INTO w_lips

  • WITH KEY vbeln = w_likp-vbeln.

  • IF sy-subrc = 0.

  • w_result-d_vbeln = w_lips-vbeln.

*

  • IF w_lips-faksp IS NOT INITIAL.

  • w_result-i_faksp = 'X'.

  • ELSE.

  • w_result-h_faksp = 'X'.

  • ENDIF.

  • ENDIF.

ENDIF.

CLEAR: w_vbfa.

ENDLOOP.

      • Read Invoice data

CLEAR: w_vbfa.

LOOP AT t_vbfa INTO w_vbfa

WHERE vbelv = w_vbak-vbeln

AND vbtyp_n = 'M'.

CLEAR: w_vbrk.

READ TABLE t_vbrk INTO w_vbrk WITH KEY vbeln = w_vbfa-vbeln.

IF sy-subrc = 0.

w_result-b_vbeln = w_vbrk-vbeln.

w_result-mansp = w_vbrk-mansp.

      • For Invoice status

CLEAR: w_vbuk.

LOOP AT t_vbuk INTO w_vbuk WHERE vbeln = w_vbrk-vbeln

AND ( fsstk IS NOT INITIAL

OR fkstk IS NOT INITIAL

OR spstg IS NOT INITIAL ).

w_result-b_fsstk = w_vbuk-fsstk.

w_result-spstg = w_vbuk-spstg.

CLEAR: w_vbuk.

ENDLOOP.

ENDIF.

CLEAR: w_vbfa.

ENDLOOP.

CLEAR: w_vbuk.

LOOP AT t_vbuk INTO w_vbuk WHERE vbeln = w_vbak-vbeln.

w_result-spstg = w_vbuk-spstg.

CLEAR: w_vbuk.

ENDLOOP.

ELSE.

w_result-s_vbeln = w_itab-vbeln. " which is not found in T_VBAK table

w_result-b_fsstk = w_itab-fsstk.

CLEAR: w_vbuk.

LOOP AT t_vbuk INTO w_vbuk WHERE vbeln = w_itab-vbeln.

w_result-spstg = w_vbuk-spstg.

CLEAR: w_vbuk.

ENDLOOP.

ENDIF.

APPEND w_result TO t_result.

CLEAR: w_result,w_itab.

ENDLOOP.

CLEAR: t_likp[],t_lips[],t_vbrk[],t_vbak[],t_vbap[],i_bill[],i_deliv[],itab[].

REFRESH: t_likp,t_lips,t_vbrk,t_vbak,t_vbap,i_bill,i_deliv,itab.

ENDFORM. " process_data

Read only

Former Member
0 Likes
1,327

Hi,

In the Function Module



Reuse_Alv_Grid_Display's parameter:
i_callback_user_command           = 'COMM'

This will take the control to the subroutine Comm.


*&---------------------------------------------------------------------*
*&      Form  COMM
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->UCOMM      text
*      -->SELFIELD   text
*----------------------------------------------------------------------*
FORM comm USING ucomm LIKE sy-ucomm selfield TYPE slis_selfield.

  DATA: okcode TYPE sy-ucomm.

  okcode = ucomm.
  CASE okcode.

    WHEN 'REF'.
   Call Transaction 'VA02' and Skip First Screen.
 
  ENDCASE.

Hope it helps

Regards

Mansi

Read only

Former Member
0 Likes
1,327

I GIVE CODE RELATED TO YOUR REQUIREMENT

MY CODE IS BIG ONE SO I GIVE IN PART-I AND PART -II

PART-I

REPORT ZBLOCK_ALV.

CONSTANTS :

c_x VALUE 'X'.

DEFINE m_fieldcat.

ls_fieldcat-fieldname = &1.

ls_fieldcat-ref_tabname = &2.

ls_fieldcat-tabname = &3.

append ls_fieldcat to lt_fieldcat.

END-OF-DEFINITION.

DEFINE m_sort.

ls_sort-fieldname = &1.

ls_sort-up = c_x.

append ls_sort to lt_sort.

END-OF-DEFINITION.

TYPE-POOLS: slis. " ALV Global types

TYPES:

BEGIN OF ty_kna1,

kunnr TYPE kna1-kunnr, " Customer number

ernam TYPE kna1-ernam, " Name of Person who Created

erdat TYPE kna1-erdat, " Creation date

name1 TYPE kna1-name1, " Name 1 .

END OF ty_kna1,

BEGIN OF ty_mara,

matnr TYPE mara-matnr, " Material number

ernam TYPE mara-ernam, " Name of Person who Created

ersda TYPE mara-ersda, " Creation date

mtart TYPE mara-mtart, " Material type

matkl TYPE mara-matkl, " Material group

END OF ty_mara,

BEGIN OF ty_vbak,

vbeln TYPE vbak-vbeln, " Sales document

vkorg TYPE vbak-vkorg, " Sales organization

vtweg TYPE vbak-vtweg, " Distribution channel

kunnr TYPE vbak-kunnr, " Sold-to party

erdat TYPE vbak-erdat, " Creation date

END OF ty_vbak.

DATA:

gs_layout TYPE slis_layout_alv,

gt_kna1 TYPE TABLE OF ty_kna1,

gt_mara TYPE TABLE OF ty_mara,

gt_vbak TYPE TABLE OF ty_vbak.

SELECTION-SCREEN :

SKIP, BEGIN OF LINE,COMMENT 5(27) v_1 FOR FIELD p_max. "#EC NEEDED

PARAMETERS p_max(2) TYPE n DEFAULT '02' OBLIGATORY.

SELECTION-SCREEN END OF LINE.

INITIALIZATION.

v_1 = 'Maximum of records to read'.

START-OF-SELECTION.

SELECT kunnr ernam erdat name1

FROM kna1

UP TO p_max ROWS

INTO TABLE gt_kna1.

SELECT matnr ernam ersda mtart matkl

FROM mara

UP TO p_max ROWS

INTO TABLE gt_mara.

SELECT vbeln vkorg vtweg kunnr erdat

FROM vbak

UP TO p_max ROWS

INTO TABLE gt_vbak.

END-OF-SELECTION.

PERFORM f_display_data.

FORM user_command USING u_ucomm TYPE sy-ucomm

us_selfield TYPE slis_selfield. "#EC CALLED

DATA:

ls_vbak TYPE ty_vbak.

CASE u_ucomm.

WHEN '&IC1'. " Pick

CASE us_selfield-tabname.

WHEN 'GT_MARA'.

WHEN 'GT_KNA1'.

WHEN 'GT_VBAK'.

READ TABLE gt_vbak INDEX us_selfield-tabindex INTO ls_vbak.

IF sy-subrc EQ 0.

SET PARAMETER ID 'AUN' FIELD ls_vbak-vbeln.

CALL TRANSACTION 'VA03' AND SKIP FIRST SCREEN.

ENDIF.

ENDCASE.

ENDCASE.

ENDFORM. " USER_COMMAND

FORM f_display_data.

DATA :

ls_fieldcat TYPE slis_fieldcat_alv,

lt_fieldcat TYPE slis_t_fieldcat_alv, " Field catalog

ls_sort TYPE slis_sortinfo_alv,

lt_sort TYPE slis_t_sortinfo_alv, " Sort table

lt_events TYPE slis_t_event,

ls_event TYPE slis_alv_event.

gs_layout-group_change_edit = c_x.

gs_layout-colwidth_optimize = c_x.

gs_layout-zebra = c_x.

gs_layout-detail_popup = c_x.

gs_layout-get_selinfos = c_x.

m_fieldcat 'KUNNR' 'KNA1' 'GT_KNA1'.

m_fieldcat 'ERNAM' 'KNA1' 'GT_KNA1'.

m_fieldcat 'ERDAT' 'KNA1' 'GT_KNA1'.

m_fieldcat 'NAME1' 'KNA1' 'GT_KNA1'.

m_sort 'KUNNR'.

MOVE 'TOP_OF_PAGE' TO ls_event-name.

MOVE 'TOP_OF_PAGE' TO ls_event-form.

APPEND ls_event TO lt_events.

MOVE 'END_OF_LIST' TO ls_event-name.

MOVE 'END_OF_LIST' TO ls_event-form.

APPEND ls_event TO lt_events.

CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'

EXPORTING

i_callback_program = sy-cprog

i_callback_user_command = 'USER_COMMAND'

it_fieldcat = lt_fieldcat

is_layout = gs_layout

it_events = lt_events

it_sort = lt_sort

i_save = 'A'

TABLES

t_outtab = gt_kna1.

ENDFORM. " F_DISPLAY_DATA

Read only

Former Member
0 Likes
1,327

PART-II

FORM top_of_page. "#EC CALLED

ULINE.

WRITE : sy-uname, sy-title(56) CENTERED, sy-datum.

ULINE.

ENDFORM. " TOP_OF_PAGE

FORM end_of_list. "#EC CALLED

DATA :

ls_fieldcat TYPE slis_fieldcat_alv,

lt_fieldcat TYPE slis_t_fieldcat_alv, " Field catalog

ls_sort TYPE slis_sortinfo_alv,

lt_sort TYPE slis_t_sortinfo_alv, " Sort table

lt_events TYPE slis_t_event,

ls_event TYPE slis_alv_event.

m_fieldcat 'MATNR' 'MARA' 'GT_MARA'.

m_fieldcat 'ERNAM' 'MARA' 'GT_MARA'.

m_fieldcat 'ERSDA' 'MARA' 'GT_MARA'.

m_fieldcat 'MTART' 'MARA' 'GT_MARA'.

m_fieldcat 'MATKL' 'MARA' 'GT_MARA'.

m_sort 'MATNR'.

MOVE 'END_OF_LIST' TO ls_event-name.

MOVE 'END_OF_LIST_2' TO ls_event-form.

APPEND ls_event TO lt_events.

gs_layout-list_append = c_x.

CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'

EXPORTING

i_callback_program = sy-cprog

it_fieldcat = lt_fieldcat

is_layout = gs_layout

it_sort = lt_sort

it_events = lt_events

i_save = 'A'

TABLES

t_outtab = gt_mara.

ENDFORM. " END_OF_LIST

FORM end_of_list_2. "#EC CALLED

DATA :

ls_fieldcat TYPE slis_fieldcat_alv,

lt_fieldcat TYPE slis_t_fieldcat_alv, " Field catalog

ls_sort TYPE slis_sortinfo_alv,

lt_sort TYPE slis_t_sortinfo_alv, " Sort table

lt_events TYPE slis_t_event,

ls_event TYPE slis_alv_event.

m_fieldcat 'VBELN' 'VBAK' 'GT_VBAK'.

m_fieldcat 'VKORG' 'VBAK' 'GT_VBAK'.

m_fieldcat 'VTWEG' 'VBAK' 'GT_VBAK'.

m_fieldcat 'KUNNR' 'VBAK' 'GT_VBAK'.

m_fieldcat 'ERDAT' 'VBAK' 'GT_VBAK'.

m_sort 'VBELN'.

MOVE 'TOP_OF_PAGE' TO ls_event-name.

MOVE 'TOP_OF_PAGE' TO ls_event-form.

APPEND ls_event TO lt_events.

gs_layout-list_append = c_x.

CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'

EXPORTING

i_callback_program = sy-cprog

it_fieldcat = lt_fieldcat

is_layout = gs_layout

it_sort = lt_sort

it_events = lt_events

i_save = 'A'

TABLES

t_outtab = gt_vbak.