Friday, June 6, 2008

To Delete Table Using BDC


TABLES:
dd02l,
bdcdata.
DATA:
fs_tab TYPE dd02l,
t_tab LIKE
STANDARD TABLE OF fs_tab,
t_bdcdata LIKE
STANDARD TABLE
OF bdcdata.
DATA:
t_messages LIKE
STANDARD TABLE
OF bdcmsgcoll.
DATA:
message TYPE bdcmsgcoll,
msg(72) TYPE c.

SELECT-OPTIONS: s_tab FOR dd02l-tabname.
START-OF-SELECTION.
SELECT tabname
FROM dd02l
INTO TABLE t_tab
WHERE tabname IN s_tab .
IF sy-subrc EQ 0.
PERFORM bdc_dynpro USING 'SAPMSRD0' '0102'.
PERFORM bdc_field USING 'BDC_CURSOR'
'RSRD1-TBMA'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=CHANGE_RADIO'.
PERFORM bdc_field USING 'RSRD1-TBMA'
'X'.
PERFORM bdc_field USING 'RSRD1-TBMA_VAL'
'TADIR'.
PERFORM bdc_dynpro USING 'SAPMSRD0' '0102'.
PERFORM bdc_field USING 'BDC_CURSOR'
'RSRD1-TBMA_VAL'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=DELE'.
PERFORM bdc_field USING 'RSRD1-TBMA'
'X'.
PERFORM bdc_field USING 'RSRD1-TBMA_VAL'
'yit_exam1'.
PERFORM bdc_dynpro USING 'SAPLSPO1' '0100'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=YES'.
PERFORM bdc_dynpro USING 'SAPMSRD0' '0102'.
PERFORM bdc_field USING 'BDC_CURSOR'
'RSRD1-TBMA_VAL'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=BACK'.
PERFORM bdc_field USING 'RSRD1-TBMA'
'X'.
PERFORM bdc_field USING 'RSRD1-TBMA_VAL'
'YIT_EXAM1'.
CALL TRANSACTION 'SE11' USING t_bdcdata MODE 'N'
MESSAGES INTO t_messages.
LOOP AT t_messages INTO message.
CALL FUNCTION 'FORMAT_MESSAGE'
EXPORTING
id = message-msgid
lang = 'EN'
no = message-msgnr
v1 = message-msgv1
v2 = message-msgv2
v3 = message-msgv3
v4 = message-msgv4
IMPORTING
msg = msg
EXCEPTIONS
not_found = 1
OTHERS = 2.
IF sy-subrc EQ 0.
WRITE / msg.
ENDIF.
ENDLOOP.
ELSE.
WRITE: 'Not Deleted'.
ENDIF.
*---------------------------------------------------------------------*
* Form bdc_dynpro
*---------------------------------------------------------------------*
* text
*---------------------------------------------------------------------*
* --> pv_prog BDC module pool
* --> pv_screen BDC Screen number
*---------------------------------------------------------------------*
FORM bdc_dynpro USING value(pv_prog)
value(pv_screen).
CLEAR bdcdata.
bdcdata-program = pv_prog.
bdcdata-dynpro = pv_screen.
bdcdata-dynbegin = 'X'.
APPEND bdcdata TO t_bdcdata.
ENDFORM. " bdc_dynpro
*---------------------------------------------------------------------*
* Form bdc_field
*---------------------------------------------------------------------*
* text
*---------------------------------------------------------------------*
* --> pv_fname Field name
* --> pv_fval BDC field value
*---------------------------------------------------------------------*
FORM bdc_field USING value(pv_fname)
value(pv_fval).
CLEAR bdcdata.
bdcdata-fnam = pv_fname.
bdcdata-fval = pv_fval.
APPEND bdcdata TO t_bdcdata.
ENDFORM. " bdc_field

ALV List - Auto Refresh list

Source : http://www.geocities.com/mpioud

TYPE-POOLS: slis. " ALV Global Types

DATA :
gt_user LIKE uinfo OCCURS 0 WITH HEADER LINE. " User info in SM04

*---------------------------------------------------------------------*
START-OF-SELECTION.

PERFORM f_read_data.

PERFORM f_display_data.

*---------------------------------------------------------------------*
* Form F_LIRE_DATA
*---------------------------------------------------------------------*
FORM f_read_data.

