Posts Tagged Fonction

Caractères interdits sur BW

Je vous conseille d’aller lire cet article à sa nouvelle adresse : Caractères interdits sur BW

Lors de chargements il peut arriver d’avoir une erreur à cause de caractères interdits : “Value ‘xxxxx’ for characteristic YYYY contains invalid characters

La transaction RSKC permet de définir la liste des caractères autorisés. Classiquement le générique “ALL_CAPITAL” est utilisé. Mais à quoi correspond-il exactement ?

ALL_CAPITAL autorise tous les caractères à l’exception de 31 caractères de contrôle, c’est-à-dire des caractères invisibles généralement utilisés par les programmes de traitement de texte pour gérer la mise en forme. Aucun de ces caractères ne peut être saisi directement dans SAP, seules des interfaces tiers peuvent éventuellement les injecter. En revanche, il est fréquent de les introduire par erreur lors de copier/coller depuis des logiciels tiers (Word, Excel ou Outlook par exemple).

SAP ne sachant pas les interpréter, ils sont affichés comme des # (mais sont conservés dans leur forme d’origine grâce à Unicode).

Voici la liste des 31 caractères interdits par ALL_CAPITAL :

Code Désignation
01 START OF HEADING
02 START OF TEXT
03 END OF TEXT
04 END OF TRANSMISSION
05 ENQUIRY
06 ACKNOWLEDGE
07 BELL
08 BACKSPACE
09 CHARACTER TABULATION
0A LINE FEED (LF)
0B LINE TABULATION
0C FORM FEED (FF)
0D CARRIAGE RETURN (CR)
0E SHIFT OUT
0F SHIFT IN
10 DATA LINK ESCAPE
11 DEVICE CONTROL ONE
12 DEVICE CONTROL TWO
13 DEVICE CONTROL THREE
14 DEVICE CONTROL FOUR
15 NEGATIVE ACKNOWLEDGE
16 SYNCHRONOUS IDLE
17 END OF TRANSMISSION BLOCK
18 CANCEL
19 END OF MEDIUM
1A SUBSTITUTE
1B ESCAPE
1C INFORMATION SEPARATOR FOUR
1D INFORMATION SEPARATOR THREE
1E INFORMATION SEPARATOR TWO
1F INFORMATION SEPARATOR ONE

Pour autoriser ces caractères, il est possible d’utiliser “ALL_CAPITAL_PLUS_HEX” dans RSKC.

Quelques fonctions utiles :
RSKC_ALLOWED_CHAR_GET permet d’obtenir la liste des caractères autorisés saisis dans RSKC.
RSKC_CHAVL_CHECK permet de tester si une valeur va être autorisée par BW.

Un petit fragment de code qui permet de supprimer d’une variable les 31 caractères :

* w_data contient le texte à nettoyer
  DATA: l_length TYPE i,
        l_pos TYPE i,
        lo_not_allowed TYPE REF TO cl_abap_conv_in_ce,
        l_not_allowed_x(32) TYPE x VALUE
'000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F',
        l_not_allowed TYPE string.

* Get list of unauthorized values
  lo_not_allowed = cl_abap_conv_in_ce=>create( input = l_not_allowed_x ).
  lo_not_allowed->read( IMPORTING data = l_not_allowed ).

* search if unauthorized value is found
  IF w_data CA l_not_allowed.
* If found, replace it by space
    l_length = STRLEN( w_data ).
    l_pos = 0.
    DO l_length TIMES.
      IF w_data+l_pos(1) CA l_not_allowed.
        w_data+l_pos(1) = space.
      ENDIF.
      l_pos = l_pos + 1.
    ENDDO.
  ENDIF.

Tags: , , ,

Rendre invisible une fenêtre SAPGUI (un mode)

Je vous conseille d’aller lire cet article à sa nouvelle adresse : Rendre invisible une fenêtre SAPGUI (un mode)

Devenez le Majax de l’ABAP grâce à la fonction SAPGUI_SET_PROPERTY
En effet cette fonction du SAPGUI permet de modifier les propriétés de ce dernier, comme par exemple l’affichage des fenêtres SAP !

CALL FUNCTION 'SAPGUI_SET_PROPERTY'
     DESTINATION 'SAPGUI'
     EXPORTING PROPERTY   = 'VISIBLE'
               VALUE = ' '.

Par ce simple appel votre fenêtre disparait complètement. Heureusement l’opération n’est pas irréversible :

CALL FUNCTION 'SAPGUI_SET_PROPERTY'
     DESTINATION 'SAPGUI'
     EXPORTING PROPERTY   = 'VISIBLE'
               VALUE = 'X'.

vous permettra de faire réapparaitre la fenêtre disparue.

En revanche, les usages productifs de cette fonction semblent assez restreint…
On peut imaginer s’en servir lors de lien OLE avec Excel ou Word (création dynamique de document sur le poste utilisateur)
Si vous trouvez un autre usage ou que vous arrivez à avoir des informations sur les autres propriétés modifiables du SAPGUI par cette fonction, n’hésitez pas a laisser un commentaire.

Tags: ,

Modifications en production

Je vous conseille d’aller lire cet article à sa nouvelle adresse : Modifications en production

