04-20-2007 6:15 PM
hi,
i have pasted the code below.
when i click in the basic list ...its taking me to secondary list sy-lsind = 1. but in this list its not allowing me to click.(not taking me to sy-lsind>=2) something wrong with my menu painter stuff. when i try to click....i get as chose valid function in the status place.
I have given 'TEST' in the function key place before choose.
in application tool bar have crated MARC.MARD.MAKT. GAVE THEM AS sap gui FUNCTIONS. can some one plz correct me.
Tables: marc,mard,makt.
data: begin of itab occurs 0,
matnr like mara-matnr,
ersda like mara-ersda,
ernam like mara-ernam,
mtart like mara-mtart,
end of itab.
TOP-OF-PAGE.
WRITE:/ 'INTERACTIVE REPORTS'.
ULINE.
WRITE:/ 'MATNR', 'ERSDA', 'ERNAM', 'MTART'.
START-OF-SELECTION.
SELECT MATNR ERSDA ERNAM MTART INTO TABLE ITAB FROM MARA.
END-OF-SELECTION.
LOOP AT ITAB.
WRITE:/ ITAB-MATNR HOTSPOT ON,ITAB-ERSDA,ITAB-ERNAM,ITAB-MTART.
HIDE: ITAB-MATNR.
ENDLOOP.
AT LINE-SELECTION.
WRITE:/ 'LIST INDEX NO:',SY-LSIND.
IF SY-LSIND > 0.
WRITE:/ ITAB-MATNR , ITAB-ERSDA, ITAB-ERNAM.
ENDIF.
"this below part of the code is not really executin i guess'
SET PF-STATUS 'THREE'.
AT USER-COMMAND.
CASE SY-UCOMM.
WHEN 'MARC'.
SELECT * FROM MARC WHERE MATNR = ITAB-MATNR.
WRITE:/ MARC-MATNR, MARC-WERKS.
ENDSELECT.
IF SY-SUBRC <> 0.
WRITE:/ ' NO RECORDS AVAILABLE'.
ENDIF.
WHEN 'MARD'.
SELECT * FROM MARD WHERE MATNR = ITAB-MATNR.
WRITE:/ MARD-MATNR, MARC-WERKS.
ENDSELECT.
IF SY-SUBRC <> 0.
WRITE:/ ' NO RECORDS AVAILABLE FROM MARD'.
ENDIF.
WHEN 'MAKT'.
SELECT * FROM MAKT WHERE MATNR = ITAB-MATNR.
WRITE:/ MAKT-MATNR, MAKT-SPRAS.
ENDSELECT.
IF SY-SUBRC <> 0.
WRITE:/ 'NO RECORDS AVAILABLE FROM MAKT'.
ENDIF.
ENDCASE.
END-OF-SELECTION.
04-20-2007 6:24 PM
lease look at the changed code.
However sy-ucomm will be 'PICK' at the line selection.
Shreekant
TABLES: marc,mard,makt.
DATA: BEGIN OF itab OCCURS 0,
matnr LIKE mara-matnr,
ersda LIKE mara-ersda,
ernam LIKE mara-ernam,
mtart LIKE mara-mtart,
END OF itab.
TOP-OF-PAGE.
WRITE:/ 'INTERACTIVE REPORTS'.
ULINE.
WRITE:/ 'MATNR', 'ERSDA', 'ERNAM', 'MTART'.
START-OF-SELECTION.
SELECT matnr ersda ernam mtart INTO TABLE itab FROM mara.
END-OF-SELECTION.
LOOP AT itab.
WRITE:/ itab-matnr HOTSPOT ON,itab-ersda,itab-ernam,itab-mtart.
HIDE: itab-matnr.
ENDLOOP.
AT LINE-SELECTION.
WRITE:/ 'LIST INDEX NO:',sy-lsind.
IF sy-lsind > 0.
WRITE:/ itab-matnr , itab-ersda, itab-ernam.
CASE sy-ucomm.
WHEN 'MARC'.
SELECT * FROM marc WHERE matnr = itab-matnr.
WRITE:/ marc-matnr, marc-werks.
ENDSELECT.
IF sy-subrc <> 0.
WRITE:/ ' NO RECORDS AVAILABLE'.
ENDIF.
WHEN 'MARD'.
SELECT * FROM mard WHERE matnr = itab-matnr.
WRITE:/ mard-matnr, marc-werks.
ENDSELECT.
IF sy-subrc <> 0.
WRITE:/ ' NO RECORDS AVAILABLE FROM MARD'.
ENDIF.
WHEN 'MAKT'.
SELECT * FROM makt WHERE matnr = itab-matnr.
WRITE:/ makt-matnr, makt-spras.
ENDSELECT.
IF sy-subrc <> 0.
WRITE:/ 'NO RECORDS AVAILABLE FROM MAKT'.
ENDIF.
ENDCASE.
ENDIF.
"this below part of the code is not really executin i guess'
*SET PF-STATUS 'THREE'.
*AT USER-COMMAND.
END-OF-SELECTION.
04-20-2007 6:24 PM
lease look at the changed code.
However sy-ucomm will be 'PICK' at the line selection.
Shreekant
TABLES: marc,mard,makt.
DATA: BEGIN OF itab OCCURS 0,
matnr LIKE mara-matnr,
ersda LIKE mara-ersda,
ernam LIKE mara-ernam,
mtart LIKE mara-mtart,
END OF itab.
TOP-OF-PAGE.
WRITE:/ 'INTERACTIVE REPORTS'.
ULINE.
WRITE:/ 'MATNR', 'ERSDA', 'ERNAM', 'MTART'.
START-OF-SELECTION.
SELECT matnr ersda ernam mtart INTO TABLE itab FROM mara.
END-OF-SELECTION.
LOOP AT itab.
WRITE:/ itab-matnr HOTSPOT ON,itab-ersda,itab-ernam,itab-mtart.
HIDE: itab-matnr.
ENDLOOP.
AT LINE-SELECTION.
WRITE:/ 'LIST INDEX NO:',sy-lsind.
IF sy-lsind > 0.
WRITE:/ itab-matnr , itab-ersda, itab-ernam.
CASE sy-ucomm.
WHEN 'MARC'.
SELECT * FROM marc WHERE matnr = itab-matnr.
WRITE:/ marc-matnr, marc-werks.
ENDSELECT.
IF sy-subrc <> 0.
WRITE:/ ' NO RECORDS AVAILABLE'.
ENDIF.
WHEN 'MARD'.
SELECT * FROM mard WHERE matnr = itab-matnr.
WRITE:/ mard-matnr, marc-werks.
ENDSELECT.
IF sy-subrc <> 0.
WRITE:/ ' NO RECORDS AVAILABLE FROM MARD'.
ENDIF.
WHEN 'MAKT'.
SELECT * FROM makt WHERE matnr = itab-matnr.
WRITE:/ makt-matnr, makt-spras.
ENDSELECT.
IF sy-subrc <> 0.
WRITE:/ 'NO RECORDS AVAILABLE FROM MAKT'.
ENDIF.
ENDCASE.
ENDIF.
"this below part of the code is not really executin i guess'
*SET PF-STATUS 'THREE'.
*AT USER-COMMAND.
END-OF-SELECTION.
04-20-2007 6:38 PM
with the changed code I get secondary index 20 but....i couldn't see marc mard makt in the list........that part is not processed
04-20-2007 6:54 PM
I am not clear with your requiremnt.
When you click the sy-ucomm = 'PICK'.
Sy-ucomm cant be mara, mard.
Let me know what exactly is ur requirement.
Shreekant
04-20-2007 7:07 PM
YEA....I want marc mard makt to be three buttons.
and when I click marc it should display respective details. like wise for mard and makt.
But I dont happen to see these buttons in my list. so couldn't click and process further.
Message was edited by:
Alchemi
04-20-2007 7:13 PM
You might have to change the normal screen and add a new screen to the report. If you open your program in se80 and add a new GUI status. In the screen you will have to add 3 different buttons and assign a function code to them
In your case the function code woill me mar, mard and makt.
in the pf status use the sy-ucomm.
Case sy-ucomm.
when mard...
and so on.
However I would suggest you to use a ALV display rather than a normal display.
Hope this helps.
Shreekant.
I will send you a program which dose something like this but you might have to change for your requirement.
Whats ur mail id.
Shreekant
04-20-2007 7:25 PM
04-20-2007 7:41 PM
04-20-2007 7:20 PM
hi
I think you need to place the set pf-status above top-of-page.
SET PF-STATUS 'THREE'.
top-of-page.
and pase remaining code
regards,
venkat