To delete BOM component from production order
1:17 AM
REPORT zsample.
PARAMETERS : p_aufnr like afko-aufnr DEFAULT '318233000039'.
START-OF-SELECTION.
PERFORM f_delete_bom USING p_aufnr.
END-OF-SELECTION.
FORM f_delete_bom USING p_aufnr.
* -- Type --
TYPES: BEGIN OF ty_afko_resb,
aufnr TYPE afko-aufnr,
rsnum TYPE resb-rsnum,
rspos TYPE resb-rspos,
END OF ty_afko_resb.
* Data declration
DATA: lt_resbd_to_delete TYPE coxt_t_resbdel,
ls_resbd_to_delete TYPE coxt_s_resbdel,
ct_return TYPE coxt_t_bapireturn,
wa_return TYPE LINE OF coxt_t_bapireturn,
ct_return2 TYPE coxt_bapireturn,
l_error_occured(1) TYPE c,
l_temp_order_key LIKE cif_r3ord-aufnr.
DATA : lt_afko_resb TYPE TABLE OF ty_afko_resb,
wa_afko_resb LIKE LINE OF lt_afko_resb.
* Initialized
CLEAR l_temp_order_key.
REFRESH lt_afko_resb.
* Get Data using the Production order number
SELECT a~aufnr r~rsnum r~rspos
FROM afko AS a
INNER JOIN resb AS r ON a~rsnum = r~rsnum
INTO CORRESPONDING FIELDS OF TABLE lt_afko_resb
WHERE a~aufnr = p_aufnr.
* AND r~xloek <> 'X'.
IF sy-subrc EQ 0.
"--Append the component to delete--
* clear ls_resbd_to_delete.
* ls_resbd_to_delete-rsnum = '8088014'.
* ls_resbd_to_delete-rspos = '3'.
* APPEND ls_resbd_to_delete to lt_resbd_to_delete.
LOOP AT lt_afko_resb INTO wa_afko_resb.
CLEAR ls_resbd_to_delete.
ls_resbd_to_delete-rsnum = wa_afko_resb-rsnum.
ls_resbd_to_delete-rspos = wa_afko_resb-rspos.
APPEND ls_resbd_to_delete TO lt_resbd_to_delete.
ENDLOOP.
"--Function module to delete the component--
CALL FUNCTION 'CO_XT_COMPONENTS_DELETE'
EXPORTING
it_resbkeys_to_delete = lt_resbd_to_delete
IMPORTING
e_error_occurred = l_error_occured
TABLES
ct_bapireturn = ct_return
EXCEPTIONS
delete_failed = 1
OTHERS = 2.
IF sy-subrc = 0 AND ct_return[] IS INITIAL.
PERFORM change_flag_set(saplcozv).
REFRESH ct_return.
l_temp_order_key = p_aufnr.
CALL FUNCTION 'CO_XT_ORDER_PREPARE_COMMIT'
IMPORTING
e_order_key = l_temp_order_key
es_bapireturn = ct_return2
e_error_occurred = l_error_occured.
COMMIT WORK AND WAIT.
IF l_error_occured IS NOT INITIAL.
WRITE:/ 'Deleted : ' , p_aufnr.
ELSE.
WRITE:/ 'Error in deleting : ' , p_aufnr.
ENDIF.
ELSE.
WRITE:/ 'Delete failed : ' , p_aufnr.
data lv_message type string.
LOOP AT ct_return into wa_return.
call function 'MESSAGE_TEXT_BUILD'
exporting
msgid = wa_return-id "Messg class
msgnr = wa_return-number "Messg No.
msgv1 = wa_return-message_v1
msgv2 = wa_return-message_v2
msgv3 = wa_return-message_v3
msgv4 = wa_return-message_v4
importing
message_text_output = lv_message.
.
WRITE:/ 'Delete failed : ' , p_aufnr, lv_message.
ENDLOOP.
ENDIF.
ELSE.
WRITE:/ 'Nothing to delete : ' , p_aufnr.
ENDIF.
ENDFORM. "f_delete_bom
PARAMETERS : p_aufnr like afko-aufnr DEFAULT '318233000039'.
START-OF-SELECTION.
PERFORM f_delete_bom USING p_aufnr.
END-OF-SELECTION.
FORM f_delete_bom USING p_aufnr.
* -- Type --
TYPES: BEGIN OF ty_afko_resb,
aufnr TYPE afko-aufnr,
rsnum TYPE resb-rsnum,
rspos TYPE resb-rspos,
END OF ty_afko_resb.
* Data declration
DATA: lt_resbd_to_delete TYPE coxt_t_resbdel,
ls_resbd_to_delete TYPE coxt_s_resbdel,
ct_return TYPE coxt_t_bapireturn,
wa_return TYPE LINE OF coxt_t_bapireturn,
ct_return2 TYPE coxt_bapireturn,
l_error_occured(1) TYPE c,
l_temp_order_key LIKE cif_r3ord-aufnr.
DATA : lt_afko_resb TYPE TABLE OF ty_afko_resb,
wa_afko_resb LIKE LINE OF lt_afko_resb.
* Initialized
CLEAR l_temp_order_key.
REFRESH lt_afko_resb.
* Get Data using the Production order number
SELECT a~aufnr r~rsnum r~rspos
FROM afko AS a
INNER JOIN resb AS r ON a~rsnum = r~rsnum
INTO CORRESPONDING FIELDS OF TABLE lt_afko_resb
WHERE a~aufnr = p_aufnr.
* AND r~xloek <> 'X'.
IF sy-subrc EQ 0.
"--Append the component to delete--
* clear ls_resbd_to_delete.
* ls_resbd_to_delete-rsnum = '8088014'.
* ls_resbd_to_delete-rspos = '3'.
* APPEND ls_resbd_to_delete to lt_resbd_to_delete.
LOOP AT lt_afko_resb INTO wa_afko_resb.
CLEAR ls_resbd_to_delete.
ls_resbd_to_delete-rsnum = wa_afko_resb-rsnum.
ls_resbd_to_delete-rspos = wa_afko_resb-rspos.
APPEND ls_resbd_to_delete TO lt_resbd_to_delete.
ENDLOOP.
"--Function module to delete the component--
CALL FUNCTION 'CO_XT_COMPONENTS_DELETE'
EXPORTING
it_resbkeys_to_delete = lt_resbd_to_delete
IMPORTING
e_error_occurred = l_error_occured
TABLES
ct_bapireturn = ct_return
EXCEPTIONS
delete_failed = 1
OTHERS = 2.
IF sy-subrc = 0 AND ct_return[] IS INITIAL.
PERFORM change_flag_set(saplcozv).
REFRESH ct_return.
l_temp_order_key = p_aufnr.
CALL FUNCTION 'CO_XT_ORDER_PREPARE_COMMIT'
IMPORTING
e_order_key = l_temp_order_key
es_bapireturn = ct_return2
e_error_occurred = l_error_occured.
COMMIT WORK AND WAIT.
IF l_error_occured IS NOT INITIAL.
WRITE:/ 'Deleted : ' , p_aufnr.
ELSE.
WRITE:/ 'Error in deleting : ' , p_aufnr.
ENDIF.
ELSE.
WRITE:/ 'Delete failed : ' , p_aufnr.
data lv_message type string.
LOOP AT ct_return into wa_return.
call function 'MESSAGE_TEXT_BUILD'
exporting
msgid = wa_return-id "Messg class
msgnr = wa_return-number "Messg No.
msgv1 = wa_return-message_v1
msgv2 = wa_return-message_v2
msgv3 = wa_return-message_v3
msgv4 = wa_return-message_v4
importing
message_text_output = lv_message.
.
WRITE:/ 'Delete failed : ' , p_aufnr, lv_message.
ENDLOOP.
ENDIF.
ELSE.
WRITE:/ 'Nothing to delete : ' , p_aufnr.
ENDIF.
ENDFORM. "f_delete_bom
How to directly edit a table content in SE16n / se11
1:20 AM
To edit a table content:-
1. se16n
1. se16n
- type &sap_edit into the command input
- then execute and there is a delete /edit icon below the menu bar
- double click the enty that you wish to change
- type /h into the command input also known as debugging mode
- press enter
- in the debugging mode change the variable code = EDIT
- then execute and now the field can be edited
Abap Logic: Field symbol to use in abap for excel
12:57 AM
Most of the time if creating a report with alv. When user need us to make a excel report we would create a whole damn list of field or re-write the field back to the codes (REDUNDANT~!)
This snippet could save your time and energy to code the excel or open dataset part.
DATA : BEGIN OF itab_output OCCURS 0,
sno(10) TYPE c,
pernr LIKE pernr-pernr,
ename LIKE pernr-ename,
werks LIKE p0001-werks,
name1 LIKE t500p-name1,
molga LIKE t001p-molga,
END OF itab_output.
FIELD-SYMBOLS: <field> TYPE ANY,
DATA: alv_fcatlog TYPE slis_t_fieldcat_alv,
fcatlog_hdr LIKE LINE OF alv_fcatlog,
l_line TYPE sy-tfill,
l_field TYPE string,
l_file TYPE rlgrap-filename
l_tab TYPE abap_char1 VALUE cl_abap_char_utilities=>horizontal_tab.
LOOP AT itab_output.
CLEAR l_line.
LOOP AT alv_fcatlog INTO fcatlog_hdr.
CONCATENATE 'ITAB_OUTPUT-' fcatlog_hdr-fieldname
INTO l_field.
ASSIGN (l_field) TO <field>.
IF sy-tabix = 1.
MOVE <field> to l_line.
ELSE.
CONCATENATE l_line <field> INTO l_line SEPARATED BY l_tab.
ENDIF.
ENDLOOP.
TRANSFER l_line TO l_file.
ENDLOOP.
This snippet could save your time and energy to code the excel or open dataset part.
DATA : BEGIN OF itab_output OCCURS 0,
sno(10) TYPE c,
pernr LIKE pernr-pernr,
ename LIKE pernr-ename,
werks LIKE p0001-werks,
name1 LIKE t500p-name1,
molga LIKE t001p-molga,
END OF itab_output.
FIELD-SYMBOLS: <field> TYPE ANY,
DATA: alv_fcatlog TYPE slis_t_fieldcat_alv,
fcatlog_hdr LIKE LINE OF alv_fcatlog,
l_line TYPE sy-tfill,
l_field TYPE string,
l_file TYPE rlgrap-filename
l_tab TYPE abap_char1 VALUE cl_abap_char_utilities=>horizontal_tab.
LOOP AT itab_output.
CLEAR l_line.
LOOP AT alv_fcatlog INTO fcatlog_hdr.
CONCATENATE 'ITAB_OUTPUT-' fcatlog_hdr-fieldname
INTO l_field.
ASSIGN (l_field) TO <field>.
IF sy-tabix = 1.
MOVE <field> to l_line.
ELSE.
CONCATENATE l_line <field> INTO l_line SEPARATED BY l_tab.
ENDIF.
ENDLOOP.
TRANSFER l_line TO l_file.
ENDLOOP.
Table maintenance generator - how to enlarge the input area.
12:09 AM
tcode = SE11
1. Generate the new table maintenance.
2. Double click on the generated screen.
3. At the main attribute tab. Enlarge the width eg 181
4. The click on the layout.
5. From the layout make sure it is showing the element list.
6. Click change.
7. Enlarge too the fields length ie. 181
1. Generate the new table maintenance.
2. Double click on the generated screen.
3. At the main attribute tab. Enlarge the width eg 181
4. The click on the layout.
5. From the layout make sure it is showing the element list.
6. Click change.
7. Enlarge too the fields length ie. 181
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