Posts Tagged standard

Journal d’application

Je vous conseille d’aller lire cet article à sa nouvelle adresse : Journal d’application

Lorsque l’on développe un programme spécifique et plus particulièrement une interface, intervient le besoin de gérer des messages d’erreur / alerte / succès et surtout de les sauvegarder pour les restituer ultérieurement.
SAP dispose d’un moyen standard pour gérer les logs applicatifs, y compris pour les programmes spécifiques. Composé d’un ensemble de transactions, programmes, fonctions et tables, cette approche permet d’économiser en coût de développement et de se rattacher à une architecture SAP standard, robuste et complète.

La transaction SLG1 (ou directement le programme SBAL_DISPLAY) permet d’afficher le journal d’application. Via des variantes de sélection, le journal pourra être filtré à convenance, répondant ainsi au besoin de reporting usuel de suivi d’interfaces. Le module fonction BAL_DSP_LOG_DISPLAY permet également d’afficher un log, évitant ainsi d’avoir à gérer un rapport d’exécution d’interface.

SLG1 - Affichage du journal d'application

SLG1 - Affichage du journal d'application

La transaction SLG0 permet de définir ses propres objets / sous-objets.

Pour créer un log dans un programme spécifique, l’usage classique utilise 3 fonctions :

  • BAL_LOG_CREATE qui permet d’initialiser le nouveau log.
  • BAL_LOG_MSG_ADD qui permet d’insérer les messages, 1 par 1
  • BAL_DB_SAVE qui permet de sauvegarder le log en base de données

Les données sont sauvegardées dans les tables BALHDR et BALM
Il est possible d’associer des objets métiers pour chaque message, afin de contextualiser l’erreur.

La fonction APPL_LOG_DB permet d’extraire l’ensemble des données d’un log (pour export vers un autre système ou reporting avancé par exemple).

Enfin la transaction SLG2 (ou directement le programme SBAL_DELETE) permet de supprimer les logs expirés.

SAP fournit une multitude de modules fonctions pour exploiter le journal d’application. Ces fonctions sont toutes préfixée par BAL_*. Afin de faciliter leur utilisation, plusieurs programmes démo sont également livrés par SAP. Ces programmes sont préfixés par SBAL_DEMO_*

Pour plus d’information sur l’utilisation du journal d’application, la documentation est disponible en exécutant le programme SBAL_DOCUMENTATION

Pour exemple, un petit programme qui permet de sauvegarder une entrée dans le journal d’application puis de l’afficher.

* Data pour le log
DATA : s_log_hdr TYPE bal_s_log,
       w_log_hnd TYPE balloghndl,
       t_log_hnd TYPE bal_t_logh,
       s_log_msg TYPE bal_s_msg.

* Ecriture En-tete du log
CLEAR s_log_hdr.
s_log_hdr-object        = 'ZINTERFACE'.
s_log_hdr-subobject     = 'COMMANDES'.
s_log_hdr-extnumber     = 'INT CMD RETOUR PIECE'.
s_log_hdr-aldate_del    = sy-datum + 30. "effacement apres 30j
s_log_hdr-aluser        = sy-uname.
s_log_hdr-alprog        = sy-repid.
s_log_hdr-altcode       = sy-tcode.
s_log_hdr-del_before    = 'X'.

CALL FUNCTION 'BAL_LOG_CREATE'
  EXPORTING
    i_s_log                 = s_log_hdr
  IMPORTING
    e_log_handle            = w_log_hnd
  EXCEPTIONS
    log_header_inconsistent = 1
    OTHERS                  = 2.
IF sy-subrc <> 0.
* error
ENDIF.

* Ecriture d'un message d'erreur
CLEAR s_log_msg.
s_log_msg-msgty = 'E'.
s_log_msg-msgid = 'V1'.
s_log_msg-msgno = '302'.
s_log_msg-msgv1 = '1000125423'. "param : doc number

CALL FUNCTION 'BAL_LOG_MSG_ADD'
  EXPORTING
    i_log_handle     = w_log_hnd
    i_s_msg          = s_log_msg
  EXCEPTIONS
    log_not_found    = 1
    msg_inconsistent = 2
    log_is_full      = 3
    OTHERS           = 4.
IF sy-subrc <> 0.
* error
ENDIF.

* Sauvegarde du log
APPEND w_log_hnd TO t_log_hnd.
CALL FUNCTION 'BAL_DB_SAVE'
  EXPORTING
    i_client         = sy-mandt
    i_t_log_handle   = t_log_hnd
  EXCEPTIONS
    log_not_found    = 1
    save_not_allowed = 2
    numbering_error  = 3
    OTHERS           = 4.
IF sy-subrc <> 0.
* error
ENDIF.

* Affichage du log
CALL FUNCTION 'BAL_DSP_LOG_DISPLAY'
  EXPORTING
    i_t_log_handle       = t_log_hnd
  EXCEPTIONS
    profile_inconsistent = 1
    internal_error       = 2
    no_data_available    = 3
    no_authority         = 4
    OTHERS               = 5.
IF sy-subrc <> 0.
* error
ENDIF.

Tags: , , , ,

Upload/download de fichiers

Je vous conseille d’aller lire cet article à sa nouvelle adresse : Upload/download de fichiers

Si la transaction AL11 permet de visualiser les fichiers sur le serveur, elle ne permet ni de les télécharger, ni d’en ajouter. C’est un vrai manque qui se fait resentir de manière chronique chez la plupart des sociétés utilisatrices de SAP.

Généralement, un programme spécifique est déployé pour répondre à ce besoin. J’ai même fait une version améliorée qui historise les fichiers en utilisant une compression tar+bz2, cela fera peut-être l’objet d’un prochain billet.

