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.
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 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
| User | Count |
|---|---|
| 6 | |
| 2 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 |