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: transport alv layout
2:32 AM
http://scn.sap.com/thread/80260
You can do this easily.
Go to the ALV Variants Managment screen after executing the report. There, one of the Menu options, when expanded, will have a 'Transport' option. Note that there is no button for this. Clicking this option will prompt for a transport number assignment.
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.
Program to find Badi or user exit
7:59 PM
report ZFINDEXIT_BADI.
TABLES : TSTC,
TADIR,
MODSAPT,
MODACT,
TRDIR,
TFDIR,
ENLFDIR,
SXS_ATTRT ,
TSTCT.
DATA : JTAB LIKE TADIR OCCURS 0 WITH HEADER LINE.
DATA : FIELD1(30).
DATA : V_DEVCLASS LIKE TADIR-DEVCLASS.
PARAMETERS : P_TCODE LIKE TSTC-TCODE,
P_PGMNA LIKE TSTC-PGMNA .
DATA wa_tadir type tadir.
START-OF-SELECTION.
IF NOT P_TCODE IS INITIAL.
SELECT SINGLE * FROM TSTC WHERE TCODE EQ P_TCODE.
ELSEIF NOT P_PGMNA IS INITIAL.
TSTC-PGMNA = P_PGMNA.
ENDIF.
IF SY-SUBRC EQ 0.
SELECT SINGLE * FROM TADIR
WHERE PGMID = 'R3TR'
AND OBJECT = 'PROG'
AND OBJ_NAME = TSTC-PGMNA.
MOVE : TADIR-DEVCLASS TO V_DEVCLASS.
IF SY-SUBRC NE 0.
SELECT SINGLE * FROM TRDIR
WHERE NAME = TSTC-PGMNA.
IF TRDIR-SUBC EQ 'F'.
SELECT SINGLE * FROM TFDIR
WHERE PNAME = TSTC-PGMNA.
SELECT SINGLE * FROM ENLFDIR
WHERE FUNCNAME = TFDIR-FUNCNAME.
SELECT SINGLE * FROM TADIR
WHERE PGMID = 'R3TR'
AND OBJECT = 'FUGR'
AND OBJ_NAME EQ ENLFDIR-AREA.
MOVE : TADIR-DEVCLASS TO V_DEVCLASS.
ENDIF.
ENDIF.
SELECT * FROM TADIR INTO TABLE JTAB
WHERE PGMID = 'R3TR'
AND OBJECT in ('SMOD', 'SXSD')
AND DEVCLASS = V_DEVCLASS.
SELECT SINGLE * FROM TSTCT
WHERE SPRSL EQ SY-LANGU
AND TCODE EQ P_TCODE.
FORMAT COLOR COL_POSITIVE INTENSIFIED OFF.
WRITE:/(19) 'Transaction Code - ',
20(20) P_TCODE,
45(50) TSTCT-TTEXT.
SKIP.
IF NOT JTAB[] IS INITIAL.
WRITE:/(105) SY-ULINE.
FORMAT COLOR COL_HEADING INTENSIFIED ON.
*Sorting the internal Table
sort jtab by OBJECT.
data : wf_txt(60) type c,
wf_smod type i ,
wf_badi type i ,
wf_object2(30) type C.
clear : wf_smod, wf_badi , wf_object2.
*Get the total SMOD.
LOOP AT JTAB into wa_tadir.
at first.
FORMAT COLOR COL_HEADING INTENSIFIED ON.
WRITE:/1 SY-VLINE,
2 'Enhancement/ Business Add-in',
41 SY-VLINE ,
42 'Description',
105 SY-VLINE.
WRITE:/(105) SY-ULINE.
endat.
clear wf_txt.
at new object.
if wa_tadir-object = 'SMOD'.
wf_object2 = 'Enhancement' .
elseif wa_tadir-object = 'SXSD'.
wf_object2 = ' Business Add-in'.
endif.
FORMAT COLOR COL_GROUP INTENSIFIED ON.
WRITE:/1 SY-VLINE,
2 wf_object2,
105 SY-VLINE.
endat.
case wa_tadir-object.
when 'SMOD'.
wf_smod = wf_smod + 1.
SELECT SINGLE MODTEXT into wf_txt
FROM MODSAPT
WHERE SPRSL = SY-LANGU
AND NAME = wa_tadir-OBJ_NAME.
FORMAT COLOR COL_NORMAL INTENSIFIED OFF.
when 'SXSD'.
*For BADis
wf_badi = wf_badi + 1 .
select single TEXT into wf_txt
from SXS_ATTRT
where sprsl = sy-langu
and EXIT_NAME = wa_tadir-OBJ_NAME.
FORMAT COLOR COL_NORMAL INTENSIFIED ON.
endcase.
WRITE:/1 SY-VLINE,
2 wa_tadir-OBJ_NAME hotspot on,
41 SY-VLINE ,
42 wf_txt,
105 SY-VLINE.
AT END OF object.
write : /(105) sy-ULINE.
ENDAT.
ENDLOOP.
WRITE:/(105) SY-ULINE.
SKIP.
FORMAT COLOR COL_TOTAL INTENSIFIED ON.
WRITE:/ 'No.of Exits:' , wf_smod.
WRITE:/ 'No.of BADis:' , wf_badi.
ELSE.
FORMAT COLOR COL_NEGATIVE INTENSIFIED ON.
WRITE:/(105) 'No userexits or BADis exist'.
ENDIF.
ELSE.
FORMAT COLOR COL_NEGATIVE INTENSIFIED ON.
WRITE:/(105) 'Transaction does not exist'.
ENDIF.
AT LINE-SELECTION.
data : wf_object type tadir-object.
clear wf_object.
GET CURSOR FIELD FIELD1.
CHECK FIELD1(8) EQ 'WA_TADIR'.
read table jtab with key obj_name = sy-lisel+1(20).
move jtab-object to wf_object.
case wf_object.
when 'SMOD'.
SET PARAMETER ID 'MON' FIELD SY-LISEL+1(10).
CALL TRANSACTION 'SMOD' AND SKIP FIRST SCREEN.
when 'SXSD'.
SET PARAMETER ID 'EXN' FIELD SY-LISEL+1(20).
CALL TRANSACTION 'SE18' AND SKIP FIRST SCREEN.
endcase.
TABLES : TSTC,
TADIR,
MODSAPT,
MODACT,
TRDIR,
TFDIR,
ENLFDIR,
SXS_ATTRT ,
TSTCT.
DATA : JTAB LIKE TADIR OCCURS 0 WITH HEADER LINE.
DATA : FIELD1(30).
DATA : V_DEVCLASS LIKE TADIR-DEVCLASS.
PARAMETERS : P_TCODE LIKE TSTC-TCODE,
P_PGMNA LIKE TSTC-PGMNA .
DATA wa_tadir type tadir.
START-OF-SELECTION.
IF NOT P_TCODE IS INITIAL.
SELECT SINGLE * FROM TSTC WHERE TCODE EQ P_TCODE.
ELSEIF NOT P_PGMNA IS INITIAL.
TSTC-PGMNA = P_PGMNA.
ENDIF.
IF SY-SUBRC EQ 0.
SELECT SINGLE * FROM TADIR
WHERE PGMID = 'R3TR'
AND OBJECT = 'PROG'
AND OBJ_NAME = TSTC-PGMNA.
MOVE : TADIR-DEVCLASS TO V_DEVCLASS.
IF SY-SUBRC NE 0.
SELECT SINGLE * FROM TRDIR
WHERE NAME = TSTC-PGMNA.
IF TRDIR-SUBC EQ 'F'.
SELECT SINGLE * FROM TFDIR
WHERE PNAME = TSTC-PGMNA.
SELECT SINGLE * FROM ENLFDIR
WHERE FUNCNAME = TFDIR-FUNCNAME.
SELECT SINGLE * FROM TADIR
WHERE PGMID = 'R3TR'
AND OBJECT = 'FUGR'
AND OBJ_NAME EQ ENLFDIR-AREA.
MOVE : TADIR-DEVCLASS TO V_DEVCLASS.
ENDIF.
ENDIF.
SELECT * FROM TADIR INTO TABLE JTAB
WHERE PGMID = 'R3TR'
AND OBJECT in ('SMOD', 'SXSD')
AND DEVCLASS = V_DEVCLASS.
SELECT SINGLE * FROM TSTCT
WHERE SPRSL EQ SY-LANGU
AND TCODE EQ P_TCODE.
FORMAT COLOR COL_POSITIVE INTENSIFIED OFF.
WRITE:/(19) 'Transaction Code - ',
20(20) P_TCODE,
45(50) TSTCT-TTEXT.
SKIP.
IF NOT JTAB[] IS INITIAL.
WRITE:/(105) SY-ULINE.
FORMAT COLOR COL_HEADING INTENSIFIED ON.
*Sorting the internal Table
sort jtab by OBJECT.
data : wf_txt(60) type c,
wf_smod type i ,
wf_badi type i ,
wf_object2(30) type C.
clear : wf_smod, wf_badi , wf_object2.
*Get the total SMOD.
LOOP AT JTAB into wa_tadir.
at first.
FORMAT COLOR COL_HEADING INTENSIFIED ON.
WRITE:/1 SY-VLINE,
2 'Enhancement/ Business Add-in',
41 SY-VLINE ,
42 'Description',
105 SY-VLINE.
WRITE:/(105) SY-ULINE.
endat.
clear wf_txt.
at new object.
if wa_tadir-object = 'SMOD'.
wf_object2 = 'Enhancement' .
elseif wa_tadir-object = 'SXSD'.
wf_object2 = ' Business Add-in'.
endif.
FORMAT COLOR COL_GROUP INTENSIFIED ON.
WRITE:/1 SY-VLINE,
2 wf_object2,
105 SY-VLINE.
endat.
case wa_tadir-object.
when 'SMOD'.
wf_smod = wf_smod + 1.
SELECT SINGLE MODTEXT into wf_txt
FROM MODSAPT
WHERE SPRSL = SY-LANGU
AND NAME = wa_tadir-OBJ_NAME.
FORMAT COLOR COL_NORMAL INTENSIFIED OFF.
when 'SXSD'.
*For BADis
wf_badi = wf_badi + 1 .
select single TEXT into wf_txt
from SXS_ATTRT
where sprsl = sy-langu
and EXIT_NAME = wa_tadir-OBJ_NAME.
FORMAT COLOR COL_NORMAL INTENSIFIED ON.
endcase.
WRITE:/1 SY-VLINE,
2 wa_tadir-OBJ_NAME hotspot on,
41 SY-VLINE ,
42 wf_txt,
105 SY-VLINE.
AT END OF object.
write : /(105) sy-ULINE.
ENDAT.
ENDLOOP.
WRITE:/(105) SY-ULINE.
SKIP.
FORMAT COLOR COL_TOTAL INTENSIFIED ON.
WRITE:/ 'No.of Exits:' , wf_smod.
WRITE:/ 'No.of BADis:' , wf_badi.
ELSE.
FORMAT COLOR COL_NEGATIVE INTENSIFIED ON.
WRITE:/(105) 'No userexits or BADis exist'.
ENDIF.
ELSE.
FORMAT COLOR COL_NEGATIVE INTENSIFIED ON.
WRITE:/(105) 'Transaction does not exist'.
ENDIF.
AT LINE-SELECTION.
data : wf_object type tadir-object.
clear wf_object.
GET CURSOR FIELD FIELD1.
CHECK FIELD1(8) EQ 'WA_TADIR'.
read table jtab with key obj_name = sy-lisel+1(20).
move jtab-object to wf_object.
case wf_object.
when 'SMOD'.
SET PARAMETER ID 'MON' FIELD SY-LISEL+1(10).
CALL TRANSACTION 'SMOD' AND SKIP FIRST SCREEN.
when 'SXSD'.
SET PARAMETER ID 'EXN' FIELD SY-LISEL+1(20).
CALL TRANSACTION 'SE18' AND SKIP FIRST SCREEN.
endcase.
Sample on OO grid with select otspot
3:00 AM
REPORT ZLLTEST13.
*****************************************
* D A T A D E C L A R A T I O N START*
*****************************************
*********************************************************
* D I S P L A Y A L V I N S C R E E N S T A R T *
*********************************************************
DATA: gs_fieldcatalog TYPE lvc_s_fcat OCCURS 0,
gv_fcat LIKE LINE OF gs_fieldcatalog,
gs_layout TYPE lvc_s_layo.
*<----------------CUSTOM TABLE START----------------------
TYPES : BEGIN OF gty_item,
checkbox type c, "field for checkbox
celltab type lvc_t_styl, "field to switch editability
VBELN TYPE VBAK-VBELN, "<---CUSTOMIZED
TABLE(4) TYPE C, "<---CUSTOMIZED
GV_ADDRESS1(500) TYPE C, "<---CUSTOMIZED
GV_ADDRESS2(500) TYPE C, "<---CUSTOMIZED
END OF gty_item.
DATA : gs_item TYPE gty_item,
gt_item TYPE TABLE OF gty_item.
*<----------------CUSTOM TABLE END------------------------
DATA : g_Container TYPE scrfname VALUE 'C_ALV', ""<---CUSTOMIZED CONTAINER VALUE
g_Custom_Container TYPE REF TO CL_GUI_CUSTOM_CONTAINER,
g_Grid TYPE REF TO CL_GUI_ALV_GRID.
DATA : OK_CODE LIKE sy-ucomm,
SAVE_OK LIKE sy-ucomm.
******************************************************
* D I S P L A Y A L V I N S C R E E N E N D *
******************************************************
******************************************************
* CUSTOM TABLE OR DATA DECLRATION FOR PROGRAM *
******************************************************
TABLES: T001, ADRC,
Ekko, "Purchasing Document Header EBELN
vbrk, "Billing Document: Header Data VBELN
vbak. "Sales Document: Header Data VBELN
DATA: TA_T001 TYPE TABLE OF T001,
WA_T001 LIKE LINE OF TA_T001,
TA_ADRC TYPE TABLE OF ADRC,
WA_ADRC LIKE LINE OF TA_ADRC,
LV_BUKRS TYPE T001-BUKRS,
GV_ADDRESS1 TYPE STRING,
GV_ADDRESS2 TYPE STRING,
SY_PROG TYPE SY-CPROG,
LV_VBELN TYPE VBAK-VBELN.
SY_PROG = SY-CPROG.
******************************************************
* S E L E C T I O N S C R E E N *
******************************************************
SELECTION-SCREEN BEGIN OF BLOCK b_top WITH FRAME.
PARAMETERS : p_EKKO RADIOBUTTON GROUP g1,
p_VBRK RADIOBUTTON GROUP g1,
p_VBAK RADIOBUTTON GROUP g1,
p_DOCNO type vbeln DEFAULT '4970000000'.
SELECTION-SCREEN: END OF BLOCK b_top.
FORM U_PREPARE_FIELDCATALOG .
CLEAR gv_fcat.
CLEAR gv_fcat.
gv_fcat-fieldname = 'TABLE'.
gv_fcat-tabname = 'TABLE'.
gv_fcat-col_pos = 0.
gv_fcat-coltext = 'TABLE'.
INSERT gv_fcat INTO TABLE gs_fieldcatalog.
gv_fcat-fieldname = 'VBELN'.
gv_fcat-tabname = 'VBELN'.
gv_fcat-col_pos = 0.
gv_fcat-coltext = 'VBELN'.
gv_fcat-hotspot = 'X'.
INSERT gv_fcat INTO TABLE gs_fieldcatalog.
CLEAR gv_fcat.
gv_fcat-fieldname = 'GV_ADDRESS1'.
gv_fcat-tabname = 'GV_ADDRESS1'.
gv_fcat-col_pos = 0.
gv_fcat-coltext = 'GV_ADDRESS1'.
gv_fcat-INTLEN = 55.
"gv_fcat-no_out = 'X'. " Do not Display Column
INSERT gv_fcat INTO TABLE gs_fieldcatalog.
CLEAR gv_fcat.
gv_fcat-fieldname = 'GV_ADDRESS2'.
gv_fcat-tabname = 'GV_ADDRESS2'.
gv_fcat-col_pos = 1.
gv_fcat-coltext = 'GV_ADDRESS2'.
gv_fcat-INTLEN = 55.
"gv_fcat-no_out = 'X'. " Do not Display Column
INSERT gv_fcat INTO TABLE gs_fieldcatalog.
ENDFORM. " U_PREPARE_FIELDCATALOG
*****************************************
* D A T A D E C L A R A T I O N END *
*****************************************
*****************************************
* H O T S P O T START *
*****************************************
CLASS event_class DEFINITION DEFERRED.
*& Refrence Objects To Alv Grid & Custom Container Classes
DATA:
**** g_Grid TYPE REF TO cl_gui_alv_grid, <-- your customized ALV
**** g_Custom_Container TYPE REF TO cl_gui_custom_container, <-- your customized ALV
event_receiver TYPE REF TO event_class,
e_object TYPE REF TO cl_alv_event_toolbar_set.
*& Data Declaration For Interactive Lists
DATA:
t_layo TYPE lvc_s_layo,
t_fcat TYPE lvc_t_fcat,
fs_fcat TYPE lvc_s_fcat,
t_cell TYPE lvc_t_cell,
t_row TYPE lvc_t_roid,
t_cel TYPE lvc_t_ceno.
*----------------------------------------------------------------------*
* CLASS event_class DEFINITION
*----------------------------------------------------------------------*
CLASS event_class DEFINITION.
PUBLIC SECTION.
METHODS:
handle_hotspot_click
* FOR EVENT hotspot_click OF cl_gui_alv_grid IMPORTING e_row_id.
FOR EVENT hotspot_click OF cl_gui_alv_grid IMPORTING e_column_id
e_row_id
es_row_no .
ENDCLASS. "event_class DEFINITION
*----------------------------------------------------------------------*
* CLASS event_class IMPLEMENTATION
*----------------------------------------------------------------------*
CLASS event_class IMPLEMENTATION.
METHOD handle_hotspot_click.
* fl_flag = 1.
*& Work Variable Declarations
***** DATA:
***** fs_carrid LIKE LINE OF t_flight. " Airline Passed Variable
*& Reading the selected data into the variable
**** READ TABLE t_flight INDEX e_row_id-index INTO fs_carrid.
**** PERFORM get_booking_data USING fs_carrid.
**** CALL SCREEN 600.
READ TABLE GT_ITEM INTO GS_ITEM INDEX e_row_id-index.
CASE GS_ITEM-TABLE.
WHEN 'EKKO'. SET PARAMETER ID 'BES' FIELD GS_ITEM-VBELN. CALL TRANSACTION 'ME23N' AND SKIP FIRST SCREEN.
WHEN 'VBRK'. SET PARAMETER ID 'VF' FIELD GS_ITEM-VBELN. CALL TRANSACTION 'VF03' AND SKIP FIRST SCREEN.
WHEN 'VBAK'. SET PARAMETER ID 'AUN' FIELD GS_ITEM-VBELN. CALL TRANSACTION 'VA03' AND SKIP FIRST SCREEN.
ENDCASE.
ENDMETHOD. "handle_hotspot_click
ENDCLASS. "event_class IMPLEMENTATION
*****************************************
* H O T S P O T END *
*****************************************
*****************************************
* PROCESS DATA START *
*****************************************
*&---------------------------------------------------------------------*
*& Form F_PROCESS_DATA - TO POPULATE GT_ITEM
*&---------------------------------------------------------------------*
FORM F_PROCESS_DATA .
CLEAR: LV_BUKRS, GS_ITEM.
CASE 'X'.
WHEN p_EKKO. SELECT SINGLE BUKRS FROM EKKO INTO LV_BUKRS WHERE EBELN EQ p_DOCNO.
WHEN p_VBRK. SELECT SINGLE BUKRS FROM VBRK INTO LV_BUKRS WHERE VBELN EQ p_DOCNO.
WHEN p_VBAK. SELECT SINGLE BUKRS_VF FROM VBAK INTO LV_BUKRS WHERE VBELN EQ p_DOCNO AND VKORG = '0190'. "SALES oRDER
ENDCASE.
IF SY-SUBRC EQ 0.
SELECT * FROM T001 INTO CORRESPONDING FIELDS OF TABLE TA_T001 WHERE BUKRS EQ LV_BUKRS.
IF TA_T001[] IS NOT INITIAL.
SELECT * FROM ADRC INTO CORRESPONDING FIELDS OF TABLE TA_ADRC
FOR ALL ENTRIES IN TA_T001 WHERE ADDRNUMBER EQ TA_T001-ADRNR.
IF SY-SUBRC EQ 0.
READ TABLE TA_ADRC INTO WA_ADRC INDEX 1.
IF SY-SUBRC EQ 0.
CLEAR: GV_ADDRESS1, GV_ADDRESS2.
CONCATENATE: WA_ADRC-NAME1 WA_ADRC-NAME2 INTO GV_ADDRESS1 SEPARATED BY SPACE.
IF WA_ADRC-STR_SUPPL1 IS NOT INITIAL. "NEXT LINE IS NOT INITIAL
CONCATENATE WA_ADRC-STREET ',' INTO WA_ADRC-STREET.
ENDIF.
IF WA_ADRC-STR_SUPPL2 IS NOT INITIAL. "NEXT LINE IS NOT INITIAL
CONCATENATE WA_ADRC-STR_SUPPL1 ',' INTO WA_ADRC-STR_SUPPL1.
ENDIF.
CONCATENATE WA_ADRC-STREET
WA_ADRC-STR_SUPPL1
WA_ADRC-STR_SUPPL2 INTO GV_ADDRESS2 SEPARATED BY SPACE.
REPLACE ',,' WITH ',' INTO: GV_ADDRESS1 , GV_ADDRESS2.
REPLACE ', ,' WITH ',' INTO: GV_ADDRESS1 , GV_ADDRESS2.
REPLACE ' ,' WITH ',' INTO: GV_ADDRESS1 , GV_ADDRESS2.
GS_ITEM-VBELN = P_DOCNO.
CASE 'X'.
WHEN p_EKKO. GS_ITEM-TABLE = 'EKKO'.
WHEN p_VBRK. GS_ITEM-TABLE = 'VBRK'.
WHEN p_VBAK. GS_ITEM-TABLE = 'VBAK'.
ENDCASE.
GS_ITEM-GV_ADDRESS1 = GV_ADDRESS1.
GS_ITEM-GV_ADDRESS2 = GV_ADDRESS2.
DELETE GT_ITEM WHERE VBELN = P_DOCNO.
APPEND GS_ITEM TO GT_ITEM.
ENDIF.
ENDIF.
ENDIF.
ELSE.
DATA: DOC_NO TYPE VBRK-VBELN.
CASE 'X'.
WHEN p_EKKO. SELECT SINGLE EBELN FROM EKKO INTO DOC_NO.
WHEN p_VBRK. SELECT SINGLE VBELN FROM VBRK INTO DOC_NO.
WHEN p_VBAK. SELECT SINGLE VBELN FROM VBAK INTO DOC_NO.
ENDCASE.
IF sy-subrc eq 0.
MESSAGE 'NO COMPANY CODE FOUND' TYPE 'I' display like 'I' .
ELSE.
MESSAGE 'NO DATA' TYPE 'I' display like 'E'.
ENDIF.
P_DOCno = DOC_NO.
ENDIF.
ENDFORM. " F_PROCESS_DATA
*****************************************
* PROCESS DATA END *
*****************************************
******************************************************
* S T A R T - O F - S E L E C T I O N *
******************************************************
START-OF-SELECTION.
PERFORM F_PROCESS_DATA.
IF GT_ITEM[] IS NOT INITIAL.
call SCREEN 100.
ENDIF.
END-OF-SELECTION.
MODULE STATUS_0100 OUTPUT.
SET PF-STATUS 'ZMARK'. "<--- CUSTOMIZED GUI STATUS
* SET TITLEBAR 'xxx'.
PERFORM F_INIT_ALV.
ENDMODULE. " STATUS_0100 OUTPUT
MODULE USER_COMMAND_0100 INPUT.
save_ok = ok_code.
clear ok_code.
case save_ok.
when 'BACK' OR 'CANCEL'.
submit zmark VIA SELECTION-SCREEN WITH p_ekko EQ p_ekko
WITH p_DOCNO eq p_DOCNO.
when 'EXIT'.
LEAVE PROGRAM.
when 'F_BT_SEARCH'.
IF LV_VBELN NE ''.
p_DOCNO = LV_VBELN.
PERFORM F_PROCESS_DATA.
LV_VBELN = P_DOCno.
CALL METHOD g_Grid->REFRESH_TABLE_DISPLAY.
ELSE.
MESSAGE 'SEARCH FIELD IS BLANK' TYPE 'I' display like 'E'.
ENDIF.
endcase.
ENDMODULE. " USER_COMMAND_0100 INPUT
FORM F_INIT_ALV.
data: lt_exclude type ui_functions.
IF g_Custom_Container IS INITIAL.
" Create CONTAINER object with reference to container name in the screen
CREATE OBJECT g_Custom_Container
EXPORTING CONTAINER_NAME = g_Container.
" Create GRID object with reference to parent name
CREATE OBJECT g_Grid
EXPORTING I_PARENT = g_Custom_Container.
PERFORM u_prepare_fieldcatalog.
"****************************
" CELLTAB start "
"****************************
*-> Initially, set all checkbox cells editable.
DATA:
ls_celltab type lvc_s_styl,
lt_celltab type lvc_t_styl,
tp_iindex type i.
ls_celltab-fieldname = 'CHECKBOX'.
ls_celltab-style = cl_gui_alv_grid=>mc_style_enabled.
loop at gt_item INTO GS_ITEM.
tp_iindex = sy-tabix.
refresh lt_celltab.
ls_celltab-fieldname = 'CHECKBOX'.
ls_celltab-style = cl_gui_alv_grid=>mc_style_enabled.
insert ls_celltab into table lt_celltab.
gS_item-celltab[] = lT_celltab[].
modify GT_ITEM FROM GS_ITEM index tp_iindex.
endloop.
"****************************
" CELLTAB END "
"****************************
"****************************
" gs_layout settings start "
"****************************
* A Multiple columns, multiple rows with selection buttons.
* B Simple selection, listbox, Single row/column
* C Multiple rows without buttons
* D Multiple rows with buttons and select all ICON
gs_layout-sel_mode = 'D'. "SELECT ALL AT THE UPPER RIGHT
gs_layout-ZEBRA = 'X'.
gs_layout-stylefname = 'CELLTAB'.
"gs_layout-edit = 'X'. "Makes all Grid editable
"****************************
" gs_layout settings end "
"****************************
perform exclude_tb_functions changing lt_exclude.
" SET_TABLE_FOR_FIRST_DISPLAY
CALL METHOD g_Grid->SET_TABLE_FOR_FIRST_DISPLAY
EXPORTING
is_layout = gs_layout
it_toolbar_excluding = lt_exclude
CHANGING
it_fieldcatalog = gs_fieldcatalog
IT_OUTTAB = gt_item. " Data
************************************************************************
*Create object of the event class and setting handler for hotspot click
************************************************************************
************************************************************************
*Create object of the event class and setting handler for hotspot click
************************************************************************
CREATE OBJECT event_receiver.
SET HANDLER event_receiver->handle_hotspot_click FOR g_Grid."cl_alv_grid.
CREATE OBJECT e_object.
************************************************************************
*Create object of the event class and setting handler for hotspot click
************************************************************************
************************************************************************
*Create object of the event class and setting handler for hotspot click
************************************************************************
ELSE.
CALL METHOD g_Grid->REFRESH_TABLE_DISPLAY.
ENDIF.
ENDFORM.
form exclude_tb_functions changing pt_exclude type ui_functions.
* data ls_exclude type ui_func.
*
* ls_exclude = cl_gui_alv_grid=>mc_fc_refresh.
* append ls_exclude to pt_exclude.
* ls_exclude = cl_gui_alv_grid=>mc_fc_loc_copy_row.
* append ls_exclude to pt_exclude.
* ls_exclude = cl_gui_alv_grid=>mc_fc_loc_delete_row.
* append ls_exclude to pt_exclude.
* ls_exclude = cl_gui_alv_grid=>mc_fc_loc_append_row.
* append ls_exclude to pt_exclude.
* ls_exclude = cl_gui_alv_grid=>mc_fc_loc_insert_row.
* append ls_exclude to pt_exclude.
* ls_exclude = cl_gui_alv_grid=>mc_fc_loc_move_row.
* append ls_exclude to pt_exclude.
* ls_exclude = cl_gui_alv_grid=>mc_fc_loc_copy.
* append ls_exclude to pt_exclude.
* ls_exclude = cl_gui_alv_grid=>mc_fc_loc_cut.
* append ls_exclude to pt_exclude.
* ls_exclude = cl_gui_alv_grid=>mc_fc_loc_paste.
* append ls_exclude to pt_exclude.
* ls_exclude = cl_gui_alv_grid=>mc_fc_loc_paste_new_row.
* append ls_exclude to pt_exclude.
* ls_exclude = cl_gui_alv_grid=>mc_fc_loc_undo.
* append ls_exclude to pt_exclude.
endform. " EXCLUDE_TB_FUNCTIONS
*NOTE:
*1. create gui status zmark
* - assign cancel, back and exit
*2. create screen 100. copy into a file below and upload the screen 100
****************************************************************************
****************************************************************
* THIS FILE IS GENERATED BY THE SCREEN PAINTER. *
* NEVER CHANGE IT MANUALLY, PLEASE ! *
****************************************************************
*%_DYNPRO
*ZMARK_T
*0100
*700
* 40
*%_HEADER
*ZMARK_T 0100 0100 30112192 37 0 0 35141 0G E 20150624173745
*%_DESCRIPTION
*Test result screen
*%_FIELDS
*SY_PROG C CHAR 13 80 00 80 32 00 1 7 0 0 0 0 0 0 _____________
*GV_ADDRESS1 C CHAR 107 80 00 80 32 00 2 7 0 0 0 0 0 0 ___________________________________________________________________________________________________________
*GV_ADDRESS2 C CHAR 107 80 00 80 32 00 3 7 0 0 0 0 0 0 ___________________________________________________________________________________________________________
*C_ALV 108 00 00 00 30 00 4 6 0 0 0 22 U 1 1 101
*LV_VBELN C CHAR 25 80 00 80 00 00 27 6 0 0 0 0 0 0 _________________________
*BT_SEARCH CHAR 6 00 00 00 30 00 27 34 0 0 0 0 P 0 0 102 Search
* F_BT_SEARCH [bring this line up]
*P_EKKO C CHAR 1 80 00 80 00 00 28 6 0 0 0 0 A 0 0 103 G1 G1 G1 G1
*P_EKKO 0 CHAR 4 00 00 00 30 00 28 8 0 0 0 0 A 0 0 103 G1 G1 G1 G1 EKKO
*P_VBRK C CHAR 1 80 00 80 00 00 29 6 0 0 0 0 A 0 0 103 G1 G1 G1 G1
*P_VBRK 0 CHAR 4 00 00 00 30 00 29 8 0 0 0 0 A 0 0 103 G1 G1 G1 G1 VBRK
*P_VBAK C CHAR 1 80 00 80 00 00 30 6 0 0 0 0 A 0 0 103 G1 G1 G1 G1
*P_VBAK 0 CHAR 4 00 00 00 30 00 30 8 0 0 0 0 A 0 0 103 G1 G1 G1 G1 VBAK
*OK_CODE CHAR 20 80 10 00 00 00 255 1 O 0 0 0 0 0 0 ____________________
*%_FLOWLOGIC
*PROCESS BEFORE OUTPUT.
* MODULE STATUS_0100.
**
*PROCESS AFTER INPUT.
* MODULE USER_COMMAND_0100.
*%_PARAMS
*****************************************
* D A T A D E C L A R A T I O N START*
*****************************************
*********************************************************
* D I S P L A Y A L V I N S C R E E N S T A R T *
*********************************************************
DATA: gs_fieldcatalog TYPE lvc_s_fcat OCCURS 0,
gv_fcat LIKE LINE OF gs_fieldcatalog,
gs_layout TYPE lvc_s_layo.
*<----------------CUSTOM TABLE START----------------------
TYPES : BEGIN OF gty_item,
checkbox type c, "field for checkbox
celltab type lvc_t_styl, "field to switch editability
VBELN TYPE VBAK-VBELN, "<---CUSTOMIZED
TABLE(4) TYPE C, "<---CUSTOMIZED
GV_ADDRESS1(500) TYPE C, "<---CUSTOMIZED
GV_ADDRESS2(500) TYPE C, "<---CUSTOMIZED
END OF gty_item.
DATA : gs_item TYPE gty_item,
gt_item TYPE TABLE OF gty_item.
*<----------------CUSTOM TABLE END------------------------
DATA : g_Container TYPE scrfname VALUE 'C_ALV', ""<---CUSTOMIZED CONTAINER VALUE
g_Custom_Container TYPE REF TO CL_GUI_CUSTOM_CONTAINER,
g_Grid TYPE REF TO CL_GUI_ALV_GRID.
DATA : OK_CODE LIKE sy-ucomm,
SAVE_OK LIKE sy-ucomm.
******************************************************
* D I S P L A Y A L V I N S C R E E N E N D *
******************************************************
******************************************************
* CUSTOM TABLE OR DATA DECLRATION FOR PROGRAM *
******************************************************
TABLES: T001, ADRC,
Ekko, "Purchasing Document Header EBELN
vbrk, "Billing Document: Header Data VBELN
vbak. "Sales Document: Header Data VBELN
DATA: TA_T001 TYPE TABLE OF T001,
WA_T001 LIKE LINE OF TA_T001,
TA_ADRC TYPE TABLE OF ADRC,
WA_ADRC LIKE LINE OF TA_ADRC,
LV_BUKRS TYPE T001-BUKRS,
GV_ADDRESS1 TYPE STRING,
GV_ADDRESS2 TYPE STRING,
SY_PROG TYPE SY-CPROG,
LV_VBELN TYPE VBAK-VBELN.
SY_PROG = SY-CPROG.
******************************************************
* S E L E C T I O N S C R E E N *
******************************************************
SELECTION-SCREEN BEGIN OF BLOCK b_top WITH FRAME.
PARAMETERS : p_EKKO RADIOBUTTON GROUP g1,
p_VBRK RADIOBUTTON GROUP g1,
p_VBAK RADIOBUTTON GROUP g1,
p_DOCNO type vbeln DEFAULT '4970000000'.
SELECTION-SCREEN: END OF BLOCK b_top.
FORM U_PREPARE_FIELDCATALOG .
CLEAR gv_fcat.
CLEAR gv_fcat.
gv_fcat-fieldname = 'TABLE'.
gv_fcat-tabname = 'TABLE'.
gv_fcat-col_pos = 0.
gv_fcat-coltext = 'TABLE'.
INSERT gv_fcat INTO TABLE gs_fieldcatalog.
gv_fcat-fieldname = 'VBELN'.
gv_fcat-tabname = 'VBELN'.
gv_fcat-col_pos = 0.
gv_fcat-coltext = 'VBELN'.
gv_fcat-hotspot = 'X'.
INSERT gv_fcat INTO TABLE gs_fieldcatalog.
CLEAR gv_fcat.
gv_fcat-fieldname = 'GV_ADDRESS1'.
gv_fcat-tabname = 'GV_ADDRESS1'.
gv_fcat-col_pos = 0.
gv_fcat-coltext = 'GV_ADDRESS1'.
gv_fcat-INTLEN = 55.
"gv_fcat-no_out = 'X'. " Do not Display Column
INSERT gv_fcat INTO TABLE gs_fieldcatalog.
CLEAR gv_fcat.
gv_fcat-fieldname = 'GV_ADDRESS2'.
gv_fcat-tabname = 'GV_ADDRESS2'.
gv_fcat-col_pos = 1.
gv_fcat-coltext = 'GV_ADDRESS2'.
gv_fcat-INTLEN = 55.
"gv_fcat-no_out = 'X'. " Do not Display Column
INSERT gv_fcat INTO TABLE gs_fieldcatalog.
ENDFORM. " U_PREPARE_FIELDCATALOG
*****************************************
* D A T A D E C L A R A T I O N END *
*****************************************
*****************************************
* H O T S P O T START *
*****************************************
CLASS event_class DEFINITION DEFERRED.
*& Refrence Objects To Alv Grid & Custom Container Classes
DATA:
**** g_Grid TYPE REF TO cl_gui_alv_grid, <-- your customized ALV
**** g_Custom_Container TYPE REF TO cl_gui_custom_container, <-- your customized ALV
event_receiver TYPE REF TO event_class,
e_object TYPE REF TO cl_alv_event_toolbar_set.
*& Data Declaration For Interactive Lists
DATA:
t_layo TYPE lvc_s_layo,
t_fcat TYPE lvc_t_fcat,
fs_fcat TYPE lvc_s_fcat,
t_cell TYPE lvc_t_cell,
t_row TYPE lvc_t_roid,
t_cel TYPE lvc_t_ceno.
*----------------------------------------------------------------------*
* CLASS event_class DEFINITION
*----------------------------------------------------------------------*
CLASS event_class DEFINITION.
PUBLIC SECTION.
METHODS:
handle_hotspot_click
* FOR EVENT hotspot_click OF cl_gui_alv_grid IMPORTING e_row_id.
FOR EVENT hotspot_click OF cl_gui_alv_grid IMPORTING e_column_id
e_row_id
es_row_no .
ENDCLASS. "event_class DEFINITION
*----------------------------------------------------------------------*
* CLASS event_class IMPLEMENTATION
*----------------------------------------------------------------------*
CLASS event_class IMPLEMENTATION.
METHOD handle_hotspot_click.
* fl_flag = 1.
*& Work Variable Declarations
***** DATA:
***** fs_carrid LIKE LINE OF t_flight. " Airline Passed Variable
*& Reading the selected data into the variable
**** READ TABLE t_flight INDEX e_row_id-index INTO fs_carrid.
**** PERFORM get_booking_data USING fs_carrid.
**** CALL SCREEN 600.
READ TABLE GT_ITEM INTO GS_ITEM INDEX e_row_id-index.
CASE GS_ITEM-TABLE.
WHEN 'EKKO'. SET PARAMETER ID 'BES' FIELD GS_ITEM-VBELN. CALL TRANSACTION 'ME23N' AND SKIP FIRST SCREEN.
WHEN 'VBRK'. SET PARAMETER ID 'VF' FIELD GS_ITEM-VBELN. CALL TRANSACTION 'VF03' AND SKIP FIRST SCREEN.
WHEN 'VBAK'. SET PARAMETER ID 'AUN' FIELD GS_ITEM-VBELN. CALL TRANSACTION 'VA03' AND SKIP FIRST SCREEN.
ENDCASE.
ENDMETHOD. "handle_hotspot_click
ENDCLASS. "event_class IMPLEMENTATION
*****************************************
* H O T S P O T END *
*****************************************
*****************************************
* PROCESS DATA START *
*****************************************
*&---------------------------------------------------------------------*
*& Form F_PROCESS_DATA - TO POPULATE GT_ITEM
*&---------------------------------------------------------------------*
FORM F_PROCESS_DATA .
CLEAR: LV_BUKRS, GS_ITEM.
CASE 'X'.
WHEN p_EKKO. SELECT SINGLE BUKRS FROM EKKO INTO LV_BUKRS WHERE EBELN EQ p_DOCNO.
WHEN p_VBRK. SELECT SINGLE BUKRS FROM VBRK INTO LV_BUKRS WHERE VBELN EQ p_DOCNO.
WHEN p_VBAK. SELECT SINGLE BUKRS_VF FROM VBAK INTO LV_BUKRS WHERE VBELN EQ p_DOCNO AND VKORG = '0190'. "SALES oRDER
ENDCASE.
IF SY-SUBRC EQ 0.
SELECT * FROM T001 INTO CORRESPONDING FIELDS OF TABLE TA_T001 WHERE BUKRS EQ LV_BUKRS.
IF TA_T001[] IS NOT INITIAL.
SELECT * FROM ADRC INTO CORRESPONDING FIELDS OF TABLE TA_ADRC
FOR ALL ENTRIES IN TA_T001 WHERE ADDRNUMBER EQ TA_T001-ADRNR.
IF SY-SUBRC EQ 0.
READ TABLE TA_ADRC INTO WA_ADRC INDEX 1.
IF SY-SUBRC EQ 0.
CLEAR: GV_ADDRESS1, GV_ADDRESS2.
CONCATENATE: WA_ADRC-NAME1 WA_ADRC-NAME2 INTO GV_ADDRESS1 SEPARATED BY SPACE.
IF WA_ADRC-STR_SUPPL1 IS NOT INITIAL. "NEXT LINE IS NOT INITIAL
CONCATENATE WA_ADRC-STREET ',' INTO WA_ADRC-STREET.
ENDIF.
IF WA_ADRC-STR_SUPPL2 IS NOT INITIAL. "NEXT LINE IS NOT INITIAL
CONCATENATE WA_ADRC-STR_SUPPL1 ',' INTO WA_ADRC-STR_SUPPL1.
ENDIF.
CONCATENATE WA_ADRC-STREET
WA_ADRC-STR_SUPPL1
WA_ADRC-STR_SUPPL2 INTO GV_ADDRESS2 SEPARATED BY SPACE.
REPLACE ',,' WITH ',' INTO: GV_ADDRESS1 , GV_ADDRESS2.
REPLACE ', ,' WITH ',' INTO: GV_ADDRESS1 , GV_ADDRESS2.
REPLACE ' ,' WITH ',' INTO: GV_ADDRESS1 , GV_ADDRESS2.
GS_ITEM-VBELN = P_DOCNO.
CASE 'X'.
WHEN p_EKKO. GS_ITEM-TABLE = 'EKKO'.
WHEN p_VBRK. GS_ITEM-TABLE = 'VBRK'.
WHEN p_VBAK. GS_ITEM-TABLE = 'VBAK'.
ENDCASE.
GS_ITEM-GV_ADDRESS1 = GV_ADDRESS1.
GS_ITEM-GV_ADDRESS2 = GV_ADDRESS2.
DELETE GT_ITEM WHERE VBELN = P_DOCNO.
APPEND GS_ITEM TO GT_ITEM.
ENDIF.
ENDIF.
ENDIF.
ELSE.
DATA: DOC_NO TYPE VBRK-VBELN.
CASE 'X'.
WHEN p_EKKO. SELECT SINGLE EBELN FROM EKKO INTO DOC_NO.
WHEN p_VBRK. SELECT SINGLE VBELN FROM VBRK INTO DOC_NO.
WHEN p_VBAK. SELECT SINGLE VBELN FROM VBAK INTO DOC_NO.
ENDCASE.
IF sy-subrc eq 0.
MESSAGE 'NO COMPANY CODE FOUND' TYPE 'I' display like 'I' .
ELSE.
MESSAGE 'NO DATA' TYPE 'I' display like 'E'.
ENDIF.
P_DOCno = DOC_NO.
ENDIF.
ENDFORM. " F_PROCESS_DATA
*****************************************
* PROCESS DATA END *
*****************************************
******************************************************
* S T A R T - O F - S E L E C T I O N *
******************************************************
START-OF-SELECTION.
PERFORM F_PROCESS_DATA.
IF GT_ITEM[] IS NOT INITIAL.
call SCREEN 100.
ENDIF.
END-OF-SELECTION.
MODULE STATUS_0100 OUTPUT.
SET PF-STATUS 'ZMARK'. "<--- CUSTOMIZED GUI STATUS
* SET TITLEBAR 'xxx'.
PERFORM F_INIT_ALV.
ENDMODULE. " STATUS_0100 OUTPUT
MODULE USER_COMMAND_0100 INPUT.
save_ok = ok_code.
clear ok_code.
case save_ok.
when 'BACK' OR 'CANCEL'.
submit zmark VIA SELECTION-SCREEN WITH p_ekko EQ p_ekko
WITH p_DOCNO eq p_DOCNO.
when 'EXIT'.
LEAVE PROGRAM.
when 'F_BT_SEARCH'.
IF LV_VBELN NE ''.
p_DOCNO = LV_VBELN.
PERFORM F_PROCESS_DATA.
LV_VBELN = P_DOCno.
CALL METHOD g_Grid->REFRESH_TABLE_DISPLAY.
ELSE.
MESSAGE 'SEARCH FIELD IS BLANK' TYPE 'I' display like 'E'.
ENDIF.
endcase.
ENDMODULE. " USER_COMMAND_0100 INPUT
FORM F_INIT_ALV.
data: lt_exclude type ui_functions.
IF g_Custom_Container IS INITIAL.
" Create CONTAINER object with reference to container name in the screen
CREATE OBJECT g_Custom_Container
EXPORTING CONTAINER_NAME = g_Container.
" Create GRID object with reference to parent name
CREATE OBJECT g_Grid
EXPORTING I_PARENT = g_Custom_Container.
PERFORM u_prepare_fieldcatalog.
"****************************
" CELLTAB start "
"****************************
*-> Initially, set all checkbox cells editable.
DATA:
ls_celltab type lvc_s_styl,
lt_celltab type lvc_t_styl,
tp_iindex type i.
ls_celltab-fieldname = 'CHECKBOX'.
ls_celltab-style = cl_gui_alv_grid=>mc_style_enabled.
loop at gt_item INTO GS_ITEM.
tp_iindex = sy-tabix.
refresh lt_celltab.
ls_celltab-fieldname = 'CHECKBOX'.
ls_celltab-style = cl_gui_alv_grid=>mc_style_enabled.
insert ls_celltab into table lt_celltab.
gS_item-celltab[] = lT_celltab[].
modify GT_ITEM FROM GS_ITEM index tp_iindex.
endloop.
"****************************
" CELLTAB END "
"****************************
"****************************
" gs_layout settings start "
"****************************
* A Multiple columns, multiple rows with selection buttons.
* B Simple selection, listbox, Single row/column
* C Multiple rows without buttons
* D Multiple rows with buttons and select all ICON
gs_layout-sel_mode = 'D'. "SELECT ALL AT THE UPPER RIGHT
gs_layout-ZEBRA = 'X'.
gs_layout-stylefname = 'CELLTAB'.
"gs_layout-edit = 'X'. "Makes all Grid editable
"****************************
" gs_layout settings end "
"****************************
perform exclude_tb_functions changing lt_exclude.
" SET_TABLE_FOR_FIRST_DISPLAY
CALL METHOD g_Grid->SET_TABLE_FOR_FIRST_DISPLAY
EXPORTING
is_layout = gs_layout
it_toolbar_excluding = lt_exclude
CHANGING
it_fieldcatalog = gs_fieldcatalog
IT_OUTTAB = gt_item. " Data
************************************************************************
*Create object of the event class and setting handler for hotspot click
************************************************************************
************************************************************************
*Create object of the event class and setting handler for hotspot click
************************************************************************
CREATE OBJECT event_receiver.
SET HANDLER event_receiver->handle_hotspot_click FOR g_Grid."cl_alv_grid.
CREATE OBJECT e_object.
************************************************************************
*Create object of the event class and setting handler for hotspot click
************************************************************************
************************************************************************
*Create object of the event class and setting handler for hotspot click
************************************************************************
ELSE.
CALL METHOD g_Grid->REFRESH_TABLE_DISPLAY.
ENDIF.
ENDFORM.
form exclude_tb_functions changing pt_exclude type ui_functions.
* data ls_exclude type ui_func.
*
* ls_exclude = cl_gui_alv_grid=>mc_fc_refresh.
* append ls_exclude to pt_exclude.
* ls_exclude = cl_gui_alv_grid=>mc_fc_loc_copy_row.
* append ls_exclude to pt_exclude.
* ls_exclude = cl_gui_alv_grid=>mc_fc_loc_delete_row.
* append ls_exclude to pt_exclude.
* ls_exclude = cl_gui_alv_grid=>mc_fc_loc_append_row.
* append ls_exclude to pt_exclude.
* ls_exclude = cl_gui_alv_grid=>mc_fc_loc_insert_row.
* append ls_exclude to pt_exclude.
* ls_exclude = cl_gui_alv_grid=>mc_fc_loc_move_row.
* append ls_exclude to pt_exclude.
* ls_exclude = cl_gui_alv_grid=>mc_fc_loc_copy.
* append ls_exclude to pt_exclude.
* ls_exclude = cl_gui_alv_grid=>mc_fc_loc_cut.
* append ls_exclude to pt_exclude.
* ls_exclude = cl_gui_alv_grid=>mc_fc_loc_paste.
* append ls_exclude to pt_exclude.
* ls_exclude = cl_gui_alv_grid=>mc_fc_loc_paste_new_row.
* append ls_exclude to pt_exclude.
* ls_exclude = cl_gui_alv_grid=>mc_fc_loc_undo.
* append ls_exclude to pt_exclude.
endform. " EXCLUDE_TB_FUNCTIONS
*NOTE:
*1. create gui status zmark
* - assign cancel, back and exit
*2. create screen 100. copy into a file below and upload the screen 100
****************************************************************************
****************************************************************
* THIS FILE IS GENERATED BY THE SCREEN PAINTER. *
* NEVER CHANGE IT MANUALLY, PLEASE ! *
****************************************************************
*%_DYNPRO
*ZMARK_T
*0100
*700
* 40
*%_HEADER
*ZMARK_T 0100 0100 30112192 37 0 0 35141 0G E 20150624173745
*%_DESCRIPTION
*Test result screen
*%_FIELDS
*SY_PROG C CHAR 13 80 00 80 32 00 1 7 0 0 0 0 0 0 _____________
*GV_ADDRESS1 C CHAR 107 80 00 80 32 00 2 7 0 0 0 0 0 0 ___________________________________________________________________________________________________________
*GV_ADDRESS2 C CHAR 107 80 00 80 32 00 3 7 0 0 0 0 0 0 ___________________________________________________________________________________________________________
*C_ALV 108 00 00 00 30 00 4 6 0 0 0 22 U 1 1 101
*LV_VBELN C CHAR 25 80 00 80 00 00 27 6 0 0 0 0 0 0 _________________________
*BT_SEARCH CHAR 6 00 00 00 30 00 27 34 0 0 0 0 P 0 0 102 Search
* F_BT_SEARCH [bring this line up]
*P_EKKO C CHAR 1 80 00 80 00 00 28 6 0 0 0 0 A 0 0 103 G1 G1 G1 G1
*P_EKKO 0 CHAR 4 00 00 00 30 00 28 8 0 0 0 0 A 0 0 103 G1 G1 G1 G1 EKKO
*P_VBRK C CHAR 1 80 00 80 00 00 29 6 0 0 0 0 A 0 0 103 G1 G1 G1 G1
*P_VBRK 0 CHAR 4 00 00 00 30 00 29 8 0 0 0 0 A 0 0 103 G1 G1 G1 G1 VBRK
*P_VBAK C CHAR 1 80 00 80 00 00 30 6 0 0 0 0 A 0 0 103 G1 G1 G1 G1
*P_VBAK 0 CHAR 4 00 00 00 30 00 30 8 0 0 0 0 A 0 0 103 G1 G1 G1 G1 VBAK
*OK_CODE CHAR 20 80 10 00 00 00 255 1 O 0 0 0 0 0 0 ____________________
*%_FLOWLOGIC
*PROCESS BEFORE OUTPUT.
* MODULE STATUS_0100.
**
*PROCESS AFTER INPUT.
* MODULE USER_COMMAND_0100.
*%_PARAMS