Dynamic field names in internal operations
Dear experts,
I have a period range in selection screen (peri_from and peri_to); I have to work on an internal table (defined like COSP) where I have amount1 amount2...amount16, in other words one field for each period...
I have to sum up only amounts within the period range as in selection screen...
How can I do this dynamic summation ?
Example:
peri_from = 004
peri_to = 006
Then my code must calculate:
result = amount4 + amount5 + amount6.
Thanks in advance for any useful suggestion (field symbol ?)
Bye,
Roberto
Hi roberto,
1. We have to use
a) field-symbols
b) dynamic variable name (for field1,field2)
2. Just as u want.
(just copy paste)
3. It will ask
a) from , to
b) print the sum
4.
report abc.
DATA : AMOUNT1 TYPE I,
AMOUNT2 TYPE I,
AMOUNT3 TYPE I,
AMOUNT4 TYPE I,
AMOUNT5 TYPE I.
DATA : VARNAME(30) TYPE C.
FIELD-SYMBOLS : <fs>.
DATA : CTR TYPE I.
DATA : CTRC(2) TYPE C.
DATA : TOT TYPE I.
PARAMETERS : MYFROM TYPE I DEFAULT 2.
PARAMETERS : MYTO TYPE I DEFAULT 5.
start of selection
START-OF-SELECTION.
AMOUNT1 = 1.
AMOUNT2 = 2.
AMOUNT3 = 3.
AMOUNT4 = 4.
AMOUNT5 = 5.
CTR = MYFROM - 1.
DO.
CTR = CTR + 1.
IF CTR > MYTO.
EXIT.
ENDIF.
CTRC = CTR.
CONCATENATE 'AMOUNT' CTRC INTO VARNAME.
ASSIGN (VARNAME) TO <FS>.
TOT = TOT + <FS>.
WRITE :/ <FS>.
ENDDO.
WRITE TOTAL
WRITE :/ TOT.
regards,
amit m.
Similar Messages
-
Error: Expected a field name after '.' operator
I'm trying to use a "for" loop to add an "onRelease" handler
to my symbols using the following code, but I get error that says:
Expected a field name after '.' operator. Any idea what's wrong and
how I can fix this?
for (i=1; i<10; i++) {
thumbs_mc.this["thumb"+i].onRelease = function() {
// do something
Thanks
SaeidHi, I was trying to convert my Flash 8 file to Flash Lite 1.1
and came upon an error, like this :
**Error** Scene=Scene 1, layer=ActionScript, frame=14:Line 3:
You must export your movie as Flash 5 to use this action.
globalStyleFormat.applyChanges("textFont");
**Error** Scene=Scene 1, layer=ActionScript, frame=14:Line 5:
You must export your movie as Flash 5 to use this action.
x= StartTheQuiz();
**Error** Scene=Scene 1, layer=ActionScript, frame=14:Line
23: You must export your movie as Flash 5 to use this action.
PickAnEasyQuestion();
**Error** Scene=Scene 1, layer=ActionScript, frame=14:Line
28: You must export your movie as Flash 5 to use this action.
function PickAnEasyQuestion() {
**Error** Scene=Scene 1, layer=ActionScript, frame=14:Line
96: You must export your movie as Flash 5 to use this action.
_root.Button1.onRelease = function() {
**Error** Scene=Scene 1, layer=ActionScript, frame=14:Line
100: You must export your movie as Flash 5 to use this action.
MoneyGoesUp();
**Error** Scene=Scene 1, layer=ActionScript, frame=14:Line
102: You must export your movie as Flash 5 to use this action.
WrongAnswer();
**Error** Scene=Scene 1, layer=ActionScript, frame=14:Line
106: You must export your movie as Flash 5 to use this action.
_root.Button2.onRelease = function() {
**Error** Scene=Scene 1, layer=ActionScript, frame=14:Line
110: You must export your movie as Flash 5 to use this action.
MoneyGoesUp();
**Error** Scene=Scene 1, layer=ActionScript, frame=14:Line
112: You must export your movie as Flash 5 to use this action.
WrongAnswer();
**Error** Scene=Scene 1, layer=ActionScript, frame=14:Line
116: You must export your movie as Flash 5 to use this action.
_root.Button3.onRelease = function() {
**Error** Scene=Scene 1, layer=ActionScript, frame=14:Line
120: You must export your movie as Flash 5 to use this action.
MoneyGoesUp();
**Error** Scene=Scene 1, layer=ActionScript, frame=14:Line
122: You must export your movie as Flash 5 to use this action.
WrongAnswer();
**Error** Scene=Scene 1, layer=ActionScript, frame=14:Line
126: You must export your movie as Flash 5 to use this action.
_root.Button4.onRelease = function() {
**Error** Scene=Scene 1, layer=ActionScript, frame=14:Line
130: You must export your movie as Flash 5 to use this action.
MoneyGoesUp();
**Error** Scene=Scene 1, layer=ActionScript, frame=14:Line
132: You must export your movie as Flash 5 to use this action.
WrongAnswer();
**Error** Scene=Scene 1, layer=ActionScript, frame=14:Line
137: You must export your movie as Flash 5 to use this action.
function MoneyGoesUp() {
**Error** Scene=Scene 1, layer=ActionScript, frame=14:Line
196: You must export your movie as Flash 5 to use this action.
function WrongAnswer() {
Total ActionScript Errors: 18 Reported Errors: 18
I was wondering if you know the solution to this. -
Dynamic field access in internal tables
Hi everyone.
I woulkd like to know if there is any way to identify the fields of an internal table at runtime. I'm creating a method in a class, and i would like to accept any itab as a paramter and then access the fields of that itab. I currently have the itab passing no problem using field symbols, and i am able to loop at the data, but i am unsure how to get the field names.
Any suggestions?
Thanks!Hi,
Check the code below:
REPORT ZYKTEST3 .
DATA: d_ref TYPE REF TO data,
d_ref2 TYPE REF TO data,
i_alv_cat TYPE TABLE OF lvc_s_fcat,
ls_alv_cat LIKE LINE OF i_alv_cat.
TYPES: tabname LIKE dcobjdef-name ,
fieldname LIKE dcobjdef-name,
desc LIKE dntab-fieldtext.
PARAMETER: p_tablen TYPE tabname. -
> Input table field
DATA: BEGIN OF itab OCCURS 0.
INCLUDE STRUCTURE dntab.
DATA: END OF itab.
FIELD-SYMBOLS : <f_fs> TYPE table,
<f_fs1> TYPE table,
<f_fs2> TYPE ANY,
<f_fs3> TYPE ANY,
<f_fs4> type any,
<f_field> TYPE ANY.
REFRESH itab.
CALL FUNCTION 'NAMETAB_GET' -
> Fetches the fields
EXPORTING
langu = sy-langu
tabname = p_tablen
TABLES
nametab = itab
EXCEPTIONS
no_texts_found = 1.
LOOP AT itab .
ls_alv_cat-fieldname = itab-fieldname.
ls_alv_cat-ref_table = p_tablen.
ls_alv_cat-ref_field = itab-fieldname.
ls_alv_cat-seltext = itab-fieldtext.
ls_alv_cat-reptext = itab-fieldtext.
APPEND ls_alv_cat TO i_alv_cat.
ENDLOOP.
internal table build
CALL METHOD cl_alv_table_create=>create_dynamic_table
EXPORTING
it_fieldcatalog = i_alv_cat
IMPORTING
ep_table = d_ref.
ASSIGN d_ref->* TO <f_fs>. -
> Dynamic table creation with fields of the table
DATA: l_field TYPE fieldname,
l_field1 type fieldname.
SELECT * FROM (p_tablen) INTO CORRESPONDING FIELDS OF TABLE <f_fs>.
Fetching of the data from the table
LOOP AT <f_fs> ASSIGNING <f_fs2>.
Here u can check the validations and process
ASSIGN COMPONENT 2 OF STRUCTURE <f_fs2> TO <f_fs3>.
ASSIGN COMPONENT 3 OF STRUCTURE <f_fs2> TO <f_fs4>.
IF sy-subrc = 0.
MOVE <f_fs3> TO l_field.
MOVE <f_fs4> TO l_field1.
WRITE:/1 l_field(20),
22 l_field1(10).
ENDIF.
ENDLOOP.
Regards
Kannaiah -
Dynamic field selection in internal table
hello,
I want to display the fields in the internal table dynamically.
In myReport i am giving plant as the input. On the basis of plant i want to dislpay work centres as the heading and for the particular plant i want to display the pieces for the confirmed operation of the particular work centre.
workcentre1 workcentre2 workcenter3 ...........workcentren
12 10 9 ............ 4
in my report i have to include these fields with my earlier fields
Please help.hello,
I want to display the fields in the internal table dynamically.
In myReport i am giving plant as the input. On the basis of plant i want to dislpay work centres as the heading and for the particular plant i want to display the pieces for the confirmed operation of the particular work centre.
workcentre1 workcentre2 workcenter3 ...........workcentren
12 10 9 ............ 4
in my report i have to include these fields with my earlier fields
Please help. -
Dynamic field name in an assignment statement
Greetings,
Is it possible to make the field name of an assignment dynamic?
For example if I have two text fields called P1_F1 and P1_F2. Is it possible to
do something like this?
declare
X number := 0;
begin
X := 1;
:P1_F || X = 'value1';
X := 2;
:P1_F || X = 'value2';
end;Any suggestions would be appreciated.
Thanks
LarryUse the <tt>apex_util.set_session_state</tt> API method.
-
Dynamic field names in ALV (referencing to the month)
Hi,
I have 12 fields in my ALV, named Monthly Sales 1, Monthly Sales 2 and so on until Monthly Sales 12.
Monthly Sales 12 corresponds to the current month and Monthly Sales 1 is the current month minus 11 months (in terms of the month.)
So the user has requested that instead of Monthly Sales 12, it should display M 06/2007 as the field name.
Or Monthly Sales 11 should display M 05/2007 and so on.
How can this be done?
Please help.
Points will be awarded and all responses will be greatly appreciated.
Thanks,
JohnHi,
I have done some coding for this which is as follows:
TYPE-POOLS : abap, slis.
DATA : BEGIN OF itab OCCURS 0,
month1 TYPE char2,
month2 TYPE char2,
month3 TYPE char2,
month4 TYPE char2,
month5 TYPE char2,
month6 TYPE char2,
month7 TYPE char2,
month8 TYPE char2,
month9 TYPE char2,
month10 TYPE char2,
month11 TYPE char2,
month12 TYPE char2,
month13 TYPE char2,
END OF itab.
DATA wa LIKE LINE OF itab.
DATA : it_fieldcat TYPE slis_t_fieldcat_alv WITH HEADER LINE.
DATA : is_layout TYPE slis_layout_alv.
DATA : len TYPE i VALUE 0,
text TYPE string,
date TYPE sy-datum,
index TYPE numc3.
DATA : ref_table_des TYPE REF TO cl_abap_structdescr.
DATA : l_t_fields TYPE abap_compdescr_tab.
DATA : fs_fields TYPE abap_compdescr.
*To get the fields of internal table
ref_table_des ?=
cl_abap_typedescr=>describe_by_data( wa ).
APPEND LINES OF ref_table_des->components TO l_t_fields.
DESCRIBE TABLE l_t_fields LINES len.
DO len TIMES.
index = sy-index - 1.
CLEAR date.
READ TABLE l_t_fields INTO fs_fields INDEX sy-index.
CALL FUNCTION 'CCM_GO_BACK_MONTHS'
EXPORTING
currdate = sy-datum
backmonths = index
IMPORTING
newdate = date.
CONCATENATE date4(2) date0(4) INTO text SEPARATED BY '/'.
it_fieldcat-fieldname = fs_fields-name.
it_fieldcat-tabname = 'ITAB'.
it_fieldcat-seltext_l = text.
APPEND it_fieldcat.
ENDDO.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
it_fieldcat = it_fieldcat[]
TABLES
t_outtab = itab[]
EXCEPTIONS
program_error = 1
OTHERS = 2.
I feel this is bit generic.
Copy & execute this program.
Reward if its useful.
Regards,
Sail -
Accessing dynamic field names?
I want to be able to create text fields with unique names and
set values in them within a For-loop without having to reference
the field names in the code.
Consider the following code snippet:
this.createTextField("field" + i, this.getNextHighestDepth(),
x1, y1, 250, 20);
It places a text field into a movie clip with name that is a
composite of a literal value and a variable value resulting in
names like field1, field2, etc. My question: Is there anyway to use
a composite field name to access the field properties? For example:
Can I set the text for the field using the same composite name
without having to express it as a literal field name? If I can't
then what is the point of having the composite name capability?You can drop the last question because the answer to the
prior one(s) is "yes".
this["field"+i].text = "whatever";
the bracket notation causes a string to be evaluated as an
object/instance. -
I'm creating a PDF form using iText which takes information from a webpage which has multiple order entries. On my PDF i need to loop through this list and create individual PdfFormFields. The problem is I do not know how many items are ordered. How can I create different form fields?
i.e.
for(int i=0; i<orderVector.size(); i++) {
PdfFormField qty = text.getTextField();
// each time it loops i need qty to be a different name like qty1, qty2....
// how do I accomplish this?
Thanks for you help.How can I create different form fields?You can't dynamically set variable names. But the good news is that you don't
have to.PdfFormField[] qtyArr = new PdfFormField[orderVector.size()];
for(int i = 0; i < orderVector.size(); i++) {
qtyArr[i] = text.getTextField();
}This creates just the right number of form fields, referred to as qtyArr[0], qtyArr[1], etc.
Is there some reason why you are using Vector and not ArrayList? -
AS3 - dynamic class names with *new* operator
I'm using AcrtionScript 3 and Adobe Flash 9 Public Alpha.
I have 50 movie clips in the Library that use Linkage to set
the Class name to: Img1, Img2, Img3, ..., Img50.
I have a parent class named RandImg. I want the constructor
for RandImg to randomly select one of the 50 movie clips from the
Library and display it. I could get this working by generating a
random number, and then writing a really huge switch statement to
associate each possible random number with its respective Library
Movie Clip Class name, but I would much rather do this with a
dynamic/variable class name based on the random number, such as:
var nImgChoice:Number = Math.floor( Math.random( ) * 50 ) +
1;
var mcImg:MovieClip = new [ "Img"+String(nImgChoice) ] ( );
addChild( mcImg );
Note that this used to be possible in AS 2 by doing the
following:
this.attachMovie( "Img"+String(nImgChoice) , "mcImg",
this.getNextHighestDepth());
Suggestions?
Thanks,
~JCimport flash.display.DisplayObject;
import flash.display.Sprite;
import flash.utils.getDefinitionByName;
var nImgChoice:Number = Math.floor( Math.random( ) * 50 ) +
1;
var ClassReference:Class =
getDefinitionByName("Img"+String(nImgChoice) ) as
Class;
var instance:Object = new ClassReference();
addChild(DisplayObject(instance)); -
How to dynamic field insert into intenal table?
hi friends
this is my urgent requirements .... how to dynamic field insert into internal table if it possible please tell me
thanks & regards
pauldharmaHi,
Go through this
REPORT yusmm_text1 NO STANDARD PAGE HEADING
LINE-SIZE 199.
T A B L E S
TABLES: MARA,
MAKT,
THEAD.
GLOBAL TYPE-POOLS
TYPE-POOLS : SLIS.
GLOBAL TYPES
TYPES : BEGIN OF TP_FINAL,
MATNR TYPE MARA-MATNR,
BEGRU TYPE MARA-BEGRU,
MTART TYPE MARA-MTART,
MAKTX TYPE MAKT-MAKTX,
SPRAS TYPE MAKT-SPRAS,
LTXT(2000) TYPE C ,
SRNO TYPE N ,
END OF TP_FINAL.
TYPES : BEGIN OF TP_T002,
SPRAS TYPE T002-SPRAS,
LAISO TYPE T002-LAISO,
SRNO TYPE N ,
END OF TP_T002.
TYPES : BEGIN OF TP_MARA_MAKT,
MATNR TYPE MARA-MATNR,
BEGRU TYPE MARA-BEGRU,
MTART TYPE MARA-MTART,
SPRAS TYPE MAKT-SPRAS,
MAKTX TYPE MAKT-MAKTX,
END OF TP_MARA_MAKT.
Types: BEGIN OF tp_matnr,
matnr TYPE mara-matnr,
END OF tp_matnr.
GLOBAL ELEMENTARY VARIABLES
DATA : gv_date TYPE sy-datum.
DATA : gv_repid TYPE sy-repid.
DATA : g_var1(10) TYPE C.
DATA : gv_index TYPE sy-tabix.
DATA: gv_strg TYPE string,
gv_strg1(2000) TYPE C.
DATA : gv_lang TYPE sy-langu.
DATA : g_v(3) TYPE N .
DATA : gv_lines(3) TYPE N .
DATA : gv_var(3) TYPE N .
DATA : gv_var1(3) TYPE N.
DATA: gv_str TYPE STRING.
DATA: gv_str1 TYPE STRING.
DATA : gv_li TYPE I,
gv_lit TYPE I,
gv_lin TYPE I.
DATA: g_var11(3) TYPE N,
gv_li1(3) TYPE N,
g_var2(3) TYPE N.
DATA : gv_i1 TYPE I.
DATA : gv_i TYPE I.
DATA: gl_lenght TYPE I.
GLOBAL STRUCTURES
DATA: T_NEWTABLE TYPE REF TO DATA,
T_NEWLINE TYPE REF TO DATA,
T_FLDCAT1 TYPE SLIS_T_FIELDCAT_ALV,
T_FLDCAT TYPE LVC_T_FCAT,
WA_IT_FLDCAT TYPE LVC_S_FCAT,
WA_IT_FLDCAT1 TYPE SLIS_FIELDCAT_ALV,
WA_COLNO(2) TYPE N,
WA_FLNAME(5) TYPE C,
L_LT TYPE SLIS_LAYOUT_ALV.
GLOBAL INTERNAL TABLES (WITH INCLUDE STRUCTURE)
DATA : IG_MARA_MAKT TYPE STANDARD TABLE OF TP_MARA_MAKT,
WG_MARA_MAKT TYPE TP_MARA_MAKT.
DATA : IG_T002 TYPE STANDARD TABLE OF TP_T002,
WG_T002 TYPE TP_T002.
DATA : IG_FINAL TYPE STANDARD TABLE OF TP_FINAL,
WG_FINAL TYPE TP_FINAL.
data : IG_MATNR TYPE STANDARD TABLE OF TP_MATNR WITH HEADER LINE,
WG_MATNR TYPE TP_MATNR.
DATA:BEGIN OF IG_THEAD OCCURS 0.
INCLUDE STRUCTURE THEAD .
DATA: END OF IG_THEAD.
DATA:BEGIN OF IG_TLINE OCCURS 0.
INCLUDE STRUCTURE TLINE .
DATA:END OF IG_TLINE.
FIELD-SYMBOLS
FIELD-SYMBOLS: <T_DYNTABLE> TYPE STANDARD TABLE,"Dynamic internal
"tablename
<FS_DYNTABLE>, "Field symbol to create work area
<FS_FLDVAL> TYPE ANY. " Field symbol to assign values
COMPULSORY
FIELD-SYMBOLS: <FS_DATA> TYPE REF TO DATA,
<FS_DATA1> TYPE REF TO DATA,
<FS_2> TYPE STANDARD TABLE,
<FS_22> TYPE STANDARD TABLE,
<FS_1>,
<FS_11>,
<F>,
<FA>,
<LWA_LINE_WA>,
<LWA_LINE_WA1>.
------- Create Dyn Table From FC
DATA: LT_DATA TYPE REF TO DATA,
LT_DATA1 TYPE REF TO DATA,
LWA_LINE TYPE REF TO DATA,
LWA_LINE1 TYPE REF TO DATA,
LI_FIELD_CAT TYPE LVC_T_FCAT,
LWA_FIELD_CAT TYPE LVC_S_FCAT.
PARAMETERS & SELECT-OPTIONS
SELECTION-SCREEN : BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001.
SELECT-OPTIONS : S_SPRAS FOR MAKT-SPRAS NO INTERVALS DEFAULT 'EN'
OBLIGATORY ,
S_MATNR FOR MARA-MATNR,
S_MTART FOR MARA-MTART.
PARAMETERS: GP_SIZE TYPE I DEFAULT '200'.
SELECTION-SCREEN : END OF BLOCK B1.
INITIALIZATION
INITIALIZATION.
gv_repid = sy-repid.
gv_date = sy-datum.
AT SELECTION-SCREEN
AT SELECTION-SCREEN.
IF GP_SIZE < 0.
MESSAGE E002(00).
ENDIF.
IF GP_SIZE > 50000.
MESSAGE W130(26) WITH TEXT-004.
SET CURSOR FIELD 'gp_size'.
ENDIF.
START-OF-SELECTION
START-OF-SELECTION.
PERFORM FIELDCAT.
PERFORM LAYOUT.
PERFORM DATA_FETCH.
PERFORM READ_DATA_TO_FINAL.
SORT ig_final BY matnr spras.
gv_lin = gv_li.
gv_li = gv_li - 2.
LOOP AT ig_final INTO wg_final.
ASSIGN COMPONENT 1 OF STRUCTURE <LWA_LINE_WA1> TO <FA>.
<FA> = 'Material Number'.
ASSIGN COMPONENT 2 OF STRUCTURE <LWA_LINE_WA1> TO <FA>.
<FA> = 'Authorization Group'.
g_VAR11 = wg_final-srno + 2.
gv_li1 = gv_li1 + 2.
MOVE : g_var11 TO gv_i1.
ASSIGN COMPONENT g_var11 OF STRUCTURE <LWA_LINE_WA1> TO <FA>.
<FA> = 'MatDesc'.
g_var2 = g_var11 + gv_lines.
ASSIGN COMPONENT g_var2 OF STRUCTURE <LWA_LINE_WA1> TO <FA>.
<FA> = 'BasicData'.
APPEND <LWA_LINE_WA1> TO <FS_22>.
EXIT.
ENDLOOP.
LOOP AT ig_final INTO wg_final.
AT NEW matnr.
gv_index = sy-tabix.
ASSIGN COMPONENT 1 OF STRUCTURE <LWA_LINE_WA> TO <F>.
<F> = wg_final-matnr.
ENDAT.
AT NEW MATNR.
GV_INDEX = SY-TABIX.
ASSIGN COMPONENT 1 OF STRUCTURE <LWA_LINE_WA1> TO <FA>.
<FA> = wg_final-matnr.
ENDAT.
ASSIGN COMPONENT 2 OF STRUCTURE <LWA_LINE_WA> TO <F>.
<F> = wg_final-begru.
ASSIGN COMPONENT 2 OF STRUCTURE <LWA_LINE_WA1> TO <FA>.
<FA> = wg_final-begru.
gv_var = wg_final-srno + 2.
gv_li = gv_li + 2.
MOVE : gv_var TO gv_i.
ASSIGN COMPONENT gv_var OF STRUCTURE <LWA_LINE_WA> TO <F>.
<F> = wg_final-maktx.
ASSIGN COMPONENT gv_var OF STRUCTURE <LWA_LINE_WA1> TO <FA>.
<FA> = wg_final-maktx.
gv_var1 = gv_var + gv_lines .
ASSIGN COMPONENT gv_var1 OF STRUCTURE <LWA_LINE_WA> TO <F>.
<F> = wg_final-ltxt.
ASSIGN COMPONENT gv_var1 OF STRUCTURE <LWA_LINE_WA1> TO <FA>.
<FA> = wg_final-ltxt.
AT END OF matnr.
APPEND <LWA_LINE_WA> TO <FS_2>.
CLEAR <LWA_LINE_WA>.
ENDAT.
AT END OF matnr.
APPEND <LWA_LINE_WA1> TO <FS_22>.
CLEAR <LWA_LINE_WA1>.
ENDAT.
ENDLOOP.
PERFORM display..
*& Form data_fetch
text
--> p1 text
<-- p2 text
FORM DATA_FETCH .
SELECT matnr
from mara up to gp_size rows
appending corresponding fields of table ig_matnr
where matnr in s_matnr
and mtart in s_mtart.
loop at ig_matnr.
SELECT MARA~MATNR
MARA~BEGRU
MARA~MTART
MAKT~SPRAS
MAKT~MAKTX FROM MARA INNER JOIN MAKT
ON MARAMATNR = MAKTMATNR
appending corresponding fields of TABLE ig_mara_makt UP TO GP_SIZE
ROWS
WHERE makt~spras IN s_spras
AND mara~matnr IN s_matnr
AND mara~mtart IN s_mtart
AND mara~matnr EQ ig_matnr-matnr.
endloop.
IF sy-subrc = 0.
SORT ig_mara_makt.
ENDIF.
ENDFORM. " data_fetch
*& Form read_data_to_final
text
--> p1 text
<-- p2 text
FORM READ_DATA_TO_FINAL .
LOOP AT ig_mara_makt INTO wg_mara_makt .
wg_final-MATNR = wg_mara_makt-MATNR.
wg_final-BEGRU = wg_mara_makt-BEGRU.
wg_final-MTART = wg_mara_makt-MTART.
wg_final-SPRAS = wg_mara_makt-SPRAS.
wg_final-MAKTX = wg_mara_makt-MAKTX.
READ TABLE ig_t002 INTO wg_t002 WITH KEY spras = wg_final-spras.
IF sy-subrc = 0.
wg_final-srno = wg_t002-srno.
ENDIF.
CLEAR ig_thead[].
ig_thead-TDOBJECT = 'MATERIAL'.
ig_thead-TDNAME = wg_final-matnr.
ig_thead-TDID = 'GRUN'.
ig_thead-TDSPRAS = wg_final-spras.
CALL FUNCTION 'TEXT_READ'
EXPORTING
I_HEADER = IG_THEAD
I_READONLY = 'X'
IMPORTING
E_HEADER = IG_THEAD
TABLES
T_LINES = IG_TLINE[]
EXCEPTIONS
NOTFOUND = 1.
IF sy-subrc EQ 0.
LOOP AT ig_tline.
gv_strg = ig_tline-tdline.
IF gv_strg1 <> ' '.
CONCATENATE gv_strg1 ';' gv_strg INTO gv_strg1.
ELSE.
gv_strg1 = gv_strg.
ENDIF.
ENDLOOP.
wg_final-ltxt = gv_strg1.
APPEND wg_final TO ig_final.
CLEAR wg_final.
gv_strg1 = ' '.
ELSE.
APPEND wg_final TO ig_final.
ENDIF.
ENDLOOP.
ENDFORM. " read_data_to_final
" read_data_to_final
*& Form layout
text
--> p1 text
<-- p2 text
FORM LAYOUT .
CLEAR L_LT.
L_LT-ZEBRA = 'X'.
L_LT-COLWIDTH_OPTIMIZE = 'X'.
L_LT-WINDOW_TITLEBAR = 'MATERIAL DETAILS'.
ENDFORM. " layout
*& Form fieldcat
text
--> p1 text
<-- p2 text
FORM FIELDCAT .
SELECT SPRAS
LAISO FROM t002 INTO CORRESPONDING FIELDS OF TABLE ig_t002
WHERE spras IN s_spras.
DESCRIBE TABLE ig_t002 LINES gv_lines.
LOOP AT ig_t002 INTO wg_t002.
g_v = g_v + 1.
Wg_t002-srno = g_v.
MODIFY ig_t002 FROM wg_t002 TRANSPORTING SRNO.
ENDLOOP.
LOOP AT ig_t002 INTO wg_t002.
CLEAR WA_IT_FLDCAT.
MOVE SY-INDEX TO WA_COLNO.
CONCATENATE 'MD-' wg_t002-LAISO
WA_COLNO
INTO WA_FLNAME.
WA_IT_FLDCAT-FIELDNAME = WA_FLNAME.
WA_IT_FLDCAT-DATATYPE = 'CHAR'.
WA_IT_FLDCAT-SELTEXT = WA_FLNAME.
WA_IT_FLDCAT-INTLEN = 250.
WA_IT_FLDCAT-TABNAME = '<FS_2>'.
APPEND WA_IT_FLDCAT TO T_FLDCAT.
CLEAR wg_t002.
ENDLOOP.
LOOP AT ig_t002 INTO wg_t002.
CLEAR WA_IT_FLDCAT.
MOVE SY-INDEX TO WA_COLNO.
CONCATENATE 'BD-' wg_t002-LAISO
WA_COLNO
INTO WA_FLNAME.
WA_IT_FLDCAT-FIELDNAME = WA_FLNAME.
WA_IT_FLDCAT-DATATYPE = 'CHAR'.
WA_IT_FLDCAT-SELTEXT = WA_FLNAME.
WA_IT_FLDCAT-INTLEN = 250.
WA_IT_FLDCAT-TABNAME = '<FS_2>'.
APPEND WA_IT_FLDCAT TO T_FLDCAT.
CLEAR wg_t002.
ENDLOOP.
MOVE 'MATNR' TO WA_FLNAME.
WA_IT_FLDCAT-FIELDNAME = WA_FLNAME.
WA_IT_FLDCAT-DATATYPE = 'CHAR'.
WA_IT_FLDCAT-SELTEXT = 'Material No'.
WA_IT_FLDCAT-INTLEN = 18.
WA_IT_FLDCAT-TABNAME = '<FS_2>'.
INSERT WA_IT_FLDCAT INTO T_FLDCAT INDEX 1.
MOVE 'BEGRU' TO WA_FLNAME.
WA_IT_FLDCAT-FIELDNAME = WA_FLNAME.
WA_IT_FLDCAT-DATATYPE = 'CHAR'.
WA_IT_FLDCAT-SELTEXT = 'Authorization Group'.
WA_IT_FLDCAT-INTLEN = 4.
WA_IT_FLDCAT-TABNAME = '<FS_2>'.
INSERT WA_IT_FLDCAT INTO T_FLDCAT INDEX 2.
DESCRIBE TABLE T_FLDCAT LINES gv_li.
ASSIGN LT_DATA TO <FS_DATA>.
Creating the Dynamic Internal Table
CALL METHOD CL_ALV_TABLE_CREATE=>CREATE_DYNAMIC_TABLE
EXPORTING
IT_FIELDCATALOG = T_FLDCAT " Fieldcatalogue
IMPORTING
EP_TABLE = <FS_DATA> " Dynamic Internal Table
EXCEPTIONS
GENERATE_SUBPOOL_DIR_FULL = 1
OTHERS = 2.
Assign Dyn Table To Field Sumbol
ASSIGN <FS_DATA>->* TO <FS_1>.
Assigning the Internal Table TYPE ANY to Standard internal Table
ASSIGN <FS_1> TO <FS_2>.
Creating a Workarea
CREATE DATA LWA_LINE LIKE LINE OF <FS_2> .
Assigning the Content to the workares as a Pointer
ASSIGN LWA_LINE->* TO <LWA_LINE_WA>.
LOOP AT T_FLDCAT INTO WA_IT_FLDCAT.
WA_IT_FLDCAT1-FIELDNAME = WA_IT_FLDCAT-FIELDNAME.
WA_IT_FLDCAT1-TABNAME = WA_IT_FLDCAT-TABNAME.
WA_IT_FLDCAT1-SELTEXT_L = WA_IT_FLDCAT-SELTEXT.
WA_IT_FLDCAT1-REF_TABNAME = 'MARC'.
APPEND WA_IT_FLDCAT1 TO T_FLDCAT1.
CLEAR : WA_IT_FLDCAT,WA_IT_FLDCAT1.
ENDLOOP.
ASSIGN LT_DATA1 TO <FS_DATA1>.
CALL METHOD CL_ALV_TABLE_CREATE=>CREATE_DYNAMIC_TABLE
EXPORTING
IT_FIELDCATALOG = T_FLDCAT " Fieldcatalogue
IMPORTING
EP_TABLE = <FS_DATA1> " Dynamic Internal table
EXCEPTIONS
GENERATE_SUBPOOL_DIR_FULL = 1
OTHERS = 2.
Assign Dyn Table To Field Sumbol
ASSIGN <FS_DATA1>->* TO <FS_11>.
Assigning the Internal Table TYPE ANY to Standard internal Table
ASSIGN <FS_11> TO <FS_22>.
Creating a Workarea
CREATE DATA LWA_LINE1 LIKE LINE OF <FS_22> .
Assigning the Content to the workares as a Pointer
ASSIGN LWA_LINE1->* TO <LWA_LINE_WA1>.
ENDFORM. " fieldcat
*& Form show
text
--> p1 text
<-- p2 text
FORM Display .
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_INTERFACE_CHECK = ' '
I_BYPASSING_BUFFER = ' '
I_BUFFER_ACTIVE = ' '
I_CALLBACK_PROGRAM = GV_REPID
I_CALLBACK_PF_STATUS_SET = 'PF_STATUS_SET'
I_CALLBACK_USER_COMMAND = 'USER_COMMAND'
I_CALLBACK_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 = L_LT
IT_FIELDCAT = T_FLDCAT1[]
IT_EXCLUDING =
IT_SPECIAL_GROUPS =
IT_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 = <FS_2>
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.
ENDFORM. " display
FORM PF_STATUS_SET USING RS_EXTAB TYPE SLIS_T_EXTAB.
SET PF-STATUS 'DISPLAY' .
ENDFORM. "PF_STATUS_SET
*& Form Name: user_command *
*& Form Desc: For Handling USER_COMMAND *
FORM USER_COMMAND USING IF_UCOMM TYPE SY-UCOMM
IS_SELFIELD TYPE SLIS_SELFIELD.
CASE IF_UCOMM.
WHEN 'DOWNLOAD'.
CALL FUNCTION 'POPUP_TO_CONFIRM'
EXPORTING
TITLEBAR = ' '
DIAGNOSE_OBJECT = ' '
TEXT_QUESTION = 'Data download to excel'
TEXT_BUTTON_1 = 'Ja'(001)
ICON_BUTTON_1 = ' '
TEXT_BUTTON_2 = 'Nein'(002)
ICON_BUTTON_2 = ' '
DEFAULT_BUTTON = '1'
DISPLAY_CANCEL_BUTTON = 'X'
USERDEFINED_F1_HELP = ' '
START_COLUMN = 25
START_ROW = 6
POPUP_TYPE =
IMPORTING
ANSWER =
TABLES
PARAMETER =
EXCEPTIONS
TEXT_NOT_FOUND = 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.
CALL FUNCTION 'GUI_DOWNLOAD'
EXPORTING
BIN_FILESIZE =
FILENAME = 'C:\Material-Text.xls'
FILETYPE = 'ASC'
APPEND = ' '
WRITE_FIELD_SEPARATOR = 'X'
HEADER = '00'
TRUNC_TRAILING_BLANKS = 'X'
WRITE_LF = 'X'
COL_SELECT = ' '
COL_SELECT_MASK = ' '
DAT_MODE = 'X'
IMPORTING
FILELENGTH = GL_LENGHT
TABLES
DATA_TAB = <FS_22>
EXCEPTIONS
FILE_WRITE_ERROR = 1
NO_BATCH = 2
GUI_REFUSE_FILETRANSFER = 3
INVALID_TYPE = 4
NO_AUTHORITY = 5
UNKNOWN_ERROR = 6
HEADER_NOT_ALLOWED = 7
SEPARATOR_NOT_ALLOWED = 8
FILESIZE_NOT_ALLOWED = 9
HEADER_TOO_LONG = 10
DP_ERROR_CREATE = 11
DP_ERROR_SEND = 12
DP_ERROR_WRITE = 13
UNKNOWN_DP_ERROR = 14
ACCESS_DENIED = 15
DP_OUT_OF_MEMORY = 16
DISK_FULL = 17
DP_TIMEOUT = 18
FILE_NOT_FOUND = 19
DATAPROVIDER_EXCEPTION = 20
CONTROL_FLUSH_ERROR = 21
OTHERS = 22
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 GL_LENGHT NE 0.
MESSAGE S398(00) WITH 'DATA downloaded to EXCEL'.
ENDIF.
Thanks
ENDCASE.
ENDFORM. "user_command -
Capture field name in table control on double click
Hi,
How can I capture the field name of internal table passed to table control on double click?
I have set function code as 'PICK' and applied 'Respond to double click' and used GET CURSOR statement. Here I can get the values like row number (line number), field value also. But I would like to capture on which field the cursor is (or on which column the cursor is)?
Thanks in advance.
Regards
Ramesh.Got it.
We can capture it by using the statement GET CURSOR only.
GET CURSOR field <field xx> .
Here the <field xx> is the field name where we have said double click. -
Dynamic Column name in a Cursor
Hello there,
How can I access data in cursor's field with dynamic fields names, more illustration follows:
My table has columns named as C1,C2,C3 so on
defined a cursor cursor_name on that table,
I need to access the fields by a loop like this:
OPEN cursor_name;
Fetch cursor_name into rec;
for i in 1 .. 10 loop
if rec.ci = 1Then
end if;
end loop
close cursor_name;
where rec,ci represents the name of the cursor fields, so that I loop over them,
how can I implement such an idea,
thanks in advance
regardsThanks Bily, and user10715047,
actually the reason behind the need of such an approach, is as following:
assume that I have table of set of logical conditions, " LOGICAL CONDITIONS" has three columns: ID, Condition_name and the logical_condition, example:
1, c1, x = 1
5, c2, y = 2
10, c3, p = 3 where ID is just a sequence to identify the records from each other "primary key"
assume that I need to provide the possible combination of the result of applying each of the conditions, for example :
if c1 = 1 ,c2= 0 and c3= 1 then my result must be 1 ' This according some predefined rulesso that I created table which contains all the possible logical conditions, ( as the max number of logical conditions are known)
defined as follows : combination( combination_ID, c1, c2, c3, c4, ....cmax, result)
sample record:
combination_ID, c1, c2, c3, .. c max, result
100, 1, 0, 1, ....., 1, 1in the PL/SQL procedure, I would get all the needed combination, into a cursor, then to optimized the code, I need to access the fields ( which is the Ci) in a loop
for i in 1..3 loop
if cursor_rec.ci = 1 then
Action
end if;
end loop;the dynamic name I meant in my first post was this : cursor_rec.ci ,
so that I can access the cursor's fields without the need to name them one by one, as there could be long sequence of conditions to be checked.
hope that I made the idea clearer, Any suggestions, please !
anyway I will give the DBMS_SQL cursors a shot , try if I can use to implement the purpose,
as I know similar dynamical variable names, is available in Java,
Regards, -
Materialized view with dynamic column names !
hello,
i need some help , i'm trying ( i got no where so far :) ) to create a materialized
view that has dynamic field name values , so every time the view is refreshed
the fields are renamed.
i have been asked to create a decade summary view and to assign year values to field names,the years should be table columns ( not rows !? ) and thus i should reflect this fact to the column names.
i know its a wierd request but is there anway to do it ?
i dunno about it at least,
Thanks !...or you could define the materialised view neutrally e.g. with columns like YEAR1, YEAR2 etc.
Then create a dynamically-defined view on top of this view, after it's refreshed, using the relevant years as column names. SELECT year1 AS "1991", year2 AS "1992" etc.
I still don't see how anybody is going to use these views as they won't know what the "year" columns are called.
And if the same materialised view is going to have different sets of data each time it's refreshed i.e. different sets of years, are you re-defining the selection criteria each time? If so, why not just define separate views?
It's a weird world out there... -
How to convert internal table with dynamic fields to XML
Dear all,
I met a problem like the following:
The aim is to transform the following parameter to XML
IT_FIELD stores the dynamic filed name of the internal table,with these fields, the dynamic internal can be created by cl_abap_tabledescr=>create(it_field)
IT_VALUE stores the value of the internal table dynamically created with dynamic fields.
For example
IT_FIELD =>
line1: FIELD1
line2: FIELD2
line3: FIELD3,
three lines in this internal table.
dynamically created internal table structure FIELD1 FIELD2 FIELD3
And IT_VALUE=>
1 2 3 (First line)
11 22 33
two lines of data.
Do you have any idea about how to transform the IT_VALUE to XML here? And also the transformed XML to the IT_VALUE.( we may need remember IT_FIELD here for later XML to IT_VALUE.)
Hope I describe the problem clearly.
Any inputs will be appreciated.
Edited by: Max Tang on Jan 12, 2009 3:46 PM
Edited by: Max Tang on Jan 12, 2009 4:14 PMHi,
you need to implement a bit of coding for that.
With the 'do varying' statement abap provides a loop over those fields. Within this loop you can build up a new internal table with one entry for each period and amount.
kind regards
Siggi
PS: I am not very familiar with CO, but I guess there will be a standard extractor for that. -
Dynamic internal table and dynamic field catalog
hi
i need to decide the number of fields of the internal table at runtime
and then need to pass value to this internal table.
then i need to create the field catalog for this internal table (so here
field catalog is also dynamic) to display in alv.
how to achieve this dynamic internal table creation and dyanmic field catalog generationHi Ajay,
U can use the below code to create a dynamic internal table.
*adding the field names only once for the dynamic table .
MOVE 'PRCTR' TO gw_component-name.
gw_component-type ?= cl_abap_elemdescr=>get_string( ).
INSERT gw_component INTO TABLE gt_components.
MOVE 'RCNTR' TO gw_component-name.
gw_component-type ?= cl_abap_elemdescr=>get_string( ).
INSERT gw_component INTO TABLE gt_components.
MOVE 'RACCT' TO gw_component-name.
gw_component-type ?= cl_abap_elemdescr=>get_string( ).
INSERT gw_component INTO TABLE gt_components.
MOVE 'RYEAR' TO gw_component-name.
gw_component-type ?= cl_abap_elemdescr=>get_string( ).
INSERT gw_component INTO TABLE gt_components.
MOVE 'YTDBAL' TO gw_component-name.
gw_component-type ?= cl_abap_elemdescr=>get_string( ).
INSERT gw_component INTO TABLE gt_components.
MOVE 'OBAL' TO gw_component-name.
gw_component-type ?= cl_abap_elemdescr=>get_string( ).
INSERT gw_component INTO TABLE gt_components.
*get structure descriptor -> GR_STRUCTDESCR
gr_structdescr ?= cl_abap_structdescr=>create( gt_components ).
create work area of structure GR_STRUCTDESCR -> GR_WA
CREATE DATA gr_wa TYPE HANDLE gr_structdescr.
ASSIGN gr_wa->* TO <gw_wa>.
determine key components -> GT_KEYS
MOVE lv_value1 TO gw_key-name.
INSERT gw_key INTO TABLE gt_keys.
create descriptor for internal table -> GR_TABLEDESCR
gr_tabledescr ?= cl_abap_tabledescr=>create( p_line_type = gr_structdescr
p_table_kind = cl_abap_tabledescr=>tablekind_hashed
p_unique = abap_true
p_key = gt_keys
p_key_kind = cl_abap_tabledescr=>keydefkind_user ).
create internal table -> GR_ITAB
CREATE DATA gr_itab TYPE HANDLE gr_tabledescr.
ASSIGN gr_itab->* TO <gt_itab>.
CREATE DATA gr_itab LIKE STANDARD TABLE OF <gw_wa>.
ASSIGN gr_itab->* TO <gt_sttab>.
Now u r internal table named <gt_sttab> has been created with fields like RCNTR, PRCTR,RACCT, RYEAR etc whatever the field u need u can go ahead and create dynamically.
then by using the table <gt_sttab> u can create u r field catalog.
Regards,
Rose.
Maybe you are looking for
-
My iPad will no longer play any streaming video. The video loads but will not play. This happens on all apps including you tube, abc, Netflix, etc. can you help?
-
Sorting and formatting in Numbers with iPad 2
I am going to send feedback to Apple about this, but I wanted to let the community help, if I am incorrect and these things are actually possible. 1. I can only sort by one column. I want to be able to create a sort priority. For example, I want to s
-
Acceptable video formats for iPhone
I am attempting to download music videos and movies to my iPhone. I've found in the past the mp4 files work for videos, but recently, mp4 files have not been working. I get a message saying that the file is not compatible with iPhone. Any suggestions
-
Can I still get my old itunes acount with out sycing to my computer
HHow can I get my old iTunes music and account on my iPad. Because computer is down, and I can't syc my new iPad to it
-
WT 2.5 / WT 2.5.2 - Web Services problem - Missing end tag??
Hi, I'm trying to create a J2ME web services client using the wireless toolkit. I used the Stub Generator to create my STUB from my WSDL file. With the Wireless Toolkit 2.5 I was getting a "Missing end tag for body or envelope" error when I invoked a