Skip to Content
-1
A S
May 23, 2020 at 05:36 PM

Modify in Switch mode in dialog programming

160 Views Last edit May 23, 2020 at 05:38 PM 3 rev

I have added a "save edit"button with function code 'SVE'. The function code 'switch' is to switch to editable and non-editable mode.

When i clickon 'SVE' in editable mode (upon clicking 'switch'), it should update value into database. How do i join the 'switch' event and 'SVE' event together? Which syntax to use

*&---------------------------------------------------------------------*
*& Include          MZDLGPROG_03_REPORTI01
*&---------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*&      Module  USER_COMMAND_9002  INPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE USER_COMMAND_9002 INPUT.
  CASE OK_CODE.
    WHEN 'BACK'.
      SET SCREEN 0.
      LEAVE TO SCREEN 0.

    WHEN 'DEL'.
      GET CURSOR LINE GV_TABIX.
      F1 = 1.
      PERFORM FETCH_DATA.
      IF F1 = 1.
        DELETE ZEKKO_03 FROM TABLE GT_ZEKKO.
        DELETE FROM ZEKPO_03 WHERE EBELN = GWA_ZEKKO-EBELN.
        COMMIT WORK.
      ENDIF.

    WHEN 'SVE'.
      MODIFY ZEKKO_03 FROM TABLE GT_ZEKKO.


  ENDCASE.

  CLEAR GT_ZEKKO.
  CLEAR GT_ZEKPO.

Full code and screen code as shown below:

PROGRAM SAPMZDLGPROG_03_REPORT.

TABLES: ZEKKO_03,
        ZEKPO_03.

CONTROLS: TC_ZEKPO  TYPE TABLEVIEW USING SCREEN 9002.


DATA : OK_CODE   TYPE SY-UCOMM,
       GT_ZEKKO  TYPE TABLE OF ZEKKO_03,
       GWA_ZEKKO TYPE ZEKKO_03,
       GT_ZEKPO  TYPE TABLE OF ZEKPO_03,
       GWA_ZEKPO LIKE LINE OF GT_ZEKPO,
       F1        TYPE CHAR1,
       GV_LINES  TYPE I,
       GV_TABIX  TYPE SY-TABIX,
       ON_OFF    TYPE C LENGTH 1 VALUE '0',
       GV_ACTION TYPE I.



*&---------------------------------------------------------------------*
*& Include          MZDLGPROG_03_REPORTO01
*&---------------------------------------------------------------------*

*&---------------------------------------------------------------------*
*& Module STATUS_9001 OUTPUT
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
MODULE STATUS_9001 OUTPUT.
  SET PF-STATUS 'ZSTATUS'.
  SET TITLEBAR 'ZTITLE'.
ENDMODULE.


*&---------------------------------------------------------------------*
*& Module FETCH_DATA OUTPUT
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
MODULE FETCH_DATA OUTPUT.
* SET PF-STATUS 'xxxxxxxx'.
* SET TITLEBAR 'xxx'.

  SELECT EBELN LIFNR EKORG EKGRP BUKRS WAERS ZTERM ZDESC FROM ZEKKO_03
INTO CORRESPONDING FIELDS OF TABLE GT_ZEKKO
WHERE EBELN = GWA_ZEKKO-EBELN.

  SELECT SINGLE EBELN LIFNR EKORG EKGRP BUKRS WAERS ZTERM ZDESC FROM ZEKKO_03
    INTO CORRESPONDING FIELDS OF GWA_ZEKKO
    WHERE EBELN = GWA_ZEKKO-EBELN.

  READ TABLE GT_ZEKKO INTO GWA_ZEKKO INDEX SY-TABIX.

  SELECT EBELP MATNR WERKS LGORT MENGE MEINS
    INTO CORRESPONDING FIELDS OF TABLE GT_ZEKPO FROM ZEKPO_03
     WHERE EBELN = GWA_ZEKKO-EBELN.

ENDMODULE.


