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 01/06/2007, 16h37   #1
Membre du Club
 
Avatar de cybercrisp
 
Inscription : octobre 2006
Messages : 104
Détails du profil
Informations forums :
Inscription : octobre 2006
Messages : 104
Points : 69
Points : 69
Par défaut exemple java pour BAPI_GOODSMVT_CREATE

Salut,

Pouvez vous me donner un petit exemple d'un code java qui utilise BAPI_GOODSMVT_CREATE pour la sortie de stocks ... j'ai beaucoup cherché et là faut que j'avance un peu

Merci d'avance pour votre aide et bon weekend
cybercrisp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/06/2007, 09h27   #2
Membre du Club
 
Avatar de cybercrisp
 
Inscription : octobre 2006
Messages : 104
Détails du profil
Informations forums :
Inscription : octobre 2006
Messages : 104
Points : 69
Points : 69
Mon code ne marche toujours pas, ma quantité de type MENGE ne change pas, une petite idée?

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99

package Package_business_layer;
import com.sap.mw.jco.*;
import java.util.Date;
import java.text.SimpleDateFormat;
import java.util.*;

public class BapisortieStock extends Object
 {
 
	private JCO.Client client;
	private String saisieQt;
	
	
	public void setClient(JCO.Client client){
	this.client=client;
	}
	public void setQuantite(String saisieQt){
	this.saisieQt=saisieQt;
	}
	public JCO.Client getClient(){
	return this.client;
	}
	public String getQuantite(){
	return this.saisieQt;
	}
	
	public BapisortieStock(JCO.Client client,String saisieQt)
	{
		this.setClient(client);
		this.setQuantite(saisieQt);
	}	

	 public void BapiChangeQty(String SID,String article,String division,String magasin,String numlot,String cdmvt, String unitqt,String numOrder){
	 	
		 IRepository repository;
		 repository = JCO.createRepository("MYRepository", SID);
		 // Create a new repository// Get a function template from the repository
		 IFunctionTemplate ftemplate = repository.getFunctionTemplate("BAPI_GOODSMVT_CREATE");
		 // Create a function from the template
		 JCO.Function function = new JCO.Function(ftemplate);
		 JCO.Client client = JCO.getClient(SID);
		 String thisdate=this.getFilterDate();
		 JCO.ParameterList input = function.getImportParameterList();
		 
		JCO.Structure goodsheader = function.getImportParameterList().getStructure("GOODSMVT_HEADER");
		JCO.Structure goodscode = function.getImportParameterList().getStructure("GOODSMVT_CODE");
		JCO.Table inputTablesI = function.getTableParameterList().getTable("GOODSMVT_ITEM");
		
		//pour 	GOODSMVT_HEADER
		goodsheader.setValue(thisdate,"PSTNG_DATE");
		goodsheader.setValue(thisdate,"DOC_DATE");
						
		//pour GOODSMVT_CODE, voir si c'est bien 01
		goodscode.setValue("01","GM_CODE");//Affectation du code à la transaction pour utilisation BAPI, toujours longueur 2
 		
 		inputTablesI.deleteAllRows();
		inputTablesI.appendRow();
        //pour GOODSMVT_ITEM
		inputTablesI.setValue(numOrder,"ORDERID");//Numéro d'ordre AUFNR de longueur 12
		inputTablesI.setValue(article,"MATERIAL");//numero article
		inputTablesI.setValue(division,"PLANT");//division
		inputTablesI.setValue(magasin,"STGE_LOC");//magasin
		inputTablesI.setValue(numlot,"BATCH");//numero de lot en CHARG_D
		inputTablesI.setValue(cdmvt,"MOVE_TYPE");//Code mouvement (gestion des stocks) bwart
		inputTablesI.setValue(this.getQuantite(),"ENTRY_QNT"); //saisie user
		inputTablesI.setValue(unitqt,"ENTRY_UOM");//Unité de quantité de saisie option?
		
		//Appel de la fonction et on prie
		client.execute(function); 
	 }
	 
	 public String getFilterDate()
	 {
 		Date d = new Date(); 
		SimpleDateFormat f = new SimpleDateFormat("dd/MM/yyyy"); 
		String tmpdate=f.format(d);
		String datefiltre=stokenDate(tmpdate);
		return datefiltre;
	 }
	 
	 public String stokenDate(String date)
	 {
		String token ="";
		String tmp=""; 
		StringTokenizer tokenizer = new StringTokenizer(date, "/");
		int count = tokenizer.countTokens();
		while (tokenizer.hasMoreTokens())
		{
		token = tokenizer.nextToken();
		tmp=token+tmp;
		}
		System.out.println("Date: "+tmp);
	 	return tmp;
	 }
	 
	 
}
__________________
Inutile mais indispensable....
cybercrisp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/06/2007, 09h30   #3
Membre du Club
 