Les personne ayant déjà travaillés sur un projet de reprise de données connaissent probablement la transaction SXDA et plus spécifiquement SXDA_TOOLS, qui permet de faire des upload/download entre serveur sap et poste client, même si ce n’est pas son but premier. Cette solution standard s’apparente à un hack car on renseigne les paramètres obligatoires avec des données bidons avant d’appeler la fonction de copie. Néanmoins elle évite de développer un programme spécifique.

SXDA_TOOLS : Upload/Download de fichiers

SXDA_TOOLS : Upload/Download de fichiers

Mais grâce au module EHS (Environment, Health and Safety), 2 transaction 100% dédiées à ces opérations ont vues le jour :

  • CG3Z permet de charger un fichier sur le serveur sap depuis le poste client (upload)
    CG3Z : Upload de fichiers

    CG3Z : Upload de fichiers

  • CG3Y permet de charger un fichier sur le poste client depuis le serveur sap (download)
    CG3Y : Download de fichiers

    CG3Y : Download de fichiers

Testé sur divers systèmes sap, de 4.6b à ECC5, les transactions semblent fonctionner convenablement.

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: , , ,

Reprise de données SAP Standard

Je vous conseille d’aller lire cet article à sa nouvelle adresse : Reprise de données SAP Standard

Voici une petite liste de programmes standards de reprise de données.

Solution Business Object Prog/Transaction Code
Financial Acounting Accounting Documents RFBIBL00
Financial Acounting Assets RAALTD01 (Batch Input)
Financial Acounting RAALTD11 (Direct Input)
Financial Acounting G/L Account Master RFBISA00
Financial Acounting Customer Master RFBIDE00
Financial Acounting Vendor Master RFBIKR00
FI-Bank Data Transfer of Bank Data
FI-Bank Data (Austria) RFBVAT_0
FI-Bank Data (German) RFBVD__2
FI-Bank Data (Great Britain) RFBVGB_0
FI-Bank Data (Italian) RFBVIT_0
FI-Bank Data (Spanish) RFBVES_0
FI-Bank Data (Swiss) RFBVCH_0
Human Resources Master Data (Org. Units) RPUSTD00
Human Resources Payroll Account RPULKT00
Human Resources Personal Planning Data RHALTD00
Materials Management Create Characteristics RCCTBI01
Materials Management Create Classes RCCLBI01
Materials Management Create Classification RCCLBI02
Materials Management Change Classification RCCLRI03
Materials Management Material Master RMDATIND
Materials Management Purchase Info. Records RM06IBI0
Materials Management Purchase Requisitions RM06BBI0
Materials Management Reservations RM07RRES
Materials Management Stocks (Inventory Mgmt) RM07MMBL
Materials Management Vendor Master RFBIKR00
MM (Physical Inventory Doc) Create PID For Cycle Counting RM07ICN1
MM (Physical Inventory Doc) Create PID For Sales Order RM07IE31
MM (Physical Inventory Doc) Create PID For Standard Stock RM07II31
MM (Physical Inventory Doc) Block Material for Phys. Inv. RM07II32
MM (Physical Inventory Doc) Block Material for Phys. Inv. RM07II37
MM (Physical Inventory Doc) Create PID vendor consignmnt RM07IK31
MM (Physical Inventory Doc) Cre. PID ret. transp. packaging RM07IM31
MM (Physical Inventory Doc) Cre. PID Mat. Prov. to Vendor RM07IO31
MM (Physical Inventory Doc) Create PID for project RM07IQ31
MM (Physical Inventory Doc) Cre. PID ret. packaging at cust RM07IV31
MM (Physical Inventory Doc) Cre. PID consignment at cust. RM07IW31
MM (Physical Inventory Doc) Inventory Sampling RM07SVOR
Materials Management (EH & S) Phrases CG31
Materials Management (EH & S) Sources CG32
Materials Management (EH & S) Substances CG33
Plant Maintenance Measuring Point RIIBIP00/IBIP
Plant Maintenance Measurement Document RIIBIP00/IBIP
Plant Maintenance Notifications-General RIIBIP00/IBIP
Plant Maintenance Functional Location RIIBIP00/IBIP
Plant Maintenance Object Link RIIBIP00/IBIP
Plant Maintenance Equipment RIIBIP00/IBIP
Plant Maintenance Maintenance Plan RIIBIP00/IBIP
Plant Maintenance Scheduling Maintenance Plan RIIBIP00/IBIP
Plant Maintenance Order Confirmation RIIBIP00/IBIP
Plant Maintenance Equipment Task List RIIBIP00/IBIP
Plant Maintenance General Maintenance Task List RIIBIP00/IBIP
Plant Maintenance Functional Location Task List RIIBIP00/IBIP
Production Master Data Create BOM RCSBI010 (Batch Input)
Production Master Data Change BOM RCSBI020 (Batch Input)
Production Master Data Create Variant BOM RCSBI030 (Batch Input)
Production Master Data Create BOM With Long Text RCSBI040 (Batch Input)
Production Master Data Routing / Task Lists RCPTRA01 (Batch Input)
Production Planning Demand Management RMMM60BI (Bacth Input)
Production Planning RM60IN00 (Direct Input)
SAP-EIS Several Records for SAP-EIS RKCFILE0
Sales and Distribution Condition Records (Pricing) RV14BTC1
Sales and Distribution Customer Master RFBIDE00
Sales and Distribution Open Sales Orders RVINVB00
Sales and Distribution Invoice External Transactions RVAFSS00
Warehouse Management Storage Bins RLPLAT00
Warehouse Management Stocks on Storage Bins RLBEST00

Tags: , , , ,