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: 

Dynpro Error dialog programming

former_member670450
Participant
0 Kudos

Im trying to create 2 screens, screen 9002 is non editable and screen 9003 is editable, im using different variables but same ztables for these 2 screens. Im displaying the screen 9003 frm 9001 screen PAI.

When I called screen 9003 it is throwing me Dyn Pro error, the code is as follows

*&---------------------------------------------------------------------*
*& Include MZDLGPROG_03_REPORTTOP                   - Module Pool      SAPMZDLGPROG_03_REPORT
*&---------------------------------------------------------------------*
PROGRAM SAPMZDLGPROG_03_REPORT.

TABLES: ZEKKO_03,
        ZEKPO_03.

CONTROLS: TC_ZEKPO TYPE TABLEVIEW USING SCREEN 9002,  ""for display
          TC_ZEKPO2 TYPE TABLEVIEW USING SCREEN 9003. ""for edit


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,
       GV_EBELN  TYPE ZEBELN_EL.

DATA : 
       GT_ZEKKO2  TYPE TABLE OF ZEKKO_03,
       GWA_ZEKKO2 TYPE ZEKKO_03,
       GT_ZEKPO2  TYPE TABLE OF ZEKPO_03,
       GWA_ZEKPO2 like LINE OF gt_zekpo.


DATA: f1 TYPE char1,
      gv_tabix TYPE sy-tabix.
*&---------------------------------------------------------------------*
*& Include          MZDLGPROG_03_REPORTO01
*&---------------------------------------------------------------------*

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

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

*&---------------------------------------------------------------------*
*& Module STATUS_9002 OUTPUT
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
MODULE STATUS_9003 OUTPUT.
 SET PF-STATUS 'ZSTATUS'.
 SET TITLEBAR 'ZTITLE2'.
ENDMODULE.
*&---------------------------------------------------------------------*
*& Module FETCH_DATA OUTPUT
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
MODULE FETCH_DATA OUTPUT.

if f1 <> 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.

ELSE.

  IF gv_tabix is NOT INITIAL.
      DELETE gt_zekko INDEX gv_tabix.
      delete gt_zekpo INDEX gv_tabix.
  ENDIF.
endif.



ENDMODULE.

*&---------------------------------------------------------------------*
*& Module FETCH_DATA_EDIT OUTPUT
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
MODULE FETCH_DATA_EDIT 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  USER_COMMAND_9003  INPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE USER_COMMAND_9003 INPUT.
*  CASE ok_code.
*
*  ENDCASE.

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.
   call screen 9002.

*      LOOP AT gt_zekpo WHERE MARK = 'X'.
*        DELETE gt_zekpo.
*      ENDLOOP.
*      IF SY-SUBRC <> 0.
*        GET CURSOR FIELD FLD LINE LINNO OFFSET OFF.
*        SET CURSOR FIELD FLD LINE LINNO OFFSET OFF.
*        IF FLD CP 'GT_ZEKPO*' AND SY-SUBRC = 0.
*          LINNO = LINNO + TC_ZEKPO-TOP_LINE - 1.
*          DELETE GT_ZEKPO INDEX LINNO.
*          TC_ZEKPO-LINES = TC_ZEKPO-LINES - 1.
*        ENDIF.
*      ENDIF.


*      READ TABLE gt_zekko INTO gwa_zekko WITH KEY gwa_zekko-ebeln.
*       if gwa_zekko-ebeln is NOT INITIAL.
*          delete ZEKKO_03 FROM TABLE gt_zekko.
*      delete zekpo_03 FROM TABLE gt_zekpo.
*      endif.

  ENDCASE.

