‎2011 Nov 08 10:34 AM
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
‎2011 Nov 08 10:39 AM
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
‎2011 Nov 08 10:59 AM
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
‎2011 Nov 08 11:31 AM
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 INPUTDon'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 OUTPUTMax
‎2011 Nov 09 5:05 AM