09-20-2008 3:52 PM
Hi SDN,
I am displaying on out put screen.
SalesOrder Delivery Invoice in one row.
i want to call separate list on clicking of SalesOrder Delivery Invoice, i.e. when SalesOrder is clicked list for SO details,
Delivery is clicked then list for delivery & same for Invoice.
Please let me know how it is possible.
Regards,
Rahul
09-22-2008 12:13 PM
Hi,
Check out the following code and execute it.
You can understand the functioning of GET CURSOR.
TABLES : vbak.
TYPES : BEGIN OF ty_vbak,
vbeln TYPE vbeln_va,
erdat TYPE erdat,
erzet TYPE erzet,
END OF ty_vbak,
BEGIN OF ty_vbap,
vbeln TYPE vbeln_va,
posnr TYPE posnr_va,
matnr TYPE matnr,
END OF ty_vbap,
BEGIN OF ty_output,
vbeln TYPE vbeln_va,
erdat TYPE erdat,
erzet TYPE erzet,
posnr TYPE posnr_va,
matnr TYPE matnr,
END OF ty_output.
DATA : it_vbak TYPE STANDARD TABLE OF ty_vbak INITIAL SIZE 0,
it_vbap TYPE STANDARD TABLE OF ty_vbap INITIAL SIZE 0,
it_output TYPE STANDARD TABLE OF ty_output INITIAL SIZE 0,
wa_vbak TYPE ty_vbak,
wa_vbap TYPE ty_vbap,
wa_output TYPE ty_output.
DATA : fldname TYPE string,
fldval TYPE i.
REFRESH : it_vbak,
it_vbap,
it_output.
CLEAR : wa_vbak,
wa_vbap,
wa_output.
SELECT-OPTIONS : s_vbeln FOR vbak-vbeln.
START-OF-SELECTION.
SELECT vbeln
erdat
erzet
FROM vbak
INTO TABLE it_vbak
WHERE vbeln IN s_vbeln.
IF NOT it_vbak IS INITIAL.
SELECT vbeln
posnr
matnr
FROM vbap
INTO TABLE it_vbap
FOR ALL ENTRIES IN it_vbak
WHERE vbeln = it_vbak-vbeln.
ENDIF.
LOOP AT it_vbap INTO wa_vbap.
wa_output-vbeln = wa_vbap-vbeln.
wa_output-posnr = wa_vbap-posnr.
wa_output-matnr = wa_vbap-matnr.
CLEAR wa_vbak.
READ TABLE it_vbak INTO wa_vbak WITH KEY vbeln = wa_vbap-vbeln.
IF sy-subrc = 0.
wa_output-erdat = wa_vbak-erdat.
wa_output-erzet = wa_vbak-erzet.
ENDIF.
APPEND wa_output TO it_output.
CLEAR wa_output.
ENDLOOP.
LOOP AT it_output INTO wa_output.
WRITE 😕 wa_output-vbeln,
wa_output-erdat,
wa_output-erzet.
ENDLOOP.
AT LINE-SELECTION.
GET CURSOR FIELD fldname VALUE fldval.
LOOP AT it_output INTO wa_output.
WRITE 😕 wa_output-posnr,
wa_output-matnr.
ENDLOOP.
Thanks.
09-20-2008 5:20 PM
09-20-2008 6:27 PM
Hi Rahul,
In the AT LINE-SELECTION event, try with
GET CURSOR FIELD fieldname VALUE value.
Press F1 to have more documentation on GET CURSOR.
Cheers,
Mandeep
09-21-2008 5:00 AM
Hi Rahul,
In the at line selection event, based on the document type say delivery, billing, etc call the respective sub-routine to print the document.
This should solve the issue.
Regards
Farzan
09-22-2008 11:34 AM
09-22-2008 11:53 AM
09-22-2008 11:53 AM
09-22-2008 12:13 PM
Hi,
Check out the following code and execute it.
You can understand the functioning of GET CURSOR.
TABLES : vbak.
TYPES : BEGIN OF ty_vbak,
vbeln TYPE vbeln_va,
erdat TYPE erdat,
erzet TYPE erzet,
END OF ty_vbak,
BEGIN OF ty_vbap,
vbeln TYPE vbeln_va,
posnr TYPE posnr_va,
matnr TYPE matnr,
END OF ty_vbap,
BEGIN OF ty_output,
vbeln TYPE vbeln_va,
erdat TYPE erdat,
erzet TYPE erzet,
posnr TYPE posnr_va,
matnr TYPE matnr,
END OF ty_output.
DATA : it_vbak TYPE STANDARD TABLE OF ty_vbak INITIAL SIZE 0,
it_vbap TYPE STANDARD TABLE OF ty_vbap INITIAL SIZE 0,
it_output TYPE STANDARD TABLE OF ty_output INITIAL SIZE 0,
wa_vbak TYPE ty_vbak,
wa_vbap TYPE ty_vbap,
wa_output TYPE ty_output.
DATA : fldname TYPE string,
fldval TYPE i.
REFRESH : it_vbak,
it_vbap,
it_output.
CLEAR : wa_vbak,
wa_vbap,
wa_output.
SELECT-OPTIONS : s_vbeln FOR vbak-vbeln.
START-OF-SELECTION.
SELECT vbeln
erdat
erzet
FROM vbak
INTO TABLE it_vbak
WHERE vbeln IN s_vbeln.
IF NOT it_vbak IS INITIAL.
SELECT vbeln
posnr
matnr
FROM vbap
INTO TABLE it_vbap
FOR ALL ENTRIES IN it_vbak
WHERE vbeln = it_vbak-vbeln.
ENDIF.
LOOP AT it_vbap INTO wa_vbap.
wa_output-vbeln = wa_vbap-vbeln.
wa_output-posnr = wa_vbap-posnr.
wa_output-matnr = wa_vbap-matnr.
CLEAR wa_vbak.
READ TABLE it_vbak INTO wa_vbak WITH KEY vbeln = wa_vbap-vbeln.
IF sy-subrc = 0.
wa_output-erdat = wa_vbak-erdat.
wa_output-erzet = wa_vbak-erzet.
ENDIF.
APPEND wa_output TO it_output.
CLEAR wa_output.
ENDLOOP.
LOOP AT it_output INTO wa_output.
WRITE 😕 wa_output-vbeln,
wa_output-erdat,
wa_output-erzet.
ENDLOOP.
AT LINE-SELECTION.
GET CURSOR FIELD fldname VALUE fldval.
LOOP AT it_output INTO wa_output.
WRITE 😕 wa_output-posnr,
wa_output-matnr.
ENDLOOP.
Thanks.
09-22-2008 12:20 PM
Hi Soumya,
I have following code.
AT LINE-SELECTION.
HIDE wa_final.
GET CURSOR FIELD wa_final value lv_value.
SET PARAMETER ID 'AUN' FIELD lv_value.
CALL TRANSACTION 'VA03' AND SKIP FIRST SCREEN.
This is for SalesOrder display, Similary when user clicks on Delivery he should get delivery screen same for Invoice.
I want to know when SalesOrder, Delivery & Invoice is getting clicked.
My SalesOrder, Delivery & Invoice are displayed on the same line.
Regards,
Rahul
09-22-2008 12:31 PM
Hi Rahul,
GET CURSOR FIELD wa_final VALUE lv_value.
wa_final will have the field name.
You have to write IF or Case to compare this wa_final with the corresponding fields for sales order, delivery, invoice.
Here is sample code.
Case wa_final
when 'wa_final-so_vbeln'.
SET PARAMETER ID 'AUN' FIELD lv_value.
CALL TRANSACTION 'VA03' AND SKIP FIRST SCREEN.
when ' wa_final-li_vbeln '.
*Do some action here
when 'wa_final-fu_vbeln '.
do some action here
endcase.
Plz check in the debugging mode what value you are getting in wa_final on clicking the three fields and use those values in the case statement.
Thanks,
Mandeep
09-22-2008 12:21 PM
Hi,
in your at line-selection event.
IF sy-cucol BETWEEN <col number> AND <col number>.
write the select query based on the field that is displayed between the column
ENDIF.
suppose sales order number is displayed between column 10 and 20
then check the condition
if sy-cucol between 10 and 20.
select * from vbak into table itab where vbeln = <selected vbeln>
endif
regards
padma
09-22-2008 12:29 PM
Hi,
This is my code.
END-OF-SELECTION.
WRITE : 'Sales Order', (35) 'Delivery', (50) 'Invoice'.
LOOP AT it_final INTO wa_final.
WRITE: / wa_final-so_vbeln UNDER 'Sales Order' HOTSPOT ON,
wa_final-li_vbeln UNDER 'Delivery' HOTSPOT ON,
wa_final-fu_vbeln UNDER 'Invoice' HOTSPOT ON.
ENDLOOP.
AT LINE-SELECTION.
HIDE wa_final.
GET CURSOR FIELD wa_final value lv_value.
SET PARAMETER ID 'AUN' FIELD lv_value.
CALL TRANSACTION 'VA03' AND SKIP FIRST SCREEN.
Please let me know is there any way to call separate transaction based on field clicked.
Regards,
Rahul
09-22-2008 12:35 PM
hi,
I think the correct coding would be:
END-OF-SELECTION.
WRITE : 'Sales Order', (35) 'Delivery', (50) 'Invoice'.
LOOP AT it_final INTO wa_final.
WRITE: / wa_final-so_vbeln UNDER 'Sales Order' HOTSPOT ON,
wa_final-li_vbeln UNDER 'Delivery' HOTSPOT ON,
wa_final-fu_vbeln UNDER 'Invoice' HOTSPOT ON.
HIDE wa_final-so_vbeln, wa_final-li_vbeln, wa_final-fu_vbeln.
ENDLOOP.
AT LINE-SELECTION.
GET CURSOR FIELD lv_field VALUE lv_value.
SET PARAMETER ID 'AUN' FIELD lv_value.
CALL TRANSACTION 'VA03' AND SKIP FIRST SCREEN.
Important is that the HIDE is right after WRITE and through GET CURSOR you'll know which sales doc was clicked (I assume all three are different in a row).
hope this helps
ec
09-22-2008 1:01 PM
END-OF-SELECTION.
WRITE : 'Sales Order', (35) 'Delivery', (50) 'Invoice'.
LOOP AT it_final INTO wa_final.
WRITE: / wa_final-so_vbeln UNDER 'Sales Order' HOTSPOT ON,
wa_final-li_vbeln UNDER 'Delivery' HOTSPOT ON,
wa_final-fu_vbeln UNDER 'Invoice' HOTSPOT ON.
ENDLOOP.
AT LINE-SELECTION.
GET CURSOR FIELD wa_final value lv_value.
SET PARAMETER ID 'AUN' FIELD lv_value.
CALL TRANSACTION 'VA03' AND SKIP FIRST SCREEN.
With luck,
Pritam.
09-22-2008 1:15 PM
Hi All,
Thanks for reply.
Please find the solution.
END-OF-SELECTION.
WRITE : 'Sales Order', (35) 'Delivery', (50) 'Invoice'.
LOOP AT it_final INTO wa_final.
WRITE: / wa_final-so_vbeln UNDER 'Sales Order' HOTSPOT ON,
wa_final-fu_vbeln UNDER 'Delivery' HOTSPOT ON,
wa_final-li_vbeln UNDER 'Invoice' HOTSPOT ON.
HIDE : wa_final-so_vbeln, wa_final-li_vbeln, wa_final-fu_vbeln.
ENDLOOP.
AT LINE-SELECTION.
" HIDE wa_final.
CASE wa_final.
GET CURSOR FIELD wa_final VALUE lv_value.
WHEN 'WA_FINAL-FU_VBELN'.
SET PARAMETER ID 'VL' FIELD lv_value.
CALL TRANSACTION 'VL03N' AND SKIP FIRST SCREEN.
WHEN 'WA_FINAL-SO_VBELN'.
SET PARAMETER ID 'AUN' FIELD lv_value.
CALL TRANSACTION 'VA03' AND SKIP FIRST SCREEN.
WHEN 'WA_FINAL-LI_VBELN'.
SET PARAMETER ID 'VF' FIELD lv_value.
SET PARAMETER ID 'BUK' FIELD '0005'.
CALL TRANSACTION 'VF03' AND SKIP FIRST SCREEN.
ENDCASE.
Regards,
Rahul