REFRESH gt_user.

* Get User's info
CALL FUNCTION 'THUSRINFO'
TABLES
usr_tabl = gt_user.

* Wait in a task
PERFORM f_call_rfc_wait.

ENDFORM. " F_READ_DATA

*---------------------------------------------------------------------*
* Form F_DISPLAY_DATA
*---------------------------------------------------------------------*
FORM f_display_data.

DEFINE m_sort.
add 1 to ls_sort-spos.
ls_sort-fieldname = &1.
append ls_sort to lt_sort.
END-OF-DEFINITION.

DEFINE m_event_exit.
clear ls_event_exit.
ls_event_exit-ucomm = &1.
ls_event_exit-after = 'X'.
append ls_event_exit to lt_event_exit.
END-OF-DEFINITION.

DATA :
ls_layout TYPE slis_layout_alv,
lt_sort TYPE slis_t_sortinfo_alv,
ls_sort TYPE slis_sortinfo_alv,
lt_event_exit TYPE slis_t_event_exit,
ls_event_exit TYPE slis_event_exit.
* Build Sort Table
m_sort 'ZEIT'.
* Build Event Exit Table
m_event_exit '&NTE'. " Refresh
ls_layout-zebra = 'X'.
ls_layout-colwidth_optimize = 'X'.

CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
EXPORTING
i_callback_program = sy-cprog
i_callback_user_command = 'USER_COMMAND'
is_layout = ls_layout
i_structure_name = 'UINFO'
it_sort = lt_sort
it_event_exit = lt_event_exit
TABLES
t_outtab = gt_user.
ENDFORM. " F_DISPLAY_DATA

*---------------------------------------------------------------------*
* FORM USER_COMMAND *
*---------------------------------------------------------------------*
FORM user_command USING i_ucomm TYPE syucomm
is_selfield TYPE slis_selfield. "#EC CALLED

CASE i_ucomm.
WHEN '&NTE'.
PERFORM f_read_data.
is_selfield-refresh = 'X'.
SET USER-COMMAND '&OPT'. " Optimize columns width
ENDCASE.

ENDFORM. " USER_COMMAND
*---------------------------------------------------------------------*
* Form F_CALL_RFC_WAIT
*---------------------------------------------------------------------*
FORM f_call_rfc_wait.

DATA lv_mssg(80). "#EC NEEDED

* Wait in a task
CALL FUNCTION 'RFC_PING_AND_WAIT' STARTING NEW TASK '001'
PERFORMING f_task_end ON END OF TASK
EXPORTING
seconds = 5 " Refresh time
busy_waiting = space
EXCEPTIONS
RESOURCE_FAILURE = 1
communication_failure = 2 MESSAGE lv_mssg
system_failure = 3 MESSAGE lv_mssg
OTHERS = 4.

ENDFORM. " F_CALL_RFC_WAIT
*---------------------------------------------------------------------*
* Form F_TASK_END
*---------------------------------------------------------------------*
FORM f_task_end USING u_taskname.

DATA lv_mssg(80). "#EC NEEDED

* Receiving task results
RECEIVE RESULTS FROM FUNCTION 'RFC_PING_AND_WAIT'
EXCEPTIONS
RESOURCE_FAILURE = 1
communication_failure = 2 MESSAGE lv_mssg
system_failure = 3 MESSAGE lv_mssg
OTHERS = 4.

CHECK sy-subrc EQ 0.
SET USER-COMMAND '&NTE'. " Refresh

ENDFORM. " F_TASK_END

E-mail an Abap report

Source: http://www.geocities.com/mpioud

DATA : w_name TYPE sos04-l_adr_name.

SELECT-OPTIONS :
* Recipient address
s_name FOR w_name DEFAULT sy-uname NO INTERVALS.

*---------------------------------------------------------------------*
START-OF-SELECTION.

* E-mail Abap report
PERFORM f_send_mail.

*---------------------------------------------------------------------*
* Form f_send_mail
*---------------------------------------------------------------------*
FORM f_send_mail.

