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 ツ
Keine Bearbeitungszusammenfassung |
|||
(6 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
Zeile 3: | Zeile 3: | ||
== Kopie eines Standard FuBas == | == Kopie eines Standard FuBas == | ||
Kopie von "idoc_input_fidcc2" | Kopie von "idoc_input_fidcc2" erstellen. | ||
== | == Codeschnipsel == | ||
<div class="toccolours mw-collapsible mw-collapsed">Neu hinzugefügte Variante | |||
<div class="mw-collapsible-content"> | |||
<syntaxhighlight lang="abap" line start="1"> | |||
DATA: lv_eid TYPE bdwfretvar-wf_param VALUE 'Error_IDOCs', | |||
lv_pid TYPE bdwfretvar-wf_param VALUE 'Processed_IDOCs', | |||
lv_apo TYPE bdwfretvar-wf_param VALUE 'Appl_Objects', | |||
c_wf_result_error TYPE bdwfap_par-result VALUE '99999', | |||
c_wf_result_ok TYPE bdwfap_par-result VALUE '0', | |||
ls_xyz_struc_seg TYPE xyz_seg_structure, | |||
lv_error_occurend TYPE char1, | |||
lv_msgv1 TYPE edids-stapa1, | |||
lv_msgv2 TYPE edids-stapa2, | |||
lv_msgv3 TYPE edids-stapa3, | |||
lv_msgv4 TYPE edids-stapa4, | |||
lv_message TYPE bapiret2-message, | |||
lt_error_log TYPE bal_t_msg. | |||
CONSTANTS: lc_status_51_failed TYPE edidc-status VALUE '51', | |||
lc_status_53_successful TYPE edidc-status VALUE '53', | |||
lc_segnam_xyz TYPE String VALUE 'XYZ', | |||
lc_mestyp_xyz TYPE String VALUE 'XYZ'. | |||
IF idoc_contrl-mestyp <> lc_mestyp_xyz. | |||
RAISE wrong_function_called. | |||
ENDIF. | |||
LOOP AT idoc_contrl. | |||
lv_error_occurend = ''. | |||
TRY. | |||
* Have a look for ZCL_BAL here: https://wiki.m1ch3l.de/ZCL_BAL | |||
DATA(lo_bal) = NEW zcl_bal( | |||
iv_object = zcl_bal=>cs_object-idoc | |||
iv_subobject = zcl_bal=>cs_subobject-idoc_xyz | |||
iv_extnumber = |IDoc_{ idoc_contrl-mestyp }_{ idoc_contrl-docnum }| | |||
). | |||
CATCH zcx_basic INTO DATA(lo_zcx_basic). | |||
RAISE bal_creating_failed. | |||
ENDTRY. | |||
LOOP AT idoc_data WHERE docnum = idoc_contrl-docnum. | |||
CASE idoc_data-segnam. | |||
WHEN lc_segnam_xyz. | |||
ENDCASE. | |||
== | ENDLOOP. | ||
IF lv_error_occurend = abap_true. "Error | |||
IF lines( lo_bal->get_all_msgs_bapiret2( ) ) > 0. | |||
lo_bal->store_and_free( ). | |||
ENDIF. | |||
idoc_status-docnum = idoc_contrl-docnum. | |||
idoc_status-status = lc_status_51_failed. | |||
idoc_status-msgty = 'E'. | |||
idoc_status-msgid = 'ZMC_XYZ'. | |||
idoc_status-msgno = '004'. | |||
idoc_status-msgv1 = |TCODE: SLG1|. | |||
idoc_status-msgv2 = zcl_bal=>cs_object-idoc. | |||
idoc_status-msgv3 = zcl_bal=>cs_subobject-idoc_xyz. | |||
idoc_status-msgv4 = |IDoc_{ idoc_contrl-mestyp }_{ idoc_contrl-docnum }|. | |||
APPEND idoc_status. | |||
ELSE. "OK | |||
idoc_status-docnum = idoc_contrl-docnum. | |||
idoc_status-status = lc_status_53_successful. | |||
idoc_status-msgty = 'S'. | |||
idoc_status-msgid = 'ZMC_XYZ'. | |||
idoc_status-msgno = '012'. | |||
idoc_status-repid = sy-repid. | |||
idoc_status-msgv1 = 'XYZ'. | |||
idoc_status-msgv2 = 'XYZ'. | |||
APPEND idoc_status. | |||
ENDIF. | |||
==== | * set workflow output parameters | ||
* Allocate IDOC numbers to Workflow output parameters | |||
IF lv_error_occurend = abap_true. | |||
workflow_result = c_wf_result_error. | |||
return_variables-wf_param = lv_eid. | |||
return_variables-doc_number = idoc_contrl-docnum. | |||
APPEND return_variables. | |||
ELSE. | |||
workflow_result = c_wf_result_ok. | |||
return_variables-wf_param = lv_pid. | |||
return_variables-doc_number = idoc_contrl-docnum. | |||
APPEND return_variables. | |||
return_variables-wf_param = lv_apo. | |||
return_variables-doc_number = idoc_contrl-docnum. | |||
APPEND return_variables. | |||
ENDIF. | |||
ENDLOOP. | |||
</syntaxhighlight> | |||
</div> | |||
</div> | |||
<div class="toccolours mw-collapsible mw-collapsed">Ältere hinzugefügte Variante | |||
<div class="mw-collapsible-content"> | |||
<syntaxhighlight lang="abap" line start="1"> | <syntaxhighlight lang="abap" line start="1"> | ||
INCLUDE mbdconwf. | INCLUDE mbdconwf. | ||
Zeile 133: | Zeile 213: | ||
COMMIT WORK. | COMMIT WORK. | ||
</syntaxhighlight> | </syntaxhighlight> | ||
</div> | |||
</div> | |||
</ |
Aktuelle Version vom 16. September 2021, 16:57 Uhr
Kopie eines Standard FuBas
Kopie von "idoc_input_fidcc2" erstellen.
Codeschnipsel
Neu hinzugefügte Variante
DATA: lv_eid TYPE bdwfretvar-wf_param VALUE 'Error_IDOCs',
lv_pid TYPE bdwfretvar-wf_param VALUE 'Processed_IDOCs',
lv_apo TYPE bdwfretvar-wf_param VALUE 'Appl_Objects',
c_wf_result_error TYPE bdwfap_par-result VALUE '99999',
c_wf_result_ok TYPE bdwfap_par-result VALUE '0',
ls_xyz_struc_seg TYPE xyz_seg_structure,
lv_error_occurend TYPE char1,
lv_msgv1 TYPE edids-stapa1,
lv_msgv2 TYPE edids-stapa2,
lv_msgv3 TYPE edids-stapa3,
lv_msgv4 TYPE edids-stapa4,
lv_message TYPE bapiret2-message,
lt_error_log TYPE bal_t_msg.
CONSTANTS: lc_status_51_failed TYPE edidc-status VALUE '51',
lc_status_53_successful TYPE edidc-status VALUE '53',
lc_segnam_xyz TYPE String VALUE 'XYZ',
lc_mestyp_xyz TYPE String VALUE 'XYZ'.
IF idoc_contrl-mestyp <> lc_mestyp_xyz.
RAISE wrong_function_called.
ENDIF.
LOOP AT idoc_contrl.
lv_error_occurend = ''.
TRY.
* Have a look for ZCL_BAL here: https://wiki.m1ch3l.de/ZCL_BAL
DATA(lo_bal) = NEW zcl_bal(
iv_object = zcl_bal=>cs_object-idoc
iv_subobject = zcl_bal=>cs_subobject-idoc_xyz
iv_extnumber = |IDoc_{ idoc_contrl-mestyp }_{ idoc_contrl-docnum }|
).
CATCH zcx_basic INTO DATA(lo_zcx_basic).
RAISE bal_creating_failed.
ENDTRY.
LOOP AT idoc_data WHERE docnum = idoc_contrl-docnum.
CASE idoc_data-segnam.
WHEN lc_segnam_xyz.
ENDCASE.
ENDLOOP.
IF lv_error_occurend = abap_true. "Error
IF lines( lo_bal->get_all_msgs_bapiret2( ) ) > 0.
lo_bal->store_and_free( ).
ENDIF.
idoc_status-docnum = idoc_contrl-docnum.
idoc_status-status = lc_status_51_failed.
idoc_status-msgty = 'E'.
idoc_status-msgid = 'ZMC_XYZ'.
idoc_status-msgno = '004'.
idoc_status-msgv1 = |TCODE: SLG1|.
idoc_status-msgv2 = zcl_bal=>cs_object-idoc.
idoc_status-msgv3 = zcl_bal=>cs_subobject-idoc_xyz.
idoc_status-msgv4 = |IDoc_{ idoc_contrl-mestyp }_{ idoc_contrl-docnum }|.
APPEND idoc_status.
ELSE. "OK
idoc_status-docnum = idoc_contrl-docnum.
idoc_status-status = lc_status_53_successful.
idoc_status-msgty = 'S'.
idoc_status-msgid = 'ZMC_XYZ'.
idoc_status-msgno = '012'.
idoc_status-repid = sy-repid.
idoc_status-msgv1 = 'XYZ'.
idoc_status-msgv2 = 'XYZ'.
APPEND idoc_status.
ENDIF.
* set workflow output parameters
* Allocate IDOC numbers to Workflow output parameters
IF lv_error_occurend = abap_true.
workflow_result = c_wf_result_error.
return_variables-wf_param = lv_eid.
return_variables-doc_number = idoc_contrl-docnum.
APPEND return_variables.
ELSE.
workflow_result = c_wf_result_ok.
return_variables-wf_param = lv_pid.
return_variables-doc_number = idoc_contrl-docnum.
APPEND return_variables.
return_variables-wf_param = lv_apo.
return_variables-doc_number = idoc_contrl-docnum.
APPEND return_variables.
ENDIF.
ENDLOOP.
Ältere hinzugefügte Variante
INCLUDE mbdconwf.
DATA:
cv_mestyp TYPE edidc-mestyp VALUE 'ZIDOC',
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 cv_mestyp.
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.