Sometimes we just need to copy & paste a lot of
records into table control. Now table control lines are specific (say 13 lines)
as per design level. If we want to paste more lines (say 100) into this table
control then it will not happen. In this case the system will paste only first
13 lines into the table control which is visible though the copy is there (RAM).
At this point we need to paste total 100 lines into that table control.
We cannot achieve this by just paste (ctrl + v) option.
Here we create a button by which we shall achieve this purpose. This button
functions exactly like ‘Upload from Clip Board’ which is standard. Here we need
to call method: cl_gui_frontend_services=>clipboard_import
This method generates an internal table which contains
the total copy data. If we select only one field then the table will have only
one field. If we select more than one field then internal table will have more
than one field. Hence the table structure depends on the selected copy.
In the following example we just create a table control.
INCLUDE ztabc_o01 . " PBO-Modules
INCLUDE ztabc_i01 . " PAI-Modules
INCLUDE ztabc_f01 . " FORM-Routines
Top Include:
TABLES: zsd_pallet_ser.
TYPES: BEGIN OF ty_ser,
sernr TYPE zsd_pallet_ser-sernr,
END OF ty_ser.
DATA: wa_ser TYPE ty_ser,
it_ser TYPE TABLE OF ty_ser.
DATA: ok_code_9000 TYPE sy-ucomm.
CONTROLS: tabc_9000 TYPE TABLEVIEW USING SCREEN 9000.
TYPES: BEGIN OF ty_ser,
sernr TYPE zsd_pallet_ser-sernr,
END OF ty_ser.
DATA: wa_ser TYPE ty_ser,
it_ser TYPE TABLE OF ty_ser.
DATA: ok_code_9000 TYPE sy-ucomm.
CONTROLS: tabc_9000 TYPE TABLEVIEW USING SCREEN 9000.
PBO Include:
MODULE status_9000 OUTPUT.
SET PF-STATUS 'PF_9000'.
SET TITLEBAR 'T_9000'.
ENDMODULE.
SET PF-STATUS 'PF_9000'.
SET TITLEBAR 'T_9000'.
ENDMODULE.
MODULE tabc_9000_pbo OUTPUT.
DESCRIBE TABLE it_ser LINES sy-dbcnt.
tabc_9000-current_line = sy-loopc.
tabc_9000-lines = sy-dbcnt.
zsd_pallet_ser-sernr = wa_ser-sernr.
ENDMODULE.
DESCRIBE TABLE it_ser LINES sy-dbcnt.
tabc_9000-current_line = sy-loopc.
tabc_9000-lines = sy-dbcnt.
zsd_pallet_ser-sernr = wa_ser-sernr.
ENDMODULE.
PAI Include:
MODULE user_command_9000 INPUT.
CASE ok_code_9000.
WHEN 'BACK'.
PERFORM back_9000.
WHEN 'UPL'.
PERFORM upload_data.
ENDCASE.
ENDMODULE.
CASE ok_code_9000.
WHEN 'BACK'.
PERFORM back_9000.
WHEN 'UPL'.
PERFORM upload_data.
ENDCASE.
ENDMODULE.
MODULE tabc_9000_pai INPUT.
READ TABLE it_ser INTO wa_ser INDEX tabc_9000-current_line.
IF sy-subrc = 0.
MODIFY it_ser FROM wa_ser INDEX tabc_9000-current_line.
ENDIF.
ENDMODULE.
READ TABLE it_ser INTO wa_ser INDEX tabc_9000-current_line.
IF sy-subrc = 0.
MODIFY it_ser FROM wa_ser INDEX tabc_9000-current_line.
ENDIF.
ENDMODULE.
Form Include:
FORM back_9000 .
CLEAR: ok_code_9000.
LEAVE PROGRAM.
ENDFORM.
CLEAR: ok_code_9000.
LEAVE PROGRAM.
ENDFORM.
FORM upload_data .
TYPES: BEGIN OF ty_clip,
data TYPE char18,
END OF ty_clip.
DATA: it_clip TYPE TABLE OF ty_clip,
wa_clip TYPE ty_clip.
CALL METHOD cl_gui_frontend_services=>clipboard_import
IMPORTING
data = it_clip
EXCEPTIONS
cntl_error = 1
error_no_gui = 2
not_supported_by_gui = 3
OTHERS = 4.
IF sy-subrc = 0.
LOOP AT it_clip INTO wa_clip.
wa_ser-sernr = wa_clip-data.
APPEND wa_ser TO it_ser.
CLEAR: wa_ser, wa_clip.
ENDLOOP.
ENDIF.
CLEAR ok_code_9000.
ENDFORM.
TYPES: BEGIN OF ty_clip,
data TYPE char18,
END OF ty_clip.
DATA: it_clip TYPE TABLE OF ty_clip,
wa_clip TYPE ty_clip.
CALL METHOD cl_gui_frontend_services=>clipboard_import
IMPORTING
data = it_clip
EXCEPTIONS
cntl_error = 1
error_no_gui = 2
not_supported_by_gui = 3
OTHERS = 4.
IF sy-subrc = 0.
LOOP AT it_clip INTO wa_clip.
wa_ser-sernr = wa_clip-data.
APPEND wa_ser TO it_ser.
CLEAR: wa_ser, wa_clip.
ENDLOOP.
ENDIF.
CLEAR ok_code_9000.
ENDFORM.
Here we have generated the internal table by that method
and then populate the table control’s internal table. To avoid duplicate
entries we just clear the OK code inside there.
Now create a T-code and execute it. The table control will look like follows. We have created an upload button to copy from clipboard. In the visible section we have only 13 rows.
Now from excel we have selected 25 rows and copy (ctrl + c) it.
Now go to SAP screen and click on UPLOAD button. The 25 rows have been inserted and only 13 rows are visible because of table control design.
Now we scroll and check whether the purpose got successful or not.
10 comments:
Thanks for Sharing this Information.You are providing very valuable information. Sap videos
SAP Success Factors Real Time Hands on Training in Chennai...
Don't always Depend on Training Institute Alone and so please aware of Best Trainers too..
http://thecreatingexperts.com/sap-successfactors-training-in-chennai/
If You need a Best Trainer over SAP Success Factors Means??? Please ready for an DEMO From the Trainer MR.Karthick
CONTACT:8122241286
Both Classroom/Online Training is Available!!!!!!
Thank u sharing a good information for SAP ABAP SAPABAP_Online_Training
Very informative blog...SAP ABAP real Time Hands on Training in Chennai…
http://thecreatingexperts.com/sap-abap-training-in-chennai/
CONTACT:8122241286
Both Classroom/Online Training is Available.
Thanks for Nice and Informative Post on. sap video
I am very grateful to you that you share very informative post with us sap videos
Thanks for sharing this informative blog..Your blog is really useful for me. sap video training
Thanks for Nice and Informative Post on. sap video training
Thanks a lot !!!!
Hi i tried the same logic this is working fine for one input field and if table control has more than one input field then this is not possible to upload to all the fields in table control
Post a Comment