ABAP-Klasse

Die nachfolgende Seite beschreibt, wie die ABAP-Klasse zur Datenbeschaffung für das Formular aufgebaut wird. Die ABAP-Klasse muss direkt oder indirekt von der Klasse /SCT/QP_CL_FORMS_BASE erben. Der Standard-QPPD stellt die Klasse /SCT/QP_CL_FORMS zur Verfügung. Eine kundenindividuelle Klasse kann bspw. von dieser erben oder diese Klasse als Kopiervorlage verwenden.

Anpassung der Standardwerte

Die Methode SET_DEFAULT kann redefiniert werden, um die verschiedenen Standardwerte im Attribut MS_DEFAULT zu setzen. Sofern die kundenindividuelle ABAP-Klasse vom Standard-QPPD erbt, können somit ggf. weitere Methodenredefinitionen bei der Datenbeschaffung vermieden werden. Es sieht so aus:

METHOD set_default.
" toBe redefined
"excluded object types
ms_default-range_objtyp = VALUE #( sign = 'E' option = 'CP' ( low = 'STATUS' )
( low = 'ADMIN' )
( low = 'BUILDER' )
( low = 'HEADER' )
( low = 'LOG' )
( low = 'FORMS' )
( low = 'HEADER*' ) ).
"Objecttyp link to formualr table
ms_default-object_table = VALUE #( ( objekttyp = 'INSPCHAR' table = 'INSPECTION' )
( objekttyp = 'COLUMNGRID' table = 'XXX' ) ).
"Default table links and spras
ms_default = VALUE #( table_val = 'BASIC'
table_pmk = 'INSPECTION'
table_txt = 'TEXT'
spras = 'E' ).
ENDMETHOD.

Kontextmenü verändern

Die Methode /SCT/QP_IF_FORMS~MODIFY_FORMS kann genutzt werden, um das Kontextmenü zur Auswahl der Formulare zu verändern. Beispielsweise um verschiedene Sprachvarianten des Formulars anzubieten. Es sieht so aus:

METHOD /sct/qp_if_forms~get_forms.
DATA lt_forms LIKE mt_forms.
 
IF mt_forms IS INITIAL.
super->/sct/qp_if_forms~get_forms( ).
"add multi language forms Formulare hinzufügen
LOOP AT mt_forms ASSIGNING FIELD-SYMBOL(<form>).
DATA(ls_form) = <form>.
ls_form-spras = 'D'. "German
ls_form-ident = |{ <form>-ident } [de]|.
ls_form-standard = abap_false.
INSERT ls_form INTO TABLE lt_forms.
ls_form-spras = 'E'.                         "English
ls_form-ident = |{ <form>-ident } [en]|.
ls_form-standard = abap_false.
INSERT ls_form INTO TABLE lt_forms.
ENDLOOP.
mt_forms = VALUE #( BASE mt_forms ( LINES OF lt_forms ) ).
SORT mt_forms BY sortnr ident.
ENDIF.
rt_forms = super->/sct/qp_if_forms~get_forms( iv_ident = iv_ident ).

Es sieht so aus:

image-20260727-115117.png

Datenübergabe

Die Methode /SCT/QP_CL_FORMS_DATA->GET_SMARTFORMS_DATA ruft das Formular auf und übergibt diesem die Daten aus dem Objekt in dem Export-Paramter IS_FORM, der mit /sct/qp_if_forms=>ts_form typisiert ist.

Coding

METHOD get_smartforms_data.
DATA(ls_form) = get_form_data( is_form = is_form ).
 
" CALL SMARTFORM
CALL FUNCTION iv_smart_function EXPORTING control_parameters = is_control_parameters
output_options = is_output_options
user_settings = iv_user_settings
is_form = ls_form
IMPORTING job_output_info = rs_output_info
" job_output_options = ls_job_output_options
EXCEPTIONS formatting_error = 1
internal_error = 2
send_error = 3
user_canceled = 4
OTHERS = 5.
 
IF sy-subrc <> 0.
mx->do_handle_internal_errorx( ).
ENDIF.
ENDMETHOD.

Entsprechend dieser Daten-Übergabe muss die Formularschnittstelle eingestellt sein. Dies sieht so aus:

image-20260727-120805.png

2. Formular erstellen

Das Standard-Formular /SCT/QPPD_FORM verwendet in den globalen Definitionen Hilfs-Attribute, um die verschiedenen Schleifen im Formular zu ermöglichen. Es sieht so aus:

image-20260727-122023.png

Diese Variablen werden in den verschiedenen Schleifen verwendet, bspw. hier:

image-20260727-122152.png