2013 Mar 05 12:08 PM
Hi gurus,
my gt_codb_final table having 10 fields my <ft_account> having 10 fields + my dynamic fields like 13 or 14 whatvr when i tried to using MOVE-CORRESPONDING GS_COSB_FINAL TO <FS_ACCOUNT>. i am getting runtime errr can anyone pls sudgest me any logics.thx in advance...
* LOOP AT GT_COSB_FINAL INTO GS_COSB_FINAL.
* MOVE-CORRESPONDING GS_COSB_FINAL TO <FS_ACCOUNT>.
* APPEND <FS_ACCOUNT> TO <FT_ACCOUNT>.
* ENDLOOP.
2013 Mar 05 2:04 PM
HI srithar,
you can try the below code .
* MOVE-CORRESPONDING GS_COSB_FINAL TO GS_COSB_FINAL_1.
* ASSIGN GS_COSB_FINAL_1 TO <FS_ACCOUNT>.
Thanks.
Srilatha.
2013 Mar 05 12:42 PM
Hi,
You cannot use Move-corresponding with FIELD-SYMBOLS but you can assign the whole structure by ASSIGN wa_struct TO <fs_struct>
OR
you can assign component wise ASSIGN COMPONENT sy-index OF STRUCTURE <fs_struct> TO <fs_comp>.
Hope this helps.
Thanks,
Tooshar Bendale
2013 Mar 05 1:14 PM
2013 Mar 05 1:17 PM
Hi Srithar,
It looks like field symbol <FS_ACCOUNT> is not assigned when you are trying to do MOVE-CORRESPONDING inside the loop. The possible solution is to assign the field symbol before entering the loop. The code may look something like,
CLEAR work_area.
ASSIGN [work_area] TO <FS_ACCOUNT>
Where work_area contains all the fields (some 14 fields you mentioned).
Hope this helps,
~Athreya
2013 Mar 05 2:04 PM
HI srithar,
you can try the below code .
* MOVE-CORRESPONDING GS_COSB_FINAL TO GS_COSB_FINAL_1.
* ASSIGN GS_COSB_FINAL_1 TO <FS_ACCOUNT>.
Thanks.
Srilatha.
2013 Mar 05 2:50 PM
thx latha i tried ur way bt when i try to append
APPEND <FS_ACCOUNT> TO <FT_ACCOUNT> i got runtime err:(
Runtime Errors UC_OBJECTS_NOT_CONVERTIBLE
error anlysis :Use only convertible operands "dst" and "src" for the statement
"MOVE src TO dst"
let me come to the point...
1 so my <ft_account>is having ,typ_cosp_final fielsds(10 fields constand) + dynamic fields(infinity) ..
so my <ft_account> it could be 20 ,30, 40 fields ....infinity
2, my gt_cosb_final table is here my final table my idea is here i want to move gt_cosb_final to my field symbol table <ft_account> i mean i wanna fill it up first 10 fields after once i fill the <ft_account>
3,after that i can play with dynamic fields.
DATA : GS_COSB_FINAL_1 TYPE TYP_COSB_FINAL.
Loop at GT_COSB_FINAL into GS_COSB_FINAL.
MOVE-CORRESPONDING GS_COSB_FINAL TO GS_COSB_FINAL_1.
ASSIGN GS_COSB_FINAL_1 TO <FS_ACCOUNT>.
APPEND <FS_ACCOUNT> TO <FT_ACCOUNT>.------> UC_OBJECTS_NOT_CONVERTIBLE
ENDLOOP.
pls sudgest some logic
2013 Mar 06 4:22 AM
Check if your field symbol is assigned. It should work fine then, you can use move corresponding with field symbols.
Thank You
2013 Mar 06 4:35 AM
Hi,
Instead of using move-corresponding, try with directly field to field assignment.move corresponding will kills the performance.
Thanks
Pavan.
2013 Mar 06 7:38 AM
Loop at GT_COSB_FINAL into GS_COSB_FINAL.
MOVE-CORRESPONDING GS_COSB_FINAL TO GS_COSB_FINAL_1.
ASSIGN GS_COSB_FINAL_1-OBJNR TO <fS_ACCOUNT>.
ASSIGN GS_COSB_FINAL_1-GJAHR TO <FS_ACCOUNT>.
ASSIGN GS_COSB_FINAL_1-ABKAT TO <FS_ACCOUNT>.
ASSIGN GS_COSB_FINAL_1-ABKAT51 TO <FS_ACCOUNT>.
ASSIGN GS_COSB_FINAL_1-ABKAT51 TO <FS_ACCOUNT>.
ASSIGN GS_COSB_FINAL_1-ABKAT52 TO <FS_ACCOUNT>.
ASSIGN GS_COSB_FINAL_1-ABKAT53 TO <FS_ACCOUNT>.
ASSIGN GS_COSB_FINAL_1-ABKAT54 TO <FS_ACCOUNT>.
ASSIGN GS_COSB_FINAL_1-ABKAT55 TO <FS_ACCOUNT>.
ASSIGN GS_COSB_FINAL_1-ABKAT56 TO <FS_ACCOUNT>.
APPEND <FS_ACCOUNT> TO <FT_ACCOUNT>.
when i tried with only passing objct number it was working when itried to append with objnr and other fields i am getting dumb..UC_OBJECTS_NOT_CONVERTIBLE
2013 Mar 06 7:50 AM
Hi Srithar,
Please check it whether you had declared both the internal table and work area with the same structure or not..else please post the code here ..
Thanks.
Pavan
2013 Mar 06 7:50 AM
Hi Srithar,
How have you declared <FS_ACCOUNT> correctly? It seems like the fields are getting over-written. Please check your code and declaration
2013 Mar 06 8:05 AM
*field symbol declaration
FIELD-SYMBOLS: <FT_ACCOUNT> TYPE STANDARD TABLE,
<FS_ACCOUNT>, "type TYP_COSB_FINAL,
<FD_ACCOUNT>,
GT_COSB_FINAL TYPE STANDARD TABLE OF TYP_COSB_FINAL,
GT_COEP TYPE STANDARD TABLE OF TYP_COEP,
*Making fcat dynamicaly.
REF_TABLE_DES ?=
CL_ABAP_TYPEDESCR=>DESCRIBE_BY_NAME('TYP_COSB_FINAL').
I_ACCOUNT_DETAILS[] = REF_TABLE_DES->COMPONENTS[].
LOOP AT I_ACCOUNT_DETAILS INTO W_ACCOUNT_DETAILS.
IF SY-SUBRC = 0.
GS_FCAT_ACCOUNT-FIELDNAME = W_ACCOUNT_DETAILS-NAME.
GS_FCAT_ACCOUNT-DATATYPE = W_ACCOUNT_DETAILS-TYPE_KIND.
CASE W_ACCOUNT_DETAILS-TYPE_KIND.
WHEN 'C'.
GS_FCAT_ACCOUNT-DATATYPE = 'CHAR'.
WHEN 'N'.
GS_FCAT_ACCOUNT-DATATYPE = 'NUMC'.
WHEN 'D'.
GS_FCAT_ACCOUNT-DATATYPE = 'DATE'.
WHEN 'P'.
GS_FCAT_ACCOUNT-DATATYPE = 'PACK'.
WHEN OTHERS.
GS_FCAT_ACCOUNT-DATATYPE = W_ACCOUNT_DETAILS-TYPE_KIND.
ENDCASE.
GS_FCAT_ACCOUNT-INTTYPE = W_ACCOUNT_DETAILS-TYPE_KIND.
GS_FCAT_ACCOUNT-INTLEN = W_ACCOUNT_DETAILS-LENGTH.
GS_FCAT_ACCOUNT-DECIMALS = W_ACCOUNT_DETAILS-DECIMALS.
GS_FCAT_ACCOUNT-SCRTEXT_M = W_ACCOUNT_DETAILS-NAME.
GS_FCAT_ACCOUNT-EDIT = 'X'.
APPEND GS_FCAT_ACCOUNT TO GT_FCAT_ACCOUNT .
CLEAR :GS_FCAT_ACCOUNT.
ENDIF.
ENDLOOP.
Loop at GT_COSB_FINAL into GS_COSB_FINAL.
MOVE-CORRESPONDING GS_COSB_FINAL TO GS_COSB_FINAL_1.
ASSIGN GS_COSB_FINAL_1-OBJNR TO <fS_ACCOUNT>.
ASSIGN GS_COSB_FINAL_1-GJAHR TO <FS_ACCOUNT>.
ASSIGN GS_COSB_FINAL_1-ABKAT TO <FS_ACCOUNT>.
ASSIGN GS_COSB_FINAL_1-ABKAT51 TO <FS_ACCOUNT>.
ASSIGN GS_COSB_FINAL_1-ABKAT51 TO <FS_ACCOUNT>.
ASSIGN GS_COSB_FINAL_1-ABKAT52 TO <FS_ACCOUNT>.
ASSIGN GS_COSB_FINAL_1-ABKAT53 TO <FS_ACCOUNT>.
ASSIGN GS_COSB_FINAL_1-ABKAT54 TO <FS_ACCOUNT>.
ASSIGN GS_COSB_FINAL_1-ABKAT55 TO <FS_ACCOUNT>.
ASSIGN GS_COSB_FINAL_1-ABKAT56 TO <FS_ACCOUNT>.
APPEND <FS_ACCOUNT> TO <FT_ACCOUNT>.
LOOP AT T_FCAT INTO FS_FCAT.
IF SY-SUBRC = 0.
GS_FCAT_ACCOUNT-FIELDNAME = FS_FCAT-FIELDNAME.
GS_FCAT_ACCOUNT-DATATYPE = FS_FCAT-DATATYPE.
CASE GS_FCAT_ACCOUNT-DATATYPE.
WHEN 'C'.
GS_FCAT_ACCOUNT-DATATYPE = 'CHAR'.
WHEN 'N'.
GS_FCAT_ACCOUNT-DATATYPE = 'NUMC'.
WHEN 'D'.
GS_FCAT_ACCOUNT-DATATYPE = 'DATE'.
WHEN 'P'.
GS_FCAT_ACCOUNT-DATATYPE = 'PACK'.
WHEN OTHERS.
GS_FCAT_ACCOUNT-DATATYPE = FS_FCAT-DATATYPE.
ENDCASE.
GS_FCAT_ACCOUNT-INTTYPE = FS_FCAT-INTTYPE.
GS_FCAT_ACCOUNT-INTLEN = FS_FCAT-INTLEN.
GS_FCAT_ACCOUNT-DECIMALS = FS_FCAT-DECIMALS.
GS_FCAT_ACCOUNT-SCRTEXT_M = FS_FCAT-SCRTEXT_M.
APPEND GS_FCAT_ACCOUNT TO GT_FCAT_ACCOUNT.
ENDIF.
ENDLOOP.
DELETE ADJACENT DUPLICATES FROM GT_FCAT_ACCOUNT COMPARING ALL FIELDS.
CALL METHOD CL_ALV_TABLE_CREATE=>CREATE_DYNAMIC_TABLE
EXPORTING
IT_FIELDCATALOG = GT_FCAT_ACCOUNT
IMPORTING
EP_TABLE = T_ITAB
EXCEPTIONS
GENERATE_SUBPOOL_DIR_FULL = 1
OTHERS = 2.
ASSIGN T_ITAB->* TO <FT_ACCOUNT>.
CREATE DATA T_ITAB LIKE LINE OF <FT_ACCOUNT>.
ASSIGN T_ITAB->* TO <FS_LINE>.
Loop at GT_COSB_FINAL into GS_COSB_FINAL.
MOVE-CORRESPONDING GS_COSB_FINAL TO GS_COSB_FINAL_1.
ASSIGN GS_COSB_FINAL_1-OBJNR TO <fS_ACCOUNT>.
ASSIGN GS_COSB_FINAL_1-GJAHR TO <FS_ACCOUNT>.
ASSIGN GS_COSB_FINAL_1-ABKAT TO <FS_ACCOUNT>.
ASSIGN GS_COSB_FINAL_1-ABKAT51 TO <FS_ACCOUNT>.
ASSIGN GS_COSB_FINAL_1-ABKAT51 TO <FS_ACCOUNT>.
ASSIGN GS_COSB_FINAL_1-ABKAT52 TO <FS_ACCOUNT>.
ASSIGN GS_COSB_FINAL_1-ABKAT53 TO <FS_ACCOUNT>.
ASSIGN GS_COSB_FINAL_1-ABKAT54 TO <FS_ACCOUNT>.
ASSIGN GS_COSB_FINAL_1-ABKAT55 TO <FS_ACCOUNT>.
ASSIGN GS_COSB_FINAL_1-ABKAT56 TO <FS_ACCOUNT>.
APPEND <FS_ACCOUNT> TO <FT_ACCOUNT>.