Suche nach Materialnummern ohne führende Nullen

Rund um Java und SAP®.

Suche nach Materialnummern ohne führende Nullen

Postby Rosemarie4328 » Tue Apr 25, 2006 2:37 pm

Hallo zusammen,

ich habe mal eine Frage zum Aufruf eines FuBa's aus einem Java IView:

Ich möchte gerne über ein Eingabefeld eine Materialnummer oder einen Teil davon eingeben können. Abhängig davon, ob ein Wildcardzeichen (*) benutzt wird, sollen entweder alle passenden Materialnummern oder genau die Eingegebene angezeigt werden.

Dazu habe ich den BAPI_MATERIAL_GETLIST aufgerufen und in der Übergabetabelle MATNRSELECTION den Wert des Feldes übergeben.
Leider funktioniert das so nicht ganz, weil die interne Suche nach nach dem Material 4711 fehlschlägt. Es wird nämlich nicht genau nach der Materialnummer 4711 gesucht, sondern intern nach 00000000004711.
Als Benutzer möchte ich aber nur 4711 eingeben und genau diese Nummer angezeigt bekommen.

Leider ist der FuBa CONVERSION_EXIT_MATN1_INPUT für die Nummernkonvertierung von extern->intern nur für den internen Gebrauch gedacht (nicht RFC-fähig)!

Wie bekomme ich nun die korrekten Ergebnisse, wenn der Benutzer a) 4711 und b) *11 eingibt?!

Oder liege ich komplett falsch?

Hier mein bisheriger Versuch:

Code: [Select all] [Expand/Collapse] [Download] (Untitled.txt)
  1.       JCO.Repository repository = new JCO.Repository("PDKM", connection);
  2.       IFunctionTemplate template = repository.getFunctionTemplate("BAPI_MATERIAL_GETLIST");
  3.       JCO.Function function = template.getFunction();
  4.      
  5.       function.getImportParameterList().setValue("1000","MAXROWS");
  6.      
  7.       JCO.Table tableMaterial = function.getTableParameterList().getTable("MATNRSELECTION");
  8.  
  9.       if (material.startsWith("*") && material.endsWith("*")) {
  10.          tableMaterial.appendRow();
  11.          tableMaterial.setValue("I","SIGN");
  12.          tableMaterial.setValue("CP","OPTION");
  13.          tableMaterial.setValue(material,"MATNR_LOW");        
  14.       }
  15.       else if (material.startsWith("*") || (material.endsWith("*"))) {
  16.          tableMaterial.appendRow();
  17.          tableMaterial.setValue("I","SIGN");
  18.          tableMaterial.setValue("CP","OPTION");
  19.          tableMaterial.setValue(material,"MATNR_LOW");        
  20.      
  21.       }
  22.       else if (!(material.startsWith("*")) && !(material.endsWith("*"))) {
  23.          tableMaterial.appendRow();
  24.          tableMaterial.setValue("I","SIGN");
  25.          tableMaterial.setValue("EQ","OPTION");
  26.          tableMaterial.setValue(material,"MATNR_LOW");        
  27.      
  28.       }
  29.       else {
  30.          tableMaterial.appendRow();
  31.          tableMaterial.setValue("I","SIGN");
  32.          tableMaterial.setValue("CP","OPTION");
  33.          tableMaterial.setValue(material),"MATNR_LOW");        
  34.          
  35.       }
  36.  
  37.  
GeSHi ©


Bin für jede Hilfe dankbar!!
Rosemarie4328
..
..
 
Posts: 71
Joined: Tue Apr 25, 2006 2:37 pm

Re: Suche nach Materialnummern ohne führende Nullen

Postby ewx » Tue Apr 25, 2006 2:48 pm

shapoc hat geschrieben:Leider ist der FuBa CONVERSION_EXIT_MATN1_INPUT für die Nummernkonvertierung von extern->intern nur für den internen Gebrauch gedacht (nicht RFC-fähig)!

Dann schreib doch am einfachsten einen am besten gleich generischen RFc-fähigen baustein, der diesen Baustein aufruft.
Mit generisch meine ich, dass du die Kovertierungsroutine mitgibst und der Baustein dann den richtigen FUBA zusammenbaut und aufruft:
fuba = "CONVERSION_EXIT_" konvroutine + "_INPUT"
Call Function fuba ...