* Data Declaration
DATA:
l_datum(10),
ls_docdata TYPE sodocchgi1,
ls_objpack TYPE sopcklsti1,
lt_objpack TYPE TABLE OF sopcklsti1,
lt_objhead TYPE TABLE OF solisti1,
ls_objtxt TYPE solisti1,
lt_objtxt TYPE TABLE OF solisti1,
ls_objbin TYPE solisti1,
lt_objbin TYPE TABLE OF solisti1,
ls_reclist TYPE somlreci1,
lt_reclist TYPE TABLE OF somlreci1,
lt_listobject TYPE TABLE OF abaplist,

l_tab_lines TYPE i,
l_att_type TYPE soodk-objtp.

WRITE sy-datum TO l_datum.
IF sy-saprl >= '700'.
SUBMIT bcalv_fullscreen_demo_classic
EXPORTING LIST TO MEMORY AND RETURN.
ELSE.
* List of Users According to Logon Date and Password Change
* NOTE: Create ALI/OTF Document in Spool
SUBMIT rsusr200 WITH valid = 'X'
WITH notvalid = space
WITH unlocked = 'X'
WITH locked = space
EXPORTING LIST TO MEMORY AND RETURN.
ENDIF.

* Read list from memory into table
CALL FUNCTION 'LIST_FROM_MEMORY'
TABLES
listobject = lt_listobject
EXCEPTIONS
not_found = 1
OTHERS = 2.

IF sy-subrc <> 0.
* Error in function module &1
MESSAGE ID '61' TYPE 'E' NUMBER '731'
WITH 'LIST_FROM_MEMORY'.
ENDIF.

* Because listobject is of size RAW(1000)
* and objbin is of size CHAR(255) we make this table copy
CALL FUNCTION 'TABLE_COMPRESS'
TABLES
in = lt_listobject
out = lt_objbin
EXCEPTIONS
compress_error = 1
OTHERS = 2.

IF sy-subrc <> 0.
* Error in function module &1
MESSAGE ID '61' TYPE 'E' NUMBER '731'
WITH 'TABLE_COMPRESS'.
ENDIF.

* NOTE: Creation of attachment is finished yet.
* For your report, the attachment should be placed into table
* objtxt for plain text or
* objbin for binary content.
* Now create the message and send the document.
* Create Message Body
* Title and Description
ls_docdata-obj_name = 'USERS_LIST'.
CONCATENATE 'List of Users' sy-sysid '-' l_datum "#EC *
INTO ls_docdata-obj_descr SEPARATED BY space.

* Main Text
ls_objtxt = 'List of Users According to Logon Date' &
' and Password Change'. "#EC *
APPEND ls_objtxt TO lt_objtxt.
* Write Packing List (Main)
DESCRIBE TABLE lt_objtxt LINES l_tab_lines.
READ TABLE lt_objtxt INDEX l_tab_lines INTO ls_objtxt.
ls_docdata-doc_size = ( l_tab_lines - 1 ) * 255 + STRLEN( ls_objtxt ).
CLEAR ls_objpack-transf_bin.
ls_objpack-head_start = 1.
ls_objpack-head_num = 0.
ls_objpack-body_start = 1.
ls_objpack-body_num = l_tab_lines.
ls_objpack-doc_type = 'RAW'.
APPEND ls_objpack TO lt_objpack.

* Create Message Attachment
* Write Packing List (Attachment)
l_att_type = 'ALI'.
DESCRIBE TABLE lt_objbin LINES l_tab_lines.
READ TABLE lt_objbin INDEX l_tab_lines INTO ls_objbin.
ls_objpack-doc_size = ( l_tab_lines - 1 ) * 255 + STRLEN( ls_objbin ).
ls_objpack-transf_bin = 'X'.
ls_objpack-head_start = 1.
ls_objpack-head_num = 0.
ls_objpack-body_start = 1.
ls_objpack-body_num = l_tab_lines.
ls_objpack-doc_type = l_att_type.
ls_objpack-obj_name = 'ATTACHMENT'.
ls_objpack-obj_descr = 'List_of_Users'. "#EC *
APPEND ls_objpack TO lt_objpack.

* Create receiver list
LOOP AT s_name.
ls_reclist-receiver = s_name-low.
ls_reclist-rec_type = 'B'.
APPEND ls_reclist TO lt_reclist.
ENDLOOP.

