‎2006 Feb 20 9:19 AM
<b><b>hi i am a fresh Learner in ABAP and i am doing a small program in simple ALV interactive report in SD module that gives me::
1. SALES and then the invoice details of one particular value i click ,when delivery document number is given.
2. Deivery and invoice details of one particular value i click ,when sales order number is given.
3. Sales and delivery details of one particular value i click , when invoice order details are given.
so i need a clear code for the above. i can input any one of the three inputs to get the correct solution.. please give me a valid solution and not useless ones..
.. please help me with the same at the earliest !!!!!!!!!!!</b></b>
Message was edited by: ashokkumar ramkumar, please urgent replies...........
‎2006 Feb 21 8:00 AM
hi ashok,
if ur problem is solved.please close the threads by awarding points....
‎2006 Feb 20 9:25 AM
See this code sample
http://www.sap-img.com/abap/an-interactive-alv-report.htm
Reward points if u find helpful.
‎2006 Feb 20 9:26 AM
Hi,
Welcome to SDN!!!!!!!!!!
Look at the sample code.......
******FM for ALV Display***********
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = i_repid
i_callback_user_command = 'USER_COMMAND_PERNR'"<<<----
it_fieldcat = header
is_layout = gt_layout
i_callback_top_of_page = 'TOP-OF-PAGE1'
i_grid_title = text-t06
it_sort = gt_sort[]
i_default = 'X'
i_save = 'U'
is_variant = gt_variant
it_events = gt_events
TABLES
t_outtab = ITAB.
clear itab.
----
FORM USER_COMMAND_PERNR
----
FORM USER_COMMAND_PERNR USING u_ucomm LIKE sy-ucomm
us_selfield TYPE slis_selfield."#EC CALLED
CASE u_ucomm.
when '&IC1'.
if us_selfield-fieldname = 'PERNR'.
read table ITAB index us_selfield-tabindex.
set parameter id 'PER' field ITAB-PERNR.
set parameter id 'PER' field us_selfield-value.
call transaction 'ZDMR03' and skip first screen.
endif.
*******************
Here in my example i am calling one Tranx for further display.
You can code for next list display also here based on the field you clicked in Basic list.
*******************
ENDCASE.
ENDFORM. " USER_COMMAND_PERNR
For reference goto this link will help you a lot........
http://www.geocities.com/mpioud/Abap_programs.html
Thanks.
If this helps you reward with points.
Message was edited by: KDeepak
‎2006 Feb 20 9:31 AM
Hai Ashok,
These links may help you...
http://www.sap-img.com/abap-function.htm
http://www.sap-img.com/abap/an-interactive-alv-report.htm
Regards,
Srikanth.
‎2006 Feb 20 9:35 AM
To allow the user to select a line from the list, define and write a processing block for the AT LINE-SELECTION event in your program:
HIDE statement for storing the user's selected fields
To allow the user to select an action by pressing a function key,
Syntax
AT PF<nn>.
<statements>.
LIST INDEX-SY-LSIND-it is the counter for the list.
for sample program check the below site..
‎2006 Feb 20 9:43 AM
hi ashok,
please be clear with ur question. do u need simple interactive list using alv to display or u need a simple interactive list.
for a simple interactive list refer to the program given below. remember if u need simple alv interactive list please ignore this post.
TABLES : vbak,
vbap,
vbep.
DATA : BEGIN OF i_vbak OCCURS 0,
vbeln LIKE vbak-vbeln,
erdat LIKE vbak-erdat,
vkorg LIKE vbak-vkorg,
vtweg LIKE vbak-vtweg,
spart LIKE vbak-spart,
END OF i_vbak.
DATA : BEGIN OF i_vbap OCCURS 0,
vbeln LIKE vbap-vbeln,
posnr LIKE vbap-posnr,
matnr LIKE vbap-matnr,
zmeng LIKE vbap-zmeng,
END OF i_vbap.
DATA : BEGIN OF i_vbep OCCURS 0,
vbeln LIKE vbep-vbeln,
posnr LIKE vbep-posnr,
etenr LIKE vbep-etenr,
wmeng LIKE vbep-wmeng,
bddat LIKE vbep-bddat,
banfn LIKE vbep-banfn,
END OF i_vbep.
SELECT-OPTIONS : s_vbeln FOR vbak-vbeln.
Start of Selection
START-OF-SELECTION.
SELECT * INTO CORRESPONDING FIELDS OF TABLE i_vbak
FROM vbak
WHERE vbeln IN s_vbeln.
IF sy-subrc NE 0.
MESSAGE e000(zjm).
ENDIF.
*End-of-Selection
END-OF-SELECTION.
SET PF-STATUS 'ZJMD'.
LOOP AT i_vbak.
FORMAT COLOR 4 INTENSIFIED ON.
WRITE : /5 i_vbak-vbeln, 16 sy-vline, 17 i_vbak-erdat,
28 sy-vline, 29 i_vbak-vkorg , 34 sy-vline, 35 i_vbak-vtweg,
40 sy-vline, 41 i_vbak-spart, 44 sy-vline.
FORMAT RESET.
HIDE i_vbak-vbeln.
ENDLOOP.
AT LINE-SELECTION.
IF sy-lsind EQ 1.
SELECT * INTO CORRESPONDING FIELDS OF TABLE i_vbap
FROM vbap
WHERE vbeln = i_vbak-vbeln.
LOOP AT i_vbap.
FORMAT COLOR 1 INTENSIFIED ON.
WRITE : /5 i_vbap-vbeln, 16 sy-vline, 17 i_vbap-posnr,
24 sy-vline, 24 i_vbap-matnr, 43 sy-vline, 44 i_vbap-zmeng.
FORMAT RESET.
HIDE i_vbap-vbeln.
ENDLOOP.
ENDIF.
IF sy-lsind EQ 2.
SELECT * INTO CORRESPONDING FIELDS OF TABLE i_vbep
FROM vbep
WHERE vbeln = i_vbap-vbeln.
LOOP AT i_vbep.
WRITE : /5 i_vbep-vbeln.
ENDLOOP.
ENDIF.
TOP-OF-PAGE.
FORMAT COLOR 1 INTENSIFIED ON.
WRITE : /5 'Items', 16 sy-vline, 17 'Date',
28 sy-vline, 29 'Org', 34 sy-vline, 35 'Dist',
40 sy-vline, 41 'Div', 44 sy-vline.
FORMAT RESET.
‎2006 Feb 20 10:40 AM
joe,
thanks for ur good reply.my point is that,i display some fields from VBAK in the first ALV sreen ,on clicking this screen,i need to display some fields on the scrren from the table lips.in such case i need ur help........ if possible with a sample program !!!!!11
‎2006 Feb 20 10:58 AM
Hi,
Check this code..
REPORT ZTEST_ALV123 .
TYPE-POOLS:SLIS.
DATA : IT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV,
IT_FIELDCAT1 TYPE SLIS_T_FIELDCAT_ALV.
DATA: BEGIN OF ITAB OCCURS 0,
VBELN LIKE VBAK-VBELN,
POSNR LIKE VBAP-POSNR,
END OF ITAB.
DATA: BEGIN OF ITAB1 OCCURS 0,
VBELN LIKE LIKP-VBELN,
POSNR LIKE LIPS-POSNR,
VGBEL LIKE LIPS-VGBEL,
VGPOS LIKE LIPS-VGPOS,
END OF ITAB1.
DATA: IT_LIPS LIKE ITAB1 OCCURS 0 WITH HEADER LINE.
SELECT VBELN
POSNR
FROM VBAP
INTO TABLE ITAB.
IF SY-SUBRC = 0.
SORT ITAB BY VBELN .
SELECT VBELN
POSNR
VGBEL
VGPOS
INTO TABLE ITAB1
FROM LIPS
FOR ALL ENTRIES IN ITAB
WHERE VGBEL = ITAB-VBELN
AND VGPOS = ITAB-POSNR.
ENDIF.
DATA: X_FIELDCAT TYPE SLIS_FIELDCAT_ALV.
X_FIELDCAT-FIELDNAME = 'VBELN'.
X_FIELDCAT-TABNAME = 'ITAB'.
X_FIELDCAT-COL_POS = 1.
APPEND X_FIELDCAT TO IT_FIELDCAT.
CLEAR X_FIELDCAT.
X_FIELDCAT-FIELDNAME = 'POSNR'.
X_FIELDCAT-TABNAME = 'ITAB'.
X_FIELDCAT-COL_POS = 1.
APPEND X_FIELDCAT TO IT_FIELDCAT.
CLEAR X_FIELDCAT.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM = SY-REPID
I_CALLBACK_PF_STATUS_SET = 'PFSTATUS'
I_CALLBACK_USER_COMMAND = 'HANDLE_USER_COMMAND'
IT_FIELDCAT = IT_FIELDCAT
TABLES
T_OUTTAB = ITAB
EXCEPTIONS
PROGRAM_ERROR = 1
OTHERS = 2.
IF SY-SUBRC = 0.
ENDIF.
*&---------------------------------------------------------------------*
*& Form POPUP
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_EXTAB text
*----------------------------------------------------------------------*
FORM POPUP USING P_EXTAB TYPE SLIS_T_EXTAB.
"here double click on PFSTATUS and create the status, "activate, before that set PICK for choose(F2).
*- Pf status
SET PF-STATUS 'PFSTATUS'.
ENDFORM. " POPUP
*&---------------------------------------------------------------------*
*& Form HANDLE_USER_COMMAND
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->R_UCOMM text
* -->RS_SELFIELD text
*----------------------------------------------------------------------*
FORM HANDLE_USER_COMMAND USING R_UCOMM LIKE SY-UCOMM
RS_SELFIELD TYPE SLIS_SELFIELD.
CASE R_UCOMM.
WHEN '&IC1'.
IF RS_SELFIELD-FIELDNAME = 'VBELN'.
READ TABLE ITAB INDEX RS_SELFIELD-TABINDEX.
LOOP AT ITAB1 WHERE VGBEL = ITAB-VBELN
AND VGPOS = ITAB-POSNR.
MOVE-CORRESPONDING ITAB1 TO IT_LIPS.
APPEND IT_LIPS.
ENDLOOP.
PERFORM INTERACTIVE_REPORT.
ENDIF.
ENDCASE.
ENDFORM. "HANDLE_USER_COMMAND
*&---------------------------------------------------------------------*
*& Form interactive_report
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM INTERACTIVE_REPORT .
X_FIELDCAT-FIELDNAME = 'VBELN'.
X_FIELDCAT-SELTEXT_L = 'VBELN'.
X_FIELDCAT-TABNAME = 'IT_LIPS'.
X_FIELDCAT-COL_POS = 1.
APPEND X_FIELDCAT TO IT_FIELDCAT1.
CLEAR X_FIELDCAT.
X_FIELDCAT-FIELDNAME = 'POSNR'.
X_FIELDCAT-SELTEXT_L = 'ITEM'.
X_FIELDCAT-TABNAME = 'IT_LIPS'.
X_FIELDCAT-COL_POS = 2.
APPEND X_FIELDCAT TO IT_FIELDCAT1.
CLEAR X_FIELDCAT.
X_FIELDCAT-FIELDNAME = 'VGBEL'.
X_FIELDCAT-SELTEXT_M = 'SO #'.
X_FIELDCAT-TABNAME = 'IT_LIPS'.
X_FIELDCAT-COL_POS = 3.
APPEND X_FIELDCAT TO IT_FIELDCAT1.
CLEAR X_FIELDCAT.
X_FIELDCAT-FIELDNAME = 'VGPOS'.
X_FIELDCAT-SELTEXT_M = 'SO ITEM'.
X_FIELDCAT-TABNAME = 'IT_LIPS'.
X_FIELDCAT-COL_POS = 4.
APPEND X_FIELDCAT TO IT_FIELDCAT1.
CLEAR X_FIELDCAT.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM = SY-REPID
IT_FIELDCAT = IT_FIELDCAT1
TABLES
T_OUTTAB = IT_LIPS
EXCEPTIONS
PROGRAM_ERROR = 1
OTHERS = 2.
IF SY-SUBRC = 0.
ENDIF.
ENDFORM. " interactive_reportRegards
vijay
‎2006 Feb 20 9:51 AM
Hi,
Check this sample code..
REPORT ZTEST_ALV123 .
TYPE-POOLS:SLIS.
DATA : IT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV,
IT_FIELDCAT1 TYPE SLIS_T_FIELDCAT_ALV.
DATA: BEGIN OF ITAB OCCURS 0,
VBELN LIKE VBAK-VBELN,
END OF ITAB.
DATA: BEGIN OF ITAB1 OCCURS 0,
VBELN LIKE VBAK-VBELN,
POSNR LIKE VBAP-POSNR,
END OF ITAB1.
SELECT VBELN
FROM VBAK
UP TO 100 ROWS
INTO TABLE ITAB.
IF SY-SUBRC = 0.
sort itab by vbeln .
SELECT VBELN
POSNR
INTO TABLE ITAB1
FROM VBAP
FOR ALL ENTRIES IN ITAB
WHERE VBELN = ITAB-VBELN.
ENDIF.
DATA: X_FIELDCAT TYPE SLIS_FIELDCAT_ALV.
X_FIELDCAT-FIELDNAME = 'VBELN'.
X_FIELDCAT-TABNAME = 'ITAB'.
X_FIELDCAT-COL_POS = 1.
APPEND X_FIELDCAT TO IT_FIELDCAT.
CLEAR X_FIELDCAT.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM = SY-REPID
I_CALLBACK_PF_STATUS_SET = 'POPUP'
I_CALLBACK_USER_COMMAND = 'HANDLE_USER_COMMAND'
IT_FIELDCAT = IT_FIELDCAT
TABLES
T_OUTTAB = ITAB
EXCEPTIONS
PROGRAM_ERROR = 1
OTHERS = 2.
IF SY-SUBRC = 0.
ENDIF.
FORM POPUP USING P_EXTAB TYPE SLIS_T_EXTAB.
*- Pf status
SET PF-STATUS 'POPUP'.
ENDFORM. " POPUP
FORM HANDLE_USER_COMMAND USING R_UCOMM LIKE SY-UCOMM
RS_SELFIELD TYPE SLIS_SELFIELD.
CASE R_UCOMM.
WHEN '&IC1'.
PERFORM INTERACTIVE_REPORT.
ENDCASE.
ENDFORM. "HANDLE_USER_COMMAND
FORM INTERACTIVE_REPORT .
X_FIELDCAT-FIELDNAME = 'VBELN'.
X_FIELDCAT-TABNAME = 'ITAB1'.
X_FIELDCAT-COL_POS = 1.
APPEND X_FIELDCAT TO IT_FIELDCAT1.
CLEAR X_FIELDCAT.
X_FIELDCAT-FIELDNAME = 'POSNR'.
X_FIELDCAT-TABNAME = 'ITAB1'.
X_FIELDCAT-COL_POS = 2.
APPEND X_FIELDCAT TO IT_FIELDCAT1.
CLEAR X_FIELDCAT.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM = SY-REPID
IT_FIELDCAT = IT_FIELDCAT1
TABLES
T_OUTTAB = ITAB1
EXCEPTIONS
PROGRAM_ERROR = 1
OTHERS = 2.
IF SY-SUBRC = 0.
ENDIF.
ENDFORM. " interactive_reportRegards
vijay
‎2006 Feb 20 10:40 AM
hi vijay,
just check out the exact requirement and try to gimma a solution........
‎2006 Feb 20 11:40 AM
hi ashok
hope this program will help u
TYPE-POOLS SLIS.
DATA PROG TYPE SY-REPID .
PROG = SY-REPID.
DATA : BEGIN OF ITAB1 OCCURS 0,
CARRID LIKE SPFLI-CARRID,
CONNID LIKE SPFLI-CONNID,
AIRPTO LIKE SPFLI-AIRPTO,
END OF ITAB1 .
DATA WA1 LIKE LINE OF ITAB1 .
DATA OK_CODE TYPE SY-UCOMM.
DATA : BEGIN OF ITAB2 OCCURS 0,
CARRID LIKE SFLIGHT-CARRID,
CONNID LIKE SFLIGHT-CONNID,
PRICE LIKE SFLIGHT-PRICE ,
END OF ITAB2 .
DATA IT_FCAT1 TYPE SLIS_T_FIELDCAT_ALV .
DATA IT_FCAT2 TYPE SLIS_T_FIELDCAT_ALV .
SELECT * FROM SPFLI INTO CORRESPONDING FIELDS OF TABLE ITAB1 .
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
I_PROGRAM_NAME = PROG
I_INTERNAL_TABNAME = 'ITAB1'
I_STRUCTURE_NAME =
I_CLIENT_NEVER_DISPLAY = 'X'
I_INCLNAME = PROG
I_BYPASSING_BUFFER =
I_BUFFER_ACTIVE =
CHANGING
ct_fieldcat = IT_FCAT1
.
CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
EXPORTING
I_INTERFACE_CHECK = ' '
I_BYPASSING_BUFFER =
I_BUFFER_ACTIVE = ' '
I_CALLBACK_PROGRAM = PROG
I_CALLBACK_PF_STATUS_SET = ' '
I_CALLBACK_USER_COMMAND = 'YALV9FORM'
I_STRUCTURE_NAME =
IS_LAYOUT =
IT_FIELDCAT = IT_FCAT1
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
IMPORTING
E_EXIT_CAUSED_BY_CALLER =
ES_EXIT_CAUSED_BY_USER =
TABLES
t_outtab = ITAB1
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 YALV9FORM USING R_UCOMM LIKE SY-UCOMM R_FIELD TYPE
SLIS_SELFIELD.
READ TABLE ITAB1 INDEX R_FIELD-TABINDEX .
SELECT * FROM SFLIGHT INTO CORRESPONDING FIELDS OF TABLE ITAB2 WHERE
CARRID = ITAB1-CARRID .
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
I_PROGRAM_NAME = PROG
I_INTERNAL_TABNAME = 'ITAB2'
I_STRUCTURE_NAME =
I_CLIENT_NEVER_DISPLAY = 'X'
I_INCLNAME = PROG
I_BYPASSING_BUFFER =
I_BUFFER_ACTIVE =
CHANGING
ct_fieldcat = IT_FCAT2
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 = PROG
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 =
IT_FIELDCAT = IT_FCAT2
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
IT_ALV_GRAPHICS =
IT_HYPERLINK =
IT_ADD_FIELDCAT =
IT_EXCEPT_QINFO =
I_HTML_HEIGHT_TOP =
I_HTML_HEIGHT_END =
IMPORTING
E_EXIT_CAUSED_BY_CALLER =
ES_EXIT_CAUSED_BY_USER =
TABLES
t_outtab = ITAB2
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.
‎2006 Feb 20 11:45 AM
hi,
This report takes bukrs(company code) & gjahr(date) as input & then gives you the list in an alv.Here Field catalog is also used to select only those fields which are really wanted.
regards
REPORT zalvgridcontrol1 .
PARAMETERS: pa_bukrs LIKE bsis-bukrs.
PARAMETERS: pa_gjahr LIKE bsis-gjahr.
DATA gr_alvgrid TYPE REF TO cl_gui_alv_grid.
DATA gc_custom_control_name TYPE scrfname VALUE 'CC_ALV'.
DATA gr_ccontainer TYPE REF TO cl_gui_custom_container.
DATA gt_fieldcat TYPE lvc_t_fcat.
DATA pt_sort TYPE lvc_t_sort.
TABLES: bsis.
*----
INTERNAL TABLE
DATA :BEGIN OF it_bsis OCCURS 0,
mandt TYPE bsis-mandt,
hkont TYPE bsis-hkont,
augdt TYPE bsis-augdt,
augbl TYPE bsis-augbl,
zuonr TYPE bsis-zuonr,
belnr TYPE bsis-belnr,
buzei TYPE bsis-buzei,
gjahr TYPE bsis-gjahr,
bukrs TYPE bsis-bukrs,
budat TYPE bsis-budat,
blart TYPE bsis-blart,
dmbtr TYPE bsis-dmbtr,
ztotal TYPE f,
END OF it_bsis.
DATA: wa_bsis LIKE it_bsis .
SELECT mandt augdt augbl zuonr belnr buzei hkont budat blart dmbtr gjahr
bukrs FROM bsis
INTO CORRESPONDING FIELDS OF TABLE it_bsis
WHERE bukrs = pa_bukrs
AND gjahr = pa_gjahr.
SET SCREEN 100.
&----
*& Module DISPLAY_ALV OUTPUT
&----
text
----
MODULE zdisplay_alv OUTPUT.
PERFORM display_alv.
ENDMODULE. " DISPLAY_ALV OUTPUT
&----
*& Form DISPLAY_ALV
&----
This form displays alvgrid
----
--> p1 text
<-- p2 text
----
FORM display_alv .
IF gr_alvgrid IS INITIAL.
CREATE OBJECT gr_ccontainer
EXPORTING
container_name = 'CC_ALV' " GC_CUSTOM_CONTROL_NAME
EXCEPTIONS cntl_error = 1
cntl_system_error = 2.
CREATE OBJECT gr_alvgrid
EXPORTING
i_parent = gr_ccontainer.
PERFORM prepare_field_catalog CHANGING gt_fieldcat.
CALL METHOD gr_alvgrid->set_table_for_first_display
CHANGING
it_outtab = it_bsis[]
it_fieldcatalog = gt_fieldcat.
CALL METHOD gr_alvgrid->refresh_table_display.
ENDIF.
ENDFORM. " DISPLAY_ALV
&----
*& Form PREPARE_FIELD_CATALOG
&----
Field catalog is prepared to diaplay data in alv.
----
<--P_GT_FIELDCAT text
----
FORM prepare_field_catalog CHANGING p_gt_fieldcat TYPE lvc_t_fcat.
DATA ls_fcat TYPE lvc_s_fcat.
ls_fcat-fieldname = 'HKONT'.
ls_fcat-inttype = 'C'.
ls_fcat-outputlen = '4'.
ls_fcat-coltext = 'ITEMCODE'.
ls_fcat-seltext = 'ITEMCODE'.
APPEND ls_fcat TO p_gt_fieldcat.
CLEAR ls_fcat.
ls_fcat-fieldname = 'BUDAT'.
ls_fcat-inttype = 'D'.
ls_fcat-outputlen ='8'.
ls_fcat-coltext = 'DATE'.
ls_fcat-seltext = 'DATE'.
APPEND ls_fcat TO p_gt_fieldcat.
CLEAR ls_fcat.
ls_fcat-fieldname = 'BLART'.
ls_fcat-inttype = 'C'.
ls_fcat-outputlen = '10'.
ls_fcat-coltext = 'DOC TYPE'.
ls_fcat-seltext = 'DOC TYPE'.
APPEND ls_fcat TO p_gt_fieldcat.
CLEAR ls_fcat.
ls_fcat-fieldname = 'DMBTR'.
ls_fcat-inttype = 'P'.
ls_fcat-outputlen = '10'.
ls_fcat-coltext = 'AMOUNT'.
ls_fcat-seltext = 'AMOUNT'.
ls_fcat-do_sum = 'X'.
APPEND ls_fcat TO p_gt_fieldcat.
ENDFORM. " PREPARE_FIELD_CATALOG
&----
*& Module status OUTPUT
&----
Form for setting status.
----
MODULE zstatus OUTPUT.
SET PF-STATUS 'ALVSTATUS'.
ENDMODULE. " status OUTPUT
&----
*& Module USER_COMMAND_0100 INPUT
&----
form for standard tool bar.
----
MODULE zuser_command_0100 INPUT.
CASE sy-ucomm.
WHEN 'BACK'.
LEAVE PROGRAM.
ENDCASE.
ENDMODULE. " USER_COMMAND_0100 INPUT
‎2006 Feb 20 12:02 PM
Hi,
Check this link for the sample code and kindly reward points by clicking the star on the left of reply,if it helps.The sample code basically is for displaying 3 lists as you asked.
‎2006 Feb 21 8:00 AM
hi ashok,
if ur problem is solved.please close the threads by awarding points....
‎2006 Mar 01 5:19 AM
Hi ashok
for this you have to innner join LIKP(delivery docuement), LIPS, VBAP & VBAK(sales document) for getting the sales details.
then for invoice youhave to inner join LIKP(delivery document),LIPS,VBRP & VBRK(invoce).
regards
kishore
‎2006 Mar 01 5:32 AM
<b>kishore,
thankx for ur solution.i have that idea already but error heads up while joining the tables. why could u check out a code for it and send me ?</b>
‎2006 Mar 01 6:35 AM
hi ASHOK
THIS ONE WORKS FINE.
REPORT ZKISHDRILL1.
TABLES: VBAK,VBAP,LIKP,LIPS.
DATA: BEGIN OF I_VBAK_VBAP OCCURS 0,
VBELN LIKE VBAK-VBELN,
ERNAM LIKE VBAK-ERNAM,
ERDAT LIKE VBAK-ERDAT,
VKORG LIKE VBAK-VKORG,
VTWEG LIKE VBAK-VTWEG,
SPART LIKE VBAK-SPART,
POSNR LIKE VBAP-POSNR,
MATNR LIKE VBAP-MATNR,
KWMENG LIKE VBAP-KWMENG,
END OF I_VBAK_VBAP.
DATA: BEGIN OF I_LIKP_LIPS OCCURS 0,
VBELN LIKE LIKP-VBELN,
LFART LIKE LIKP-LFART,
LFDAT LIKE LIKP-LFDAT,
POSNR LIKE LIPS-POSNR,
LFIMG LIKE LIPS-LFIMG,
VGBEL LIKE LIPS-VGBEL,
VGPOS LIKE LIPS-VGPOS,
END OF I_LIKP_LIPS.
DATA: BEGIN OF I_VBRK_VBRP OCCURS 0,
VBELN LIKE VBRK-VBELN,
BELNR LIKE VBRK-BELNR,
POSNR LIKE VBRP-POSNR,
NETWR LIKE VBRP-NETWR,
END OF I_VBRK_VBRP.
SELECT-OPTIONS: S_VBELN FOR VBAK-VBELN MATCHCODE OBJECT VMVA OBLIGATORY.
AT SELECTION-SCREEN.
SELECT SINGLE * FROM VBAK WHERE VBELN IN S_VBELN.
IF SY-SUBRC <> 0.
MESSAGE E000(ZER).
ENDIF.
START-OF-SELECTION.
SELECT VBAKVBELN VBAKERNAM VBAKERDAT VBAKVKORG VBAK~VTWEG
VBAKSPART VBAPPOSNR VBAPMATNR VBAPKWMENG INTO TABLE I_VBAK_VBAP
FROM VBAK INNER JOIN VBAP ON VBAKVBELN = VBAPVBELN WHERE VBAK~VBELN
IN S_VBELN.
************************************************************************
AT LINE-SELECTION.
******************************LEVEL1
IF SY-LSIND EQ 1.
CLEAR I_LIKP_LIPS.
REFRESH I_LIKP_LIPS.
SELECT LIKPVBELN LIKPLFART LIKPLFDAT LIPSPOSNR LIPSLFIMG LIPSVGBEL
LIPS~VGPOS INTO TABLE I_LIKP_LIPS FROM LIKP INNER JOIN LIPS ON
LIKPVBELN = LIPSVBELN WHERE
LIPS~VGBEL = I_VBAK_VBAP-VBELN AND
LIPS~VGPOS = I_VBAK_VBAP-POSNR.
LOOP AT I_LIKP_LIPS.
WRITE: / I_LIKP_LIPS-VBELN, I_LIKP_LIPS-POSNR.
HIDE I_LIKP_LIPS.
ENDLOOP.
ENDIF.
******************************LEVEL 2
IF SY-LSIND EQ 2.
SELECT VBRKVBELN VBRKBELNR VBRPPOSNR VBRPNETWR INTO TABLE
I_VBRK_VBRP FROM VBRK INNER JOIN VBRP ON VBRKVBELN = VBRPVBELN WHERE
VBRP~VGBEL = I_LIKP_LIPS-VBELN AND
VBRP~VGPOS = I_LIKP_LIPS-POSNR.
LOOP AT I_VBRK_VBRP.
WRITE: / I_VBRK_VBRP-VBELN, I_VBRK_VBRP-NETWR.
ENDLOOP.
ENDIF.
IF SY-LSIND GT 2.
MESSAGE W002(ZER).
ENDIF.
************************************************************************
************************************************************************
END-OF-SELECTION.
LOOP AT I_VBAK_VBAP.
WRITE: / I_VBAK_VBAP-VBELN, I_VBAK_VBAP-POSNR.
HIDE I_VBAK_VBAP.
ENDLOOP.
************************************************************************
TOP-OF-PAGE.
SKIP.
ULINE 5(76).
FORMAT COLOR 1 INTENSIFIED ON.
WRITE:/5 SY-VLINE,6 'SALES NUM', 20 SY-VLINE, 21 'CREATOR', 35
SY-VLINE, 36 'CRET DATE', 48 SY-VLINE, 49 'SALES ORG',
60 SY-VLINE, 61 'SALES WG', 71 SY-VLINE, 72 'SAL DIV',
80 SY-VLINE.
ULINE /5(76).
FORMAT RESET.
TOP-OF-PAGE DURING LINE-SELECTION.
****************************************LEVEL 1
IF SY-LSIND EQ 1.
ENDIF.
****************************************LEVEL 2
IF SY-LSIND EQ 2.
ENDIF.
REGARDS
KISHORE
REWARD IF HELPFUL
‎2006 Mar 01 9:57 AM
kishore,
i needed a ALV report and not interactive report..........
‎2006 Mar 01 10:01 AM
An Interactive ALV Report
&----
*& Report ZZ_22038_22098_002 *
*& *
&----
*& This is an Interactive ALV report, where on line slection we can see
*& the secondry list
*&
*& *
&----
REPORT ZZ_22038_22098_002 NO STANDARD PAGE HEADING LINE-SIZE 650
MESSAGE-ID ZZ_9838 .
TYPE-POOLS: SLIS.
*type declaration for values from ekko
TYPES: BEGIN OF I_EKKO,
EBELN LIKE EKKO-EBELN,
AEDAT LIKE EKKO-AEDAT,
BUKRS LIKE EKKO-BUKRS,
BSART LIKE EKKO-BSART,
LIFNR LIKE EKKO-LIFNR,
END OF I_EKKO.
DATA: IT_EKKO TYPE STANDARD TABLE OF I_EKKO INITIAL SIZE 0,
WA_EKKO TYPE I_EKKO.
*type declaration for values from ekpo
TYPES: BEGIN OF I_EKPO,
EBELN LIKE EKPO-EBELN,
EBELP LIKE EKPO-EBELP,
MATNR LIKE EKPO-MATNR,
MENGE LIKE EKPO-MENGE,
MEINS LIKE EKPO-MEINS,
NETPR LIKE EKPO-NETPR,
END OF I_EKPO.
DATA: IT_EKPO TYPE STANDARD TABLE OF I_EKPO INITIAL SIZE 0,
WA_EKPO TYPE I_EKPO .
*variable for Report ID
DATA: V_REPID LIKE SY-REPID .
*declaration for fieldcatalog
DATA: I_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV,
WA_FIELDCAT TYPE SLIS_FIELDCAT_ALV.
DATA: IT_LISTHEADER TYPE SLIS_T_LISTHEADER.
declaration for events table where user comand or set PF status will
be defined
DATA: V_EVENTS TYPE SLIS_T_EVENT,
WA_EVENT TYPE SLIS_ALV_EVENT.
declartion for layout
DATA: ALV_LAYOUT TYPE SLIS_LAYOUT_ALV.
declaration for variant(type of display we want)
DATA: I_VARIANT TYPE DISVARIANT,
I_VARIANT1 TYPE DISVARIANT,
I_SAVE(1) TYPE C.
*PARAMETERS : p_var TYPE disvariant-variant.
*Title displayed when the alv list is displayed
DATA: I_TITLE_EKKO TYPE LVC_TITLE VALUE 'FIRST LIST DISPLAYED'.
DATA: I_TITLE_EKPO TYPE LVC_TITLE VALUE 'SECONDRY LIST DISPLAYED'.
INITIALIZATION.
V_REPID = SY-REPID.
PERFORM BUILD_FIELDCATLOG.
PERFORM EVENT_CALL.
PERFORM POPULATE_EVENT.
START-OF-SELECTION.
PERFORM DATA_RETRIEVAL.
PERFORM BUILD_LISTHEADER USING IT_LISTHEADER.
PERFORM DISPLAY_ALV_REPORT.
&----
*& Form BUILD_FIELDCATLOG
&----
Fieldcatalog has all the field details from ekko
----
FORM BUILD_FIELDCATLOG.
WA_FIELDCAT-TABNAME = 'IT_EKKO'.
WA_FIELDCAT-FIELDNAME = 'EBELN'.
WA_FIELDCAT-SELTEXT_M = 'PO NO.'.
APPEND WA_FIELDCAT TO I_FIELDCAT.
CLEAR WA_FIELDCAT.
WA_FIELDCAT-TABNAME = 'IT_EKKO'.
WA_FIELDCAT-FIELDNAME = 'AEDAT'.
WA_FIELDCAT-SELTEXT_M = 'DATE.'.
APPEND WA_FIELDCAT TO I_FIELDCAT.
CLEAR WA_FIELDCAT.
WA_FIELDCAT-TABNAME = 'IT_EKKO'.
WA_FIELDCAT-FIELDNAME = 'BUKRS'.
WA_FIELDCAT-SELTEXT_M = 'COMPANY CODE'.
APPEND WA_FIELDCAT TO I_FIELDCAT.
CLEAR WA_FIELDCAT.
WA_FIELDCAT-TABNAME = 'IT_EKKO'.
WA_FIELDCAT-FIELDNAME = 'BUKRS'.
WA_FIELDCAT-SELTEXT_M = 'DOCMENT TYPE'.
APPEND WA_FIELDCAT TO I_FIELDCAT.
CLEAR WA_FIELDCAT.
WA_FIELDCAT-TABNAME = 'IT_EKKO'.
WA_FIELDCAT-FIELDNAME = 'LIFNR'.
WA_FIELDCAT-NO_OUT = 'X'.
WA_FIELDCAT-SELTEXT_M = 'VENDOR CODE'.
APPEND WA_FIELDCAT TO I_FIELDCAT.
CLEAR WA_FIELDCAT.
ENDFORM. "BUILD_FIELDCATLOG
&----
*& Form EVENT_CALL
&----
we get all events - TOP OF PAGE or USER COMMAND in table v_events
----
FORM EVENT_CALL.
CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
EXPORTING
I_LIST_TYPE = 0
IMPORTING
ET_EVENTS = V_EVENTS
EXCEPTIONS
LIST_TYPE_WRONG = 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. "EVENT_CALL
&----
*& Form POPULATE_EVENT
&----
Events populated for TOP OF PAGE & USER COMAND
----
FORM POPULATE_EVENT.
READ TABLE V_EVENTS INTO WA_EVENT WITH KEY NAME = 'TOP_OF_PAGE'.
IF SY-SUBRC EQ 0.
WA_EVENT-FORM = 'TOP_OF_PAGE'.
MODIFY V_EVENTS FROM WA_EVENT TRANSPORTING FORM WHERE NAME =
WA_EVENT-FORM.
ENDIF.
READ TABLE V_EVENTS INTO WA_EVENT WITH KEY NAME = 'USER_COMMAND'.
IF SY-SUBRC EQ 0.
WA_EVENT-FORM = 'USER_COMMAND'.
MODIFY V_EVENTS FROM WA_EVENT TRANSPORTING FORM WHERE NAME =
WA_EVENT-NAME.
ENDIF.
ENDFORM. "POPULATE_EVENT
&----
*& Form data_retrieval
&----
retreiving values from the database table ekko
----
FORM DATA_RETRIEVAL.
SELECT EBELN AEDAT BUKRS BSART LIFNR FROM EKKO INTO TABLE IT_EKKO.
ENDFORM. "data_retrieval
&----
*& Form bUild_listheader
&----
text
----
-->I_LISTHEADEtext
----
FORM BUILD_LISTHEADER USING I_LISTHEADER TYPE SLIS_T_LISTHEADER.
DATA HLINE TYPE SLIS_LISTHEADER.
HLINE-INFO = 'this is my first alv pgm'.
HLINE-TYP = 'H'.
ENDFORM. "build_listheader
&----
*& Form display_alv_report
&----
text
----
FORM DISPLAY_ALV_REPORT.
V_REPID = SY-REPID.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM = V_REPID
I_CALLBACK_PF_STATUS_SET = ' '
I_CALLBACK_USER_COMMAND = 'USER_COMMAND'
I_CALLBACK_TOP_OF_PAGE = 'TOP_OF_PAGE'
I_GRID_TITLE = I_TITLE_EKKO
I_GRID_SETTINGS =
IS_LAYOUT = ALV_LAYOUT
IT_FIELDCAT = I_FIELDCAT[]
IT_EXCLUDING =
IT_SPECIAL_GROUPS =
IT_SORT =
IT_FILTER =
IS_SEL_HIDE =
i_default = 'ZLAY1'
I_SAVE = 'A'
is_variant = i_variant
IT_EVENTS = V_EVENTS
TABLES
T_OUTTAB = IT_EKKO
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 TOP_OF_PAGE
&----
text
----
FORM TOP_OF_PAGE.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
IT_LIST_COMMENTARY = IT_LISTHEADER
i_logo =
I_END_OF_LIST_GRID =
.
ENDFORM. "TOP_OF_PAGE
&----
*& Form USER_COMMAND
&----
text
----
-->R_UCOMM text
-->, text
-->RS_SLEFIELDtext
----
FORM USER_COMMAND USING R_UCOMM LIKE SY-UCOMM
RS_SELFIELD TYPE SLIS_SELFIELD.
CASE R_UCOMM.
WHEN '&IC1'.
READ TABLE IT_EKKO INTO WA_EKKO INDEX RS_SELFIELD-TABINDEX.
PERFORM BUILD_FIELDCATLOG_EKPO.
PERFORM EVENT_CALL_EKPO.
PERFORM POPULATE_EVENT_EKPO.
PERFORM DATA_RETRIEVAL_EKPO.
PERFORM BUILD_LISTHEADER_EKPO USING IT_LISTHEADER.
PERFORM DISPLAY_ALV_EKPO.
ENDCASE.
ENDFORM. "user_command
&----
*& Form BUILD_FIELDCATLOG_EKPO
&----
text
----
FORM BUILD_FIELDCATLOG_EKPO.
WA_FIELDCAT-TABNAME = 'IT_EKPO'.
WA_FIELDCAT-FIELDNAME = 'EBELN'.
WA_FIELDCAT-SELTEXT_M = 'PO NO.'.
APPEND WA_FIELDCAT TO I_FIELDCAT.
CLEAR WA_FIELDCAT.
WA_FIELDCAT-TABNAME = 'IT_EKPO'.
WA_FIELDCAT-FIELDNAME = 'EBELP'.
WA_FIELDCAT-SELTEXT_M = 'LINE NO'.
APPEND WA_FIELDCAT TO I_FIELDCAT.
CLEAR WA_FIELDCAT.
WA_FIELDCAT-TABNAME = 'I_EKPO'.
WA_FIELDCAT-FIELDNAME = 'MATNR'.
WA_FIELDCAT-SELTEXT_M = 'MATERIAL NO.'.
APPEND WA_FIELDCAT TO I_FIELDCAT.
CLEAR WA_FIELDCAT.
WA_FIELDCAT-TABNAME = 'I_EKPO'.
WA_FIELDCAT-FIELDNAME = 'MENGE'.
WA_FIELDCAT-SELTEXT_M = 'QUANTITY'.
APPEND WA_FIELDCAT TO I_FIELDCAT.
CLEAR WA_FIELDCAT.
WA_FIELDCAT-TABNAME = 'I_EKPO'.
WA_FIELDCAT-FIELDNAME = 'MEINS'.
WA_FIELDCAT-SELTEXT_M = 'UOM'.
APPEND WA_FIELDCAT TO I_FIELDCAT.
CLEAR WA_FIELDCAT.
WA_FIELDCAT-TABNAME = 'I_EKPO'.
WA_FIELDCAT-FIELDNAME = 'NETPR'.
WA_FIELDCAT-SELTEXT_M = 'PRICE'.
APPEND WA_FIELDCAT TO I_FIELDCAT.
CLEAR WA_FIELDCAT.
ENDFORM. "BUILD_FIELDCATLOG_EKPO
&----
*& Form event_call_ekpo
&----
we get all events - TOP OF PAGE or USER COMMAND in table v_events
----
FORM EVENT_CALL_EKPO.
CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
EXPORTING
I_LIST_TYPE = 0
IMPORTING
ET_EVENTS = V_EVENTS
EXCEPTIONS
LIST_TYPE_WRONG = 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. "event_call_ekpo
&----
*& Form POPULATE_EVENT
&----
Events populated for TOP OF PAGE & USER COMAND
----
FORM POPULATE_EVENT_EKPO.
READ TABLE V_EVENTS INTO WA_EVENT WITH KEY NAME = 'TOP_OF_PAGE'.
IF SY-SUBRC EQ 0.
WA_EVENT-FORM = 'TOP_OF_PAGE'.
MODIFY V_EVENTS FROM WA_EVENT TRANSPORTING FORM WHERE NAME =
WA_EVENT-FORM.
ENDIF.
ENDFORM. "POPULATE_EVENT
&----
*& Form TOP_OF_PAGE
&----
text
----
FORM F_TOP_OF_PAGE.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
IT_LIST_COMMENTARY = IT_LISTHEADER
i_logo =
I_END_OF_LIST_GRID =
.
ENDFORM. "TOP_OF_PAGE
&----
*& Form USER_COMMAND
&----
text
----
-->R_UCOMM text
-->, text
-->RS_SLEFIELDtext
----
*retreiving values from the database table ekko
FORM DATA_RETRIEVAL_EKPO.
SELECT EBELN EBELP MATNR MENGE MEINS NETPR FROM EKPO INTO TABLE IT_EKPO.
ENDFORM.
FORM BUILD_LISTHEADER_EKPO USING I_LISTHEADER TYPE SLIS_T_LISTHEADER.
DATA: HLINE1 TYPE SLIS_LISTHEADER.
HLINE1-TYP = 'H'.
HLINE1-INFO = 'CHECKING PGM'.
ENDFORM.
FORM DISPLAY_ALV_EKPO.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_INTERFACE_CHECK = ' '
I_BYPASSING_BUFFER = ' '
I_BUFFER_ACTIVE = ' '
I_CALLBACK_PROGRAM = V_REPID
I_CALLBACK_PF_STATUS_SET = ' '
I_CALLBACK_USER_COMMAND = 'F_USER_COMMAND'
I_CALLBACK_TOP_OF_PAGE = '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_TITLE_EKPO
I_GRID_SETTINGS =
IS_LAYOUT =
IT_FIELDCAT = I_FIELDCAT[]
IT_EXCLUDING =
IT_SPECIAL_GROUPS =
IT_SORT =
IT_FILTER =
IS_SEL_HIDE =
I_DEFAULT =
I_SAVE = 'A'
IS_VARIANT =
IT_EVENTS = V_EVENTS
TABLES
T_OUTTAB = IT_EKPO
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.
‎2006 Mar 01 10:07 AM
Hi ,
check this code..
first list it will display Sales Order details, if you click on Sales Order it will display corresponding Delivery order details...
REPORT ZTEST_ALV123 .
TYPE-POOLS:SLIS.
DATA : IT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV,
IT_FIELDCAT1 TYPE SLIS_T_FIELDCAT_ALV.
DATA: BEGIN OF ITAB OCCURS 0,
VBELN LIKE VBAK-VBELN,
POSNR LIKE VBAP-POSNR,
END OF ITAB.
DATA: BEGIN OF ITAB1 OCCURS 0,
VBELN LIKE LIKP-VBELN,
POSNR LIKE LIPS-POSNR,
VGBEL LIKE LIPS-VGBEL,
VGPOS LIKE LIPS-VGPOS,
END OF ITAB1.
DATA: IT_LIPS LIKE ITAB1 OCCURS 0 WITH HEADER LINE.
SELECT VBELN
POSNR
UP TO 100 ROWS
FROM VBAP
INTO TABLE ITAB.
IF SY-SUBRC = 0.
SORT ITAB BY VBELN .
SELECT VBELN
POSNR
VGBEL
VGPOS
INTO TABLE ITAB1
FROM LIPS
FOR ALL ENTRIES IN ITAB
WHERE VGBEL = ITAB-VBELN
AND VGPOS = ITAB-POSNR.
ENDIF.
DATA: X_FIELDCAT TYPE SLIS_FIELDCAT_ALV.
X_FIELDCAT-FIELDNAME = 'VBELN'.
X_FIELDCAT-TABNAME = 'ITAB'.
X_FIELDCAT-COL_POS = 1.
APPEND X_FIELDCAT TO IT_FIELDCAT.
CLEAR X_FIELDCAT.
X_FIELDCAT-FIELDNAME = 'POSNR'.
X_FIELDCAT-TABNAME = 'ITAB'.
X_FIELDCAT-COL_POS = 1.
APPEND X_FIELDCAT TO IT_FIELDCAT.
CLEAR X_FIELDCAT.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM = SY-REPID
I_CALLBACK_PF_STATUS_SET = 'PFSTATUS'
I_CALLBACK_USER_COMMAND = 'HANDLE_USER_COMMAND'
IT_FIELDCAT = IT_FIELDCAT
TABLES
T_OUTTAB = ITAB
EXCEPTIONS
PROGRAM_ERROR = 1
OTHERS = 2.
IF SY-SUBRC = 0.
ENDIF.
*&---------------------------------------------------------------------*
*& Form POPUP
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_EXTAB text
*----------------------------------------------------------------------*
FORM POPUP USING P_EXTAB TYPE SLIS_T_EXTAB.
"here double click on PFSTATUS and create the status, "activate, before that set PICK for choose(F2).
*- Pf status
SET PF-STATUS 'PFSTATUS'.
ENDFORM. " POPUP
*&---------------------------------------------------------------------*
*& Form HANDLE_USER_COMMAND
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->R_UCOMM text
* -->RS_SELFIELD text
*----------------------------------------------------------------------*
FORM HANDLE_USER_COMMAND USING R_UCOMM LIKE SY-UCOMM
RS_SELFIELD TYPE SLIS_SELFIELD.
CASE R_UCOMM.
WHEN '&IC1'.
IF RS_SELFIELD-FIELDNAME = 'VBELN'.
READ TABLE ITAB INDEX RS_SELFIELD-TABINDEX.
LOOP AT ITAB1 WHERE VGBEL = ITAB-VBELN
AND VGPOS = ITAB-POSNR.
MOVE-CORRESPONDING ITAB1 TO IT_LIPS.
APPEND IT_LIPS.
ENDLOOP.
PERFORM INTERACTIVE_REPORT.
ENDIF.
ENDCASE.
ENDFORM. "HANDLE_USER_COMMAND
*&---------------------------------------------------------------------*
*& Form interactive_report
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM INTERACTIVE_REPORT .
X_FIELDCAT-FIELDNAME = 'VBELN'.
X_FIELDCAT-SELTEXT_L = 'VBELN'.
X_FIELDCAT-TABNAME = 'IT_LIPS'.
X_FIELDCAT-COL_POS = 1.
APPEND X_FIELDCAT TO IT_FIELDCAT1.
CLEAR X_FIELDCAT.
X_FIELDCAT-FIELDNAME = 'POSNR'.
X_FIELDCAT-SELTEXT_L = 'ITEM'.
X_FIELDCAT-TABNAME = 'IT_LIPS'.
X_FIELDCAT-COL_POS = 2.
APPEND X_FIELDCAT TO IT_FIELDCAT1.
CLEAR X_FIELDCAT.
X_FIELDCAT-FIELDNAME = 'VGBEL'.
X_FIELDCAT-SELTEXT_M = 'SO #'.
X_FIELDCAT-TABNAME = 'IT_LIPS'.
X_FIELDCAT-COL_POS = 3.
APPEND X_FIELDCAT TO IT_FIELDCAT1.
CLEAR X_FIELDCAT.
X_FIELDCAT-FIELDNAME = 'VGPOS'.
X_FIELDCAT-SELTEXT_M = 'SO ITEM'.
X_FIELDCAT-TABNAME = 'IT_LIPS'.
X_FIELDCAT-COL_POS = 4.
APPEND X_FIELDCAT TO IT_FIELDCAT1.
CLEAR X_FIELDCAT.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM = SY-REPID
IT_FIELDCAT = IT_FIELDCAT1
TABLES
T_OUTTAB = IT_LIPS
EXCEPTIONS
PROGRAM_ERROR = 1
OTHERS = 2.
IF SY-SUBRC = 0.
ENDIF.
ENDFORM. " interactive_reportRegards
vijay
‎2006 Mar 07 9:45 AM
kishore,
with the consulting from my PL, she said that we need also to join VBFA for the purpose of solun, now go thru the question again and again and then gimme a solution to aramkuma@in.ibm.com
‎2006 Mar 07 10:09 AM
HI ashok
what details do you want in VBFA table?
you can link VBFA with all VBAP, LIPS , VBRP tables.
VBFA-VBELV = VBAP-VBELN.
VBFA-VBELN = VBRP-VBELN IF VBFA-VBTYP_N = 'M'.-->INVOICE
VBFA-VBELN = LIPS-VBELN IF VBFA-VBTYP_N = 'J'.-->DELIVERY
VBFA-VBELN = VBRP-VBELN IF VBFA-VBTYP_N = 'N'.--> INVOICE CANCELLATION.
REGARDS
KISHORE
‎2006 Mar 07 10:14 AM
<b>if u have a yahoo id, plz gimme so that i can chat u thru to get my solution, mine is ashok_gayu@yahoo.com, u r very close to my solution.....</b>
‎2006 Mar 01 5:41 AM
hi
TRY THIS IT WILL PRINT THE SALES ORDER. WHEN YOU CLICK SALES ORDER IT WILL SHOW DELIVERY ORDER TEHN WHEN YOU CLICK DELIVERY ORDER IT WILL PRINT INVOIC..
REPORT ZKISHDRILL1.
TABLES: VBAK,VBAP,LIKP,LIPS.
DATA: BEGIN OF I_VBAK_VBAP OCCURS 0,
VBELN LIKE VBAK-VBELN,
ERNAM LIKE VBAK-ERNAM,
ERDAT LIKE VBAK-ERDAT,
VKORG LIKE VBAK-VKORG,
VTWEG LIKE VBAK-VTWEG,
SPART LIKE VBAK-SPART,
POSNR LIKE VBAP-POSNR,
MATNR LIKE VBAP-MATNR,
KWMENG LIKE VBAP-KWMENG,
END OF I_VBAK_VBAP.
DATA: BEGIN OF I_LIKP_LIPS OCCURS 0,
VBELN LIKE LIKP-VBELN,
LFART LIKE LIKP-LFART,
LFDAT LIKE LIKP-LFDAT,
POSNR LIKE LIPS~POSNR,
LFIMG LIKE LIPS-LFIMG,
VGBEL LIKE LIPS-VGBEL,
VGPOS LIKE LIPS-VGPOS,
END OF I_LIKP_LIPS.
DATA: BEGIN OF I_VBRK_VBRP OCCURS 0,
VBELN LIKE VBRK-VBELN,
BELNR LIKE VBRK-BELNR,
POSNR LIKE VBRP-POSNR,
NETWR LIKE VBRP-NETWR,
END OF I_VBRK_VBRP.
SELECT-OPTIONS: S_VBELN FOR VBAK-VBELN MATCHCODE OBJECT VMVA OBLIGATORY.
AT SELECTION-SCREEN.
SELECT SINGLE * FROM VBAK WHERE VBELN IN S_VBELN.
IF SY-SUBRC <> 0.
MESSAGE E000(ZER).
ENDIF.
START-OF-SELECTION.
SELECT VBAKVBELN VBAKERNAM VBAKERDAT VBAKVKORG VBAK~VTWEG
VBAKSPART VBAPPOSNR VBAPMATNR VBAPKWMENG INTO TABLE I_VBAK_VBAP
FROM VBAK INNER JOIN VBAP ON VBAKVBELN = VBAPVBELN WHERE VBAK~VBELN
IN S_VBELN.
************************************************************************
AT LINE-SELECTION.
******************************LEVEL1
IF SY-LSIND EQ 1.
SELECT LIKPVBELN LIKPLFART LIKPLFDAT LIPSPOSNR LIPSLFIMG LIPSVGBEL
LIPS~VGPOS INTO TABLE I_LIKP_LIPS FROM LIKP INNER JOIN LIPS ON
LIKPVBELN = LIPSVBELN FOR ALL ENTRIES IN I_VBAK_VBAP WHERE
LIPS~VGBEL = I_VBAK_VBAP-VBELN AND
LIPS~VGPOS = I_VBAK_VBAP-POSNR.
LOOP AT I_LIKP_LIPS.
<b>
<PRINT DELIVERY DETAILS></b>
HIDE I_LIKP_LIPS.
ENDLOOP.
ENDIF.
******************************LEVEL 2
IF SY-LSIND EQ 2.
SELECT VBRKVBELN VBRKBELNR VBRPPOSNR VBRPNETWR FROM INTO TABLE I_VBRK_VBRP FROM VBRK INNER JOIN VBRP ON VBRKVBELN = VBRPVBELN FOR ALL ENTRIES IN I_LIKP_LIPS WHERE VBRP~AUBEL = I_LIKP_LIPS-VBELN AND
VBRP~AUPOS = I_LIKP_LIPS-POSNR.
LOOP AT I_VBRK_VBRP.
<b>
<PRINT INVOICE DETAILS></b>
ENDLOOP.
ENDIF.
IF SY-LSIND GT 2.
MESSAGE W002(ZER).
ENDIF.
************************************************************************
************************************************************************
END-OF-SELECTION.
LOOP AT I_VBAK_VBAP.
<b><PRINT SALES ORDER></b>
HIDE I_VBAK_VBAP.
ENDLOOP.
************************************************************************
TOP-OF-PAGE.
SKIP.
ULINE 5(76).
FORMAT COLOR 1 INTENSIFIED ON.
WRITE:/5 SY-VLINE,6 'SALES NUM', 20 SY-VLINE, 21 'CREATOR', 35
SY-VLINE, 36 'CRET DATE', 48 SY-VLINE, 49 'SALES ORG',
60 SY-VLINE, 61 'SALES WG', 71 SY-VLINE, 72 'SAL DIV',
80 SY-VLINE.
ULINE /5(76).
FORMAT RESET.
TOP-OF-PAGE DURING LINE-SELECTION.
****************************************LEVEL 1
IF SY-LSIND EQ 1.
<b><FOR DELIVERY></b>
ENDIF.
****************************************LEVEL 2
IF SY-LSIND EQ 2.
<b> <FOR INVOICE></b>
ENDIF.
REGARDS
KISHORE
Message was edited by: Harikishore Sreenivasulu
‎2006 Mar 07 9:47 AM
Hi,
If you are thru with data retrieval and you are looking for sample ALV codes,
then go to SE80 and open package SLIS.
You will find sample programs there. Pick the one which suits your requirement and copy it.
Hope this helps..
Regards,
Shashank