‎2007 Oct 29 6:28 AM
I have a requirement as below.
I have to display a list along with check boxes for each row in the list.Next when I click any of the check boxes of any row in the list .Then based on that record I have to display a list(Interactive process).Can any one post the procedure for that.
‎2007 Oct 29 6:34 AM
HI
Below is the code for displayin check boxes:
&----
*& Report Z_INVOICE_REPORT *
*& *
&----
*& *
*& *
&----
REPORT z_invoice_report .
--
TABLES: vbak.
vbfa,
vbap,
konv,
zresnonres.
--
TYPES:BEGIN OF ty_header,
knumv LIKE vbak-knumv,
END OF ty_header,
BEGIN OF ty_details,
knumv LIKE konv-knumv,
kwert LIKE konv-kwert,
kschl LIKE konv-kschl,
zaehk LIKE konv-zaehk,
kbetr LIKE konv-kbetr,
END OF ty_details,
BEGIN OF ty_output,
vbeln LIKE vbak-vbeln,
knumv LIKE konv-knumv,
kunnr LIKE vbak-kunnr,
matnr LIKE vbap-matnr,
kwert LIKE konv-kwert,
kbetr LIKE konv-kbetr,
kschl LIKE konv-kschl,
zaehk LIKE konv-zaehk,
posnr LIKE vbsp-posnr,
vbtyp LIKE vbak-vbtyp,
vbtyp_n LIKE vbfa-vbtyp_n,
check TYPE c,
END OF ty_output,
BEGIN OF ty_invoice,
vbeln TYPE vbak-vbeln,
vbtyp_n TYPE vbfa-vbtyp_n,
END OF ty_invoice.
--
DATA:tbl_header TYPE STANDARD TABLE OF ty_header,
tbl_details TYPE STANDARD TABLE OF ty_details,
tbl_output TYPE STANDARD TABLE OF ty_output,
tbl_modout TYPE STANDARD TABLE OF ty_output,
tbl_invoice TYPE STANDARD TABLE OF ty_invoice WITH HEADER LINE,
tbl_preinv TYPE STANDARD TABLE OF ty_output,
tbl_postinv TYPE STANDARD TABLE OF ty_output.
tbl_preinvdisc TYPE STANDARD TABLE OF zresnonres,
tbl_postinvdisc TYPE STANDARD TABLE OF zresnonres,
tbl_vbfa TYPE STANDARD TABLE OF vbfa.
--
DATA:
wa_header TYPE ty_header,
wa_details TYPE ty_details,
wa_output TYPE ty_output,
wa_modout TYPE ty_output,
wa_preinv TYPE ty_output,
wa_postinv TYPE ty_output.
wa_invoice TYPE ty_invoice.
wa_preinvdisc TYPE zresnonres,
wa_postinvdisc TYPE zresnonres,
mata LIKE vbap-matnr.
wa_vbfa TYPE STANDARD TABLE OF vbfa.
--
*DATA ok_code LIKE sy-ucomm.
SET PF-STATUS '100'.
--
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
SELECT-OPTIONS s_credat FOR vbak-erdat.
PARAMETERS p_user LIKE vbak-ernam.
SELECTION-SCREEN END OF BLOCK b1.
--
*Check if created by field is initial if so ignore it in select query
IF p_user IS INITIAL.
SELECT knumv
FROM vbak
INTO TABLE tbl_header
WHERE erdat IN s_credat.
ELSE.
If user has entered name of person include it in select query
SELECT knumv
FROM vbak
INTO TABLE tbl_header
WHERE erdat IN s_credat
AND ernam = p_user.
ENDIF.
Select the condition type details from konv table
IF NOT tbl_header[] IS INITIAL.
SELECT knumv
kwert
kschl
zaehk
kbetr
FROM konv
INTO CORRESPONDING FIELDS OF TABLE tbl_details
FOR ALL ENTRIES IN tbl_header
WHERE knumv = tbl_header-knumv
AND kruek = 'X'.
ENDIF.
Selecting the required fields for display from vbak and vbap
IF NOT tbl_details IS INITIAL.
SELECT p~vbeln
p~kunnr
p~knumv
q~posnr
p~vbtyp
q~matnr
INTO CORRESPONDING FIELDS OF TABLE tbl_output
FROM vbak AS p
JOIN vbap AS q
ON pvbeln = qvbeln
FOR ALL ENTRIES IN tbl_details
WHERE p~knumv = tbl_details-knumv.
ENDIF.
Selecting the sales documents which have been invoiced
SELECT pvbeln qvbtyp_n
INTO CORRESPONDING FIELDS OF TABLE tbl_invoice
FROM vbak AS p
INNER JOIN vbfa AS q
ON qvbelv = pvbeln
WHERE p~erdat IN s_credat
AND q~vbtyp_n = 'M' .
*Selecting the sales documents which have been invoiced
LOOP AT tbl_output INTO wa_output.
READ TABLE tbl_invoice WITH KEY vbeln =
wa_output-vbeln vbtyp_n = 'M'.
Moving the invoiced documents to Post invoice internal table
IF sy-subrc = 0.
MOVE-CORRESPONDING wa_output TO wa_postinv.
APPEND wa_postinv TO tbl_postinv.
Moving quotations to Pre invoice internal table
ELSE.
MOVE-CORRESPONDING wa_output TO wa_preinv.
APPEND wa_preinv TO tbl_preinv.
ENDIF.
ENDLOOP.
*Selecting the condition types details from konv table
LOOP AT tbl_preinv INTO wa_preinv.
READ TABLE tbl_details INTO wa_details WITH KEY knumv =
wa_preinv-knumv.
wa_preinv-knumv = wa_details-knumv.
wa_preinv-kwert = wa_details-kwert.
wa_preinv-kschl = wa_details-kschl.
wa_preinv-kbetr = wa_details-kbetr.
wa_preinv-zaehk = wa_details-zaehk.
wa_preinv-check = 'SPACE'.
Modifying the post invoice internal table from fetched details
MODIFY tbl_preinv FROM wa_preinv.
ENDLOOP.
*Selecting the condition types details from konv table
LOOP AT tbl_postinv INTO wa_postinv.
READ TABLE tbl_details INTO wa_details WITH KEY knumv =
wa_postinv-knumv.
wa_postinv-knumv = wa_details-knumv.
wa_postinv-kwert = wa_details-kwert.
wa_postinv-kschl = wa_details-kschl.
wa_postinv-kbetr = wa_details-kbetr.
wa_postinv-zaehk = wa_details-zaehk.
wa_postinv-check = 'SPACE'.
Modifying the post invoice internal table from fetched details
MODIFY tbl_postinv FROM wa_postinv.
ENDLOOP.
Displaying the output
WRITE /'PRE-INVOICE'.
WRITE: / sy-uline(80).
WRITE : / '' UNDER 'PRE-INVOICE'.
WRITE AT 5 sy-vline.
WRITE : 'Quotation Number'.
WRITE AT 24 sy-vline.
WRITE: 'Customer' .
WRITE AT 42 sy-vline.
WRITE : 'material'.
WRITE AT 60 sy-vline.
WRITE: 'Discount Amount'.
WRITE AT 80 sy-vline.
WRITE: / sy-uline(80).
LOOP AT tbl_preinv INTO wa_preinv.
<b>WRITE : / ' ' ,wa_preinv-check AS CHECKBOX UNDER 'PRE-INVOICE'.</b>
WRITE AT 5 sy-vline.
WRITE: wa_preinv-vbeln UNDER'Quotation Number'.
WRITE AT 24 sy-vline.
WRITE: wa_preinv-kunnr UNDER 'Customer'.
WRITE AT 42 sy-vline.
WRITE: wa_preinv-matnr UNDER 'material'.
WRITE AT 60 sy-vline.
WRITE: wa_preinv-kwert UNDER'Discount Amount' .
WRITE AT 80 sy-vline.
WRITE: / sy-uline(80).
ENDLOOP.
WRITE /'POST-INVOICE'.
WRITE: / sy-uline(80).
WRITE : / ' ' UNDER 'POST-INVOICE'.
WRITE AT 5 sy-vline.
WRITE : 'Invoice Number'.
WRITE AT 24 sy-vline.
WRITE: 'Customer' .
WRITE AT 42 sy-vline.
WRITE : 'material'.
WRITE AT 60 sy-vline.
WRITE: 'Discount Amount'.
WRITE AT 80 sy-vline.
WRITE: / sy-uline(80).
LOOP AT tbl_postinv INTO wa_postinv .
WRITE : / ' ' ,wa_postinv-check AS CHECKBOX UNDER 'PRE-INVOICE'.
WRITE AT 5 sy-vline.
WRITE: wa_postinv-vbeln UNDER'Invoice Number'.
WRITE AT 24 sy-vline.
WRITE: wa_postinv-kunnr UNDER 'Customer'.
WRITE AT 42 sy-vline.
WRITE: wa_postinv-matnr UNDER 'material'.
WRITE AT 60 sy-vline.
WRITE: wa_postinv-kwert UNDER'Discount Amount' .
WRITE AT 80 sy-vline.
WRITE: / sy-uline(80).
ENDLOOP.
AT USER-COMMAND.
CASE sy-ucomm.
WHEN 'BACK' OR 'EXIT' OR 'CANCEL'.
LEAVE TO SCREEN 0.
ENDCASE.
Regards
Vasudha
Message was edited by:
Vasudha L
‎2007 Oct 29 6:34 AM
HI
Below is the code for displayin check boxes:
&----
*& Report Z_INVOICE_REPORT *
*& *
&----
*& *
*& *
&----
REPORT z_invoice_report .
--
TABLES: vbak.
vbfa,
vbap,
konv,
zresnonres.
--
TYPES:BEGIN OF ty_header,
knumv LIKE vbak-knumv,
END OF ty_header,
BEGIN OF ty_details,
knumv LIKE konv-knumv,
kwert LIKE konv-kwert,
kschl LIKE konv-kschl,
zaehk LIKE konv-zaehk,
kbetr LIKE konv-kbetr,
END OF ty_details,
BEGIN OF ty_output,
vbeln LIKE vbak-vbeln,
knumv LIKE konv-knumv,
kunnr LIKE vbak-kunnr,
matnr LIKE vbap-matnr,
kwert LIKE konv-kwert,
kbetr LIKE konv-kbetr,
kschl LIKE konv-kschl,
zaehk LIKE konv-zaehk,
posnr LIKE vbsp-posnr,
vbtyp LIKE vbak-vbtyp,
vbtyp_n LIKE vbfa-vbtyp_n,
check TYPE c,
END OF ty_output,
BEGIN OF ty_invoice,
vbeln TYPE vbak-vbeln,
vbtyp_n TYPE vbfa-vbtyp_n,
END OF ty_invoice.
--
DATA:tbl_header TYPE STANDARD TABLE OF ty_header,
tbl_details TYPE STANDARD TABLE OF ty_details,
tbl_output TYPE STANDARD TABLE OF ty_output,
tbl_modout TYPE STANDARD TABLE OF ty_output,
tbl_invoice TYPE STANDARD TABLE OF ty_invoice WITH HEADER LINE,
tbl_preinv TYPE STANDARD TABLE OF ty_output,
tbl_postinv TYPE STANDARD TABLE OF ty_output.
tbl_preinvdisc TYPE STANDARD TABLE OF zresnonres,
tbl_postinvdisc TYPE STANDARD TABLE OF zresnonres,
tbl_vbfa TYPE STANDARD TABLE OF vbfa.
--
DATA:
wa_header TYPE ty_header,
wa_details TYPE ty_details,
wa_output TYPE ty_output,
wa_modout TYPE ty_output,
wa_preinv TYPE ty_output,
wa_postinv TYPE ty_output.
wa_invoice TYPE ty_invoice.
wa_preinvdisc TYPE zresnonres,
wa_postinvdisc TYPE zresnonres,
mata LIKE vbap-matnr.
wa_vbfa TYPE STANDARD TABLE OF vbfa.
--
*DATA ok_code LIKE sy-ucomm.
SET PF-STATUS '100'.
--
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
SELECT-OPTIONS s_credat FOR vbak-erdat.
PARAMETERS p_user LIKE vbak-ernam.
SELECTION-SCREEN END OF BLOCK b1.
--
*Check if created by field is initial if so ignore it in select query
IF p_user IS INITIAL.
SELECT knumv
FROM vbak
INTO TABLE tbl_header
WHERE erdat IN s_credat.
ELSE.
If user has entered name of person include it in select query
SELECT knumv
FROM vbak
INTO TABLE tbl_header
WHERE erdat IN s_credat
AND ernam = p_user.
ENDIF.
Select the condition type details from konv table
IF NOT tbl_header[] IS INITIAL.
SELECT knumv
kwert
kschl
zaehk
kbetr
FROM konv
INTO CORRESPONDING FIELDS OF TABLE tbl_details
FOR ALL ENTRIES IN tbl_header
WHERE knumv = tbl_header-knumv
AND kruek = 'X'.
ENDIF.
Selecting the required fields for display from vbak and vbap
IF NOT tbl_details IS INITIAL.
SELECT p~vbeln
p~kunnr
p~knumv
q~posnr
p~vbtyp
q~matnr
INTO CORRESPONDING FIELDS OF TABLE tbl_output
FROM vbak AS p
JOIN vbap AS q
ON pvbeln = qvbeln
FOR ALL ENTRIES IN tbl_details
WHERE p~knumv = tbl_details-knumv.
ENDIF.
Selecting the sales documents which have been invoiced
SELECT pvbeln qvbtyp_n
INTO CORRESPONDING FIELDS OF TABLE tbl_invoice
FROM vbak AS p
INNER JOIN vbfa AS q
ON qvbelv = pvbeln
WHERE p~erdat IN s_credat
AND q~vbtyp_n = 'M' .
*Selecting the sales documents which have been invoiced
LOOP AT tbl_output INTO wa_output.
READ TABLE tbl_invoice WITH KEY vbeln =
wa_output-vbeln vbtyp_n = 'M'.
Moving the invoiced documents to Post invoice internal table
IF sy-subrc = 0.
MOVE-CORRESPONDING wa_output TO wa_postinv.
APPEND wa_postinv TO tbl_postinv.
Moving quotations to Pre invoice internal table
ELSE.
MOVE-CORRESPONDING wa_output TO wa_preinv.
APPEND wa_preinv TO tbl_preinv.
ENDIF.
ENDLOOP.
*Selecting the condition types details from konv table
LOOP AT tbl_preinv INTO wa_preinv.
READ TABLE tbl_details INTO wa_details WITH KEY knumv =
wa_preinv-knumv.
wa_preinv-knumv = wa_details-knumv.
wa_preinv-kwert = wa_details-kwert.
wa_preinv-kschl = wa_details-kschl.
wa_preinv-kbetr = wa_details-kbetr.
wa_preinv-zaehk = wa_details-zaehk.
wa_preinv-check = 'SPACE'.
Modifying the post invoice internal table from fetched details
MODIFY tbl_preinv FROM wa_preinv.
ENDLOOP.
*Selecting the condition types details from konv table
LOOP AT tbl_postinv INTO wa_postinv.
READ TABLE tbl_details INTO wa_details WITH KEY knumv =
wa_postinv-knumv.
wa_postinv-knumv = wa_details-knumv.
wa_postinv-kwert = wa_details-kwert.
wa_postinv-kschl = wa_details-kschl.
wa_postinv-kbetr = wa_details-kbetr.
wa_postinv-zaehk = wa_details-zaehk.
wa_postinv-check = 'SPACE'.
Modifying the post invoice internal table from fetched details
MODIFY tbl_postinv FROM wa_postinv.
ENDLOOP.
Displaying the output
WRITE /'PRE-INVOICE'.
WRITE: / sy-uline(80).
WRITE : / '' UNDER 'PRE-INVOICE'.
WRITE AT 5 sy-vline.
WRITE : 'Quotation Number'.
WRITE AT 24 sy-vline.
WRITE: 'Customer' .
WRITE AT 42 sy-vline.
WRITE : 'material'.
WRITE AT 60 sy-vline.
WRITE: 'Discount Amount'.
WRITE AT 80 sy-vline.
WRITE: / sy-uline(80).
LOOP AT tbl_preinv INTO wa_preinv.
<b>WRITE : / ' ' ,wa_preinv-check AS CHECKBOX UNDER 'PRE-INVOICE'.</b>
WRITE AT 5 sy-vline.
WRITE: wa_preinv-vbeln UNDER'Quotation Number'.
WRITE AT 24 sy-vline.
WRITE: wa_preinv-kunnr UNDER 'Customer'.
WRITE AT 42 sy-vline.
WRITE: wa_preinv-matnr UNDER 'material'.
WRITE AT 60 sy-vline.
WRITE: wa_preinv-kwert UNDER'Discount Amount' .
WRITE AT 80 sy-vline.
WRITE: / sy-uline(80).
ENDLOOP.
WRITE /'POST-INVOICE'.
WRITE: / sy-uline(80).
WRITE : / ' ' UNDER 'POST-INVOICE'.
WRITE AT 5 sy-vline.
WRITE : 'Invoice Number'.
WRITE AT 24 sy-vline.
WRITE: 'Customer' .
WRITE AT 42 sy-vline.
WRITE : 'material'.
WRITE AT 60 sy-vline.
WRITE: 'Discount Amount'.
WRITE AT 80 sy-vline.
WRITE: / sy-uline(80).
LOOP AT tbl_postinv INTO wa_postinv .
WRITE : / ' ' ,wa_postinv-check AS CHECKBOX UNDER 'PRE-INVOICE'.
WRITE AT 5 sy-vline.
WRITE: wa_postinv-vbeln UNDER'Invoice Number'.
WRITE AT 24 sy-vline.
WRITE: wa_postinv-kunnr UNDER 'Customer'.
WRITE AT 42 sy-vline.
WRITE: wa_postinv-matnr UNDER 'material'.
WRITE AT 60 sy-vline.
WRITE: wa_postinv-kwert UNDER'Discount Amount' .
WRITE AT 80 sy-vline.
WRITE: / sy-uline(80).
ENDLOOP.
AT USER-COMMAND.
CASE sy-ucomm.
WHEN 'BACK' OR 'EXIT' OR 'CANCEL'.
LEAVE TO SCREEN 0.
ENDCASE.
Regards
Vasudha
Message was edited by:
Vasudha L
‎2007 Oct 29 6:34 AM
Hi
In the final Output internal table display a Single char field as first field and
while writing display that single char field as check box.
it displays along with other fields as check box.
Then write the code to select that in a do..enddo loop and read the SY-LISEL field for each selected record and capture the key field on that row and move all those values into another internal table
and display those data in another list using SY-UCOMM.
Regards
Anji
‎2007 Oct 29 6:38 AM
hi,
use this..
<b>WRITE : / ' ' ,wa_preinv-check AS CHECKBOX UNDER 'PRE-INVOICE'.</b>
With Rgds,
S.Barani
‎2007 Oct 29 9:18 AM
hi sandeep,
check this sample code...... where wa_ekko-chk is checkbox ie., my work area contains checkbox as component.
This is my Types Declaration:
BEGIN OF tp_ekko, "STRUCTURE FOR EKKO TABLE
ebeln TYPE ekko-ebeln,
bukrs TYPE ekko-bukrs,
bsart TYPE ekko-bsart,
lifnr TYPE ekko-lifnr,
zterm TYPE ekko-zterm,
llief TYPE ekko-llief,
chk TYPE c,
END OF tp_ekko,
AT USER-COMMAND.
CASE sy-ucomm.
selects all purchase items that are checked.
WHEN 'SELECT'.
w_count = 0. <b>" w_count is used to keep track whether any checkbox is checked or not</b> DO.
READ LINE sy-index FIELD VALUE wa_ekko-chk.
IF sy-subrc <> 0. <b> " Loop terminating condition</b> EXIT.
ENDIF.
IF wa_ekko-chk = 'X'. <b> " If checkbox is checked, then display</b> PERFORM display.
CLEAR wa_ekko-chk.
w_count = w_count + 1.
ENDIF.
ENDDO.
IF w_count = 0.
MESSAGE text-000 TYPE 'E'. <b>"ATLEAST ONE PURCHASE ORDER SHOULD BE CHECKED TO DISPLAY THE PURCHASE ITEM.</b>
ENDIF.
<u>Bolded lines are Comments.</u><b></b>
Reward me if useful.....
Harimanjesh AN
‎2007 Oct 29 9:24 AM
Hi sandeep,
Simple solution is...
DO.
MOVE space TO pick1.
READ LINE sy-index FIELD VALUE pick1.
IF sy-subrc <> 0.
EXIT.
ENDIF.
IF pick1 EQ 'X'.
"you code goes here...
ENDIF.
ENDDO.