Il existe 3 types de table de db :
Sauce :
Lorsqu'on déclare une table interne dans un programme, si on la déclare de type STANDARD TABLE
, mais sans déclarer de clé explicite, le système compose la clé primaire à partir de tous les champs alphanumériques (les champs numériques et les champs de référence ou contenant une table interne sont écartés). (This declares the fields of the default key as the key fields. If the table has a structured line type, the default key contains all non-numeric columns of the internal table that are not and do not contain references or internal tables. If the table has an elementary line type, the default key is the entire line. The default key of an internal table whose line type is an internal table, the default key is empty., Source)
Cela a des conséquences avec les commandes qui travaillent implicitement avec des clés comme INSERT
, MODIFY
ou encore COLLECT
.
Pour donner l'accès en lecture à une table, il suffit de créer une transaction (se93) de type transaction with parameters
.
SE16
Skip initial screen
DATABROWSE-TABLENAME
et en valeur la table ou la vue souhaitée
D'un point de vue autorisation, l'accès à la SE16 n'est pas nécessaire. Les objets testés sont S_TCODE
, évidemment et S_TABU_DIS
, ce qui vérifie donc le groupe d'autorisation adossé à la table ou la vue.
Je n'ai pas l'impression qu'il soit possible d'assigner des objets d'autorisation (par exemple division pour accès à MARA). Dans ce cas, soit passer par un report ALV spé, soit faire un report avec un CALL TRANSACTION
qui appelle notre “transaction with parameters”.
ACTVT
UPDATE
en OpenSQL. /!\ Pas du tout l'équivalent du MODIFY
en OpenSQL !! <!\ S'utilise soit à partir d'un INDEX
ou d'une clé (qui doit donc être déclarée !).DATA itab TYPE TABLE OF plop WITH KEY primary_key k1 k2. " Attention, le clé primaire **DOIT** s'appeler 'primary_key' ! MODIFY TABLE itab FROM wa.