*---------------------------
loop at itab.
write :/ c as checkbox , itab-v.
endloop.
*---------------------------
There is a general logic of 'Select block' using line selection function not using checkbox. How to intergrate it into above program. Surely i know those things like 'PF-status' define things...Just dont know what the logic should be after 'case user command' and handling with Checkbox in Internal table.
Code:
DATA: INDEX0_ITAB LIKE SY-TFILL,
INDEX1_ITAB LIKE SY-TFILL,
INDEX2_ITAB LIKE SY-TFILL.
*&---------------------------------------------------------------------*
*& Module USER_COMMAND INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE USER_COMMAND INPUT.
CASE OK_CODE.
WHEN 'SBLK'.
CLEAR OK.
CLEAR SY-UCOMM.
PERFORM SELECT_BLOCK.
ENDCASE.
*&---------------------------------------------------------------------*
*& Form SELECT_BLOCK
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM SELECT_BLOCK.
DATA: INDEX0_ITAB LIKE SY-TFILL.
DESCRIBE TABLE ITAB LINES SY-TFILL.
CHECK: SY-TFILL GT 0.
INDEX0_ITAB = 1.
WHILE INDEX0_ITAB LE SY-TFILL.
INDEX1_ITAB = INDEX0_ITAB.
READ TABLE ITAB INDEX INDEX1_ITAB.
WHILE ITAB-SEL EQ ' ' AND
INDEX1_ITAB LE SY-TFILL.
INDEX1_ITAB = INDEX1_ITAB + 1.
READ TABLE ITAB INDEX INDEX1_ITAB.
ENDWHILE.
INDEX2_ITAB = INDEX1_ITAB + 1.
READ TABLE ITAB INDEX INDEX2_ITAB.
WHILE ITAB-SEL EQ ' ' AND
INDEX2_ITAB LE SY-TFILL.
INDEX2_ITAB = INDEX2_ITAB + 1.
READ TABLE ITAB INDEX INDEX2_ITAB.
ENDWHILE.
INDEX0_ITAB = INDEX2_ITAB + 1.
LOOP AT ITAB FROM INDEX1_ITAB TO INDEX2_ITAB.
ITAB-SEL = 'X'.
MODIFY ITAB.
ENDLOOP.
ENDWHILE.
ENDFORM. " SELECT_BLOCK
Code:
Example 2
Code:
*Eject
**********************************************************************
*
* Procedure: Select_All
*
* Purpose: Selects all operations for all orders
*
* Entry:
*
* Exit:
*
* Called By: Perform Select_All.
*
* Calls:
*
* Modification History:
*
Form Select_All.
Perform Sel_Desel using True.
EndForm.
*Eject
**********************************************************************
*
* Procedure: Select_Single
*
* Purpose: Selects all operations for current line
*
* Entry: sy-lilli contains line to change.
*
* Exit:
*
* Called By: Perform Select_Single using True
* w_opts
*
* Calls:
*
* Modification History:
*
Form Select_Single using p_value type boolean
p_opts type operations.
If p_opts-cnfmd = True.
Modify Line sy-lilli
Field Value g_report_line-cnfmd from p_value.
EndIf.
If p_opts-recpt = True.
Modify Line sy-lilli
Field Value g_report_line-recpt from p_value.
EndIf.
If p_opts-pickd = True.
Modify Line sy-lilli
Field Value g_report_line-pickd from p_value.
EndIf.
EndForm.
*Eject
**********************************************************************
*
* Procedure: Sel_Desel
*
* Purpose: Selects/deselects all operations for
* all orders
*
* Entry: True - select orders, false otherwise
*
* Exit:
*
* Called By: Perform Sel_Desel using True.
*
* Calls:
*
* Modification History:
*
Form Sel_Desel using p_value type boolean.
*
* Get the operations to select/deselect
*
If p_value = True.
Call Selection-Screen 3000 starting at 10 10 ending at 60 20.
Else.
Call Selection-Screen 4000 starting at 10 10 ending at 60 20.
EndIf.
If g_cancel = false.
Do.
Clear g_report_line.
Read Line sy-index Field Value g_report_line-vbeln.
If sy-subrc <> 0.
Exit.
Else.
If g_report_line-vbeln <> ''.
Move sy-index to sy-lilli.
Perform Select_Single using p_value g_opts.
Endif.
EndIf.
EndDo.
EndIf.
EndForm.
*Eject
**********************************************************************
*
* Procedure: DeSelect_All
*
* Purpose: DeSelects all operations for all orders
*
* Entry:
*
* Exit:
*
* Called By: Perform DeSelect_All.
*
* Calls:
*
* Modification History:
*
Form DeSelect_All.
Perform Sel_Desel using False.
EndForm.
*Exit
**********************************************************************
*
* Procedure: Select_Block
*
* Purpose: Selects/deselects a block of lines for
* processing
*
* Entry: Toggle value
*
* Exit:
*
* Called By: Perform Select_All usign true.
*
* Calls:
*
* Modification History:
*
* Date Reason Version Who
*
Form Select_Block.
*
Statics w_first_line like sy-lilli.
Data: w_second_line like sy-lilli,
w_saved like sy-lilli,
w_vbeln like lips-vbeln.
*
* Is the first line set ?
*
If w_first_line = 0.
*
* Nope, save it...
*
Read Line Sy-Lilli field value g_report_line-vbeln into w_vbeln.
If w_vbeln <> ''.
Move sy-lilli to w_first_line.
Modify Line sy-lilli Line format Inverse on.
Else.
Message I000 with text-020.
EndIf.
Else.
*
* Make sure that the first line is before the second.
*
Move sy-lilli to w_saved.
Read Line w_first_line
field value g_report_line-vbeln into w_vbeln.
If w_vbeln <> ''.
Modify Line w_first_line Line format Inverse off.
If w_first_line > w_saved.
Move w_first_line to w_second_line.
Move w_saved to w_first_line.
Else.
Move w_saved to w_second_line.
EndIf.
*
* Get the operations to select
*
Call Selection-Screen 3000 starting at 10 10 ending at 60 20.
If g_cancel = False.
Do.
If w_first_line > w_second_line.
Exit.
Else.
Move '' to w_vbeln.
Read Line w_first_line
field value g_report_line-vbeln into w_vbeln.
If w_vbeln <> ''.
Move w_first_line to sy-lilli.
Perform select_single using True g_opts.
EndIf.
Add 1 to w_first_line.
EndIf.
EndDo.
EndIf.
Move 0 to w_first_line.
Move 0 to w_second_line.
Else.
Message I000 with text-010.
EndIf.
EndIf.
EndForm.
This does not touch the table that the report is derived from, but just changes the fields on the report.
Then when you want to do something with those rows (such as your delete):
Code:
*
* Locate the lines on the report to process.
*
Describe List Number Of Lines w_Max.
Do.
Move sy-index to w_current.
Clear g_report_line.
Read Line w_current Field Value g_report_line-vbeln
g_report_line-posnr
g_report_line-cnfmd
g_report_line-recpt
g_report_line-pickd.
If sy-subrc <> 0.
Exit.
Else.
*
* Find the order line in the order table.
*
If g_report_line-vbeln <> ''.
Call Function 'CONVERSION_EXIT_ALPHA_INPUT'
Exporting
Input = g_report_line-vbeln
Importing
Output = g_report_line-vbeln
Exceptions
Others = 1.
Read Table t_order_list into w_order_line
with key Lvbln = g_report_line-vbeln
Lpsnr = g_report_line-posnr.
*
* What do we need to do ?
*
If g_report_line-cnfmd = True.
AddDiscrete w_order_line-vbeln r_cnfmd.
EndIf.
If g_report_line-recpt = True.
AddDiscrete w_order_line-vbeln r_recpt.
EndIf.
If g_report_line-pickd = True.
AddDiscrete w_order_line-vbeln r_pickd.
EndIf.
EndIf.
EndIf.
Perform Show_Progress using Text-023 w_max w_current 0.
EndDo.
Note that you need to put any fields that require a user exit through the relevant user exit before you use it's value.
These should all be called from the USER-COMMAND event.
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum You cannot attach files in this forum You can download files in this forum
All product names are trademarks of their respective companies. SAPNET.RU websites are in no way affiliated with SAP AG. SAP, SAP R/3, R/3 software, mySAP, ABAP, BAPI, xApps, SAP NetWeaver and any other are registered trademarks of SAP AG. Every effort is made to ensure content integrity. Use information on this site at your own risk.