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

Dialog OKCODE

Former Member
0 Likes
843

Daer All:

I have problem with okcode.

I click the GUI button and it can work.

But i click the CUI button in the next screen, it can"t work.

I think the reason is i don't clear the former okcode.

To use GUI buttons in the next screen, can someone tell me where I can clear okcode.

Thanks.

The code :

<garbled code removed by moderator>

Moderator message: please post only relevant code parts, your posts must contain less than 5000 characters to preserve readable formatting.

Edited by: Thomas Zloch on Nov 8, 2011 11:40 AM

4 REPLIES 4
Read only

Former Member
0 Likes
704

Hi

It's very hard to read your code: you need to remember there's a limit of characters can be written between Markup

Anyway it usually clear OK_CODE in user_command module before processing it, the value is stored in a new variable and ok_code is cleared:

SAVE_OK_CODE = OK_CODE.
CLEAR OK_CODE.

CASE SAVE_OK_CODE.
   ...............

Max

Read only

0 Likes
704

Dear max bianchi:

I repost the code:


REPORT  ZCH9TABCTRL.

*SCREENu8B8Au6578



*SCREENu5143u7D20 u5C0Du61C9
TABLES:  ZQACHK.

*u5BA3u544ASCREENu8B8Au6578u5167u8868
DATA : t_ZQACHK  TYPE STANDARD TABLE OF  ZQACHK  WITH HEADER
LINE.


*u5BA3u544A table control u8B8Au6578
CONTROLS : tabctrl TYPE TABLEVIEW USING SCREEN '9200'.


*GUIu8B8Au6578

DATA OK_CODE LIKE SY-UCOMM.


*for    SCREEN 9002 GUI
  DATA : ACTION TYPE C. "1 -->CREATE 2--->Change 3. Display


CALL SCREEN 9200.

*&---------------------------------------------------------------------*
*&      Module  SHOW_TABDATA  OUTPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE  SHOW_TABDATA  OUTPUT.


  MOVE-CORRESPONDING   t_ZQACHK   TO ZQACHK.



ENDMODULE.                 " SHOW_TABDATA  OUTPUT







*&---------------------------------------------------------------------*
*&      Module  MARK_LINE  INPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE   MARK_LINE   INPUT.

*  u53D6u5F97screenu8207itabu4E4Bu884Cu6578u5C0Du61C9u4F86u4FEEu6539u5167u5BB9
MODIFY   t_ZQACHK FROM ZQACHK INDEX tabctrl-CURRENT_LINE.


ENDMODULE.                 " MARK_LINE  INPUT
*&---------------------------------------------------------------------*
*&      Module  STATUS_9200  OUTPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE STATUS_9200 OUTPUT.
  SET PF-STATUS 'ZCH9TABCTRL'.
*  SET TITLEBAR 'xxx'.


*u6E05u9664u4E0Au6B21u8B8Au6578
CLEAR OK_CODE.

ENDMODULE.                 " STATUS_9200  OUTPUT
*&---------------------------------------------------------------------*
*&      Module  USER_COMMAND_9200  INPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE USER_COMMAND_9200 INPUT.

  CASE ok_code.
    WHEN 'MODIFY'.
*
      action = 2.
*

*      u8B80u6709u6A19u8A18u5230u4E4Bu5167u8868
      READ TABLE t_ZQACHK WITH KEY mark = 'X'.

*u82E5u6709u8B80u6210
      IF sy-subrc = 0.

*        u5C07u5167u8868u8F38u5230SCREEN
        MOVE-CORRESPONDING t_ZQACHK TO ZQACHK.

*        u547Cu53EB SCREEN

        CALL SCREEN 9000.
*
      ENDIF.
*
*
    WHEN 'DISPLAY'.

      action = 3.

      READ TABLE t_ZQACHK WITH KEY mark = 'X'.

      IF sy-subrc = 0.

        MOVE-CORRESPONDING t_ZQACHK TO ZQACHK.
        CALL SCREEN 9000.

      ENDIF.
*
*
    WHEN 'DELETE'.

      READ TABLE t_ZQACHK WITH KEY mark = 'X'.

      IF sy-subrc = 0.


*   
      ENDIF.




ENDCASE.

ENDMODULE.                 " USER_COMMAND_9200  INPUT





