Application Development and Automation Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 
Read only

Modified Functional module not executing the inserted Code

Former Member
0 Likes
537

Hi everyone

I've modified the IW_C_CREATE_TRANSPORT_REQUEST Functional module so that it calls the GUI_EXEC FM which calles my java script which saves the transport ID with a filename specified. The code seems to work when i test it within SAP, but when i come to use STARTRFC to call the function, the added code dosen't seem to be executing, the transport still gets created but my javascript is not being called?

Anyone know why?

Thanks - Peter

Code following

FUNCTION IW_C_CREATE_TRANSPORT_REQUEST.

*"----

-


""Local interface:

*" IMPORTING

*" VALUE(DESCRIPTION) LIKE E07T-AS4TEXT

*" VALUE(TRANSPORT_KIND) LIKE E070-TRFUNCTION DEFAULT 'K'

*" VALUE(LANGU) LIKE SY-LANGU DEFAULT 'EN'

*" VALUE(CQ_ID) LIKE E070-TRKORR DEFAULT 'FileName'

*" EXPORTING

*" VALUE(COMMFILE) LIKE E070-TRKORR

*" VALUE(PROG_PATH) LIKE E070-TRKORR

*" VALUE(CLASSNAME) LIKE E07T-AS4TEXT

*" EXCEPTIONS

*" LANGUAGE_MISSING

*" NUMBER_RANGE_FULL

*" UNALLOWED_TRFUNCTION

*" NO_AUTHORIZATION

*" CREATE_TRANSPORT_ERROR

*"----

-


CLEAR COMMFILE.

CASE TRANSPORT_KIND.

WHEN 'P'.

  • Stücklisten für Releasewechsel

IF NOT LANGU IS INITIAL.

PERFORM CREATE_RELEASE_REQUEST

USING LANGU

DESCRIPTION

TRANSPORT_KIND

CHANGING COMMFILE.

ELSE.

  • keine Sprache angegeben und Transportart Stücklisten

RAISE LANGUAGE_MISSING.

ENDIF.

WHEN OTHERS.

  • Alle anderen Transporte

PERFORM CREATE_REQUEST

USING DESCRIPTION

TRANSPORT_KIND

CHANGING COMMFILE.

ENDCASE.

*{ INSERT SM1K900042 1
WRITE 'Entering My Pogram'.
PROG_PATH = 'java.exe'.
CLASSNAME = '-cp c: writeToFile'.

CONDENSE CLASSNAME.
CONDENSE PROG_PATH.
CONCATENATE CLASSNAME CQ_ID COMMFILE INTO CLASSNAME SEPARATED BY ' '.

CALL FUNCTION 'GUI_EXEC'
EXPORTING
PARAMETER = CLASSNAME
COMMAND = PROG_PATH.
WRITE 'Our path is'.
WRITE PROG_PATH.
WRITE CLASSNAME.
*} INSERT

ENDFUNCTION.

*************************FORMS****************************************

*----


*

  • FORM CREATE_RELEASE_REQUEST *

*----


*

  • Transportauftrag für Stücklisten erstellen *

*----


*

FORM CREATE_RELEASE_REQUEST

USING P_LANGU LIKE SY-LANGU

P_TRANSPORT_DESCRIPT LIKE E07T-AS4TEXT

P_TRANS_KIND LIKE E070-TRFUNCTION

CHANGING P_COMMFILE LIKE E070-TRKORR.

DATA: SUBRC LIKE SY-SUBRC,

H_TMP_LANG(2) TYPE C,

H_NUMBER(3) TYPE C,

NUMBER(4) TYPE C.

  • Anwednungslog öffnen

PERFORM OPEN_LOG

USING P_TRANSPORT_DESCRIPT.

*Nummer ziehen

PERFORM GET_NUMBER USING P_LANGU

CHANGING H_NUMBER

SUBRC.

IF SUBRC = 12.

  • Fehler beim erstellen des Transportauftrags

RAISE CREATE_TRANSPORT_ERROR.

ELSEIF SUBRC = 11.

  • Nummernkreis voll

RAISE NUMBER_RANGE_FULL.

ELSE.

WRITE P_LANGU TO H_TMP_LANG.

P_COMMFILE = 'SAPKXXXLYY'.

REPLACE 'XXX' WITH H_NUMBER INTO P_COMMFILE.

REPLACE 'YY' WITH H_TMP_LANG INTO P_COMMFILE.

