Précédent   Forum des professionnels en informatique > Logiciels > Solutions d'entreprise > ERP > SAP
SAP Forum d'entraide sur SAP et sur la programmation avec le langage ABAP
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 14/08/2008, 09h38   #1
Membre du Club
 
Inscription : août 2006
Messages : 340
Détails du profil
Informations forums :
Inscription : août 2006
Messages : 340
Points : 62
Points : 62
Par défaut passage de paramètre dans une include

Bonjour

Est-il possible de passer des paramètres en entrée dans une inlude.

J'ai mon programme principal ou j'entre un numéro de livraison et j'aimerais pouvoir récupérer ce numéro de livraison dans une include et non pas dans mon programme principal. Est-ce possible?
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
REPORT  z_download_vente_ch_shan   .
INCLUDE y_download_vente_shan_ch.
INCLUDE z_download_livr_ch_shan.


TABLES: vbrk, kna1, vbrp, konv, stxh, vbak, vbap.


SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
PARAMETERS : s_vbel LIKE vbak-vbeln.
PARAMETERS : s_liv LIKE likp-vbeln.

SELECTION-SCREEN END OF BLOCK b1.

if s_liv is not initial.
perform liv_entete.
endif.
J'aimerais si s_liv n'est pas vide alors appel du perform liv_entete qui est dans l'include INCLUDE z_download_livr_ch_shan.
Code :
1
2
3
4
5
6
7
8
9
*&---------------------------------------------------------------------*
*&  Include           Z_DOWNLOAD_LIVR_CH_SHAN                          *
*&---------------------------------------------------------------------*

PERFORM liv_entete.



FORM liv_entete. ENDFORM.
kitty2006 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/08/2008, 09h56   #2
Membre habitué
 
Inscription : juin 2003
Messages : 146
Détails du profil
Informations personnelles :
Âge : 31
Localisation : France, Vienne (Poitou Charente)

Informations forums :
Inscription : juin 2003
Messages : 146
Points : 135
Points : 135
Envoyer un message via MSN à Sh@m@n
Bonjour,

Non la solution que tu essaies de mettre en place n'est pas possible... mais n'est pas bonne non plus.

Si tu veux travailler avec des "INCLUDE" (ce qui est bien car plus propre), tu peux faire comme suit :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
REPORT  z_download_vente_ch_shan.

* Déclaration de tes variables gobales :
INCLUDE z_download_vente_ch_shan_TOP.

* Écran de sélection :
INCLUDE z_download_vente_ch_shan_SCREEN.

START-OF-SELECTION.
* Traitement à effectuer (avec les perform, etc...)
INCLUDE z_download_vente_ch_shan_EXEC.

END-OF-SELECTION.

* Include où seront listés les procédures (FORM)
INCLUDE z_download_vente_ch_shan_FORM.

Dans ton cas, tu utilises des variable qui ne sont déclarées qu'après leur appel, ce n'est donc pas possible.

Cdt,
ShAmY
Sh@m@n est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/08/2008, 10h07   #3
Membre du Club
 
Inscription : août 2006
Messages : 340
Détails du profil
Informations forums :
Inscription : août 2006
Messages : 340
Points : 62
Points : 62
ok merci pour la réponse mais j'ai un peu du mal à te suivre....


REPORT z_download_vente_ch_shan .//Programme principale
INCLUDE y_download_vente_shan_ch. //Contient toutes mes variables et constantes.


INCLUDE z_download_livr_ch_shan. //Nouvelle include.


Citation:
* Déclaration de tes variables gobales :
INCLUDE z_download_vente_ch_shan_TOP.
* Écran de sélection :
INCLUDE z_download_vente_ch_shan_SCREEN.

START-OF-SELECTION.
* Traitement à effectuer (avec les perform, etc...)
INCLUDE z_download_vente_ch_shan_EXEC.

END-OF-SELECTION.

* Include où seront listés les procédures (FORM)
INCLUDE z_download_vente_ch_shan_FORM.

Pour les variables je veux utiliser la même include donc :y_download_vente_shan_ch.

A quoi sert l'écran de sélection dans ton exemple ? Pourquoi 4 includes différentes?
kitty2006 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/08/2008, 10h12   #4
Membre expérimenté
 
Avatar de Celdrøn
 
Homme Celdrøn Valdersen
Consultant SAP
Inscription : juillet 2007
Messages : 438
Détails du profil
Informations personnelles :
Nom : Homme Celdrøn Valdersen
Âge : 26
Localisation : France

Informations professionnelles :
Activité : Consultant SAP