*&---------------------------------------------------------------------*
*& Module SWITCH OUTPUT
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
MODULE SWITCH OUTPUT.
* SET PF-STATUS 'xxxxxxxx'.
* SET TITLEBAR 'xxx'.

  CASE OK_CODE.
    WHEN 'SWITCH'.
      IF ON_OFF = '0'.
        GV_ACTION = 0.
        ON_OFF = '1'.
      ELSE.
        GV_ACTION = 1.
        ON_OFF = '0'.
      ENDIF.


      LOOP AT SCREEN.

        """header
        IF SCREEN-NAME = 'GWA_ZEKKO-EKGRP'.
          SCREEN-INPUT = GV_ACTION.
          MODIFY SCREEN.
        ENDIF.

        IF SCREEN-NAME = 'GWA_ZEKKO-EKORG'.
          SCREEN-INPUT = GV_ACTION.
          MODIFY SCREEN.
        ENDIF.

        IF SCREEN-NAME = 'GWA_ZEKKO-BUKRS'.
          SCREEN-INPUT = GV_ACTION.
          MODIFY SCREEN.
        ENDIF.

        IF SCREEN-NAME = 'GWA_ZEKKO-LIFNR'.
          SCREEN-INPUT = GV_ACTION.
          MODIFY SCREEN.
        ENDIF.

        IF SCREEN-NAME = 'GWA_ZEKKO-WAERS'.
          SCREEN-INPUT = GV_ACTION.
          MODIFY SCREEN.
        ENDIF.

        IF SCREEN-NAME = 'GWA_ZEKKO-ZTERM'.
          SCREEN-INPUT = GV_ACTION.
          MODIFY SCREEN.
        ENDIF.

        IF SCREEN-NAME = 'GWA_ZEKKO-ZDESC'.
          SCREEN-INPUT = GV_ACTION.
          MODIFY SCREEN.
        ENDIF.
      ENDLOOP.

      LOOP AT SCREEN.
        """line item
        IF ( SCREEN-GROUP1 = 'GRP' ).
          SCREEN-INPUT = GV_ACTION.

        ENDIF.
        MODIFY SCREEN.

      ENDLOOP.

  ENDCASE.


ENDMODULE.


*&---------------------------------------------------------------------*
*& Module STATUS_9002 OUTPUT
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
MODULE STATUS_9002 OUTPUT.
  SET PF-STATUS 'ZSTATUS'.
  SET TITLEBAR 'ZTITLE1'.



ENDMODULE.

*&---------------------------------------------------------------------*
*&      Module  MODIFY_IT_ZEKPO  INPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE MODIFY_GT_ZEKPO INPUT.

  MODIFY GT_ZEKPO FROM GWA_ZEKPO
  INDEX TC_ZEKPO-CURRENT_LINE.

ENDMODULE.

*&---------------------------------------------------------------------*
*& Include          MZDLGPROG_03_REPORTI01
*&---------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*&      Module  USER_COMMAND_9002  INPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE USER_COMMAND_9002 INPUT.
  CASE OK_CODE.
    WHEN 'BACK'.
      SET SCREEN 0.
      LEAVE TO SCREEN 0.

    WHEN 'DEL'.
      GET CURSOR LINE GV_TABIX.
      F1 = 1.
      PERFORM FETCH_DATA.
      IF F1 = 1.
        DELETE ZEKKO_03 FROM TABLE GT_ZEKKO.
        DELETE FROM ZEKPO_03 WHERE EBELN = GWA_ZEKKO-EBELN.
        COMMIT WORK.
      ENDIF.

    WHEN 'SVE'.
      MODIFY ZEKKO_03 FROM TABLE GT_ZEKKO.


  ENDCASE.

  CLEAR GT_ZEKKO.
  CLEAR GT_ZEKPO.

ENDMODULE.

*&---------------------------------------------------------------------*
*&      Module  USER_COMMAND_9001  INPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE USER_COMMAND_9001 INPUT.
  CASE OK_CODE.
    WHEN 'BACK' OR 'EXIT' OR 'CANC'.
      LEAVE PROGRAM.
    WHEN 'DELETE' OR 'DISPLAY'.
      IF GWA_ZEKKO-EBELN IS INITIAL .
        MESSAGE 'Please enter document number' TYPE 'E'.
      ELSE.
        PERFORM FETCH_DATA.
        CALL SCREEN 9002.
      ENDIF.

    WHEN 'EDIT'  .
      CALL SCREEN 9002.


    WHEN 'CREATE'.
      CALL SCREEN 9002.


  ENDCASE.

ENDMODULE.

*&---------------------------------------------------------------------*
*& Form FETCH_DATA
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& -->  p1        text
*& <--  p2        text
*&---------------------------------------------------------------------*
FORM FETCH_DATA .

  IF F1 NE 1.

    SELECT EBELN LIFNR EKORG EKGRP BUKRS WAERS ZTERM ZDESC FROM ZEKKO_03
      INTO CORRESPONDING FIELDS OF TABLE GT_ZEKKO
      WHERE EBELN = GWA_ZEKKO-EBELN.

    SELECT SINGLE EBELN LIFNR EKORG EKGRP BUKRS WAERS ZTERM ZDESC FROM ZEKKO_03
      INTO CORRESPONDING FIELDS OF GWA_ZEKKO
      WHERE EBELN = GWA_ZEKKO-EBELN.

    READ TABLE GT_ZEKKO INTO GWA_ZEKKO INDEX SY-TABIX.

    SELECT EBELP MATNR WERKS LGORT MENGE MEINS
      INTO CORRESPONDING FIELDS OF TABLE GT_ZEKPO FROM ZEKPO_03
       WHERE EBELN = GWA_ZEKKO-EBELN.

  ENDIF.

ENDFORM.

Attachments

screen-code.png (19.7 kB)