‎2008 Apr 25 7:58 AM
Hi Experts,
I have 2 subscreen in the tabstrip screen. I have save option in the menu. When i cilck on the save button the active screen data is not inserted in to the table. With this i have attached the code for reference.
please let me know the mistakes or correction to make this program work correctly.
Thanks in advance..
i Assure to reward points..
PROGRAM YQC.
TABLES : ZMING.
DATA FLAG(1) TYPE C.
DATA: ITAB LIKE ZMING OCCURS 0 WITH HEADER LINE.
CONTROLS: TABSTR TYPE TABSTRIP.
DATA: OKCODE TYPE SY-UCOMM,
FCODE LIKE OKCODE.
DATA: X TYPE I.
START-OF-SELECTION.
CALL SCREEN 100.
&----
*& Module STATUS_0100 OUTPUT
&----
text
----
MODULE STATUS_0100 OUTPUT.
SET PF-STATUS 'OPTION1'.
SET TITLEBAR 'xxx'.
ENDMODULE. " STATUS_0100 OUTPUT
&----
*& Module USER_COMMAND_0100 INPUT
&----
text
----
MODULE USER_COMMAND_0100 INPUT.
FCODE = OKCODE.
CASE FCODE.
WHEN 'CREATE'.
if zming-matnr = zming-matnr.
CALL SCREEN 200.
ELSEIF
WRITE:/ MESS.
endif.
WHEN 'MOD'.
CALL SCREEN 200.
MODIFY ZMING.
COMMIT WORK.
WHEN 'EXIT'.
LEAVE PROGRAM.
ENDCASE.
ENDMODULE. " USER_COMMAND_0100 INPUT
&----
*& Module STATUS_0200 OUTPUT
&----
text
----
MODULE STATUS_0200 OUTPUT.
SET PF-STATUS 'OPTION'.
SET TITLEBAR 'xxx'.
ENDMODULE. " STATUS_0200 OUTPUT
&----
*& Module USER_COMMAND_0200 INPUT
&----
text
----
MODULE USER_COMMAND_0200 INPUT.
FCODE = OKCODE.
CLEAR OKCODE.
CASE FCODE.
WHEN 'TAB1'.
TABSTR-ACTIVETAB = 'TAB1'.
WHEN 'TAB2'.
TABSTR-ACTIVETAB = 'TAB2'.
WHEN 'SAVE'.
IF TABSTR-ACTIVETAB = 'TAB1'.
ZMING-MATNR = ZMING-MATNR.
ZMING-BATCH = ZMING-BATCH.
ZMING-SI_NO = ZMING-SI_NO.
ZMING-DESC_INST = ZMING-DESC_INST.
ZMING-ZRANGE = ZMING-ZRANGE.
ZMING-LC = ZMING-LC.
ZMING-MAKE = ZMING-MAKE.
ZMING-LOCATION = ZMING-LOCATION.
ZMING-CHECK_ERROR_AT1 = ZMING-CHECK_ERROR_AT1.
ZMING-CHECK_ERROR_AT2 = ZMING-CHECK_ERROR_AT2.
ZMING-CHECK_ERROR_AT3 = ZMING-CHECK_ERROR_AT3.
ZMING-MAS_USED1 = ZMING-MAS_USED1.
ZMING-MAS_USED2 = ZMING-MAS_USED2.
ZMING-MAS_USED3 = ZMING-MAS_USED3.
ZMING-REF_STD = ZMING-REF_STD.
ZMING-CALIB_PROC_NO = ZMING-CALIB_PROC_NO.
ZMING-CALIB_FREQ = ZMING-CALIB_FREQ.
INSERT ZMING.
COMMIT WORK.
ELSEIF TABSTR-ACTIVETAB = 'TAB2'.
ZMING-CERT_NO1 = ZMING-CERT_NO1.
ZMING-MAS_VALIDITY1 = ZMING-MAS_VALIDITY1.
ZMING-CERT_NO2 = ZMING-CERT_NO2.
ZMING-MAS_VALIDITY2 = ZMING-MAS_VALIDITY2.
ZMING-CERT_NO3 = ZMING-CERT_NO3.
ZMING-MAS_VALIDITY3 = ZMING-MAS_VALIDITY3.
ZMING-CERT_NO4 = ZMING-CERT_NO4.
ZMING-MAS_VALIDITY4 = ZMING-MAS_VALIDITY4.
ZMING-CERT_NO5 = ZMING-CERT_NO5.
ZMING-MAS_VALIDITY5 = ZMING-MAS_VALIDITY5.
ZMING-CERT_NO6 = ZMING-CERT_NO6.
ZMING-MAS_VALIDITY6 = ZMING-MAS_VALIDITY6.
ZMING-CERT_NO7 = ZMING-CERT_NO7.
ZMING-MAS_VALIDITY7 = ZMING-MAS_VALIDITY7.
ZMING-CERT_NO8 = ZMING-CERT_NO8.
ZMING-MAS_VALIDITY8 = ZMING-MAS_VALIDITY8.
ZMING-CERT_NO9 = ZMING-CERT_NO9.
ZMING-MAS_VALIDITY9 = ZMING-MAS_VALIDITY9.
ZMING-CERT_NO10 = ZMING-CERT_NO10.
ZMING-MAS_VALIDITY10 = ZMING-MAS_VALIDITY10.
ZMING-CERT_NO11 = ZMING-CERT_NO11.
ZMING-MAS_VALIDITY11 = ZMING-MAS_VALIDITY11.
ZMING-CERT_NO12 = ZMING-CERT_NO12.
ZMING-MAS_VALIDITY12 = ZMING-MAS_VALIDITY12.
ZMING-CERT_NO13 = ZMING-CERT_NO13.
ZMING-MAS_VALIDITY13 = ZMING-MAS_VALIDITY13.
ZMING-CERT_NO14 = ZMING-CERT_NO14.
ZMING-MAS_VALIDITY14 = ZMING-MAS_VALIDITY14.
ZMING-CERT_NO15 = ZMING-CERT_NO15.
ZMING-MAS_VALIDITY15 = ZMING-MAS_VALIDITY15.
INSERT ZMING.
COMMIT WORK.
ENDIF.
WHEN 'MOD'.
LOOP AT SCREEN.
IF TABSTR-ACTIVETAB = 'TAB1'.
MODIFY ZMING.
COMMIT WORK.
ELSEIF TABSTR-ACTIVETAB = 'TAB2'.
MODIFY ZMING.
COMMIT WORK.
ENDIF.
ENDLOOP.
WHEN 'BACK'.
CALL SCREEN 100.
ENDCASE.
ENDMODULE. " USER_COMMAND_0200 INPUT
&----
*& Module get_data OUTPUT
&----
text
----
MODULE GET_DATA OUTPUT.
ZMING-SI_NO = ITAB-SI_NO.
ZMING-DESC_INST = ITAB-DESC_INST.
ENDMODULE. " get_data OUTPUT
&----
*& Module select-data OUTPUT
&----
text
----
MODULE SELECT-DATA OUTPUT.
SELECT SINGLE * FROM ZMING WHERE MATNR EQ ZMING-MATNR AND
BATCH EQ ZMING-BATCH.
ENDMODULE. " select-data OUTPUT
-
screen 200----
PROCESS BEFORE OUTPUT.
MODULE STATUS_0200.
CALL SUBSCREEN SUB1 INCLUDING SY-REPID '300'.
CALL SUBSCREEN SUB2 INCLUDING SY-REPID '400'.
PROCESS AFTER INPUT.
MODULE USER_COMMAND_0200.
CALL SUBSCREEN SUB1.
CALL SUBSCREEN SUB2.
‎2008 Apr 25 8:01 AM
The only mistake that you are doing is that in PAI, u need to call the subscreens first and then the user command module.
The screen changes and data is thus fetched on calling the subscreen areas n then module user_command can process that data.
Do let me know if this helped.
Pranjal.
‎2008 Apr 25 8:01 AM
The only mistake that you are doing is that in PAI, u need to call the subscreens first and then the user command module.
The screen changes and data is thus fetched on calling the subscreen areas n then module user_command can process that data.
Do let me know if this helped.
Pranjal.
‎2008 Apr 25 8:03 AM
Dear Mr Bhupathi,
I have seen your code.
I hope the problem is with your code.
First you are selecting the Tab strip right then you are going for save the SAVE action should be there in the subscreen of the tabstrip selected by you.
The SAVE action should be there in the PAI of your subscreen then it will execute.
Regards,
Madan Mohan.
‎2008 Apr 25 8:13 AM
Hi Experts,
Thanks for your suggestions.
Even i tried the suggestion you have said, but its doesn't make much difference..
If you have time please mark the error and your corrected code if possible.
Thanks
‎2008 Apr 25 9:12 AM
Your PAI shud look like this :
PROCESS AFTER INPUT.
CALL SUBSCREEN SUB1.
CALL SUBSCREEN SUB2.
MODULE USER_COMMAND_0200.
Is it this way?
‎2008 Apr 25 8:14 AM
Hi Boopathy
In PAI of Screen 200 when u click SAVE you r trying save the data into database table directly, thts ok.but from where you are the data from.
you wrote as INSERT ZMING by this statement database cannot recognise from where it should get data and save.
you will have data in your itab.from itab the data should be stored in dabase table.
So write like this
*INSERT ZMING values FROM <ITAB name>.
or
loop the itab into work area and from wa into database table.
Reward if help full
Regards
Lakshman