* Send Message
CALL FUNCTION 'SO_NEW_DOCUMENT_ATT_SEND_API1'
EXPORTING
document_data = ls_docdata
put_in_outbox = 'X'
TABLES
packing_list = lt_objpack
object_header = lt_objhead
contents_bin = lt_objbin
contents_txt = lt_objtxt
receivers = lt_reclist
EXCEPTIONS
too_many_receivers = 1
document_not_sent = 2
document_type_not_exist = 3
operation_no_authorization = 4
parameter_error = 5
x_error = 6
enqueue_error = 7
OTHERS = 8.

IF sy-subrc = 0.
* Document sent
MESSAGE ID 'SO' TYPE 'S' NUMBER '022'.
ELSE.
* Document <&> could not be sent
MESSAGE ID 'SO' TYPE 'S' NUMBER '023'
WITH ls_docdata-obj_name.
ENDIF.

ENDFORM. " F_SEND_MAIL

Thursday, June 5, 2008

Simple ALV Tree structure program

TYPE-POOLS : fibs,stree.
DATA : t_node TYPE snodetext.

DATA : it_node LIKE TABLE OF t_node,
wa_node LIKE t_node.

*Internal Table declarations
DATA: BEGIN OF fs_scarr,
carrid LIKE scarr-carrid,
END OF fs_scarr.

DATA:BEGIN OF fs_spfli,
carrid LIKE spfli-carrid,
connid LIKE spfli-connid,
END OF fs_spfli.

DATA:BEGIN OF fs_sflight,
carrid LIKE sflight-carrid,
connid LIKE sflight-connid,
fldate LIKE sflight-fldate,
END OF fs_sflight.

DATA:BEGIN OF fs_sbook,
carrid LIKE sbook-carrid,
connid LIKE sbook-connid,
fldate LIKE sbook-fldate,
bookid LIKE sbook-bookid,
END OF fs_sbook.

DATA:t_scarr LIKE TABLE OF fs_scarr,
t_spfli LIKE TABLE OF fs_spfli,
t_sflight LIKE TABLE OF fs_sflight,
t_sbook LIKE TABLE OF fs_sbook.
********************************************************
START-OF-SELECTION.
PERFORM get_data.
PERFORM build_tree.
PERFORM display_tree.
*&---------------------------------------------------------------------*
*& Form get_data
*&---------------------------------------------------------------------*
FORM get_data .

SELECT carrid
FROM scarr
INTO TABLE t_scarr.

SELECT carrid
connid
FROM spfli
INTO TABLE t_spfli
FOR ALL ENTRIES IN t_scarr
WHERE carrid EQ t_scarr-carrid.

SELECT carrid
connid
fldate
FROM sflight
INTO TABLE t_sflight
FOR ALL ENTRIES IN t_spfli
WHERE carrid EQ t_spfli-carrid
AND connid EQ t_spfli-connid.

SELECT carrid
connid
fldate
bookid
FROM sbook
INTO TABLE t_sbook
FOR ALL ENTRIES IN t_sflight
WHERE carrid EQ t_sflight-carrid
AND connid EQ t_sflight-connid
AND fldate EQ t_sflight-fldate.

ENDFORM. " get_data
*&---------------------------------------------------------------------*
*& Form build_tree
*----------------------------------------------------------------------*

FORM build_tree .
CLEAR: it_node,
wa_node.

SORT: t_scarr BY carrid,
t_spfli BY carrid connid,
t_sflight BY carrid connid fldate,
t_sbook BY carrid connid fldate bookid.

wa_node-type = 'T'.
wa_node-name = 'Flight Details'.
wa_node-tlevel = '01'.
wa_node-nlength = '15'.
wa_node-color = '4'.
wa_node-text = 'Flight'.
wa_node-tlength ='20'.
wa_node-tcolor = 3.
APPEND wa_node TO it_node.
CLEAR wa_node.

LOOP AT t_scarr INTO fs_scarr.

wa_node-type = 'P'.
wa_node-name = 'CARRID'.
wa_node-tlevel = '02'.
wa_node-nlength = '8'.
wa_node-color = '1'.
wa_node-text = fs_scarr-carrid.
wa_node-tlength ='20'.
wa_node-tcolor = 4.
APPEND wa_node TO it_node.
CLEAR wa_node.