Informations forums :
Inscription : juillet 2007
Messages : 438
Points : 579
Points : 579
Envoyer un message via MSN à Celdrøn
Salut,

En fait, pour faire simple, c'est comme si que tu commençais à faire la recette sans avoir acheté les ingrédients auparavant.

Tu commence TOUJOURS, par déclarer les variables dans un Include TOP, puis ton ecran de séléction, ensuite tes routines. (Fin moi je fais comme ça, ça regroupe les include comme ça ^_^)

Et pour finir tu fais appelle à tes routines (PERFORM) dans ton programme principal.

Voila.
Celdrøn est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/08/2008, 10h55   #5
Membre du Club
 
Inscription : août 2006
Messages : 340
Détails du profil
Informations forums :
Inscription : août 2006
Messages : 340
Points : 62
Points : 62
ok merci j'avais compris le principe mais je ne vois pas comment faire pour passer mon paramètre dans mon include.
kitty2006 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/08/2008, 11h02   #6
Membre expérimenté
 
Avatar de Celdrøn
 
Homme Celdrøn Valdersen
Consultant SAP
Inscription : juillet 2007
Messages : 438
Détails du profil
Informations personnelles :
Nom : Homme Celdrøn Valdersen
Âge : 26
Localisation : France

Informations professionnelles :
Activité : Consultant SAP

Informations forums :
Inscription : juillet 2007
Messages : 438
Points : 579
Points : 579
Envoyer un message via MSN à Celdrøn
Ben tu ne peux pas passer de paramètre à un include de la même manière que pour une routine, et si tu as compris le principe des includes, tu sais que ce n'est rien d'autre que du code caché derrière l' "Instruction" INCLUDE, tout ça afin d'éviter de surcharger ton editeur de code...Donc toutes tes variables globales seront reconnus à l'intérieur même de ton Include, à la seule condition que tes variables globales soient déclarés en amont de ton programme.

J'espère que t'avoir éclairé sur ton problème.

@++.
Celdrøn est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/08/2008, 11h14   #7
Membre du Club
 
Inscription : août 2006
Messages : 340
Détails du profil
Informations forums :
Inscription : août 2006
Messages : 340
Points : 62
Points : 62
ok alors ca j'ai compris ce que j'aimerais faire en fait c'est ca mais le code n'est pas juste

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
TABLES: vbrk, kna1, vbrp, konv, stxh, vbak, vbap.


SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
PARAMETERS : s_vbel LIKE vbak-vbeln.
PARAMETERS : s_liv LIKE likp-vbeln.
SELECTION-SCREEN END OF BLOCK b1.

START-OF-SELECTION.
if s_liv is not initial.
  SUBMIT z_download_livr_ch_shan VIA SELECTION-SCREEN AND RETURN.
endif.
C'est Ceci que j'aimerais faire en fait.

Mon programme principal est déjà bien chargé en code. Je voudrais que si ma variable S_liv est rempli passé dans une include. Ceci me permettrait de d'alléger mon programme principale. Je peux le faire en créant d'autre programme en les appellant avec la commande submit, mais ca ne m'arrange pas car j'aurai 20 programmes à créer. Ya t'il un moyen de tester ma variable est passer dans une include?
kitty2006 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/08/2008, 11h31   #8
Membre expérimenté
 
Avatar de Celdrøn
 
Homme Celdrøn Valdersen
Consultant SAP
Inscription : juillet 2007
Messages : 438
Détails du profil
Informations personnelles :
Nom : Homme Celdrøn Valdersen
Âge : 26
Localisation : France

Informations professionnelles :
Activité : Consultant SAP

Informations forums :
Inscription : juillet 2007
Messages : 438
Points : 579
Points : 579
Envoyer un message via MSN à Celdrøn
Oula, j'ai l'impression que tu te complique un peu la vie, ou alors que tu t'emmele les pinceaux .

Regarde ce que j'ai mis ci-dessous :

Voila ton programme principal.
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Report z_mon report.

INCLUDE z_monreport_top.  "Variables globales

INCLUDE z_monreport_scr.  "Ecran de sélection

INCLUDE z_download_livr_ch_shan.  "Ton Include.

START-OF-SELECTION.
IF s_liv is not initial.

  PERFORM liv_entete.

