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

dynamic assigment

Former Member
0 Likes
715

Hi,

I have below code

DATA: f_value1 TYPE string,

lv_checkfield LIKE dd08v-fieldname.

DATA: lv_cond(72) TYPE c,

itab_where LIKE TABLE OF lv_cond.

f_value1 = <fs_table>.

concatenate lv_checkfield 'EQ' <fs_table> into lv_cond separated by space.

APPEND lv_cond TO itab_where.

i m getting error "the type f_value1 cannot be converted to the type of <fs_table>

So can u pls help in concatening value of <fs_table> into lv_cond.

Regards,

Santosh

Hi,

I have below code

DATA: f_value1 TYPE string,

lv_checkfield LIKE dd08v-fieldname.

DATA: lv_cond(72) TYPE c,

itab_where LIKE TABLE OF lv_cond.

f_value1 = <fs_table>.

concatenate lv_checkfield 'EQ' <fs_table> into lv_cond separated by space.

APPEND lv_cond TO itab_where.

i m getting error "the type f_value1 cannot be converted to the type of <fs_table>

So can u pls help in concatening value of <fs_table> into lv_cond.

Regards,

Santosh

5 REPLIES 5
Read only

rainer_hbenthal
Active Contributor
0 Likes
676

what is <fs_table>?

Read only

Former Member
0 Likes
676

Hi,

Statement like this f_value1 = <fs_table> will not work if f_value1 & <fs_table> are not of teh same type.

How are you assigning <fs_table>?

Can you be more clear with your requirment?

What do you exactly mean by "concatening value of <fs_table> into lv_cond".

Regards,

Ankur Parab

Read only

Former Member
0 Likes
676

i m posting my code below

TABLES: ora_add_in.

***********************************************************************

  • DECLARATIONS

***********************************************************************

TYPE-POOLS : vrm.

DATA: param TYPE vrm_id,

values TYPE vrm_values,

value LIKE LINE OF values.

DATA: d_table_ref TYPE REF TO data.

DATA: d_rfc_db_opt TYPE rfc_db_opt.

DATA: it_opt LIKE rfc_db_opt OCCURS 0 WITH HEADER LINE.

DATA: d_file TYPE string.

DATA: gd_fldname TYPE string,

gdo_data TYPE REF TO data,

go_typedescr TYPE REF TO cl_abap_typedescr,

go_datadescr TYPE REF TO cl_abap_datadescr.

DATA : it_dd03l TYPE STANDARD TABLE OF dd03l WITH HEADER LINE.

DATA : tab_fld TYPE string.

DATA : lv_cnt(3) TYPE i VALUE 0,

lv_char(4) TYPE c,

lv_text_table LIKE dd08v-tabname,

lv_checkfield LIKE dd08v-fieldname.

DATA : p_file_new LIKE rlgrap-filename.

DATA: lv_cond(72) TYPE c,

itab_where LIKE TABLE OF lv_cond.

***********************************************************************

  • SELECTION SCREEN

***********************************************************************

SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.

PARAMETERS: p_tab TYPE dd02l-tabname OBLIGATORY.

PARAMETERS : p_desk RADIOBUTTON GROUP a1 USER-COMMAND abc,

p_app RADIOBUTTON GROUP a1 DEFAULT 'X'.

PARAMETERS: p_ch1(1) DEFAULT '|',

p_pz TYPE i OBLIGATORY DEFAULT 1000.

PARAMETERS: p_file LIKE rlgrap-filename OBLIGATORY DEFAULT '/usr/sap/tmp/test.txt',

d_file1 LIKE rlgrap-filename.

SELECT-OPTIONS: s_opt FOR d_rfc_db_opt NO INTERVALS.

SELECTION-SCREEN END OF BLOCK b1.

***********************************************************************

  • FIELD SYMBOLS

***********************************************************************

FIELD-SYMBOLS: <fs_table> TYPE STANDARD TABLE,

<fs_table1> TYPE STANDARD TABLE.

FIELD-SYMBOLS:

<gs_struct> TYPE ANY,

<gd_fld> TYPE ANY,

<gd_fld1> TYPE ANY,

<gd_fld2> TYPE ANY,

<l_fs_bom> TYPE ANY,

<f_value1> TYPE any.

***********************************************************************

  • INITIALIZATION

***********************************************************************

INITIALIZATION.

AUTHORITY-CHECK OBJECT 'S_TCODE'

ID 'TCD' FIELD 'ZTABLE_DATA_DOWNLOAD'.

IF sy-subrc <> 0. "Not Authorized

MESSAGE s753(kh) WITH 'TCD' 'ZTABLE_DATA_DOWNLOAD'.

ENDIF.

***********************************************************************

  • AT SELECTION SCREEN

***********************************************************************

AT SELECTION-SCREEN ON VALUE-REQUEST FOR d_file1.

PERFORM select_file USING d_file1.

AT SELECTION-SCREEN OUTPUT..

PERFORM selection-screen-output.

***********************************************************************

  • START OF SELECTION

***********************************************************************

START-OF-SELECTION.

IF p_app = 'X'.

