Generating a internal table based on the fieldcatalog
hi,
i want to generate an internal table based on field catalog which will be generated after the user has selected a particular layout.
For eg. Suppose there are at present 25 fields at the ALV output and out of which user selects 10 fields using layout option and i save the layout.
Now i want an internal table with these 10 fields in my internal table not all the 25 fields.
any ideas?
regards
jignesh.
Hi,
Look at the sample code below.
FIELD-SYMBOLS: <outtab> TYPE ANY TABLE,
<l_line> TYPE ANY,
<l_field> TYPE ANY.
DATA: new_table TYPE REF TO data.
DATA: new_line TYPE REF TO data.
DATA: it_fieldcat TYPE lvc_t_fcat.
DATA: wa_fieldcat TYPE lvc_s_fcat.
DATA: BEGIN OF itab OCCURS 0,
matnr TYPE matnr,
aenam TYPE aenam,
END OF itab.
"Fill the fieldcat here
"For example say it contains two fields MATNR AENAM
CALL METHOD cl_alv_table_create=>create_dynamic_table
EXPORTING
it_fieldcatalog = it_fieldcat
IMPORTING
ep_table = new_table.
ASSIGN new_table->* TO <outtab>. "This is the required table
CREATE DATA new_line LIKE LINE OF <outtab>.
ASSIGN new_line->* TO <l_line> . "Work area forthe same
SELECT matnr aenam UP TO 5 ROWS
FROM mara
INTO TABLE itab.
LOOP AT itab.
ASSIGN COMPONENT 'MATNR' OF STRUCTURE <l_line> TO <l_field>.
<l_field> = itab-matnr.
ASSIGN COMPONENT 'AENAM' OF STRUCTURE <l_line> TO <l_field>.
<l_field> = itab-aenam.
INSERT <l_line> INTO TABLE <outtab>.
ENDLOOP.
LOOP AT <outtab> ASSIGNING <l_line>.
WRITE: / <l_line>.
ENDLOOP.
Regards,
Manoj Kumar P
Similar Messages
-
Sort the internal table based on the vendor field
hello experts,
I am stuck with a small problem...
I am uploading the data for partner association for vendors through lsmw BI program.
I am collecting all the records in the end of trasaction and downloading all those records on to the apps server.
I declared one internal table as
TYPES: BEGIN OF type_erecord,
mesg(1000) TYPE c,
END OF type_erecord.
DATA: t_precord type standard table of type_erecord initial size 0,
w_precord type type_erecord.
I am concatenating all the fields and moving to the internal table..
concatenate zvendor_master-source zvendor_master-lifnr blf00-lifnr
zvendor_master-lname zvendor_master-parvw
zvendor_master-psource zvendor_master-pname
zvendor_master-lifn2 bwyt3-lifn2
zvendor_master-ekorg zvendor_master-werks
w_PLANT-muplant zvendor_master-defpa
v_message
into w_precord-mesg separated by c_pipe.
append w_precord to t_precord.
now at the end I have to sort this internal table t_precord based on blf00-lifnr
can any one guide me how to do it
Thanks for your anticipation
NiteshaOK...
Than you can create one more table and do the process of sorting and than put data into the final table.
TYPES: BEGIN OF type_erecord,
mesg(1000) TYPE c,
END OF type_erecord.
DATA: t_precord type standard table of type_erecord initial size 0,
w_precord type type_erecord.
TYPES: BEGIN OF type_erecord_1,
mesg(1000) TYPE c,
lifnr type blf00-lifnr , "<<<
END OF type_erecord_1.
DATA: t_precord_1 type standard table of type_erecord initial size 0,
w_precord_1 type type_erecord.
I am concatenating all the fields and moving to the internal table..
concatenate zvendor_master-source zvendor_master-lifnr blf00-lifnr
zvendor_master-lname zvendor_master-parvw
zvendor_master-psource zvendor_master-pname
zvendor_master-lifn2 bwyt3-lifn2
zvendor_master-ekorg zvendor_master-werks
w_PLANT-muplant zvendor_master-defpa
v_message
into w_precord_1-mesg separated by c_pipe.
w_precord_1-lifnr = blf00-lifnr . " <<<
append w_precord_1 to t_precord_1. " <<<
SORT T_PRECORD_1 by LIFNR. " <<
LOOP AT T_PRECORD_1 into w_precord_1.
move-corresponing w_precord_1 to w_precord.
append w_precord to T_PRECORD.
clear w_precord .
endloop.
Regards,
Naimesh Patel -
How to prepare final internal table based on no. of records of individual t
Hi all,
I have to prepare final internal table based on the no. of records of individual table. i.e. I should append the data from the table which has large no of records first. Then I should modify the final table with other individual tables. I have reservation list table(RESB), purchase requisition table(EBAN), purchase order delivery schedules table(EKET) , GRs table (MESG) .I have prepared data for individual tables. We can't say particularly that this table'll have large no. of records always. So how can I append the first table into final internal table ? I have separate work areas for each table in my SMARTFORM.
Edited by: Jayasri P. on Aug 30, 2008 6:02 AMHI,
DESCRIBE TABLE statement with LINE addition will give you the no of record in an internal table.
For further detail check,
http://help.sap.com/saphelp_nw70/helpdata/en/fc/eb3798358411d1829f0000e829fbfe/content.htm
you can stire the LINE value of each and comare them to get the table with max record.
Regards,
Anirban -
Sql queries from internal tables based on context node
Hi experts,
I want to select from my inetrnal table which is based on the context node, the rows which do not appear in another internal table based on the context node.
I have this data:
data lt_item_level type table of wd_this->element_item_level INITIAL SIZE 0.
data lt_item_level_cp type table of wd_this->element_item_level INITIAL SIZE 0.
data lt_po_items TYPE table of wd_this->element_po_items INITIAL SIZE 0.
I want to do this:
select * into CORRESPONDING FIELDS OF TABLE lt_item_level_cp from lt_item_level WHERE lt_po_items-po_number NE lt_item_level-item_number.
But i get an error:
"LT_ITEM_LEVEL" is not defined in the ABAP Dictionary as a table,
Is there a way to do it with select or should i loop over my internal tables?
thank u very much!!hi,
You cannot use Select queries on internal table. do like this :
loop at itab into wa where wa-F1 NE wa-F2.
append wa to itab1.
endloop.
Here itab1 will have all the records as per your requiement.
I hope it is clear.
Edited by: Saurav Mago on Oct 26, 2009 5:37 PM -
Hide multiple rows in a dynamic table based on the row value.
Hi,
I need to hide multiple rows in a dynamic table based on the specific value of that row.
I cant find the right expression to do that.
please helpGo to the Row Properties, and in the Visibility tab, you have "Show or hide based on an expression". You can use this to write an expression that resolves to true if the row should be hidden, false otherwise.
Additionally, in the Matrix properties you should take a look at the filters section, perhaps you can achieve what you wish to achieve through there by removing the unnecessary rows instead of just hiding them.
It's only so much I can help you with the limited information. If you require further help, please provide us with more information such as what data are you displaying, what's the criteria to hiding rows, etc...
Regards
Andrew Borg Cardona -
can we control the PDF file name that is generated by BI Publisher based on the content in the input PDF?
No, there isn't. The way you're using the file is not recommended. You
should use a review tracker to avoid getting in the way of one another. -
Is it possible to find the table based on the Date ?
Dear Team ,
Is it possible to find the table based on the Date ?
I have created an table ,But forgot the Table Name .
Is it possible to find the Tables created on particular Date .
Regards ,
Augustineas date is record the time also below query will work.
select * from user_objects
where
object_type = 'TABLE' and
to_date(created,'DD-MON-YYYY') =to_date('<your date value in DD-MON-YYYY format>','DD-MON-YYYY');
Edited by: shaileshM on Feb 24, 2010 9:39 PM -
How to populate dynamic internal table according to the field names
Hi ,
Iam having a dynamic internal table <DYN_TABLE> , it has fields like
MATNR MAKTX MEINS BISMT MTART ...
Now my requirement is i need to fill them according to the fieldname from another internal table (static) .
The order of internal table (static) and dynamic internal are not same.
kindly help me.Hi,
Here is the code. Please reward points if helpful.
REPORT z_dynamic.
TYPE-POOLS : abap.
FIELD-SYMBOLS: <dyn_table> TYPE STANDARD TABLE,
<dyn_wa>,
<dyn_field>.
DATA: dy_table TYPE REF TO data,
dy_line TYPE REF TO data,
xfc TYPE lvc_s_fcat,
ifc TYPE lvc_t_fcat.
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME.
PARAMETERS: p_table(30) TYPE c DEFAULT 'T001'.
SELECTION-SCREEN END OF BLOCK b1.
START-OF-SELECTION.
PERFORM get_structure.
PERFORM create_dynamic_itab.
PERFORM get_data.
PERFORM write_out.
*& Form get_structure
text
FORM get_structure.
DATA : idetails TYPE abap_compdescr_tab,
xdetails TYPE abap_compdescr.
DATA : ref_table_des TYPE REF TO cl_abap_structdescr.
Get the structure of the table.
ref_table_des ?=
cl_abap_typedescr=>describe_by_name( p_table ).
idetails[] = ref_table_des->components[].
LOOP AT idetails INTO xdetails.
CLEAR xfc.
xfc-fieldname = xdetails-name .
xfc-datatype = xdetails-type_kind.
xfc-inttype = xdetails-type_kind.
xfc-intlen = xdetails-length.
xfc-decimals = xdetails-decimals.
APPEND xfc TO ifc.
ENDLOOP.
ENDFORM. "get_structure
*& Form create_dynamic_itab
text
FORM create_dynamic_itab.
Create dynamic internal table and assign to FS
CALL METHOD cl_alv_table_create=>create_dynamic_table
EXPORTING
it_fieldcatalog = ifc
IMPORTING
ep_table = dy_table.
ASSIGN dy_table->* TO <dyn_table>.
Create dynamic work area and assign to FS
CREATE DATA dy_line LIKE LINE OF <dyn_table>.
ASSIGN dy_line->* TO <dyn_wa>.
ENDFORM. "create_dynamic_itab
*& Form get_data
text
FORM get_data.
Select Data from table.
SELECT * INTO TABLE <dyn_table>
FROM (p_table).
ENDFORM. "get_data
*& Form write_out
text
FORM write_out.
Write out data from table.
LOOP AT <dyn_table> INTO <dyn_wa>.
DO.
ASSIGN COMPONENT sy-index
OF STRUCTURE <dyn_wa> TO <dyn_field>.
IF sy-subrc <> 0.
EXIT.
ENDIF.
IF sy-index = 1.
WRITE:/ <dyn_field>.
ELSE.
WRITE: <dyn_field>.
ENDIF.
ENDDO.
ENDLOOP.
ENDFORM. "write_out -
Dynamic internal table ( make one internal table parts of the record )
hello i am doing a program that look for document billing put it in a internal table then loop the internal table and use the FM SD_DOCUMENT_FLOW_GET for get the document flow that fm return a table and i need make every record of that table part of the currect register , i already do this in a ugly static way but i am looking a dynamic way of do this , i know that the ABAP OO is the way but i am no able to get this approarch ( i am noob in abap and any experience with OO programing )
i will show the code for better understanding of it
pd: is a crappy code i know sorry
[CLick Here for the see the Code ( pastebin )|http://linuxlatino.pastebin.com/m39120e69]thanks all for the answer , but i will try explain better my problem :
i have a it_data interntal table with document bill record i do a loop to that table and used the vbeln field in the FM for get the docment flow of that document billing number now the output of the FM is a table and i need take each record of that table am make it part of the current record of it_Data.
Example:
it_Data without the it_docflow data
*Sales ORg* *Distri.Channel* *Billing Type* *Payer* *Sold-to-party* vbeln*
TP01 C1 ZT17 1000524 1000524 85003435 ..........
it_docflow table ( FM Output ):
*DOCNUM ITEMNU DOCNUV ITEMNU Description*
53107842 000000 000000 Standard Order
65004606 000000 53107842 000000 Outbound Delivery
75179356 000000 65004606 000000 Invoice
57000118 000000 75179356 000000 Returns
85003435 000000 57000118 000000 Credit for Returns
5200003681 000000 85003435 000000 Accounting Doc.
now the it_docflow data add in the it_data record:
53107842 Standard Order 65004606 Outbound Delivery 75179356 Invoice 57000118 Returns 85003435 Credit for Returns 5200003681 Accounting Doc TP01 C1 ZT17 1000524 1000524 85003435 .........
i hope this explain better my problem here , thanks again -
Comparing two internal tables and deleting the record not present in second
Hi All,
I have a internal table itaba with PERNR as primary key and various other columns (1000 records) and table B with PERNR as primary key and 800 records.
Now what is the best way to compare these two and delete the record from table A when its corresponding record is not present in table B?
Thanks and Regards,
MohanHI SIR
u trained us in accenture
Hi all
when ever m running this session in SM35 , M getting error as :
"LEAVE TO TRANSACTION" MARA-BISMT is not allow
in batch input
REPORT YASEC_BDC_NIK_SESSION
no standard page heading
message-id zmm
line-count 65
line-size 150.
tables : mara.
*Top includr program
INCLUDE YNEW_MAIN_TOP.
*include yasec_bdc_nik_session_top.
***********selection screen *******************
selection-screen begin of block b1 with frame title text-001.
selection-screen skip.
PARAMETERS: p_ifile(128) TYPE c .
SELECTION-SCREEN SKIP.
SELECTION-SCREEN BEGIN OF BLOCK b2 WITH FRAME TITLE text-002.
PARAMETERS: rad1 TYPE c RADIOBUTTON GROUP 1 USER-COMMAND gr1,
rad2 TYPE c RADIOBUTTON GROUP 1 .
SELECTION-SCREEN SKIP.
PARAMETERS: p_sess TYPE c.
SELECTION-SCREEN END OF BLOCK b2.
SELECTION-SCREEN SKIP.
SELECTION-SCREEN END OF BLOCK b1.
Subroutine call***************************
INCLUDE YNEW_MAIN_F01.
*include yasec_bdc_nik_session_f01.
*********At selection event triggered *************
at selection-screen on value-request for p_ifile.
To get F4 help for the input file path
PERFORM f_f4_input_file.
AT SELECTION-SCREEN ON p_ifile.
To validate and upload the input file
PERFORM f_load_file.
AT SELECTION-SCREEN ON p_sess.
To validate the Number of Sessions field
IF rad2 IS NOT INITIAL AND sy-ucomm EQ c_onli.
PERFORM f_check_sessions.
ENDIF.
***********Start of selection *******************
start-of-selection.
*To process BDC
PERFORM f_process_bdc.
TOP OF PAGE
TOP-OF-PAGE.
Writes the report heading and for displaying line number.
PERFORM f_report_header.
TYPES : BEGIN OF t_final,
matnr(50) TYPE c,
bismt(18) type c,
end of t_final.
TYPES: BEGIN OF t_fdata,
data(256) TYPE c,
END OF t_fdata.
TYPES: BEGIN OF t_error,
message(100) TYPE c,
END OF t_error.
*Internal table declarations
*Internal table to load the data from the file that is changed throgh BDC
DATA : i_final TYPE STANDARD TABLE OF t_final,
wa_final TYPE t_final.
*Internal table to store the error messages
DATA : i_error TYPE STANDARD TABLE OF t_error,
wa_error TYPE t_error.
*Internal table to load the raw data
DATA : i_fdata TYPE STANDARD TABLE OF t_fdata,
wa_fdata TYPE t_fdata.
*Internal table to store records of BDC
DATA : i_bdcdata TYPE STANDARD TABLE OF bdcdata INITIAL SIZE 0,
wa_bdcdata TYPE bdcdata.
Internal table to store BDC messages
DATA: i_bdcmsgcoll TYPE STANDARD TABLE OF bdcmsgcoll INITIAL SIZE 0,
wa_bdcmsgcoll TYPE bdcmsgcoll.
VARIABLE DECLARATIONS
DATA: v_ifile TYPE string,
v_input TYPE i,
c_delimiter TYPE c VALUE 'X',
v_mode TYPE c VALUE 'A',
v_sessions TYPE i.
CONSTANTS
CONSTANTS : c_flagx TYPE c VALUE 'X',
c_slash TYPE c VALUE '/',
c_onli(4) TYPE c VALUE 'ONLI',
c_vl02(4) TYPE c VALUE 'VL02',
c_s TYPE c VALUE 'A'.
FORM f_f4_input_file .
CALL FUNCTION 'F4_FILENAME'
EXPORTING
program_name = syst-cprog
dynpro_number = syst-dynnr
IMPORTING
file_name = p_ifile.
ENDFORM. " f_f4_input_file
*& Form f_load_file
FORM f_load_file .
v_ifile = p_ifile.
CALL FUNCTION 'GUI_UPLOAD'
EXPORTING
filename = v_ifile
filetype = 'ASC'
has_field_separator = 'X'
TABLES
data_tab = i_fdata
EXCEPTIONS
file_open_error = 1
file_read_error = 2
no_batch = 3
gui_refuse_filetransfer = 4
invalid_type = 5
no_authority = 6
unknown_error = 7
bad_data_format = 8
header_not_allowed = 9
separator_not_allowed = 10
header_too_long = 11
unknown_dp_error = 12
access_denied = 13
dp_out_of_memory = 14
disk_full = 15
dp_timeout = 16
OTHERS = 17.
IF sy-subrc <> 0.
*Text-103-Input file does not exist.
MESSAGE e000 WITH text-103 .
ELSEIF NOT i_fdata IS INITIAL.
DELETE i_fdata WHERE data = space.
DESCRIBE TABLE i_fdata LINES v_input.
ENDIF.
IF v_input EQ 0.
Text-104 - Input file is empty.
MESSAGE e000 WITH text-104 .
ENDIF.
ENDFORM. " f_load_file
*& Form f_check_sessions
FORM f_check_sessions .
IF p_sess IS INITIAL.
MESSAGE e000 WITH text-106.
ELSE.
v_sessions = v_input DIV p_sess.
ENDIF.
ENDFORM. " f_check_sessions
*& Form f_process_bdc
text
FORM f_process_bdc.
LOOP AT i_fdata INTO wa_fdata.
SPLIT wa_fdata AT cl_abap_char_utilities=>horizontal_tab
INTO wa_final-matnr
wa_final-bismt.
APPEND wa_final TO i_final.
CLEAR wa_fdata.
ENDLOOP.
IF rad1 = c_flagx.
PERFORM f_passbdc_vl02.
ELSEIF rad2 = c_flagx.
PERFORM f_sessions_vl02.
ENDIF.
ENDFORM. "f_process_bdc
To populate the Screen information
p_program Program Name
p_dynpro Screen Number
FORM bdc_dynpro USING p_program TYPE any
p_dynpro TYPE any.
CLEAR wa_bdcdata.
Populate the BDC structure with the Screen Information.
Move the Program name PROGRAM
wa_bdcdata-program = p_program.
Move the Screen Number DYNPRO
wa_bdcdata-dynpro = p_dynpro.
Indicate the beginning of a new screen
wa_bdcdata-dynbegin = c_flagx.
APPEND wa_bdcdata TO i_bdcdata.
ENDFORM. "f_bdc_dynpro
*& Form f_passbdc_vl02
text
FORM f_passbdc_vl02.
DATA: l_lines_im TYPE i.
SORT i_final BY matnr ASCENDING.
CLEAR wa_final.
LOOP AT i_final INTO wa_final.
CLEAR: i_bdcmsgcoll[],
wa_bdcmsgcoll,
wa_bdcdata.
CLEAR: i_bdcdata[].
perform bdc_dynpro using 'SAPLMGMM' '0060'.
perform bdc_field using 'BDC_CURSOR'
'RMMG1-MATNR'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
perform bdc_field using 'RMMG1-MATNR'
wa_final-matnr.
perform bdc_dynpro using 'SAPLMGMM' '0070'.
perform bdc_field using 'BDC_CURSOR'
'MSICHTAUSW-DYTXT(01)'.
perform bdc_field using 'BDC_OKCODE'
'=ENTR'.
perform bdc_field using 'MSICHTAUSW-KZSEL(01)'
'X'.
perform bdc_dynpro using 'SAPLMGMM' '4004'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
perform bdc_field using 'BDC_CURSOR'
'MARA-BISMT'.
perform bdc_field using 'MARA-BISMT'
wa_final-bismt.
perform bdc_dynpro using 'SAPLSPO1' '0300'.
perform bdc_field using 'BDC_OKCODE'
'=YES'.
perform bdc_transaction using 'MM02'.
perform bdc_dynpro using 'SAPLMGMM' '0060'.
perform bdc_field using 'BDC_CURSOR'
'RMMG1-MATNR'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
perform bdc_dynpro using 'SAPLMGMM' '0070'.
perform bdc_field using 'BDC_CURSOR'
'MSICHTAUSW-DYTXT(01)'.
perform bdc_field using 'BDC_OKCODE'
'=ENTR'.
perform bdc_dynpro using 'SAPLMGMM' '4004'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
perform bdc_field using 'BDC_CURSOR'
'RMMG1-MATNR'.
perform bdc_dynpro using 'SAPLSPO1' '0300'.
perform bdc_field using 'BDC_OKCODE'
'=YES'.
perform bdc_transaction using 'MM03'.
CALL TRANSACTION 'MM02' USING i_bdcdata
MODE v_mode
UPDATE c_s
MESSAGES INTO i_bdcmsgcoll.
If error occurred in call transaction 'VA02' then stores all
information of failed records into internal table i_error_im.
IF sy-subrc NE 0.
DESCRIBE TABLE i_bdcmsgcoll LINES l_lines_im.
CLEAR wa_bdcmsgcoll.
READ TABLE i_bdcmsgcoll INTO wa_bdcmsgcoll INDEX l_lines_im.
To capture success and error messages in BDC.
CALL FUNCTION 'FORMAT_MESSAGE' "#EC *
EXPORTING
id = wa_bdcmsgcoll-msgid
lang = wa_bdcmsgcoll-msgspra
no = wa_bdcmsgcoll-msgnr
v1 = wa_bdcmsgcoll-msgv1
v2 = wa_bdcmsgcoll-msgv2
v3 = wa_bdcmsgcoll-msgv3
v4 = wa_bdcmsgcoll-msgv4
IMPORTING
msg = wa_error-message
EXCEPTIONS
not_found = 1
OTHERS = 2.
IF sy-subrc <> 0.
ENDIF.
ELSE.
WRITE: text-111 COLOR 7.
ENDIF.
CLEAR: wa_final.
REFRESH i_bdcdata.
ENDLOOP.
ENDFORM. "f_passbdc_va02
*& Form bdc_field
text
-->P_FNAM text
-->P_FVAL text
FORM bdc_field USING p_fnam TYPE any
p_fval TYPE any.
CLEAR wa_bdcdata.
Populate the Field Name
wa_bdcdata-fnam = p_fnam.
Populate the field value
wa_bdcdata-fval = p_fval.
APPEND wa_bdcdata TO i_bdcdata.
ENDFORM. "f_bdc_field
*& Form f_sessions_vl02
text
FORM f_sessions_vl02 .
DATA: l_sindex TYPE sy-tabix VALUE 1,
l_eindex TYPE sy-tabix,
l_flag TYPE c VALUE space.
l_eindex = v_input.
SORT i_final BY matnr ASCENDING.
DO p_sess TIMES.
CALL FUNCTION 'BDC_OPEN_GROUP'
EXPORTING
client = sy-mandt
group = 'Y_VL02_NIK'
user = sy-uname
keep = c_flagx
EXCEPTIONS
client_invalid = 1
destination_invalid = 2
group_invalid = 3
group_is_locked = 4
holddate_invalid = 5
internal_error = 6
queue_error = 7
running = 8
system_lock_error = 9
user_invalid = 10
OTHERS = 11.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
CLEAR wa_final.
CLEAR: i_bdcdata[].
LOOP AT i_final INTO wa_final FROM l_sindex TO l_eindex .
IF l_flag = v_sessions.
CLEAR l_flag.
EXIT.
ENDIF.
l_flag = l_flag + 1.
CLEAR: i_bdcdata[].
perform bdc_dynpro using 'SAPLMGMM' '0060'.
perform bdc_field using 'BDC_CURSOR'
'RMMG1-MATNR'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
perform bdc_field using 'RMMG1-MATNR'
wa_final-matnr.
perform bdc_dynpro using 'SAPLMGMM' '0070'.
perform bdc_field using 'BDC_CURSOR'
'MSICHTAUSW-DYTXT(01)'.
perform bdc_field using 'BDC_OKCODE'
'=ENTR'.
perform bdc_field using 'MSICHTAUSW-KZSEL(01)'
'X'.
perform bdc_dynpro using 'SAPLMGMM' '4004'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
perform bdc_field using 'BDC_CURSOR'
'MARA-BISMT'.
perform bdc_field using 'MARA-BISMT'
wa_final-bismt.
perform bdc_dynpro using 'SAPLSPO1' '0300'.
perform bdc_field using 'BDC_OKCODE'
'=YES'.
perform bdc_transaction using 'MM02'.
perform bdc_dynpro using 'SAPLMGMM' '0060'.
perform bdc_field using 'BDC_CURSOR'
'RMMG1-MATNR'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
perform bdc_dynpro using 'SAPLMGMM' '0070'.
perform bdc_field using 'BDC_CURSOR'
'MSICHTAUSW-DYTXT(01)'.
perform bdc_field using 'BDC_OKCODE'
'=ENTR'.
perform bdc_dynpro using 'SAPLMGMM' '4004'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
perform bdc_field using 'BDC_CURSOR'
'RMMG1-MATNR'.
perform bdc_dynpro using 'SAPLSPO1' '0300'.
perform bdc_field using 'BDC_OKCODE'
'=YES'.
perform bdc_transaction using 'MM03'.
l_sindex = l_sindex + 1.
ENDLOOP.
CALL FUNCTION 'BDC_CLOSE_GROUP'
EXCEPTIONS
not_open = 1
queue_error = 2
OTHERS = 3.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
ENDDO.
ENDFORM. " f_sessions_vl02
*& Form f_report_header
FORM f_report_header .
FORMAT COLOR COL_HEADING INTENSIFIED ON.
ULINE.
text-201 - Company: Carrier
text-102- Batch Data Communication.
text-202 - System: SAP
WRITE: /1 sy-vline,
3 text-201,
50 text-102,
100 text-202,
AT sy-linsz sy-vline.
text-203 - Program:
text-204 - Date/Time:
WRITE: /1 sy-vline,
3 text-203, sy-repid ,
100 text-204,sy-datum ,c_slash, sy-uzeit,
AT sy-linsz sy-vline.
text-205 - User ID:
text-206 - Page:
WRITE: /1 sy-vline,
3 text-205, sy-uname,
100 text-206, sy-pagno,
AT sy-linsz sy-vline.
FORMAT COLOR OFF.
ULINE.
ENDFORM. " f_report_header
FORM bdc_transaction USING tcode.
CALL FUNCTION 'BDC_INSERT'
EXPORTING
tcode = tcode
TABLES
dynprotab = i_bdcdata
EXCEPTIONS
internal_error = 1
not_open = 2
queue_error = 3
tcode_invalid = 4
printing_invalid = 5
posting_invalid = 6
OTHERS = 7.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ELSE.
WRITE: / text-109 ,wa_final-matnr,
text-110 .
ENDIF.
ENDFORM. "bdc_transaction -
Adding the field in the internal table based on another field
Hi all,
I am Creating a Function module with three fields (HKONT,EBELN,DMBTR) in the output internal table(ITAB)
My Requirement is that as soon as the value of the HKONT in the internal table changes, i need to sum the DMBTR field values and should pass into a variable(v_sum).
ON CHANGE OF seems to me Obsolete.
Please help me in doing this.
Thanks
AjayHI,
Use control break event . AT END OF.
loop at ITAB.
V_DMBTR = V_DMBTR + ITAB-DMBTR.
at end of HKONT.
v_sum = V_DMBTR.
clear : V_DMBTR.
endat.
endloop.
Regards,
Srini. -
How to get a block of data from internal table based on a criteria
Hi all,
I have some records in the internal table t_int1. I want to retrieve some set records from that table and put them all in some other table, based on a single field which is not a key. Can i use READ statement to achieve this.
Could you please let me know any simple way of doin this.
Regards,
VishnuI have some records in the internal table t_int1. I want to retrieve some set records from that table and put them all in some other table, based on a single field which is not a key. Can i use READ statement to achieve this.
Could you please let me know any simple way of doin this.
Answer :
data:
itab2 like standard table of t_int1 with header line.
Loop at t_int1.
read table t_int1 with index 1.
check ur condition----
check each line and insert it ---work out the syntax for this
IF t_int1-xyz = data1
append line of t_int1 to itab2. or try insert
cnt = cnt + 1 -
u will get no. of records added to next itab.
else.
cnt1 = cnt1 + 1 -
u will get no. of records not added to next itab.
endif.
end loop. -
Dynamic creation of internal table based on alv layout
Hi experts!!
I have the following request from my client:
I am displaying an alv report and i need to download it in txt format based on the columns showed in the current layout (i.e. if the user chooses to hide some columns, then they should not appear in the txt file ). In the alv i am using the Function Modules of the alv and not ABAP Objects.
I thought of dynamically creating the internal table, but i am not sure how to do it.
I also thaught of creating an internal table with only one field with the maximum length, but how can i check which fields are diplayed, and how can i get their values??
Please Help!!
Thank u in advance!!!
Please - no duplicate posts
Edited by: Rob Burbank on Feb 24, 2009 2:16 PMAfter call the above said function module you will get the exporting table for field catalog ie
call function 'REUSE_ALV_GRID_LAYOUT_INFO_GET'
importing
es_layout = ls_slis_layo
et_fieldcat = lt_slis_fcat
if you check the lt_slis_fcat internal table if the field are hide in the layout by the user then in this internal table check for field NO_OUT will X.
Take the fields where NO_OUT ne X
then for creating dynamic internal table
field-symbols : <ptab> type standard table.
call method cl_alv_table_create=>create_dynamic_table
exporting
it_fieldcatalog = lt_slis_fcat
importing
ep_table = i_content.
if sy-subrc = 0.
assign i_content->* to <ptab>.
else.
write: 'Error creating internal table'.
stop.
endif.
Here is the dynamic internal table
a® -
Sort Internal table based on another internal table
Hello All,
My Requirement is :
I have two internal tables itab1 and itab2. itab1 has partner_number along with some more fields/columns. Based on the partner_numbers of the itab1 i write a query to get the values for partner_last_name and central_block_flag from the table but000 and i fill these values into a new itab2.
Sort itab2 by partner_last_name and central_block.
Now how do I sort itab1 based on the sorted itab2-partner_number. I need to have itab1 sorted similar to the order in the itab2.
How do i do this?
Please let me know if you need more details.Looking forward for your support.
Regards,
Harish P MHello Micky,
Thank you for your early reply.
I have this scenario wherein i need to sort a existing internal table itab1 of type 'bapibus1006_relations' based on the 'Partner last name ' and 'Inactive/Active Flag'. These two fields are not available in this itab1 and so i need to create itab2 after a query on table but000.
Sorting itab2 is , first sort itab2 based on the 'Active flag' and then sort this itab2 again by 'Partner last name'(ascending order).
Finally when i get my sorted itab2 i would have to ensure that my objective of sorting itab1 is obtained.
I guess i sound better now.
Would be helpful if you could reply.
Regards,
Harish P M -
Loop at internal table and get the right line
Hi,
I've a table like this sorted by material1 and date.
Material 1...Date..........Material 2...Stock
A1.............01/01/08........A2..........100
A1.............01/01/07........A2..........150
B1.............01/05/08........B1..........50
B1.............01/03/07........B2..........100
B1.............01/02/07........B3..........75
I need to put in another table only the line for material1 which has the highest date.
For this example, line 1 and 3 should be selected.
Can anyone tell me how to code this??
Thanks.Hi tarick,
Try this,,
Create another internal table itab2 of type itab1 and copy all entries of itab1 to itab2.
itab2[] = itab1[].
Now delete adjacent duplicates from itab2 comparing material1.
DELETE ADJACENT DUPLICATES FROM itab2 comparing material1.
Effect
Deletes adjacent duplicate entries from the internal table itab2. If there are n duplicate entries in succession, the first entry is retained, and the following n-1 entries are deleted.
Reward Points if Helpful.
Regards,
Sachin M M
Maybe you are looking for
-
Hi, My Apple 17" LCD Studio Display has developed a problem, horizontal bands 2" wide of 1/8" horizontal pixel width "interference" lines. These become increased when playing full motion video. These artifacts are not consistent with the inverter boa
-
XML Code Displayed in solution Monitoring( Business Process Monitoring)
Hi all, when click on Business process Monitoring Tab and in Graphic tab in solution manager 4.0 , i get a page consisting of XML code.help me to get rid of this.. Anand
-
Lightroom 5, Mavericks, multiple displays
I doubt, I am the only person with this "problem" but I haven't found any discussion about it yet. I'm running LR 5 on a MBP and updated recently to Mavericks. LR5 seems to be working just fine, except for this flaw. My setup: MBP (secondary display)
-
Run Powershell Script task sequence
Hi, Anyone have good documentation on how to use the Run PowerShell Script task sequence ? Thanks
-
Deploying JSP Portlet with custom taglib?
Hi. I have deployed a simple jsp portlet to Oracle 9iAS (with JDeveloper), and it works otherwise fine, but it can find the taglibrary i'm using. I've tried using these two formats, but neither one works. <%@ taglib uri="/myurl" prefix="z" %> <%@ tag