ENDIF.
Ton include de déclaration de variable : z_monreport_top
Code :
1
2
TABLES: vbrk, kna1, vbrp, konv, stxh, vbak, vbap.
Ton include pour l'ecran de sélection : z_monreport_scr
Code :
1
2
3
4
5
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
PARAMETERS : s_vbel LIKE vbak-vbeln.
PARAMETERS : s_liv LIKE likp-vbeln.
SELECTION-SCREEN END OF BLOCK b1.
Ton include à toi : z_download_livr_ch_shan
Code :
1
2
3
4
5
6
7
8
9
10
11
12
FORM liv_entete. 
* Ta variable s_liv sera reconnu dans cette routine.

   IF s_liv = 'NAWOAK'.
        [...].
   ELSE.
        [...]
   ENDIF.

* Bla, Bla, Bla, etc.
ENDFORM.
Voila, c'est aussi simple que ça.
Si tu veux que je t'explique, y'a pas de suchi.

@++.
Celdrøn est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/08/2008, 12h24   #9
Membre du Club
 
Inscription : août 2006
Messages : 340
Détails du profil
Informations forums :
Inscription : août 2006
Messages : 340
Points : 62
Points : 62
ok ca marche...

Peut-on faire des perform dans des include....J'ai l'impression que non !!!
kitty2006 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/08/2008, 12h32   #10
Membre expérimenté
 
Avatar de Celdrøn
 
Homme Celdrøn Valdersen
Consultant SAP
Inscription : juillet 2007
Messages : 438
Détails du profil
Informations personnelles :
Nom : Homme Celdrøn Valdersen
Âge : 26
Localisation : France

Informations professionnelles :
Activité : Consultant SAP

Informations forums :
Inscription : juillet 2007
Messages : 438
Points : 579
Points : 579
Envoyer un message via MSN à Celdrøn
Rien ne t'empeche de faire des PERFORM dans des Includes, du moment que l'include se trouve à la suite de l'INITIALIZATION, du START-OF-SELECTION ou du END-OF-SELECTION, étant donné que c'est une instruction, que je qualifierais d'instruction executive, au contraire des instructions déclaratives (DATA, CONSTANTS, etc.) qui peuvent être placé n'importe où...
Celdrøn est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/08/2008, 12h45   #11
Membre du Club
 
Inscription : août 2006
Messages : 340
Détails du profil
Informations forums :
Inscription : août 2006
Messages : 340
Points : 62
Points : 62
VOILA CE QUE J'AI COMME CODE DANS MON PROGRAMME PRINCIPAL

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
REPORT  z_download_vente_ch_shan.

INITIALIZATION.

start-of-selection.
INCLUDE y_download_vente_shan_ch.
INCLUDE Y_DOWNLOAD_SELECTION_SHAN_CH.
INCLUDE Y_DOWNLOAD_CONS_CH_SHAN.


INCLUDE Y_DOWNLOAD_LIVR_CH_SHAN.
INCLUDE Y_DOWNLOAD_OFFCOM_CH_SHAN.
end-of-selection.
DANS MON INCLUDE Y_DOWLOAD_LIVR_CH_SHAN. J'AI DES PERFORM AVEC LES FORM ET ENDFORM. LE PROBLEME C'EST QUE CA ME LES INDIQUE EN ERREUR. si je les mets en commentaires alors pas de problème.
kitty2006 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/08/2008, 12h51   #12
Membre du Club
 
Inscription : août 2006
Messages : 340
Détails du profil
Informations forums :
Inscription : août 2006
Messages : 340
Points : 62
Points : 62
Si je mets mon code dans un programme principal et non pas dans une include il n'y a pas de problèmes
kitty2006 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/08/2008, 13h22   #13
Membre expérimenté
 
Avatar de Celdrøn
 
Homme Celdrøn Valdersen
Consultant SAP
Inscription : juillet 2007
Messages : 438
Détails du profil
Informations personnelles :
Nom : Homme Celdrøn Valdersen
Âge : 26
Localisation : France

Informations professionnelles :
Activité : Consultant SAP

Informations forums :
Inscription : juillet 2007
Messages : 438
Points : 579
Points : 579
Envoyer un message via MSN à Celdrøn
Oui, la ton problème vient du fait que la déclaration de ta routine est entouré de code, et ça ce n'est pas correct.

Une déclaration de routine doit être faite soit :
- avant ton START-OF-SELECTION (ou INITIALIZATION, si y'en a une, dans ton exemple l'INITIALIZATION est inutile) mais obligatoirement après la déclaration des données globales.

- après ton tout code, dans ton exemple, après ton END-OF-SELECTION qui est inutile vu que y'a aucune ligne de code derrière.

Dans ton cas, tu ne peux pas mettre dans un appel de routine et sa déclaration dans le même include.

Voila.

@++.
Celdrøn est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/08/2008, 14h00   #14
Membre du Club
 
