cancel
Showing results for 
Search instead for 
Did you mean: 

Mass Update a Zfield in Std Table with Split & Job submit

ricky_shaw
Contributor
0 Kudos

Hi,
I need to do a mass update for a single Z*custom field of  a STD table(say EANL).
The no. of records expected are around 30 million recs.

I am using Open cursor & then Fetch cursor technique to get 50000 records(package) at a time and update it in a do..enddo loop. Ofcourse 'Package' is a selection screen field.

Is this a right approach?

Now how do i make this fetch cursor & update(using FM) to submit into different background jobs?

I know there are std FM's like FM's JOB_OPEN, SUBMIT Program & Job_ClOSE. But how do i fit these pieces together(fetch cursor + Update+ jobs) to make use these FM's into my program?

Can anyone  please suggest.

Thanks

thomas_mller13
Participant
0 Kudos
If you access the table in a fully qualified manner yo do not need that batch jobs. You can do the task in a single loop and commit some bulks. That will not run very long.
thomas_mller13
Participant
0 Kudos

Your code must look like this:

thomas_mller13_0-1713986610634.png

 

im_repid is name of your program. This method schedules your program in batch. But you can schedule your program directly in batch with TA Se36. If you want to process certain bulks you have to select the bulks and schedule the bulks with this method. This is more complicated, since a bulk of 50000 is to large for a report parameter. You could think about writing the key fields in a temp database table and select teh bulks from this table using a bulk id.

 

ricky_shaw
Contributor
0 Kudos
Sorry there is correction..it is 30 millions recs & NOT 3 million recs
View Entire Topic
Szczerbowski
Active Participant
0 Kudos

Hi, 

My routine inserts about 18mln rows every now and then.
It's built from a report that has all the needed data, loops over them and every 'step' like 2mln commits with an update module to the backend:


    LOOP AT user_items ASSIGNING FIELD-SYMBOL(<ins>).
      INSERT <ins> INTO TABLE inserted.
      IF linesinserted >= 2000000 OR sy-tabix num_of_all_lines.
      CALL FUNCTION 'YIMT_BW_AUTH_DB' IN UPDATE TASK
         TABLES inserted inserted.
        CLEAR inserted.
        COMMIT WORK AND WAIT.
ENDIF.
ENDLOOP.

M.

ricky_shaw
Contributor
0 Kudos

Hi Szczerbowski, My Question is about the way to schedule this as Background Job. My DB update is working fine.

Did you happened to schedule it as background job ? If so, can you please suggest me the code?

Thanks