LOOP AT t_spfli INTO fs_spfli WHERE carrid EQ fs_scarr-carrid.
wa_node-type = 'P'.
wa_node-name = 'CONNID'.
wa_node-tlevel = '03'.
wa_node-nlength = '8'.
wa_node-color = '1'.
wa_node-text = fs_spfli-connid.
wa_node-tlength ='20'.
wa_node-tcolor = 4.
APPEND wa_node TO it_node.
CLEAR wa_node.

LOOP AT t_sflight INTO fs_sflight WHERE carrid EQ fs_spfli-carrid
AND connid EQ fs_spfli-connid.

wa_node-type = 'P'.
wa_node-name = 'FLDATE'.
wa_node-tlevel = '04'.
wa_node-nlength = '8'.
wa_node-color = '3'.
wa_node-text = fs_sflight-fldate.
wa_node-tlength ='20'.
wa_node-tcolor = 4.
APPEND wa_node TO it_node.
CLEAR wa_node.

LOOP AT t_sbook INTO fs_sbook WHERE carrid EQ fs_sflight-carrid
AND connid EQ fs_sflight-connid
AND fldate EQ fs_sflight-fldate.
wa_node-type = 'P'.
wa_node-name = 'BOOkID'.
wa_node-tlevel = '05'.
wa_node-nlength = '8'.
wa_node-color = '1'.
wa_node-text = fs_sbook-bookid.
wa_node-tlength ='20'.
wa_node-tcolor = 4.
APPEND wa_node TO it_node.
CLEAR wa_node.

ENDLOOP.
ENDLOOP.
ENDLOOP.
ENDLOOP.

ENDFORM. " build_tree
*&---------------------------------------------------------------------*
*& Form display_tree
*----------------------------------------------------------------------*

FORM display_tree .

CALL FUNCTION 'RS_TREE_CONSTRUCT'
* EXPORTING
* INSERT_ID = '000000'
* RELATIONSHIP = ' '
* LOG = LOG
TABLES
nodetab = it_node
* EXCEPTIONS
* TREE_FAILURE = 1
* ID_NOT_FOUND = 2
* WRONG_RELATIONSHIP = 3
.

CALL FUNCTION 'RS_TREE_LIST_DISPLAY'
EXPORTING
callback_program = sy-repid
check_duplicate_name = '1'
color_of_node = '4'
color_of_mark = '3'
color_of_link = '1'
color_of_match = '5'
node_length = 30
text_length = 75
use_control = stree_use_list
* IMPORTING
* F15 = F15
.

ENDFORM. " display_tree

Interactive ALV and colouring the cells

TYPE-POOLS:slis.

DATA:w_repid LIKE sy-repid.
DATA:fs_layout TYPE slis_layout_alv.

DATA: t_fieldcat TYPE slis_t_fieldcat_alv,
fs_fieldcat TYPE slis_fieldcat_alv,
t_fieldcat1 TYPE slis_t_fieldcat_alv,
fs_fieldcat1 TYPE slis_fieldcat_alv.
DATA:
t_eventcat TYPE slis_t_event,
w_eventcat LIKE LINE OF t_eventcat.

**********Structure and internal table for basic alv*
DATA:BEGIN OF fs_string,
color(3),
checkbox,
cell TYPE slis_t_specialcol_alv,
carrid LIKE spfli-carrid,
connid LIKE spfli-connid,
countryfr LIKE spfli-countryfr,
countryto LIKE spfli-countryto,
END OF fs_string.

DATA:t_spfli LIKE TABLE OF fs_string.
***************************************************
DATA:BEGIN OF fs_string1,
carrid LIKE sflight-carrid,
connid LIKE sflight-connid,
fldate LIKE sflight-fldate,
paymentsum LIKE sflight-paymentsum,
END OF fs_string1.

DATA:t_sflight LIKE TABLE OF fs_string1.

DATA:fs_cell LIKE LINE OF fs_string-cell.

PERFORM get_data.
PERFORM prepare_fieldcatalog.
PERFORM t_eventcat1.
PERFORM display_output.

*&---------------------------------------------------------------------*
*& Form prepare_fieldcatalog
*&---------------------------------------------------------------------*
* Fill the Fieldcatalog
*----------------------------------------------------------------------*
FORM prepare_fieldcatalog .

