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:
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:
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:
Diese Variablen werden in den verschiedenen Schleifen verwendet, bspw. hier:



