adesso orange🍊Stellenangebote:
Software Engineer Trainee · Senior | (Senior) Cloud Software Engineer BTP
(Senior) Consultant Technologie · Consultant ABAP
Werkstudent Softwareentwicklung · Fiori / UI5 · Consulting · Application Management

Ich habe manuell über mehrere Versionen das Wiki geupdated. Evtl. läuft es noch nicht ganz rund ツ

Jobvorlagen für Fiori App Anwendungsjob(F1240) erstellen

Aus SAP Wiki ツ
Version vom 24. November 2024, 18:43 Uhr von M1ch3lde (Diskussion | Beiträge) (Die Seite wurde neu angelegt: „Jobvorlagen, auch bekannt als Job Templates, können erstellt werden, die dann in der App "Anwendungsjob" bzw. "Application Jobs" für Erstellung von Jobs genommen werden können. == Übersicht der benötigten Objekte in ADT == * Erstellung Y/Z Klasse ** Verwendung Interfaces *** if_apj_dt_exec_object *** if_apj_rt_exec_object ** Implementierung Methode get_parameters ** Implementierung Methode execute * Erstellung Application Job Catalog Entry ** Zuord…“)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)

Jobvorlagen, auch bekannt als Job Templates, können erstellt werden, die dann in der App "Anwendungsjob" bzw. "Application Jobs" für Erstellung von Jobs genommen werden können.

Übersicht der benötigten Objekte in ADT

  • Erstellung Y/Z Klasse
    • Verwendung Interfaces
      • if_apj_dt_exec_object
      • if_apj_rt_exec_object
    • Implementierung Methode get_parameters
    • Implementierung Methode execute
  • Erstellung Application Job Catalog Entry
    • Zuordnung der Klasse mit Execute Methode
  • Erstellung Job Template
    • Zuordnung Job Catalog Entry
    • Festlegung Defaultwerte, wenn ein Template für Joberstellung genutzt wird

Anlegen der benötigten Objekte in ADT

Y/Z-Klasse

Ich habe es mir angewöhnt die Klassen mit "_ajob" zu enden.

<sytnaxhighlight lang="text">

CLASS ycl_mm_pur_we_msg_pos_ajob DEFINITION
 PUBLIC
 FINAL
 CREATE PUBLIC .
 PUBLIC SECTION.
   INTERFACES: if_apj_dt_exec_object,
               if_apj_rt_exec_object.
   
   "Spätere Parameter bei Jobanlage
   CONSTANTS: cv_material       TYPE selname VALUE 'SO_MATNR' ##NO_TEXT,
              cv_posting_date   TYPE selname VALIE 'P_PO_DATE' ##NO_TEXT.
 PROTECTED SECTION.
 PRIVATE SECTION.
ENDCLASS.
CLASS ycl_mm_pur_we_msg_pos_ajob IMPLEMENTATION.
 METHOD if_apj_dt_exec_object~get_parameters.
   et_parameter_def = VALUE #(
         ( selname = 'SO_MATNR'  kind = 'S' datatype = 'C' component_type = 'MATNR'      length = '40'  decimals = '0' param_text ='Material'(001) changeable_ind = 'X' )
         ( selname = 'SO_WERKS'  kind = 'S' datatype = 'C' component_type = 'WERKS_D'    length = '4'  decimals = '0' param_text ='Plant'(002) changeable_ind = 'X' )
         ( selname = 'SO_BWART'  kind = 'S' datatype = 'C' component_type = 'BWART'      length = '3'  decimals = '0' param_text ='Movement Type'(003) changeable_ind = 'X' mandatory_ind = 'X' )
         ( selname = 'P_PODATE'  kind = 'P' datatype = 'D' component_type = 'BUDAT'      length = '6'  decimals = '0' param_text ='Posting Date'(004) changeable_ind = 'X' mandatory_ind =  )
     ).
   " Default value
   et_parameter_val = VALUE #(
     ( selname = 'P_PODATE'
       kind    = 'P'
       sign    = 'I'
       option  = 'EQ'
       low     = sy-datum ) ##NO_TEXT
   ).
 ENDMETHOD.
 METHOD if_apj_rt_exec_object~execute.
   TRY.
       DATA(lo_log) = cl_bali_log=>create_with_header( cl_bali_header_setter=>create( object = subobject =  external_id =  ) ).
     CATCH cx_bali_runtime.
   ENDTRY.
   TRY.
       DATA(lv_posting_date) = it_parameters[ selname = 'P_PODATE' ]-low.
     CATCH cx_sy_itab_line_not_found.
      RETURN.
   ENDTRY.
   DATA: ltr_material      TYPE RANGE OF matnr.
   DATA: lo_message  TYPE REF TO if_bali_message_setter,
         lv_freetext TYPE cl_bali_free_text_setter=>ty_text.
   LOOP AT it_parameters ASSIGNING FIELD-SYMBOL(<ls_para>).
     CASE <ls_para>-selname.
       WHEN material.
         APPEND INITIAL LINE TO ltr_material ASSIGNING FIELD-SYMBOL(<ls_add_material>).
         MOVE-CORRESPONDING <ls_para> TO <ls_add_material>.
       WHEN OTHERS.
        "Handling, wenn ein Parameter da ist, der nicht erwartet wird
     ENDCASE.
   ENDLOOP.
   TRY.
       cl_bali_log_db=>get_instance( )->save_log( log = lo_log
                                                  assign_to_current_appl_job = abap_true ).
    CATCH cx_bali_runtime.
   ENDTRY.
  ENDMETHOD.
 ENDCLASS.

Debugging Application Jobs

Angelegte Application Jobs, die via App angelegt und durchgeführt werden, sind wie die klassischen Jobs ebenfalls in SM37 zu sehen. Der Jobname hat allerdings eine zufällig generierten Namen. Das Debugging ist möglich, wenn man den Job via Checkbox markiert und in der GUI im Transaktionsfeld JDBG eingetragen wird und mit Enter bestätigt wird. Wenn ein Breakpoint in der o.g. Methoden in der GUI gesetzt ist, dann springt der Debugger an.

</sytnaxhighlight>