Code: Alles auswählen.
DATA: form TYPE tdsfname VALUE 'Z_FORM_MAT_RESP',
cntry TYPE c LENGTH 2,
lx_fp_api TYPE REF TO cx_fp_api,
fm_name TYPE c LENGTH 30,
fp_docparams TYPE sfpdocparams,
fp_outputparams TYPE sfpoutputparams.
fp_outputparams-preview = 'X'.
CALL FUNCTION 'FP_JOB_OPEN'
CHANGING
ie_outputparams = fp_outputparams
EXCEPTIONS
CANCEL = 1
USAGE_ERROR = 2
SYSTEM_ERROR = 3
INTERNAL_ERROR = 4
OTHERS = 5
.
IF sy-subrc <> 0.
* Implement suitable error handling here
ENDIF.
TRY.
CALL FUNCTION 'FP_FUNCTION_MODULE_NAME'
EXPORTING
i_name = form
IMPORTING
E_FUNCNAME = fm_name.
CATCH cx_fp_api INTO lx_fp_api.
* MESSAGE ID lx_fp_api->msgid TYPE lx_fp_api->msgty
* NUMBER lx_fp_api->msgno
* WITH lx_fp_api->msgv1 lx_fp_api->msgv2
* lx_fp_api->msgv3 lx_fp_api->msgv4
EXIT.
ENDTRY.
fp_docparams-langu = sy-langu.
SELECT SINGLE laiso
FROM t002
INTO cntry
WHERE spras EQ sy-langu.
fp_docparams-country = cntry.
CALL FUNCTION fm_name
EXPORTING
/1bcdwb/docparams = fp_docparams
EXCEPTIONS
usage_error = 1
system_error = 2
internal_error = 3.
if sy-subrc <> 0.
endif.
CALL FUNCTION 'FP_JOB_CLOSE'
* IMPORTING
* E_RESULT =
EXCEPTIONS
USAGE_ERROR = 1
SYSTEM_ERROR = 2
INTERNAL_ERROR = 3
OTHERS = 4
.
IF sy-subrc <> 0.
* Implement suitable error handling here
ENDIF.
Ich kenne mich zwar in den Adobe Formularen nicht aus, sondern etwas im SMARTFORMS. Mein Empfehlung wäre, immer ein Trennung Zwischen Layout (Formular) und Inhalt/Datenbeschaffung. Das Formular ist als "dumm" zu betrachten, was lediglich die Daten anzeigt. Die Beschaffung findet also vorher statt und wird an das Formular übergeben. Im SMARTFORMS gibt es dafür die Anwendungsklasse und als Übergabeparameter ein tiefgeschachtelte Struktur.
Er verwendet nur den Datentyp für ein Smartformsformular, der Rest ist Adobe 😉