Skip to Content

Archived discussions are read-only. Learn more about SAP Q&A

optimising the below code

Hi,

How to optimise this code as it giving performance problem..

SELECT * FROM ZZFIELDS WHERE SAP_OBJECT = ZZTOA-SAP_OBJECT AND

AR_OBJECT = ZZTOA-AR_OBJECT

ORDER BY FID.

HITCOUNT = 1.

IF DEBUG_FLAG = 'X'.

ULINE.

ENDIF.

  • Verarbeitung ist unterschiedlich, je nachdem ob die Daten aus

  • einer ArchiveLink Tabelle kommen, aus der Anwendungstabelle oder

  • einer Subtabelle

CASE ZZFIELDS-SUBTAB.

  • Daten stammen aus der ArchiveLink Tabelle (z.B. toa01)

WHEN 'ARCHLINK'.

IF DEBUG_FLAG = 'X'.

WRITE: / ZZFIELDS-FID, 'Suche nach Feld'(014),

ZZFIELDS-FNAME COLOR COL_TOTAL,

'in Tabelle'(015), ZZTOA-TABNAME COLOR COL_TOTAL.

ENDIF.

CONCATENATE 'ZZTOA-' ZZFIELDS-FNAME INTO TEMPSTRING.

FIELD-SYMBOLS TO BUFFER.

PERFORM INSERT_DATA USING 'ARCHLINK'

BUFFER

BUFFER

'1'.

  • Daten stammen direkt aus der Anwendungstabelle

WHEN ''.

IF DEBUG_FLAG = 'X'.

WRITE: / ZZFIELDS-FID, 'Suche nach Feld'(014),

ZZFIELDS-FNAME COLOR COL_TOTAL,

'in Tabelle'(015), SAP_TABELLE COLOR COL_TOTAL.

ENDIF.

  • Daten holen

PERFORM GET_DATA TABLES QUERYTAB

USING SAP_TABELLE

ZZFIELDS-FNAME

CHANGING RC.

  • Fehler, wenn kein Eintrag gefunden

IF RC <> 0.

IF SY-BATCH = 'X'.

MESSAGE I020

WITH ZZTOA-OBJECT_ID.

ELSE.

FORMAT COLOR COL_NEGATIVE.

WRITE: / 'Das Objekt '(016), ZZTOA-OBJECT_ID,

'wurde nicht in der Datenbanktabelle gefunden'(017).

FORMAT COLOR OFF.

ENDIF.

ERROR = 3.

EXIT.

ENDIF.

  • Daten stammen aus einer Subtabelle

WHEN OTHERS.

IF DEBUG_FLAG = 'X'.

WRITE: / ZZFIELDS-FID, 'Suche nach Feld'(014),

ZZFIELDS-FNAME COLOR COL_TOTAL,

'in Tabelle'(015), ZZFIELDS-SUBTAB COLOR COL_TOTAL.

ENDIF.

  • Querystring für Zugriff auf Subtabelle zusammensetzen

PERFORM GET_QUERY_SUBTAB TABLES QUERYTAB2

CHANGING RC.

  • Wenn die Where-Bedingung erfolgreich zusammengesetzt wurde,

  • koennen wir die Werte holen

IF RC = 0.

PERFORM GET_DATA TABLES QUERYTAB2

USING ZZFIELDS-SUBTAB

ZZFIELDS-FNAME

CHANGING RC.

ENDIF.

  • Wenn in der Subtabelle nichts gefunden wurde, oder nicht

  • auf die Subtabelle zugegriffen werden kann, können wir

  • entweder stoppen oder weitermachen (mit leerem Feld)

IF RC <> 0.

IF FORCE_SUB = 'X'.

IF DEBUG_FLAG = 'X'.

WRITE: / ZZFIELDS-FID,

'Es wurden keine Werte gefunden'(018).

ENDIF.

PERFORM INSERT_DATA USING ZZFIELDS-SUBTAB

''

''

'1'.

ELSE.

IF SY-BATCH = 'X'.

MESSAGE I013 WITH ZZFIELDS-SUBTAB.

ELSE.

FORMAT COLOR COL_NEGATIVE.

WRITE: / 'Für Beleg '(019), ZZTOA-OBJECT_ID,

'wurde in der Datenbanktabelle'(020),

ZZFIELDS-SUBTAB,

'kein passender Eintrag gefunden'(021).

ENDIF.

FORMAT COLOR OFF.

ERROR = 5.

EXIT.

ENDIF.

ENDIF.

ENDCASE.

  • Wenn Fehler gesetzt wurde, können wir abbrechen

IF ERROR <> 0.

EXIT.

ENDIF.

ENDSELECT. " ZZFIELDS

Thnaks,

Babu.

Tags:
Former Member

Helpful Answer

by
Not what you were looking for? View more on this topic or Ask a question