Avatar de cybercrisp
 
Inscription : octobre 2006
Messages : 104
Détails du profil
Informations forums :
Inscription : octobre 2006
Messages : 104
Points : 69
Points : 69
J'ai testé ce code sur un article, ca marche pas! j'ai pensé que je n'avais pas les droits de modifications dessus mais aucune exception n'est levée
__________________
Inutile mais indispensable....
cybercrisp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/06/2007, 17h28   #4
Membre du Club
 
Avatar de cybercrisp
 
Inscription : octobre 2006
Messages : 104
Détails du profil
Informations forums :
Inscription : octobre 2006
Messages : 104
Points : 69
Points : 69
Mission reussie seul comme un grand
Bon, je donne une solution si ca peut servir à quelqu'un
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287

package Package_business_layer;
import com.sap.mw.jco.*;
import java.util.Date;
import java.text.SimpleDateFormat;
import java.util.*;
import java.io.*;

public class BapicallGeneric extends Object{
 
	private JCO.Client client;
	private String saisieQt,unitQt,codemvt,screen;
	private IRepository repository;
	public  String center,num,vendor,lot;
	
	public void setReport(IRepository repository){
		this.repository=repository;
	}
	public IRepository getReport(){
		return this.repository;
	}
	public void setClient(JCO.Client client){
		this.client=client;
	}
	public void setQuantite(String saisieQt){
		this.saisieQt=saisieQt;
	}
	public JCO.Client getClient(){
		return this.client;
	}
	public String getQuantite(){
		return this.saisieQt;
	}
	
	public void setUnitqt(String unitQt){
			this.unitQt=unitQt;
	}
	public String getUnitQt(){
		return this.unitQt;
	}
	
	
	
	
	public BapicallGeneric(JCO.Client client,String saisieQt,String unitQt,IRepository repository){
		this.client=client;
		this.setClient(client);
		this.saisieQt=saisieQt;
		this.setQuantite(saisieQt);
		this.repository=repository;
		this.setReport(repository);
		this.unitQt=unitQt;
		this.setUnitqt(unitQt);
		
	}	

