Quantcast
Channel: SCN: Message List - Business Content and Extractors
Viewing all articles
Browse latest Browse all 5631

Re: RAISE NO_MORE_DATA

$
0
0

Hello David,

 

The problem is with the DO statement.

 

If you remove it the datasource will work just fine.

 

data: i_cont type int4, i_venum type venum, i_matnr type matnr.
  data: wa_pallets TYPE zita_pallets.
* Auxiliary Selection criteria structure
  DATA: L_S_SELECT TYPE SRSC_S_SELECT.
* Maximum number of lines for DB table
  STATICS: S_S_IF TYPE SRSC_S_IF_SIMPLE,
* counter
          S_COUNTER_DATAPAKID LIKE SY-TABIX,
* cursor
          S_CURSOR TYPE CURSOR.
* Select ranges
*  RANGES: L_R_CARRID  FOR ZITA_PALLETS-CARRID,
*          L_R_CONNID  FOR ZITA_PALLETS-CONNID.
* Initialization mode (first call by SAPI) or data transfer mode
* (following calls) ?
  IF I_INITFLAG = SBIWA_C_FLAG_ON.
************************************************************************
* Initialization: check input parameters
*                 buffer input parameters
*                 prepare data selection
* Check DataSource validity
    CASE I_DSOURCE.
      WHEN 'ZITA_PALLETS'.
      WHEN OTHERS.
        IF 1 = 2. MESSAGE E009(R3). ENDIF.
* this is a typical log call. Please write every error message like this
        LOG_WRITE 'E'                  "message type
                  'R3'                 "message class
                  '009'                "message number
                  I_DSOURCE   "message variable 1
                  ' '.                 "message variable 2
        RAISE ERROR_PASSED_TO_MESS_HANDLER.
    ENDCASE.
    APPEND LINES OF I_T_SELECT TO S_S_IF-T_SELECT.
* Fill parameter buffer for data extraction calls
    S_S_IF-REQUNR    = I_REQUNR.
    S_S_IF-DSOURCE = I_DSOURCE.
    S_S_IF-MAXSIZE   = I_MAXSIZE.
* Fill field list table for an optimized select statement
* (in case that there is no 1:1 relation between InfoSource fields
* and database table fields this may be far from beeing trivial)
    APPEND LINES OF I_T_FIELDS TO S_S_IF-T_FIELDS.
  ELSE.                 "Initialization mode or data extraction ?
* Data transfer: First Call      OPEN CURSOR + FETCH
*                Following Calls FETCH only
* First data package -> OPEN CURSOR
    IF S_COUNTER_DATAPAKID = 0.
* Fill range tables BW will only pass down simple selection criteria
* of the type SIGN = 'I' and OPTION = 'EQ' or OPTION = 'BT'.
*      LOOP AT S_S_IF-T_SELECT INTO L_S_SELECT WHERE FIELDNM = 'CARRID'.
*        MOVE-CORRESPONDING L_S_SELECT TO L_R_CARRID.
*        APPEND L_R_CARRID.
*      ENDLOOP.
*
*      LOOP AT S_S_IF-T_SELECT INTO L_S_SELECT WHERE FIELDNM = 'CONNID'.
*        MOVE-CORRESPONDING L_S_SELECT TO L_R_CONNID.
*        APPEND L_R_CONNID.
* Determine number of database records to be read per FETCH statement
* from input parameter I_MAXSIZE. If there is a one to one relation
* between DataSource table lines and database entries, this is trivial.
* In other cases, it may be impossible and some estimated value has to
* be determined.
      OPEN CURSOR WITH HOLD S_CURSOR FOR
select vepo~venum min( vepo~matnr )
  from likp inner join vekp on ( likp~vbeln = vekp~vpobjkey )
            inner join vepo on ( likp~vbeln = vepo~vbeln ) and
                               ( vekp~venum = vepo~venum )
  where vepo~mandt = sy-mandt and likp~mandt = sy-mandt and vekp~mandt = sy-mandt and
        vekp~vstel = '1100'
        and vekp~erdat between '20130101' and '20130102'
  group by vepo~venum.
    ENDIF.                             "First data package ?
i_cont = 1.
*DO.
  FETCH NEXT CURSOR S_CURSOR INTO (i_venum, i_matnr).
  IF sy-subrc <> 0.
      CLOSE CURSOR S_CURSOR.
      RAISE NO_MORE_DATA.
*    EXIT.
  ENDIF.
*Sacamos la familia
  select single extwg into wa_pallets-extwg
  from mara client specified
  where mandt = sy-mandt and matnr = i_matnr.
*Entrega
  select single vbeln into wa_pallets-vbeln
  from vepo client specified
  where mandt = sy-mandt and venum = i_venum.
*Destinatario de la mercancía
  select single kunnr into wa_pallets-kunnr
  from likp client specified
  where mandt = sy-mandt and vbeln = wa_pallets-vbeln.
*Población
  select single ort01 into wa_pallets-ort01
  from kna1 client specified
  where mandt = sy-mandt and kunnr = wa_pallets-kunnr.
  wa_pallets-mandt = sy-mandt.
  wa_pallets-cont  = i_cont.
  select vstel vpobjkey exidv erdat vhilm vtweg vkorg
    from vekp client specified
    into (wa_pallets-vstel, wa_pallets-vpobjkey, wa_pallets-exidv, wa_pallets-erdat, wa_pallets-vhilm, wa_pallets-vtweg, wa_pallets-vkorg)
    where mandt = sy-mandt and venum = i_venum.
  endselect.
  append wa_pallets to E_T_DATA.
  i_cont = i_cont + 1.
*ENDDO.
** Fetch records into interface table.
**   named E_T_'Name of extract structure'.
*    FETCH NEXT CURSOR S_CURSOR
*               APPENDING CORRESPONDING FIELDS
*               OF TABLE E_T_DATA
*               PACKAGE SIZE S_S_IF-MAXSIZE.
*    IF SY-SUBRC <> 0.
*      CLOSE CURSOR S_CURSOR.
*      RAISE NO_MORE_DATA.
*    ENDIF.
   READ TABLE e_t_data INDEX 1.
    IF e_t_data IS INITIAL.
      RAISE no_more_data.
    ENDIF.
  ENDIF.              "Initialization mode or data extraction ?

 

 

The BOLD in your code are the changes I  made and it will work fine.

You just have to remove the DO condition

 

Please let me know if you face any issues with this.

 

Thanks

Amit


Viewing all articles
Browse latest Browse all 5631


<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>