Showing posts with label ALV. Show all posts
SAP abap program to send message by randy teh
12:46 AM
*&---------------------------------------------------------------------*
*& Report YMSG_RANDY
*&
*&---------------------------------------------------------------------*
*& Copy right Randy Teh 2015July15
*& To have customized table to store chat log
*& Can view the last message history
*&---------------------------------------------------------------------*
REPORT YMSG_RANDY.
TABLES: ztab_randy.
TABLES: sscrfields.
*----------------------------------------------------------------------*
* Local class for report
*----------------------------------------------------------------------*
CLASS lcl_report DEFINITION.
PUBLIC SECTION.
DATA: t_data TYPE STANDARD TABLE OF ztab_randy.
METHODS:
get_data,
generate_output.
ENDCLASS. "lcl_report DEFINITION
*----------------------------------------------------------------------*
* Local class for events
*----------------------------------------------------------------------*
CLASS lcl_handle_events DEFINITION.
PUBLIC SECTION.
METHODS:
on_user_command FOR EVENT added_function OF cl_salv_events
IMPORTING e_salv_function.
ENDCLASS. "lcl_report DEFINITION
TYPES: BEGIN OF y_ztab_randy,
mandt TYPE mandt, "primary
UNAME TYPE SYUNAME, "primary
send_time TYPE SYUZEIT, "primary
send_date TYPE SYDATUM, "primary
chatid TYPE char10,
send_msg TYPE text255,
END OF y_ztab_randy.
TYPE-POOLS: icon.
DATA: wa_ztab TYPE y_ztab_randy,
cl_columns TYPE REF TO cl_salv_columns_table,
cl_column TYPE REF TO cl_salv_column_table,
cl_not_found TYPE REF TO cx_salv_not_found.
DATA: lo_report TYPE REF TO lcl_report.
DATA: gr_events TYPE REF TO cl_salv_events_table.
DATA: event_handler TYPE REF TO lcl_handle_events.
DATA: lo_dock TYPE REF TO cl_gui_docking_container,
lo_cont TYPE REF TO cl_gui_container,
lo_alv TYPE REF TO cl_salv_table.
PARAMETERS : CLIENT LIKE SY-MANDT.
PARAMETERS : USER LIKE SY-UNAME OBLIGATORY.
PARAMETERS : CHATID TYPE CHAR10.
PARAMETERS : MESSAGE LIKE SM04DIC-POPUPMSG LOWER CASE.
PARAMETERS : MSG_LEN LIKE SY-INDEX."MESSAGE_LEN LIKE SY-INDEX.
PARAMETERS : CUT_BLKS LIKE SY-LANGU."CUT_BLANKS LIKE SY-LANGU.
SELECTION-SCREEN BEGIN OF LINE.
* Add buttons to application toolbar
SELECTION-SCREEN FUNCTION KEY 1. "Will have a function code of 'FC01'
SELECTION-SCREEN FUNCTION KEY 2. "Will have a function code of 'FC01'
SELECTION-SCREEN END OF LINE.
PARAMETER: p_ucomm LIKE sy-ucomm NO-DISPLAY.
INITIALIZATION.
* Add displayed text string to buttons
MOVE 'REFRESH' TO sscrfields-functxt_01.
MOVE 'song' TO sscrfields-functxt_02.
CLIENT = SY-MANDT.
USER = SY-UNAME.
MSG_LEN = SY-INDEX."MESSAGE_LEN LIKE SY-INDEX.
CUT_BLKS = SY-LANGU."CUT_BLANKS LIKE SY-LANGU.
CREATE OBJECT lo_report.
* generate output
lo_report->get_data( ).
lo_report->generate_output( ).
DATA: wa_usr41 TYPE usr41.
SELECT * FROM USR41 CLIENT SPECIFIED INTO wa_usr41.
ENDSELECT.
AT SELECTION-SCREEN.
* Check if button have been selected or not
IF sscrfields-ucomm EQ 'FC01'.
p_ucomm = 'BUTN1'.
ELSEIF sscrfields-ucomm EQ 'FC02'.
p_ucomm = 'BUTN2'.
ELSE.
CLEAR p_ucomm.
ENDIF.
AT SELECTION-SCREEN OUTPUT.
IF p_ucomm = 'BUTN1'.
MESSAGE 'cant refresh' TYPE 'I' DISPLAY LIKE 'I'.
LEAVE TO TRANSACTION 'YMSG'.
ELSEIF p_ucomm = 'BUTN2'.
MESSAGE 'SONG LAH' TYPE 'I' DISPLAY LIKE 'I'.
ENDIF.
at selection-screen on value-request for USER.
PERFORM F_SEARCHHELP.
START-OF-SELECTION.
PERFORM f_collect_data.
TRANSLATE chatid TO UPPER CASE.
IF chatid eq 'DELETE123'.
DELETE FROM ztab_randy.
lo_report->GET_DATA( ).
ELSE.
CALL FUNCTION 'TH_POPUP'
EXPORTING
CLIENT = CLIENT
USER = USER
MESSAGE = MESSAGE
* MESSAGE_LEN = 0
* CUT_BLANKS = ' '
* EXCEPTIONS
* USER_NOT_FOUND = 1
* OTHERS = 2
.
IF SY-SUBRC <> 0.
* Implement suitable error handling here
ELSE.
TRANSLATE wa_ztab-uname TO UPPER CASE.
IF wa_ztab-chatid <> 'JUNIOR ZAI' .
wa_ztab-chatid = text-001.
ENDIF.
INSERT INTO ztab_randy VALUES wa_ztab.
lo_report->get_data( ).
ENDIF.
ENDIF.
END-OF-SELECTION.
*&---------------------------------------------------------------------*
*& Form F_COLELCT_DATA
*&---------------------------------------------------------------------*
FORM f_collect_data.
wa_ztab-mandt = client.
wa_ztab-uname = sy-uname.
wa_ztab-chatid = chatid.
wa_ztab-send_msg = message.
wa_ztab-send_time = sy-uzeit.
wa_ztab-send_date = sy-datum.
ENDFORM. "f_collect_data
*&---------------------------------------------------------------------*
*& Form F_SEARCHHELP
*&---------------------------------------------------------------------*
FORM F_SEARCHHELP .
TABLES: usr02.
data:
begin of t_BNAME occurs 0,
BNAME like USR02-BNAME,
TRDAT TYPE XULDATE,
LTIME TYPE XULTIME,
"maktx like makt-maktx,
end of t_BNAME,
t_values type DYNPREAD occurs 0 WITH HEADER LINE,
v_prog like D020S-PROG.
TYPES: BEGIN OF X_RETURN .
INCLUDE STRUCTURE DDSHRETVAL. "Search help structure
TYPES: END OF X_RETURN.
data: l_dynpprog type sy-repid,
l_dynnr type sy-dynnr,
l_dynprofld TYPE help_info-dynprofld.
data: RETURN_TAB TYPE STANDARD TABLE OF X_RETURN WITH HEADER LINE.
v_prog = sy-repid.
REFRESH: t_values.
CLEAR: t_values.
t_values-fieldname = 'USER'.
APPEND t_VALUES.
* CALL FUNCTION 'DYNP_VALUES_READ'
* EXPORTING
* dyname = v_prog
* dynumb = '1000'
* TRANSLATE_TO_UPPER = ' '
* REQUEST = ' '
* PERFORM_CONVERSION_EXITS = ' '
* PERFORM_INPUT_CONVERSION = ' '
* DETERMINE_LOOP_INDEX = ' '
* TABLES
* dynpfields = t_values.
* IF sy-subrc = 0.
* READ TABLE T_VALUES INDEX 1.
* IF SY-SUBRC = 0.
SELECT BNAME TRDAT LTIME FROM usr02 INTO t_BNAME "to get recent login of the day
where USTYP = 'A' AND
TRDAT = SY-DATUM.
APPEND T_BNAME.
ENDSELECT.
if sy-subrc = 0.
l_dynpprog = sy-repid.
l_dynnr = sy-dynnr.
l_dynprofld = 'BNAME' .
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
retfield = 'BNAME'
DYNPPROG = l_dynpprog
DYNPNR = l_dynnr
DYNPROFIELD = l_dynprofld
VALUE_ORG = 'S'
TABLES
value_tab = t_BNAME
RETURN_TAB = RETURN_TAB.
* IF sy-subrc = 0.
* IF NOT RETURN_TAB[] IS INITIAL.
* READ TABLE RETURN_TAB INDEX 1.
* IF SY-SUBRC = 0.
* T_BNAME = RETURN_TAB-FIELDVAL.
* ENDIF.
* ENDIF.
* ENDIF.
ENDIF.
* ENDIF.
* ENDIF.
ENDFORM. "F_SEARCHHELP
*----------------------------------------------------------------------*
* Local Class Implementation
*----------------------------------------------------------------------*
CLASS lcl_report IMPLEMENTATION.
*
METHOD get_data.
* data selection
SELECT * FROM ztab_randy
INTO TABLE me->t_data
WHERE send_date = sy-datum ORDER BY send_date send_time DESCENDING.
IF sy-dbcnt IS INITIAL.
MESSAGE s398(00) WITH 'No data selected'.
ENDIF.
* export to memory
EXPORT data = me->t_data TO MEMORY ID sy-cprog.
ENDMETHOD. "get_data
METHOD generate_output.
* import output table from the memory and free afterwards
IMPORT data = me->t_data FROM MEMORY ID sy-cprog.
FREE MEMORY ID sy-cprog.
* Only if there is some data
CHECK me->t_data IS NOT INITIAL.
IF lo_dock IS NOT INITIAL.
lo_dock->free( ).
ENDIF.
* Create a docking control at bottom
* CHECK lo_dock IS INITIAL.
CREATE OBJECT lo_dock
EXPORTING
repid = sy-cprog
dynnr = sy-dynnr
ratio = 80
side = cl_gui_docking_container=>dock_at_bottom
name = 'DOCK_CONT'.
IF sy-subrc <> 0.
MESSAGE 'Error in the Docking control' TYPE 'S'.
ENDIF.
lo_dock->set_height( height = '340' ).
* Create a SALV for output
* CHECK lo_alv IS INITIAL.
TRY.
* Narrow Casting: To initialize custom container from
* docking container
lo_cont ?= lo_dock.
* SALV Table Display on the Docking container
CALL METHOD cl_salv_table=>factory
EXPORTING
list_display = if_salv_c_bool_sap=>false
r_container = lo_cont
container_name = 'DOCK_CONT'
IMPORTING
r_salv_table = lo_alv
CHANGING
t_table = me->t_data.
CATCH cx_salv_msg .
ENDTRY.
* Pf status
DATA: lo_functions TYPE REF TO cl_salv_functions_list.
lo_functions = lo_alv->get_functions( ).
lo_functions->set_default( abap_true ).
lo_functions->add_function(
name = '&REF'
icon = '@42@'
* text =
tooltip = 'Refresh'
position = if_salv_c_function_position=>right_of_salv_functions ).
* Set event
gr_events = lo_alv->get_event( ).
CREATE OBJECT event_handler.
SET HANDLER event_handler->on_user_command FOR gr_events.
PERFORM set_column_setting USING lo_alv.
* output display
lo_alv->display( ).
ENDMETHOD. "generate_output
ENDCLASS. "lcl_report IMPLEMENTATION
*----------------------------------------------------------------------*
* Local Class Implementation
*----------------------------------------------------------------------*
CLASS lcl_handle_events IMPLEMENTATION.
METHOD on_user_command.
CASE e_salv_function.
WHEN '&REF'.
lo_report->get_data( ).
lo_report->generate_output( ).
ENDCASE.
ENDMETHOD. "on_user_command
ENDCLASS.
FORM set_column_setting USING lo_alv TYPE REF TO cl_salv_table.
DATA: v_text TYPE string.
DATA:lv_scrtext_s TYPE dd04t-scrtext_s,
lv_scrtext_m TYPE dd04t-scrtext_m,
lv_scrtext_l TYPE dd04t-scrtext_l.
cl_columns = lo_alv->get_columns( ).
cl_columns->set_optimize( abap_true ).
*
* TRY.
* cl_columns->set_cell_type_column( 'CELLTAB' ).
* CATCH cx_salv_data_error. "#EC NO_HANDLER
* ENDTRY.
TRY.
* cl_column ?= cl_columns->get_column( 'TABNAME' ).
* cl_column->set_cell_type( if_salv_c_cell_type=>hotspot ).
cl_column ?= cl_columns->get_column( 'CHATID' ).
lv_scrtext_s = lv_scrtext_m = lv_scrtext_l = 'CHAT ID'.
cl_column->set_short_text( lv_scrtext_s ).
cl_column->set_medium_text( lv_scrtext_m ).
cl_column->set_long_text( lv_scrtext_l ).
CATCH cx_salv_not_found INTO cl_not_found.
CLEAR: v_text.
v_text = cl_not_found->get_text( ).
* MESSAGE v_text TYPE c_i.
ENDTRY.
ENDFORM. "set_column_setting
*& Report YMSG_RANDY
*&
*&---------------------------------------------------------------------*
*& Copy right Randy Teh 2015July15
*& To have customized table to store chat log
*& Can view the last message history
*&---------------------------------------------------------------------*
REPORT YMSG_RANDY.
TABLES: ztab_randy.
TABLES: sscrfields.
*----------------------------------------------------------------------*
* Local class for report
*----------------------------------------------------------------------*
CLASS lcl_report DEFINITION.
PUBLIC SECTION.
DATA: t_data TYPE STANDARD TABLE OF ztab_randy.
METHODS:
get_data,
generate_output.
ENDCLASS. "lcl_report DEFINITION
*----------------------------------------------------------------------*
* Local class for events
*----------------------------------------------------------------------*
CLASS lcl_handle_events DEFINITION.
PUBLIC SECTION.
METHODS:
on_user_command FOR EVENT added_function OF cl_salv_events
IMPORTING e_salv_function.
ENDCLASS. "lcl_report DEFINITION
TYPES: BEGIN OF y_ztab_randy,
mandt TYPE mandt, "primary
UNAME TYPE SYUNAME, "primary
send_time TYPE SYUZEIT, "primary
send_date TYPE SYDATUM, "primary
chatid TYPE char10,
send_msg TYPE text255,
END OF y_ztab_randy.
TYPE-POOLS: icon.
DATA: wa_ztab TYPE y_ztab_randy,
cl_columns TYPE REF TO cl_salv_columns_table,
cl_column TYPE REF TO cl_salv_column_table,
cl_not_found TYPE REF TO cx_salv_not_found.
DATA: lo_report TYPE REF TO lcl_report.
DATA: gr_events TYPE REF TO cl_salv_events_table.
DATA: event_handler TYPE REF TO lcl_handle_events.
DATA: lo_dock TYPE REF TO cl_gui_docking_container,
lo_cont TYPE REF TO cl_gui_container,
lo_alv TYPE REF TO cl_salv_table.
PARAMETERS : CLIENT LIKE SY-MANDT.
PARAMETERS : USER LIKE SY-UNAME OBLIGATORY.
PARAMETERS : CHATID TYPE CHAR10.
PARAMETERS : MESSAGE LIKE SM04DIC-POPUPMSG LOWER CASE.
PARAMETERS : MSG_LEN LIKE SY-INDEX."MESSAGE_LEN LIKE SY-INDEX.
PARAMETERS : CUT_BLKS LIKE SY-LANGU."CUT_BLANKS LIKE SY-LANGU.
SELECTION-SCREEN BEGIN OF LINE.
* Add buttons to application toolbar
SELECTION-SCREEN FUNCTION KEY 1. "Will have a function code of 'FC01'
SELECTION-SCREEN FUNCTION KEY 2. "Will have a function code of 'FC01'
SELECTION-SCREEN END OF LINE.
PARAMETER: p_ucomm LIKE sy-ucomm NO-DISPLAY.
INITIALIZATION.
* Add displayed text string to buttons
MOVE 'REFRESH' TO sscrfields-functxt_01.
MOVE 'song' TO sscrfields-functxt_02.
CLIENT = SY-MANDT.
USER = SY-UNAME.
MSG_LEN = SY-INDEX."MESSAGE_LEN LIKE SY-INDEX.
CUT_BLKS = SY-LANGU."CUT_BLANKS LIKE SY-LANGU.
CREATE OBJECT lo_report.
* generate output
lo_report->get_data( ).
lo_report->generate_output( ).
DATA: wa_usr41 TYPE usr41.
SELECT * FROM USR41 CLIENT SPECIFIED INTO wa_usr41.
ENDSELECT.
AT SELECTION-SCREEN.
* Check if button have been selected or not
IF sscrfields-ucomm EQ 'FC01'.
p_ucomm = 'BUTN1'.
ELSEIF sscrfields-ucomm EQ 'FC02'.
p_ucomm = 'BUTN2'.
ELSE.
CLEAR p_ucomm.
ENDIF.
AT SELECTION-SCREEN OUTPUT.
IF p_ucomm = 'BUTN1'.
MESSAGE 'cant refresh' TYPE 'I' DISPLAY LIKE 'I'.
LEAVE TO TRANSACTION 'YMSG'.
ELSEIF p_ucomm = 'BUTN2'.
MESSAGE 'SONG LAH' TYPE 'I' DISPLAY LIKE 'I'.
ENDIF.
at selection-screen on value-request for USER.
PERFORM F_SEARCHHELP.
START-OF-SELECTION.
PERFORM f_collect_data.
TRANSLATE chatid TO UPPER CASE.
IF chatid eq 'DELETE123'.
DELETE FROM ztab_randy.
lo_report->GET_DATA( ).
ELSE.
CALL FUNCTION 'TH_POPUP'
EXPORTING
CLIENT = CLIENT
USER = USER
MESSAGE = MESSAGE
* MESSAGE_LEN = 0
* CUT_BLANKS = ' '
* EXCEPTIONS
* USER_NOT_FOUND = 1
* OTHERS = 2
.
IF SY-SUBRC <> 0.
* Implement suitable error handling here
ELSE.
TRANSLATE wa_ztab-uname TO UPPER CASE.
IF wa_ztab-chatid <> 'JUNIOR ZAI' .
wa_ztab-chatid = text-001.
ENDIF.
INSERT INTO ztab_randy VALUES wa_ztab.
lo_report->get_data( ).
ENDIF.
ENDIF.
END-OF-SELECTION.
*&---------------------------------------------------------------------*
*& Form F_COLELCT_DATA
*&---------------------------------------------------------------------*
FORM f_collect_data.
wa_ztab-mandt = client.
wa_ztab-uname = sy-uname.
wa_ztab-chatid = chatid.
wa_ztab-send_msg = message.
wa_ztab-send_time = sy-uzeit.
wa_ztab-send_date = sy-datum.
ENDFORM. "f_collect_data
*&---------------------------------------------------------------------*
*& Form F_SEARCHHELP
*&---------------------------------------------------------------------*
FORM F_SEARCHHELP .
TABLES: usr02.
data:
begin of t_BNAME occurs 0,
BNAME like USR02-BNAME,
TRDAT TYPE XULDATE,
LTIME TYPE XULTIME,
"maktx like makt-maktx,
end of t_BNAME,
t_values type DYNPREAD occurs 0 WITH HEADER LINE,
v_prog like D020S-PROG.
TYPES: BEGIN OF X_RETURN .
INCLUDE STRUCTURE DDSHRETVAL. "Search help structure
TYPES: END OF X_RETURN.
data: l_dynpprog type sy-repid,
l_dynnr type sy-dynnr,
l_dynprofld TYPE help_info-dynprofld.
data: RETURN_TAB TYPE STANDARD TABLE OF X_RETURN WITH HEADER LINE.
v_prog = sy-repid.
REFRESH: t_values.
CLEAR: t_values.
t_values-fieldname = 'USER'.
APPEND t_VALUES.
* CALL FUNCTION 'DYNP_VALUES_READ'
* EXPORTING
* dyname = v_prog
* dynumb = '1000'
* TRANSLATE_TO_UPPER = ' '
* REQUEST = ' '
* PERFORM_CONVERSION_EXITS = ' '
* PERFORM_INPUT_CONVERSION = ' '
* DETERMINE_LOOP_INDEX = ' '
* TABLES
* dynpfields = t_values.
* IF sy-subrc = 0.
* READ TABLE T_VALUES INDEX 1.
* IF SY-SUBRC = 0.
SELECT BNAME TRDAT LTIME FROM usr02 INTO t_BNAME "to get recent login of the day
where USTYP = 'A' AND
TRDAT = SY-DATUM.
APPEND T_BNAME.
ENDSELECT.
if sy-subrc = 0.
l_dynpprog = sy-repid.
l_dynnr = sy-dynnr.
l_dynprofld = 'BNAME' .
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
retfield = 'BNAME'
DYNPPROG = l_dynpprog
DYNPNR = l_dynnr
DYNPROFIELD = l_dynprofld
VALUE_ORG = 'S'
TABLES
value_tab = t_BNAME
RETURN_TAB = RETURN_TAB.
* IF sy-subrc = 0.
* IF NOT RETURN_TAB[] IS INITIAL.
* READ TABLE RETURN_TAB INDEX 1.
* IF SY-SUBRC = 0.
* T_BNAME = RETURN_TAB-FIELDVAL.
* ENDIF.
* ENDIF.
* ENDIF.
ENDIF.
* ENDIF.
* ENDIF.
ENDFORM. "F_SEARCHHELP
*----------------------------------------------------------------------*
* Local Class Implementation
*----------------------------------------------------------------------*
CLASS lcl_report IMPLEMENTATION.
*
METHOD get_data.
* data selection
SELECT * FROM ztab_randy
INTO TABLE me->t_data
WHERE send_date = sy-datum ORDER BY send_date send_time DESCENDING.
IF sy-dbcnt IS INITIAL.
MESSAGE s398(00) WITH 'No data selected'.
ENDIF.
* export to memory
EXPORT data = me->t_data TO MEMORY ID sy-cprog.
ENDMETHOD. "get_data
METHOD generate_output.
* import output table from the memory and free afterwards
IMPORT data = me->t_data FROM MEMORY ID sy-cprog.
FREE MEMORY ID sy-cprog.
* Only if there is some data
CHECK me->t_data IS NOT INITIAL.
IF lo_dock IS NOT INITIAL.
lo_dock->free( ).
ENDIF.
* Create a docking control at bottom
* CHECK lo_dock IS INITIAL.
CREATE OBJECT lo_dock
EXPORTING
repid = sy-cprog
dynnr = sy-dynnr
ratio = 80
side = cl_gui_docking_container=>dock_at_bottom
name = 'DOCK_CONT'.
IF sy-subrc <> 0.
MESSAGE 'Error in the Docking control' TYPE 'S'.
ENDIF.
lo_dock->set_height( height = '340' ).
* Create a SALV for output
* CHECK lo_alv IS INITIAL.
TRY.
* Narrow Casting: To initialize custom container from
* docking container
lo_cont ?= lo_dock.
* SALV Table Display on the Docking container
CALL METHOD cl_salv_table=>factory
EXPORTING
list_display = if_salv_c_bool_sap=>false
r_container = lo_cont
container_name = 'DOCK_CONT'
IMPORTING
r_salv_table = lo_alv
CHANGING
t_table = me->t_data.
CATCH cx_salv_msg .
ENDTRY.
* Pf status
DATA: lo_functions TYPE REF TO cl_salv_functions_list.
lo_functions = lo_alv->get_functions( ).
lo_functions->set_default( abap_true ).
lo_functions->add_function(
name = '&REF'
icon = '@42@'
* text =
tooltip = 'Refresh'
position = if_salv_c_function_position=>right_of_salv_functions ).
* Set event
gr_events = lo_alv->get_event( ).
CREATE OBJECT event_handler.
SET HANDLER event_handler->on_user_command FOR gr_events.
PERFORM set_column_setting USING lo_alv.
* output display
lo_alv->display( ).
ENDMETHOD. "generate_output
ENDCLASS. "lcl_report IMPLEMENTATION
*----------------------------------------------------------------------*
* Local Class Implementation
*----------------------------------------------------------------------*
CLASS lcl_handle_events IMPLEMENTATION.
METHOD on_user_command.
CASE e_salv_function.
WHEN '&REF'.
lo_report->get_data( ).
lo_report->generate_output( ).
ENDCASE.
ENDMETHOD. "on_user_command
ENDCLASS.
FORM set_column_setting USING lo_alv TYPE REF TO cl_salv_table.
DATA: v_text TYPE string.
DATA:lv_scrtext_s TYPE dd04t-scrtext_s,
lv_scrtext_m TYPE dd04t-scrtext_m,
lv_scrtext_l TYPE dd04t-scrtext_l.
cl_columns = lo_alv->get_columns( ).
cl_columns->set_optimize( abap_true ).
*
* TRY.
* cl_columns->set_cell_type_column( 'CELLTAB' ).
* CATCH cx_salv_data_error. "#EC NO_HANDLER
* ENDTRY.
TRY.
* cl_column ?= cl_columns->get_column( 'TABNAME' ).
* cl_column->set_cell_type( if_salv_c_cell_type=>hotspot ).
cl_column ?= cl_columns->get_column( 'CHATID' ).
lv_scrtext_s = lv_scrtext_m = lv_scrtext_l = 'CHAT ID'.
cl_column->set_short_text( lv_scrtext_s ).
cl_column->set_medium_text( lv_scrtext_m ).
cl_column->set_long_text( lv_scrtext_l ).
CATCH cx_salv_not_found INTO cl_not_found.
CLEAR: v_text.
v_text = cl_not_found->get_text( ).
* MESSAGE v_text TYPE c_i.
ENDTRY.
ENDFORM. "set_column_setting
ABAP: copy alv variant to another program
2:29 AM
*&---------------------------------------------------------------------*
*& Report ZTEST1
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
* from this site
* http://scn.sap.com/thread/3200295
REPORT ZTEST1.
TYPE-POOLS: slis.
TABLES : LTDXT.
PARAMETERS: P_REP LIKE SY-REPID,
P_REP2 LIKE SY-REPID.
DATA : T_VAR TYPE STANDARD TABLE OF LTVARIANT,
L_VAR TYPE LTVARIANT.
DATA: LS_VARKEY LIKE LTDXKEY.
DATA: LS_VARIANT LIKE DISVARIANT.
DATA: LT_DBFIELDCAT LIKE LTDXDATA OCCURS 0 WITH HEADER LINE.
DATA: LT_DBSORTINFO LIKE LTDXDATA OCCURS 0 WITH HEADER LINE.
DATA: LT_DBFILTER LIKE LTDXDATA OCCURS 0 WITH HEADER LINE.
DATA: LT_DBLAYOUT LIKE LTDXDATA OCCURS 0 WITH HEADER LINE.
DATA: LT_FCAT TYPE SLIS_T_FIELDCAT_ALV.
DATA: L_LAYOUT TYPE SLIS_LAYOUT_ALV.
RANGES: LR_REPORT FOR LTDX-REPORT.
LR_REPORT-SIGN = 'I'.
LR_REPORT-OPTION = 'EQ'.
LR_REPORT-LOW = P_REP.
APPEND LR_REPORT.
CALL FUNCTION 'LT_VARIANTS_READ_FROM_LTDX'
EXPORTING
I_TOOL = 'LT'
I_TEXT = 'X'
TABLES
ET_VARIANTS = T_VAR
IT_RA_REPORT = LR_REPORT
EXCEPTIONS
NOT_FOUND = 1
OTHERS = 2.
IF SY-SUBRC <> 0.
* Implement suitable error handling here
ENDIF.
*
LOOP AT T_VAR INTO L_VAR.
MOVE-CORRESPONDING L_VAR TO LS_VARKEY.
CALL FUNCTION 'LT_DBDATA_READ_FROM_LTDX'
EXPORTING
I_TOOL = 'LT'
IS_VARKEY = LS_VARKEY
TABLES
T_DBFIELDCAT = LT_DBFIELDCAT
T_DBSORTINFO = LT_DBSORTINFO
T_DBFILTER = LT_DBFILTER
T_DBLAYOUT = LT_DBLAYOUT
EXCEPTIONS
NOT_FOUND = 1
WRONG_RELID = 2
OTHERS = 3.
IF SY-SUBRC <> 0.
* Implement suitable error handling here
ENDIF.
*
MOVE-CORRESPONDING L_VAR TO LS_VARIANT.
LS_VARKEY-REPORT = P_REP2.
LS_VARIANT-REPORT = P_REP2.
CALL FUNCTION 'LT_DBDATA_WRITE_TO_LTDX'
EXPORTING
I_TOOL = 'LT'
IS_VARKEY = LS_VARKEY
IS_VARIANT = LS_VARIANT
TABLES
T_DBFIELDCAT = LT_DBFIELDCAT
T_DBSORTINFO = LT_DBSORTINFO
T_DBFILTER = LT_DBFILTER
T_DBLAYOUT = LT_DBLAYOUT
EXCEPTIONS
NOT_FOUND = 1
WRONG_RELID = 2
OTHERS = 3.
IF SY-SUBRC <> 0.
ELSE.
MOVE-CORRESPONDING LS_VARKEY TO LTDXT.
LTDXT-RELID = 'LT'.
LTDXT-LANGU = SY-LANGU.
LTDXT-TEXT = LS_VARIANT-TEXT.
INSERT LTDXT.
IF SY-SUBRC NE 0.
UPDATE LTDXT.
ENDIF.
ENDIF.
ENDLOOP.
Sample ALV Grid program using the function module REUSE_ALV_GRID_DISPLAY
7:40 PMSample ALV Grid program using the function module REUSE_ALV_GRID_DISPLAY
By Vikram Chellappa, Mouri Tech Solutions
*&---------------------------------------------------------------------* *& Report ZALV_REPORT_SFLIGHT *& *&---------------------------------------------------------------------* * Published at SAPTechnical.COM *&---------------------------------------------------------------------*
REPORT ZALV_REPORT_SFLIGHT. TABLES : SFLIGHT. TYPE-POOLS : SLIS.
**INTERNAL TABLE DECLARTION DATA : WA_SFLIGHT TYPE SFLIGHT, IT_SFLIGHT TYPE TABLE OF SFLIGHT.
**DATA DECLARTION DATA: FIELDCATALOG TYPE SLIS_T_FIELDCAT_ALV WITH HEADER LINE, GD_LAYOUT TYPE SLIS_LAYOUT_ALV, GD_REPID LIKE SY-REPID, G_SAVE TYPE C VALUE 'X', G_VARIANT TYPE DISVARIANT, GX_VARIANT TYPE DISVARIANT, G_EXIT TYPE C, ISPFLI TYPE TABLE OF SPFLI.
* To understand the importance of the following parameter, click here. **SELECTION SCREEN DETAILS SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-002 . PARAMETERS: VARIANT LIKE DISVARIANT-VARIANT. SELECTION-SCREEN END OF BLOCK B1. **GETTING DEFAULT VARIANT INITIALIZATION. GX_VARIANT-REPORT = SY-REPID. CALL FUNCTION 'REUSE_ALV_VARIANT_DEFAULT_GET' EXPORTING I_SAVE = G_SAVE CHANGING CS_VARIANT = GX_VARIANT EXCEPTIONS NOT_FOUND = 2. IF SY-SUBRC = 0. VARIANT = GX_VARIANT-VARIANT. ENDIF.
**PERFORM DECLARATIONS START-OF-SELECTION. PERFORM DATA_RETRIVEL. PERFORM BUILD_FIELDCATALOG. PERFORM DISPLAY_ALV_REPORT.
*&---------------------------------------------------------------------* *& Form BUILD_FIELDCATALOG *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * --> p1 text * <-- p2 text *----------------------------------------------------------------------* FORM BUILD_FIELDCATALOG .
FIELDCATALOG-FIELDNAME = 'CARRID'. FIELDCATALOG-SELTEXT_M = 'Airline Code'. FIELDCATALOG-COL_POS = 0. APPEND FIELDCATALOG TO FIELDCATALOG. CLEAR FIELDCATALOG.
FIELDCATALOG-FIELDNAME = 'CONNID'. FIELDCATALOG-SELTEXT_M = 'Flight Connection Number'. FIELDCATALOG-COL_POS = 1. APPEND FIELDCATALOG TO FIELDCATALOG. CLEAR FIELDCATALOG.
FIELDCATALOG-FIELDNAME = 'FLDATE'. FIELDCATALOG-SELTEXT_M = 'Flight date'. FIELDCATALOG-COL_POS = 2. APPEND FIELDCATALOG TO FIELDCATALOG. CLEAR FIELDCATALOG.
FIELDCATALOG-FIELDNAME = 'PRICE'. FIELDCATALOG-SELTEXT_M = 'Airfare'. FIELDCATALOG-COL_POS = 3. FIELDCATALOG-OUTPUTLEN = 20. APPEND FIELDCATALOG TO FIELDCATALOG. CLEAR FIELDCATALOG. ENDFORM. " BUILD_FIELDCATALOG *&---------------------------------------------------------------------* *& Form DISPLAY_ALV_REPORT *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * --> p1 text * <-- p2 text *----------------------------------------------------------------------* FORM DISPLAY_ALV_REPORT . GD_REPID = SY-REPID. CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY' EXPORTING I_CALLBACK_PROGRAM = GD_REPID I_CALLBACK_TOP_OF_PAGE = 'TOP-OF-PAGE' "see FORM I_CALLBACK_USER_COMMAND = 'USER_COMMAND' IT_FIELDCAT = FIELDCATALOG[] I_SAVE = 'X' IS_VARIANT = G_VARIANT TABLES T_OUTTAB = IT_SFLIGHT 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
" DISPLAY_ALV_REPORT *&---------------------------------------------------------------------* *& Form DATA_RETRIVEL *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * --> p1 text * <-- p2 text *----------------------------------------------------------------------* FORM DATA_RETRIVEL . SELECT * FROM SFLIGHT INTO TABLE IT_SFLIGHT. ENDFORM. " DATA_RETRIVEL
*-------------------------------------------------------------------* * Form TOP-OF-PAGE * *-------------------------------------------------------------------* * ALV Report Header * *-------------------------------------------------------------------* FORM TOP-OF-PAGE. *ALV Header declarations DATA: T_HEADER TYPE SLIS_T_LISTHEADER, WA_HEADER TYPE SLIS_LISTHEADER, T_LINE LIKE WA_HEADER-INFO, LD_LINES TYPE I, LD_LINESC(10) TYPE C.
* Title WA_HEADER-TYP = 'H'. WA_HEADER-INFO = 'SFLIGHT Table Report'. APPEND WA_HEADER TO T_HEADER. CLEAR WA_HEADER.
* Date WA_HEADER-TYP = 'S'. WA_HEADER-KEY = 'Date: '. CONCATENATE SY-DATUM+6(2) '.' SY-DATUM+4(2) '.' SY-DATUM(4) INTO WA_HEADER-INFO. "todays date APPEND WA_HEADER TO T_HEADER. CLEAR: WA_HEADER.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE' EXPORTING IT_LIST_COMMENTARY = T_HEADER. ENDFORM. "top-of-page
SOURCE
http://www.saptechnical.com/Tutorials/ALV/SampleALVGridProgram.htm
Add Title(heading) to ALV Grid
7:28 PMcall function 'REUSE_ALV_GRID_DISPLAY'
exporting
i_callback_program = gd_repid
i_callback_top_of_page = 'TOP-OF-PAGE' "see FORM
is_layout = gd_layout
it_fieldcat = fieldcatalog[]
i_save = 'X'
tables
t_outtab = it_ekko
exceptions
program_error = 1
others = 2.
*-----------------------------------------------------------*
* Form TOP-OF-PAGE *
*-----------------------------------------------------------*
* ALV Report Header *
*-----------------------------------------------------------*
Form top-of-page.
*ALV Header declarations
data: t_header type slis_t_listheader,
wa_header type slis_listheader,
t_line like wa_header-info,
ld_lines type i,
ld_linesc(10) type c.
* Title
wa_header-typ = 'H'.
wa_header-info = 'EKKO Table Report'.
append wa_header to t_header.
clear wa_header.
* Date
wa_header-typ = 'S'.
wa_header-key = 'Date: '.
CONCATENATE sy-datum+6(2) '.'
sy-datum+4(2) '.'
sy-datum(4) INTO wa_header-info. "todays date
append wa_header to t_header.
clear: wa_header.
* Total No. of Records Selected
describe table it_ekko lines ld_lines.
ld_linesc = ld_lines.
concatenate 'Total No. of Records Selected: ' ld_linesc
into t_line separated by space.
wa_header-typ = 'A'.
wa_header-info = t_line.
append wa_header to t_header.
clear: wa_header, t_line.
call function 'REUSE_ALV_COMMENTARY_WRITE'
exporting
it_list_commentary = t_header.
* i_logo = 'Z_LOGO'.
endform.