*&---------------------------------------------------------------------*
*&      Module  EXIT_9200  INPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE EXIT_9200 INPUT.

    CASE ok_code.

    WHEN 'EXIT'.

      LEAVE PROGRAM.

    WHEN 'CANCEL'.

      SET SCREEN 0.
      LEAVE SCREEN.

    WHEN OTHERS.
  ENDCASE.


ENDMODULE.                 " EXIT_9200  INPUT




*&---------------------------------------------------------------------*
*&      Module  STATUS_9000  OUTPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE STATUS_9000 OUTPUT.

  WRITE: OK_CODE.

CLEAR  OK_CODE.

WRITE: OK_CODE.

  SET PF-STATUS 'STATUS_9000'.



*  SET TITLEBAR 'xxx'.

ENDMODULE.                 " STATUS_9000  OUTPUT






*&---------------------------------------------------------------------*
*&      Module  USER_COMMAND_9000  INPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE USER_COMMAND_9000 INPUT.


   CASE OK_CODE.

WHEN 'SAVE'.



              CASE  ACTION.

*              u65B0u589E
              WHEN  1.

          ZQACHK-mandt = sy-mandt.



          INSERT ZQACHK.

          IF sy-subrc = 0.

          MESSAGE  'u65B0u589Eu8CC7u6599u6210u529F'(002)  TYPE 'S'.

        ENDIF.





*              u4FEEu6539
                WHEN 2.
           UPDATE   ZQACHK.

           IF sy-subrc = 0.

          MESSAGE  'u4FEEu6539u8CC7u6599u6210u529F'(003)  TYPE 'S'.

           ENDIF.

          CLEAR ZQACHK.

          SET SCREEN 0.
          LEAVE SCREEN.



               ENDCASE.


WHEN 'EXIT'.

    LEAVE    PROGRAM .

  WHEN 'CANCEL'.

  LEAVE    PROGRAM  .



ENDCASE.









ENDMODULE.                 " USER_COMMAND_9000  INPUT

Read only

0 Likes
704

Hi

Just I wrote before...try to use a new variable where to save the current ok_code in every module for user_command, example:

MODULE USER_COMMAND_9200 INPUT.    
  save_ok_code = ok_code. "<---- Here you can transfer the OK_CODE to a new variable
  clear ok_code.     "<---- Here you can clear OK_CODE         

*  CASE ok_code.
  CASE save_ok_code. "<---- Here you can check the new variable SAVE_OK_CODE instead of OK_CODE 
    WHEN 'MODIFY'.
*
      action = 2.
*
 
*      u8B80u6709u6A19u8A18u5230u4E4Bu5167u8868
      READ TABLE t_ZQACHK WITH KEY mark = 'X'.
 
*u82E5u6709u8B80u6210
      IF sy-subrc = 0.
 
*        u5C07u5167u8868u8F38u5230SCREEN
        MOVE-CORRESPONDING t_ZQACHK TO ZQACHK.
 
*        u547Cu53EB SCREEN
 
        CALL SCREEN 9000.
*
      ENDIF.
*
*
    WHEN 'DISPLAY'.
 
      action = 3.
 
      READ TABLE t_ZQACHK WITH KEY mark = 'X'.
 
      IF sy-subrc = 0.
 
        MOVE-CORRESPONDING t_ZQACHK TO ZQACHK.
        CALL SCREEN 9000.
 
      ENDIF.
*
*
    WHEN 'DELETE'.
 
      READ TABLE t_ZQACHK WITH KEY mark = 'X'.
 
      IF sy-subrc = 0.
 
 
*   
      ENDIF.
 
 
 
 
ENDCASE.
 
ENDMODULE.                 " USER_COMMAND_9200  INPUT

Don't clear OK_CODE in PBO, so delete the line like the following:

MODULE STATUS_9200 OUTPUT.
  SET PF-STATUS 'ZCH9TABCTRL'.
*  SET TITLEBAR 'xxx'.
 
 
*u6E05u9664u4E0Au6B21u8B8Au6578
*CLEAR OK_CODE. "<---Delete it
 
ENDMODULE.                 " STATUS_9200  OUTPUT

Max

Read only

0 Likes
704

Thanks.

The problem is sloved