Application Development and Automation Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 
Read only

Dynamic Push button text

Former Member
0 Likes
6,933

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.

1 ACCEPTED SOLUTION
Read only

Former Member
0 Likes
4,203

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.

7 REPLIES 7
Read only

Former Member
0 Likes
4,204

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.

Read only

0 Likes
4,203

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.

Read only

0 Likes
4,203

This message was moderated.

Read only

Former Member
4,201

Hi Adithya mahadas,

   Please follow the below screen shot...

Hope it useful

Regards,

Vijay SR

Read only

0 Likes
4,201

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.

Read only

ThangaPrakash
Active Contributor
0 Likes
4,201

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

Read only

former_member226419
Contributor
0 Likes
4,201

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