exporting
i_callback_program = gd_repid
i_callback_top_of_page = 'TOP-OF-PAGE' "see FORM
is_layout = gd_layout
it_fieldcat = fieldcatalog[]
i_save = 'X'
tables
t_outtab = it_ekko
exceptions
program_error = 1
others = 2.
*-----------------------------------------------------------*
* Form TOP-OF-PAGE *
*-----------------------------------------------------------*
* ALV Report Header *
*-----------------------------------------------------------*
Form top-of-page.
*ALV Header declarations
data: t_header type slis_t_listheader,
wa_header type slis_listheader,
t_line like wa_header-info,
ld_lines type i,
ld_linesc(10) type c.
* Title
wa_header-typ = 'H'.
wa_header-info = 'EKKO Table Report'.
append wa_header to t_header.
clear wa_header.
* Date
wa_header-typ = 'S'.
wa_header-key = 'Date: '.
CONCATENATE sy-datum+6(2) '.'
sy-datum+4(2) '.'
sy-datum(4) INTO wa_header-info. "todays date
append wa_header to t_header.
clear: wa_header.
* Total No. of Records Selected
describe table it_ekko lines ld_lines.
ld_linesc = ld_lines.
concatenate 'Total No. of Records Selected: ' ld_linesc
into t_line separated by space.
wa_header-typ = 'A'.
wa_header-info = t_line.
append wa_header to t_header.
clear: wa_header, t_line.
call function 'REUSE_ALV_COMMENTARY_WRITE'
exporting
it_list_commentary = t_header.
* i_logo = 'Z_LOGO'.
endform.
http://www.sapdev.co.uk/reporting/alv/alvgrid_rephead.htm
