2014 Mar 19 10:26 PM
Hi,
I checked SDN but couldn't get the right answer.
Can you please let me know how to get Dynamic Text/ICON on my push button.
I can achieve this thru IMPORT, EXPORT, GENERATE DYNPRO...but as this is not supported by SAP, I need another approach for changing my push button text dynamically.
NOTE: My Pushbutton is NOT on any of the toolbars(Application toolbar etc.). It is on the screen which is NOT a selection screen.
Thanks & Regards,
Adithya M.
2014 Mar 19 11:24 PM
Name your push button gv_text and mark it as output only. Then create a global variable with name gv_text of type C (say length 50) and fill this with your text some time in the PBO.
2014 Mar 19 11:24 PM
Name your push button gv_text and mark it as output only. Then create a global variable with name gv_text of type C (say length 50) and fill this with your text some time in the PBO.
2014 Mar 26 9:05 AM
Hi Jamie,
Thank you, now I'm able to get the text dynamically.
Is there any option to provide ICON on this pushbutton dynamically?
Thanks & Regards,
Adithya M.
2014 Mar 26 9:16 AM
2014 Mar 20 4:46 AM
Hi Adithya mahadas,
Please follow the below screen shot...
Hope it useful
Regards,
Vijay SR
2014 Mar 26 9:06 AM
Hi Vijaya Kumar,
Thank you, now I'm able to get the text dynamically.
Is there any option to provide ICON on this pushbutton dynamically?
Thanks & Regards,
Adithya M.
2014 Mar 20 7:03 AM
Hello Adithya,
You can achieve it using the function module "ICON_CREATE".
Also refer to the below SAP sample program given in PUSHBUTTON F1 help.
TABLES sscrfields.
TYPE-POOLS icon.
SELECTION-SCREEN:
BEGIN OF SCREEN 500 AS WINDOW TITLE title,
PUSHBUTTON 2(10) but1 USER-COMMAND cli1,
PUSHBUTTON 12(30) but2 USER-COMMAND cli2
VISIBLE LENGTH 10,
END OF SCREEN 500.
AT SELECTION-SCREEN.
CASE sscrfields.
WHEN 'CLI1'.
...
WHEN 'CLI2'.
...
ENDCASE.
START-OF-SELECTION.
title = 'Push button'.
but1 = 'Button 1'.
CALL FUNCTION 'ICON_CREATE'
EXPORTING
name = icon_information
text = 'Button 2'
info = 'My Quickinfo'
IMPORTING
RESULT = but2
EXCEPTIONS
OTHERS = 0.
CALL SELECTION-SCREEN '0500' STARTING AT 10 10.
Regards,
TP
2014 Mar 20 8:17 AM
Hi,
Create one container in screen painter and use the below code.
type-pools : slis.
*Class definition for ALV toolbar
*CLASS: lcl_alv_toolbar DEFINITION DEFERRED.
*PUBLIC .
CLASS lcl_event_receiver DEFINITION DEFERRED .
*PUBLIC SECTION.
TABLES: MAra.
types: begin of t_mara,
matnr type matnr,
ersda type ersda,
end of t_mara,
begin of t_mara1,
matnr type matnr,
ernam type ernam,
laeda TYPE laeda,
end of t_mara1.
data: i_mara type STANDARD TABLE OF t_mara,
i_mara1 type STANDARD TABLE OF t_mara1,
w_mara type t_mara,
w_mara1 type t_mara1,
l_matnr type matnr,
*** w_fieldcatalog TYPE slis_t_fieldcat_alv WITH HEADER LINE,
** w_fieldcatalog TYPE lvc_t_fcat,
** w_fieldcatalog1 TYPE slis_t_fieldcat_alv WITH HEADER LINE,
c_alv_toolbarmanager TYPE REF TO cl_alv_grid_toolbar_manager, "Toolbar manager
c_ccont TYPE REF TO cl_gui_custom_container, "Custom container object
c_alvgd TYPE REF TO cl_gui_alv_grid, "ALV grid object
** c_alv_toolbar TYPE REF TO lcl_alv_toolbar,
it_layout TYPE lvc_s_layo, "Layout
it_fcat TYPE lvc_t_fcat, "Field catalogue
grid1 TYPE REF TO cl_gui_alv_grid,
event_receiver TYPE REF TO lcl_event_receiver,
custom_container1 TYPE REF TO cl_gui_custom_container.
DATA : ty_toolbar TYPE stb_button.
SELECT-OPTIONS: s_matnr for mara-matnr.
SELECTION-SCREEN: FUNCTION KEY 1,
FUNCTION KEY 2.
AT SELECTION-SCREEN .
select SINGLE matnr from mara
into l_matnr
where matnr in s_matnr.
if sy-subrc <> 0.
MESSAGE: 'Material number is incorrect' TYPE 'E'.
endif.
call SCREEN 600.
*
*
*
**
*
**START-OF-SELECTION.
** select matnr ersda from mara
** into TABLE i_mara where matnr in s_matnr.
*
*
** PERFORM f_fieldcatalog.
** perform f_display_alv.
*
**---------------------------------------------------------------------*
** CLASS lcl_alv_toolbar DEFINITION
**---------------------------------------------------------------------*
** ALV event handler
**---------------------------------------------------------------------*
**CLASS lcl_alv_toolbar DEFINITION.
** PUBLIC SECTION.
***Constructor
*** methods:
** METHODS: constructor
** IMPORTING
** io_alv_grid TYPE REF TO cl_gui_alv_grid,
***Event for toolbar
** on_toolbar
** FOR EVENT toolbar
** OF cl_gui_alv_grid
** IMPORTING
** e_object.
*
*
*
*
**ENDCLASS. "lcl_alv_toolbar DEFINITION
*
CLASS lcl_event_receiver DEFINITION.
PUBLIC SECTION.
methods:
handle_toolbar
FOR EVENT toolbar OF cl_gui_alv_grid
IMPORTING e_object e_interactive,
handle_user_command
for EVENT user_command of cl_gui_alv_grid
IMPORTING e_ucomm.
* PRIVATE SECTION.
ENDCLASS.
*
**---------------------------------------------------------------------*
** CLASS lcl_alv_toolbar IMPLEMENTATION
**---------------------------------------------------------------------*
** ALV event handler
**---------------------------------------------------------------------*
*
CLASS lcl_event_receiver IMPLEMENTATION.
method handle_toolbar.
DATA: ls_toolbar TYPE stb_button.
*
*** CLEAR ls_toolbar.
*** MOVE 3 TO ls_toolbar-butn_type.
*** APPEND ls_toolbar TO e_object->mt_toolbar.
*** append an icon to show booking table
** CLEAR ls_toolbar.
** MOVE 'ZBTN' TO ls_toolbar-function.
** APPEND ls_toolbar TO e_object->mt_toolbar.
*
CLEAR ls_toolbar.
MOVE 3 TO ls_toolbar-butn_type.
APPEND ls_toolbar TO e_object->mt_toolbar.
** append an icon to show booking table
CLEAR ls_toolbar.
MOVE 'BOOKINGS' TO ls_toolbar-function.
* MOVE icon_employee TO ls_toolbar-icon.
* MOVE 'Show Bookings'(111) TO ls_toolbar-quickinfo.
if s_matnr is initial.
MOVE 'BUTTON2222' TO ls_toolbar-text.
else.
clear: ls_toolbar-text.
MOVE 'BUTTON' TO ls_toolbar-text.
endif.
* else.
* MOVE 'BUTTON2'(112) TO ls_toolbar-text.
* endif.
MOVE ' ' TO ls_toolbar-disabled.
APPEND ls_toolbar TO e_object->mt_toolbar.
endmethod.
*
method handle_user_command.
DATA: lt_rows TYPE lvc_t_row.
CASE e_ucomm.
WHEN 'BOOKINGS'.
** START-OF-SELECTION.
** SELECTION-SCREEN BEGIN OF SCREEN 500.
** SELECT-OPTIONS: s_matnr for mara-matnr.
** SELECTION-SCREEN END OF SCREEN 500.
call SELECTION-SCREEN 1000 STARTING AT 10 5 ENDING AT 80 10.
** s_matnr-low = 1000.
ENDCASE.
endmethod.
endclass.
*
**CLASS lcl_alv_toolbar IMPLEMENTATION.
** METHOD constructor.
*** Create ALV toolbar manager instance
** CREATE OBJECT c_alv_toolbarmanager
** EXPORTING
** io_alv_grid = io_alv_grid.
** ENDMETHOD. "constructor
*
*
*
** METHOD on_toolbar.
*** Add customized toolbar buttons.
*** variable for Toolbar Button
*** ty_toolbar-icon = icon_generate.
** ty_toolbar-function = 'ZBTN'.
** ty_toolbar-butn_type = 0.
** ty_toolbar-text = 'Button1'.
** APPEND ty_toolbar TO e_object->mt_toolbar.
**
** ty_toolbar-function = 'ZBTN1'.
** ty_toolbar-butn_type = 0.
** ty_toolbar-text = 'Button2'.
**
** APPEND ty_toolbar TO e_object->mt_toolbar.
**
*** perform f_fetch_sec.
**
**
** ENDMETHOD.
**ENDCLASS.
**
**end-OF-SELECTION.
*
**&---------------------------------------------------------------------*
**& Form f_fieldcatalog1
**&---------------------------------------------------------------------*
** text
**----------------------------------------------------------------------*
**form f_fieldcatalog1.
**
** w_fieldcatalog1-fieldname = 'MATNR'.
** w_fieldcatalog1-seltext_m = 'MATERIAL NUMBER'.
** w_fieldcatalog1-tabname = 'I_MARA1'.
** w_fieldcatalog1-col_pos = 0.
*** w_fieldcatalog-icon = c_con1,8.
*** w_fieldcatalog-inttype = c_con19.
** w_fieldcatalog1-outputlen = '18'.
** APPEND w_fieldcatalog1 TO w_fieldcatalog1.
** CLEAR w_fieldcatalog.
**
** w_fieldcatalog1-fieldname = 'ERNAM'.
** w_fieldcatalog1-seltext_m = 'Name of Person who Created the Object' .
** w_fieldcatalog1-tabname = 'I_MARA1'.
** w_fieldcatalog1-col_pos = 1.
** w_fieldcatalog1-outputlen = '12' .
** APPEND w_fieldcatalog1 TO w_fieldcatalog1.
** CLEAR w_fieldcatalog.
**
**
** w_fieldcatalog1-fieldname = 'LAEDA'.
** w_fieldcatalog1-seltext_m = 'Date of Last Change' .
** w_fieldcatalog1-tabname = 'I_MARA1'.
** w_fieldcatalog1-col_pos = 2.
** w_fieldcatalog1-outputlen = '8' .
** APPEND w_fieldcatalog1 TO w_fieldcatalog1.
** CLEAR w_fieldcatalog1.
**
**endform. "f_fieldcatalog1
*
*
*
*
*
*
*
*
**&---------------------------------------------------------------------*
**& Form F_DISPLAY_ALV
**&---------------------------------------------------------------------*
** text
**----------------------------------------------------------------------*
** --> p1 text
** <-- p2 text
**----------------------------------------------------------------------*
**FORM F_DISPLAY_ALV .
** CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
** EXPORTING
** I_CALLBACK_PROGRAM = sy-repid
*** i_callback_pf_status_set = 'SET_PF_STATUS'
** I_callback_user_command = 'USER_COMMAND' "see FORM
** IT_FIELDCAT = w_fieldcatalog[]
** TABLES
** T_OUTTAB = i_mara[].
*
*
*
*
*
**ENDFORM. " F_DISPLAY_ALV
**&---------------------------------------------------------------------*
**& Form F_FIELDCATALOG
**&---------------------------------------------------------------------*
** text
**----------------------------------------------------------------------*
** --> p1 text
** <-- p2 text
**----------------------------------------------------------------------*
**FORM F_FIELDCATALOG .
*** w_fieldcatalog-fieldname = 'MATNR'.
*** w_fieldcatalog-seltext_m = 'MATERIAL NUMBER'.
*** w_fieldcatalog-tabname = 'I_MARA'.
*** w_fieldcatalog-col_pos = 0.
**** w_fieldcatalog-icon = c_con1,8.
**** w_fieldcatalog-inttype = c_con19.
*** w_fieldcatalog-outputlen = '18'.
*** APPEND w_fieldcatalog TO w_fieldcatalog.
*** CLEAR w_fieldcatalog.
***
*** w_fieldcatalog-fieldname = 'ERSDA'.
*** w_fieldcatalog-seltext_m = 'Created On' .
*** w_fieldcatalog-tabname = 'I_MARA'.
*** w_fieldcatalog-col_pos = 1.
*** w_fieldcatalog-outputlen = '8' .
*** APPEND w_fieldcatalog TO w_fieldcatalog.
*** CLEAR w_fieldcatalog.
**
** DATA lv_fldcat TYPE lvc_s_fcat.
** CLEAR lv_fldcat.
** lv_fldcat-row_pos = '1'.
** lv_fldcat-col_pos = '1'.
** lv_fldcat-fieldname = 'MATNR'.
** lv_fldcat-tabname = 'I_MARA'.
** lv_fldcat-outputlen = 18.
** lv_fldcat-scrtext_m = 'MATNR'.
** APPEND lv_fldcat TO it_fcat.
** CLEAR lv_fldcat.
** lv_fldcat-row_pos = '1'.
** lv_fldcat-col_pos = '2'.
** lv_fldcat-fieldname = 'ERSDA'.
** lv_fldcat-tabname = 'I_MARA'.
** lv_fldcat-outputlen = 10.
** lv_fldcat-scrtext_m = 'ERSDA'.
** APPEND lv_fldcat TO it_fcat.
** CLEAR lv_fldcat.
**ENDFORM. " F_FIELDCATALOG
*
*"user_command
**&---------------------------------------------------------------------*
**& Form F_DISPLAY_SEC_ALV
**&---------------------------------------------------------------------*
** text
**----------------------------------------------------------------------*
** --> p1 text
** <-- p2 text
**----------------------------------------------------------------------*
**FORM F_DISPLAY_SEC_ALV .
**
** CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
** EXPORTING
** I_CALLBACK_PROGRAM = sy-repid
** IT_FIELDCAT = w_fieldcatalog1[]
*** i_callback_pf_status_set = 'SET_PF_STATUS'
*** i_callback_user_command = 'USER_COMMAND'
** TABLES
** T_OUTTAB = i_mara1[].
**ENDFORM. " F_DISPLAY_SEC_ALV
*
**&---------------------------------------------------------------------*
**& Form user_command
**&---------------------------------------------------------------------*
** text
**----------------------------------------------------------------------*
** -->P_UCOMM text
** -->P_SELFIELD text
**----------------------------------------------------------------------*
**FORM user_command USING p_ucomm LIKE sy-ucomm
** p_selfield TYPE slis_selfield.
**
** CASE p_ucomm.
** WHEN '&IC1'. " SAP standard code for double-clicking
** IF p_selfield-fieldname = 'MATNR'.
** SET PARAMETER ID 'MAT' FIELD p_selfield-value.
** perform f_fetch_sec.
** PERFORM F_FIELDCATALOG1.
** PERFORM f_display_sec_ALV.
** Refresh w_fieldcatalog1.
** ENDIF.
**
** ENDCASE.
**
**ENDFORM . "user_command
**&---------------------------
**------------------------------------------*
**& Form F_FETCH_SEC
**&---------------------------------------------------------------------*
** text
**----------------------------------------------------------------------*
** --> p1 text
** <-- p2 text
**----------------------------------------------------------------------*
**FORM F_FETCH_SEC .
** select matnr ernam laeda
** FROM mara into TABLE i_mara1
** FOR ALL ENTRIES IN i_mara
** where matnr = i_mara-matnr.
**ENDFORM. " F_FETCH_SEC
*
**FORM gui_stat USING rt_extab TYPE slis_t_extab.
**
** SET PF-STATUS 'SET_PF_STATUS' EXCLUDING rt_extab.
** SET TITLEBAR text-005.
**
**ENDFORM.
*&---------------------------------------------------------------------*
*& Module STATUS_0600 OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE STATUS_0600 OUTPUT.
SET PF-STATUS 'ABC'.
SET TITLEBAR 'ABC'.
ENDMODULE. " STATUS_0600 OUTPUT
*&---------------------------------------------------------------------*
*& Module ALV_GRID_OUTPUT OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE ALV_GRID_OUTPUT OUTPUT.
IF custom_container1 is initial.
select matnr ersda from mara
into TABLE i_mara where matnr in s_matnr.
CREATE OBJECT custom_container1
EXPORTING
container_name = 'CC_CONT'
EXCEPTIONS
cntl_error = 1
cntl_system_error = 2
create_error = 3
lifetime_error = 4
lifetime_dynpro_dynpro_link = 5.
IF sy-subrc ne 0.
* add your handling, for example
CALL FUNCTION 'POPUP_TO_INFORM'
EXPORTING
titel = sy-repid
txt2 = sy-subrc
txt1 = 'The control could not be created'(510).
ENDIF.
CREATE OBJECT grid1
EXPORTING
i_parent = custom_container1.
* Set a titlebar for the grid control
*
it_layout-grid_title = 'Flights'(100).
* allow to select multiple lines
it_layout-sel_mode = 'A'.
CALL METHOD grid1->set_table_for_first_display
EXPORTING
i_structure_name = 'ZMARA'
is_layout = it_layout
CHANGING
it_outtab = i_mara.
CREATE OBJECT event_receiver.
SET HANDLER event_receiver->handle_user_command FOR grid1.
SET HANDLER event_receiver->handle_toolbar FOR grid1.
endif.
CALL METHOD grid1->set_toolbar_interactive.
*
** CREATE OBJECT c_ccont
** EXPORTING
** container_name = 'CC_CONT'.
***create object of alv grid
** CREATE OBJECT c_alvgd
** EXPORTING
** i_parent = c_ccont.
*** create ALV event handler
** CREATE OBJECT c_alv_toolbar
** EXPORTING
** io_alv_grid = c_alvgd.
*** Register event handler
** SET HANDLER c_alv_toolbar->on_toolbar FOR c_alvgd.
*** Fieldcatalogue for ALV
*** PERFORM alv_build_fieldcat.
** PERFORM f_fieldcatalog.
*** ALV attributes FOR LAYOUT
*** PERFORM alv_report_layout.
** CHECK NOT c_alvgd IS INITIAL.
*** Call ALV GRID
** CALL METHOD c_alvgd->set_table_for_first_display
** EXPORTING
** is_layout = it_layout
** CHANGING
** it_outtab = i_mara
** it_fieldcatalog = it_fcat
** EXCEPTIONS
** invalid_parameter_combination = 1
** program_error = 2
** too_many_lines = 3
** OTHERS = 4.
** IF sy-subrc <> 0.
** MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
** WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
** ENDIF.
**
** CREATE OBJECT event_receiver.
** SET HANDLER event_receiver->handle_user_command FOR grid1.
*
ENDMODULE. " ALV_GRID_OUTPUT OUTPUT
**&---------------------------------------------------------------------*
**& Module USER_COMMAND_0600 INPUT
**&---------------------------------------------------------------------*
** text
**----------------------------------------------------------------------*
MODULE USER_COMMAND_0600 INPUT.
case sy-ucomm.
when 'BACK'.
* leave to SCREEN 0.
* call screen 1000.
SUBMIT ZTEST_SD1 via SELECTION-SCREEN.
endcase.
ENDMODULE. " USER_COMMAND_0600 INPUT
BR
Sumeet