Application Development 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: 

pf - Status create Problem

Former Member
0 Kudos

Hi,

i copy &paste this sample code to learn events in oo and i have to create pf-status

i do that create pf-status name VEHICLE but nothing happen ,

when i run the program i get just the line Click a button! and i dont see the more push butten that i add ,

i do that in (Freely Assigned Function Keys) way ?

Regards .

REPORT  zztest_events.
TYPE-POOLS: icon.
*****************************************************************
* Interface and Class declarations
*****************************************************************
INTERFACE i_vehicle.
  DATA     max_speed TYPE i.
  EVENTS speed_change EXPORTING value(new_speed) TYPE i.
  METHODS: drive,
           stop.
ENDINTERFACE.                    "I_VEHICLE
*----------------------------------------------------------------
CLASS c_ship DEFINITION.
  PUBLIC SECTION.
    METHODS constructor.
    INTERFACES i_vehicle.
  PRIVATE SECTION.
    ALIASES max FOR i_vehicle~max_speed.
    DATA ship_speed TYPE i.
ENDCLASS.                    "C_SHIP DEFINITION
*----------------------------------------------------------------
CLASS c_truck DEFINITION.
  PUBLIC SECTION.
    METHODS constructor.
    INTERFACES i_vehicle.
  PRIVATE SECTION.
    ALIASES max FOR i_vehicle~max_speed.
    DATA truck_speed TYPE i.
ENDCLASS.                    "C_TRUCK DEFINITION
*----------------------------------------------------------------
CLASS status DEFINITION.
  PUBLIC SECTION.
    CLASS-EVENTS button_clicked EXPORTING value(fcode) LIKE sy-ucomm.
    CLASS-METHODS: class_constructor,
                  user_action.
ENDCLASS.                    "STATUS DEFINITION
*----------------------------------------------------------------
CLASS c_list DEFINITION.
  PUBLIC SECTION.
    METHODS: fcode_handler FOR EVENT button_clicked OF status
                               IMPORTING fcode,
             list_change   FOR EVENT speed_change OF i_vehicle
                               IMPORTING new_speed,
             list_output.
  PRIVATE SECTION.
    DATA: id TYPE i,
          ref_ship  TYPE REF TO c_ship,
          ref_truck TYPE REF TO c_truck,
          BEGIN OF line,
            id TYPE i,
            flag,
            iref  TYPE REF TO i_vehicle,
            speed TYPE i,
          END OF line,
          list LIKE SORTED TABLE OF line WITH UNIQUE KEY id.
ENDCLASS.                    "C_LIST DEFINITION
*****************************************************************

*****************************************************************
* Implementations
*****************************************************************
CLASS c_ship IMPLEMENTATION.
  METHOD constructor.
    max = 30.
  ENDMETHOD.                    "CONSTRUCTOR
  METHOD i_vehicle~drive.
    CHECK ship_speed < max.
    ship_speed = ship_speed + 10.
    RAISE EVENT i_vehicle~speed_change
                EXPORTING new_speed = ship_speed.
  ENDMETHOD.                    "I_VEHICLE~DRIVE
  METHOD i_vehicle~stop.
    CHECK ship_speed > 0.
    ship_speed = 0.
    RAISE EVENT i_vehicle~speed_change
                EXPORTING new_speed = ship_speed.
  ENDMETHOD.                    "I_VEHICLE~STOP
ENDCLASS.                    "C_SHIP IMPLEMENTATION
*----------------------------------------------------------------
CLASS c_truck IMPLEMENTATION.
  METHOD constructor.
    max = 150.
  ENDMETHOD.                    "CONSTRUCTOR
  METHOD i_vehicle~drive.
    CHECK truck_speed < max.
    truck_speed = truck_speed + 50.
    RAISE EVENT i_vehicle~speed_change
                EXPORTING new_speed = truck_speed.
  ENDMETHOD.                    "I_VEHICLE~DRIVE
  METHOD i_vehicle~stop.
    CHECK truck_speed > 0.
    truck_speed = 0.
    RAISE EVENT i_vehicle~speed_change
                EXPORTING new_speed = truck_speed.
  ENDMETHOD.                    "I_VEHICLE~STOP
