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

Error: Work area too small, while updating table

Former Member
0 Likes
1,413

Hi,

I am trying to update entries in a DB Table.

There about 1000 entries at once, but whenever I am trying to do that it gives me error:

SAPSQL_WA_TOO_SMALL

Work area too small for ABAP/4 Open SQL work area operation.

The table to be updated has about 2 million recs.

I am using the FM: RSAR_ODS_API_PUT to update this table. This is a BW FM.

Any tips to get around this error.

Thanks,

CD

1 ACCEPTED SOLUTION
Read only

Former Member
0 Likes
1,195

Can you show us the definition of the work area and the table?

Rob

11 REPLIES 11
Read only

Former Member
0 Likes
1,195

U CLEAR work area and REFRESH internal table.

Read only

0 Likes
1,195

I have an IT which has about same recs as the table to be updated (about 2million).

I load 1000 entries from this IT to another IT (IT_2) and then call the FM with this new IT (IT_2).

But when the program calls the FM, i get this dump,.

Read only

Former Member
0 Likes
1,195

create your work area with all table fields and update it....

Read only

Former Member
0 Likes
1,196

Can you show us the definition of the work area and the table?

Rob

Read only

0 Likes
1,195

example:

data: gt_tab type standard table of mara.

gwa_tab type mara.

Read only

0 Likes
1,195

Table: /BIC/B0000578000 (this a PSA table in BW)


Field                         dataelement              type
REQUEST	                RSREQUNR	CHAR	30
DATAPAKID	RSDATAPID	NUMC	6
RECORD	                RSARECORD	INT4	10
/BIC/ZITM_STAT	/BIC/OW_BICZITM_STAT_AF	CHAR	4
/BIC/ZBIB_ID	/BIC/OW_BICZBIB_ID_AF	NUMC	9
/BIC/ZITM_CLAS	/BIC/OW_0000000481	CHAR	5
/BIC/ZITM_REQ	/BIC/OW_BICZITM_REQ_AF	CHAR	17

IT definition:


DATA: BEGIN OF i_dp OCCURS 0,
        request TYPE rsrequnr,
        datapakid TYPE rsdatapid,
        record TYPE rsarecord,
        zitm_stat(4) TYPE c,
        zbib_id(9) TYPE c,
        zitm_clas(5) TYPE c,
        zitm_req TYPE n,
      END OF i_dp.

DATA: z_dp LIKE i_dp OCCURS 0.

from i_dp I load 1000 entries at a time to z_dp and then call the FM 

  CALL FUNCTION 'RSAR_ODS_API_PUT'
    EXPORTING
      i_request             = req_id
    TABLES
      e_t_data              = i_dp
    EXCEPTIONS
      parameter_failure     = 1
      no_ods_found          = 2
      put_data_failure      = 3
      put_header_failure    = 4
      decide_partno_failure = 5
      write_partno_failure  = 6
      OTHERS                = 7.

This FM will update the table /BIC/B0000578000 with entries of z_dp.

Within the FM program terminates at following point:


* Update the ODS table                          
  UPDATE /BIC/B0000578000 FROM TABLE P_T_DATA.  
  IF SY-SUBRC NE 0.                             
    ROLLBACK WORK.                              
    P_SUBRC = 13.                               
  ENDIF.                                        
ENDFORM.                    "UPDATE_ODS         
                                                

Read only

0 Likes
1,195

I cant create table with type /BIC/B0000578000 coz this table name will be different in all the 3 systems (dev, qa and prod)

Read only

0 Likes
1,195

And how is P_T_DATA declared??

Rob

Read only

0 Likes
1,195

This FM calls:


      PERFORM  ods_put TABLES  e_t_data
                       USING   i_request
                               i_datapakid
                               l_isource
                               l_s_ods-odsname_tech
                               rsods_s_formname-update
                               l_s_ods-progname
                               l_partval
                     CHANGING  l_subrc.

and the form is:


FORM ods_put TABLES p_t_data
              USING p_request      TYPE rsa_request
                    p_datapakid    TYPE rsa_datapakid
                    p_isource      TYPE rsa_isource
                    p_odsname_tech TYPE rsa_odsdbname
                    p_formname     TYPE rsa_formname
                    p_progname     TYPE rsa_progname
                    p_partno       TYPE rspartval   " partition value!!!
           CHANGING p_subrc        TYPE sy-subrc.
.....

In the FM e_t_data is defined as:


*"  IMPORTING
*"     VALUE(I_REQUEST) TYPE  RSARI_REQUESTID
*"     VALUE(I_DATAPAKID) TYPE  RSARI_PACKETNR OPTIONAL
*"     VALUE(I_ISOURCE) TYPE  RSA_ISOURCE OPTIONAL
*"     VALUE(I_ISTYPE) TYPE  RSA_ISTYPE OPTIONAL
*"     VALUE(I_LOGSYS) TYPE  RSA_LOGSYS OPTIONAL
*"     VALUE(I_OLTPSOURCE) TYPE  RSOLTPSOURCER OPTIONAL
*"     VALUE(I_PUTSTATE) TYPE  RSODS_PUTSTATE DEFAULT
*"       RSODS_S_PUT-UPDATE
*"     VALUE(I_SEGMENT_ID) TYPE  RSSEGID OPTIONAL
*"  EXPORTING
*"     VALUE(E_ODSNAME) TYPE  RSA_ODSNAME
*"  TABLES
*"      E_T_DATA
*"  EXCEPTIONS
*"      PARAMETER_FAILURE
*"      NO_ODS_FOUND
*"      PUT_DATA_FAILURE
*"      PUT_HEADER_FAILURE
*"      DECIDE_PARTNO_FAILURE
*"      WRITE_PARTNO_FAILURE

Read only

0 Likes
1,195

solved it,

my it line was not as wide as the line structure of dbtab,

thank you guys for pointing it out..

Read only

0 Likes
1,195

>

> solved it,

> my it line was not as wide as the line structure of dbtab,

>

> thank you guys for pointing it out..

We're happy to take credit for it, but actually, everything was in the error message.

Rob