	 public void BapiChangeQty(String SID,String article,String division,String magasin,String numlot,
	 String cdmvt,String numOrder,String codemvt,String screen,String laquantite){
		
		int casenum=-1;
	 	
		IRepository myreport=this.getReport();
		System.out.println("division:"+division);
		System.out.println("magasin:"+magasin);
		System.out.println("article:"+article);
		System.out.println("qt:"+this.getQuantite()+"\n");
		
		
		//sortie stock sur cout
		if(codemvt.equals("201")&& screen.equals("2"))
		{
		System.out.println("Centre de couts: ");
		center=this.saisie();
		System.out.println("center:"+ center);
		casenum=1;
		}
		//sortie consignée sur cout
		if(codemvt.equals("201")&& screen.equals("3"))
		{
		System.out.println("Fournisseur: ");
		vendor=this.saisie();
		System.out.println("Fournisseur:"+ vendor);
		casenum=3;
		}
		//sortie stock sur ordre
		if(codemvt.equals("261")&& screen.equals("4"))
		{
		System.out.println("Numero d'ordre: ");
		num=this.saisie();
		System.out.println("Numero ordre filtré en longueur 12 par la suite: "+ num);
		casenum=2;
		}
		//sortie consignée sur ordre
		if(codemvt.equals("261")&& screen.equals("5"))
		{
		System.out.println("Numero d'ordre: ");
		num=this.saisie();
		System.out.println("Numero ordre filtré en longueur 12 par la suite: "+ num);
		System.out.println("Fournisseur: ");
		vendor=this.saisie();
		System.out.println("Fournisseur:"+ vendor);
		casenum=4;
		}
		//inventaire de stocks
		if(codemvt.equals("702")&& screen.equals("6"))
		{
		System.out.println("Numero du lot: ");
		lot=this.saisie();
		casenum=5;
		}
		//inventaire consigné
		if(codemvt.equals("702")&& screen.equals("7"))
		{
		System.out.println("Numero du lot: ");
		lot=this.saisie();
		System.out.println("Fournisseur: ");
		vendor=this.saisie();
		casenum=6;
		}
		

		
	    
		//Create a function from the template
		IFunctionTemplate ftemplate = myreport.getFunctionTemplate("BAPI_GOODSMVT_CREATE");
		JCO.Function function = new JCO.Function(ftemplate);
			
		//creation du commit
		IFunctionTemplate ftemp =myreport.getFunctionTemplate("BAPI_TRANSACTION_COMMIT"); 
		JCO.Function jcoCommit = new JCO.Function(ftemp);
	
		JCO.Field commitField =	jcoCommit.getImportParameterList().getField("WAIT"); 
		commitField.setValue("X"); 
        		
		JCO.Client client = JCO.getClient(SID);
		String thisdate=this.getFilterDate();
		//JCO.ParameterList input = function.getImportParameterList();
		 
		JCO.Structure goodsheader = function.getImportParameterList().getStructure("GOODSMVT_HEADER");
		JCO.Structure goodscode = function.getImportParameterList().getStructure("GOODSMVT_CODE");
		JCO.Table inputTablesI = function.getTableParameterList().getTable("GOODSMVT_ITEM");
		JCO.Structure goodshe = function.getExportParameterList().getStructure("GOODSMVT_HEADRET");
		
		
		//pour 	GOODSMVT_HEADER
		goodsheader.setValue(thisdate,"PSTNG_DATE");
		goodsheader.setValue(thisdate,"DOC_DATE");
						
		//pour GOODSMVT_CODE
		goodscode.setValue("03","GM_CODE");//Affectation du code à la transaction pour utilisation BAPI, toujours longueur 2
 		
		inputTablesI.deleteAllRows();
		inputTablesI.appendRow();
     
    
		//pour GOODSMVT_ITEM
      	inputTablesI.setValue(article,"MATERIAL");//numero article
		inputTablesI.setValue(division,"PLANT");//division
		inputTablesI.setValue(magasin,"STGE_LOC");//magasin
		
		if(casenum!=5)
		{
		inputTablesI.setValue(numlot,"BATCH");//numero de lot en CHARG_D
		}
		inputTablesI.setValue(codemvt,"MOVE_TYPE");//Code mouvement (gestion des stocks) bwart
		if(casenum==5 || casenum==6)
		{
		inputTablesI.setValue(lot,"BATCH");
		inputTablesI.setValue("1","STCK_TYPE");
		}
		if(casenum==3 || casenum==4 || casenum==6){
		inputTablesI.setValue(this.filtre(vendor,10),"VENDOR");
		inputTablesI.setValue("K","SPEC_STOCK");
		}
		if(casenum ==1 || casenum==3)
		{
		inputTablesI.setValue(center,"COSTCENTER");//centre de couts KOSTL
		}
		if(casenum ==2 || casenum==4)
		{
		inputTablesI.setValue(this.filtre(num,12),"ORDERID");//centre de couts KOSTL
		}
		int qte=Integer.parseInt(this.getQuantite());
		inputTablesI.setValue(qte,"ENTRY_QNT"); //saisie user
		inputTablesI.setValue(this.getUnitQt(),"ENTRY_UOM");//Unité de quantité de saisie option?
			
		
	 		
		//Appel de la fonction et on prie pour QUE CA MARCHE
		client.execute(function); 
		
		
		String bapireturn=function.getTableParameterList().getTable("RETURN").getString("MESSAGE");
		String bapiId=function.getTableParameterList().getTable("RETURN").getString("ID");
		String bapiType=function.getTableParameterList().getTable("RETURN").getString("TYPE");
		String bapiSystem=function.getTableParameterList().getTable("RETURN").getString("SYSTEM");
		String bapiField=function.getTableParameterList().getTable("RETURN").getString("FIELD");
		String bapiRow=function.getTableParameterList().getTable("RETURN").getString("ROW");
		String bapiParameter=function.getTableParameterList().getTable("RETURN").getString("PARAMETER");
		String bapiLogno=function.getTableParameterList().getTable("RETURN").getString("LOG_NO");
		String bapiLogmsgno=function.getTableParameterList().getTable("RETURN").getString("LOG_MSG_NO");
		String bapiMessv1=function.getTableParameterList().getTable("RETURN").getString("MESSAGE_V1");
		String bapiMessv2=function.getTableParameterList().getTable("RETURN").getString("MESSAGE_V2");
		String bapiMessv3=function.getTableParameterList().getTable("RETURN").getString("MESSAGE_V3");
		String bapiMessv4=function.getTableParameterList().getTable("RETURN").getString("MESSAGE_V4");
		
		JCO.Table inputTables = function.getTableParameterList().getTable("GOODSMVT_ITEM");
	
		
		
		
		System.out.println("bapiret: "+bapireturn);//bapiret.toString());
		/*System.out.println("bapiId: "+bapiId);
		System.out.println("bapiType: "+bapiType);
		System.out.println("bapiSystem: "+bapiSystem);
		System.out.println("bapiField: "+bapiField);
		System.out.println("bapiRow: "+bapiRow);
		System.out.println("bapiParameter: "+bapiParameter);
		System.out.println("bapiLogno: "+bapiLogno);
		System.out.println("bapiLogmsgno: "+bapiLogmsgno);
		System.out.println("bapiMessv1: "+bapiMessv1);
		System.out.println("bapiMessv2: "+bapiMessv2);
		System.out.println("bapiMessv3: "+bapiMessv3);
		System.out.println("bapiMessv4: "+bapiMessv4);*/
		
	
		client.execute(jcoCommit);
	  }
	 
