J'ai une solution qui comprend une boucle que je voudrais épargner. Je me demande donc si vous connaissez une meilleure façon de le faire.Existe-t-il une alternative à 'at new' dans ABAP?
Mon but est de faire défiler une table standard interne classée par ordre alphabétique. Cette table a deux colonnes: un nom et une table, appelons-la sous-table. Pour chaque sous-table, je veux faire des choses (ouvrir une page xml dans mon environnement xml).
Maintenant, chaque sous-table a un nom correspondant. Je veux regrouper les sous-tables en fonction de la première lettre de ce nom (ce qui signifie, mettre les pages de ces sous-tables sur une page principale -une page principale pour chaque caractère-). Par regroupement de sous-tables, je veux dire, tout en bouclant la table, je veux traiter les sous-tables différemment selon la première lettre de leur nom.
Jusqu'à présent, je suis venu avec la solution suivante:
TYPES: BEGIN OF l_str_tables_extra,
first_letter(1) TYPE c,
name TYPE string,
subtable TYPE REF TO if_table,
END OF l_str_tables_extra.
DATA: ls_tables_extra TYPE l_str_tables_extra.
DATA: lt_tables_extra TYPE TABLE OF l_str_tables_extra.
FIELD-SYMBOLS: <ls_tables> TYPE str_table."Like LINE OF lt_tables.
FIELD-SYMBOLS: <ls_tables_extra> TYPE l_str_tables_extra.
*"--- PROCESSING LOGIC ------------------------------------------------
SORT lt_tables ASCENDING BY name.
"Add first letter column in order to use 'at new' later on
"This is the loop I would like to spare
LOOP AT lt_tables ASSIGNING <ls_tables>.
ls_tables_extra-first_letter = <ls_tables>-name+0(1). "new column
ls_tables_extra-name = <ls_tables>-name.
ls_tables_extra-subtable = <ls_tables>-subtable.
APPEND ls_tables_extra TO lt_tables_extra.
ENDLOOP.
LOOP AT lt_tables_extra ASSIGNING <ls_tables_extra>.
AT NEW first_letter.
"Do something with subtables with same first_letter.
ENDAT.
ENDLOOP.
Je voudrais pouvoir utiliser
AT NEW name+0(1)
au lieu de
AT NEW first_letter
, mais les compensations et les longueurs ne sont pas autorisés .
Vous voyez, je dois inclure cette première boucle pour ajouter une autre colonne à ma table qui est un peu inutile car il n'y a pas de nouvelles informations gagnées.
En outre, je suis intéressé par d'autres solutions parce que j'ai des problèmes avec le cadre plus tard pour différentes raisons. Une façon différente de faire cela pourrait m'aider aussi.
Je suis heureux d'avoir des commentaires à ce sujet! Je ne pouvais pas trouver tout ce qui concerne ce ici sur stackoverflow, mais je pourrais avoir utilisé pas des termes de recherche optimales;)
Quelle version de NetWeaver utilisez-vous? –
J'utilise SAP Logon 750. – Ela
La version SAP Logon n'est pas pertinente, nous avons besoin de la version SAP_BASIS/SAP_ABA (système -> état) – vwegert