ENDCLASS.                    "C_TRUCK IMPLEMENTATION
*----------------------------------------------------------------
CLASS status IMPLEMENTATION.
  METHOD class_constructor.
    SET PF-STATUS 'VEHICLE'.
    WRITE 'Click a button!'.

  ENDMETHOD.                    "CLASS_CONSTRUCTOR
  METHOD user_action.
    RAISE EVENT button_clicked EXPORTING fcode = sy-ucomm.
  ENDMETHOD.                    "USER_ACTION
ENDCLASS.                    "STATUS IMPLEMENTATION
*----------------------------------------------------------------
CLASS c_list IMPLEMENTATION.
  METHOD fcode_handler .
    CLEAR line.
    CASE fcode.
      WHEN 'CREA_SHIP'.
        id = id + 1.
        CREATE OBJECT ref_ship.
        line-id = id.
        line-flag = 'C'.
        line-iref = ref_ship.
        APPEND line TO list.
      WHEN 'CREA_TRUCK'.
        id = id + 1.
        CREATE OBJECT ref_truck.
        line-id = id.
        line-flag = 'T'.
        line-iref = ref_truck.
        APPEND line TO list.
      WHEN 'DRIVE'.
        CHECK sy-lilli > 0.
        READ TABLE list INDEX sy-lilli INTO line.
        CALL METHOD line-iref->drive.
      WHEN 'STOP'.
        LOOP AT list INTO line.
          CALL METHOD line-iref->stop.
        ENDLOOP.
      WHEN 'CANCEL'.
        LEAVE PROGRAM.
    ENDCASE.
    CALL METHOD list_output.
  ENDMETHOD.                    "FCODE_HANDLER
  METHOD list_change .
    line-speed = new_speed.
    MODIFY TABLE list FROM line.
  ENDMETHOD.                    "LIST_CHANGE
  METHOD list_output.
    sy-lsind = 0.
    SET TITLEBAR 'TIT'.
    LOOP AT list INTO line.
      IF line-flag = 'C'.
        WRITE / icon_ws_ship AS ICON.
      ELSEIF line-flag = 'T'.
        WRITE / icon_ws_truck AS ICON.
      ENDIF.
      WRITE: 'Speed = ', line-speed.
    ENDLOOP.
  ENDMETHOD.                    "LIST_OUTPUT
ENDCLASS.                    "C_LIST IMPLEMENTATION
*****************************************************************

*****************************************************************
* Global data of program
*****************************************************************
DATA list TYPE REF TO c_list.
*****************************************************************
* Program Events
*****************************************************************
START-OF-SELECTION.
  CREATE OBJECT list.
  SET HANDLER: list->fcode_handler,
              list->list_change FOR ALL INSTANCES.
*----------------------------------------------------------------
AT USER-COMMAND.
  CALL METHOD status=>user_action.

1 ACCEPTED SOLUTION

former_member212653
Active Contributor
0 Kudos

You have to create the PF-STATUS "VEHICLE" with the following function codes from your code:


      WHEN 'CREA_SHIP'.

      WHEN 'CREA_TRUCK'.

      WHEN 'DRIVE'.

      WHEN 'STOP'.

      WHEN 'CANCEL'.

then activate the PF-STATUS. it will work.

3 REPLIES 3

former_member212653
Active Contributor
0 Kudos

You have to create the PF-STATUS "VEHICLE" with the following function codes from your code:


      WHEN 'CREA_SHIP'.

      WHEN 'CREA_TRUCK'.

      WHEN 'DRIVE'.

      WHEN 'STOP'.

      WHEN 'CANCEL'.

then activate the PF-STATUS. it will work.

0 Kudos

Hi Sourav ,

Thanks i do that and it don't work.,

i put CREA_SHIP and & CREA_TRUCK in Freely Assigned Function Keys annd activate and nothing happen.

what i miss?

Regards

0 Kudos

don't create in function keys...use application toolbar.