2007 Apr 17 7:39 AM
Hi ,
I am creating a Vendor Detail list , If i double click the particular Vendor number i must get the XK03 screen that displays the particular vendor details , How to acheive this in Reporting ......I think interactive reporting must be used ? Can any one tell the step
2007 Apr 17 7:46 AM
Hi,
You need to use the GET CURSOR statment for this one.
In the AT LINE SELECTION event.
AT LINE-SELECTION.
GET CURSOR FIELD FID OFFSET OFF " FID will have the field name
LINE LIN VALUE VAL LENGTH LEN. " VAL will have he value of that field
SET PARAMETER ID <pid> FIELD <f>. " You need to find the Parameter ID for the field
CALL TRANSACTION 'XK03' AND SKIP FIRST SCREEN.
Regards
Sudheer
Hi,
You need to use the GET CURSOR statment for this one.
In the AT LINE SELECTION event.
AT LINE-SELECTION.
GET CURSOR FIELD FID OFFSET OFF " FID will have the field name
LINE LIN VALUE VAL LENGTH LEN. " VAL will have he value of that field
SET PARAMETER ID <pid> FIELD <f>. " You need to find the Parameter ID for the field
CALL TRANSACTION 'XK03' AND SKIP FIRST SCREEN.
Regards
Sudheer
2007 Apr 17 7:41 AM
2007 Apr 17 7:43 AM
HI,
at line-selection.
SET PARAMETER ID 'KUN' FIELD fs_customer-kunnr.
CALL TRANSACTION 'XD03'.
Regards,
2007 Apr 17 7:43 AM
Hi,
See the sample code for calling an external Transaction.
First display the report with the data.
Hide that Vendor field(LIFNR) in the output loop.
In the At line-selection event write the like:
&----
*
*& Form LINE_SEL
&----
When double clicked on BELNR leave to transaction FB03
----
form line_sel.
data: lv_field(20),
lv_value(10),
lv_date(10),
lv_gjahr like bsad-gjahr.
get cursor field lv_field value lv_value.
if lv_field = 'IT_REPORT-BELNR'.
if not lv_value is initial.
read current line field value it_report-budat into lv_date.
lv_gjahr = lv_date+6(4).
set parameter id 'BUK' field p_bukrs.
set parameter id 'GJR' field lv_gjahr.
set parameter id 'BLN' field lv_value.
call transaction 'FB03' and skip first screen.
endif.
endif.
endform.
reward if useful
regards,
Anji
2007 Apr 17 7:46 AM
Hi,
You need to use the GET CURSOR statment for this one.
In the AT LINE SELECTION event.
AT LINE-SELECTION.
GET CURSOR FIELD FID OFFSET OFF " FID will have the field name
LINE LIN VALUE VAL LENGTH LEN. " VAL will have he value of that field
SET PARAMETER ID <pid> FIELD <f>. " You need to find the Parameter ID for the field
CALL TRANSACTION 'XK03' AND SKIP FIRST SCREEN.
Regards
Sudheer
2007 Apr 17 7:47 AM
hi,
check out the folowing code...
&----
*& Report ZWK22671
*&
&----
*&
*&
&----
REPORT zwk22671 LINE-COUNT 40(3)
LINE-SIZE 200
NO STANDARD PAGE HEADING.
*----
*TABLES
*----
TABLES : mkpf , "MATERIAL DOCUMENT
mseg , "DOCUMENT SEGMENT : MATERIAL
t156t , "MOVEMENT TYPE TEXT
makt. "MATERIAL DESCRIPTIONS
*----
**DECLARATION OF STRUCTURE , INTERNAL TABLES , VARIABLES
*----
*STRUCTURE OF INTERNAL TABLES
DATA : BEGIN OF xtab,
mblnr TYPE mkpf-mblnr , "DOCUMENT NUMBER
mjahr TYPE mkpf-mjahr , "YEAR
budat TYPE mkpf-budat , "POST DATE
blart TYPE mkpf-blart , "DOCUMENT TYPE
END OF xtab.
DATA : BEGIN OF ytab,
mblnr TYPE mseg-mblnr , "DOCUMENT NUMBER
mjahr TYPE mseg-mjahr , "YEAR
zeile TYPE mseg-zeile , "ITEM NUMBER
bwart TYPE mseg-bwart , "MOVEMENT TYPE
btext TYPE t156t-btext , "MOVEMENT DESCRIPTION
matnr TYPE mseg-matnr , "MATERIAL NUMBER
maktx TYPE makt-maktx , "MATERIAL DESCRIPTION
meins TYPE mseg-meins , "UNIT OF MEASURE
menge TYPE mseg-menge , "QUANTITY
dmbtr TYPE mseg-dmbtr , "AMOUNT
END OF ytab.
*INTERNAL TABLE DECLARATION
DATA : i_tab1 LIKE STANDARD TABLE OF xtab WITH HEADER LINE. "INTERNAL TABLE 1 : CONTAINS MATERIAL DETAILS
DATA : i_tab2 LIKE STANDARD TABLE OF ytab WITH HEADER LINE. "INTERNAL TABLE 2 : CONTAINS ITEMWISE MATERIAL DETAILS
*VARIABLES
DATA : v_color TYPE sy-tabix , "FOR SETTING COLOR FORMATS DURING GENERATING REPORT
v_field(20) , "FOR STORING THE CLICKED FIELD NAME
v_value(20) , "FOR STORING THE CLICKED FIELD VALUE
v_mblnr TYPE mkpf-mblnr , "FOR VALIDATING DOCUMENT NUMBER
v_mjahr TYPE mkpf-mjahr , "FOR VALIDATING DOCUMENT YEAR
v_bwart TYPE mseg-bwart , "FOR VALIDATING MOVEMENT TYPE
v_matnr TYPE mseg-matnr . "FOR VALIDATING MATERIAL NUMBER
*----
**SELECTION-SCREEN
*----
SELECTION-SCREEN : BEGIN OF BLOCK blk1 WITH FRAME TITLE text-001.
SELECT-OPTIONS : s_mblnr FOR mkpf-mblnr , "DOCUMENT NUMBER
s_mjahr FOR mkpf-mjahr OBLIGATORY, "DOCUMENT YEAR
s_bwart FOR mseg-bwart NO INTERVALS NO-EXTENSION, "MOVEMENT TYPE
s_matnr FOR mseg-matnr . "MATERIAL NUMBER
SELECTION-SCREEN : END OF BLOCK blk1.
*----
AT SELECTION-SCREEN
*----
AT SELECTION-SCREEN.
PERFORM validation. "PERFORMS VALIDATION OF SELECTION-SCREEN FIELDS
*----
*TOP-OF-PAGE
*----
TOP-OF-PAGE.
PERFORM header. "CREATES HEADER FOR THE BASIC LIST
*----
*END-OF-PAGE
*----
END-OF-PAGE. "CREATES FOOTER FOR THE BASIC AND SECONDARY LIST
PERFORM footer.
*----
*START-OF-SELECTION
*----
START-OF-SELECTION.
PERFORM generation_basic. "GENERATES REPORT FOR BASIC LIST WHICH CONTAINS DOCUMENT NO , DOCUMENT YEAR
"POST DATE , DOCUMENT TYPE.
*----
*END-OF-SELECTION
*----
END-OF-SELECTION.
PERFORM report_basic. "DISPLAY REPORT FOR BASIC LIST
*----
*AT LINE-SELECTION
*----
AT LINE-SELECTION.
PERFORM generation_secondary. "GENERATES REPORT FOR SECONDARY LIST BASED ON THE DOCUMENT NUMBER AND DOCUMENT YEAR
"WHICH CONTAINS DOCUMENT NO , YEAR , ITEM NO , MOVEMENT TYPE , MOVEMENT DESCRIPTION ,
"MATERIAL NUMBER , MATERIAL DESC , UNIT OF MEASURE , QUANTITY AND AMOUNT
*----
*TOP-OF-PAGE DURING LINE-SELECTION
*----
TOP-OF-PAGE DURING LINE-SELECTION.
PERFORM header_secondary. "CREATES HEADER FOR THE SECONDARY LIST
*----
*AT USER-COMMAND
*----
AT USER-COMMAND.
PERFORM user_secondary. "SUBROUTINE FOR HANDLING USER EVENTS
&----
*& Form VALIDATION
&----
text
----
--> p1 text
<-- p2 text
----
FORM validation .
*VALIDATING MATERIAL DOCUMENT NUMBER
SELECT SINGLE mblnr
INTO v_mblnr
FROM mkpf
WHERE mblnr IN s_mblnr.
IF sy-subrc NE 0.
MESSAGE 'ENTER CORRECT DOCUMENT NUMBER' TYPE 'E'.
ENDIF.
*VALIDATING MATERIAL DOCUMENT YEAR
SELECT SINGLE mjahr
INTO v_mjahr
FROM mkpf
WHERE mjahr IN s_mjahr.
IF sy-subrc NE 0.
MESSAGE 'ENTER CORRECT MATERIAL DOCUMENT YEAR' TYPE 'E'.
ENDIF.
*VALIDATING MOVEMENT TYPE
SELECT SINGLE bwart
INTO v_bwart
FROM mseg
WHERE bwart IN s_bwart.
IF sy-subrc NE 0.
MESSAGE 'ENTER CORRECT MOVEMENT TYPE' TYPE 'E'.
ENDIF.
*VALIDATING MATERIAL NUMBER
SELECT SINGLE matnr
INTO v_matnr
FROM mseg
WHERE matnr IN s_matnr.
IF sy-subrc NE 0.
MESSAGE 'ENTER CORRECT MATERIAL NUMBER' TYPE 'E'.
ENDIF.
ENDFORM. " VALIDATION
&----
*& Form HEADER
&----
text
----
--> p1 text
<-- p2 text
----
FORM header .
WRITE :/30 'MATERIAL DOCUMENTS' COLOR 1. "TITLE OF BASIC LIST
WRITE :/1(89) sy-uline.
FORMAT COLOR 1.
WRITE :/1 sy-vline ,
3 'DOCUMENT NUMBER' ,
23 sy-vline ,
25 'YEAR' ,
45 sy-vline ,
47 'POST DATE' ,
67 sy-vline ,
69 'DOCTYP' ,
89 sy-vline .
FORMAT RESET.
WRITE :/1(89) sy-uline.
ENDFORM. " HEADER
&----
*& Form FOOTER
&----
text
----
--> p1 text
<-- p2 text
----
FORM footer .
IF sy-lsind EQ 0. "CHECKS WHICH LIST IS IT BASIC LIST OR SECONDARY (AND NO. OF SECONDARY LIST)
WRITE :/1(89) sy-uline.
ELSEIF sy-lsind EQ 1.
WRITE :/1(192) sy-uline.
ENDIF.
ENDFORM. " FOOTER
&----
*& Form GENERATION_BASIC
&----
text
----
--> p1 text
<-- p2 text
----
FORM generation_basic .
SELECT mkpf~mblnr "DOCUMENT NUMBER
mkpf~mjahr "DOCUMENT YEAR
mkpf~budat "POST DATE
mkpf~blart "DOCUMENT TYPE
INTO TABLE i_tab1
FROM mkpf INNER JOIN mseg ON mkpfmjahr EQ msegmjahr AND
mkpfmblnr EQ msegmblnr
WHERE mkpf~mblnr IN s_mblnr
AND mkpf~mjahr IN s_mjahr
AND mseg~bwart IN s_bwart
AND mseg~matnr IN s_matnr.
IF sy-subrc NE 0.
WRITE 😕 'MATERIAL DATA NOT FOUND'.
ENDIF.
DELETE ADJACENT DUPLICATES FROM i_tab1 COMPARING mblnr mjahr.
ENDFORM. " GENERATION_BASIC
&----
*& Form REPORT_BASIC
&----
text
----
--> p1 text
<-- p2 text
----
FORM report_basic .
LOOP AT i_tab1.
v_color = sy-tabix MOD 2.
IF v_color EQ 0.
FORMAT COLOR 1 INTENSIFIED OFF.
ELSE.
FORMAT COLOR 2 INTENSIFIED OFF.
ENDIF.
WRITE :/1 sy-vline ,
3 i_tab1-mblnr ,
23 sy-vline ,
25 i_tab1-mjahr ,
45 sy-vline ,
47 i_tab1-budat ,
67 sy-vline ,
69 i_tab1-blart ,
89 sy-vline .
HIDE : i_tab1-mblnr , i_tab1-mjahr. "STORING THE VALUE OF FIELDS CLICKED IN SYSTEM AREA
ENDLOOP.
FORMAT RESET.
WRITE :/1(89) sy-uline.
ENDFORM. " REPORT_BASIC
&----
*& Form GENERATION_SECONDARY
&----
text
----
--> p1 text
<-- p2 text
----
FORM generation_secondary .
IF sy-lsind EQ 1.
SET PF-STATUS 'DISPLAY'.
GET CURSOR FIELD v_field VALUE v_value. "GET THE FIELD VALUE AND NAME WHERE THE CURSOR WAS CLICKED
CASE v_field.
WHEN 'I_TAB1-MBLNR'. "DISPLAYS SECONDARY LIST ONLY IF DOCUMENT NUMBER IS CLICKED
SELECT mseg~mblnr "DOCUMENT NUMBER
mseg~mjahr "DOCUMENT YEAR
mseg~zeile "ITEM NUMBER
mseg~bwart "MOVEMENT TYPE
t156t~btext "MOVEMENT DESCRIPTION
mseg~matnr "MATERIAL NUMBER
makt~maktx "MATERIAL DESCRIPTION
mseg~meins "UNIT OF MEASURE
mseg~menge "QUANTITY
mseg~dmbtr "AMOUNT
INTO TABLE i_tab2
FROM ( ( mseg INNER JOIN t156t
ON msegbwart EQ t156tbwart )
INNER JOIN makt
ON msegmatnr EQ maktmatnr )
WHERE mseg~mblnr EQ i_tab1-mblnr
AND mseg~mjahr EQ i_tab1-mjahr
AND t156t~spras EQ sy-langu
AND makt~spras EQ sy-langu.
DELETE ADJACENT DUPLICATES FROM i_tab2 COMPARING mblnr mjahr.
WHEN OTHERS.
MESSAGE 'SELECT DOCUMENT NUMBER' TYPE 'E'.
ENDCASE.
LOOP AT i_tab2.
v_color = sy-tabix MOD 2.
IF v_color EQ 0.
FORMAT COLOR 1 INTENSIFIED OFF.
ELSE.
FORMAT COLOR 2 INTENSIFIED OFF.
ENDIF.
WRITE :/1 sy-vline ,
3 i_tab2-mblnr ,
12 sy-vline ,
14 i_tab2-mjahr ,
19 sy-vline ,
21 i_tab2-zeile ,
30 sy-vline ,
32 i_tab2-bwart ,
40 sy-vline ,
42 i_tab2-btext ,
72 sy-vline ,
74 i_tab2-matnr ,
94 sy-vline ,
96 i_tab2-maktx ,
146 sy-vline ,
148 i_tab2-meins ,
153 sy-vline ,
155 i_tab2-menge ,
170 sy-vline ,
172 i_tab2-dmbtr ,
192 sy-vline .
ENDLOOP.
WRITE :/1(192) sy-uline.
FORMAT RESET.
ELSEIF sy-lsind EQ 2.
GET CURSOR FIELD v_field VALUE v_value. "GET THE FIELD VALUE AND NAME WHERE THE CURSOR WAS CLICKED
CASE v_field.
WHEN 'I_TAB2-MBLNR'. "DISPLAYS SECONDARY LIST ONLY IF DOCUMENT NUMBER IS CLICKED
<b> SET PARAMETER ID : "SETTING PARAMETER ID FOR DOCUMENT NUMBER AND YEAR.
'MBN' FIELD i_tab2-mblnr ,
'MJA' FIELD i_tab2-mjahr.
CALL TRANSACTION 'MB03' AND SKIP FIRST</b> SCREEN. "CALLING TRABSACTION CODE 'MBO3'.
WHEN OTHERS.
MESSAGE 'SELECT DOCUMENT NUMBER' TYPE 'E'.
ENDCASE.
ENDIF.
ENDFORM. " GENERATION_SECONDARY
&----
*& Form HEADER_SECONDARY
&----
text
----
--> p1 text
<-- p2 text
----
FORM header_secondary .
WRITE :/50 'ITEMWISE MATERIAL DOCUMENTS' COLOR 1.
WRITE :/1(192) sy-uline.
FORMAT COLOR 1.
WRITE :/1 sy-vline ,
3 'DOCUMENT NO' ,
12 sy-vline ,
14 'YEAR' ,
19 sy-vline ,
21 'ITEM NO.' ,
30 sy-vline ,
32 'MOV TYP' ,
40 sy-vline ,
42 'MOV DESCRIPTION' ,
72 sy-vline ,
74 'MATERIAL NO' ,
94 sy-vline ,
96 'MATERIAL DESCRIPTION' ,
146 sy-vline ,
148 'UOM' ,
153 sy-vline ,
155 'QUANTITY' ,
170 sy-vline ,
172 'AMOUNT' ,
192 sy-vline .
WRITE :/1(192) sy-uline.
FORMAT RESET.
ENDFORM. " HEADER_SECONDARY
&----
*& Form USER_SECONDARY
&----
text
----
--> p1 text
<-- p2 text
----
FORM user_secondary .
IF sy-ucomm EQ 'DISPLAY'. "EXECUTES ONLY IF 'DISPLAY DOCUMENTS' ITEM IS CLICKED ON APPLICATION TOOL BAR.
IF sy-lsind EQ 2.
GET CURSOR FIELD v_field VALUE v_value. "GET THE FIELD VALUE AND NAME WHERE THE CURSOR WAS CLICKED
CASE v_field.
WHEN 'I_TAB2-MBLNR'. "DISPLAYS SECONDARY LIST ONLY IF DOCUMENT NUMBER IS CLICKED
SET PARAMETER ID :
'MBN' FIELD i_tab2-mblnr ,
'MJA' FIELD i_tab2-mjahr.
CALL TRANSACTION 'MB03' AND SKIP FIRST SCREEN.
WHEN OTHERS.
MESSAGE 'SELECT DOCUMENT NUMBER' TYPE 'E'.
ENDCASE.
ENDIF.
LEAVE PROGRAM.
ENDIF.
ENDFORM. " USER_SECONDARY
*&----
**& Module USER_COMMAND_0100 INPUT
*&----
text
*----
*module USER_COMMAND_0100 input.
*
*if sy-ucomm eq 'SUBMIT'.
*
*submit zwk22671. " and return using selection-set 'MATERIAL VAR'.
*
*ENDIF.
*
*
*
*endmodule. " USER_COMMAND_0100 INPUT
Message was edited by:
Navneeth Bothra
| User | Count |
|---|---|
| 6 | |
| 2 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 |