Sorry. Du brauchst natürlich die "Factory" dazu CL_ISH_FAC_CORDER=>LOAD.sapdepp hat geschrieben:Diese statische LOAD-Methode ist allerdings Protected. Hmm.
Dann nimm die. Wenn schon alles geladen ist, dann ist das besser. (Wegen der ganzen Environment-Kacke)sapdepp hat geschrieben:Eine Instanz von CL_ISH_CORDER habe ich schon über Umwege über eine andere Klasse und Casting geladen. Die steht sauber in LR_CORDER.
Code: Alles auswählen.
CALL METHOD <lr_planning_grid>->GET_ENVIRONMENT
RECEIVING
RR_ENVIRONMENT = lr_env.
CALL METHOD lr_corder->GET_CORDERID
RECEIVING
R_CORDERID = l_cordid.
CALL METHOD CL_ISH_FAC_CORDER=>LOAD
EXPORTING
* I_READ_DB = 'X'
I_MANDT = sy-mandt
I_CORDERID = l_cordid
* IS_N1CORDER =
IR_ENVIRONMENT = lr_env
* IT_CONNECTED_OBJECTS =
IMPORTING
ER_INSTANCE = lr_corder
E_RC = l_rc
CHANGING
CR_ERRORHANDLER = lr_err.
* CALL METHOD <lr_prc_order>->PRINT
* EXPORTING
* I_PRINTTYPE = 'PRT_CORD'
* IR_CORDER = lr_corder
** IT_CORDPOS =
** IR_ENVIRONMENT =
** IR_CONFIG =
** IR_LOCK =
** I_VCODE =
** I_DESTROY = ON
** I_NO_DIALOG = OFF
* IMPORTING
* E_RC = l_rc
* CHANGING
* CR_ERRORHANDLER = lr_err.
IF l_rc = 0.
REFRESH lt_objects.
ls_objects-object = lr_corder.
APPEND ls_objects TO lt_objects.
CALL METHOD CL_ISHMED_FUNCTIONS=>CALL_CLINICAL_ORDER_PRINT
EXPORTING
I_FCODE = 'PRT_CORD'
I_EINRI = '0001'
I_CALLER = sy-repid
* I_SAVE = 'X'
* I_COMMIT = 'X'
* I_ENQUEUE = SPACE
* I_DEQUEUE = 'X'
IT_OBJECTS = lt_objects
* IT_PARAMETER =
IMPORTING
E_RC = l_rc
* E_FUNC_DONE =
* E_REFRESH =
* ET_EXPVALUES =
CHANGING
C_ERRORHANDLER = lr_err
* C_ENVIRONMENT =
* C_LOCK =
.
ENDIF.
Code: Alles auswählen.
CALL METHOD CL_ISH_FAC_CORDER=>LOAD
EXPORTING
* I_READ_DB = 'X'
I_MANDT = sy-mandt
I_CORDERID = l_cordid
* IS_N1CORDER =
IR_ENVIRONMENT = lr_env
* IT_CONNECTED_OBJECTS =
IMPORTING
ER_INSTANCE = lr_corder
E_RC = l_rc
CHANGING
CR_ERRORHANDLER = lr_err.
Die Methode die du brauchst lautet CL_ISH_PRC_CORDER=>PRINT. Die Instanz dazu gibts aber erst wenn der KLAT geladen wurde.
Ich habe nur die statische Methode verwendet. Falls ich CL_ISH_PRC_CORDER=>PRINT brauche, was leider nur eine Instanzmethode ist, benötige ich vorher ´ne Referenz auf CL_ISH_PRC_CORDER, wie du schon gesagt hast. Da muss ich mir noch eine Methode suchen, die diese Instanz erzeugt. Deswegen meine Frage, ob ich die erste Methode wirklich brauche!?Für den Ausdruck hab ich auf die schnelle die Methode CL_ISHMED_FUNCTIONS=>CALL_CLINICAL_ORDER_PRINT gefunden.
Kuckst du hier:sapdepp hat geschrieben:Deswegen meine Frage, ob ich die erste Methode wirklich brauche!?
Nimm die CORDER-Instanz die du schon hast und lass das LOAD sein. War nur eine Hilfestellung falls du die Instanz eben noch nicht hast. Wie du an die CL_ISH_PRC_CORDER Instanz rankommst kannst du beispielsweise in der CL_ISHMED_FUNCTIONS=>CALL_CLINICAL_ORDER_PRINT nachschauen. Aber der Einfachheit halber kannst du gleich diese Methode verwenden und dir das mit der CL_ISH_PRC_CORDER schenken.a-dead-trousers hat geschrieben:Dann nimm die. Wenn schon alles geladen ist, dann ist das besser. (Wegen der ganzen Environment-Kacke)sapdepp hat geschrieben:Eine Instanz von CL_ISH_CORDER habe ich schon über Umwege über eine andere Klasse und Casting geladen. Die steht sauber in LR_CORDER.
Code: Alles auswählen.
* Druckdetails holen
CALL METHOD lr_z_prc_corder->PRINT_CORDER_SSF_PUBLIC
EXPORTING
GR_CORDER = lr_corder
IMPORTING
ES_CORDER_DETAILS_SSF = ls_corder_details_ssf
ET_CORDPOS_DETAILS_SSF = lt_cordpos_details_ssf
E_RC = l_rc
CHANGING
CR_ERRORHANDLER = lr_err.
* SmartForm suchen
CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'
EXPORTING
FORMNAME = 'ZKC_ISH_CLINICAL_ORDER_DETAILS'
* VARIANT = ' '
* DIRECT_CALL = ' '
IMPORTING
FM_NAME = l_fm_name
EXCEPTIONS
* NO_FORM = 1
* NO_FUNCTION_MODULE = 2
OTHERS = 3.
IF SY-SUBRC EQ 0.
* eigentlichen Druck auslösen
* Anzeige only, kein Dialog
ls_control-no_dialog = 'X'.
ls_control-preview = 'X'.
CALL FUNCTION l_fm_name
EXPORTING
CONTROL_PARAMETERS = ls_control
OUTPUT_OPTIONS = ls_ssfcompop
USER_SETTINGS = ' '
RNF01 = ls_rnf01
RNF19 = ls_rnf19
IS_TN01 = lt_tn01
IS_CORDER_DETAILS_SSF = ls_corder_details_ssf
IT_CORDPOS_DETAILS_SSF = lt_cordpos_details_ssf
* I_ERBOE = l_exlerboe
* IMPORTING
* DOCUMENT_OUTPUT_INFO = ''
* JOB_OUTPUT_INFO = ''
* JOB_OUTPUT_OPTIONS = ''
EXCEPTIONS
FORMATTING_ERROR = 1
INTERNAL_ERROR = 2
SEND_ERROR = 3
USER_CANCELED = 4
OTHERS = 5.