Gruß, Enno
ewx
.....
.....
 
Posts: 2840
Joined: Mon Aug 04, 2003 9:02 pm

Postby Rosemarie4328 » Tue Apr 25, 2006 2:59 pm

Ja, daran habe ich auch schon gedacht. Hatte aber eher gehofft, dass es vielleicht einen anderen Weg gibt...
Werd das mal ausprobieren!

Trotzdem bleibt noch die Frage, wie ich denn nun die Suchparameter korrekt übergeben muss, damit ich das gewünschte Ergebnis erhalte.
Irgendwie habe ich das mit den Wildcards und den Logical Expressions noch nicht so im Griff... :-( !
Rosemarie4328
..
..
 
Posts: 71
Joined: Tue Apr 25, 2006 2:37 pm

Postby Rosemarie4328 » Wed Apr 26, 2006 10:18 am

Danke nochmal Enno für deinen Tipp.

Hier mein neu erstellter, RFC-fähiger FuBa:

FUNCTION Z_CONVERSION_EXIT_INPUT.
*"----------------------------------------------------------------------
*"*"Local Interface:
*" IMPORTING
*" VALUE(CONVERSION_ROUTINE) DEFAULT 'MATN1'
*" VALUE(INPUT)
*" EXPORTING
*" VALUE(OUTPUT)
*" EXCEPTIONS
*" LENGTH_ERROR
*"----------------------------------------------------------------------

Data: FuBa(50) type c.

condense CONVERSION_ROUTINE NO-GAPS.
concatenate 'CONVERSION_EXIT_' CONVERSION_ROUTINE '_INPUT' into FuBa.

CALL FUNCTION FuBa
EXPORTING
input = INPUT
IMPORTING
OUTPUT = OUTPUT
EXCEPTIONS
LENGTH_ERROR = 1
OTHERS = 2
.
IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.

ENDFUNCTION.


Jetzt muss ich mich um die Suchfunktionalität kümmern. Also falls diesbzgl. noch jemand einen Tipp hat, wär ich sehr dankbar.

Gruß,
Andy
Rosemarie4328
..
..
 
Posts: 71
Joined: Tue Apr 25, 2006 2:37 pm

Postby Rosemarie4328 » Fri May 12, 2006 9:10 am

Hallo nochmal,

ich habe noch ein bischen experimentiert und nun bin ich in der Lage mit dem unten aufgeführten FuBa die für mich relevanten Konvertierungen (MatNr und EquNr) in beide Richtungen (Input/Output) durchzuführen!

Code: [Select all] [Expand/Collapse] [Download] (Untitled.txt)
  1. FUNCTION z_conversion_exit .
  2. *"----------------------------------------------------------------------
  3. *"*"Local Interface:
  4. *"  IMPORTING
  5. *"     VALUE&#40;DIRECTION&#41; TYPE  FUNC_NAME
  6. *"     VALUE&#40;CONVERSION_ROUTINE&#41; TYPE  FUNC_NAME DEFAULT 'MATN1'
  7. *"     VALUE&#40;INPUT&#41; TYPE  TEXT
  8. *"  EXPORTING
  9. *"     VALUE&#40;OUTPUT&#41; TYPE  TEXT
  10. *"  EXCEPTIONS
  11. *"      LENGTH_ERROR
  12. *"----------------------------------------------------------------------
  13.  
  14.  
  15.   DATA: fuba like E071-OBJ_NAME,
  16.         exists like SXST_PARE-EXIST.
  17.  
  18.   CONDENSE direction NO-GAPS.
  19.  
  20.   if conversion_routine EQ ''.
  21.     conversion_routine = 'MATN1'.
  22.   endif.
  23.   CONDENSE conversion_routine NO-GAPS.
  24.   CONCATENATE 'CONVERSION_EXIT_' conversion_routine '_' direction INTO fuba.
  25.  
  26.   CALL FUNCTION 'CHECK_EXIST_LIMU_FUNC'
  27.     EXPORTING
  28.       name                  = fuba
  29. *     AGGNAME               = ' '
  30. *     MTYPE                 = ' '
  31.    IMPORTING
  32.      EXIST                 = exists
  33. *   EXCEPTIONS
  34. *     TR_INVALID_TYPE       = 1
  35. *     OTHERS                = 2
  36.             .
  37.   IF sy-subrc <> 0.
  38. *   MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
  39. *           WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  40.   ENDIF.
  41.  
  42.  
  43.  
  44.   IF exists EQ 'X'.
  45.  
  46.     CALL FUNCTION fuba
  47.       EXPORTING
  48.         input        = input
  49.       IMPORTING
  50.         output       = output
  51.       EXCEPTIONS
  52.         length_error = 1
  53.         OTHERS       = 2.
  54.     IF sy-subrc <> 0.
  55. * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
  56. *         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  57.     ENDIF.
  58.  
  59.   ELSE.
  60.     output = input.
  61.   ENDIF.
  62.  
  63.  
GeSHi ©


Danke Enno nochmal, für den Hinweis!

Gruß
Andy
Rosemarie4328
..
..
 
Posts: 71
Joined: Tue Apr 25, 2006 2:37 pm

Postby Silke1341 » Fri May 12, 2006 9:27 am

Hallo Andy,

nun stellt sich nur noch die Frage, welches Ergebnis Dein FB liefern sollte, wenn der CONV-Baustein nicht gefunden wurde.
In diesem Fall wird bei Dir OUTPUT derzeit nicht gesetzt.
Code: [Select all] [Expand/Collapse] [Download] (Untitled.txt)
  1.   IF exists EQ 'X'.
  2.  
  3.     CALL FUNCTION fuba
  4.       EXPORTING
  5.         input        = input
  6.       IMPORTING
  7.         output       = output
  8.       EXCEPTIONS
  9.         length_error = 1
  10.         OTHERS       = 2.
  11.     IF sy-subrc <> 0.
  12. * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
  13. *         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  14. *[Ergänzung]
  15.     ELSE.
  16.       output = input.
  17. *[/Ergänzung]
  18.     ENDIF.
  19.  
  20.   ELSE.
  21.     output = input.
  22.   ENDIF.
  23.  
GeSHi ©
Silke1341
.....
.....
 
Posts: 1985
Joined: Thu Aug 19, 2004 3:20 pm

Postby Rosemarie4328 » Fri May 12, 2006 12:48 pm

ereglam hat geschrieben:Hallo Andy,

nun stellt sich nur noch die Frage, welches Ergebnis Dein FB liefern sollte, wenn der CONV-Baustein nicht gefunden wurde.
In diesem Fall wird bei Dir OUTPUT derzeit nicht gesetzt.
Code: [Select all] [Expand/Collapse] [Download] (Untitled.txt)
  1.   IF exists EQ 'X'.
  2.  
  3.     CALL FUNCTION fuba
  4.       EXPORTING
  5.         input        = input
  6.       IMPORTING
  7.         output       = output
  8.       EXCEPTIONS
  9.         length_error = 1
  10.         OTHERS       = 2.
  11.     IF sy-subrc <> 0.
  12. * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
  13. *         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  14. *[Ergänzung]
  15.     ELSE.
  16.       output = input.
  17. *[/Ergänzung]
  18.     ENDIF.
  19.  
  20.   ELSE.
  21.     output = input.
  22.   ENDIF.
  23.  
GeSHi ©


Das Vorhandensein prüfe ich schon mit dem IF ab, aber was du hinzugefügt hast, ist, dass der FuBa selbst einen Fehler wirft und "output" nicht füllt.
In diesem Fall wäre deine Ergänzung sinnvoll!

Gruß
Andy
Rosemarie4328
..
..
 
Posts: 71
Joined: Tue Apr 25, 2006 2:37 pm

Postby Silke1341 » Sun May 14, 2006 12:07 pm

Hallo Andi,

ich denke, die Ergänzung wäre nicht nur sinnvoll. Sie ist es! Oder?
Silke1341
.....
.....
 
Posts: 1985
Joined: Thu Aug 19, 2004 3:20 pm

Postby Rosemarie4328 » Mon May 15, 2006 9:21 am

Ja klar, anders war es auch nicht gemeint :D

Gruß
Andy
Rosemarie4328
..
..
 
Posts: 71
Joined: Tue Apr 25, 2006 2:37 pm


Return to Java & SAP®

Who is online

Users browsing this forum: No registered users and 2 guests