	 public String getFilterDate(){
		Date d = new Date(); 
		SimpleDateFormat f = new SimpleDateFormat("dd/MM/yyyy"); 
		String tmpdate=f.format(d);
		String datefiltre=stokenDate(tmpdate);
		return datefiltre;
	 }
	 
	 public String stokenDate(String date){
		String token ="";
		String tmp=""; 
		StringTokenizer tokenizer = new StringTokenizer(date, "/");
		int count = tokenizer.countTokens();
		while (tokenizer.hasMoreTokens())
		{
		token = tokenizer.nextToken();
		tmp=token+tmp;
		}
		System.out.println("Date: "+tmp);
		return tmp;
	 }
	 
	
	public String filtre(String qt, int max)
			{
				String ch="0";
				String lachaine="";
				int longueur=qt.length();
				int j=0;
	if(longueur!=max){
				for(int i=longueur;i<max;i++)
				    {
					lachaine="0"+lachaine;
					j++;
					}
				lachaine+=qt;
				return lachaine;
				}
	else return lachaine;
		 }
		 
	public String saisie() 
	  {
	  try{  
	  BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
	  String tmp=br.readLine();
	  return tmp;
	  }
	  catch(Exception e)
	  {System.out.println("Erreur saisie!");
	   e.printStackTrace();	
	   return "";
	  }	
	  }
	 
	 
}
__________________
Inutile mais indispensable....
cybercrisp 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 07h21.


 
 
 
 
Partenaires

Hébergement Web