IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

SAP Discussion :

exemple java pour BAPI_GOODSMVT_CREATE


Sujet :

SAP

  1. #1
    Membre régulier Avatar de cybercrisp
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    104
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 104
    Points : 96
    Points
    96
    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

  2. #2
    Membre régulier Avatar de cybercrisp
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    104
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 104
    Points : 96
    Points
    96
    Par défaut
    Mon code ne marche toujours pas, ma quantité de type MENGE ne change pas, une petite idée?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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;
    	 }
    	 
    	 
    }

  3. #3
    Membre régulier Avatar de cybercrisp
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    104
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 104
    Points : 96
    Points
    96
    Par défaut
    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

  4. #4
    Membre régulier Avatar de cybercrisp
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    104
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 104
    Points : 96
    Points
    96
    Par défaut
    Mission reussie seul comme un grand
    Bon, je donne une solution si ca peut servir à quelqu'un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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 "";
    	  }	
    	  }
    	 
    	 
    }

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 0
    Dernier message: 07/11/2014, 18h00
  2. Réponses: 4
    Dernier message: 07/05/2009, 15h38
  3. [débutant]ou mettre un fichier java pour une appli jsp?
    Par zozolh2 dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 11/05/2004, 15h20
  4. java pour gsm
    Par matterazzo dans le forum Développement Mobile en Java
    Réponses: 3
    Dernier message: 11/11/2003, 02h52
  5. recherche exemple simple pour corba en c++
    Par Pinggui dans le forum CORBA
    Réponses: 4
    Dernier message: 06/05/2002, 11h29

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo