05-21-2020 6:50 AM
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.
05-21-2020 7:08 AM
Why create 2 screen's?
You can handle the properties of the Screen elements by using Group option.
05-21-2020 8:07 AM
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
05-21-2020 9:20 AM
Thanks for reply, sorry im not clear on this part
I am not so clear on the following part
IF screen-name='INPUT'.
05-21-2020 9:44 AM
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,05-21-2020 9:02 AM
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!
05-21-2020 10:04 AM
Requirement as attached in screenshot
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>
05-21-2020 1:24 PM
arnold92,
Kindly explain where are you stuck at exactly, it will be helpful for us to investigate and suggest.
Regards!
05-21-2020 2:59 PM
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
*&---------------------------------------------------------------------*
*& 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.
05-21-2020 8:02 PM
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.
05-21-2020 8:58 PM
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.
05-22-2020 5:18 PM
Hi Sandra, no longer having dynpro error dump. However i encountered PBO to display in edit mode.
I have raised in that another thread