ZTABLE
1) I hve created a ztable when iam creating table entries its showing a error mesage in status bar saying " create data processing functional module" what does it mean? hw to overcm it ?
Hai satish,
Create table maintenance generator for your ztable . Your may be solved. if you dont know how to create follow the steps below.
go to se11 check table maintanance check box under
attributes tab
utilities-table maintanance Generator->
create function group and assign it under
function group input box.
also assign authorization group default &NC& .
select standard recording routine radio in table
table mainitainence generator to move table
contents to quality and production by assigning
it to request.
select maintaience type as single step.
maintainence screen as system generated numbers
this dialog box appears when you click on create
button
save and activate table
http://help.sap.com/saphelp_nw04/helpdata/en/cf/21ed2d446011d189700000e8322d00/content.htm
One step, two step in Table Maintenance Generator
Single step: Only overview screen is created i.e. the Table Maintenance Program will have only one screen where you can add, delete or edit records.
Two step: Two screens namely the overview screen and Single screen are created. The user can see the key fields in the first screen and can further go on to edit further details.
please check the link for getting information about table maintenance generator !
https://www.sdn.sap.com/irj/sdn/advancedsearch?query=use%20of%20table%20maintenance%20generator&cat=sdn_all
http://www.sapdevelopment.co.uk/tips/tips_tabmaint_tcode.htm
http://www.sap-img.com/abap/create-a-table-maintance-program-for-a-z-table.htm
<b>reward if useful</b>
Regards,
sunil kairam.
Similar Messages
-
F4 help for month and Year field in ztable please
I have created a ztable.
The first field in my ztable is a primary key field and it holds MM/YYYY(eg. 08/2011).
How ever my requirement is when ever we want to see the output, uer wants F4 help on that fields and when he selects the range , the ztable should display the values in that range.
For eg.
1). if user selects 01/2011 to 08/2011 using F4 Help,
2). then the ztables should display all the records in that range.
Thanks in advance for your help.
Best regards,Sam
Moderator message : Spec dumping / Outsourcing is not allowed. Thread locked.
Edited by: Vinod Kumar on Aug 8, 2011 11:17 AMHi Sam,
Create an F4 help using this FM
l_t_date" has month and date
l_f_programm = sy-repid.
l_f_dynnr = sy-dynnr.
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
retfield = 'Date'"Field name of coloum of value tab
dynpprog = l_f_programm
dynpnr = l_f_dynnr
dynprofield = <>"Screen field name'
value_org = 'S'
callback_program = l_f_programm
callback_form = ''
TABLES
value_tab = l_t_date"Value table for date and month
* FIELD_TAB = L_T_RETURN
return_tab = l_t_return_tab
EXCEPTIONS
parameter_error = 1
no_values_found = 2
OTHERS = 3.
READ TABLE l_t_return_tab INDEX 1.
IF sy-subrc = 0 .
<fields> = l_t_return_tab-fieldval.
ENDIF.
Regards,
Amit
then filter the ztable accordingly -
How to upload data from flat to ztables with in the same client by idocs
Hi Experts,
I have a requirement in IDOCS, I need to create a custom IDOC .I am working on IDES 4.6c. The reqirement is , there are ztables with header and item data. say for example Authors and Books. I need to upload data from flat file which is available in presentation server of the same client, which will updated in ztables by using idocs. For this i need to do ale settings also. The client is 800. There is no other client available. With in the same client i need to do the above stuff.
For this requirement how to approach (step by step) to accomplish.
Thanks in Advance.
Regards
J.S.VarmaHi,
This is the procedure.
create segments using we31. <b>don't forget to relaese it</b>
create idoc using above segments using we30 <b>don't forget to relaese it</b>
create message type using we81
create function module to upload data using se37
maintain process code using we42
create partner profiles we20.
In the fm module itself write the code for downloading the data from presentation server by GUI_DOWNLOAD.
Then update the database tables directly by insrt through other internal table in the same client itself.
Thanks
Manju -
Transfer data in the Ztable from one client to another client in a same ser
Hi all,
How can i transfer or move data in the Ztable from one client to another client in a same server .
Thanks
Ajayhi,
create a transport request (Workbench type) and add the following line into the transport request:
R3TR TABU name_of_table
save and doubleclick this line and enter the table keys for the required entries (if you need all antries: client and an asterisk will do).
When it is done save again, release the transport and ask basis to import into target client (or you can do on your own in SCC1 transaction)
hope this helps
ec -
How can we assign system fields like sy-datum, sy-uzeit to the ztable field
hi experts,
i have created one ztable inthis one it has some fields like date changed , time changed... in this table when the user enters the data it automatically updates time and date... for this where i have to assign those fields and code pls....Hi Gopal,
Make use of the events in Table maintenance generator,
Generate a Table maintenance genrator and in TMG make use of the events
Link to create the events
http://www.goodpeople.co.in/jobseeker/JobDetailPage.aspx?postjobid=43001
select the table maintenance event maintenance dialog as 05
in the event between form and endform write the following code
field1 = sy-uname.
field2 = sy-uzeit
field3 = sy-datum.
regards
prasanth -
Module pool - table control - update ztable
hello , i doing a module pool that will have few screens , now i have one screen with a table control that fetch the data from a ztable when screen is call the table control is showing the data and is in grey and no editable i add a pf-status for change that mode i can delete the row from the table control but i don't figure out how update to the ztable when i press save , i wan't too another button for add a new row ( and remain the already in grey ) for add new entrie in the table and update the ztable
pd: sorry for my bad english
this is my code:
TOP:
PROGRAM z_pp_lote_etiquetas MESSAGE-ID zz.
TABLES:zc2p_lote_etique,
zc2p_lider_modul.
DATA: ok_code LIKE sy-ucomm.
DATA save_ok LIKE sy-ucomm.
* internal table
DATA: it_zc2p_lote_etique LIKE STANDARD TABLE OF zc2p_lote_etique.
DATA: it_zc2p_lider_modul TYPE STANDARD TABLE OF zc2p_lider_modul WITH HEADER LINE.
DATA: it_zc2p_lider_modul_del TYPE STANDARD TABLE OF zc2p_lider_modul WITH HEADER LINE.
**************Workarea
DATA: wa_c2p_lote_etique TYPE zc2p_lote_etique.
DATA: wa_c2p_lider_modul TYPE zc2p_lider_modul.
DATA: wa_c2p_lider_modul_del TYPE zc2p_lider_modul.
DATA: sel.
DATA: MARK.
DATA: init.
DATA: col TYPE scxtab_column.
DATA: lines TYPE i.
* Variable Declaration
DATA : flg, "Flag to set the change mode
ln TYPE i. "No. of records
* Table Control Declartion.
CONTROLS: zc2p_lider_crtl TYPE TABLEVIEW USING SCREEN '101'.
**PROCESS BEFORE OUTPUT INCLUDE **
*& Include Z_PP_LOTE_ETIQUETAS_O01
*& Module set_status OUTPUT
* Setting the GUI status
MODULE status_0100 OUTPUT.
SET PF-STATUS 'Z_PP_LOT_ETIQ_MENU'.
SET TITLEBAR 'Z_PP_LOT_ETIQ'.
ENDMODULE. " set_status OUTPUT screen 100
* MODULE status_0101 OUTPUT
* Setting the GUI status
MODULE status_0101 OUTPUT.
SET PF-STATUS 'Z_PP_LOT_ETIQ_ME_101'.
SET TITLEBAR 'Z_PP_LOT_ETIQ'.
* Data retreving
if init is INITIAL.
select * from zc2p_lider_modul into CORRESPONDING FIELDS OF TABLE it_zc2p_lider_modul.
DESCRIBE TABLE it_zc2p_lider_modul LINES ln.
zc2p_lider_crtl-lines = ln + 10.
init = 'X'.
endif.
ENDMODULE. "status_0101 OUTPUT
module change_sdyn_conn output.
* you can change the content of current table control line via
* sdyn_conn
READ TABLE it_zc2p_lider_modul INTO zc2p_lider_modul INDEX zc2p_lider_crtl-current_line.
endmodule. " FILL_TABLE_CONTROL OUTPUT
MODULE set_screen_fields OUTPUT.
LOOP AT SCREEN.
IF flg IS INITIAL.
screen-input = 0.
ELSE.
screen-input = 1.
ENDIF.
*ENDIF.
* Modifying the screen after making changes
MODIFY SCREEN.
ENDLOOP.
ENDMODULE. " set_screen_fields OUTPUT
PROCESS AFTER INPUT INCLUDE.
* MODULE USER_COMMAND_0100 INPUT
MODULE user_command_0100 INPUT.
CASE ok_code.
WHEN 'LIDM'.
CALL SCREEN 101.
WHEN 'CANC'.
LEAVE PROGRAM.
WHEN 'BACK'.
LEAVE PROGRAM.
WHEN 'EXIT'.
LEAVE PROGRAM.
ENDCASE.
ENDMODULE. "USER_COMMAND_0100 INPUT
* MODULE USER_COMMAND_0101 INPUT
MODULE user_command_0101 INPUT.
save_ok = ok_code.
CLEAR ok_code.
CASE save_ok.
WHEN 'SORT'.
DATA: fldname(100),help(100).
READ TABLE zc2p_lider_crtl-cols INTO col WITH KEY selected = 'X'.
SPLIT col-screen-name AT '-' INTO help fldname.
SORT it_zc2p_lider_modul BY (fldname).
WHEN 'CHANGE'.
* Setting the flag to make the table control in editable mode[excluding
* primary key].
flg = 'Y'.
WHEN 'BACK'.
CALL SCREEN 100.
LEAVE SCREEN.
WHEN 'CANCEL'.
LEAVE PROGRAM.
WHEN 'EXIT'.
LEAVE PROGRAM.
WHEN 'SAVE'.
MODIFY zc2p_lider_modul FROM it_zc2p_lider_modul.
COMMIT WORK.
ENDCASE.
ENDMODULE. "USER_COMMAND_0101 INPUT
* MODULE read_table_control INPUT
MODULE read_table_control INPUT.
* Check input values
IF mark = 'X' AND save_ok = 'DELETE'.
DELETE TABLE it_zc2p_lider_modul FROM zc2p_lider_modul.
DESCRIBE TABLE it_zc2p_lider_modul LINES zc2p_lider_crtl-lines.
ENDIF.
ENDMODULE. " READ_TABLE_CONTROL INPUT
Screen Flow Logic 100
PROCESS BEFORE OUTPUT.
MODULE status_0100.
PROCESS AFTER INPUT.
MODULE user_command_0100.
Screen Flow Logic 101.
PROCESS BEFORE OUTPUT.
MODULE status_0101.
LOOP AT it_zc2p_lider_modul INTO zc2p_lider_modul WITH CONTROL
zc2p_lider_crtl.
* Dynamic screen modifications
MODULE set_screen_fields.
MODULE change_sdyn_conn.
ENDLOOP.
PROCESS AFTER INPUT.
MODULE user_command_0101.
LOOP AT it_zc2p_lider_modul.
MODULE read_table_control.
ENDLOOP.
i hope somebody can help for what i missing here thanks>
Sanjeev Kumar wrote:
> Hello Edgar,
>
> Problem seems to be there in the flow logic of 101
>
>
> PROCESS BEFORE OUTPUT.
> MODULE status_0101.
> LOOP AT it_zc2p_lider_modul INTO zc2p_lider_modul WITH CONTROL
> zc2p_lider_crtl. " no need to have 'INTO zc2p_lider_modul' above
> * Dynamic screen modifications
> MODULE set_screen_fields.
> MODULE change_sdyn_conn.
> ENDLOOP.
> *
> PROCESS AFTER INPUT.
> MODULE user_command_0101. "this should be shifted after the following LOOP...ENDLOOP.
>
> LOOP AT it_zc2p_lider_modul. "need to have 'WITH CONTROL zc2p_lider_crtl' here
> MODULE read_table_control.
> ENDLOOP.
>
>
>
> With MODULE user_command_0101 call before the LOOP calls the MODIFY statement (under case save_ok 'SAVE') first and Z-table is updated with the old values as the changes are transferred from screen into the internal table it_zc2p_lider_modul in the LOOP...ENDLOOP later.
>
> Try these changes and I hope it will work.
>
> Thanks
> Sanjeev
i do the firts advice but the second one i get syntax error :
my code :
PROCESS AFTER INPUT.
LOOP at it_zc2p_lider_modul WITH CONTROL zc2p_lider_crtl.
MODULE read_table_control.
ENDLOOP.
MODULE user_command_0101.
error :
In the event PROCESS AFTER INPUT, no additions are allowed with "LOOP
AT". -
Upload data from excel to Ztable with statistics
Hi,
I have a requirement to upload data from excel sheet to ztable .
Here i need tp provide the user with the execution statistics like
1.Number of records read from the Excel spread-sheet
2. Number records processed successfully
3. Number records with Error
4. Name and location of Error Log-file (text-file format)
5. Name and location of the file containing error records (Excel spread-sheet format)
I would appreciate if any of you have code written for the sameSee the below example code to upload from xl file to sap
REPORT ZLWMI151_UPLOAD no standard page heading
line-size 100 line-count 60.
*tables : zbatch_cross_ref.
data : begin of t_text occurs 0,
werks(4) type c,
cmatnr(15) type c,
srlno(12) type n,
matnr(7) type n,
charg(10) type n,
end of t_text.
data: begin of t_zbatch occurs 0,
werks like zbatch_cross_ref-werks,
cmatnr like zbatch_cross_ref-cmatnr,
srlno like zbatch_cross_ref-srlno,
matnr like zbatch_cross_ref-matnr,
charg like zbatch_cross_ref-charg,
end of t_zbatch.
data : g_repid like sy-repid,
g_line like sy-index,
g_line1 like sy-index,
$v_start_col type i value '1',
$v_start_row type i value '2',
$v_end_col type i value '256',
$v_end_row type i value '65536',
gd_currentrow type i.
data: itab like alsmex_tabline occurs 0 with header line.
data : t_final like zbatch_cross_ref occurs 0 with header line.
selection-screen : begin of block blk with frame title text.
parameters : p_file like rlgrap-filename obligatory.
selection-screen : end of block blk.
initialization.
g_repid = sy-repid.
at selection-screen on value-request for p_file.
CALL FUNCTION 'F4_FILENAME'
EXPORTING
PROGRAM_NAME = g_repid
IMPORTING
FILE_NAME = p_file.
start-of-selection.
Uploading the data into Internal Table
perform upload_data.
perform modify_table.
top-of-page.
CALL FUNCTION 'Z_HEADER'
EXPORTING
FLEX_TEXT1 =
FLEX_TEXT2 =
FLEX_TEXT3 =
*& Form upload_data
text
FORM upload_data.
CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE'
EXPORTING
FILENAME = p_file
I_BEGIN_COL = $v_start_col
I_BEGIN_ROW = $v_start_row
I_END_COL = $v_end_col
I_END_ROW = $v_end_row
TABLES
INTERN = itab
EXCEPTIONS
INCONSISTENT_PARAMETERS = 1
UPLOAD_OLE = 2
OTHERS = 3.
IF SY-SUBRC <> 0.
write:/10 'File '.
ENDIF.
if sy-subrc eq 0.
read table itab index 1.
gd_currentrow = itab-row.
loop at itab.
if itab-row ne gd_currentrow.
append t_text.
clear t_text.
gd_currentrow = itab-row.
endif.
case itab-col.
when '0001'.
t_text-werks = itab-value.
when '0002'.
t_text-cmatnr = itab-value.
when '0003'.
t_text-srlno = itab-value.
when '0004'.
t_text-matnr = itab-value.
when '0005'.
t_text-charg = itab-value.
endcase.
endloop.
endif.
append t_text.
ENDFORM. " upload_data
*& Form modify_table
Modify the table ZBATCH_CROSS_REF
FORM modify_table.
loop at t_text.
t_final-werks = t_text-werks.
t_final-cmatnr = t_text-cmatnr.
t_final-srlno = t_text-srlno.
t_final-matnr = t_text-matnr.
t_final-charg = t_text-charg.
t_final-erdat = sy-datum.
t_final-erzet = sy-uzeit.
t_final-ernam = sy-uname.
t_final-rstat = 'U'.
append t_final.
clear t_final.
endloop.
delete t_final where werks = ''.
describe table t_final lines g_line.
sort t_final by werks cmatnr srlno.
Deleting the Duplicate Records
perform select_data.
describe table t_final lines g_line1.
modify zbatch_cross_ref from table t_final.
if sy-subrc ne 0.
write:/ 'Updation failed'.
else.
Skip 1.
Write:/12 'Updation has been Completed Sucessfully'.
skip 1.
Write:/12 'Records in file ',42 g_line .
write:/12 'Updated records in Table',42 g_line1.
endif.
delete from zbatch_cross_ref where werks = ''.
ENDFORM. " modify_table
*& Form select_data
Deleting the duplicate records
FORM select_data.
select werks
cmatnr
srlno from zbatch_cross_ref
into table t_zbatch for all entries in t_final
where werks = t_final-werks
and cmatnr = t_final-cmatnr
and srlno = t_final-srlno.
sort t_zbatch by werks cmatnr srlno.
loop at t_zbatch.
read table t_final with key werks = t_zbatch-werks
cmatnr = t_zbatch-cmatnr
srlno = t_zbatch-srlno.
if sy-subrc eq 0.
delete table t_final .
endif.
clear: t_zbatch,
t_final.
endloop.
ENDFORM. " select_data
Reward Points if it is helpful
Thanks
Seshu -
Update ztable is taking long time
Hi All,
i have run the 5 jobs with the same program at a time but when we check the db trace
zs01 is taking long time as shown below.here zs01 is having small amount of data.
in the below dbtrace for updating zs01 is taking 2,315,485 seconds .how to reduce this?
HH:MM:SS.MS Duration Program ObjectName Op. Curs Array Rec RC Conn
2:36:15 AM 2,315,485 SAPLZS01 ZS01 FETCH 294 1 1 0 R/3
The code as shown below
you can check the code in the program SAPLZS01 include LZS01F01.
FORM UPDATE_ZS01.
IF ZS02-STATUS = '3'.
IF Z_ZS02_STATUS = '3'. "previous status is ERROR
EXIT.
ELSE.
SELECT SINGLE FOR UPDATE * FROM ZS01
WHERE PROC_NUM = ZS02-PROC_NUM.
CHECK SY-SUBRC = 0.
ADD ZS02-MF_AMT TO ZS01-ERR_AMT.
ADD 1 TO ZS01-ERR_INVOI.
UPDATE ZS01.
ENDIF.
ENDIF.
my question is when updating the ztable why it is taking such long time,
how to reduce the time or how to make faster to update the ztable .
Thanks in advance,
regards
SuniTry the code like this..
data: wa_zs01 type zs01.
FORM UPDATE_ZS01.
IF ZS02-STATUS = '3'.
IF Z_ZS02_STATUS = '3'. "previous status is ERROR
EXIT.
ELSE.
SELECT SINGLE FOR UPDATE * FROM ZS01
WHERE PROC_NUM = ZS02-PROC_NUM.
-- change
CHECK SY-SUBRC = 0.
ADD ZS02-MF_AMT TO wa_ZS01-ERR_AMT.
ADD 1 TO wa_ZS01-ERR_INVOI.
UPDATE ZS01 from wa_zs01.
ENDIF.
ENDIF.
And i think this Select query for ZS01 is inside the ZS02 SELECT statement,
This might also make slow process.
If you want to make database access always use Workarea/Internal table to fetch the data
and work with that.
Accessing database like this or with Select.... endselect is an inefficient programming. -
Dialogue program to create/modify entries of ztable
hi experts,
i want to create a ztable. After creating the ztable i want to create an dialogue program using that dialogue program i have to create/modify entries of that ztable using text box and push button options.
can anybody having sample coding pls send me.....
thanks in advance,
raviHi Ravi ,
Instead creating the Dailog Program u can creat the Table Maintanance Generator (TMG). Here u will have all the option of creation, deleting , modifying the record.
In se11 main screen go to utilities:-> Table Maintanance Generator .
here u have to enteg the Function group name and screen NO. system wil generate the dialog program for u to maintan the data in that table. Then go to T-CODE SM30 give the same table name and click on maintanance push button and maintain ur entries the table.
IF helpfull reward points
Anees
9886358645 -
Dialogue program for modifying ztable
hi experts,
i want to create a ztable. After creating the ztable i want to create an dialogue program using that dialogue program i have to create/modify entries of that ztable using text box and push button options.
can anybody having sample coding pls send me.....
thanks in advance,
raviHI,
chek this sample code
data: begin of itab occurs 0.
include structure ZTESTVENKATESH.
data: end of itab.
call screen 100.
*& Module STATUS_0100 OUTPUT
text
module STATUS_0100 output.
SET PF-STATUS 'xxxxxxxx'.
SET TITLEBAR 'xxx'.
endmodule. " STATUS_0100 OUTPUT
*& Module USER_COMMAND_0100 INPUT
text
module USER_COMMAND_0100 input.
if sy-ucomm = 'HAI'.
APPEND ITAB.
modify ZTESTVENKATESH from table itab.
ENDIF.
thanks & regards,
venkatesh -
How to upload Excel data in Ztables fastly & easily.
Dear ALL,
I want to compare material codes in 2 different excel sheets.
I have downloaded output from 2 different SQVI into 2 different excel sheets.
Now I want to compare these 2 sheets to get matching codes or unmatching codes.
I can use VLOOKUP in excel also. But How can I make use of ABAP by downloading these excel data in 2 different Ztables and compare these 2 tables with some user defined TC (transaction code) ?
For this activity How to upload Excel data(2 sheets) in 2 Ztables fastly & easily ?
Is there any method other than SCAT , BDC and LSMW ???
Or which is best method in above ?
Pl' reply.
Thanks.Have a look at the program
*: Description :
*: This is a simple example program to get data from an excel :
*: file and store it in an internal table. :
*: Author : www.sapdev.co.uk, based on code from Jayanta :
*: SAP Version : 4.7 :
REPORT zupload_excel_to_itab.
TYPE-POOLS: truxs.
PARAMETERS: p_file TYPE rlgrap-filename.
TYPES: BEGIN OF t_datatab,
col1(30) TYPE c,
col2(30) TYPE c,
col3(30) TYPE c,
END OF t_datatab.
DATA: it_datatab type standard table of t_datatab,
wa_datatab type t_datatab.
DATA: it_raw TYPE truxs_t_text_data.
At selection screen
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file.
CALL FUNCTION 'F4_FILENAME'
EXPORTING
field_name = 'P_FILE'
IMPORTING
file_name = p_file.
*START-OF-SELECTION.
START-OF-SELECTION.
CALL FUNCTION 'TEXT_CONVERT_XLS_TO_SAP'
EXPORTING
I_FIELD_SEPERATOR =
i_line_header = 'X'
i_tab_raw_data = it_raw " WORK TABLE
i_filename = p_file
TABLES
i_tab_converted_data = it_datatab[] "ACTUAL DATA
EXCEPTIONS
conversion_failed = 1
OTHERS = 2.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
END-OF-SELECTION.
END-OF-SELECTION.
LOOP AT it_datatab INTO wa_datatab.
WRITE:/ wa_datatab-col1,
wa_datatab-col2,
wa_datatab-col3.
ENDLOOP.
Message was edited by:
K N REDDY -
How to maintain Ztable using function module instead of SM30
Hi Friends,
please tell me , How to maintain Ztable or view using function module instead of SM30.
Thanks,
Veerendra.Hi,
You can design your report and use Function module VIEW_MAINTENANCE_CALL for that.
You need to use Action type as 'S' for displaying and 'U' for maintaining the table.
Ex:
CALL FUNCTION 'VIEW_MAINTENANCE_CALL'
EXPORTING
ACTION = 'S'
VIEW_NAME = 'Table Name'
EXCEPTIONS
CLIENT_REFERENCE = 1
FOREIGN_LOCK = 2
INVALID_ACTION = 3
NO_CLIENTINDEPENDENT_AUTH = 4
NO_DATABASE_FUNCTION = 5
NO_EDITOR_FUNCTION = 6
NO_SHOW_AUTH = 7
NO_TVDIR_ENTRY = 8
NO_UPD_AUTH = 9
ONLY_SHOW_ALLOWED = 10
SYSTEM_FAILURE = 11
UNKNOWN_FIELD_IN_DBA_SELLIST = 12
VIEW_NOT_FOUND = 13
OTHERS = 14.
Hope this helps.
Message was edited by: Imtiaz Ahmed -
How to find when a ztable gets populated?
Hi Folks,
Closing balance not carrying forward to Opening Balance-MM
Previously I posted a question with the above said subject.But couldn't get any right lead.
The problem is we have developed a zreport to get the RG1 summary of finished goods.For that the previous team who worked on this had copied the table
j_2irg1bal to z2irg1bal.I want to know when and how this ztable will get populated.
Can anyone here please go through the BOLD part of this code and let me know.
K.Kiran.
REPORT zxxx MESSAGE-ID z_apd.
*& Includes *
INCLUDE <icon>.
*& Tables *
TABLES : j_1irg1,
j_2irg1bal,
z2irg1bal,
ser03,
objk.
*& Selection Screen *
SELECTION-SCREEN : BEGIN OF BLOCK blk1 WITH FRAME TITLE text-001.
PARAMETERS : p_exgrp TYPE j_1irg1-exgrp OBLIGATORY,
p_stdate LIKE sy-datum OBLIGATORY,
p_endate LIKE sy-datum OBLIGATORY.
SELECT-OPTIONS s_chapid FOR j_1irg1-chapid .
SELECTION-SCREEN : END OF BLOCK blk1.
*& Data Declaration *
Internal Tables
DATA : it_display TYPE TABLE OF zj1irg1,
it_final TYPE TABLE OF zj1irg1,
it_alv TYPE TABLE OF zj1irg1,
Work Areas
wa_display TYPE zj1irg1,
wa_alv TYPE zj1irg1,
it_display1 TYPE TABLE OF zj1irg1,
wa_display1 TYPE zj1irg1,
wa_alv1 TYPE zj1irg1.
DATA: BEGIN OF it_itab OCCURS 0.
INCLUDE STRUCTURE zj1irg1.
DATA: END OF it_itab.
DATA : BEGIN OF itab1 OCCURS 0,
matnr LIKE j_1irg1-matnr,
END OF itab1.
DATA : BEGIN OF itab2 OCCURS 0,
cpudt LIKE j_1irg1-cpudt,
END OF itab2.
DATA : BEGIN OF itab3 OCCURS 0.
INCLUDE STRUCTURE j_1irg1.
DATA: END OF itab3.
DATA : itab4 LIKE j_1irg1 OCCURS 0 WITH HEADER LINE,
itab5 LIKE j_1irg1 OCCURS 0 WITH HEADER LINE.
DATA : BEGIN OF itab6 OCCURS 0.
INCLUDE STRUCTURE j_1irg1.
DATA : sernr LIKE objk-sernr.
DATA: END OF itab6.
DATA : BEGIN OF itab61 OCCURS 0.
INCLUDE STRUCTURE j_1irg1.
DATA: sernr LIKE objk-sernr.
DATA: END OF itab61.
DATA : itab7 LIKE j_2irg1bal OCCURS 0 WITH HEADER LINE,
it_bal LIKE j_2irg1bal OCCURS 0 WITH HEADER LINE,
it_bal1 LIKE j_2irg1bal OCCURS 0 WITH HEADER LINE.
DATA: qty_menge LIKE j_1irg1-menge,
iss_menge LIKE j_1irg1-menge,
tot_menge LIKE j_1irg1-menge,
op_menge LIKE j_1irg1-menge,
matnr LIKE j_1irg1-matnr,
exgrp LIKE j_1irg1-exgrp ,
cpudt LIKE j_1irg1-cpudt.
*for checcking lines of itab
DATA: n1 TYPE i.
Others
DATA : v_bwart TYPE mseg-bwart,
v_index TYPE i,
v_index1 TYPE i,
count(4) TYPE n VALUE '0',
neg TYPE char1 VALUE '-',
menge TYPE char16,
count_1 TYPE i,
count_2 TYPE i,
count_3 TYPE i,
count12(4) TYPE n VALUE '0',
count13(4) TYPE n VALUE '0'.
*Ranges
RANGES: v_bwart1 FOR mseg-bwart.
For ALV Display
DATA : gs_variant TYPE disvariant,
gs_layout TYPE lvc_s_layo,
c_stk TYPE scrfname VALUE 'ZRG1',
custom_container TYPE REF TO cl_gui_custom_container.
CLASS lcl_event_receiver DEFINITION DEFERRED.
DATA : grid1 TYPE REF TO cl_gui_alv_grid,
event_receiver TYPE REF TO lcl_event_receiver,
ok_code TYPE sy-ucomm,
it_fieldcatalog TYPE lvc_t_fcat,
wafieldcatlog TYPE LINE OF lvc_t_fcat,
lt_rows TYPE lvc_t_row,
wa_rows TYPE LINE OF lvc_t_row.
*& Start of Selection *
START-OF-SELECTION.
IMPORT s_chapid FROM MEMORY ID 'SCHAPID'.
PERFORM get_data.
IF it_display[] IS INITIAL.
No Details Available
MESSAGE i017(z_apd) WITH text-005.
STOP.
ELSE.
Display the Details on the Screen
sort it_display by matnr.
*sort it_display by cpudt RISINDR RISINDI matnr.
<b>LOOP AT it_display INTO wa_display.
ON CHANGE OF wa_display-matnr.
*insert
*Check record exits
SELECT SINGLE * FROM z2irg1bal
WHERE
exgrp = exgrp AND
matnr = matnr AND
form = 'P' AND
cb_finish = tot_menge AND
datum = cpudt.
*If record does not exists
*Update balance Table.
IF count12 GE 1.
IF sy-subrc NE 0.
z2irg1bal-mandt = sy-mandt.
z2irg1bal-exgrp = exgrp.
z2irg1bal-matnr = matnr.
z2irg1bal-form = 'P'.
z2irg1bal-cb_finish = tot_menge.
z2irg1bal-datum = cpudt.
INSERT z2irg1bal ."values wa_display.
COMMIT WORK.
ENDIF.
Start of Insertion
IF sy-subrc EQ 0.
z2irg1bal-mandt = sy-mandt.
z2irg1bal-exgrp = exgrp.
z2irg1bal-matnr = matnr.
z2irg1bal-form = 'P'.
z2irg1bal-cb_finish = tot_menge.
z2irg1bal-datum = cpudt.
UPDATE z2irg1bal SET cb_finish = z2irg1bal-cb_finish
WHERE exgrp = z2irg1bal-exgrp AND
datum = z2irg1bal-datum AND
matnr = z2irg1bal-matnr AND
form = 'P'.
ENDIF.
End of Insertion.
ENDIF.</b>CLEAR: qty_menge,
iss_menge,
tot_menge,
count,
matnr,
cpudt,
exgrp.
ENDON.
loop at itab6.
AT NEW matnr.
v_index = 1.
count = count + 1 .
ENDAT.
IF v_index = 1.
CLEAR v_index.
*INsert for adding start
IF wa_display-risind = 'R'.
*wa_display-OP_FINISH = wa_display-OP_FINISH +
wa_display-CB_FINISH +
wa_display-MENGE.
wa_display-op_finish = wa_display-menge.
qty_menge = wa_display-op_finish.
IF wa_display-status = space.
tot_menge = tot_menge + qty_menge + wa_display-cb_finish .
ELSE.
tot_menge = tot_menge - qty_menge + wa_display-cb_finish.
ENDIF.
*tot_menge = op_menge.
op_menge = tot_menge.
ELSE.
*Qty Issued
wa_display-op_bond = wa_display-op_finish - wa_display-menge.
IF wa_display-op_bond LT 0.
iss_menge = wa_display-op_bond.
iss_menge = ABS( iss_menge ).
*Start of modification
tot_MENGE = tot_MENGE - iss_MENGE ."
IF count LE 1.
tot_menge = wa_display-cb_finish - iss_menge ."
ELSE.
tot_menge = tot_menge - iss_menge ."
ENDIF.
*End of modification
op_menge = tot_menge.
ENDIF.
ENDIF.
*wa_display-MENGE_FINI = wa_display-OP_FINISH - wa_display-OP_BOND.
*tot_MENGE = tot_MENGE + qty_MENGE - iss_MENGE .
wa_display-menge_fini = tot_menge.
**matnr for insert
matnr = wa_display-matnr.
*excise group
exgrp = wa_display-exgrp.
*Date
cpudt = wa_display-cpudt.
*Opening Balance
*Insert start
*if count le 1.
if wa_display-RISIND = 'R'.
wa_display-CB_FINISH = wa_display-CB_FINISH + qty_MENGE.
else.
wa_display-CB_FINISH = wa_display-CB_FINISH - iss_MENGE.
endif.
*endif.
*Insert End
IF count GT 1.
IF wa_display-risind = 'R'.
wa_display-cb_finish = tot_menge - qty_menge.
ELSE.
wa_display-cb_finish = tot_menge + iss_menge.
ENDIF.
ENDIF.
*check it_display-SERIALNO = wa_display-SERIALNO.
MODIFY it_display FROM wa_display.
*INsert for adding end
*move-corresponding wa_display to it_itab.
*append it_itab.
*check it_itab-SERIALNO = wa_display-SERIALNO.
*if sy-subrc = 0.
*endif.
*Insert to update closng to balance to Rg1bal table
*start
count12 = count12 + 1.
*for last record
AT LAST.
*Check record exits
SELECT SINGLE * FROM z2irg1bal
WHERE
exgrp = exgrp AND
matnr = matnr AND
form = 'P' AND
cb_finish = tot_menge AND
datum = cpudt.
*If record does not exists
*Update balance Table.
IF count12 GE 1.
IF sy-subrc NE 0.
z2irg1bal-mandt = sy-mandt.
z2irg1bal-exgrp = exgrp.
z2irg1bal-matnr = matnr.
z2irg1bal-form = 'P'.
z2irg1bal-cb_finish = tot_menge.
z2irg1bal-datum = cpudt.
INSERT z2irg1bal ."values wa_display.
COMMIT WORK.
Start of Insertion
IF sy-subrc EQ 0.
z2irg1bal-mandt = sy-mandt.
z2irg1bal-exgrp = exgrp.
z2irg1bal-matnr = matnr.
z2irg1bal-form = 'P'.
z2irg1bal-cb_finish = tot_menge.
z2irg1bal-datum = cpudt.
UPDATE z2irg1bal SET cb_finish = z2irg1bal-cb_finish
WHERE exgrp = z2irg1bal-exgrp AND
datum = z2irg1bal-datum AND
matnr = z2irg1bal-matnr AND
form = 'P'.
ENDIF.
End of Insertion
ENDIF.
ENDIF.
ENDAT.
*Insert to update closng to balance to Rg1bal table
*end
MOVE-CORRESPONDING wa_display TO wa_alv.
APPEND wa_alv TO it_alv.
append itab6 to it_alv.
ENDIF.
ENDLOOP.
loop at it_alv into wa_alv.
wa_alv-exgrp = wa_alv-exgrp.
wa_alv-SYEAR = wa_alv-syear.
wa_alv-SERIALNO = wa_alv-SERIALNO.
endloop.
EXPORT it_alv TO MEMORY ID 'ABCD'.
call screen 100.
ENDIF.
*& End of Selection *
END-OF-SELECTION.
*& Class Definition *
CLASS lcl_event_receiver DEFINITION.
PUBLIC SECTION.
METHODS:
handle_toolbar
FOR EVENT toolbar OF cl_gui_alv_grid
IMPORTING e_object e_interactive,
handle_user_command
FOR EVENT user_command OF cl_gui_alv_grid
IMPORTING e_ucomm,
handle_double_click
FOR EVENT double_click OF cl_gui_alv_grid
IMPORTING e_row e_column.
PRIVATE SECTION.
ENDCLASS. "lcl_event_receiver DEFINITION
*& Class Implementation *
CLASS lcl_event_receiver IMPLEMENTATION.
METHOD handle_toolbar.
Local Variables
DATA: ls_toolbar TYPE stb_button.
append a separator to normal toolbar
CLEAR ls_toolbar.
MOVE 3 TO ls_toolbar-butn_type.
APPEND ls_toolbar TO e_object->mt_toolbar.
append an icon to to show printing
CLEAR ls_toolbar.
MOVE 'PRINT' TO ls_toolbar-function.
MOVE icon_print TO ls_toolbar-icon.
MOVE 'Print Receipts' TO ls_toolbar-quickinfo.
MOVE ' Print' TO ls_toolbar-text.
MOVE ' ' TO ls_toolbar-disabled.
APPEND ls_toolbar TO e_object->mt_toolbar.
ENDMETHOD. " Handle_toolbar
METHOD handle_user_command.
CASE e_ucomm.
WHEN 'PRINT'.
REFRESH : lt_rows , it_final.
CALL METHOD grid1->get_selected_rows
IMPORTING
et_index_rows = lt_rows.
CALL METHOD cl_gui_cfw=>flush.
LOOP AT lt_rows INTO wa_rows.
READ TABLE it_alv INDEX wa_rows-index INTO wa_alv.
LOOP AT it_display INTO wa_display
WHERE mblnr = wa_alv-mblnr.
APPEND wa_display TO it_final.
ENDLOOP.
ENDLOOP.
perform display_form.
ENDCASE.
ENDMETHOD. "handle_user_command
METHOD handle_double_click.
IF e_column = 'MBLNR'.
READ TABLE it_alv INDEX e_row-index INTO wa_alv.
IF sy-subrc = 0.
REFRESH it_final.
LOOP AT it_display INTO wa_display
WHERE mblnr = wa_alv-mblnr.
APPEND wa_display TO it_final.
ENDLOOP.
PERFORM call_migo.
ENDIF.
ENDIF.
ENDMETHOD. "handle_double_click
ENDCLASS. "lcl_event_receiver IMPLEMENTATION
*& Form get_data
text
--> p1 text
<-- p2 text
FORM get_data .
*Select only for matnr and chapid from table
SELECT matnr FROM j_1irg1
APPENDING CORRESPONDING FIELDS OF TABLE itab1
WHERE exgrp = p_exgrp
AND
WERKS = P_WERKS
and
MATNR in s_MATNR
and
CPUDT in s_CPUDT.
cpudt BETWEEN p_stdate AND p_endate
AND
*Chapid
chapid IN s_chapid
ORDER BY matnr.
SORT itab1 BY matnr. " for performance
DELETE ADJACENT DUPLICATES FROM itab1 COMPARING matnr .
SELECT cpudt FROM j_1irg1
APPENDING CORRESPONDING FIELDS OF TABLE itab2
WHERE exgrp = p_exgrp
AND
cpudt BETWEEN p_stdate AND p_endate
AND
*Chapid
chapid IN s_chapid
ORDER BY cpudt.
SORT itab2 BY cpudt. " for Performance
DELETE ADJACENT DUPLICATES FROM itab2 COMPARING cpudt .
LOOP AT itab1.
LOOP AT itab2.
*on change of itab1-matnr or itab2-cpudt.
*select * from J_1IRG1
CLEAR itab3.
SELECT * FROM j_1irg1
*into itab3
APPENDING CORRESPONDING FIELDS OF TABLE itab3
WHERE matnr = itab1-matnr
AND
cpudt = itab2-cpudt.
*count = count + 1.
IF sy-subrc EQ 0.
LOOP AT itab3.
*count = count + 1.
*READ TABLE itab3 INDEX count."1.
IF itab3-risind = 'R'.
MOVE-CORRESPONDING itab3 TO itab4.
APPEND itab4.
DELETE itab3.
MOVE-CORRESPONDING itab4 TO itab6.
APPEND itab6.
CLEAR itab4.
ELSE.
MOVE-CORRESPONDING itab3 TO itab5.
APPEND itab5.
DELETE itab3.
MOVE-CORRESPONDING itab5 TO itab6.
APPEND itab6.
CLEAR itab5.
ENDIF.
ENDLOOP.
ENDIF.
*endon.
ENDLOOP.
ENDLOOP.
SELECT * FROM z2irg1bal
APPENDING CORRESPONDING FIELDS OF TABLE itab7
WHERE exgrp = p_exgrp
AND
datum LE p_stdate
ORDER BY datum.
SORT itab7 BY datum.
DELETE ADJACENT DUPLICATES FROM itab7 COMPARING datum .
*insert Start
LOOP AT itab6.
DELETE itab7 WHERE matnr NE itab6-matnr.
ENDLOOP.
*insert End
*insert Start
LOOP AT itab6.
CLEAR itab61. REFRESH itab61.
CLEAR wa_display.
MOVE-CORRESPONDING itab6 TO wa_display.
EQPT Serno
count13 = 1.
SELECT SINGLE obknr FROM ser03 INTO ser03-obknr WHERE
mblnr EQ itab6-mblnr
AND mjahr EQ itab6-mjahr.
IF sy-subrc EQ 0.
SELECT sernr FROM objk INTO CORRESPONDING
FIELDS OF TABLE itab61 WHERE
obknr EQ ser03-obknr.
DESCRIBE TABLE itab61 LINES n1.
*do N1 times.
LOOP AT itab61.
IF count13 EQ 1.
wa_display-sernr = itab61-sernr.
ENDIF.
IF count13 EQ 2.
wa_display-sernr1 = itab61-sernr.
ENDIF.
IF count13 EQ 3.
wa_display-sernr2 = itab61-sernr.
ENDIF.
IF count13 EQ 4.
wa_display-sernr3 = itab61-sernr.
ENDIF.
IF count13 EQ 5.
wa_display-sernr4 = itab61-sernr.
ENDIF.
IF count13 EQ 6.
wa_display-sernr5 = itab61-sernr.
ENDIF.
IF count13 EQ 7.
wa_display-sernr6 = itab61-sernr.
ENDIF.
if count13 eq 8.
objk-SERNR8 = objk-SERNR.
endif.
if count13 eq 9.
objk-SERNR9 = objk-SERNR.
endif.
count13 = count13 + 1.
endselect.
ENDLOOP.
*enddo.
ENDIF.
endif.
*End of Modification Eqpt Serial No
MOVE-CORRESPONDING itab6 TO wa_display.
SELECT * FROM z2irg1bal
APPENDING CORRESPONDING FIELDS OF TABLE it_bal1
WHERE matnr = itab6-matnr
AND datum LE p_stdate
AND exgrp = itab6-exgrp.
SORT it_bal1 DESCENDING .
READ TABLE it_bal1 INDEX 1.
ON CHANGE OF itab6-matnr .
wa_display-cb_finish = it_bal1-cb_finish.
ENDON.
AT LAST ."matnr.
wa_display-cb_finish = it_bal1-cb_finish.
ENDAT.
APPEND wa_display TO it_display .
CLEAR wa_display-cb_finish.
CLEAR it_bal1. REFRESH it_bal1.
ENDLOOP.
SELECT * FROM j_1irg1
APPENDING CORRESPONDING FIELDS OF TABLE it_itab
WHERE exgrp = p_exgrp
AND
cpudt BETWEEN p_stdate AND p_endate.
DESCRIBE TABLE it_itab[] LINES count_1.
count_3 = count_1 + 1.
DESCRIBE TABLE it_display[] LINES count_2.
IF it_display IS NOT INITIAL.
DELETE it_display FROM count_3 TO count_2.
ENDIF.
*start of insertion
DELETE it_display WHERE status = 'C'.
LOOP AT it_display INTO wa_display.
CLEAR wa_display-cb_finish.
MODIFY it_display FROM wa_display.
ON CHANGE OF wa_display-matnr .
SELECT * FROM z2irg1bal
INTO CORRESPONDING FIELDS OF TABLE it_bal1
WHERE matnr = wa_display-matnr
AND datum LE p_stdate
AND exgrp = wa_display-exgrp.
IF sy-subrc = 0.
SORT it_bal1 DESCENDING .
READ TABLE it_bal1 INDEX 1.
wa_display-cb_finish = it_bal1-cb_finish.
MODIFY it_display FROM wa_display.
ENDIF.
ENDON.
ENDLOOP.
*End of insertion
ENDFORM. " get_data
*& Module STATUS_0100 OUTPUT
text
MODULE status_0100 OUTPUT.
SET PF-STATUS 'ZRG1'.
SET TITLEBAR 'ZRG1'.
DATA: lt_exclude TYPE ui_functions.
IF custom_container IS INITIAL.
Create the Custom Container
CREATE OBJECT custom_container
EXPORTING
container_name = c_stk.
Create an instance of alv control
CREATE OBJECT grid1
EXPORTING
i_parent = custom_container.
Layout Settings
gs_layout-sel_mode = 'A'. " Multiple Lines
MOVE 'RG1 Register' TO gs_layout-grid_title.
Prepare the Field Catalog
PERFORM prepare_catalog.
To Exclude the PRINT Button from the Standard toolbar of ALV
PERFORM exclude_tb_functions CHANGING lt_exclude.
Display the List for ALV Display
CALL METHOD grid1->set_table_for_first_display
EXPORTING
it_toolbar_excluding = lt_exclude
is_layout = gs_layout
CHANGING
it_fieldcatalog = it_fieldcatalog[]
it_outtab = it_alv[].
CREATE OBJECT event_receiver.
SET HANDLER event_receiver->handle_user_command FOR grid1.
SET HANDLER event_receiver->handle_toolbar FOR grid1.
SET HANDLER event_receiver->handle_double_click FOR grid1.
CALL METHOD grid1->set_toolbar_interactive.
ENDIF.
CALL METHOD cl_gui_control=>set_focus
EXPORTING
control = grid1.
ENDMODULE. " STATUS_0100 OUTPUT
*& Form exclude_tb_functions
text
<--P_LT_EXCLUDE text
FORM exclude_tb_functions CHANGING pt_exclude TYPE ui_functions.
Local Varaibles
DATA ls_exclude TYPE ui_func.
ls_exclude = cl_gui_alv_grid=>mc_fc_print.
APPEND ls_exclude TO pt_exclude.
ENDFORM. " exclude_tb_functions
*& Form prepare_catalog
text
--> p1 text
<-- p2 text
FORM prepare_catalog .
DATA : v_index TYPE i.
*Entry Date
v_index = v_index + 1.
wafieldcatlog-fieldname = 'CPUDT'.
wafieldcatlog-tabname = 'IT_ALV'.
wafieldcatlog-seltext = 'RG1 Entry Date'.
wafieldcatlog-reptext = 'RG1 Entry Date'.
wafieldcatlog-hotspot = ' '.
wafieldcatlog-col_pos = v_index.
APPEND wafieldcatlog TO it_fieldcatalog.
CLEAR wafieldcatlog-reptext.
CLEAR wafieldcatlog-key.
*Serial No
v_index = v_index + 1.
wafieldcatlog-fieldname = 'SERIALNO'.
wafieldcatlog-tabname = 'IT_ALV'.
wafieldcatlog-seltext = 'RG1 serial number'.
wafieldcatlog-reptext = 'RG1 serial number'.
wafieldcatlog-hotspot = ' '.
wafieldcatlog-col_pos = v_index.
APPEND wafieldcatlog TO it_fieldcatalog.
CLEAR wafieldcatlog-reptext.
CLEAR wafieldcatlog-key.
v_index = v_index + 1.
wafieldcatlog-fieldname = 'CHAPID'.
wafieldcatlog-tabname = 'IT_ALV'.
wafieldcatlog-seltext = 'Chapter ID'.
wafieldcatlog-reptext = 'Chapter ID'.
wafieldcatlog-hotspot = ' '.
wafieldcatlog-col_pos = v_index.
APPEND wafieldcatlog TO it_fieldcatalog.
CLEAR wafieldcatlog-reptext.
CLEAR wafieldcatlog-key.
v_index = v_index + 1.
wafieldcatlog-fieldname = 'MBLNR'.
wafieldcatlog-tabname = 'IT_ALV'.
wafieldcatlog-seltext = 'Number of Material Document'.
wafieldcatlog-reptext = 'Number of Material Document'.
wafieldcatlog-hotspot = ' '.
wafieldcatlog-col_pos = v_index.
APPEND wafieldcatlog TO it_fieldcatalog.
CLEAR wafieldcatlog-reptext.
CLEAR wafieldcatlog-key.
*Item
v_index = v_index + 1.
wafieldcatlog-fieldname = 'ZEILE'.
wafieldcatlog-tabname = 'IT_ALV'.
wafieldcatlog-seltext = 'Item in Material Document'.
wafieldcatlog-reptext = 'Item in Material Document'.
wafieldcatlog-hotspot = ' '.
wafieldcatlog-col_pos = v_index.
APPEND wafieldcatlog TO it_fieldcatalog.
CLEAR wafieldcatlog-reptext.
CLEAR wafieldcatlog-key.
v_index = v_index + 1.
wafieldcatlog-fieldname = 'BWART'.
wafieldcatlog-tabname = 'IT_ALV'.
wafieldcatlog-seltext = 'Movement Type'.
wafieldcatlog-reptext = 'Movement Type'.
wafieldcatlog-hotspot = ' '.
wafieldcatlog-col_pos = v_index.
APPEND wafieldcatlog TO it_fieldcatalog.
CLEAR wafieldcatlog-reptext.
CLEAR wafieldcatlog-key.
v_index = v_index + 1.
wafieldcatlog-fieldname = 'MENGE'.
wafieldcatlog-tabname = 'IT_ALV'.
wafieldcatlog-seltext = 'Quantity'.
wafieldcatlog-reptext = 'Quantity'.
wafieldcatlog-hotspot = ' '.
wafieldcatlog-col_pos = v_index.
wafieldcatlog-DO_SUM = 'X'.
append wafieldcatlog to it_fieldcatalog.
clear wafieldcatlog-reptext.
clear wafieldcatlog-key.
*Base Unit of Measure
v_index = v_index + 1.
wafieldcatlog-fieldname = 'MEINS'.
wafieldcatlog-tabname = 'IT_ALV'.
wafieldcatlog-seltext = 'Base Unit of Measure'.
wafieldcatlog-reptext = 'Base Unit of Measure'.
wafieldcatlog-hotspot = ' '.
wafieldcatlog-col_pos = v_index.
wafieldcatlog-do_sum = 'X'.
APPEND wafieldcatlog TO it_fieldcatalog.
CLEAR wafieldcatlog-reptext.
CLEAR wafieldcatlog-key.
v_index = v_index + 1.
wafieldcatlog-fieldname = 'RISIND'.
wafieldcatlog-tabname = 'IT_ALV'.
wafieldcatlog-seltext = 'Goods Movement Direction'.
wafieldcatlog-reptext = 'Goods Movement Direction'.
wafieldcatlog-hotspot = ' '.
wafieldcatlog-col_pos = v_index.
APPEND wafieldcatlog TO it_fieldcatalog.
CLEAR wafieldcatlog-reptext.
CLEAR wafieldcatlog-key.
*Material Number
v_index = v_index + 1.
wafieldcatlog-fieldname = 'MATNR'.
wafieldcatlog-tabname = 'IT_ALV'.
wafieldcatlog-seltext = 'Material Number'.
wafieldcatlog-reptext = 'Material Number'.
wafieldcatlog-hotspot = ' '.
wafieldcatlog-col_pos = v_index.
APPEND wafieldcatlog TO it_fieldcatalog.
CLEAR wafieldcatlog-reptext.
CLEAR wafieldcatlog-key.
*CB_FINISH
v_index = v_index + 1.
wafieldcatlog-fieldname = 'CB_FINISH'.
wafieldcatlog-tabname = 'IT_ALV'.
wafieldcatlog-seltext = 'Opening Balance'.
wafieldcatlog-reptext = 'Opening Balance'.
wafieldcatlog-hotspot = ' '.
wafieldcatlog-col_pos = v_index.
APPEND wafieldcatlog TO it_fieldcatalog.
CLEAR wafieldcatlog-reptext.
CLEAR wafieldcatlog-key.
*materail manufactured
v_index = v_index + 1.
wafieldcatlog-fieldname = 'OP_FINISH'.
wafieldcatlog-tabname = 'IT_ALV'.
wafieldcatlog-seltext = 'Qty Manufactured'.
wafieldcatlog-reptext = 'Qty Manufactured'.
wafieldcatlog-hotspot = ' '.
wafieldcatlog-col_pos = v_index.
APPEND wafieldcatlog TO it_fieldcatalog.
CLEAR wafieldcatlog-reptext.
CLEAR wafieldcatlog-key.
*Material Issued
v_index = v_index + 1.
wafieldcatlog-fieldname = 'OP_BOND'.
wafieldcatlog-tabname = 'IT_ALV'.
wafieldcatlog-seltext = 'Qty Issue'.
wafieldcatlog-reptext = 'Qty Issue'.
wafieldcatlog-hotspot = ' '.
wafieldcatlog-col_pos = v_index.
APPEND wafieldcatlog TO it_fieldcatalog.
CLEAR wafieldcatlog-reptext.
CLEAR wafieldcatlog-key.
*Total
v_index = v_index + 1.
wafieldcatlog-fieldname = 'MENGE_FINI'.
wafieldcatlog-tabname = 'IT_ALV'.
wafieldcatlog-seltext = 'Closing Balance'.
wafieldcatlog-reptext = 'Closing Balance'.
wafieldcatlog-hotspot = ' '.
wafieldcatlog-col_pos = v_index.
APPEND wafieldcatlog TO it_fieldcatalog.
CLEAR wafieldcatlog-reptext.
CLEAR wafieldcatlog-key.
*Material Description
v_index = v_index + 1.
wafieldcatlog-fieldname = 'MAKTX'.
wafieldcatlog-tabname = 'IT_ALV'.
wafieldcatlog-seltext = 'Material Description'.
wafieldcatlog-reptext = 'Material Description'.
wafieldcatlog-hotspot = ' '.
wafieldcatlog-col_pos = v_index.
APPEND wafieldcatlog TO it_fieldcatalog.
CLEAR wafieldcatlog-reptext.
CLEAR wafieldcatlog-key.
*Storage Location
v_index = v_index + 1.
wafieldcatlog-fieldname = 'LGORT'.
wafieldcatlog-tabname = 'IT_ALV'.
wafieldcatlog-seltext = 'Storage Location'.
wafieldcatlog-reptext = 'Storage Location'.
wafieldcatlog-hotspot = ' '.
wafieldcatlog-col_pos = v_index.
APPEND wafieldcatlog TO it_fieldcatalog.
CLEAR wafieldcatlog-reptext.
CLEAR wafieldcatlog-key.
*Goods Movement Direction
v_index = v_index + 1.
wafieldcatlog-fieldname = 'RISIND'.
wafieldcatlog-tabname = 'IT_ALV'.
wafieldcatlog-seltext = 'Goods Movement Direction'.
wafieldcatlog-reptext = 'Goods Movement Direction'.
wafieldcatlog-hotspot = ' '.
wafieldcatlog-col_pos = v_index.
APPEND wafieldcatlog TO it_fieldcatalog.
CLEAR wafieldcatlog-reptext.
CLEAR wafieldcatlog-key.
*Reference Document 1
v_index = v_index + 1.
wafieldcatlog-fieldname = 'RDOC1'.
wafieldcatlog-tabname = 'IT_ALV'.
wafieldcatlog-seltext = 'Reference Document 1'.
wafieldcatlog-reptext = 'Reference Document 1'.
wafieldcatlog-hotspot = ' '.
wafieldcatlog-col_pos = v_index.
APPEND wafieldcatlog TO it_fieldcatalog.
CLEAR wafieldcatlog-reptext.
CLEAR wafieldcatlog-key.
*Excise Duty Base Amount
v_index = v_index + 1.
wafieldcatlog-fieldname = 'EXBAS'.
wafieldcatlog-tabname = 'IT_ALV'.
wafieldcatlog-seltext = 'Excise Duty Base Amount'.
wafieldcatlog-reptext = 'Excise Duty Base Amount'.
wafieldcatlog-hotspot = ' '.
wafieldcatlog-col_pos = v_index.
APPEND wafieldcatlog TO it_fieldcatalog.
CLEAR wafieldcatlog-reptext.
CLEAR wafieldcatlog-key.
*Basic Excise Duty
v_index = v_index + 1.
wafieldcatlog-fieldname = 'EXBED'.
wafieldcatlog-tabname = 'IT_ALV'.
wafieldcatlog-seltext = 'Basic Excise Duty'.
wafieldcatlog-reptext = 'Basic Excise Duty'.
wafieldcatlog-hotspot = ' '.
wafieldcatlog-col_pos = v_index.
APPEND wafieldcatlog TO it_fieldcatalog.
CLEAR wafieldcatlog-reptext.
CLEAR wafieldcatlog-key.
*Additional Excise Duty
v_index = v_index + 1.
wafieldcatlog-fieldname = 'EXAED'.
wafieldcatlog-tabname = 'IT_ALV'.
wafieldcatlog-seltext = 'Additional Excise Duty'.
wafieldcatlog-reptext = 'Additional Excise Duty'.
wafieldcatlog-hotspot = ' '.
wafieldcatlog-col_pos = v_index.
APPEND wafieldcatlog TO it_fieldcatalog.
CLEAR wafieldcatlog-reptext.
CLEAR wafieldcatlog-key.
*Special Excise Duty
v_index = v_index + 1.
wafieldcatlog-fieldname = 'EXSED'.
wafieldcatlog-tabname = 'IT_ALV'.
wafieldcatlog-seltext = 'Special Excise Duty'.
wafieldcatlog-reptext = 'Special Excise Duty'.
wafieldcatlog-hotspot = ' '.
wafieldcatlog-col_pos = v_index.
APPEND wafieldcatlog TO it_fieldcatalog.
CLEAR wafieldcatlog-reptext.
CLEAR wafieldcatlog-key.
*Cess amount
v_index = v_index + 1.
wafieldcatlog-fieldname = 'CESS'.
wafieldcatlog-tabname = 'IT_ALV'.
wafieldcatlog-seltext = 'Cess amount'.
wafieldcatlog-reptext = 'Cess amount'.
wafieldcatlog-hotspot = ' '.
wafieldcatlog-col_pos = v_index.
APPEND wafieldcatlog TO it_fieldcatalog.
CLEAR wafieldcatlog-reptext.
CLEAR wafieldcatlog-key.
*ECS Value
v_index = v_index + 1.
wafieldcatlog-fieldname = 'ECS'.
wafieldcatlog-tabname = 'IT_ALV'.
wafieldcatlog-seltext = 'ECS Value'.
wafieldcatlog-reptext = 'ECS Value'.
wafieldcatlog-hotspot = ' '.
wafieldcatlog-col_pos = v_index.
APPEND wafieldcatlog TO it_fieldcatalog.
CLEAR wafieldcatlog-reptext.
CLEAR wafieldcatlog-key.
**Register Entry Status
v_index = v_index + 1.
wafieldcatlog-fieldname = 'STATUS'.
wafieldcatlog-tabname = 'IT_ALV'.
wafieldcatlog-seltext = 'Register Entry Status'.
wafieldcatlog-reptext = 'Register Entry Status'.
wafieldcatlog-hotspot = ' '.
wafieldcatlog-col_pos = v_index.
append wafieldcatlog to it_fieldcatalog.
clear wafieldcatlog-reptext.
clear wafieldcatlog-key.
*EQPT Serno 1 Value
v_index = v_index + 1.
wafieldcatlog-fieldname = 'SERNR'.
wafieldcatlog-tabname = 'IT_ALV'.
wafieldcatlog-seltext = 'Serial number'.
wafieldcatlog-reptext = 'Serial number'.
wafieldcatlog-hotspot = ' '.
wafieldcatlog-col_pos = v_index.
APPEND wafieldcatlog TO it_fieldcatalog.
CLEAR wafieldcatlog-reptext.
CLEAR wafieldcatlog-key.
*EQPT Serno 2 Value
v_index = v_index + 1.
wafieldcatlog-fieldname = 'SERNR1'.
wafieldcatlog-tabname = 'IT_ALV'.
wafieldcatlog-seltext = 'Serial number'.
wafieldcatlog-reptext = 'Serial number'.
wafieldcatlog-hotspot = ' '.
wafieldcatlog-col_pos = v_index.
APPEND wafieldcatlog TO it_fieldcatalog.
CLEAR wafieldcatlog-reptext.
CLEAR wafieldcatlog-key.
*EQPT Serno 3 Value
v_index = v_index + 1.
wafieldcatlog-fieldname = 'SERNR2'.
wafieldcatlog-tabname = 'IT_ALV'.
wafieldcatlog-seltext = 'Serial number'.
wafieldcatlog-reptext = 'Serial number'.
wafieldcatlog-hotspot = ' '.
wafieldcatlog-col_pos = v_index.
APPEND wafieldcatlog TO it_fieldcatalog.
CLEAR wafieldcatlog-reptext.
CLEAR wafieldcatlog-key.
*EQPT Serno 4 Value
v_index = v_index + 1.
wafieldcatlog-fieldname = 'SERNR3'.
wafieldcatlog-tabname = 'IT_ALV'.
wafieldcatlog-seltext = 'Serial number'.
wafieldcatlog-reptext = 'Serial number'.
wafieldcatlog-hotspot = ' '.
wafieldcatlog-col_pos = v_index.
APPEND wafieldcatlog TO it_fieldcatalog.
CLEAR wafieldcatlog-reptext.
CLEAR wafieldcatlog-key.
*EQPT Serno 5 Value
v_index = v_index + 1.
wafieldcatlog-fieldname = 'SERNR4'.
wafieldcatlog-tabname = 'IT_ALV'.
wafieldcatlog-seltext = 'Serial number'.
wafieldcatlog-reptext = 'Serial number'.
wafieldcatlog-hotspot = ' '.
wafieldcatlog-col_pos = v_index.
APPEND wafieldcatlog TO it_fieldcatalog.
CLEAR wafieldcatlog-reptext.
CLEAR wafieldcatlog-key.
*EQPT Serno 6 Value
v_index = v_index + 1.
wafieldcatlog-fieldname = 'SERNR5'.
wafieldcatlog-tabname = 'IT_ALV'.
wafieldcatlog-seltext = 'Serial number'.
wafieldcatlog-reptext = 'Serial number'.
wafieldcatlog-hotspot = ' '.
wafieldcatlog-col_pos = v_index.
APPEND wafieldcatlog TO it_fieldcatalog.
CLEAR wafieldcatlog-reptext.
CLEAR wafieldcatlog-key.
*EQPT Serno 7 Value
v_index = v_index + 1.
wafieldcatlog-fieldname = 'SERNR6'.
wafieldcatlog-tabname = 'IT_ALV'.
wafieldcatlog-seltext = 'Serial number'.
wafieldcatlog-reptext = 'Serial number'.
wafieldcatlog-hotspot = ' '.
wafieldcatlog-col_pos = v_index.
APPEND wafieldcatlog TO it_fieldcatalog.
CLEAR wafieldcatlog-reptext.
CLEAR wafieldcatlog-key.
ENDFORM. " prepare_catalog
*& Module USER_COMMAND_0100 INPUT
text
MODULE user_command_0100 INPUT.
IF ok_code = 'EXIT'.
CALL METHOD grid1->free.
CALL METHOD cl_gui_cfw=>flush.
leave program .
LEAVE TO SCREEN 0.
ENDIF.
ENDMODULE. " USER_COMMAND_0100 INPUT
*& Form call_migo
text
--> p1 text
<-- p2 text
FORM call_migo .
CALL FUNCTION 'MIGO_DIALOG' "n547170
EXPORTING "n547170
i_action = 'A04' "n547170
i_refdoc = 'R02' "n547170
i_notree = 'X' "n547170
i_no_auth_check = ' ' "n547170
i_deadend = 'X' "n547170
i_skip_first_screen = 'X' "n547170
i_okcode = 'OK_GO' "n547170
i_mblnr = wa_alv-mblnr "n547170
i_mjahr = wa_alv-mjahr . "n547170
ENDFORM. " call_migoThanks,
K.Kiran -
How to save data in ztable after editing in alv report
how to save data in ztable after editing in alv report?
Hi,
Please find the attachment below.This may be usefull to you.
[http://wiki.sdn.sap.com/wiki/display/Snippets/ALV-Editingandsavingtheeditedvaluesin+Database%28OOPS%29]
Regards,
Ramakrishna Yella. -
How to Fetch Sales Order Item Quantity from Customer table(ztable)?
Dear Guru's,
My scenario:
While creating Sales order the item quantity should be fetched from a Ztable. So iam using the Userexit "V46H0001 - - Customer functions for resource-related billing", in that i have implemented my code in the Function Exit - EXIT_SAPLV46H_001 and the FM documentation says
This function module allows you to change item information for generating a new item.
In order to achieve this, you must change the relevant field in the structure C_VBAPKOM.
So i activated that exit and wrote the following code to test it as follows;
break-point.
C_VBAPKOM-zmeng = 10.
But it seems not working, even it doesn't stop at the break-point when i type the material number for the item in the sales order and press enter...
Please guide me in this regard, am i correct in choosing the User-Exit? what else have to be done in order to fetch the item quantity from the ztable....
Please suggest if there is some other way to do this, i also heard that we can do this through Routines...
Thanks in Advance...
Regards
Karthik DI have solved this and you can found how i solved in the last reply of the following thread....
[SD UserExit - V46H0001 - Customer functions for resource-related billing|SD UserExit - V46H0001 - Customer functions for resource-related billing]
Thanks
Karthik D -
Update ZTable from editable ALV
Hi All,
i'm calling a Function Module from within a Badi Class ( Workorder_Update) which uses an ALV to Add Comments in a Field of the ALV for Transportation to a ZTable. Therefore the ALV is set to editable.
The Problem is that if the User does not press 'enter' after she/he added the Comment, the value is not send back to the internal Table wich updates the ZTab. If the User presses 'enter' ONLY the Comment is transported but the remainder of the Fields are cleared.
This is part of the Coding:
Before Calling FM -->
+ IF wa_header_old-pronr NE wa_header-pronr.
CLEAR wa_zthlog.
wa_zthlog-uzeit = sy-uzeit.
wa_zthlog-aufnr = wa_header-aufnr.
wa_zthlog-objnr = wa_header-objnr.
wa_zthlog-vornr = wa_operation-vornr.
wa_zthlog-ktext = wa_header-ktext.
wa_zthlog-aenam = sy-uname.
wa_zthlog-aedat = sy-datum.
wa_zthlog-larnt = wa_operation-larnt.
wa_zthlog-pronr = wa_header-pronr.
wa_zthlog-arbei = wa_operation-arbei.
wa_zthlog-dauno = wa_operation-dauno.
wa_zthlog-dauno = wa_operation-dauno.
wa_zthlog-ltxa1 = wa_operation-ltxa1.
wa_zthlog-arbid = wa_operation-arbid.
wa_zthlog-fieldname = 'PRONR'.
wa_zthlog-matkl = wa_operation-matkl.
wa_zthlog-preis = wa_operation-preis.
wa_zthlog-waers = wa_header-waers.
wa_zthlog-old_value = wa_header_old-pronr.
wa_zthlog-new_value = wa_header-pronr.
Fill t_zthlog - Call FM
APPEND wa_zthlog TO t_zthlog.
ENDIF.
ENDLOOP.
Secure Values before change
MOVE t_zthlog TO y_zthlog.+
Calling FM -->
+function z_thlog.
t_zthlog[] = c_zthlog[].
call screen 0100 starting at 10 3.
c_zthlog[] = t_zthlog[].
endfunction.+
ALV Grid - Processing -->
+module output_0100 output.
Fill Fieldcatalog
call function 'LVC_FIELDCATALOG_MERGE'
exporting
i_structure_name = 'ZTHLOG'
changing
ct_fieldcat = gt_fieldcat[]
exceptions
inconsistent_interface = 1
program_error = 2
others = 3.
if g_custom_container is initial.
Prepare ALV
create object g_custom_container
exporting container_name = g_container.
create object grid1
exporting i_parent = g_custom_container.
g_repid = sy-repid.
gs_layout-grid_title = 'Änderungsprotokoll'.
gs_layout-zebra = 'X'.
gs_layout-cwidth_opt = 'X'.
gs_variant-report = g_repid.
gs_variant = '/default'.
gs_layout-edit = 'X'.
Call ALV
call method grid1->set_table_for_first_display
exporting
i_structure_name = 'ZTHLOG'
is_layout = gs_layout
i_save = 'A'
is_variant = gs_variant
changing
it_outtab = t_zthlog
it_fieldcatalog = gt_fieldcat[].
Ready for Input
call method grid1->set_ready_for_input
exporting
i_ready_for_input = 1.
Eventregistration
call method grid1->register_edit_event
exporting
i_event_id = cl_gui_alv_grid=>mc_evt_enter.
create object g_event_receiver.
set handler g_event_receiver->handle_data_changed for grid1.
else.
Refresh, if filled
call method grid1->refresh_table_display.
endif.
set Cursor
call method cl_gui_control=>set_focus
exporting
control = grid1.
endmodule. " output_0100 OUTPUT+
There are alot of fields so the manual creation of the fieldcatalog should be avoided if possible.
Any Help is appreciated!
Best Regards
StefanHi,
Check this
* Module Pai INPUT *
* PAI module *
module pai input.
save_ok = ok_code.
clear ok_code.
call method grid1->check_changed_data
importing
e_valid = v_valid.
" After this system will automatically update your changed data into
" internal table t_zthlog
case save_ok.
when 'EXIT'.
perform f_exit_program.
when 'CANC'.
perform f_exit_program.
when 'BACK'.
perform f_exit_program.
when 'SAVE'.
perform f_save_data.
endcase.
endmodule. " Pai INPUT
aRs
Maybe you are looking for
-
I was trying to shut off my iphone 3gs and now it is stuck in shut down mode. How do I shut it down?
-
Configuring more than one LDAP as data source
Hi Portal Gurus, We have requiremnt to configure MS ADS LDAP-> DEEP HIERARCHY & Sun one LDAP->FLAT HIERRARCHY as PORTAL Datra Source.we have already configured MS ADS LDAP. for merging these 2 LDAPS as a data source can anybody having experiece ..
-
Hi Experts, I need to implement F4 help for ALV table field. I my scenario, I am using two views. If we click on any record in fist view then it displays the popup window (second view) with relevant record details. Here one of the columns having fiel
-
Infotype creation with repeat structure
Hi All, I need to create the custom infotype with repeat structure in the PS-structure. There are around 90 fields need to be added in the structure. If we look in the standard structure of the repeat structure, its a include structure(p0008 and p016
-
How do I permently delete the free U2 album from my IPOD?
I don't care if the U2 album is free or not I WANT IT OFF MY IPOD, I DO NOT WANT TO EVEN SEE IT> HOW DO I TAKE IT OFF PERMANENTLY?