CALL FUNCTION 'SUBST_CREATE_COMMANDFILE'

EXPORTING

IV_KORRNAME = P_COMMFILE

IV_KORRTYPE = P_TRANS_KIND

IV_KORRTEXT = P_TRANSPORT_DESCRIPT

EXCEPTIONS

NAME_COLLISION = 1

CREATE_HEADER_FAILED = 2

UPDATE_HEADER_FAILED = 3

OTHERS = 4.

IF SY-SUBRC <> 0.

CLEAR P_COMMFILE.

  • Fehler beim Erstellen des Transportauftrags

RAISE CREATE_TRANSPORT_ERROR.

ELSE.

  • Transportauftrag erstellt

  • Log schreiben

PERFORM WRITE_LOGFILE

USING P_COMMFILE.

ENDIF.

ENDIF.

ENDFORM. "CREATE_RELEASE_REQUEST

*----


*

  • FORM CREATE_REQUEST *

*----


*

  • Transportauftrag erstellen *

*----


*

FORM CREATE_REQUEST

USING P_TRANSPORT_DESCRIPT LIKE E07T-AS4TEXT

P_TRANS_KIND LIKE E070-TRFUNCTION

CHANGING P_COMMFILE LIKE E070-TRKORR.

CALL FUNCTION 'TRINT_INSERT_NEW_COMM'

EXPORTING

WI_KURZTEXT = P_TRANSPORT_DESCRIPT

WI_TRFUNCTION = P_TRANS_KIND

IMPORTING

WE_TRKORR = P_COMMFILE

EXCEPTIONS

NUMBER_RANGE_FULL = 1

INVALID_INPUT = 2

NO_AUTHORIZATION = 3

OTHERS = 4.

CASE SY-SUBRC.

WHEN 0.

  • Auftrag erstellt

  • Anwednungslog öffnen

PERFORM OPEN_LOG

USING P_TRANSPORT_DESCRIPT.

  • Log schreiben

PERFORM WRITE_LOGFILE

USING P_COMMFILE.

WHEN 1. "Nummernkreis für Aufträge voll

CLEAR P_COMMFILE.

RAISE NUMBER_RANGE_FULL.

  • p_error_msg-no = '735'.

WHEN 2. "Unbekannter Auftragstyp

CLEAR P_COMMFILE.

RAISE UNALLOWED_TRFUNCTION.

  • p_error_msg-no = '353'.

WHEN 3. "keine Berechtigung

CLEAR P_COMMFILE.

RAISE NO_AUTHORIZATION.

  • p_error_msg-no = '328'.

WHEN 4. "Allgemeiner Fehler

CLEAR P_COMMFILE.

RAISE CREATE_TRANSPORT_ERROR.

  • p_error_msg-no = '353'.

ENDCASE.

ENDFORM. "create_request

*----


*

  • FORM OPEN_LOG *

*----


*

  • Anwedungslog öffnen *

*----


*

FORM OPEN_LOG

USING P_TRANSPORT_DESCRIPT LIKE E07T-AS4TEXT.

*init application log

PERFORM LOG_INIT USING C_APPL_LOG_TRANSPORT.

*log header

PERFORM LOG_HEADER

USING C_APPL_LOG_TRANSPORT P_TRANSPORT_DESCRIPT.

ENDFORM. "OPEN_LOG

*----


*

  • FORM WRITE_LOGFILE *

*----


*

  • Logfile in den Anwendungslog schreiben *

*----


*

  • -> P_TRANSPORT_DESCRIPT *

*----


*

FORM WRITE_LOGFILE

USING P_COMMFILE LIKE E070-TRKORR.

DATA: H_ERROR_MSG LIKE IWERRORMSG.

*log message transport created

CLEAR H_ERROR_MSG.

MOVE '42' TO H_ERROR_MSG-ID.

MOVE 'I' TO H_ERROR_MSG-TYPE.

MOVE '733' TO H_ERROR_MSG-NO.

MOVE P_COMMFILE TO H_ERROR_MSG-V1.

PERFORM LOG_MSG

USING C_APPL_LOG_TRANSPORT '2' H_ERROR_MSG.

*log save

PERFORM LOG_SAVE

USING C_APPL_LOG_TRANSPORT.

ENDFORM. "WRITE_LOGFILE

*----


*

  • FORM GET_NUMBER *

*----


*

  • ........ *

*----


*

  • --> LANGU *

  • --> NUMBER *

