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

Modify database tabel from internal table

Former Member
0 Likes
25,806

Hi,

I want to modify a z-table from an internal table. However the z-table has fewer columns hence I only want to write selected columns from my internal table.

I tried:

LOOP AT IT_RECORD INTO WA_RECORD.

MODIFY ZTEST FROM WA_RECORD.

ENDLOOP.

This does not work the way I want because it writes to the wrong columns. Any suggestions?

1 ACCEPTED SOLUTION
Read only

matt
Active Contributor
8,435

DATA: wa_ztest TYPE ztest.

LOOP AT IT_RECORD INTO WA_RECORD.
  MOVE-CORRESPONDING wa_record TO wa_ztest.
MODIFY ZTEST FROM wa_ztest.
ENDLOOP. 
9 REPLIES 9
Read only

Former Member
0 Likes
8,435

Hi,

use move-corresponding

Regards

Read only

Former Member
0 Likes
8,435

You can, but willl not suggest you to modify any standard DB table. You custom table is ok.

But remember to pass all the key fields while modifying.

Jayant Sahu

Read only

matt
Active Contributor
8,436

DATA: wa_ztest TYPE ztest.

LOOP AT IT_RECORD INTO WA_RECORD.
  MOVE-CORRESPONDING wa_record TO wa_ztest.
MODIFY ZTEST FROM wa_ztest.
ENDLOOP. 
Read only

Former Member
0 Likes
8,435

Hi Kulbir Paji

Hope it wil help you.

modify itab_lcplanning from wa_struct transporting tasstdate tasenddate

where phcode = wa_struct-phcode and wpcode = ' ' and actcode = ' ' and tascode = ' ' and

fitgapcd = ' ' and subtascd = ' ' and dlcode = ' '.

<REMOVED BY MODERATOR>

Edited by: Alvaro Tejada Galindo on Feb 7, 2008 6:22 PM

Read only

Former Member
0 Likes
8,435

move corresponding will more

thnkkx

bhanu

Read only

Former Member
0 Likes
8,435

What about this:

LOOP AT it_record INTO wa_record.
  UPDATE ztest
    SET zf1 = wa_record-f1
        zf2 = wa_record-f2
*       etc.
    WHERE key1 = wa_record-key1
      AND key2 = wa_record-key2.
*     AND etc.
ENDLOOP.

Rob

Read only

0 Likes
8,435

I can't use update if the table is empty...

Read only

0 Likes
8,435

If the table is empty, it doesn't go through the loop.

Rob

Read only

0 Likes
8,435

Hi,

I have written a small programm which reads from the local csv

file and writes it first in the internal and then in the database table. I have not tried to write the record directly in the database table because in the db table i have used float datatypes and 'GUI_UPLOAD' function return only string.

The colums in the CSV file should not be separated through ; or , but should separated through . It can be achieved through macros or simply Replace function in most of the editors. so here is the Code. I hope it will be helpful.

CSV STRUCTURE:

...
4711	1	-0.113959745	-0.128854014	0.014869883
4711	2	0.229442479	-0.045338936	0.274622951
4711	3	0.424455196	0.575343255	-0.152001065
4711	4	0.967714968	0.938023954	0.030049754
4711	5	-0.239151217	-0.288232776	0.04890217
4711	6	-0.38852287	-0.390814502	0.00228029
4711	7	-0.64254495	-0.457956474	-0.183518857
4711	8	0.861369672	0.862771555	-0.001417447
...

ABAP CODE

REPORT  zfash_csvupload.

"Struktur zum einlesen einzelnen spalten von eine CSV datei.
"Datentyp müssen String sein.
TYPES: BEGIN OF typestr_csv_daten,
    geschfnr TYPE string,
    histotag TYPE string,
    bw_fx_zins TYPE string,
    bw_fx TYPE string,
    bw_zins TYPE string,
    END OF typestr_csv_daten.

"Struktur zum Konvertieren string in enstprechenden datentypen.
TYPES: BEGIN OF type_csv_daten,
    geschfnr TYPE i,
    histotag TYPE i,
    bw_fx_zins TYPE f,
    bw_fx TYPE f,
    bw_zins TYPE f,
    END OF type_csv_daten.


DATA it_csv_str TYPE TABLE OF typestr_csv_daten.
DATA wa_csv_str TYPE typestr_csv_daten.

DATA it_csv TYPE TABLE OF type_csv_daten.
DATA wa_csv TYPE type_csv_daten.

DATA wa_bw_fx_zins LIKE zfash_bw_fx_zins.




START-OF-SELECTION.
  " GUI_UPLOAD zum hochladen einer Datei. GUI_Download zum downloaden einer Datei.
  CALL FUNCTION 'GUI_UPLOAD'
    EXPORTING
     filename                      = 'C:Testdaten2.csv' "CSV-datei kann auch .txt endung haben
     filetype                      = 'ASC'
     has_field_separator           = 'X' "Wenn X dann Separator in CSV muss vorhanden sein. Separator ist TABULAOR
*     HEADER_LENGTH                 = 50
*     READ_BY_LINE                  = 'X'
*     DAT_MODE                      = ' '
*     CODEPAGE                      = ' '
*     IGNORE_CERR                   = ABAP_TRUE
*     REPLACEMENT                   = '#'
*     CHECK_BOM                     = ' '
*     VIRUS_SCAN_PROFILE            =
*     NO_AUTH_CHECK                 = ' '
*   IMPORTING
*     FILELENGTH                    =
*     HEADER                        =
    TABLES
      data_tab                      = it_csv_str "interne tabelle wo csv daten geladen werden.
   EXCEPTIONS
     file_open_error               = 1
     file_read_error               = 2
     no_batch                      = 3
     gui_refuse_filetransfer       = 4
     invalid_type                  = 5
     no_authority                  = 6
     unknown_error                 = 7
     bad_data_format               = 8
     header_not_allowed            = 9
     separator_not_allowed         = 10
     header_too_long               = 11
     unknown_dp_error              = 12
     access_denied                 = 13
     dp_out_of_memory              = 14
     disk_full                     = 15
     dp_timeout                    = 16
     OTHERS                        = 17
            .
  "Prüfen ob alles gut gelaufen ist.
  IF sy-subrc <> 0.
    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
            WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
  ELSE.

    LOOP AT it_csv_str INTO wa_csv_str.
      "Konvertierung lassen wir ABAP handeln :)
      wa_csv-geschfnr = wa_csv_str-geschfnr.
      wa_csv-histotag = wa_csv_str-histotag.
      wa_csv-bw_fx_zins = wa_csv_str-bw_fx_zins.
      wa_csv-bw_fx = wa_csv_str-bw_fx.
      wa_csv-bw_zins = wa_csv_str-bw_zins.
      "Working Area in interne Tabelle hinfügen.
      INSERT wa_csv INTO TABLE it_csv.
      MOVE-CORRESPONDING wa_csv TO wa_bw_fx_zins.
      MODIFY zfash_bw_fx_zins FROM wa_bw_fx_zins.
      WRITE: / wa_csv-geschfnr, ' ', wa_csv-histotag, ' ',
       wa_csv-bw_fx_zins, ' ', wa_csv-bw_fx, ' ', wa_csv-bw_zins.
    ENDLOOP.
  ENDIF.

END-OF-SELECTION.