ENDMODULE.
*&---------------------------------------------------------------------*
*&      Module  MODIFY_IT_ZEKPO  INPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE MODIFY_GT_ZEKPO INPUT.
  MODIFY gt_zekpo2 FROM gwa_zekpo2
  INDEX TC_ZEKPO2-CURRENT_LINE.

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'.
      IF GWA_ZEKKO-EBELN IS INITIAL .
        MESSAGE 'Please enter document number' TYPE 'E'.
      ELSE.
        CALL SCREEN 9002.
      ENDIF.

    WHEN 'DISPLAY'.
            IF GWA_ZEKKO-EBELN IS INITIAL .
        MESSAGE 'Please enter document number' TYPE 'E'.
      ELSE.
        CALL SCREEN 9002.
      ENDIF.

    WHEN 'CREATE'  .
      CALL SCREEN 9003.        <<<< to display editable screen


  ENDCASE.

ENDMODULE.
11 REPLIES 11

0 Kudos

Why create 2 screen's?

You can handle the properties of the Screen elements by using Group option.

mateuszadamus
Active Contributor

Hi arnold92

You can have display/edit in one screen. This way a lot less maintenance will be required in the future. All you need to do is modify the screen fields properties in the PBO event of the screen.

For example:

*&---------------------------------------------------------------------*
*&      Module  SCREEN_0001_PBO  OUTPUT
*&---------------------------------------------------------------------*
MODULE screen_0001_pbo OUTPUT.
  DATA:
    gv_action TYPE i. " variables declared in modules are global

  gv_action = 0. " display as default
  IF p_chg = abap_true. " some option selected by user
    gv_action = 1. " edit allowed
  ENDIF.

  LOOP AT SCREEN.
    IF screen-name = 'INPUT'. " you could also check SCREEN-GROUP1 .. GROUP4 here
      screen-input = gv_action.
      MODIFY SCREEN.
    ENDIF.
  ENDLOOP.
ENDMODULE.

In the screen:

PROCESS BEFORE OUTPUT.
  MODULE screen_0001_pbo.

Regards,

Mateusz

0 Kudos

Thanks for reply, sorry im not clear on this part

I am not so clear on the following part

IF screen-name='INPUT'.

0 Kudos

Hi

SCREEN-NAME contains the name of your input fields. In my example the field was called INPUT.

You need to check what names have the fields on your screen.

Regards,
Mateusz

former_member1716
Active Contributor
0 Kudos

arnold92,

Unless if it is explicitly asked by business it better to have all the fields in a single screen to avoid the complexity and for better maintenance.

Its very important to understand the events in the module programming, in short:

PBO - Process Before Input is responsible for all the field characteristics that are displayed, the event is triggered before the screen is displayed. Thus all the features as part of the screen must be coded here.

PAI - Process after Input is responsible for validations of all the fields in the screen, this event is triggered for all the operations you perform in the screen after the screen is displayed.

Now let us know what is that you are trying to achieve and what issue you are facing. if possible feed us with few screen shots or code line in which it is erring.

Regards!

0 Kudos

Requirement as attached in screenshot

req1.png req2.png

Tables:

https://answers.sap.com/storage/attachments/1807901-tbl-po-line.png

https://answers.sap.com/storage/attachments/1807900-tbl-po-header.png

Now im on edit part, Im totally stuck. Screen 9002 is display whereas screen 9003 is edit mode

*&---------------------------------------------------------------------*
*& Include MZDLGPROG_03_REPORTTOP                   - Module Pool      SAPMZDLGPROG_03_REPORT
*&---------------------------------------------------------------------*
PROGRAM SAPMZDLGPROG_03_REPORT.

TABLES: ZEKKO_03,
        ZEKPO_03.

CONTROLS: TC_ZEKPO TYPE TABLEVIEW USING SCREEN 9002,  ""for display
          TC_ZEKPO2 TYPE TABLEVIEW USING SCREEN 9003. ""for edit

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,
       GV_EBELN  TYPE zekko_03-ebeln,
       f1 TYPE char1.<br>
*&---------------------------------------------------------------------*
*& Include          MZDLGPROG_03_REPORTO01
*&---------------------------------------------------------------------*

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

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

*&---------------------------------------------------------------------*
*& Module STATUS_9003 OUTPUT
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
MODULE STATUS_9003 OUTPUT.
 SET PF-STATUS 'ZSTATUS'.
 SET TITLEBAR 'ZTITLE2'.
ENDMODULE.

*&---------------------------------------------------------------------*
*& Module FETCH_DATA OUTPUT
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
MODULE FETCH_DATA OUTPUT.


if f1 <> 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.

ELSE.

*  IF gv_tabix is NOT INITIAL.
*      DELETE gt_zekko INDEX gv_tabix.
*      delete gt_zekpo INDEX gv_tabix.
*  ENDIF.

  IF gv_ebeln is NOT INITIAL.
      DELETE gt_zekko WHERE ebeln = gwa_zekko-ebeln.
      delete gt_zekpo WHERE ebeln = gwa_zekpo-ebeln.
  ENDIF.


endif.




ENDMODULE.
*&---------------------------------------------------------------------*
*& Module FETCH_DATA_EDIT OUTPUT
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
MODULE FETCH_DATA_EDIT 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.



modify zekko_03 FROM TABLE gt_zekko.
COMMIT WORK.

modify zekpo_03 FROM TABLE gt_zekpo.
COMMIT WORK.<br>
*&---------------------------------------------------------------------*
*&      Module  USER_COMMAND_9003  INPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE USER_COMMAND_9003 INPUT.
  CASE ok_code.
        WHEN 'BACK'.
      SET SCREEN 0.
      LEAVE TO SCREEN 0.
      when 'SAVE'.


  ENDCASE.

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.
    gv_tabix = gwa_zekko-ebeln.

  ENDCASE.

ENDMODULE.
*&---------------------------------------------------------------------*
*&      Module  MODIFY_IT_ZEKPO  INPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE MODIFY_GT_ZEKPO INPUT.
  MODIFY gt_zekpo FROM gwa_zekpo
  INDEX TC_ZEKPO2-CURRENT_LINE.

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'.
      IF GWA_ZEKKO-EBELN IS INITIAL .
        MESSAGE 'Please enter document number' TYPE 'E'.
      ELSE.
        CALL SCREEN 9002.
      ENDIF.

    WHEN 'DISPLAY'.
            IF GWA_ZEKKO-EBELN IS INITIAL .
        MESSAGE 'Please enter document number' TYPE 'E'.
      ELSE.
        CALL SCREEN 9002.
      ENDIF.
*
    WHEN 'EDIT'  .
      CALL SCREEN 9003.


  ENDCASE.

ENDMODULE.<br>
PROCESS BEFORE OUTPUT.
 MODULE STATUS_9001.

PROCESS AFTER INPUT.
 MODULE USER_COMMAND_9001.<br>
PROCESS BEFORE OUTPUT.
  MODULE STATUS_9002.
    MODULE fetch_data.
  LOOP AT GT_ZEKPO INTO GWA_ZEKPO WITH CONTROL TC_ZEKPO CURSOR
TC_ZEKPO-CURRENT_LINE.

  ENDLOOP.



PROCESS AFTER INPUT.
loop at gt_zekpo.
*  MODULE modify_gt_zekpo.
endloop.
  MODULE USER_COMMAND_9002.
PROCESS BEFORE OUTPUT.
 MODULE STATUS_9003.
     MODULE fetch_data_edit.
     LOOP AT GT_ZEKPO INTO GWA_ZEKPO WITH CONTROL TC_ZEKPO2 CURSOR
TC_ZEKPO2-CURRENT_LINE.

     ENDLOOP.
*
PROCESS AFTER INPUT.
LOOP at gt_zekpo.

endloop.
 MODULE USER_COMMAND_9003.<br>

0 Kudos

arnold92,

Kindly explain where are you stuck at exactly, it will be helpful for us to investigate and suggest.

Regards!

0 Kudos

Screen 9001 (first screen), screen 9002 and 9003 are second screen. Screen 9001 navigate to screen 9002 (non editable) and screen 9001 navigate to screen 9003 (editable). Im doing like this for now, to at least reflect on ztables.

I am doing Delete, discussion for delete as shown below

https://answers.sap.com/questions/13053071/delete-row-issue-in-table-control.html?childToView=130541...

*&---------------------------------------------------------------------*
*& Module Pool      SAPMZDLGPROG_03_REPORT
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*