PERFORM authority_check.

PERFORM select_data.

ELSE.

PERFORM authority_check.

PERFORM select_desk_data.

ENDIF.

&----


*& Form select_data

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM select_data .

SELECT * FROM dd03l INTO TABLE it_dd03l WHERE tabname = p_tab.

SORT it_dd03l BY position.

REFRESH it_opt.

LOOP AT s_opt WHERE sign = 'I' OR option = 'EQ'.

it_opt-text = s_opt-low.

APPEND it_opt.

ENDLOOP.

CREATE DATA d_table_ref TYPE TABLE OF (p_tab).

UNASSIGN <fs_table>.

ASSIGN d_table_ref->* TO <fs_table>.

CREATE DATA gdo_data TYPE (p_tab).

ASSIGN gdo_data->* TO <gs_struct>.

IF <fs_table> IS ASSIGNED.

CLEAR <fs_table>.

IF NOT it_opt[] IS INITIAL.

SELECT * FROM (p_tab) INTO TABLE <fs_table> WHERE (it_opt).

IF sy-subrc EQ 0.

PERFORM download_file TABLES <fs_table> USING p_file.

MESSAGE i398(00) WITH 'Upload from SAP Successfull'.

ENDIF.

ELSE.

SELECT * FROM (p_tab) INTO TABLE <fs_table> PACKAGE SIZE p_pz.

IF sy-subrc EQ 0.

CALL FUNCTION 'DDUT_TEXTTABLE_GET'

EXPORTING

tabname = p_tab

IMPORTING

texttable = lv_text_table

checkfield = lv_checkfield.

IF lv_text_table is not initial.

assign <f_value1> to <fs_table>.

concatenate lv_checkfield 'EQ' <f_value1> into lv_cond separated by space.

APPEND lv_cond TO itab_where.

unassign <f_value1>.

SELECT * FROM (lv_text_table)

INTO TABLE <fs_table1>

FOR ALL ENTRIES IN <fs_table>

WHERE (itab_where).

ENDIF.

lv_cnt = lv_cnt + 1.

lv_char = lv_cnt.

SHIFT lv_char LEFT DELETING LEADING space.

CONCATENATE p_file lv_char INTO p_file_new.

PERFORM download_file TABLES <fs_table> USING p_file_new.

ENDIF.

REFRESH <fs_table>.

CLEAR lv_char.

CLEAR lv_cnt.

CLEAR p_file_new.

ENDSELECT.

MESSAGE i398(00) WITH 'Upload from SAP Successfull'.

ENDIF.

ENDIF.

ENDFORM. " select_data

&----


*& Form download_file

&----


  • text

----


  • -->P_<FS_TABLE> text

  • -->P_P_FILE text

----


FORM download_file TABLES p_tab USING p_file.

DATA: d_table_line TYPE REF TO data,

d_str TYPE rfc_db_fld,

f_type,

f_value TYPE string.

DATA : lv_line TYPE string.

DATA : l_wa_itab_length(4) TYPE c VALUE '2000'.

IF NOT p_tab[] IS INITIAL.

SORT p_tab.

OPEN DATASET p_file FOR OUTPUT IN TEXT MODE ENCODING NON-UNICODE.

IF sy-subrc NE 0.

MESSAGE 'Error on output file read' TYPE 'E'.

ELSE.

LOOP AT p_tab.

DO.

READ TABLE it_dd03l INDEX sy-index.

ASSIGN COMPONENT syst-index OF STRUCTURE <gs_struct> TO <gd_fld>.

IF ( syst-subrc NE 0 ).

EXIT.

ENDIF.

go_typedescr = cl_abap_typedescr=>describe_by_data( <gd_fld> ).

gd_fldname = go_typedescr->get_relative_name( ).

CONCATENATE 'P_TAB' '-' it_dd03l-fieldname INTO tab_fld.

UNASSIGN <l_fs_bom>.

ASSIGN COMPONENT it_dd03l-fieldname OF STRUCTURE p_tab TO <l_fs_bom>.

IF <l_fs_bom> IS ASSIGNED.

DESCRIBE FIELD <l_fs_bom> TYPE f_type.

IF f_type = 'P' OR f_type = 'X' OR f_type = 'I'.

f_value = <l_fs_bom>.

CONCATENATE lv_line f_value INTO lv_line SEPARATED BY p_ch1.

ELSE.

CONCATENATE lv_line <l_fs_bom> INTO lv_line SEPARATED BY p_ch1.

ENDIF.

ENDIF.

ENDDO.

TRANSFER lv_line TO p_file LENGTH l_wa_itab_length.

CLEAR p_tab.

CLEAR lv_line.

ENDLOOP.

CLOSE DATASET p_file.

ENDIF.

ENDIF.

REFRESH p_tab.

ENDFORM. " download_file

&----


*& Form select_file

&----


  • text

----


  • -->P_P_FILE text

----


FORM select_file USING p_p_file.

CALL FUNCTION 'WS_FILENAME_GET'

EXPORTING

def_filename = '*.TXT'

def_path = 'C:\'

