Skip to Content
0
A S
May 25, 2020 at 05:36 AM

Insert in dialog programming

157 Views Last edit May 25, 2020 at 06:12 AM 5 rev

In screen 1, requirement is leave Purchase Order number blank – automatically get the next purchase order number from ZKKO_nn upon pressing Create

So far i have created 3 records for PO, 45000000, 45000003 and 45000004 from zekko database table myself.

Logically it should auto create PO from 45000001, 45000002, 45000005 and so forth.

Another requirement is in screen 2, use the same button "Save Edit" (function code - SVE) which i also used for update statement to save the created entry.

The PO data are created by myself. Full code as shown below:

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,
       gv_edit TYPE c LENGTH 1,
       gv_create TYPE c LENGTH 1.

*&---------------------------------------------------------------------*
*& 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 OPERATIONS OUTPUT
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
MODULE OPERATIONS OUTPUT.


  CASE OK_CODE.


    WHEN 'EDIT'.

     gv_edit = 'X'.
      LOOP AT SCREEN.

        """header
        IF SCREEN-NAME = 'GWA_ZEKKO-EBELN'.
          SCREEN-INPUT = 1.

          MODIFY SCREEN.
        ENDIF.


        IF SCREEN-NAME = 'GWA_ZEKKO-EKGRP'.
          SCREEN-INPUT = 1.

          MODIFY SCREEN.
        ENDIF.

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

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

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

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

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

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


      ENDLOOP.

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

        ENDIF.
        MODIFY SCREEN.

      ENDLOOP.



    WHEN 'CREATE'.

   gv_create = 'X'.
      LOOP AT SCREEN.

        """header
        IF SCREEN-NAME = 'GWA_ZEKKO-EKGRP'.
          SCREEN-INPUT = 1.

          MODIFY SCREEN.
        ENDIF.

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

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

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

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

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

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


      ENDLOOP.

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

        ENDIF.
        MODIFY SCREEN.

      ENDLOOP.


  ENDCASE.


ENDMODULE.




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



ENDMODULE.


*&---------------------------------------------------------------------*
*& Include          MZDLGPROG_03_REPORTI01
*&---------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*&      Module  USER_COMMAND_9002  INPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE USER_COMMAND_9002 INPUT.
  SET PF-STATUS 'ZSTATUS' .
  SET TITLEBAR 'ZTITLE1'.

  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'.


      CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
        EXPORTING
          INPUT  = GWA_ZEKKO-EBELN
        IMPORTING
          OUTPUT = GWA_ZEKKO-EBELN.


     if GV_EDIT EQ 'X' .

      UPDATE ZEKKO_03 SET
     EKGRP = GWA_ZEKKO-EKGRP
     EKORG = GWA_ZEKKO-EKORG
     BUKRS = GWA_ZEKKO-BUKRS
     LIFNR = GWA_ZEKKO-LIFNR
     WAERS = GWA_ZEKKO-WAERS
     ZTERM = GWA_ZEKKO-ZTERM
     ZDESC = GWA_ZEKKO-ZDESC
     WHERE EBELN = GWA_ZEKKO-EBELN.
      COMMIT WORK.

      UPDATE ZEKPO_03 SET
     EBELP = GWA_ZEKPO-EBELP
     MATNR = GWA_ZEKPO-MATNR
     WERKS = GWA_ZEKPO-WERKS
     LGORT = GWA_ZEKPO-LGORT
     MENGE = GWA_ZEKPO-MENGE
     MEINS = GWA_ZEKPO-MEINS
     WHERE EBELN = GWA_ZEKKO-EBELN.
      COMMIT WORK.

      endif.


  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

screen1.png (4.6 kB)
screen2.png (20.7 kB)