Application Development and Automation Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 
Read only

Structure

Former Member
0 Likes
634

HI Friendz,

i am trying to create a structure using abap program,

but after executing the program, Structure is created, but the first field(FIELD1) is missing, pls any one help me... this is my code

<b>points for sure</b>

Thanks and Regards,

Vijaya

DATA: my_row(500) TYPE c,

my_file_1 LIKE my_row OCCURS 0 WITH HEADER LINE.

DATA: dd02v TYPE dd02v.

DATA: my_file_tab1 LIKE dd03p OCCURS 0 WITH HEADER LINE.

SELECTION-SCREEN BEGIN OF BLOCK blk WITH FRAME TITLE text

NO INTERVALS.

PARAMETERS:

name TYPE ddobjname,

testo TYPE text40,

file_1 LIKE rlgrap-filename.

SELECTION-SCREEN SKIP.

SELECTION-SCREEN END OF BLOCK blk.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR file_1.

PERFORM file_selection USING file_1.

INITIALIZATION.

text = text-001.

START-OF-SELECTION.

IF file_1 IS INITIAL.

MESSAGE ID 'Z0017_BDI' TYPE 'I' NUMBER 001.

EXIT.

ENDIF.

CALL FUNCTION 'WS_UPLOAD'

EXPORTING

filename = file_1

filetype = 'ASC'

TABLES

data_tab = my_file_1.

IF sy-subrc <> 0.

MESSAGE ID 'Z0017_BDI' TYPE 'I' NUMBER 002.

EXIT.

ENDIF.

LOOP AT my_file_1.

IF sy-tabix Gt 1.

CLEAR my_file_tab1.

SPLIT my_file_1 AT ';' INTO

my_file_tab1-fieldname

my_file_tab1-datatype

my_file_tab1-leng

my_file_tab1-decimals

my_file_tab1-ddtext

.

my_file_tab1-inttype = 'C'.

my_file_tab1-intlen = my_file_tab1-leng.

my_file_tab1-tabname = name.

my_file_tab1-position = sy-tabix - 1.

my_file_tab1-ddlanguage = sy-langu.

my_file_tab1-outputlen = my_file_tab1-leng.

APPEND my_file_tab1.

ENDIF.

ENDLOOP.

dd02v-tabname = name.

dd02v-ddlanguage = sy-langu.

dd02v-tabclass = 'INTTAB'.

dd02v-ddtext = testo.

dd02v-masterlang = sy-langu.

IF NOT my_file_tab1[] IS INITIAL.

CALL FUNCTION 'DDIF_TABL_PUT'

EXPORTING

name = name

dd02v_wa = dd02v

TABLES

dd03p_tab = my_file_tab1

EXCEPTIONS

tabl_not_found = 1

name_inconsistent = 2

tabl_inconsistent = 3

put_failure = 4

put_refused = 5

OTHERS = 6.

IF sy-subrc <> 0.

MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno

WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.

ENDIF.

ELSE.

*MESSAGE ID 'Z0017_BDI' TYPE 'I' NUMBER 003.

MESSAGE s100 WITH 'Structure created succesfully'.

EXIT.

ENDIF.

&----


*& Form file_selection

&----


  • -->P_FILE_1 text

----


FORM file_selection USING p_file.

CALL FUNCTION 'WS_FILENAME_GET'

EXPORTING

def_filename = ''

def_path = 'c:\'

mask = ',.,..'

mode = '0'

title = 'Selezione file'

IMPORTING

filename = p_file

  • RC = RCODE

EXCEPTIONS

inv_winsys = 1

no_batch = 2

selection_cancel = 3

selection_error = 4

OTHERS = 5.

ENDFORM. " file_selection

*And here is the file...

*

*Fieldname;Data Type;Lentgh;Dec.;Descr.

*FIELD1;CHAR;000020;000000;my field 1

*FIELD2;CHAR;000008;000000;my field 2

*FIELD3;CHAR;000007;000000;my field 3

*FIELD4;CHAR;000006;000000;my field 4

5 REPLIES 5
Read only

Former Member
0 Likes
595

you are looping from second record , so obviously the first record will not be used , remove the one in bold

LOOP AT my_file_1.

<b>IF sy-tabix Gt 1.</b>

Read only

Former Member
0 Likes
595

Hi Vijaya,

Do you want to check the sy-tabix count?

if yes then do this'

loop at my_file_1.

if sy-tabix GE 1.

endif.

endloo.

Greater than or equal to option will fetch you from the first record.

Reward all helpful answers.

Regards,

Varun.

Read only

Former Member
0 Likes
595

YOu can as well remove the sy-tabix GT 1 and corresponding endif statement from the code.

Does your file contain a header record?

Regards,

ravi

Read only

Former Member
0 Likes
595

Hi Vijaya,

I tried with your code and found it got created with all the fields.

Just try to execute once again and test. It will create the first field also.

Regards,

Krishna K

Read only

Former Member
0 Likes
595

Hi Vijaya,

The position ur passing should be <b>sy-tabix</b> not <b>sytabix-1</b> and remove if statement <b>'IF sy-tabix Gt 1.' 'endif'</b> . it will work fine.