2007 Jul 30 11:51 AM
Hi,
This is my module pool program. When i executing the T.code with a custoemr number that is already present, it is not retrieving the other details like name city and all.
PROGRAM ZMP_TAB1.
&----
*& Module USER_COMMAND_9001 INPUT
&----
text
----
MODULE USER_COMMAND_9001 INPUT.
TABLES:
KNA1. "WORK AREA
CASE SY-UCOMM.
WHEN 'EXIT'.
LEAVE PROGRAM.
WHEN 'DISPLAY'.
IF KNA1-KUNNR IS NOT INITIAL.
SELECT SINGLE * FROM KNA1 WHERE KUNNR = KNA1-KUNNR.
IF SY-SUBRC NE 0.
MESSAGE E000(0) WITH 'ENTER CUSTOMER NUMBER'.
ELSE.
MESSAGE E000(0) WITH 'INPUT CUSTOMER NUMBER'.
ENDIF.
ENDIF.
WHEN 'INSERT'.
INSERT KNA1.
IF SY-SUBRC NE 0.
MESSAGE E000(0) WITH 'RECORD ALREADY EXISTS'.
ELSE.
MESSAGE S000(0) WITH 'RECORD INSERTED'.
ENDIF.
ENDCASE.
ENDMODULE. " USER_COMMAND_9001 INPUT
This is my flow logic.
PROCESS BEFORE OUTPUT.
MODULE STATUS_9001.
*
PROCESS AFTER INPUT.
MODULE USER_COMMAND_9001.
2007 Jul 30 11:58 AM
Hi,
as far as I know KNA1 is a table and you can't use it this way...
data : zkna1 like kna1,
zkna2 like kna1.
select single * from kna1 into table zkna1.
loop at zkna1.
select single * from kna1 into table zkna2 where WHERE KUNNR = ZKNA1-KUNNR.
IF SY-SUBRC NE 0.
MESSAGE E000(0) WITH 'ENTER CUSTOMER NUMBER'.
ELSE.
MESSAGE E000(0) WITH 'INPUT CUSTOMER NUMBER'.
ENDIF.
ENDIF.
endloop
<b>reward points if it helps</b>
2007 Jul 30 11:58 AM
Hi,
as far as I know KNA1 is a table and you can't use it this way...
data : zkna1 like kna1,
zkna2 like kna1.
select single * from kna1 into table zkna1.
loop at zkna1.
select single * from kna1 into table zkna2 where WHERE KUNNR = ZKNA1-KUNNR.
IF SY-SUBRC NE 0.
MESSAGE E000(0) WITH 'ENTER CUSTOMER NUMBER'.
ELSE.
MESSAGE E000(0) WITH 'INPUT CUSTOMER NUMBER'.
ENDIF.
ENDIF.
endloop
<b>reward points if it helps</b>
2007 Jul 30 11:58 AM
2007 Jul 30 12:00 PM
hi,
i think you have written the logic wrong
you have not specified any work area at all to display the items.
select single * from kna1 into <work area> WHERE KUNNR = KNA1-KUNNR.
First fetch the data into work area or table and try to display it.
Thanks
Srinivas
2007 Jul 30 12:17 PM
Whenever you select data, it should have a container in which to place that selected data
this container can be a table, a field or a structure (work area) depending on your need
in your case since you are selecting a row from a table, use a work area
data: kna1_wa like kna1.
SELECT SINGLE * FROM KNA1 into kna1_wa WHERE KUNNR = KNA1-KUNNR.
2007 Jul 30 12:22 PM
2007 Jul 30 12:34 PM
Hello Ram,
What is your screen fields? i Guess you are using KNA1 is screen field structure.
PROGRAM ZMP_TAB1.
&----
*& Module USER_COMMAND_9001 INPUT
&----
text
----
MODULE USER_COMMAND_9001 INPUT.
TABLES:
KNA1. "WORK AREA
CASE SY-UCOMM.
WHEN 'EXIT'.
LEAVE PROGRAM.
WHEN 'DISPLAY'.
*<b>IF KNA1-KUNNR IS NOT INITIAL</b>.
if not kna1-kunnr is initial. -> this is correct statement
SELECT SINGLE * FROM KNA1 WHERE KUNNR = KNA1-KUNNR.
use leave to screen ur current screen.
suppose screen number is 9000.
leave to screen 9000.
IF SY-SUBRC NE 0.
MESSAGE E000(0) WITH 'ENTER CUSTOMER NUMBER'.
ELSE.
MESSAGE E000(0) WITH 'INPUT CUSTOMER NUMBER'.
ENDIF.
ENDIF.
WHEN 'INSERT'.
INSERT KNA1.
IF SY-SUBRC NE 0.
MESSAGE E000(0) WITH 'RECORD ALREADY EXISTS'.
ELSE.
MESSAGE S000(0) WITH 'RECORD INSERTED'.
ENDIF.
ENDCASE.
ENDMODULE. " USER_COMMAND_9001 INPUT
Try with above code
Thanks
Seshu