Code: Alles auswählen.
JCO.Repository repository = new JCO.Repository("PDKM", connection);
IFunctionTemplate template = repository.getFunctionTemplate("BAPI_MATERIAL_GETLIST");
JCO.Function function = template.getFunction();
function.getImportParameterList().setValue("1000","MAXROWS");
JCO.Table tableMaterial = function.getTableParameterList().getTable("MATNRSELECTION");
if (material.startsWith("*") && material.endsWith("*")) {
tableMaterial.appendRow();
tableMaterial.setValue("I","SIGN");
tableMaterial.setValue("CP","OPTION");
tableMaterial.setValue(material,"MATNR_LOW");
}
else if (material.startsWith("*") || (material.endsWith("*"))) {
tableMaterial.appendRow();
tableMaterial.setValue("I","SIGN");
tableMaterial.setValue("CP","OPTION");
tableMaterial.setValue(material,"MATNR_LOW");
}
else if (!(material.startsWith("*")) && !(material.endsWith("*"))) {
tableMaterial.appendRow();
tableMaterial.setValue("I","SIGN");
tableMaterial.setValue("EQ","OPTION");
tableMaterial.setValue(material,"MATNR_LOW");
}
else {
tableMaterial.appendRow();
tableMaterial.setValue("I","SIGN");
tableMaterial.setValue("CP","OPTION");
tableMaterial.setValue(material),"MATNR_LOW");
}
Dann schreib doch am einfachsten einen am besten gleich generischen RFc-fähigen baustein, der diesen Baustein aufruft.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)!
Jetzt muss ich mich um die Suchfunktionalität kümmern. Also falls diesbzgl. noch jemand einen Tipp hat, wär ich sehr dankbar.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.
Code: Alles auswählen.
FUNCTION z_conversion_exit .
*"----------------------------------------------------------------------
*"*"Local Interface:
*" IMPORTING
*" VALUE(DIRECTION) TYPE FUNC_NAME
*" VALUE(CONVERSION_ROUTINE) TYPE FUNC_NAME DEFAULT 'MATN1'
*" VALUE(INPUT) TYPE TEXT
*" EXPORTING
*" VALUE(OUTPUT) TYPE TEXT
*" EXCEPTIONS
*" LENGTH_ERROR
*"----------------------------------------------------------------------
DATA: fuba like E071-OBJ_NAME,
exists like SXST_PARE-EXIST.
CONDENSE direction NO-GAPS.
if conversion_routine EQ ''.
conversion_routine = 'MATN1'.
endif.
CONDENSE conversion_routine NO-GAPS.
CONCATENATE 'CONVERSION_EXIT_' conversion_routine '_' direction INTO fuba.
CALL FUNCTION 'CHECK_EXIST_LIMU_FUNC'
EXPORTING
name = fuba
* AGGNAME = ' '
* MTYPE = ' '
IMPORTING
EXIST = exists
* EXCEPTIONS
* TR_INVALID_TYPE = 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.
IF exists EQ 'X'.
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.
ELSE.
output = input.
ENDIF.
ENDFUNCTION.
Code: Alles auswählen.
IF exists EQ 'X'.
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.
*[Ergänzung]
ELSE.
output = input.
*[/Ergänzung]
ENDIF.
ELSE.
output = input.
ENDIF.
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.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: Alles auswählen.
IF exists EQ 'X'. 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. *[Ergänzung] ELSE. output = input. *[/Ergänzung] ENDIF. ELSE. output = input. ENDIF.