Using field symbol on export parameter
HI All,
I am using this logic In few methods of mine and I wonder if there is option the create one method
and every time that I need it just call it.
The issue is that <lt_output> is not assign yet (this need to happen in the method itself )so And I need to export it
and if I am creating method with exporting field type any I put the field symbol there I am getting dump.
Any idea ?
ASSIGN COMPONENT lv_table_out
OF STRUCTURE is_response TO <lt_output>.
IF sy-subrc <> 0.
READ TABLE it_map INTO ls_map INDEX 1.
lv_out = ls_map-left.
ASSIGN COMPONENT lv_out
OF STRUCTURE is_response TO <lt_output>.
ENDIF.
Best regards
Joy
Hi,
Ok, then you will have to use a data object to reference your field symbol and use a returning parameter I guess:
DATA: lo_data TYPE REF TO data.
FIELD-SYMBOLS: <lt_output> TYPE ANY.
CLASS lcl_main DEFINITION.
PUBLIC SECTION.
CLASS-METHODS: get RETURNING value(r_val) TYPE REF TO data.
ENDCLASS.
CLASS lcl_main IMPLEMENTATION.
METHOD get.
FIELD-SYMBOLS <fs> TYPE ANY.
ASSIGN COMPONENT 1 OF STRUCTURE is_response TO <fs>.
GET REFERENCE OF <fs> INTO r_val.
ENDMETHOD. "get
ENDCLASS.
START-OF-SELECTION.
lo_data = lcl_main=>get( ).
ASSIGN lo_data->* TO <lt_output>.
Kr,
m.
Edited by: Manu D'Haeyer on Oct 5, 2011 2:42 PM
Similar Messages
-
Using Field-Symbols in a user exit to change the importing parameter
Please don't ask why but I need to use a user exit, changing the importing parameter. I decided that I could do this using field-symbols.
Please excuse my ignorance but I have never used field symbols for something such as this.
Here is my goal: Loop through an internal table (im_document-item). When I find what I need I want to make a change to this line (not so hard if I am looping into a field symbol) and also append a line to the end of the table im_document-item.
I have the following so far:
DATA: wa_item TYPE accit,
wa_item_out type ACCIT_SUB.
FIELD-SYMBOLS: <document> type acc_document,
<accit> TYPE ACCIT.
LOOP AT im_document-item ASSIGNING <accit> where saknr = '0000211000'.
* Modify the curent line
wa_item = <accit>
* Append a new line into table im_document-item.
ENDLOOP.
How can I use field-symbols to append a line to this table? Please note that the table in question (im_document-item) is an importing only parameter.
Regards,
Davisthat will allow me to append an initial line with <accit> pointing to the line. Therefore I just have to modify <accit> and the new line will then have my changes?
Yep, that is exactly it. So after the APPEND statement, simply fill the fields of the <accit>.
append initial line to im_document-item ASSIGNING <accit>.
<accit>-field1 = 'Blah'.
<accit>-field2 = 'Blah'.
Regards,
Rich Heilman -
Field-Symbols as Method Parameter
Hi all,
is there a way to create a field symbol within a method and export this field-symbol directly as a method parameter?
The problem is that we can't pass a field symbol as method parameter unless it's assigned, but we would like to assign the field symbol within a method and give the result back to the calling program.
We have managed to create a field symbol within the method and give back the result as a reference (we used the type ANY).
We would like to pass the result field-symbol directly as a Method parameter.
Any ideas?
Best regards DominikHi all,
thanks for you help. I managed to do the method calls with reference parameters but I'd like to do it with fieldsymbols instead.
Your suggentions for field-symbold worked, but I could use them only with primitive datatypes.
In my requirements the table must be created within the method, so the caller doesn't know the tablestructure.
If a dummy table is assigned to the field-symbol before the call, the error "Two internal tables are neither compatible nor convertible" is produced.
Is there a solution?
Thanks in advance
Dominik
class ZZX0_CL_TEST definition
public
final
create public .
public section.
class-methods FIELD_SYMBOLS_TAB_TEST
changing
!FS type ANY .
METHOD FIELD_SYMBOLS_TAB_TEST .
DATA: it_t000 TYPE TABLE OF t000.
FIELD-SYMBOLS <field_symbol> TYPE ANY TABLE.
ASSIGN it_t000 TO <field_symbol>.
fs = <field_symbol>.
EXIT.
ENDMETHOD.
REPORT zzx0_mini.
DATA: it_mara TYPE TABLE OF mara.
START-OF-SELECTION.
* Tabellen test
FIELD-SYMBOLS: <fs> TYPE STANDARD TABLE.
ASSIGN it_mara TO <fs>.
* ASSIGN it_t000 TO <fs>.
CALL METHOD zzx0_cl_test=>field_symbols_tab_test
CHANGING
fs = <fs>.
EXIT. -
Modify DB by single field using Field Symbol
Hi,
please help me ,actually i have not use the field symbol in any object. i have one requirement ,i have to modify the DB by field STATUS using Field symbol ,
I am sending u my code so please help me how can i modify DB using field symbol..
gw_msg3_status1 = k_status1 .
LOOP AT gi_msg3 INTO gs_msg3.
gs_msg3-status = gw_msg3_status1 .
gs_msg3-issue = lw_issuno.
MODIFY gi_msg3 FROM gs_msg3 TRANSPORTING status.
MODIFY gi_msg3 INDEX sy-tabix FROM gs_msg3 TRANSPORTING issue status.
ENDLOOP.
Thanks & Regards,
Meenakshiperform dboperation_table using 'SET' 'BIRTHDT' '=' <fs>.
perform dboperation_table using 'WHERE' 'PARTNER' '=' <fs>
perform dboperation_update using 'BUT000'.
form dboperation_table
using p_type
p_var1
p_var2
p_var3.
data: t_l type cmst_str_data.
data: d_cx_root type ref to cx_root,
d_text type string.
try.
clear t_l.
if p_var3 is not initial.
t_l = p_var3.
condense t_l.
concatenate '''' t_l '''' into t_l.
endif.
concatenate p_var1 p_var2 t_l into t_l
separated by space.
case p_type.
when 'SET'. append t_l to g_s_t.
when 'WHERE'. append t_l to g_w_t.
endcase.
catch cx_root into d_cx_root.
d_text = d_cx_root->get_text( ).
message a398(00) with d_text.
endtry.
endform. "DBOPERATION_table
form dboperation_update
using p_tabname type zdboperation-tabname.
data: tabname type bus_table.
data: d_cx_root type ref to cx_root,
d_text type string.
try.
tabname-tabname = p_tabname.
call function 'ZDBOPERATION_UPDATE'
in update task
exporting
tabname = tabname
tables
where_table = g_w_t
set_table = g_s_t.
catch cx_root into d_cx_root.
d_text = d_cx_root->get_text( ).
message a398(00) with d_text.
endtry.
endform. "DBOPERATION_update
Hope it will help you.
Regards,
Madan. -
Perform setting OOP ALV for multiple reports using Field Symbols
Hi, Abapers ... i try to write a programme which using ONE oop ALV but 2 different structure internal table. the last result should be 2 radio button. first button is r_wbs and 2ns r_kpi. r_wbs will display 4 column answer and r_kpi will display 10 columns answer with different column name. i successfully implemented using FIELDS SYMBOLS but the problems i failed to perform customized setting forALV (report's tittle, column name, different layout etc) for 2 different reports. this is the programme. Please Give Opinion, simple example will be more helpful. Thanks You Very Much
*&this report experimental how to print into ONE alv
*&with 2 diffrent structure internal table
REPORT zfiroopalv.
SELECTION-SCREEN BEGIN OF BLOCK mode WITH FRAME TITLE text-002.
PARAMETERS r_wbs RADIOBUTTON GROUP mode DEFAULT 'X'.
PARAMETERS r_kpi RADIOBUTTON GROUP mode.
SELECTION-SCREEN END OF BLOCK mode.
CLASS lcl_main DEFINITION.
PUBLIC SECTION.
CLASS-DATA: md_wbs TYPE c LENGTH 1.
METHODS: process,
write.
DATA: mdo_data TYPE REF TO data.
TYPES: BEGIN OF st_wbs,
rsnum TYPE zmeime002a-rsnum,
rspos TYPE zmeime002a-rspos,
a TYPE zmmgitab01-menge,
b TYPE zmeime002a-bdmng,
c TYPE zmeime002a-bdmng,
d TYPE zmeime002a-bdmng,
e TYPE zmeime002a-bdmng,
f TYPE zmmgitab01-menge,
g TYPE zmmgitab01-menge,
END OF st_wbs.
TYPES: BEGIN OF st_kpi,
regio TYPE zmeime002a-regio,
gsber TYPE zmeime002a-gsber,
gtext TYPE zmeime002a-gtext,
x TYPE zmmgitab01-menge,
y TYPE zmmgitab01-menge,
z TYPE zmmgitab01-menge,
END OF st_kpi.
CLASS-DATA: it_wbs TYPE TABLE OF st_wbs,
wa_wbs LIKE LINE OF it_wbs.
CLASS-DATA: it_kpi TYPE TABLE OF st_kpi,
wa_kpi LIKE LINE OF it_kpi.
PRIVATE SECTION.
DATA: set_display_setting TYPE REF TO cl_salv_table.
DATA: display_settings TYPE REF TO cl_salv_display_settings.
DATA: salv_table TYPE REF TO cl_salv_table.
DATA: error TYPE REF TO cx_root.
DATA: errtext TYPE string.
ENDCLASS.
CLASS lcl_kpi DEFINITION INHERITING FROM lcl_main.
PUBLIC SECTION.
METHODS: process_kpi.
PRIVATE SECTION.
ENDCLASS.
* C.L.A.S.S lcl_main D.E.F.I.N.I.T.I.O.N
CLASS lcl_wbs DEFINITION INHERITING FROM lcl_main.
PUBLIC SECTION.
METHODS: process_wbs.
PRIVATE SECTION.
ENDCLASS.
* m.a.i.n. .p.r.o.g.r.a.m.
START-OF-SELECTION.
DATA: o_main TYPE REF TO lcl_main.
DATA: p_wbs TYPE c.
CREATE OBJECT o_main.
CASE 'X'.
WHEN r_wbs.
o_main->md_wbs = 'X'.
WHEN r_kpi.
o_main->md_wbs = ' '.
ENDCASE.
o_main->process( ).
o_main->write( ).
CLASS lcl_main IMPLEMENTATION.
*ENDMETHOD.
METHOD process. " NOTE: public method
DATA: o_main TYPE REF TO lcl_main,
o_wbs TYPE REF TO lcl_wbs,
o_kpi TYPE REF TO lcl_kpi.
CREATE OBJECT: o_wbs,o_kpi.
IF ( me->md_wbs = 'X' ).
CALL METHOD o_wbs->process_wbs( ). " NOTE: private method
GET REFERENCE OF me->it_wbs INTO me->mdo_data.
ELSE.
CALL METHOD o_kpi->process_kpi( ). " NOTE: private method
GET REFERENCE OF me->it_kpi INTO me->mdo_data.
ENDIF.
ENDMETHOD.
METHOD write.
FIELD-SYMBOLS:
<lt_outtab> TYPE table.
ASSIGN me->mdo_data->* TO <lt_outtab>.
cl_salv_table=>factory(
EXPORTING
list_display = if_salv_c_bool_sap=>false
IMPORTING
r_salv_table = salv_table
CHANGING
t_table = <lt_outtab>
salv_table->display( ).
ENDMETHOD.
ENDCLASS.
CLASS lcl_kpi IMPLEMENTATION.
METHOD process_kpi.
*********** run some select statement into it_kpi*******
ENDMETHOD.
ENDCLASS.
CLASS lcl_wbs IMPLEMENTATION.
METHOD process_wbs.
*********** run some select statement into it_wbs*******
ENDMETHOD.
ENDCLASS.Hi,
I had similar requirement wherein I was supposed to display different data using 2 different internal tables on a subscreen area.
The screen consists of two parts: 1) selection-screen with few input fields and two buttons 2) Subscreen area where the report need to be displayed. This report is displayed based on the button that the user is selecting. For this I have done the following things:
1. Capture the sy-ucomm when user is clicking on any of the two buttons in PAI. Then perform data fetch operation.
MODULE USER_COMMAND_9003 INPUT.
CASE OK_CODE.
WHEN 'DETAIL'.
GV_RPT = OK_CODE.
PERFORM F_GET_DETAIL_DATA.
WHEN 'REPORT'.
GV_RPT = OK_CODE.
PERFORM F_GET_REPT_DATA.
ENDCASE.
ENDMODULE. " USER_COMMAND_9003 INPUT
2. Declare two different ALV's with the fieldcat similar to 2 internal tables respectively. Use the above sy-ucomm PBO to call appropriate ALV.
MODULE DISPLAY_ALV OUTPUT.
IF GV_RPT EQ 'DETAIL'.
PERFORM F_FIELDCAT_DETAIL.
PERFORM F_LAYOUT_DETAIL.
PERFORM F_EXCLUDE_TOOLBAR_DETAIL.
PERFORM F_DISPLAY_ALV_DETAIL.
ELSEIF GV_RPT EQ 'REPORT'.
PERFORM F_FIELDCAT_REPT.
PERFORM F_LAYOUT_REPT.
PERFORM F_EXCLUDE_TOOLBAR_REPT.
PERFORM F_DISPLAY_ALV_REPT.
ENDIF.
ENDMODULE. " DISPLAY_ALV OUTPUT
3. Before displaying ALV you need to free the container and ALV.
FORM F_DISPLAY_ALV_DETAIL .
IF GC_CONTAINER_ES IS NOT INITIAL.
CALL METHOD GC_CONTAINER_ES->FREE
EXCEPTIONS
CNTL_ERROR = 1
CNTL_SYSTEM_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.
ENDIF.
IF GC_ALV_GRID_ES IS NOT INITIAL.
CALL METHOD GC_ALV_GRID_ES->FREE
EXCEPTIONS
CNTL_ERROR = 1
CNTL_SYSTEM_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.
ENDIF.
IF GC_CONTAINER_TB IS NOT INITIAL.
CALL METHOD GC_CONTAINER_TB->FREE
EXCEPTIONS
CNTL_ERROR = 1
CNTL_SYSTEM_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.
ENDIF.
IF GC_ALV_GRID_TB IS NOT INITIAL.
CALL METHOD GC_ALV_GRID_TB->FREE
EXCEPTIONS
CNTL_ERROR = 1
CNTL_SYSTEM_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.
ENDIF.
CREATE OBJECT GC_CONTAINER_ES
EXPORTING
CONTAINER_NAME = 'CC_9003'
EXCEPTIONS
CNTL_ERROR = 1
CNTL_SYSTEM_ERROR = 2
CREATE_ERROR = 3
LIFETIME_ERROR = 4
LIFETIME_DYNPRO_DYNPRO_LINK = 5
OTHERS = 6.
CREATE OBJECT GC_ALV_GRID_ES
EXPORTING
I_PARENT = GC_CONTAINER_ES
EXCEPTIONS
ERROR_CNTL_CREATE = 1
ERROR_CNTL_INIT = 2
ERROR_CNTL_LINK = 3
ERROR_DP_CREATE = 4
OTHERS = 5.
CALL METHOD GC_ALV_GRID_ES->SET_TABLE_FOR_FIRST_DISPLAY
EXPORTING
IS_LAYOUT = GS_LAYOUT_ES
IT_TOOLBAR_EXCLUDING = GT_TOOLBAR_ES
CHANGING
IT_OUTTAB = GT_ES_REPT
IT_FIELDCATALOG = GT_FIELDCAT_ES
EXCEPTIONS
INVALID_PARAMETER_COMBINATION = 1
PROGRAM_ERROR = 2
TOO_MANY_LINES = 3
OTHERS = 4.
ENDFORM. " F_DISPLAY_ALV_DETAIL
Similarly define the FORM F_DISPLAY_ALV_REPT.
Hope this will be useful for you. If you have any more queries let me know. -
Problem in using Field Symbols in HIDE statement
Hi All,
I am working in an Upgrade project ( from 4.6B to ECC 5.0 ). In a program I found few warnings on HIDE statement because they have used Field Symbols in HIDE statement.
The warning is " HIDE on a field symbol is dangerous, but the formal parameter "" is not ".
and the piece of code is
SET EXTENDED CHECK OFF.
HIDE: flg_pick_up, <s1>, <s2>, <s3>, <s4>, <s5>, z_feld_ind.
CLEAR flg_pick_up.
SET EXTENDED CHECK ON.
all the field symbols are of type ANY. SO can any one help in removing those warnings.
Please reply me as soon as possible.
With Regards,
Amarnath SinganamalaHi amarnath,
1. Why do u want to remove
the warning ?
2. This warning (and not an error)
is a GENUINE warning,
which the system wants the user to make aware of.
3. By doing some xyz,
even if u may be able to hide the warning,
the warning may be hidden (for display purpose only),
but,
the warning will still be there inside the system.
4. I think u should ignore the warning,
(if there are no other repurcussions).
regards,
amit m. -
Re: Problem in ALV reports using Field symbols
Hi Friends,
Can you tell me how to convert a normal report using field symbols into ALV report
can ypu please suggest me any solutions.I am sending the code along with this mail.
Regards,
Dinesh
<b>Coding:</b>
*& Report YSDBTEMP *
REPORT YSDBTEMP .
tables: ekko , ekpo .
TYPE-POOLS: SLIS.
*Internal Table Declaration
data: begin of line ,
ebeln like ekko-ebeln , "Purchasing Document No.
bedat like ekko-bedat , "Purchasing Document Date
matnr like ekpo-matnr , "Material No.
netwr like ekpo-netwr , "Net Order Value in PO Currancy
meins like ekpo-meins , "UOM
change like ekpo-menge ,
end of line .
*Internal table Declaration
DATA: IT_final like table of line with header line.
DATA : FIELDCATALOG TYPE SLIS_T_FIELDCAT_ALV with header line.
DATA : V_REPID TYPE SYREPID.
DATA : IT_LISTHEADER TYPE SLIS_T_LISTHEADER.
data : i_layout type slis_layout_alv .
Header for Main Grid Display
data:i_header1 type slis_t_listheader with header line.
Header for Interactive Report Display
data:i_header2 type slis_t_listheader with header line.
*Field Symbol declaration.
FIELD-SYMBOLS: <FS> type any table.
**select option Declaration
selection-screen begin of block block.
select-options: s_ebeln for ekko-ebeln .
selection-screen end of block block .
start-of-selection.
perform get_data.
perform field_cat.
perform layout using i_layout .
perform grid_display .
*& Form get_data
text
--> p1 text
<-- p2 text
FORM get_data .
SELECT EKKO~EBELN
EKKO~BEDAT
EKPO~EBELP
EKPO~MATNR
EKPO~NETWR
EKPO~MEINS
EKPO~MENGE
EKPO~BPRME
INTO CORRESPONDING FIELDS OF table IT_FINAL
FROM EKKO INNER JOIN EKPO ON EKKOEBELN = EKPOEBELN
WHERE EKKO~EBELN IN S_EBELN.
ENDFORM. " get_data
*& Form field_cat
text
--> p1 text
<-- p2 text
FORM field_cat .
fieldcatalog-fieldname = 'EBELN'.
fieldcatalog-seltext_m = 'Purchase Order No'.
fieldcatalog-col_pos = 1.
append fieldcatalog .
clear fieldcatalog.
fieldcatalog-fieldname = 'BEDAT'.
fieldcatalog-seltext_m = 'Purchasing Document Date'.
fieldcatalog-col_pos = 2.
append fieldcatalog .
clear fieldcatalog.
fieldcatalog-fieldname = 'MATNR'.
fieldcatalog-seltext_m = 'Material No'.
fieldcatalog-col_pos = 3.
append fieldcatalog .
clear fieldcatalog.
fieldcatalog-fieldname = 'MATNR'.
fieldcatalog-seltext_m = 'Net order'.
fieldcatalog-col_pos = 4.
append fieldcatalog .
clear fieldcatalog.
ENDFORM. " field_cat
*& Form layout
text
-->P_I_LAYOUT text
FORM layout USING P_I_LAYOUT.
i_layout-lights_tabname = 'IT_FINAL'.
i_layout-box_tabname = 'IT_FINAL'.
ENDFORM. " layout
*& Form grid_display
text
--> p1 text
<-- p2 text
FORM grid_display .
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM = SY-REPID
I_CALLBACK_PF_STATUS_SET = 'SET_PO_PF_STATUS'
I_CALLBACK_USER_COMMAND = 'USER_COMMAND'
IS_LAYOUT = I_LAYOUT
IT_FIELDCAT = FIELDCATALOG[]
*IT_EVENTS = I_EVENT[]
TABLES
t_outtab = <fs>.
endform.Hi,
This is one sample program,
Check this.
I hope it is helpful to you.
TABLES : zeastable_02,zeastable_04.
TYPE-POOLS : slis.
TYPES : BEGIN OF fieldst,
name LIKE zeastable_02-name,
znum LIKE zeastable_02-znum,
empno LIKE zeastable_04-empno,
zempsalary LIKE zeastable_04-zempsalary,
END OF fieldst.
DATA itab TYPE TABLE OF fieldst WITH HEADER LINE.
DATA: w_report_id LIKE sy-repid. "Program name
DATA: w_title TYPE lvc_title VALUE 'Assignment 1 in ALV'.
DATA: w_layout TYPE slis_layout_alv. "Layout setup
DATA: w_fieldcat TYPE slis_t_fieldcat_alv. "Field Catlog
START-OF-SELECTION.
SELECT-OPTIONS employee FOR zeastable_04-empno.
SELECT zeastable_02name zeastable_02znum
zeastable_04empno zeastable_04zempsalary
INTO CORRESPONDING FIELDS OF TABLE itab FROM
zeastable_02 INNER JOIN zeastable_04 ON
zeastable_02name = zeastable_04name
WHERE zeastable_04~empno IN employee.
w_report_id = sy-repid.
PERFORM i_layout CHANGING w_layout.
PERFORM i_fieldcat CHANGING w_fieldcat.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = 'ZEASALV_04'
i_grid_title = w_title
is_layout = w_layout
it_fieldcat = w_fieldcat
i_save = 'A'
TABLES
t_outtab = itab
EXCEPTIONS
program_error = 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.
PERFORM i_layout CHANGING w_layout.
PERFORM i_fieldcat CHANGING w_fieldcat.
*& Form i_layout
text
<--P_W_LAYOUT text
form i_layout changing p_w_layout.
clear w_layout.
w_layout-colwidth_optimize = 'X'.
w_layout-edit = ' '.
endform. " i_layout
*& Form i_fieldcat
text
<--P_W_FEILDCAT text
form i_fieldcat changing p_w_feildcat.
data: l_line_fieldcat type slis_fieldcat_alv.
clear l_line_fieldcat.
l_line_fieldcat-fieldname = 'NAME'.
l_line_fieldcat-ref_tabname = 'itab'.
l_line_fieldcat-seltext_m = 'NAME'.
l_line_fieldcat-key = 'X'.
append l_line_fieldcat to w_fieldcat.
clear l_line_fieldcat.
l_line_fieldcat-fieldname = 'ZNUM'.
l_line_fieldcat-ref_tabname = 'itab'.
l_line_fieldcat-seltext_m = 'NUMBER'.
l_line_fieldcat-key = 'X'.
append l_line_fieldcat to w_fieldcat.
clear l_line_fieldcat.
l_line_fieldcat-fieldname = 'EMPNO'.
l_line_fieldcat-ref_tabname = 'itab'.
l_line_fieldcat-seltext_m = 'EMPLNUM'.
*l_line_fieldcat-key = 'X'.
append l_line_fieldcat to w_fieldcat.
clear l_line_fieldcat.
l_line_fieldcat-fieldname = 'ZEMPSALARY'.
l_line_fieldcat-ref_tabname = 'itab'.
l_line_fieldcat-seltext_m = 'SALARY'.
*l_line_fieldcat-key = 'X'.
append l_line_fieldcat to w_fieldcat.
endform. " i_fieldcat
Reward for useful answers. -
How to create field catalog using field-symbols in normal alv report?
hi all,
how to create field catalog using field-symbols in normal alv report? i.e, using function modules...reuse_alv_list_display/grid_display?
regards,
jackHI
LIKE THIS
TYPE-POOLS : slis.
DATA : t_fieldcat TYPE slis_t_fieldcat_alv,
st_fieldcat TYPE slis_fieldcat_alv.
st_fieldcat-fieldname = 'STATUS'.
st_fieldcat-seltext_l = 'STATUS INDICATOR'.
st_fieldcat-outputlen = 17.
APPEND st_fieldcat TO t_fieldcat.
CLEAR st_fieldcat.
st_fieldcat-fieldname = 'VBELN'.
st_fieldcat-do_sum = ' '.
st_fieldcat-seltext_l = 'Sales Document No.'.
st_fieldcat-outputlen = 10.
APPEND st_fieldcat TO t_fieldcat.
CLEAR st_fieldcat.
st_fieldcat-fieldname = 'AUDAT'.
st_fieldcat-do_sum = ' '.
st_fieldcat-seltext_l = 'Document Date'.
st_fieldcat-outputlen = 10.
APPEND st_fieldcat TO t_fieldcat.
CLEAR st_fieldcat.
st_fieldcat-fieldname = 'VBTYP'.
st_fieldcat-do_sum = ' '.
st_fieldcat-seltext_l = 'Document Type'.
st_fieldcat-outputlen = 4.
APPEND st_fieldcat TO t_fieldcat.
CLEAR st_fieldcat.
st_fieldcat-fieldname = 'AUART'.
st_fieldcat-do_sum = ' '.
st_fieldcat-seltext_l = 'Category'.
st_fieldcat-outputlen = 1.
APPEND st_fieldcat TO t_fieldcat.
CLEAR st_fieldcat.
st_fieldcat-fieldname = 'AUGRU'.
st_fieldcat-do_sum = ' '.
st_fieldcat-seltext_l = 'Reason'.
st_fieldcat-outputlen = 3.
APPEND st_fieldcat TO t_fieldcat.
CLEAR st_fieldcat.
st_fieldcat-fieldname = 'NETWR'.
st_fieldcat-do_sum = 'X'.
st_fieldcat-seltext_l = 'Net Amount'.
st_fieldcat-outputlen = 15.
APPEND st_fieldcat TO t_fieldcat.
CLEAR st_fieldcat.
st_fieldcat-fieldname = 'WAERK'.
st_fieldcat-do_sum = ' '.
st_fieldcat-seltext_l = 'Unit'.
st_fieldcat-outputlen = 5.
APPEND st_fieldcat TO t_fieldcat.
CLEAR st_fieldcat.
*sortinfo
st_sort-fieldname = 'AUART'.
st_sort-up = 'X'.
st_sort-subtot = 'X'.
APPEND st_sort TO t_sort.
CLEAR st_sort.
st_sort-fieldname = 'VBTYP'.
st_sort-up = 'X'.
st_sort-subtot = ' '.
APPEND st_sort TO t_sort.
CLEAR st_sort.
st_sort-fieldname = 'WAERK'.
st_sort-up = 'X'.
st_sort-subtot = 'X'.
APPEND st_sort TO t_sort.
CLEAR st_sort.
st_sort-fieldname = 'VBELN'.
st_sort-up = ' '.
st_sort-subtot = 'X'.
APPEND st_sort TO t_sort.
CLEAR st_sort.
CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
EXPORTING
i_list_type = 0
IMPORTING
et_events = it_eventcat
EXCEPTIONS
list_type_wrong = 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.
IF grid = 'X'.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_INTERFACE_CHECK = ' '
I_BYPASSING_BUFFER = ' '
I_BUFFER_ACTIVE = ' '
i_callback_program = g_program
I_CALLBACK_PF_STATUS_SET = 'SET_PF_STATUS'
I_CALLBACK_USER_COMMAND = ' '
I_CALLBACK_TOP_OF_PAGE = 'TOP_OF_PAGE'
I_CALLBACK_HTML_TOP_OF_PAGE = ' '
I_CALLBACK_HTML_END_OF_LIST = ' '
I_STRUCTURE_NAME =
I_BACKGROUND_ID = ' '
I_GRID_TITLE =
I_GRID_SETTINGS =
IS_LAYOUT =
it_fieldcat = t_fieldcat
IT_EXCLUDING =
IT_SPECIAL_GROUPS =
it_sort = t_sort
IT_FILTER =
IS_SEL_HIDE =
I_DEFAULT = 'X'
I_SAVE = ' '
IS_VARIANT =
IT_EVENTS =
IT_EVENT_EXIT =
IS_PRINT =
IS_REPREP_ID =
I_SCREEN_START_COLUMN = 0
I_SCREEN_START_LINE = 0
I_SCREEN_END_COLUMN = 0
I_SCREEN_END_LINE = 0
I_HTML_HEIGHT_TOP = 0
I_HTML_HEIGHT_END = 0
IT_ALV_GRAPHICS =
IT_HYPERLINK =
IT_ADD_FIELDCAT =
IT_EXCEPT_QINFO =
IR_SALV_FULLSCREEN_ADAPTER =
IMPORTING
E_EXIT_CAUSED_BY_CALLER =
ES_EXIT_CAUSED_BY_USER =
TABLES
t_outtab = it_final
EXCEPTIONS
program_error = 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.
REWARD IF USEFULL -
Using field symbols in OOPs programming...have ur points.
Hi all,
I want to use field symbols in OOPS programming like this...
But the system is giving me dump....help me.
START-OF-SELECTION.
CREATE OBJECT OBJ.
FIELD-SYMBOLS : <AB> TYPE ANY.
ASSIGN OBJ TO <AB>.
CALL METHOD <AB>->add
EXPORTING
a = 4
b = 6
changing
c = Z
WRITE : / Z.check the code below
TYPES: BEGIN OF t_struct,
col1 TYPE i,
col2 TYPE i,
END OF t_struct.
DATA: dref1 TYPE REF TO data,
dref2 TYPE REF TO data.
FIELD-SYMBOLS: <fs1> TYPE t_struct,
<fs2> TYPE i.
CREATE DATA dref1 TYPE t_struct.
ASSIGN dref1->* TO <fs1>.
<fs1>-col1 = 1.
<fs1>-col2 = 2.
dref2 = dref1.
ASSIGN dref2->* TO <fs2> CASTING.
WRITE / <fs2>.
GET REFERENCE OF <fs1>-col2 INTO dref2.
ASSIGN dref2->* TO <fs2>.
WRITE / <fs2>.
reward points if helpful......... -
Using field-symbols giving dump " the output area is too small. "
Hi All,
Good Afternoon.
I am creating a report using field-symbols. The purpose is :
"This development involves extracting all the fields and the entire data, of any SAP table, and download it as a ; seperator file."
For this I wrote following code:
*& Report ZTOOL
REPORT ztool1.
Tables***************************************
DATA : i_tab TYPE TABLE OF dfies WITH HEADER LINE.
Variables***************************************
DATA dref TYPE REF TO data.
FIELD-SYMBOLS <ft> TYPE ANY TABLE." with header line.
FIELD-SYMBOLS <fs> TYPE ANY .
DATA: w_heading(5000),
w_line(5000).
CONSTANTS sep TYPE c VALUE ';'.
Selection Screen*********************************
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME.
PARAMETERS : p_tab LIKE dfies-tabname OBLIGATORY.
PARAMETERS : p_file(100) TYPE c .
PARAMETERS : p_lfile(100) TYPE c .
SELECTION-SCREEN END OF BLOCK b1.
START-OF-SELECTION.
CALL FUNCTION 'GET_FIELDTAB'
EXPORTING
langu = sy-langu
ONLY = ' '
tabname = p_tab
WITHTEXT = 'X'
IMPORTING
HEADER =
RC =
TABLES
fieldtab = i_tab
EXCEPTIONS
internal_error = 1
no_texts_found = 2
table_has_no_fields = 3
table_not_activ = 4
OTHERS = 5
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
SELECT * FROM (p_tab) INTO <fs> .
endselect.
CREATE DATA dref TYPE STANDARD TABLE OF (p_tab).
ENDSELECT.
assign dref to <fs> casting.
ASSIGN dref->* TO <ft>.
SELECT & FROM (p_tab) INTO table <ft>.
OPEN DATASET p_lfile FOR INPUT IN TEXT MODE ENCODING DEFAULT.
LOOP AT i_tab.
IF sy-index = 1.
w_heading = i_tab-fieldname.
ELSE.
CONCATENATE w_heading i_tab-fieldname INTO w_heading SEPARATED BY sep.
ENDIF.
ENDLOOP.
TRANSFER w_heading TO p_lfile.
LOOP AT <ft> into <ft>.
clear w_line.
LOOP AT i_tab.
ASSIGN COMPONENT i_tab-fieldname OF STRUCTURE <ft> TO <fs>.
IF sy-index = 1.
w_line = <fs> .
ELSE.
CONCATENATE w_line <fs> into w_line SEPARATED BY sep.
ENDIF.
ENDLOOP.
TRANSFER w_line TO p_file.
ENDLOOP.
The program is executed well till the statement :
SELECT * FROM (p_tab) INTO <fs> .
endselect.
But here it gives the following dump :
"Error analysis
In an Open SQL select, the output area used t
records must be at least as wide as the datab
records are being read.
In this particular case, the database table i
but the output area is only 2 bytes wide."
Can you please help me solve this problem.
Thanks in advance.Hi Abhii,
Both are having the same number of fields.
The only problem is with the data and time (in my scenario). Here, actual length of date is 8 and maximum length is 10. and for time the actual length is 6 and maximum length is 8.
So, my work area it is taking only the actual length but not the maximum length because of this it is going to dump.
Can i have any thing which also considers the maximum length of any field at a domain level so that by work area bytes should match according to the db table byte length.
Thanks
rohith -
How to code this using FIELD SYMBOL ?
Hello All,
I never used field symbols before and I think this is where I should use field symbols in my program.
I have a selection parameter period (p_period) and based on the p_period value(XX), I need to display the HSLXX, KSLXX from table GLT0 using field symbols. Can anyboby help me?
Thanks,
Chandni ReddyRight, you can use field-symbols, here is a example.
report zrich_0002.
data: xGLT0 type GLT0 .
data: field_name(20) type c.
field-symbols: <fs> .
parameters: p_per(2) type n.
* Read a line from table
select Single * from glt0 into xglt0.
* Build the field name that you want to access
concatenate 'XGLT0-HSL' p_per into field_name.
* Assign it
assign (field_name) to <fs>.
* Write it
write:/ <fs>.
Regards,
Rich Heilman -
Dynamic internal tables using field symbols
Hello,
Is it possible to create a dynamic table where the no of fields in the internal table can be created dynamically(using field symbols).
Say sometimes internal tables with 10 fields and depending upon the requirement the fields can be dynamically increased or decreased in runtime.
Thanks.Hi,
Go through the following code....
*Data definitions
*** Tables
data: lt_data type ref to data.
data: lt_fieldcatalog type lvc_t_fcat.
*** Structure
data: ls_fieldcatalog type lvc_s_fcat.
*** Data References
data: new_line type ref to data,
fs_data type ref to data.
*** Field Symbols
field-symbols: <fs_data> type ref to data,
<fs_1> type any table,
<fs_2>,
<fs_3>.
*Populating the internal table with fieldnames required for our dynamic
*internal table
ls_fieldcatalog-fieldname = 'MANDT'.
append ls_fieldcatalog to lt_fieldcatalog.
ls_fieldcatalog-fieldname = 'CARRID'. "Fieldname
ls_fieldcatalog-inttype = 'C'. "Internal Type C-> Character
append ls_fieldcatalog to lt_fieldcatalog.
ls_fieldcatalog-fieldname = 'CONNID'.
ls_fieldcatalog-inttype = 'N'.
append ls_fieldcatalog to lt_fieldcatalog.
ls_fieldcatalog-fieldname = 'FLDATE'.
ls_fieldcatalog-inttype = 'D'.
append ls_fieldcatalog to lt_fieldcatalog.
ls_fieldcatalog-fieldname = 'PRICE'.
ls_fieldcatalog-inttype = 'P'.
append ls_fieldcatalog to lt_fieldcatalog.
ls_fieldcatalog-fieldname = 'CURRENCY'.
ls_fieldcatalog-inttype = 'C'.
append ls_fieldcatalog to lt_fieldcatalog.
*Calling the method CREATE_DYNAMIC_TABLE
call method cl_alv_table_create=>create_dynamic_table
exporting
it_fieldcatalog = lt_fieldcatalog
importing
ep_table = fs_data
exceptions
generate_subpool_dir_full = 1
others = 2
if sy-subrc <> 0.
endif.
*Assigning Field-Symbol to our dynamic internal table
assign lt_data to <fs_data>.
*Internal Table is ready, now to put data in that table
*** So <FS_1> now points to our dynamic internal table.
assign fs_data->* to <fs_1>.
*** Next step is to create a work area for our dynamic internal table.
create data new_line like line of <fs_1>.
*** A field-symbol to access that work area
assign new_line->* to <fs_2>.
*** And to put the data in the internal table
select
mandt
carrid
connid
fldate
price
currency
from sflight
into corresponding fields of table <fs_1>.
*** Access contents of internal table
loop at <fs_1> assigning <fs_2>.
do 5 times.
assign component sy-index of structure <fs_2> to <fs_3>.
write: <fs_3>.
enddo.
skip 1.
endloop.
top-of-page.
write:/5 'FUJITSU CONSULTING COMPANY' inverse color 6,
50 sy-datum inverse color 6,
70 sy-pagno inverse color 6.
uline.
<REMOVED BY MODERATOR>
Vijay C
Code Formatted by: Alvaro Tejada Galindo on Apr 14, 2008 1:47 PM -
How to populate one internal table from another using field symbols
Hi Gurus,
I have a problem. I have to populate one internal table (sructure t_otput) from another internal table (sructure t_from) using field symbol.
Structure for from table.
types: begin of t_from,
year(4) type c,
ww(2) type c,
site type marc-werks,
demand type i,
end of t_from.
Structure for output table.
types: begin of t_display,
title(30),
WW1(10),
WW2(10),
WW3(10),
end of t_display.
The from table looks like this:
Year | WW | Site | Demand
2005 | 1 | OR1 | 12.00
2005 | 2 | OR1 | 13.00
2005 | 3 | OR1 | 14.00
The display table which has to be populated should look like this:
Title | WW1 | WW2 | WW3
OR1 | | |
Demand | 12.00 | 13.00 | 14.00
How to populate display table using field symbol?
Please give code snippets
Thanks,
GopalGopal,
Here is the code, however I am not vary clear about the ORG1 and Demand display that you have shown in the display. I am sure with this code it should not be a big deal to tweak in whatever manner you want.
TABLES : marc.
TYPES: BEGIN OF type_display,
title(30),
ww1(10),
ww2(10),
ww3(10),
END OF type_display.
TYPES: BEGIN OF type_from,
year(4) TYPE c,
ww(2) TYPE c,
site TYPE marc-werks,
demand TYPE i,
END OF type_from.
data : t_from type table of type_from,
t_display type table of type_display.
field-symbols : <fs_from> type type_from,
<fs_display> type type_display.
data : wa_from type type_From,
wa_display type type_display.
wa_from-year = '2005'.
wa_from-ww = '1'.
wa_from-site = 'OR1'.
wa_from-demand = '12.00'.
insert wa_from into table t_from.
wa_from-year = '2005'.
wa_from-ww = '2'.
wa_from-site = 'OR1'.
wa_from-demand = '13.00'.
insert wa_from into table t_from.
wa_from-year = '2005'.
wa_from-ww = '3'.
wa_from-site = 'OR1'.
wa_from-demand = '14.00'.
insert wa_from into table t_from.
data : variable(3) type c.
field-symbols : <fs_any> type any.
break-point.
Loop at t_from assigning <fs_from>.
variable = 'WW'.
wa_display-title = <fs_from>-site.
concatenate variable <fs_from>-ww into variable.
assign component variable of structure wa_display to <fs_any>.
<fs_any> = <fs_from>-demand.
endloop.
append wa_display to t_display.
clear wa_display.
loop at t_display assigning <Fs_display>.
write :/ <fs_display>.
endloop.
Note : Please award points if this helps you.
Regards,
Ravi -
Delete row from internal table using field symbol.
Hi friends,
I created dynamic internal table using field symbol. I want to delete some data using where clause.
for example. i want to use like,
DELETE <FS> WHERE KUNNR = WA_KNA1-KUNNR.
Like the above statment it won't work. How i can use delete with where clause in field symbols.
Hope any one can help me.
Thanks and regards
Srikanth. Shi Srikanth,
I think you have to LOOP through the whole internal table and check each line and decide to delete or not:
LOOP at <itab> INTO <wa>.
ASSIGN COMPONENT 'KUNNR' OF STRUCTURE <wa> TO <field>.
CHECK <field> IS ASSIGNED.
IF <field> EQ WA_KNA1-KUNNR.
DELETE ...
ENDIF.
UNASSIGN <field>.
ENDLOOP.
hope this helps
ec -
Hi,
I am using dynamic table concepts.I am using field symbols.I need to maintain two tables of similar structure.
when i append data it will enter into both tables.when i unassign first table and reassign it ,i am getting back that data again into first table ..how to slve this problem.i need to start first table as fresh table and second table contain copy of the first table.Hi,
maybe you should clarify your problem a bit more by pasting some code and try to explain it a bit more in detail.
Roy
Maybe you are looking for
-
Sizing OLEFields and Word Document
I am having trouble sizing an Embedded OLEField so that it only takes up the screen real estate that I have available. I am using the OLEField.LinkTo() method to attach an existing Word document to the OLEField. That document is being displayed, but
-
I have been using the mapping workbench (9.0.3) against MySQL without any connection problems. I have recently upgraded to 9.0.4 and can no longer connect. I have made no changes to the classpath either in MW or in my system settings. Am I doing some
-
Still no masking ability for grad filters, etc.?
Is there any reason why there is still no way of masking areas of the graduated filter or some of the more universal editing features? Is it just because of how many people would stop buying Photoshop?
-
Setting up a Bell busines email account problem
Hello, I am having trouble setting up my Bell business email on my Playbook. I have the lastest software downloaded on my Playbook. Version 2.0.1.358. I contacted Bell support to get all the correct settings for the business email address. POP, SMTP,
-
Not really Badly Broken iPod Touch 5th Gen Pink 32GB
So i've got an iPod Touch 5th Gen Pink 32GB, No Warranty and it was damaged not really badly, It has a Dent backing near camera, Screen not working but it opened when it drops. So what should i do? does Apple will give you a refurbished one or someth