Created
May 4, 2022 13:55
-
-
Save ClementRoyer/05918e55a00a31911979339ed37b2dd4 to your computer and use it in GitHub Desktop.
Check if value inside a column of an internal table exist in a sap table (ex: check vendors from an excel file)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" | |
| "" check it column value exist in sap | |
| TYPES: BEGIN OF s_struct, | |
| vendor TYPE lifnr, | |
| END OF s_struct. | |
| DATA: sap_data TYPE HASHED TABLE OF s_struct WITH UNIQUE KEY vendor. | |
| DATA: data_to_verify TYPE TABLE OF s_struct. | |
| SELECT lifnr AS vendor | |
| FROM lfa1 | |
| INTO CORRESPONDING FIELDS OF TABLE data_to_verify. | |
| "" S1 - 75ms | |
| "" Complexity : O(logn + n) | |
| SELECT | |
| lifnr AS vendor | |
| FROM lfa1 | |
| INTO CORRESPONDING FIELDS OF TABLE @sap_data. "" O(logn) | |
| "where | |
| LOOP AT data_to_verify ASSIGNING FIELD-SYMBOL(<fs_vendor>). "" O(n) | |
| IF VALUE #( sap_data[ vendor = <fs_vendor>-vendor ] OPTIONAL ) IS NOT INITIAL. "" O(1) | |
| "" Exist | |
| ELSE. | |
| "" Don't exist | |
| ENDIF. | |
| ENDLOOP. | |
| "" S2 - 134ms | |
| DATA: r_lifnr TYPE HASHED TABLE OF lifnr_ran WITH UNIQUE KEY low. | |
| "" Add value on low | |
| r_lifnr = CORRESPONDING #( data_to_verify MAPPING low = vendor ). | |
| "" Add sign & option | |
| MODIFY r_lifnr FROM VALUE #( sign = 'I' option = 'EQ' ) TRANSPORTING sign option WHERE low <> ''. | |
| SELECT COUNT(*) | |
| FROM lfa1 | |
| WHERE lifnr IN @r_lifnr | |
| INTO @DATA(nb_vendor). | |
| IF nb_vendor <> lines( r_lifnr ). | |
| "" some vendor dont exist | |
| ELSE. | |
| "" all vendors exist | |
| ENDIF. |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment