adesso business consulting Stellenangebote
Software Engineer Trainee · Senior | (Senior) Cloud Software Engineer BTP | (Senior) Consultant Technologie
Werkstudent Softwareentwicklung · Fiori / UI5 · Consulting

Muster für ZIDoc EingangsverarbeitungsFuBa

Aus SAP Wiki ツ
Version vom 18. Juli 2021, 16:13 Uhr von M1ch3lde (Diskussion | Beiträge) (Die Seite wurde neu angelegt: „Kategorie:IDoc_im_Z-Umfeld == Kopie eines Standard FuBas == Kopie von "idoc_input_fidcc2" und dann Anpassung wie unten beschrieben. == Parameters == "…“)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)


Kopie eines Standard FuBas

Kopie von "idoc_input_fidcc2" und dann Anpassung wie unten beschrieben.

Parameters

"Globale Schnittstelle:
"  IMPORTING
"     VALUE(INPUT_METHOD) LIKE  BDWFAP_PAR-INPUTMETHD
"     VALUE(MASS_PROCESSING) LIKE  BDWFAP_PAR-MASS_PROC
"  EXPORTING
"     VALUE(WORKFLOW_RESULT) LIKE  BDWFAP_PAR-RESULT
"     VALUE(APPLICATION_VARIABLE) LIKE  BDWFAP_PAR-APPL_VAR
"     VALUE(IN_UPDATE_TASK) LIKE  BDWFAP_PAR-UPDATETASK
"     VALUE(CALL_TRANSACTION_DONE) LIKE  BDWFAP_PAR-CALLTRANS
"  TABLES
"      IDOC_CONTRL STRUCTURE  EDIDC
"      IDOC_DATA STRUCTURE  EDIDD
"      IDOC_STATUS STRUCTURE  BDIDOCSTAT
"      RETURN_VARIABLES STRUCTURE  BDWFRETVAR
"      SERIALIZATION_INFO STRUCTURE  BDI_SER
"  EXCEPTIONS
"      WRONG_FUNCTION_CALLED
"      OTHERS

Codeschnipsel

INCLUDE mbdconwf.
 DATA:
   cv_mestyp             TYPE edidc-mestyp        VALUE 'ZGGL_PAYMENTS',
   cv_wf_par_error_idocs TYPE bdwfretvar-wf_param VALUE 'Error_IDOCs',
   cv_wf_result_ok       TYPE bdwf_param-result   VALUE '0    '  ##NEEDED,
   cv_wf_result_error    TYPE bdwf_param-result   VALUE '99999',
   ls_data               TYPE zgglpay,
   lv_error              TYPE char01,
   ls_lmess              TYPE lmess,
   lt_xreturn            TYPE TABLE OF bdwfretvar.
   lt_return            TYPE  bapiret2_t.
 FIELD-SYMBOLS: <ls_xreturn> TYPE bdwfretvar.

 READ TABLE idoc_contrl INDEX 1.
 IF idoc_contrl-mestyp NE 'ZGGL_PAYMENTS'.
   RAISE wrong_function_called.
 ENDIF.
 LOOP AT idoc_contrl.
   LOOP AT idoc_data WHERE docnum = idoc_contrl-docnum. "#EC CI_NESTED
     ls_data = idoc_data-sdata.
     lv_compcode = ls_data-header_company.
     lv_refdoc = ls_data-ref_doc_number.
   ENDLOOP.
 ENDLOOP.

 IF lt_return IS NOT INITIAL.
   READ TABLE lt_return INTO DATA(ls_return) INDEX 1.
   IF ls_return-type = 'E'.
     ls_lmess-msgid = ls_return-id.
     ls_lmess-msgno = ls_return-number.
     ls_lmess-msgty = ls_return-type.
     ls_lmess-msgv1 = ls_return-message_v1.
     ls_lmess-msgv2 = ls_return-message_v2.
     ls_lmess-msgv3 = ls_return-message_v3.
     ls_lmess-msgv4 = ls_return-message_v4.
     lv_error = abap_true.
   ENDIF.
 ENDIF.

"*----------------------------------------------------------------------------
"*Remaining code has been taken over and left untouched.
"*----------------------------------------------------------------------------
 CLEAR in_update_task.
 CLEAR call_transaction_done.
 IF lv_error EQ abap_true.
   CALL FUNCTION 'L_IDOC_ERROR_SAVE'
     EXPORTING
       i_docnum    = idoc_contrl-docnum
       i_mestyp    = cv_mestyp
       i_lmess     = ls_lmess
       i_categorie = cv_wf_par_error_idocs
       i_result    = cv_wf_result_error
     EXCEPTIONS
       OTHERS      = 1. "#EC CI_SUBRC
   MOVE cv_wf_result_error TO workflow_result.
 ELSE. "lDoc processed successfully
   CALL FUNCTION 'L_IDOC_OK_SAVE'
     EXPORTING
       i_docnum = idoc_contrl-docnum
       i_mestyp = cv_mestyp
     EXCEPTIONS
       OTHERS   = 1. "#EC CI_SUBRC
   MOVE c_wf_result_ok TO workflow_result.
 ENDIF.
 "Write status of IDOC
 LOOP AT idoc_contrl.
   CLEAR idoc_status.
   "Determine and create status of IDOC
   CALL FUNCTION 'L_IDOC_STATUS_CREATE'
     EXPORTING
       i_iheader         = idoc_contrl
       i_mass_processing = mass_processing
     IMPORTING
       o_istatus         = idoc_status
     EXCEPTIONS
       OTHERS            = 1. "#EC CI_SUBRC
   IF idoc_status-status IS INITIAL.
     MESSAGE e010(lk) WITH idoc_contrl-docnum RAISING others.
   ENDIF.
   APPEND idoc_status.
 ENDLOOP.
 "Define table for further workflow process.
 LOOP AT idoc_contrl.
   "Determine and create status of IDOC
   CLEAR lt_xreturn. REFRESH lt_xreturn.
   CALL FUNCTION 'L_IDOC_RETURN_CREATE'
     EXPORTING
       i_iheader         = idoc_contrl
       i_mass_processing = mass_processing
     TABLES
       treturn           = lt_xreturn
     EXCEPTIONS
       OTHERS            = 1. "#EC CI_SUBRC
   LOOP AT lt_xreturn ASSIGNING <ls_xreturn>.
     MOVE-CORRESPONDING <ls_xreturn> TO return_variables.
     APPEND return_variables.
   ENDLOOP.
   IF sy-subrc NE 0.
     MESSAGE e011(lk) WITH idoc_contrl-docnum RAISING others.
   ENDIF.
 ENDLOOP.
 COMMIT WORK.

Dieses Wiki wird privat in Freizeit nach bestem Wissen und Gewissen gepflegt und dient primär als eigene Wissenssammlung für die tägliche Arbeit im SAP-ERP-Umfeld.
Alle dargestellten Softwareprodukte, auch in Form von Screenshots, sind Eigentum der SAP SE. Ihre Marken, vgl. Link, sind u.a.: SAP®, ABAP®, SAP Fiori®, SAP HANA®, SAP S/4HANA®, SAP S/4HANA® Cloud