fs_fieldcat-col_pos = 1.
fs_fieldcat-fieldname = 'CARRID'.
fs_fieldcat-seltext_m = 'Airlinecarrier'.
fs_fieldcat-key = 'X'.
fs_fieldcat-hotspot = 'X'.
APPEND fs_fieldcat TO t_fieldcat.
CLEAR fs_fieldcat.

fs_fieldcat-col_pos = 2.
fs_fieldcat-fieldname = 'CONNID'.
fs_fieldcat-seltext_m = 'Connectionid'.
APPEND fs_fieldcat TO t_fieldcat.
CLEAR fs_fieldcat.

fs_fieldcat-col_pos = 3.
fs_fieldcat-fieldname = 'COUNTRYFR'.
fs_fieldcat-seltext_m = 'Countryfrom'.
APPEND fs_fieldcat TO t_fieldcat.
CLEAR fs_fieldcat.

fs_fieldcat-col_pos = 4.
fs_fieldcat-fieldname = 'COUNTRYTO'.
fs_fieldcat-seltext_m = 'Countryto'.
APPEND fs_fieldcat TO t_fieldcat.
CLEAR fs_fieldcat.

LOOP AT t_spfli INTO fs_string WHERE carrid EQ 'AA'.
fs_cell-fieldname = 'CONNID'.
fs_cell-color-col = 5.
fs_cell-nokeycol = 'X'.

APPEND fs_cell TO fs_string-cell.

MODIFY t_spfli FROM fs_string TRANSPORTING cell.
ENDLOOP.

fs_layout-info_fieldname = 'COLOR'.
fs_layout-box_fieldname = 'CHECKBOX'.
fs_layout-coltab_fieldname = 'CELL'.

ENDFORM. " prepare_fieldcatalog
*&---------------------------------------------------------------------*
*& Form get_data
*&---------------------------------------------------------------------*
* get data from database to internal table
*----------------------------------------------------------------------*
FORM get_data .

SELECT carrid
connid
countryfr
countryto
FROM spfli
INTO CORRESPONDING FIELDS OF TABLE t_spfli.

w_repid = sy-repid.

ENDFORM. " get_data

*&---------------------------------------------------------------------*
*& Form DISPLAY_OUTPUT
*----------------------------------------------------------------------*
* Display ALV
*----------------------------------------------------------------------*
FORM display_output .
CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
EXPORTING

i_callback_program = w_repid
i_callback_user_command = 'PICK'
is_layout = fs_layout
it_fieldcat = t_fieldcat[]
TABLES
t_outtab = t_spfli
* EXCEPTIONS
* PROGRAM_ERROR = 1
.

ENDFORM. " DISPLAY_OUTPUT

*&---------------------------------------------------------------------*
*& Form pick
*----------------------------------------------------------------------*
* -->COMMAND text
* -->ENDFORM text
*----------------------------------------------------------------------*
FORM pick USING command LIKE sy-ucomm
selfield TYPE slis_selfield.

READ TABLE t_spfli INTO fs_string INDEX selfield-tabindex.
CLEAR t_fieldcat1[].

CASE command.

WHEN '&IC1'.
SELECT carrid
connid
fldate
paymentsum
FROM sflight
INTO TABLE t_sflight
WHERE carrid = fs_string-carrid
AND connid = fs_string-connid.

fs_fieldcat1-col_pos = 1.
fs_fieldcat1-fieldname = 'CARRID'.
fs_fieldcat1-seltext_m = 'Airlinecarrier'.
fs_fieldcat1-key = 'X'.
fs_fieldcat1-hotspot = 'X'.
APPEND fs_fieldcat1 TO t_fieldcat1.
CLEAR fs_fieldcat1.

fs_fieldcat1-col_pos = 2.
fs_fieldcat1-fieldname = 'CONNID'.
fs_fieldcat1-seltext_m = 'Connectionid'.
APPEND fs_fieldcat1 TO t_fieldcat1.
CLEAR fs_fieldcat1.

fs_fieldcat1-col_pos = 3.
fs_fieldcat1-fieldname = 'FLDATE'.
fs_fieldcat1-seltext_m = 'Countryfrom'.
APPEND fs_fieldcat1 TO t_fieldcat1.
CLEAR fs_fieldcat1.

fs_fieldcat1-col_pos = 4.
fs_fieldcat1-fieldname = 'PAYMENTSUM'.
fs_fieldcat1-seltext_m = 'Countryto'.
APPEND fs_fieldcat1 TO t_fieldcat1.
CLEAR fs_fieldcat1.

CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
EXPORTING
i_callback_program = w_repid
it_fieldcat = t_fieldcat1[]
it_events = t_eventcat
TABLES
t_outtab = t_sflight
* EXCEPTIONS
* PROGRAM_ERROR = 1
.

ENDCASE.

ENDFORM. "pick

*&---------------------------------------------------------------------*
*& Form T_EVENTCAT
*&---------------------------------------------------------------------*
* This subtoutine is which captures the event that is to be triggered
*----------------------------------------------------------------------*
FORM t_eventcat1.

w_eventcat-name = 'TOP_OF_PAGE'.
w_eventcat-form = 'TOP'.
APPEND w_eventcat TO t_eventcat.

ENDFORM. "T_EVENTCAT
*&---------------------------------------------------------------------*
*& Form TOP
*&---------------------------------------------------------------------*
* To display TOP OF PAGE
* it displays the carried id selected to display.
*----------------------------------------------------------------------*
FORM top.

READ TABLE t_sflight INTO fs_string1 INDEX 1.
WRITE:/'CARRIER ID'(001),
30 fs_string-carrid.
EndForm.

Firsr step in alv-simple program

**mandatory Fields required for alv

TYPE-POOLS:slis.

DATA:w_repid LIKE sy-repid.

DATA:fs_layout TYPE slis_layout_alv.

DATA: t_fieldcat TYPE slis_t_fieldcat_alv,
fs_fieldcat TYPE slis_fieldcat_alv.
*********************************************
DATA:BEGIN OF fs_string,
carrid LIKE spfli-carrid,
connid LIKE spfli-connid,
countryfr LIKE spfli-countryfr,
countryto LIKE spfli-countryto,
END OF fs_string.
DATA:t_spfli LIKE TABLE OF fs_string.


PERFORM get_data.
PERFORM prepare_fieldcatalog.
PERFORM display_output.


*&---------------------------------------------------------------------*
*& Form prepare_fieldcatalog
*&---------------------------------------------------------------------*
* Fills data to the fieldcatalaog
*----------------------------------------------------------------------*
FORM prepare_fieldcatalog .


fs_fieldcat-col_pos = 1.
fs_fieldcat-fieldname = 'CARRID'.
fs_fieldcat-seltext_m = 'Airlinecarrier'.
fs_fieldcat-key = 'X'.
fs_fieldcat-hotspot = 'X'.
APPEND fs_fieldcat TO t_fieldcat.
CLEAR fs_fieldcat.


fs_fieldcat-col_pos = 2.
fs_fieldcat-fieldname = 'CONNID'.
fs_fieldcat-seltext_m = 'Connectionid'.
APPEND fs_fieldcat TO t_fieldcat.
CLEAR fs_fieldcat.


fs_fieldcat-col_pos = 3.
fs_fieldcat-fieldname = 'COUNTRYFR'.
fs_fieldcat-seltext_m = 'Countryfrom'.
APPEND fs_fieldcat TO t_fieldcat.
CLEAR fs_fieldcat.


fs_fieldcat-col_pos = 4.
fs_fieldcat-fieldname = 'COUNTRYTO'.
fs_fieldcat-seltext_m = 'Countryto'.
APPEND fs_fieldcat TO t_fieldcat.
CLEAR fs_fieldcat.


ENDFORM. " prepare_fieldcatalog


*&---------------------------------------------------------------------*
*& Form get_data
*&---------------------------------------------------------------------*
* Fetch data from database table to internal table
*----------------------------------------------------------------------*
FORM get_data .


SELECT carrid
connid
countryfr
countryto
FROM spfli
INTO CORRESPONDING FIELDS OF TABLE t_spfli.
w_repid = sy-repid.

ENDFORM. " get_data
*&---------------------------------------------------------------------*
*& Form DISPLAY_OUTPUT
*----------------------------------------------------------------------*
* Function module to display ALV
*----------------------------------------------------------------------*
FORM display_output .


CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
EXPORTING
i_callback_program = w_repid
it_fieldcat = t_fieldcat[]
TABLES
t_outtab = t_spfli
* EXCEPTIONS
* PROGRAM_ERROR = 1
.
Endform.