01-07-2014 7:07 AM
hi all experts ,
I am fresher in sap abap , i create a sale register report based on g/l account so that i have a one issue that is :
WHEN USER CLICK ON DOC.NO (VBELN) THEN ONLY THAT DOC.NO DETAIL WILL BE SHOWN ON NEXT ALV
I CAN SHOW THE NEXT ALV BUT CAN'T SHOW SINGLE DOCNO BASED RECORD ..
please help me ................
THANS & REGARD
FAHEEM KHAN ....
01-07-2014 7:18 AM
Post your code on how you are navigating to the next ALV?
What events are you using?
Thanks
Abhinab
01-07-2014 7:14 AM
Hi,
Please check the below code. which TCODE you want to go. you can change it.
* Local declarations
DATA: lwa_outtab TYPE ty_post.
* Click any cell will drop down TCODE FBV0
READ TABLE gt_post INTO lwa_outtab INDEX us_row.
IF lwa_outtab-belnr IS NOT INITIAL.
SET PARAMETER ID 'BUK' FIELD lwa_outtab-bukrs.
SET PARAMETER ID 'BLP' FIELD lwa_outtab-belnr.
SET PARAMETER ID 'GJR' FIELD lwa_outtab-gjahr.
CALL TRANSACTION 'FBV0' AND SKIP FIRST SCREEN.
ENDIF.
Regards.
Yawa
01-07-2014 7:18 AM
Post your code on how you are navigating to the next ALV?
What events are you using?
Thanks
Abhinab
01-07-2014 7:25 AM
FORM user_command USING r_ucomm LIKE sy-ucomm
rs_selfield TYPE slis_selfield.
CASE r_ucomm.
WHEN '&IC1'.
READ TABLE it_main INTO wa_main INDEX
rs_selfield-tabindex.
PERFORM GET_ITEM_DATA.
PERFORM ITEM_ALV_DATA.
PERFORM DISPLAY_ITEM_DATA.
ENDCASE.
ENDFORM .
FORM GET_ITEM_DATA .
DATA : BEGIN OF WA_VBRP ,
VBELN TYPE VBRP-VBELN,
VKGRP TYPE VBRP-VKGRP,
VKBUR TYPE VBRP-VKBUR,
WERKS TYPE VBRP-WERKS,
MATKL TYPE VBRP-MATKL , " RELATION ...
MATNR TYPE VBRP-MATNR , " RELATION ...
FKIMG TYPE VBRP-FKIMG ,
VRKME TYPE VBRP-VRKME ,
BRGEW TYPE VBRP-BRGEW ,
NTGEW TYPE VBRP-NTGEW ,
GEWEI TYPE VBRP-GEWEI ,
NETWR TYPE VBRP-NETWR ,
POSNR TYPE VBRP-POSNR ,
END OF WA_VBRP ,
IT_VBRP LIKE STANDARD TABLE OF WA_VBRP .
DATA : BEGIN OF WA_T023T ,
MATKL TYPE T023T-MATKL, " RELATION ...
WGBEZ TYPE T023T-WGBEZ,
END OF WA_T023T ,
IT_T023T LIKE STANDARD TABLE OF T023T .
" 10TH TABLE ...
DATA : BEGIN OF WA_MAKT ,
MAKTX TYPE MAKT-MAKTX,
MATNR TYPE MAKT-MATNR, " RELATION ...
END OF WA_MAKT ,
IT_MAKT LIKE STANDARD TABLE OF MAKT .
" ITEM DATA SELECTION ....
SELECT VBELN VKGRP VKBUR WERKS MATKL MATNR FKIMG VRKME BRGEW
NTGEW GEWEI NETWR POSNR FROM VBRP INTO TABLE IT_VBRP
FOR ALL ENTRIES IN IT_MAIN WHERE VBELN = IT_MAIN-VBELN .
SELECT MAKTX MATNR FROM MAKT INTO TABLE IT_MAKT
FOR ALL ENTRIES IN IT_VBRP
WHERE MATNR = IT_VBRP-MATNR.
SELECT MATKL WGBEZ FROM t023t INTO TABLE IT_T023T
FOR ALL ENTRIES IN IT_VBRP
WHERE MATKL = IT_VBRP-MATKL .
IF it_vbrp IS NOT INITIAL . " IF FOR IT_VBRP ...
LOOP AT it_vbrp INTO wa_vbrp . "LOOP FOR IT_VBRK_VBRP ...
MOVE-CORRESPONDING wa_vbrp TO wa_ITEM.
IF SY-SUBRC = 0. " IF FOR CHECKING ...
READ TABLE it_T023T INTO wa_T023T WITH KEY
MATKL = WA_ITEM-MATKL .
IF sy-subrc = 0.
MOVE : WA_T023T-WGBEZ TO WA_ITEM-WGBEZ .
ENDIF.
READ TABLE it_MAKT INTO wa_MAKT WITH KEY
MATNR = WA_ITEM-MATNR .
IF sy-subrc = 0.
MOVE : WA_MAKT-MAKTX TO WA_ITEM-MAKTX .
ENDIF.
ENDIF. " IF FOR CHECKING ...
APPEND WA_ITEM TO IT_ITEM.
CLEAR WA_ITEM .
ENDLOOP. "LOOP FOR IT_VBRK_VBRP ...
ENDIF. " IF FOR IT_VBRP ...
ENDFORM.
FORM ITEM_ALV_DATA.
wft1-fieldname = 'VBELN'. "1
wft1-seltext_m = 'BILL.DOC.NO'.
APPEND wft1 TO ftab1.
CLEAR wft1.
wft1-fieldname = 'VKBUR'. "2
wft1-seltext_m = 'SALE.OFF'.
APPEND wft1 TO ftab1.
CLEAR WFT1.
wft1-fieldname = 'VKGRP'. "3
wft1-seltext_m = 'SALES.GRP'.
APPEND wft1 TO ftab1.
CLEAR WFT1.
wft1-fieldname = 'FKIMG'. "4
wft1-seltext_m = 'QUANTITY'.
APPEND wft1 TO ftab1.
CLEAR WFT1.
wft1-fieldname = 'VRKME'. "5
wft1-seltext_m = 'UNIT.GROS'.
APPEND wft1 TO ftab1.
CLEAR WFT1.
wft1-fieldname = 'BRGEW'. "6
wft1-seltext_m = 'GRS.WEIGHT'.
APPEND wft1 TO ftab1.
CLEAR WFT1.
wft1-fieldname = 'NTGEW'. "7
wft1-seltext_m = 'NET.WEIGHT'.
APPEND wft1 TO ftab1.
CLEAR WFT1.
wft1-fieldname = 'GEWEI'. "8
wft1-seltext_m = 'UNIT'.
APPEND wft1 TO ftab1.
CLEAR WFT1.
wft1-fieldname = 'NETWR'. "9
wft1-seltext_m = 'VALUE'.
APPEND wft1 TO ftab1.
CLEAR WFT1.
wft1-fieldname = 'MATNR'. "10
wft1-seltext_m = 'MATERIAL'.
APPEND wft1 TO ftab1.
CLEAR WFT1.
wft1-fieldname = 'MATKL'. "11
wft1-seltext_m = 'MATR.GRP'.
APPEND wft1 TO ftab1.
CLEAR WFT1.
wft1-fieldname = 'WGBEZ'. "12
wft1-seltext_m = 'MATR.GRP.DISC'.
APPEND wft1 TO ftab1.
CLEAR WFT1.
wft1-fieldname = 'MAKTX'. "13
wft1-seltext_m = 'MATR.DISC'.
APPEND wft1 TO ftab1.
CLEAR WFT1.
layout1-zebra = 'X'.
ENDFORM.
FORM DISLPLAY_ITEM_DATA .
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
* I_INTERFACE_CHECK = ' '
* I_BYPASSING_BUFFER = ' '
* I_BUFFER_ACTIVE = ' '
* I_CALLBACK_PROGRAM = 'user_command'
* 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 =
* I_GRID_SETTINGS =
IS_LAYOUT = layout
IT_FIELDCAT = ftab
* IT_EXCLUDING = it_exc
* IT_SPECIAL_GROUPS =
* IT_SORT =
* IT_FILTER =
* IS_SEL_HIDE =
* I_DEFAULT = 'X'
* I_SAVE = 'X'
* 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_ITEM
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.
01-07-2014 7:30 AM
Change your code like this - This will ensure the data is retrieved only for the record selected .
CASE r_ucomm.
WHEN '&IC1'.
READ TABLE it_main INTO wa_main INDEX
rs_selfield-tabindex.
PERFORM GET_ITEM_DATA.
PERFORM ITEM_ALV_DATA.
PERFORM DISPLAY_ITEM_DATA.
ENDCASE.
ENDFORM .
FORM GET_ITEM_DATA .
DATA : BEGIN OF WA_VBRP ,
VBELN TYPE VBRP-VBELN,
VKGRP TYPE VBRP-VKGRP,
VKBUR TYPE VBRP-VKBUR,
WERKS TYPE VBRP-WERKS,
MATKL TYPE VBRP-MATKL , " RELATION ...
MATNR TYPE VBRP-MATNR , " RELATION ...
FKIMG TYPE VBRP-FKIMG ,
VRKME TYPE VBRP-VRKME ,
BRGEW TYPE VBRP-BRGEW ,
NTGEW TYPE VBRP-NTGEW ,
GEWEI TYPE VBRP-GEWEI ,
NETWR TYPE VBRP-NETWR ,
POSNR TYPE VBRP-POSNR ,
END OF WA_VBRP ,
IT_VBRP LIKE STANDARD TABLE OF WA_VBRP .
DATA : BEGIN OF WA_T023T ,
MATKL TYPE T023T-MATKL, " RELATION ...
WGBEZ TYPE T023T-WGBEZ,
END OF WA_T023T ,
IT_T023T LIKE STANDARD TABLE OF T023T .
" 10TH TABLE ...
DATA : BEGIN OF WA_MAKT ,
MAKTX TYPE MAKT-MAKTX,
MATNR TYPE MAKT-MATNR, " RELATION ...
END OF WA_MAKT ,
IT_MAKT LIKE STANDARD TABLE OF MAKT .
" ITEM DATA SELECTION ....
SELECT VBELN VKGRP VKBUR WERKS MATKL MATNR FKIMG VRKME BRGEW
NTGEW GEWEI NETWR POSNR FROM VBRP INTO TABLE IT_VBRP
WHERE VBELN = WA_MAIN-VBELN .
Let me know if you need further help
Thanks
Abhinab
01-07-2014 8:26 AM
01-07-2014 8:55 AM
01-07-2014 7:19 AM
Hi Faheem,
Please use AT-Line Selection event and Hide statements in ABAP. Based on the Hide field you can fetch the details by FM or by using Query. Revert Back in case of information needed.
With Regards,
Giriesh M
01-07-2014 7:27 AM
01-07-2014 7:25 AM
hi Faheem
you are fresh, i think you are using call funtion to show ALV, right?
you need get the current selected row(DOC.NO) and pass this value to next ALV.
in your code you need 'I_CALLBACK_USER_COMMAND', like blow
call function 'REUSE_ALV_GRID_DISPLAY'
exporting
...
i_callback_user_command = 'USER_COMMAND'
...
FORM USER_COMMAND USING r_ucomm LIKE sy-ucomm
rs_selfield TYPE slis_selfield.
READ TABLE it_day INDEX rs_selfield-tabindex. ---> this will give the selected row
ENDFORM.
regards,
Archer
01-07-2014 7:33 AM
hi zhang sir ,
i already used that send ur mail id i will send u a complete code on your mail id you sould mark & implement that place where i wrong on to that
01-07-2014 7:29 AM
Hi you could check out below code
* define your hot spot click
class lcl_event_receiver definition.
public section.
methods:
handle_hotspot_click
for event hotspot_click of cl_gui_alv_grid
importing e_row_id
e_column_id
es_row_no.
private section.
endclass. "lcl_event_receiver DEFINITION
** here is implementation
class lcl_event_receiver implementation.
method handle_hotspot_click.
case e_column_id.
when 'VBELN'.
read table gt_out into gs_out index es_row_no-row_id."gt_out is my internal table which is shown in alv grid you have to write down your owns
check gs_out-vbeln is not initial.
set parameter id 'VF' field gs_out-vbeln.
call transaction 'VF03' and skip first screen .
endmethod. "handle_hotspot_click
endclass. "lcl_event_receiver IMPLEMENTATION
* you need to set handler for alv grid
set handler event_receiver->handle_hotspot_click
for alv_grid_pr.
I sent user VF03 screen for demonstration . You could call another screen and display another alv or maybe a pop_up screen .
Have nice day.
01-07-2014 7:31 AM
Hi Faheem,
As a document can have multiple items, you need to select single record using 'SELECT SINGLE' and to get specified record you should mention other where conditions along with VBELN.
Thanks & Regards,
- Vijay
01-07-2014 7:59 AM
Hi Faheem khan,
You should not use like
SELECT VBELN VKGRP VKBUR WERKS MATKL MATNR FKIMG VRKME BRGEW
NTGEW GEWEI NETWR POSNR FROM VBRP INTO TABLE IT_VBRP
FOR ALL ENTRIES IN IT_MAIN WHERE VBELN = IT_MAIN-VBELN .
Instead of
SELECT VBELN VKGRP VKBUR WERKS MATKL MATNR FKIMG VRKME BRGEW
NTGEW GEWEI NETWR POSNR FROM VBRP INTO TABLE IT_VBRP
WHERE VBELN = wa_MAIN-VBELN .
Arivazhagan S
01-07-2014 8:41 AM
TAHNKS TO RESPECTED SIR FINALLY I CAN SOLVE MY PROBLEM ..
THANK YOU SO MUCH ....
01-07-2014 8:44 AM
THANKS ALL EXPERTES FOR THEIR ADVICE & I REALLY TAHNKFULL TO Arivazhagan Sivasamy
SIR THE PERSON GIVE ME WRITE QUERY TO SLOVE THE PROBLEM AGAIN I AM VERY THANKFULL TO ALL ...
REGARDS
FAHEEM KHAN ....