Inscription : août 2006
Messages : 340
Détails du profil
Informations forums :
Inscription : août 2006
Messages : 340
Points : 62
Points : 62
J'ai pas tout suivi...

Je fais comment alors si je veux dans mon include des performs?
kitty2006 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/08/2008, 14h08   #15
Membre confirmé
 
Inscription : octobre 2007
Messages : 209
Détails du profil
Informations forums :
Inscription : octobre 2007
Messages : 209
Points : 211
Points : 211
je n'ai rien compris mais bon j'essaie quand même

pourquoi passer des variables a un include et pourquoi ne pas passer des variables à ta routine directement (perform xxx using xxx)?

lorsque tu dis j'ai un include avec des "perform" et des "form"
est ce que c'est du style de ton bout de code du début
Code :
1
2
3
4
5
6
7
8
9
*&---------------------------------------------------------------------*
*&  Include           Z_DOWNLOAD_LIVR_CH_SHAN                          *
*&---------------------------------------------------------------------*

PERFORM liv_entete.



FORM liv_entete. ENDFORM.
si oui a quoi sert le perform liv_entete?

ton include est il bien de type include (type i dans les propriétés du programme)
splash1 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/08/2008, 14h10   #16
Membre habitué
 
Inscription : juin 2003
Messages : 146
Détails du profil
Informations personnelles :
Âge : 31
Localisation : France, Vienne (Poitou Charente)

Informations forums :
Inscription : juin 2003
Messages : 146
Points : 135
Points : 135
Envoyer un message via MSN à Sh@m@n
Rebonjour,

l'include de déclaration de tes procédures (FORM.. ENDFORM.) n'est pas le même que celui où tu appelleras tes procédures (PERFORM).

Celui de tes déclarations ne doit pas être entre ton STAR-OF-SELECTION et ton END-OF-SELECTION, alors que celui ayant les appels de procédure y sera.
Sh@m@n est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/08/2008, 14h15   #17
Membre expérimenté
 
Avatar de Celdrøn
 
Homme Celdrøn Valdersen
Consultant SAP
Inscription : juillet 2007
Messages : 438
Détails du profil
Informations personnelles :
Nom : Homme Celdrøn Valdersen
Âge : 26
Localisation : France

Informations professionnelles :
Activité : Consultant SAP

Informations forums :
Inscription : juillet 2007
Messages : 438
Points : 579
Points : 579
Envoyer un message via MSN à Celdrøn
La déclaration et l'appel d'une routine ne doit pas être obligatoirement dans le même include. Tu peux très bien déclarer ta routine dans un include, et faire son appel dans un autre.

Si tu regarde l'exemple que je t'avais donné plus haut, je déclare la routine dans l'include z_download_livr_ch_shan et je l'appelle dans le corps du programme par le biais d'un perform. Mais j'aurais très bien pu inclure un nouvel include dans le corps de mon programme et faire l'appelle de la routine dans ce dernier.
Celdrøn est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/08/2008, 14h31   #18
Membre du Club
 
Inscription : août 2006
Messages : 340
Détails du profil
Informations forums :
Inscription : août 2006
Messages : 340
Points : 62
Points : 62
Merci beaucoup pour l'aide apporter

je faisais un mélange avec mes procédures.


salutations a+
kitty2006 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/08/2008, 14h39   #19
Membre expérimenté
 
Avatar de Celdrøn
 
Homme Celdrøn Valdersen
Consultant SAP
Inscription : juillet 2007
Messages : 438
Détails du profil
Informations personnelles :
Nom : Homme Celdrøn Valdersen
Âge : 26
Localisation : France

Informations professionnelles :
Activité : Consultant SAP

Informations forums :
Inscription : juillet 2007
Messages : 438
Points : 579
Points : 579
Envoyer un message via MSN à Celdrøn
De rien l'ami, au plaisir d'avoir pu t'aider...

@+.

PS : Il était grand temps que tu comprennes, parce que splash1 commençait à s'en méler, et il m'a pas l'air d'être un tendre...il a tendence à fouetter
j'ai la preuve ici
Celdrøn est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/08/2008, 14h47   #20
Membre habitué
 
Inscription : juin 2003
Messages : 146
Détails du profil
Informations personnelles :
Âge : 31
Localisation : France, Vienne (Poitou Charente)

Informations forums :
Inscription : juin 2003
Messages : 146
Points : 135
Points : 135
Envoyer un message via MSN à Sh@m@n
Ouaip, lui c'est un dur!!!
Avec lui, pas de cadeau
Sh@m@n est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 05h18.


 
 
 
 
Partenaires

Hébergement Web