‎2008 May 30 8:18 AM
hai, i am new to abap can you plz give the real time report program on material using alvs ? plz give with requirement?
‎2008 May 30 8:26 AM
hi look at development class 'SLIS' (in SE80 ).
this class with examples of ALV.
‎2008 May 30 8:37 AM
Check the below sample code :
TYPE-POOLS: slis.
TABLES: vbap.
TYPES : BEGIN OF t_vbap,
vbeln TYPE vbeln_va,
posnr TYPE posnr,
matnr TYPE matnr,
charg TYPE charg_d,
matkl TYPE matkl,
meins TYPE meins,
brgew TYPE brgew,
ntgew TYPE ntgew,
gewei TYPE gewei,
* col(4) TYPE c,
END OF t_vbap.
DATA: i_vbap TYPE STANDARD TABLE OF t_vbap,
wa_vbap TYPE t_vbap,
wa_vbap_fc TYPE slis_fieldcat_alv,
i_vbap_fc TYPE STANDARD TABLE OF slis_fieldcat_alv,
wa_layout TYPE slis_layout_alv,
i_layout TYPE slis_layout_alv,
it_events TYPE slis_t_event,
wa_events TYPE slis_alv_event.
*DATA: i_index TYPE sytabix.
SELECTION-SCREEN: BEGIN OF BLOCK b1 WITH FRAME TITLE text-002.
SELECT-OPTIONS: s_vbeln FOR vbap-vbeln.
SELECTION-SCREEN: END OF BLOCK b1.
SELECT vbeln
posnr
matnr
charg
matkl
meins
brgew
ntgew
gewei
FROM vbap
INTO TABLE i_vbap
WHERE vbeln IN s_vbeln.
wa_events-name = 'TOP_OF_PAGE'.
wa_events-form = 'TOP_OF_PAGE'.
APPEND wa_events TO it_events.
wa_events-name = 'END_OF_LIST'.
wa_events-form = 'END_OF_LIST'.
APPEND wa_events TO it_events.
wa_events-name = 'USER_COMMAND'.
wa_events-form = 'USER_COMMAND'.
APPEND wa_events TO it_events.
wa_vbap_fc-col_pos = '1'.
wa_vbap_fc-fieldname = 'VBELN'.
wa_vbap_fc-tabname = 'i_vbap'.
wa_vbap_fc-seltext_l = 'Sales Document' .
wa_vbap_fc-hotspot = 'X'.
wa_vbap_fc-emphasize = 'C110'.
APPEND wa_vbap_fc TO i_vbap_fc.
CLEAR wa_vbap_fc.
wa_vbap_fc-col_pos = '2'.
wa_vbap_fc-fieldname = 'POSNR'.
wa_vbap_fc-tabname = 'i_vbap_fc'.
wa_vbap_fc-seltext_l = 'Sales Document Item' .
*WA_VBAP_FC-HOTSPOT = 'X'.
wa_vbap_fc-emphasize = 'C210'.
APPEND wa_vbap_fc TO i_vbap_fc.
CLEAR wa_vbap_fc.
wa_vbap_fc-col_pos = '3'.
wa_vbap_fc-fieldname = 'MATNR'.
wa_vbap_fc-seltext_l = 'Material Number' .
wa_vbap_fc-tabname = 'i_vbap_fc'.
*WA_VBAP_FC-HOTSPOT = 'X'.
wa_vbap_fc-emphasize = 'C310'.
APPEND wa_vbap_fc TO i_vbap_fc.
CLEAR wa_vbap_fc.
wa_vbap_fc-col_pos = '4'.
wa_vbap_fc-fieldname = 'CHARG'.
wa_vbap_fc-seltext_l = 'Batch Number' .
wa_vbap_fc-tabname = 'i_vbap_fc'.
*WA_VBAP_FC-HOTSPOT = 'X'.
wa_vbap_fc-emphasize = 'C410'.
APPEND wa_vbap_fc TO i_vbap_fc.
CLEAR wa_vbap_fc.
wa_vbap_fc-col_pos = '5'.
wa_vbap_fc-fieldname = 'MATKL'.
wa_vbap_fc-seltext_l = 'Material group' .
wa_vbap_fc-tabname = 'i_vbap_fc'.
*WA_VBAP_FC-HOTSPOT = 'X'.
wa_vbap_fc-emphasize = 'C510'.
APPEND wa_vbap_fc TO i_vbap_fc.
CLEAR wa_vbap_fc.
wa_vbap_fc-col_pos = '6'.
wa_vbap_fc-fieldname = 'MEINS'.
wa_vbap_fc-seltext_l = 'Base Unit of Measure' .
wa_vbap_fc-tabname = 'i_vbap_fc'.
*WA_VBAP_FC-HOTSPOT = 'X'.
wa_vbap_fc-emphasize = 'C610'.
APPEND wa_vbap_fc TO i_vbap_fc.
CLEAR wa_vbap_fc.
wa_vbap_fc-col_pos = '7'.
wa_vbap_fc-fieldname = 'BRGEW'.
wa_vbap_fc-seltext_l = 'Gross Weight of the Item' .
wa_vbap_fc-tabname = 'i_vbap_fc'.
*WA_VBAP_FC-HOTSPOT = 'X'.
wa_vbap_fc-emphasize = 'C710'.
APPEND wa_vbap_fc TO i_vbap_fc.
CLEAR wa_vbap_fc.
wa_vbap_fc-col_pos = '8'.
wa_vbap_fc-fieldname = 'NTGEW'.
wa_vbap_fc-tabname = 'i_vbap_fc'.
wa_vbap_fc-seltext_l = 'Net Weight' .
*WA_VBAP_FC-HOTSPOT = 'X'.
wa_vbap_fc-emphasize = 'C100'.
APPEND wa_vbap_fc TO i_vbap_fc.
CLEAR wa_vbap_fc.
wa_vbap_fc-col_pos = '9'.
wa_vbap_fc-fieldname = 'GEWEI'.
wa_vbap_fc-seltext_l = 'Weight Unit' .
wa_vbap_fc-tabname = 'i_vbap_fc'.
*WA_VBAP_FC-HOTSPOT = 'X'.
wa_vbap_fc-emphasize = 'C300'.
APPEND wa_vbap_fc TO i_vbap_fc.
CLEAR wa_vbap_fc.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
* I_INTERFACE_CHECK = ' '
* I_BYPASSING_BUFFER = ' '
* I_BUFFER_ACTIVE = ' '
i_callback_program = sy-repid
* I_CALLBACK_PF_STATUS_SET = ' '
* I_CALLBACK_USER_COMMAND = ' '
* i_callback_top_of_page = 'HEADER'
* 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 = wa_layout
it_fieldcat = i_vbap_fc
* IT_EXCLUDING =
* IT_SPECIAL_GROUPS =
* IT_SORT =
* IT_FILTER =
* IS_SEL_HIDE =
* I_DEFAULT = 'X'
* I_SAVE = ' '
* IS_VARIANT =
it_events = 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 = i_vbap
* 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.
*INCLUDE zpsalv1_187_get_dataf01.
*&---------------------------------------------------------------------*
*& Form TOP_OF_PAGE
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM top_of_page.
DATA: t_header TYPE slis_t_listheader,
wa_header TYPE slis_listheader.
* Title
wa_header-typ = 'H'.
wa_header-info = 'Order Table Report'.
* wa_header-col = 'C100'.
APPEND wa_header TO t_header.
CLEAR wa_header.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
it_list_commentary = t_header
i_logo = 'Z_CAP_LOGO'
* I_END_OF_LIST_GRID =
* I_ALV_FORM =
.
ENDFORM. "TOP_OF_PAGE
*&---------------------------------------------------------------------*
*& Form END_OF_LIST
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM end_of_list.
DATA: t_header TYPE slis_t_listheader,
wa_header TYPE slis_listheader.
CLEAR wa_header.
* Title
wa_header-typ = 'H'.
wa_header-info = 'Order Table Report FOOTER'.
* wa_header-col = 'C100'.
APPEND wa_header TO t_header.
CLEAR wa_header.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
it_list_commentary = t_header
i_logo = 'Z_CAP_LOGO'
* I_END_OF_LIST_GRID =
* I_ALV_FORM =
.
ENDFORM. "END_OF_LIST
*&---------------------------------------------------------------------*
*& Form USER_COMMAND
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->R_UCOMM text
* -->RS_SELFIELD text
*----------------------------------------------------------------------*
FORM user_command USING r_ucomm LIKE sy-ucomm
rs_selfield TYPE slis_selfield.
CASE r_ucomm.
WHEN '&IC1'.
CASE rs_selfield-sel_tab_field.
WHEN 'i_vbap-VBELN'.
SET PARAMETER ID 'AUN' FIELD rs_selfield-value.
CALL TRANSACTION 'VA02'.
ENDCASE.
ENDCASE.
ENDFORM. "USER_COMMANDRegards,
Raghu
‎2008 May 30 8:57 AM
Hi, you can refer to the following's code for an example on how to use ALV It's a simple ALV ... Please reward if you find it useful. Thanks..
REPORT zexample_alv .
Declare type-pools, tables and infotypes
TYPE-POOLS: slis.
TABLES: pernr.
INFOTYPES: 0001, 0002.
----
DATA
----
DATA: l_date(11) TYPE c,
l_gender(7) TYPE c.
DATA: l_line TYPE i VALUE 0.
TYPES: BEGIN OF t_emp,
pernr TYPE pa0002-pernr,
werks TYPE pa0001-werks, "personnel area
btrtl TYPE pa0001-btrtl, "personnel subarea
nachn TYPE pa0002-nachn, "last name
vorna TYPE pa0002-vorna, "first name
gesch(7) TYPE c, "gender
gbdat(11) TYPE c, "birth date
ftext TYPE fatxt, "marital status
END OF t_emp.
DATA: li_emp TYPE STANDARD TABLE OF t_emp INITIAL SIZE 0.
DATA: wa_emp TYPE t_emp.
To build ALV
DATA : wa_layout TYPE slis_layout_alv,
li_fieldcat TYPE slis_t_fieldcat_alv,
wa_fieldcat TYPE slis_fieldcat_alv.
&----
*& AT SELECTION-SCREEN
&----
START-OF-SELECTION.
GET pernr.
IF p0002-natio NE 'US'.
REJECT.
ENDIF.
----
pernr
----
wa_emp-pernr = pernr-pernr.
----
infotype 0001
----
wa_emp-werks = p0001-werks.
wa_emp-btrtl = p0001-btrtl.
----
infotype 0002
----
wa_emp-nachn = p0002-nachn.
wa_emp-vorna = p0002-vorna.
PERFORM format_gender USING p0002-gesch CHANGING l_gender.
wa_emp-gesch = l_gender.
birth date
IF p0002-gbdat <> ''.
PERFORM format_date USING p0002-gbdat CHANGING l_date.
wa_emp-gbdat = l_date.
ENDIF.
marital status
SELECT SINGLE ftext
INTO wa_emp-ftext
FROM t502t
WHERE famst EQ p0002-famst
AND sprsl EQ sy-langu.
append work area into itab
APPEND wa_emp TO li_emp.
CLEAR wa_emp.
END-OF-SELECTION.
DESCRIBE TABLE li_emp LINES l_line.
IF l_line GE 0.
PERFORM: build_layout,
build_fieldcat,
write_report.
ELSE.
MESSAGE e001(00) WITH 'No record found'.
ENDIF.
&----
*& Form format_date
&----
text
----
-->P_L_DATE text
<--P_L_DATE2 text
----
FORM format_date USING p_l_date
CHANGING p_l_date_format.
DATA: l_month(3) TYPE c.
CASE p_l_date+4(2).
WHEN '01'.
l_month = 'JAN'.
WHEN '02'.
l_month = 'FEB'.
WHEN '03'.
l_month = 'MAR'.
WHEN '04'.
l_month = 'APR'.
WHEN '05'.
l_month = 'MAY'.
WHEN '06'.
l_month = 'JUN'.
WHEN '07'.
l_month = 'JUL'.
WHEN '08'.
l_month = 'AUG'.
WHEN '09'.
l_month = 'SEP'.
WHEN '10'.
l_month = 'OCT'.
WHEN '11'.
l_month = 'NOV'.
WHEN '12'.
l_month = 'DEC'.
ENDCASE.
CONCATENATE p_l_date6(2) '-' l_month '-' p_l_date0(4) INTO
p_l_date_format.
ENDFORM. " format_date
&----
*& Form format_gender
&----
text
----
-->P_L_GENDER text
<--P_L_GENDER2 text
----
FORM format_gender USING p_l_gender
CHANGING p_l_gender_format.
IF p_l_gender = '1'.
p_l_gender_format = 'Male'.
ELSEIF p_l_gender = '2'.
p_l_gender_format = 'Female'.
ELSE.
p_l_gender_format = 'Unknown'.
ENDIF.
ENDFORM. " format_gender
&----
*& Form write_itab
&----
text
----
--> p1 text
<-- p2 text
----
FORM write_itab .
LOOP AT li_emp INTO wa_emp.
WRITE: / sy-tabix, ') ', wa_emp-pernr, wa_emp-nachn, wa_emp-vorna,
wa_emp-gesch, wa_emp-gbdat, wa_emp-ftext.
ENDLOOP.
ENDFORM. " write_itab
&----
*& Form build_layout
&----
text
----
--> p1 text
<-- p2 text
----
FORM build_layout.
wa_layout-colwidth_optimize = 'X'.
wa_layout-zebra = 'X'.
wa_layout-no_input = 'X'.
wa_layout-window_titlebar = sy-title.
ENDFORM. "build_layout
&----
*& Form build_fieldcat
&----
text
----
--> p1 text
<-- p2 text
----
FORM build_fieldcat .
Assign variables to Table gt_fieldcat
PERFORM : build_fieldcat_assign USING '1' 'PERNR' 'Employee Number',
build_fieldcat_assign USING '2' 'WERKS' 'Personnel Area',
build_fieldcat_assign USING '3' 'BTRTL' 'Personnel Subarea',
build_fieldcat_assign USING '4' 'NACHN' 'Last Name',
build_fieldcat_assign USING '5' 'VORNA' 'First Name',
build_fieldcat_assign USING '6' 'GESCH' 'Gender',
build_fieldcat_assign USING '7' 'GBDAT' 'Birth Date',
build_fieldcat_assign USING '8' 'FTEXT' 'Marital Status'.
ENDFORM. " build_fieldcat
&----
*& Form build_fieldcat_assign
&----
text
----
-->P_0334 text
-->P_0335 text
-->P_0336 text
-->P_0337 text
----
FORM build_fieldcat_assign USING l_col_pos
l_fieldname
l_seltext_l.
wa_fieldcat-col_pos = l_col_pos.
wa_fieldcat-fieldname = l_fieldname.
wa_fieldcat-seltext_l = l_seltext_l.
Append and Clear
APPEND wa_fieldcat TO li_fieldcat.
CLEAR wa_fieldcat.
ENDFORM. " build_fieldcat_assign
&----
*& Form write_report
&----
text
----
--> p1 text
<-- p2 text
----
FORM write_report .
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
is_layout = wa_layout
it_fieldcat = li_fieldcat
I_SAVE = ' '
IMPORTING
E_EXIT_CAUSED_BY_CALLER =
ES_EXIT_CAUSED_BY_USER =
TABLES
t_outtab = li_emp
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. " write_report