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: Unterschied zwischen den Versionen

Aus SAP Wiki ツ
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 == "…“
 
M1ch3lde (Diskussion | Beiträge)
Keine Bearbeitungszusammenfassung
Zeile 66: Zeile 66:
     ENDIF.
     ENDIF.
   ENDIF.
   ENDIF.
***************************************************
   
   
"*----------------------------------------------------------------------------
"*Remaining code has been taken over and left untouched.
"*----------------------------------------------------------------------------
   CLEAR in_update_task.
   CLEAR in_update_task.
   CLEAR call_transaction_done.
   CLEAR call_transaction_done.

Version vom 23. Juli 2021, 16:27 Uhr


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.
***************************************************

 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.