*INCLUDE MZDLGPROG_03_REPORTTOP                  .    " Global Data

* INCLUDE MZDLGPROG_03_REPORTO01                  .  " PBO-Modules
* INCLUDE MZDLGPROG_03_REPORTI01                  .  " PAI-Modules
* INCLUDE MZDLGPROG_03_REPORTF01                  .  " FORM-Routines

*&---------------------------------------------------------------------*
*& Include MZDLGPROG_03_REPORTTOP                   - Module Pool      SAPMZDLGPROG_03_REPORT
*&---------------------------------------------------------------------*
PROGRAM SAPMZDLGPROG_03_REPORT.

TABLES: ZEKKO_03,
        ZEKPO_03.

CONTROLS: TC_ZEKPO TYPE TABLEVIEW USING SCREEN 9002,  ""for display
          TC_ZEKPO2 TYPE TABLEVIEW USING SCREEN 9003. ""for edit

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,
       GV_EBELN  TYPE zekko_03-ebeln,
       f1 TYPE char1.


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

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

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

*&---------------------------------------------------------------------*
*& Module STATUS_9003 OUTPUT
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
MODULE STATUS_9003 OUTPUT.
 SET PF-STATUS 'ZSTATUS'.
 SET TITLEBAR 'ZTITLE2'.
ENDMODULE.


*&---------------------------------------------------------------------*
*& Module FETCH_DATA_EDIT OUTPUT
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
MODULE FETCH_DATA_EDIT OUTPUT.

  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.

*modify zekko_03 FROM TABLE gt_zekko.
*COMMIT WORK.
*
*modify zekpo_03 FROM TABLE gt_zekpo.
*COMMIT WORK.


ENDMODULE.



*&---------------------------------------------------------------------*
*&      Module  USER_COMMAND_9003  INPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE USER_COMMAND_9003 INPUT.
  CASE OK_CODE.
    WHEN 'BACK'.
      SET SCREEN 0.
      LEAVE TO SCREEN 0.
    WHEN 'INST'.

      APPEND INITIAL LINE TO gt_zekpo.

  ENDCASE.

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_EBELN.
      F1 = 1.

  ENDCASE.

ENDMODULE.
*&---------------------------------------------------------------------*
*&      Module  MODIFY_IT_ZEKPO  INPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE MODIFY_GT_ZEKPO INPUT.
  MODIFY GT_ZEKPO FROM GWA_ZEKPO
  INDEX TC_ZEKPO2-CURRENT_LINE.

  IF SY-SUBRC IS NOT INITIAL.
    APPEND GWA_ZEKPO TO GT_ZEKPO.
  ENDIF.

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'.
      IF GWA_ZEKKO-EBELN IS INITIAL .
        MESSAGE 'Please enter document number' TYPE 'E'.
      ELSE.
        CALL SCREEN 9002.
      ENDIF.

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

    WHEN 'CREATE'.
      call SCREEN 9003.


  ENDCASE.

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

if f1 <> 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.

ELSE.

*  IF gv_tabix is NOT INITIAL.
*      DELETE gt_zekko INDEX gv_tabix.
*      delete gt_zekpo INDEX gv_tabix.
*  ENDIF.

  IF gv_ebeln is NOT INITIAL.
      DELETE gt_zekko WHERE ebeln = gwa_zekko-ebeln.
      delete gt_zekpo WHERE ebeln = gwa_zekpo-ebeln.
  ENDIF.


endif.

ENDFORM.

The Create 'CREATE' i am also stuck at in terms of logic, 'INST' on the second screen create a new entry.

0 Kudos

Hi, can you provide some comments on the following code, what makes sense or what doesnt make sense logically and the sequence of the code, appreciate it

*&---------------------------------------------------------------------*
*& Module Pool      SAPMZDLGPROG_03_REPORT
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*

*INCLUDE MZDLGPROG_03_REPORTTOP                  .    " Global Data
*
* INCLUDE MZDLGPROG_03_REPORTO01                  .  " PBO-Modules
* INCLUDE MZDLGPROG_03_REPORTI01                  .  " PAI-Modules
* INCLUDE MZDLGPROG_03_REPORTF01                  .  " FORM-Routines