mask = ',.TXT,.*.'

mode = 'O'

IMPORTING

filename = p_p_file

EXCEPTIONS

inv_winsys = 1

no_batch = 2

selection_cancel = 3

selection_error = 4

OTHERS = 5.

IF sy-subrc <> 0.

WRITE:/ 'Error in Selecting :', p_p_file.

ENDIF.

ENDFORM. " select_file

&----


*& Form download_desktop

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM download_desktop TABLES p_tab USING p_file.

IF NOT p_tab[] IS INITIAL.

CALL FUNCTION 'WS_DOWNLOAD'

EXPORTING

filename = p_file

filetype = 'DAT'

TABLES

data_tab = p_tab

EXCEPTIONS

file_open_error = 1

file_write_error = 2

invalid_filesize = 3

invalid_type = 4

no_batch = 5

unknown_error = 6

invalid_table_width = 7

gui_refuse_filetransfer = 8

customer_error = 9

OTHERS = 10.

IF sy-subrc <> 0.

MESSAGE i398(00) WITH 'Error during Downloading'.

ENDIF.

ENDIF.

ENDFORM. " download_desktop

&----


*& Form selection-screen-output

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM selection-screen-output .

LOOP AT SCREEN.

CHECK screen-name CS 'P_FILE'.

IF p_app = 'X'.

screen-active = 1.

ELSE.

screen-active = 0.

ENDIF.

MODIFY SCREEN.

ENDLOOP.

LOOP AT SCREEN.

CHECK screen-name CS 'D_FILE1'.

IF p_desk = 'X'.

screen-active = 1.

ELSE.

screen-active = 0.

ENDIF.

MODIFY SCREEN.

ENDLOOP.

LOOP AT SCREEN.

CHECK screen-name CS 'P_CH1'.

IF p_desk = 'X'.

screen-active = 0.

ELSE.

screen-active = 1.

ENDIF.

MODIFY SCREEN.

ENDLOOP.

LOOP AT SCREEN.

CHECK screen-name CS 'P_PZ'.

IF p_desk = 'X'.

screen-active = 0.

ELSE.

screen-active = 1.

ENDIF.

MODIFY SCREEN.

ENDLOOP.

ENDFORM. " selection-screen-output

&----


*& Form select_desk_data

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM select_desk_data .

REFRESH it_opt.

LOOP AT s_opt WHERE sign = 'I' OR option = 'EQ'.

it_opt-text = s_opt-low.

APPEND it_opt.

ENDLOOP.

CREATE DATA d_table_ref TYPE TABLE OF (p_tab).

UNASSIGN <fs_table>.

ASSIGN d_table_ref->* TO <fs_table>.

IF <fs_table> IS ASSIGNED.

CLEAR <fs_table>.

SELECT * FROM (p_tab) INTO TABLE <fs_table>

WHERE (it_opt).

IF sy-subrc EQ 0.

PERFORM download_file_desktop TABLES <fs_table> USING d_file1.

MESSAGE i398(00) WITH 'Upload from SAP Successfull'.

ENDIF.

ENDIF.

ENDFORM. " select_desk_data

&----


*& Form download_file_desktop

&----


  • text

----


  • -->P_<FS_TABLE> text

  • -->P_D_FILE1 text

----


FORM download_file_desktop TABLES p_table

USING p_d_file1.

CALL FUNCTION 'WS_DOWNLOAD'

EXPORTING

filename = p_d_file1

filetype = 'DAT'

TABLES

data_tab = p_table

EXCEPTIONS

file_open_error = 1

file_write_error = 2

invalid_filesize = 3

invalid_type = 4

no_batch = 5

unknown_error = 6

invalid_table_width = 7

gui_refuse_filetransfer = 8

customer_error = 9

OTHERS = 10.

IF sy-subrc <> 0.

MESSAGE i398(00) WITH 'Error during Downloading'.

ENDIF.

ENDFORM. " download_file_desktop

&----


*& Form AUTHORITY_CHECK

&----


  • text

----


  • <--P_MODE text

----


FORM authority_check.

CONSTANTS: auc_actvt_02 LIKE authb-actvt VALUE '02',

auc_actvt_03 LIKE authb-actvt VALUE '03'.

DATA : auc_dicbercls LIKE authb-dicbercls.

SELECT SINGLE cclass INTO auc_dicbercls

FROM tddat

WHERE tabname = p_tab.

IF sy-subrc NE 0.

auc_dicbercls = '&NC&'.

ENDIF.

AUTHORITY-CHECK OBJECT 'S_TABU_DIS'

ID 'DICBERCLS' FIELD auc_dicbercls

ID 'ACTVT' FIELD auc_actvt_03.

IF sy-subrc <> 0.

MESSAGE s753(kh) WITH auc_actvt_03.

STOP.

ENDIF.

ENDFORM. " AUTHORITY_CHECK

Read only

0 Likes
676

Hi,

Please paste the code between

so that the code is visible and can me understood properly.

regards,

Ankur Parab

Read only

0 Likes
676

i'm not willing to read that. reduce your code to show only the relevant parts and use correct forum markup.