Faire des modifications en production, c’est mal, c’est même carrément interdit.
Oui, tout le monde le sait. Mais alors, pourquoi SAP met a disposition ces 2 fonctions ?

DB_EXECUTE_SQL
Cette fonction permet d’exécuter la requête SQL passée en paramètre. Cette requête, au format “EXEC SQL”, peut être INSERT, DELETE, UPDATE… ou tout autre instruction ne nécessitant pas de résultat (SELECT ne renverra rien).

Un exemple inoffensif :

DB_EXECUTE_SQL

DB_EXECUTE_SQL


( DROP INDEX TESTINDEX pour supprimer l’index créé)

RFC_ABAP_INSTALL_AND_RUN
Encore plus dangereux, cette fonction compile et exécute tout code abap passé en paramètre. Il suffit de passer le code dans la table PROGRAM. Le résultat sera contenu dans la table WRITES.

Un exemple qui liste les 10 premier clients :

RFC_ABAP_INSTALL_AND_RUN

RFC_ABAP_INSTALL_AND_RUN

Avec un simple accès à SE37, le mode test permet de faire virtuellement n’importe quelle opération sur un système productif grâce à ces 2 fonctions livrées en standard par SAP.

Tags: , , ,

Fonction RV_CALL_DISPLAY_TRANSACTION

Je vous conseille d’aller lire cet article à sa nouvelle adresse : Fonction RV_CALL_DISPLAY_TRANSACTION

Petit focus sur une fonction “magique” de SAP.

RV_CALL_DISPLAY_TRANSACTION permet d’ouvrir en mode transactionnel tout type (ou presque) de documents SD/MM dans SAP.

function rv_call_display_transaction.
*"----------------------------------------------------------------------
*"*"Globale Schnittstelle:
*"       IMPORTING
*"             VALUE(BUKRS) DEFAULT '    '
*"             VALUE(FCODE) DEFAULT '    '
*"             VALUE(GJAHR) DEFAULT '0000'
*"             VALUE(LGNUM) LIKE  VBFA-LGNUM DEFAULT '   '
*"             VALUE(POSNR) LIKE  VBAP-POSNR DEFAULT '000000'
*"             VALUE(VBELN) LIKE  VBUK-VBELN
*"             VALUE(AUFNR) LIKE  VBAK-AUFNR OPTIONAL
*"             VALUE(VBTYP) LIKE  VBUK-VBTYP DEFAULT ' '
*"             VALUE(FI_APPLI) LIKE  VBFAL-APPLI DEFAULT '  '
*"----------------------------------------------------------------------

Il suffit de renseigner le numéro de document (VBELN) pour ouvrir commande, contrat, livraison sortante ou facture.
Mieux, ajouter le numéro de poste (POSNR) et le document ouvert arrive directement sur ce poste

Mais ce n’est pas tout. Si vous spécifiez le type de document (VBTYP), vous pouvez ouvrir une multitude d’autres documents. Voici un petit tableau des transactions gérées par cette fonction :

VBTYP Transaction Document Champs pris en compte
1 VC03, VC02 Contact VBELN
3 ou 4 VF23, VF22 Liste de factures VBELN
5, 6, M, N, O, P, S, U VF03, VF02 Facture VBELN POSNR
7 VL33N, VL32N Livraison entrante VBELN
8 VT03N, VT02N Transport VBELN
A VA13, VA12 Demande d’offre VBELN POSNR
B VA23, VA22 Offre VBELN POSNR
C, H, I, K, L VA03, VA02 Commande VBELN POSNR
D VA53, VA52 Proposition VBELN POSNR
E, F VA33, VA32 Programme de livraison VBELN POSNR
F, G, 0 VA43, VA42 Contrat VBELN POSNR
Q LT21 Ordre de transfert VBELN LGNUM
R, h, i MB03, MB02 Doc article VBELN
J, T VL03N, VL02N Livraison sortante VBELN POSNR
V ME23N, ME33, ME43, ME53N, ML81N, ME22, ME32K, ME32L, ME42, ME52 Document achat (demande, commande, VBELN
v ME53N Demande d’achat VBELN
W MD83, MD82 Plan de besoin VBELN POSNR
X fct HU_DISPLAY (?) Unité de manutention VBELN
& LX44 Document magasin VBELN LGNUM
a VI03 Frais de transport VBELN
Y VB03 Liste d’exclusion VBELN
. IW33 Ordre AUFNR
: IQS3 Avis AUFNR
1 et FI_APPLI=MM MB03 Doc article VBELN (comme doc article)+GJAHR+BUKRS
2, 3 et FI_APPLI=MM FB03 Piece comptable VBELN (comme doc article)+GJAHR+BUKRS
A et FI_APPLI=MM MIR4 Doc de facturation VBELN (comme doc article)+GJAHR
vide et BUKRS renseigné FB02 Piece comptable VBELN (comme doc article)+GJAHR+BUKRS

Légende : Document accessible sans indiquer de VBTYP
Uniquement pour la fonction DISPLAY
Uniquement pour la fonction CHANGE

Vous pouvez utiliser RV_CALL_CHANGE_TRANSACTION pour ouvrir en modification les mêmes documents.
Ces fonctions sont très utilisées par le standard pour afficher des documents.
A noter, les USEREXIT de LV06AFZZ sont utilisés.

Tags: , , , , ,