FUNCTION ZF4PU_FM_MASS_PRINT.
*"----------------------------------------------------------------------
*"*"Local Interface:
*" IMPORTING
*" VALUE(IV_UNAME) TYPE UNAME
*" VALUE(IV_LIFNR) TYPE LIFNR
*" VALUE(IT_EBELN) TYPE MMPURUI_EBELN_TABLE_TTY
*" EXPORTING
*" VALUE(ET_OK) TYPE MMPURUI_EBELN_TABLE_TTY
*" VALUE(ET_ERROR) TYPE MMPURUI_EBELN_TABLE_TTY
*" EXCEPTIONS
*" TCODE_INVALID
*" AUTHORITY_CHECK_FAILED
*" NO_ELEMENTS_PROVIDED
*" NO_EKORG_FOUND
*" UNAME_DOES_NOT_EXIST
*" BDC_ERROR
*"----------------------------------------------------------------------
DATA ls_username_check_return TYPE bapiret2.
DATA lv_rcode TYPE sy-subrc.
DATA lt_nast TYPE TABLE OF nast.
DATA lt_nast_to_update TYPE TABLE OF nast.
DATA lt_vnast TYPE TABLE OF vnast.
DATA ls_vnast TYPE vnast.
DATA lt_objkey TYPE TABLE OF na_objkey.
LOOP AT it_ebeln INTO DATA(lv_ebeln) WHERE table_line IS NOT INITIAL.
INSERT CONV na_objkey( lv_ebeln ) INTO TABLE lt_objkey.
ENDLOOP.
""""""""""""""""""""""""""
SELECT * FROM nast FOR ALL ENTRIES IN @lt_objkey
WHERE kappl = 'EV'
AND objky = @lt_objkey-table_line
AND kschl = 'NEU'
AND vstat = 0
AND nacha = 1
AND usnam = @iv_uname
INTO TABLE @lt_nast.
LOOP AT lt_nast INTO DATA(ls_nast).
INSERT ls_nast INTO TABLE lt_nast_to_update.
MOVE-CORRESPONDING ls_nast TO ls_vnast.
ls_vnast-updat = 'D'.
APPEND ls_vnast TO lt_vnast.
CALL FUNCTION 'RV_MESSAGE_UPDATE'
TABLES
msg_xnast = lt_vnast
msg_ynast = lt_nast_to_update.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
wait = 'X'. " Use of Command `COMMIT AND WAIT`
ENDLOOP.
""""""""""""""""""""""""""""""""""""""""""""
IF it_ebeln IS INITIAL.
RAISE no_elements_provided.
ENDIF.
SELECT ebeln, ekorg, spras FROM ekko FOR ALL ENTRIES IN @it_ebeln
WHERE ebeln = @it_ebeln-table_line INTO TABLE @DATA(lt_ekko).
IF sy-subrc <> 0.
RAISE no_ekorg_found.
ENDIF.
SELECT SINGLE adrnr FROM lfa1 INTO @DATA(lv_adrnr) WHERE lifnr = @iv_lifnr.
LOOP AT it_ebeln INTO DATA(ls_ebeln_input).
TRY.
DATA(lv_ebeln_input) = VALUE #( lt_ekko[ ebeln = ls_ebeln_input ] ).
CATCH cx_root INTO DATA(lo_cx).
INSERT ls_ebeln_input INTO TABLE et_error.
ENDTRY.
ENDLOOP.
LOOP AT lt_ekko INTO DATA(ls_ekko).
AUTHORITY-CHECK OBJECT 'M_BEST_EKO'
ID 'ACTVT' FIELD '03'
ID 'EKORG' FIELD ls_ekko-spras.
IF sy-subrc <> 0.
RAISE authority_check_failed.
ENDIF.
ENDLOOP.
CALL FUNCTION 'BAPI_USER_EXISTENCE_CHECK'
EXPORTING
username = iv_uname
IMPORTING
return = ls_username_check_return.
IF ls_username_check_return-id = 01 AND ls_username_check_return-number = 124.
RAISE uname_does_not_exist.
ENDIF.
LOOP AT lt_ekko INTO DATA(ls_ebeln).
CLEAR ls_nast.
ls_nast-kappl = 'EV'.
ls_nast-objky = ls_ebeln-ebeln.
ls_nast-kschl = 'NEU'.
ls_nast-spras = ls_ebeln-spras.
ls_nast-parnr = iv_lifnr.
ls_nast-parvw = 'LF'.
ls_nast-nacha = '1'.
ls_nast-adrnr = lv_adrnr.
ls_nast-usnam = iv_uname.
ls_nast-ldest = 'ZPDF'.
ls_nast-dimme = abap_true.
ls_nast-tdreceiver = iv_uname.
ls_nast-objtype = 'BUS2013'.
ls_nast-vstat = '1'.
ls_nast-vsztp = '4'.
ls_nast-erdat = sy-datum.
ls_nast-eruhr = sy-timlo.
ls_nast-tdid = 'BEWG'.
ls_nast-tdspras = ls_ebeln-spras.
CALL FUNCTION 'WFMC_MESSAGE_SINGLE'
EXPORTING
pi_nast = ls_nast
IMPORTING
pe_rcode = lv_rcode.
IF lv_rcode <> 0.
INSERT ls_ebeln-ebeln INTO TABLE et_error.
ELSE.
INSERT ls_ebeln-ebeln INTO TABLE et_ok.
ENDIF.
ENDLOOP.
ENDFUNCTION.
Paste Hosted With By Wklejamy.pl