2009 Apr 16 9:11 AM
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.
2009 Apr 16 9:20 AM
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...
2009 Apr 16 9:20 AM
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...
2009 Apr 16 9:21 AM
2009 Apr 16 9:30 AM
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.
2009 Apr 16 9:31 AM
2009 Apr 16 9:47 AM
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
2009 Apr 16 9:53 AM
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
2009 Apr 16 12:14 PM
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
2009 Apr 16 12:16 PM
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.