*----


*

FORM GET_NUMBER

USING LANGU LIKE SY-LANGU

CHANGING NUMBER TYPE C

SUBRC LIKE SY-SUBRC.

CONSTANTS: OBJECT LIKE INRI-OBJECT VALUE 'SIWBTRANSP'.

DATA: NR_RANGE LIKE INRI-NRRANGENR,

RETURNCODE LIKE INRI-RETURNCODE,

ERROR_MSG LIKE IWERRORMSG.

CLEAR SUBRC.

NR_RANGE = '01'.

CALL FUNCTION 'NUMBER_GET_NEXT'

EXPORTING

NR_RANGE_NR = NR_RANGE

OBJECT = OBJECT

SUBOBJECT = LANGU

IMPORTING

NUMBER = NUMBER

RETURNCODE = RETURNCODE

EXCEPTIONS

INTERVAL_NOT_FOUND = 1

NUMBER_RANGE_NOT_INTERN = 2

OBJECT_NOT_FOUND = 3

QUANTITY_IS_0 = 4

QUANTITY_IS_NOT_1 = 5

INTERVAL_OVERFLOW = 6

OTHERS = 7.

CASE SY-SUBRC.

WHEN 00.

WHEN 01.

PERFORM NUMBER_RANGE_INTERVAL_INSERT

USING NR_RANGE LANGU

CHANGING NUMBER

RETURNCODE.

WHEN OTHERS.

SUBRC = 12.

PERFORM FILL_ERROR_MSG

USING C_MESSAGE_ERROR 736 SY-SUBRC SPACE SPACE SPACE

CHANGING ERROR_MSG.

PERFORM LOG_MSG USING C_APPL_LOG_TRANSPORT 1 ERROR_MSG.

ENDCASE.

CASE RETURNCODE.

WHEN ' '.

WHEN '1'. "Nummer im kritischen Bereich

PERFORM FILL_ERROR_MSG

USING C_MESSAGE_INFO 734 SPACE SPACE SPACE SPACE

CHANGING ERROR_MSG.

PERFORM LOG_MSG USING C_APPL_LOG_TRANSPORT 2 ERROR_MSG.

WHEN '2'. "letzte Nummer vergeben

PERFORM FILL_ERROR_MSG

USING C_MESSAGE_INFO 735 SPACE SPACE SPACE SPACE

CHANGING ERROR_MSG.

PERFORM LOG_MSG USING C_APPL_LOG_TRANSPORT 1 ERROR_MSG.

SUBRC = 11.

ENDCASE.

ENDFORM. "number_get

Message was edited by:

Peter Lai

2 REPLIES 2
Read only

Former Member
0 Likes
457

I have modified FM's myself that are called via an RFC. They code changes where not recognised until the calling application was re-started.

I suspect that the code is being buffered for the particular application.

Read only

0 Likes
457

Hi i've tried restarting and starting the server, but it didn't help, would it have anything to do with the fact i'm callin sap which is calling JAVA from a .exe program. The .exe program is having problems connecting to the JAVA program as there is no link?

I did a trace as well and this is what it came up with:

Error in program 'startrfc': ======> Exception condition "NO_BATCH" raised.

>>>> [1] <unknown> : EXT <ac: 7> L DDSLOCTE01 >>> CLOSE abrfcrcv.c 429 (23850562)

-{F0776FA3-F1A7-4662-BF7A-D1352735C394}

*> RfcReceive

handle = 1

Data conversion On

Error in program 'startrfc': <* RfcReceive [1] : returns 3:RFC_SYS_EXCEPTION

Error in program 'startrfc': <* RfcCallReceive [1] : returns 3:RFC_SYS_EXCEPTION

>>>> [1] <unknown> : EXT <ac: 8> L DDSLOCTE01 >>> FREE abrfcio.c 3517 (23850562)

-{F0776FA3-F1A7-4662-BF7A-D1352735C394}

        • Trace file opened at 20070312 164006 GMT Standard T, SAP-REL 640,0,119 RFC-VER 3 818122 MT-SL

*> RfcClose called by external program ...

handle = 1

*> rfcClose called by RFC-Library in file: abrfc.c, line: 532

handle = 1

        • Trace file opened at 20070312 164006 GMT Standard T, SAP-REL 640,0,119 RFC-VER 3 818122 MT-SL

<* rfcClose

>* RfcClose

Any help or ideas what it could be would be great