Skip to Content
0
Jun 20, 2020 at 03:42 PM

BDC for "IQ01" Serialized IS-U Equipment running 1000s of Devices - Performance

527 Views Last edit Jun 20, 2020 at 03:44 PM 3 rev

Hello people

Any pointers on BDC running transactions such as "IQ01" to create IS-U Devices?

We have created such functionality, yet it is a real Performance-drain when running in Mass-scenario (our typical "Mass scenario" is generating 2000-3000 Devices in one Step) looping over a number of pre-determined Serialnumbers and executing the BDC for evey Device in a Synchronous way. This is important, as in Asynchronous way, there is a risk of only generating a certain % of the intended amount of devices, due to locking issues on SAP-Objects etc.

So in this Mass scenario, the input-data is always the same, apart from the SerialNumber (Material, Producer, etc. are all the same) ...

Consider this (pseudo-)Code :

  LOOP AT so_sernr ASSIGNING FIELD-SYMBOL(<sernr>).
    REFRESH: bdcdata,
             lt_bdcmsg.
    CLEAR: lt_bdcmsg.
    PERFORM bdc_dynpro USING  'SAPMIEQ0'               '1000'.
    PERFORM bdc_field  USING: 'BDC_OKCODE'             '/00',
                              'RISA0-MATNR'            material,  "always the same
                              'RISA0-SERNR'            <sernr>-low,
                              'RM63E-EQTYP'            'I'.       "IS-U Equipment
    PERFORM bdc_dynpro USING  'SAPLE10R'               '1100'.
    PERFORM bdc_field  USING: 'BDC_OKCODE'             '=SAVE',
                              'EDEVICED-HERST'         producer,  "always the same
                              'EDEVICED-AB'            sy-datum,  "always the same
*                             'EDEVICED-BAUJJ'         buildyear,
                              'EDEVICED-BESITZ'        '03'.
    PERFORM bdc_dynpro USING  'SAPMIEQ0'               '0101'.
    PERFORM bdc_field  USING: 'BDC_OKCODE'             '=BU'.
    PERFORM bdc_transaction TABLES lt_bdcmsg
                            USING 'IQ01'
                                  'X'
                                  'N'
                                  'S'.      "Sync processing, Async Locking issues

    LOOP AT lt_bdcmsg ASSIGNING FIELD-SYMBOL(<bdcmsg>)
      WHERE msgtyp CA 'EAX'.
      CLEAR return.
      return-type       = <bdcmsg>-msgtyp.
      return-id         = <bdcmsg>-msgid.
      return-number     = <bdcmsg>-msgnr.
      return-message_v1 = <bdcmsg>-msgv1.
      return-message_v2 = <bdcmsg>-msgv2.
      return-message_v3 = <bdcmsg>-msgv3.
      return-message_v4 = <bdcmsg>-msgv4.
      APPEND return TO returntab[].
      EXIT.
    ENDLOOP.
    UNASSIGN <bdcmsg>.
  ENDLOOP.

Any way to optimize this or experience with BatchInput in general or specifically for "IQ01" or "IE01"?

As we need to generate IS-U Equipments, I'm really stuck because of non-existing BAPI's ... Any other Alternatives than BDC?


Thanks for your suggestions

Nic T.