‎2011 Nov 07 5:51 AM
Hello folks,
Can someone please advice mehow to make my codes below more efficient? I cant use a hash table due to non unique data. any help and advice is much appriciated.
Types :
BEGIN OF ty_0UCCONTRACT,
FC_OPBEL TYPE /BI0/OIFC_OPBEL,
FC_BLART TYPE /BI0/OIFC_BLART,
UCCONTRACT TYPE /BI0/OIUCCONTRACT,
END OF ty_0UCCONTRACT.
TYPES:
BEGIN OF l_s_logsys,
LOGSYS TYPE RSDLOGSYS,
END OF l_s_logsys.
DATA : I_0UCCONTRACT TYPE STANDARD TABLE OF ty_0UCCONTRACT,
WA_0UCCONTRACT like line of I_0UCCONTRACT.
DATA: l_t_logsys TYPE l_s_logsys.
IF NOT RESULT_PACKAGE IS INITIAL.
SORT RESULT_PACKAGE BY FC_OPBEL.
SELECT SINGLE LOGSYS
INTO CORRESPONDING FIELDS OF l_t_logsys
FROM /BIC/AZBPI_D0100.
SELECT FC_OPBEL FC_BLART UCCONTRACT
FROM /BIC/AZBPI_D0100 INTO TABLE I_0UCCONTRACT
FOR ALL ENTRIES IN RESULT_PACKAGE
WHERE FC_OPBEL = RESULT_PACKAGE-FC_OPBEL AND LOGSYS =
l_t_logsys-logsys.
ENDIF.
SORT I_0UCCONTRACT BY FC_OPBEL FC_BLART UCCONTRACT.
LOOP AT RESULT_PACKAGE ASSIGNING <RESULT_FIELDS>.
READ TABLE I_0UCCONTRACT INTO WA_0UCCONTRACT
WITH KEY FC_OPBEL =
<RESULT_FIELDS>-FC_OPBEL.
IF SY-SUBRC EQ 0.
<RESULT_FIELDS>-UCCONTRACT = WA_0UCCONTRACT-UCCONTRACT.
<RESULT_FIELDS>-FC_BLART = WA_0UCCONTRACT-FC_BLART.
ENDIF.
ENDLOOP.
‎2011 Nov 07 6:14 AM
Hi,
SORT I_0UCCONTRACT BY FC_OPBEL FC_BLART UCCONTRACT.
LOOP AT RESULT_PACKAGE ASSIGNING <RESULT_FIELDS>.
READ TABLE I_0UCCONTRACT INTO WA_0UCCONTRACT
WITH KEY FC_OPBEL =
<RESULT_FIELDS>-FC_OPBEL....
use a binary search for the read on I_0UCCONTRACT (or use a sorted table for it)
Kind regards,
Hermann
‎2011 Nov 08 9:11 AM
double posting!
Here is nothing to optimize, the LOOP is nonsense, if no MODIFY is done inside.
‎2011 Nov 08 9:33 AM
Hi Siegfried,
Field symbols have been used in the loop and with that i don't think a Modify statement is required.
Please check again!!
Regards,
Pranav.