*&---------------------------------------------------------------------*
*& Include MZDLGPROG_03_REPORTTOP                   - Module Pool      SAPMZDLGPROG_03_REPORT
*&---------------------------------------------------------------------*
PROGRAM SAPMZDLGPROG_03_REPORT.

TABLES: ZEKKO_03,
        ZEKPO_03.

CONTROLS: TC_ZEKPO TYPE TABLEVIEW USING SCREEN 9002,  ""for display
          TC_ZEKPO2 TYPE TABLEVIEW USING SCREEN 9003. ""for edit


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,
       GV_EBELN  TYPE zekko_03-ebeln,
       f1 TYPE char1,
       gv_lines TYPE c value 100,
       gv_tabix TYPE sy-tabix.


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

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

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

*&---------------------------------------------------------------------*
*& Module STATUS_9003 OUTPUT
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
MODULE STATUS_9003 OUTPUT.
 SET PF-STATUS 'ZSTATUS'.
 SET TITLEBAR 'ZTITLE2'.
DESCRIBE TABLE gt_zekpo LINES gv_lines.
tc_zekpo-lines = gv_lines.
ENDMODULE.
*&---------------------------------------------------------------------*
*& Module FETCH_DATA_EDIT OUTPUT
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
MODULE FETCH_DATA_EDIT 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  USER_COMMAND_9003  INPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE USER_COMMAND_9003 INPUT.
  CASE OK_CODE.
    WHEN 'BACK'.
      SET SCREEN 0.
      LEAVE TO SCREEN 0.
    WHEN 'INST'.    """insert
     APPEND INITIAL LINE TO gt_zekko.
     APPEND INITIAL LINE TO gt_zekpo.

    WHEN 'SVE'.       """ edit
      if gwa_zekko-ebeln is not INITIAL.

         modify zekko_03 FROM TABLE gt_zekko.
         if sy-subrc = 0.
           COMMIT WORK.
           ELSE.
             ROLLBACK WORK.
         endif.

         modify zekpo_03 FROM TABLE gt_zekpo.
         if sy-subrc = 0.
           COMMIT WORK.
           ELSE.
             ROLLBACK WORK.
         endif.

      endif.
  ENDCASE.

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 gv_tabix is not initial.
      DELETE zekko_03 FROM TABLE gt_zekko.
      delete zekpo_03 FROM TABLE gt_zekpo.

      if sy-subrc = 0.
      COMMIT WORK.
      ELSE.
      ROLLBACK WORK.
        ENDIF.
      endif.
  ENDCASE.
ENDMODULE.
*&---------------------------------------------------------------------*
*&      Module  MODIFY_IT_ZEKPO  INPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE MODIFY_GT_ZEKPO INPUT.
  MODIFY GT_ZEKPO FROM GWA_ZEKPO
  INDEX TC_ZEKPO2-CURRENT_LINE.
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'.
      IF GWA_ZEKKO-EBELN IS INITIAL .
        MESSAGE 'Please enter document number' TYPE 'E'.
      ELSE.
        CALL SCREEN 9002.
        PERFORM fetch_data.
      ENDIF.

    WHEN 'DISPLAY'.
      IF GWA_ZEKKO-EBELN IS INITIAL .
        MESSAGE 'Please enter document number' TYPE 'E'.
      ELSE.
        CALL SCREEN 9002.
      ENDIF.
*
    WHEN 'EDIT'  .
      CALL SCREEN 9003.

    WHEN 'CREATE'.
      CALL SCREEN 9003.


  ENDCASE.

ENDMODULE.

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

if f1 = 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.

Sandra_Rossi
Active Contributor
0 Kudos

You say "When I called screen 9003 it is throwing me Dyn Pro error".

Please provide the error details. Exact error text, short dump content (if any), exact line number where it occurs, etc.

former_member670450
Participant
0 Kudos

Hi Sandra, no longer having dynpro error dump. However i encountered PBO to display in edit mode.

I have raised in that another thread