AUTO STO Program (VL10B+VL02N+VF01+MIGO+VL01N)
*&------------------------------------------------------------------------------*
*& Report ZSD_OUTB_CREATION*&------------------------------------------------------------------------------*
*& Program : ZSD_OUTB_CREATION
*& Author : King Of ABAP'r
*& Created on :
*& Requested By :
*& Project :
*& Transport-No :
*& Description : STO Full Cycle ( VL10B + VL20N + VF01 + MIGO + VL01N )
*& T-Code :
*&------------------------------------------------------------------------------*
REPORT zsd_outb_creation.
INCLUDE zsd_outb_creation_top.
INCLUDE zsd_outb_creation_sel.
INCLUDE zsd_outb_creation_f01.
START-OF-SELECTION.
PERFORM get_file_data.
PERFORM get_data.
PERFORM display_data.
*&---------------------------------------------------------------------*
*& Include ZSD_OUTB_CREATION_TOP
*&---------------------------------------------------------------------*
*** Billing Creation VL10B Creation
DATA : lv_delivery TYPE bapishpdelivnumb-deliv_numb,
lt_stock_trans_items TYPE STANDARD TABLE OF bapidlvreftosto,
ls_stock_trans_items TYPE bapidlvreftosto.
*** Piking Quantity Change VL02N Declarations
DATA:lt_vbpok_tab TYPE STANDARD TABLE OF vbpok,
ls_vbpok_tab TYPE vbpok.
*** Serial Number Declarations
DATA: lt_serial_t TYPE shp_sernr_update_t,
ls_serial_s TYPE shp_sernr_update_s.
*** Confirming Picking Data from Delivery Header Declarations
DATA: ls_vbkok TYPE vbkok,
ls_delivery_num TYPE bapishpdelivnumb-deliv_numb.
*** Return Declarations
DATA:lt_return TYPE TABLE OF bapiret2,
ls_return TYPE bapiret2.
DATA: lt_item TYPE STANDARD TABLE OF vbpok,
ls_item TYPE vbpok.
*** Return Declaration for piking Qty
DATA: lt_prott TYPE TABLE OF prott.
DATA: gv_count TYPE i.
DATA: md_goods_issue TYPE xfeld,
mt_delv_return TYPE tab_prott.
**** Declarations For MIGO Posting
DATA:ls_goodsmvt_hdr TYPE bapi2017_gm_head_01,
l_goodsmvt_headret LIKE bapi2017_gm_head_ret,
l_materialdocument TYPE bapi2017_gm_head_ret-mat_doc,
l_matdocumentyear TYPE bapi2017_gm_head_ret-doc_year,
lt_goodsmvt_item TYPE TABLE OF bapi2017_gm_item_create,
lt_goodsmvt_serialnumber TYPE TABLE OF bapi2017_gm_serialnumber,
ls_goodsmvt_item TYPE bapi2017_gm_item_create,
ls_goodsmvt_serialnumber TYPE bapi2017_gm_serialnumber.
*** Item Variable Declaration For MIGO
DATA: lv_item TYPE mblpo.
TYPES: BEGIN OF ty_serial,
sno TYPE ebelp,
matnr TYPE matnr18,
menge TYPE kwmeng,
gernr TYPE gernr,
END OF ty_serial.
DATA: lt_Serial TYPE TABLE OF ty_serial,
ls_serial TYPE ty_serial.
DATA: lv_posnr TYPE posnr_vl.
DATA: lt_vbap TYPE TABLE OF vbap.
TYPES: BEGIN OF ty_alv,
sno TYPE i,
type TYPE bapi_mtype,
message TYPE bapi_msg,
END OF ty_alv.
DATA: gt_alv TYPE STANDARD TABLE OF ty_alv,
gs_alv TYPE ty_alv.
DATA: it_bdcmsgcoll TYPE TABLE OF bdcmsgcoll,
wa_bdcmsgcoll TYPE bdcmsgcoll.
DATA:message TYPE string.
DATA: lv_Count TYPE i.
*& Include ZSD_OUTB_CREATION_TOP
*&---------------------------------------------------------------------*
*** Billing Creation VL10B Creation
DATA : lv_delivery TYPE bapishpdelivnumb-deliv_numb,
lt_stock_trans_items TYPE STANDARD TABLE OF bapidlvreftosto,
ls_stock_trans_items TYPE bapidlvreftosto.
*** Piking Quantity Change VL02N Declarations
DATA:lt_vbpok_tab TYPE STANDARD TABLE OF vbpok,
ls_vbpok_tab TYPE vbpok.
*** Serial Number Declarations
DATA: lt_serial_t TYPE shp_sernr_update_t,
ls_serial_s TYPE shp_sernr_update_s.
*** Confirming Picking Data from Delivery Header Declarations
DATA: ls_vbkok TYPE vbkok,
ls_delivery_num TYPE bapishpdelivnumb-deliv_numb.
*** Return Declarations
DATA:lt_return TYPE TABLE OF bapiret2,
ls_return TYPE bapiret2.
DATA: lt_item TYPE STANDARD TABLE OF vbpok,
ls_item TYPE vbpok.
*** Return Declaration for piking Qty
DATA: lt_prott TYPE TABLE OF prott.
DATA: gv_count TYPE i.
DATA: md_goods_issue TYPE xfeld,
mt_delv_return TYPE tab_prott.
**** Declarations For MIGO Posting
DATA:ls_goodsmvt_hdr TYPE bapi2017_gm_head_01,
l_goodsmvt_headret LIKE bapi2017_gm_head_ret,
l_materialdocument TYPE bapi2017_gm_head_ret-mat_doc,
l_matdocumentyear TYPE bapi2017_gm_head_ret-doc_year,
lt_goodsmvt_item TYPE TABLE OF bapi2017_gm_item_create,
lt_goodsmvt_serialnumber TYPE TABLE OF bapi2017_gm_serialnumber,
ls_goodsmvt_item TYPE bapi2017_gm_item_create,
ls_goodsmvt_serialnumber TYPE bapi2017_gm_serialnumber.
*** Item Variable Declaration For MIGO
DATA: lv_item TYPE mblpo.
TYPES: BEGIN OF ty_serial,
sno TYPE ebelp,
matnr TYPE matnr18,
menge TYPE kwmeng,
gernr TYPE gernr,
END OF ty_serial.
DATA: lt_Serial TYPE TABLE OF ty_serial,
ls_serial TYPE ty_serial.
DATA: lv_posnr TYPE posnr_vl.
DATA: lt_vbap TYPE TABLE OF vbap.
TYPES: BEGIN OF ty_alv,
sno TYPE i,
type TYPE bapi_mtype,
message TYPE bapi_msg,
END OF ty_alv.
DATA: gt_alv TYPE STANDARD TABLE OF ty_alv,
gs_alv TYPE ty_alv.
DATA: it_bdcmsgcoll TYPE TABLE OF bdcmsgcoll,
wa_bdcmsgcoll TYPE bdcmsgcoll.
DATA:message TYPE string.
DATA: lv_Count TYPE i.
*&---------------------------------------------------------------------*
*& Include ZSD_OUTB_CREATION_SEL
*&---------------------------------------------------------------------*
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE TEXT-001.
PARAMETERS: p_po TYPE ekko-ebeln OBLIGATORY.
SELECTION-SCREEN END OF BLOCK b1.
SELECTION-SCREEN BEGIN OF BLOCK a1 WITH FRAME TITLE TEXT-002.
PARAMETERS:p_file1 LIKE rlgrap-filename OBLIGATORY.
SELECTION-SCREEN END OF BLOCK a1.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file1.
*** File Upload
PERFORM file_upload1.
*& Include ZSD_OUTB_CREATION_SEL
*&---------------------------------------------------------------------*
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE TEXT-001.
PARAMETERS: p_po TYPE ekko-ebeln OBLIGATORY.
SELECTION-SCREEN END OF BLOCK b1.
SELECTION-SCREEN BEGIN OF BLOCK a1 WITH FRAME TITLE TEXT-002.
PARAMETERS:p_file1 LIKE rlgrap-filename OBLIGATORY.
SELECTION-SCREEN END OF BLOCK a1.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file1.
*** File Upload
PERFORM file_upload1.
*&---------------------------------------------------------------------*
*& Include ZSD_OUTB_CREATION_F01
*&---------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& Form file_upload1
*&---------------------------------------------------------------------*
FORM file_upload1 .
* F4 Functionality
CALL FUNCTION 'F4_FILENAME'
EXPORTING
program_name = syst-cprog
dynpro_number = syst-dynnr
field_name = 'P_FILE1'
IMPORTING
file_name = p_file1.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form get_file_data
*&---------------------------------------------------------------------*
FORM get_file_data .
**** Serial Number Upload File
DATA: lt_raw1 TYPE truxs_t_text_data.
* Convert the XL file to Internal Table
CALL FUNCTION 'TEXT_CONVERT_XLS_TO_SAP'
EXPORTING
i_line_header = abap_true
i_tab_raw_data = lt_raw1
i_filename = p_file1
TABLES
i_tab_converted_data = lt_Serial
EXCEPTIONS
conversion_failed = 1
OTHERS = 2.
IF sy-subrc <> 0.
MESSAGE 'No Data File' TYPE 'E' DISPLAY LIKE 'S'.
ENDIF.
LOOP AT lt_Serial INTO ls_serial.
ls_serial-sno = ls_serial-sno * 10.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
input = ls_serial-sno
IMPORTING
output = ls_serial-sno.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
input = ls_serial-matnr
IMPORTING
output = ls_serial-matnr.
MODIFY lt_Serial FROM ls_serial.
ENDLOOP.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form get_data
*&---------------------------------------------------------------------*
FORM get_data .
DATA: lv_ebelp TYPE char4.
IF p_po IS NOT INITIAL.
SELECT * FROM ekpo INTO TABLE @DATA(lt_ekpo)
WHERE ebeln EQ @p_po.
ENDIF.
DATA(lt_serial1) = lt_serial[].
DELETE lt_serial1 WHERE menge IS INITIAL.
***Call Bapi For Outbound Delivery Creation
IF p_po IS NOT INITIAL.
LOOP AT lt_ekpo INTO DATA(wa_ekpo).
LOOP AT lt_serial1 INTO DATA(wa_serial) WHERE sno = wa_ekpo-ebelp
AND matnr = wa_ekpo-matnr.
ls_stock_trans_items-ref_doc = p_po.
ls_stock_trans_items-dlv_qty = wa_serial-menge.
ls_stock_trans_items-ref_item = wa_ekpo-ebelp.
ls_stock_trans_items-sales_unit = 'EA'.
APPEND ls_stock_trans_items TO lt_stock_trans_items.
CLEAR: ls_stock_trans_items.
ENDLOOP.
ENDLOOP.
CALL FUNCTION 'BAPI_OUTB_DELIVERY_CREATE_STO'
IMPORTING
delivery = lv_delivery
TABLES
stock_trans_items = lt_stock_trans_items
return = lt_return
EXCEPTIONS
OTHERS = 0.
READ TABLE lt_return INTO ls_return WITH KEY type = 'E'.
IF sy-subrc EQ 0.
LOOP AT lt_return INTO ls_return WHERE type = 'E'.
ADD 1 TO lv_count.
gs_Alv-sno = lv_count.
gs_alv-type = 'E'.
gs_alv-message = ls_return-message.
APPEND gs_alv TO gt_alv.
CLEAR:gs_alv.
ENDLOOP.
ELSE.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
wait = 'X'.
WAIT UP TO 2 SECONDS.
LOOP AT lt_return INTO ls_return WHERE type = 'S'.
ADD 1 TO lv_count.
gs_Alv-sno = lv_count.
gs_alv-type = 'S'.
gs_alv-message = ls_return-message.
APPEND gs_alv TO gt_alv.
CLEAR:gs_alv.
ENDLOOP.
ENDIF.
*** Call Bapi For VL02N Piking Quantity
LOOP AT lt_ekpo INTO DATA(ls_ekpo).
READ TABLE lt_serial INTO ls_serial WITH KEY sno = ls_ekpo-ebelp.
lv_posnr = lv_posnr + 10.
ls_vbpok_tab-vbeln_vl = lv_delivery .
ls_vbpok_tab-posnr_vl = lv_posnr.
ls_vbpok_tab-vbeln = lv_delivery .
ls_vbpok_tab-posnn = lv_posnr.
ls_vbpok_tab-lgort = ls_ekpo-lgort.
ls_vbpok_tab-pikmg = ls_serial-menge.
ls_vbpok_tab-taqui = 'X'. "Confirm Picking Qty
APPEND ls_vbpok_tab TO lt_vbpok_tab.
LOOP AT lt_serial INTO ls_serial WHERE sno = ls_ekpo-ebelp
AND matnr = ls_ekpo-matnr.
ls_serial_s-rfbel = lv_delivery.
ls_serial_s-rfpos = ls_vbpok_tab-posnr_vl.
ls_serial_s-sernr = ls_serial-gernr.
APPEND ls_serial_s TO lt_serial_t.
CLEAR: ls_serial_s.
ENDLOOP.
CLEAR: ls_vbpok_tab,ls_serial,ls_ekpo.
ENDLOOP.
ls_vbkok-vbeln_vl = lv_delivery . " fill this field with your delivery number
ls_vbkok-vbeln = lv_delivery .
ls_vbkok-wabuc = 'X'. " PGI
CALL FUNCTION 'WS_DELIVERY_UPDATE_2'
EXPORTING
vbkok_wa = ls_vbkok
synchron = abap_true
commit = abap_true
delivery = lv_delivery
update_picking = 'X'
nicht_sperren_1 = 'X'
it_sernr_update = lt_serial_t
if_database_update_1 = '1'
TABLES
vbpok_tab = lt_vbpok_tab
prot = lt_prott.
IF lt_prott[] IS INITIAL.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
wait = 'X'.
WAIT UP TO 2 SECONDS.
ADD 1 TO lv_count.
gs_Alv-sno = lv_count.
gs_alv-type = 'S'.
CONCATENATE 'Picking and PGI done is done for delivery' lv_delivery INTO
gs_alv-message SEPARATED BY space.
APPEND gs_alv TO gt_alv.
CLEAR:gs_alv.
ELSE.
READ TABLE lt_prott INTO DATA(ls_prott) WITH KEY msgty = 'E'.
IF sy-subrc = 0.
LOOP AT lt_prott INTO ls_prott WHERE msgty = 'E'.
ADD 1 TO lv_count.
gs_Alv-sno = lv_count.
gs_alv-type = ls_prott-msgty.
gs_alv-message = |{ ls_prott-msgv1 } { ls_prott-msgv2 } { ls_prott-msgv3 } { ls_prott-msgv4 } |.
APPEND gs_alv TO gt_Alv.
CLEAR:gs_Alv.
ENDLOOP.
ENDIF.
ENDIF.
*** VF01 CREATE Billing Document number
IF lv_delivery IS NOT INITIAL.
SUBMIT zvf01 WITH lv_vbeln = lv_delivery AND RETURN .
IMPORT it_bdcmsgcoll TO it_bdcmsgcoll FROM MEMORY ID 'IT_BDCMSGCOLL'.
DELETE it_bdcmsgcoll WHERE msgtyp = 'W'.
IF it_bdcmsgcoll IS NOT INITIAL.
LOOP AT it_bdcmsgcoll INTO wa_bdcmsgcoll.
CALL FUNCTION 'FORMAT_MESSAGE'
EXPORTING
id = wa_bdcmsgcoll-msgid
lang = sy-langu
no = wa_bdcmsgcoll-msgnr
v1 = wa_bdcmsgcoll-msgv1(50)
v2 = wa_bdcmsgcoll-msgv2(50)
v3 = wa_bdcmsgcoll-msgv3(50)
v4 = wa_bdcmsgcoll-msgv4(50)
IMPORTING
msg = message
EXCEPTIONS
not_found = 1
OTHERS = 2.
ADD 1 TO lv_count.
gs_alv-sno = lv_count.
gs_alv-type = wa_bdcmsgcoll-msgtyp.
gs_alv-message = message.
APPEND gs_alv TO gt_alv.
CLEAR: gs_alv.
ENDLOOP.
FREE MEMORY ID 'IT_BDCMSGCOLL'.
ENDIF.
ENDIF.
***Select LIPS for fetching delivery line items here
REFRESH: lt_return.
**** Call BAPI MIGO Posting
IF p_po IS NOT INITIAL.
LOOP AT lt_ekpo INTO ls_ekpo.
*** Header
READ TABLE lt_serial INTO ls_serial WITH KEY sno = ls_ekpo-ebelp.
ls_goodsmvt_hdr-pstng_date = sy-datum.
ls_goodsmvt_hdr-doc_date = sy-datum.
ls_goodsmvt_hdr-ref_doc_no = lv_delivery.
*** Items
ls_goodsmvt_item-material = |{ ls_ekpo-matnr ALPHA = IN }|.
ls_goodsmvt_item-plant = ls_ekpo-werks.
ls_goodsmvt_item-stge_loc = ls_ekpo-lgort.
ls_goodsmvt_item-move_type = '101'.
ls_goodsmvt_item-entry_qnt = ls_serial-menge."ls_ekpo-menge.
ls_goodsmvt_item-po_number = ls_ekpo-ebeln.
ls_goodsmvt_item-po_item = ls_ekpo-ebelp.
ls_goodsmvt_item-mvt_ind = 'B'.
APPEND ls_goodsmvt_item TO lt_goodsmvt_item.
lv_item = lv_item + 1.
LOOP AT lt_serial INTO ls_serial WHERE sno = ls_ekpo-ebelp
AND matnr = ls_ekpo-matnr.
ls_goodsmvt_serialnumber-matdoc_itm = lv_item.
ls_goodsmvt_serialnumber-serialno = ls_serial-gernr.
APPEND ls_goodsmvt_serialnumber TO lt_goodsmvt_serialnumber.
CLEAR ls_goodsmvt_serialnumber.
ENDLOOP.
CLEAR: ls_goodsmvt_item,ls_serial,ls_ekpo.
ENDLOOP.
CALL FUNCTION 'BAPI_GOODSMVT_CREATE'
EXPORTING
goodsmvt_header = ls_goodsmvt_hdr
goodsmvt_code = '01' "Goods receipt for purchase order
IMPORTING
goodsmvt_headret = l_goodsmvt_headret
materialdocument = l_materialdocument
matdocumentyear = l_matdocumentyear
TABLES
goodsmvt_item = lt_goodsmvt_item
goodsmvt_serialnumber = lt_goodsmvt_serialnumber
return = lt_return.
IF lt_return IS INITIAL.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
wait = abap_true.
WAIT UP TO 2 SECONDS.
ADD 1 TO lv_count.
gs_alv-sno = lv_count.
gs_alv-type = 'S'.
CONCATENATE 'material document created' l_materialdocument INTO gs_alv-message SEPARATED BY space.
APPEND gs_alv TO gt_alv.
CLEAR:gs_alv.
ELSE.
LOOP AT lt_return INTO ls_return WHERE type = 'E'.
ADD 1 TO lv_count.
gs_alv-sno = lv_count.
gs_alv-type = ls_return-type.
CONCATENATE l_materialdocument ls_ekpo-ebeln ls_ekpo-ebelp lS_return-message INTO gs_alv-message SEPARATED BY space.
APPEND gs_alv TO gt_alv.
CLEAR:gs_alv.
ENDLOOP.
ENDIF.
ENDIF.
ENDIF.
**** Creation OBD Piking Quantity For Sales VL01N
DATA: lv_so TYPE vbeln.
IF p_po IS NOT INITIAL.
SELECT SINGLE * FROM ekko INTO @DATA(ls_ekko)
WHERE ebeln EQ @p_po. " Get UNSEZ field
ENDIF.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'
EXPORTING
input = ls_ekko-unsez
IMPORTING
output = ls_ekko-unsez.
CLEAR:lv_so.
lv_so = ls_ekko-unsez.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
input = lv_so
IMPORTING
output = lv_so.
IF lv_so IS NOT INITIAL.
SELECT SINGLE * FROM vbap INTO @DATA(ls_vbap)
WHERE vbeln EQ @lv_so. " Get VSTEL field
ENDIF.
DATA:ship_point TYPE bapidlvcreateheader-ship_point,
it_sales_order_items TYPE TABLE OF bapidlvreftosalesorder,
wa_sales_order_items TYPE bapidlvreftosalesorder,
it_serial_numbers TYPE TABLE OF bapidlvserialnumber,
wa_serial_numbers TYPE bapidlvserialnumber.
DATA: lv_ref_item TYPE rfpos_vl.
CLEAR:ship_point.
REFRESH:it_sales_order_items,lt_return.
ship_point = ls_vbap-vstel.
CLEAR lt_vbpok_tab[].
LOOP AT lt_ekpo INTO ls_ekpo.
READ TABLE lt_serial INTO ls_serial WITH KEY sno = ls_ekpo-ebelp.
lv_ref_item = lv_ref_item + 1.
* lv_ref_item = lv_ref_item + 10. " " Added by eswar 22.02.2024
wa_sales_order_items-ref_doc = lv_so.
wa_sales_order_items-ref_item = lv_ref_item.
wa_sales_order_items-dlv_qty = ls_serial-menge.
wa_sales_order_items-sales_unit = 'EA'.
APPEND: wa_sales_order_items TO it_sales_order_items.
lt_vbpok_tab = VALUE #( BASE lt_vbpok_tab ( posnr_vl = lv_ref_item
posnn = lv_ref_item
lfimg = ls_serial-menge ) ).
LOOP AT lt_serial INTO ls_serial WHERE sno = ls_ekpo-ebelp
AND matnr = ls_ekpo-matnr.
IF ls_serial-gernr IS NOT INITIAL.
wa_serial_numbers-ref_doc = lv_so.
wa_serial_numbers-ref_item = wa_sales_order_items-ref_item.
wa_serial_numbers-serialno = ls_serial-gernr.
APPEND: wa_serial_numbers TO it_serial_numbers.
CLEAR: wa_serial_numbers.
ENDIF.
ENDLOOP.
CLEAR: wa_sales_order_items,ls_serial,ls_ekpo.
ENDLOOP.
SET UPDATE TASK LOCAL.
CALL FUNCTION 'BAPI_OUTB_DELIVERY_CREATE_SLS'
EXPORTING
ship_point = ship_point
due_date = sy-datum
IMPORTING
delivery = lv_delivery
TABLES
sales_order_items = it_sales_order_items
serial_numbers = it_serial_numbers
return = lt_return.
READ TABLE lt_return INTO ls_return WITH KEY type = 'E'.
IF sy-subrc EQ 0.
LOOP AT lt_return INTO ls_return WHERE type = 'E'.
ADD 1 TO lv_count.
gs_alv-type = 'E'.
gs_alv-message = ls_return-message.
APPEND gs_alv TO gt_alv.
CLEAR:gs_alv.
ENDLOOP.
ELSE.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
wait = 'X'.
WAIT UP TO 2 SECONDS.
CLEAR: ls_vbkok.
ls_vbpok_tab-vbeln =
ls_vbpok_tab-vbeln_vl = lv_delivery.
ls_vbkok-vbeln_vl = lv_delivery .
ls_vbkok-wabuc = 'X'. " PGI
MODIFY lt_vbpok_tab FROM ls_vbpok_tab TRANSPORTING vbeln_vl vbeln WHERE vbeln_vl IS INITIAL.
CALL FUNCTION 'WS_DELIVERY_UPDATE_2'
STARTING NEW TASK ' ' DESTINATION 'NONE'
PERFORMING call_back ON END OF TASK
EXPORTING
vbkok_wa = ls_vbkok
synchron = abap_true
commit = abap_true
delivery = lv_delivery
update_picking = 'X'
if_database_update_1 = '1'
if_error_messages_send = ''
TABLES
vbpok_tab = lt_vbpok_tab
prot = lt_prott.
WAIT UNTIL gv_count = 1.
IF md_goods_issue NE abap_true.
ADD 1 TO lv_count.
gs_Alv-sno = lv_count.
gs_alv-type = 'S'.
CONCATENATE 'Picking and PGI done for delivery' lv_delivery INTO
gs_alv-message SEPARATED BY space.
APPEND gs_alv TO gt_alv.
CLEAR:gs_alv.
ELSEIF lt_prott IS NOT INITIAL.
READ TABLE lt_prott INTO ls_prott WITH KEY msgty = 'E'.
IF sy-subrc = 0.
LOOP AT lt_prott INTO ls_prott WHERE msgty = 'E'.
ADD 1 TO lv_count.
gs_Alv-sno = lv_count.
gs_alv-type = ls_prott-msgty.
gs_alv-message = |{ ls_prott-msgv1 } { ls_prott-msgv2 } { ls_prott-msgv3 } { ls_prott-msgv4 } |.
APPEND gs_alv TO gt_Alv.
CLEAR:gs_Alv.
ENDLOOP.
ENDIF.
ENDIF.
ENDIF.
ENDFORM.
FORM call_back USING pv_task TYPE clike.
RECEIVE RESULTS FROM FUNCTION 'WS_DELIVERY_UPDATE_2'
IMPORTING
ef_error_in_goods_issue = md_goods_issue
TABLES
prot = mt_delv_return
EXCEPTIONS
system_failure = 2
communication_failure = 4.
IF sy-subrc <> 0.
"Message
ENDIF.
gv_count = gv_count + 1.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form display_data
*&---------------------------------------------------------------------*
FORM display_data .
TYPE-POOLS:
slis.
DATA:
ls_fieldcat TYPE slis_fieldcat_alv,
ls_layout TYPE slis_layout_alv.
DATA:
lt_fieldcat TYPE slis_t_fieldcat_alv.
DATA:
lv_program TYPE sy-repid.
IF gt_alv IS NOT INITIAL.
CLEAR ls_fieldcat.
ls_fieldcat-fieldname = 'SNO'.
ls_fieldcat-tabname = 'GT_ALV'.
ls_fieldcat-seltext_m = 'Serial Number'.
APPEND ls_fieldcat TO lt_fieldcat.
CLEAR ls_fieldcat.
ls_fieldcat-fieldname = 'TYPE'.
ls_fieldcat-tabname = 'GT_ALV'.
ls_fieldcat-seltext_m = 'Status'.
APPEND ls_fieldcat TO lt_fieldcat.
CLEAR ls_fieldcat.
ls_fieldcat-fieldname = 'MESSAGE'.
ls_fieldcat-tabname = 'GT_ALV'.
ls_fieldcat-seltext_m = 'Message'.
APPEND ls_fieldcat TO lt_fieldcat.
CLEAR ls_layout.
ls_layout-colwidth_optimize = 'X'.
ls_layout-zebra = 'X'.
lv_program = sy-repid.
* Display The Final Display
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = lv_program
is_layout = ls_layout
it_fieldcat = lt_fieldcat
TABLES
t_outtab = gt_alv
EXCEPTIONS
program_error = 1
OTHERS = 2.
ELSE.
MESSAGE 'No Errors Found' TYPE 'I'.
ENDIF.
ENDFORM.
*& Include ZSD_OUTB_CREATION_F01
*&---------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& Form file_upload1
*&---------------------------------------------------------------------*
FORM file_upload1 .
* F4 Functionality
CALL FUNCTION 'F4_FILENAME'
EXPORTING
program_name = syst-cprog
dynpro_number = syst-dynnr
field_name = 'P_FILE1'
IMPORTING
file_name = p_file1.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form get_file_data
*&---------------------------------------------------------------------*
FORM get_file_data .
**** Serial Number Upload File
DATA: lt_raw1 TYPE truxs_t_text_data.
* Convert the XL file to Internal Table
CALL FUNCTION 'TEXT_CONVERT_XLS_TO_SAP'
EXPORTING
i_line_header = abap_true
i_tab_raw_data = lt_raw1
i_filename = p_file1
TABLES
i_tab_converted_data = lt_Serial
EXCEPTIONS
conversion_failed = 1
OTHERS = 2.
IF sy-subrc <> 0.
MESSAGE 'No Data File' TYPE 'E' DISPLAY LIKE 'S'.
ENDIF.
LOOP AT lt_Serial INTO ls_serial.
ls_serial-sno = ls_serial-sno * 10.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
input = ls_serial-sno
IMPORTING
output = ls_serial-sno.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
input = ls_serial-matnr
IMPORTING
output = ls_serial-matnr.
MODIFY lt_Serial FROM ls_serial.
ENDLOOP.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form get_data
*&---------------------------------------------------------------------*
FORM get_data .
DATA: lv_ebelp TYPE char4.
IF p_po IS NOT INITIAL.
SELECT * FROM ekpo INTO TABLE @DATA(lt_ekpo)
WHERE ebeln EQ @p_po.
ENDIF.
DATA(lt_serial1) = lt_serial[].
DELETE lt_serial1 WHERE menge IS INITIAL.
***Call Bapi For Outbound Delivery Creation
IF p_po IS NOT INITIAL.
LOOP AT lt_ekpo INTO DATA(wa_ekpo).
LOOP AT lt_serial1 INTO DATA(wa_serial) WHERE sno = wa_ekpo-ebelp
AND matnr = wa_ekpo-matnr.
ls_stock_trans_items-ref_doc = p_po.
ls_stock_trans_items-dlv_qty = wa_serial-menge.
ls_stock_trans_items-ref_item = wa_ekpo-ebelp.
ls_stock_trans_items-sales_unit = 'EA'.
APPEND ls_stock_trans_items TO lt_stock_trans_items.
CLEAR: ls_stock_trans_items.
ENDLOOP.
ENDLOOP.
CALL FUNCTION 'BAPI_OUTB_DELIVERY_CREATE_STO'
IMPORTING
delivery = lv_delivery
TABLES
stock_trans_items = lt_stock_trans_items
return = lt_return
EXCEPTIONS
OTHERS = 0.
READ TABLE lt_return INTO ls_return WITH KEY type = 'E'.
IF sy-subrc EQ 0.
LOOP AT lt_return INTO ls_return WHERE type = 'E'.
ADD 1 TO lv_count.
gs_Alv-sno = lv_count.
gs_alv-type = 'E'.
gs_alv-message = ls_return-message.
APPEND gs_alv TO gt_alv.
CLEAR:gs_alv.
ENDLOOP.
ELSE.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
wait = 'X'.
WAIT UP TO 2 SECONDS.
LOOP AT lt_return INTO ls_return WHERE type = 'S'.
ADD 1 TO lv_count.
gs_Alv-sno = lv_count.
gs_alv-type = 'S'.
gs_alv-message = ls_return-message.
APPEND gs_alv TO gt_alv.
CLEAR:gs_alv.
ENDLOOP.
ENDIF.
*** Call Bapi For VL02N Piking Quantity
LOOP AT lt_ekpo INTO DATA(ls_ekpo).
READ TABLE lt_serial INTO ls_serial WITH KEY sno = ls_ekpo-ebelp.
lv_posnr = lv_posnr + 10.
ls_vbpok_tab-vbeln_vl = lv_delivery .
ls_vbpok_tab-posnr_vl = lv_posnr.
ls_vbpok_tab-vbeln = lv_delivery .
ls_vbpok_tab-posnn = lv_posnr.
ls_vbpok_tab-lgort = ls_ekpo-lgort.
ls_vbpok_tab-pikmg = ls_serial-menge.
ls_vbpok_tab-taqui = 'X'. "Confirm Picking Qty
APPEND ls_vbpok_tab TO lt_vbpok_tab.
LOOP AT lt_serial INTO ls_serial WHERE sno = ls_ekpo-ebelp
AND matnr = ls_ekpo-matnr.
ls_serial_s-rfbel = lv_delivery.
ls_serial_s-rfpos = ls_vbpok_tab-posnr_vl.
ls_serial_s-sernr = ls_serial-gernr.
APPEND ls_serial_s TO lt_serial_t.
CLEAR: ls_serial_s.
ENDLOOP.
CLEAR: ls_vbpok_tab,ls_serial,ls_ekpo.
ENDLOOP.
ls_vbkok-vbeln_vl = lv_delivery . " fill this field with your delivery number
ls_vbkok-vbeln = lv_delivery .
ls_vbkok-wabuc = 'X'. " PGI
CALL FUNCTION 'WS_DELIVERY_UPDATE_2'
EXPORTING
vbkok_wa = ls_vbkok
synchron = abap_true
commit = abap_true
delivery = lv_delivery
update_picking = 'X'
nicht_sperren_1 = 'X'
it_sernr_update = lt_serial_t
if_database_update_1 = '1'
TABLES
vbpok_tab = lt_vbpok_tab
prot = lt_prott.
IF lt_prott[] IS INITIAL.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
wait = 'X'.
WAIT UP TO 2 SECONDS.
ADD 1 TO lv_count.
gs_Alv-sno = lv_count.
gs_alv-type = 'S'.
CONCATENATE 'Picking and PGI done is done for delivery' lv_delivery INTO
gs_alv-message SEPARATED BY space.
APPEND gs_alv TO gt_alv.
CLEAR:gs_alv.
ELSE.
READ TABLE lt_prott INTO DATA(ls_prott) WITH KEY msgty = 'E'.
IF sy-subrc = 0.
LOOP AT lt_prott INTO ls_prott WHERE msgty = 'E'.
ADD 1 TO lv_count.
gs_Alv-sno = lv_count.
gs_alv-type = ls_prott-msgty.
gs_alv-message = |{ ls_prott-msgv1 } { ls_prott-msgv2 } { ls_prott-msgv3 } { ls_prott-msgv4 } |.
APPEND gs_alv TO gt_Alv.
CLEAR:gs_Alv.
ENDLOOP.
ENDIF.
ENDIF.
*** VF01 CREATE Billing Document number
IF lv_delivery IS NOT INITIAL.
SUBMIT zvf01 WITH lv_vbeln = lv_delivery AND RETURN .
IMPORT it_bdcmsgcoll TO it_bdcmsgcoll FROM MEMORY ID 'IT_BDCMSGCOLL'.
DELETE it_bdcmsgcoll WHERE msgtyp = 'W'.
IF it_bdcmsgcoll IS NOT INITIAL.
LOOP AT it_bdcmsgcoll INTO wa_bdcmsgcoll.
CALL FUNCTION 'FORMAT_MESSAGE'
EXPORTING
id = wa_bdcmsgcoll-msgid
lang = sy-langu
no = wa_bdcmsgcoll-msgnr
v1 = wa_bdcmsgcoll-msgv1(50)
v2 = wa_bdcmsgcoll-msgv2(50)
v3 = wa_bdcmsgcoll-msgv3(50)
v4 = wa_bdcmsgcoll-msgv4(50)
IMPORTING
msg = message
EXCEPTIONS
not_found = 1
OTHERS = 2.
ADD 1 TO lv_count.
gs_alv-sno = lv_count.
gs_alv-type = wa_bdcmsgcoll-msgtyp.
gs_alv-message = message.
APPEND gs_alv TO gt_alv.
CLEAR: gs_alv.
ENDLOOP.
FREE MEMORY ID 'IT_BDCMSGCOLL'.
ENDIF.
ENDIF.
***Select LIPS for fetching delivery line items here
REFRESH: lt_return.
**** Call BAPI MIGO Posting
IF p_po IS NOT INITIAL.
LOOP AT lt_ekpo INTO ls_ekpo.
*** Header
READ TABLE lt_serial INTO ls_serial WITH KEY sno = ls_ekpo-ebelp.
ls_goodsmvt_hdr-pstng_date = sy-datum.
ls_goodsmvt_hdr-doc_date = sy-datum.
ls_goodsmvt_hdr-ref_doc_no = lv_delivery.
*** Items
ls_goodsmvt_item-material = |{ ls_ekpo-matnr ALPHA = IN }|.
ls_goodsmvt_item-plant = ls_ekpo-werks.
ls_goodsmvt_item-stge_loc = ls_ekpo-lgort.
ls_goodsmvt_item-move_type = '101'.
ls_goodsmvt_item-entry_qnt = ls_serial-menge."ls_ekpo-menge.
ls_goodsmvt_item-po_number = ls_ekpo-ebeln.
ls_goodsmvt_item-po_item = ls_ekpo-ebelp.
ls_goodsmvt_item-mvt_ind = 'B'.
APPEND ls_goodsmvt_item TO lt_goodsmvt_item.
lv_item = lv_item + 1.
LOOP AT lt_serial INTO ls_serial WHERE sno = ls_ekpo-ebelp
AND matnr = ls_ekpo-matnr.
ls_goodsmvt_serialnumber-matdoc_itm = lv_item.
ls_goodsmvt_serialnumber-serialno = ls_serial-gernr.
APPEND ls_goodsmvt_serialnumber TO lt_goodsmvt_serialnumber.
CLEAR ls_goodsmvt_serialnumber.
ENDLOOP.
CLEAR: ls_goodsmvt_item,ls_serial,ls_ekpo.
ENDLOOP.
CALL FUNCTION 'BAPI_GOODSMVT_CREATE'
EXPORTING
goodsmvt_header = ls_goodsmvt_hdr
goodsmvt_code = '01' "Goods receipt for purchase order
IMPORTING
goodsmvt_headret = l_goodsmvt_headret
materialdocument = l_materialdocument
matdocumentyear = l_matdocumentyear
TABLES
goodsmvt_item = lt_goodsmvt_item
goodsmvt_serialnumber = lt_goodsmvt_serialnumber
return = lt_return.
IF lt_return IS INITIAL.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
wait = abap_true.
WAIT UP TO 2 SECONDS.
ADD 1 TO lv_count.
gs_alv-sno = lv_count.
gs_alv-type = 'S'.
CONCATENATE 'material document created' l_materialdocument INTO gs_alv-message SEPARATED BY space.
APPEND gs_alv TO gt_alv.
CLEAR:gs_alv.
ELSE.
LOOP AT lt_return INTO ls_return WHERE type = 'E'.
ADD 1 TO lv_count.
gs_alv-sno = lv_count.
gs_alv-type = ls_return-type.
CONCATENATE l_materialdocument ls_ekpo-ebeln ls_ekpo-ebelp lS_return-message INTO gs_alv-message SEPARATED BY space.
APPEND gs_alv TO gt_alv.
CLEAR:gs_alv.
ENDLOOP.
ENDIF.
ENDIF.
ENDIF.
**** Creation OBD Piking Quantity For Sales VL01N
DATA: lv_so TYPE vbeln.
IF p_po IS NOT INITIAL.
SELECT SINGLE * FROM ekko INTO @DATA(ls_ekko)
WHERE ebeln EQ @p_po. " Get UNSEZ field
ENDIF.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'
EXPORTING
input = ls_ekko-unsez
IMPORTING
output = ls_ekko-unsez.
CLEAR:lv_so.
lv_so = ls_ekko-unsez.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
input = lv_so
IMPORTING
output = lv_so.
IF lv_so IS NOT INITIAL.
SELECT SINGLE * FROM vbap INTO @DATA(ls_vbap)
WHERE vbeln EQ @lv_so. " Get VSTEL field
ENDIF.
DATA:ship_point TYPE bapidlvcreateheader-ship_point,
it_sales_order_items TYPE TABLE OF bapidlvreftosalesorder,
wa_sales_order_items TYPE bapidlvreftosalesorder,
it_serial_numbers TYPE TABLE OF bapidlvserialnumber,
wa_serial_numbers TYPE bapidlvserialnumber.
DATA: lv_ref_item TYPE rfpos_vl.
CLEAR:ship_point.
REFRESH:it_sales_order_items,lt_return.
ship_point = ls_vbap-vstel.
CLEAR lt_vbpok_tab[].
LOOP AT lt_ekpo INTO ls_ekpo.
READ TABLE lt_serial INTO ls_serial WITH KEY sno = ls_ekpo-ebelp.
lv_ref_item = lv_ref_item + 1.
* lv_ref_item = lv_ref_item + 10. " " Added by eswar 22.02.2024
wa_sales_order_items-ref_doc = lv_so.
wa_sales_order_items-ref_item = lv_ref_item.
wa_sales_order_items-dlv_qty = ls_serial-menge.
wa_sales_order_items-sales_unit = 'EA'.
APPEND: wa_sales_order_items TO it_sales_order_items.
lt_vbpok_tab = VALUE #( BASE lt_vbpok_tab ( posnr_vl = lv_ref_item
posnn = lv_ref_item
lfimg = ls_serial-menge ) ).
LOOP AT lt_serial INTO ls_serial WHERE sno = ls_ekpo-ebelp
AND matnr = ls_ekpo-matnr.
IF ls_serial-gernr IS NOT INITIAL.
wa_serial_numbers-ref_doc = lv_so.
wa_serial_numbers-ref_item = wa_sales_order_items-ref_item.
wa_serial_numbers-serialno = ls_serial-gernr.
APPEND: wa_serial_numbers TO it_serial_numbers.
CLEAR: wa_serial_numbers.
ENDIF.
ENDLOOP.
CLEAR: wa_sales_order_items,ls_serial,ls_ekpo.
ENDLOOP.
SET UPDATE TASK LOCAL.
CALL FUNCTION 'BAPI_OUTB_DELIVERY_CREATE_SLS'
EXPORTING
ship_point = ship_point
due_date = sy-datum
IMPORTING
delivery = lv_delivery
TABLES
sales_order_items = it_sales_order_items
serial_numbers = it_serial_numbers
return = lt_return.
READ TABLE lt_return INTO ls_return WITH KEY type = 'E'.
IF sy-subrc EQ 0.
LOOP AT lt_return INTO ls_return WHERE type = 'E'.
ADD 1 TO lv_count.
gs_alv-type = 'E'.
gs_alv-message = ls_return-message.
APPEND gs_alv TO gt_alv.
CLEAR:gs_alv.
ENDLOOP.
ELSE.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
wait = 'X'.
WAIT UP TO 2 SECONDS.
CLEAR: ls_vbkok.
ls_vbpok_tab-vbeln =
ls_vbpok_tab-vbeln_vl = lv_delivery.
ls_vbkok-vbeln_vl = lv_delivery .
ls_vbkok-wabuc = 'X'. " PGI
MODIFY lt_vbpok_tab FROM ls_vbpok_tab TRANSPORTING vbeln_vl vbeln WHERE vbeln_vl IS INITIAL.
CALL FUNCTION 'WS_DELIVERY_UPDATE_2'
STARTING NEW TASK ' ' DESTINATION 'NONE'
PERFORMING call_back ON END OF TASK
EXPORTING
vbkok_wa = ls_vbkok
synchron = abap_true
commit = abap_true
delivery = lv_delivery
update_picking = 'X'
if_database_update_1 = '1'
if_error_messages_send = ''
TABLES
vbpok_tab = lt_vbpok_tab
prot = lt_prott.
WAIT UNTIL gv_count = 1.
IF md_goods_issue NE abap_true.
ADD 1 TO lv_count.
gs_Alv-sno = lv_count.
gs_alv-type = 'S'.
CONCATENATE 'Picking and PGI done for delivery' lv_delivery INTO
gs_alv-message SEPARATED BY space.
APPEND gs_alv TO gt_alv.
CLEAR:gs_alv.
ELSEIF lt_prott IS NOT INITIAL.
READ TABLE lt_prott INTO ls_prott WITH KEY msgty = 'E'.
IF sy-subrc = 0.
LOOP AT lt_prott INTO ls_prott WHERE msgty = 'E'.
ADD 1 TO lv_count.
gs_Alv-sno = lv_count.
gs_alv-type = ls_prott-msgty.
gs_alv-message = |{ ls_prott-msgv1 } { ls_prott-msgv2 } { ls_prott-msgv3 } { ls_prott-msgv4 } |.
APPEND gs_alv TO gt_Alv.
CLEAR:gs_Alv.
ENDLOOP.
ENDIF.
ENDIF.
ENDIF.
ENDFORM.
FORM call_back USING pv_task TYPE clike.
RECEIVE RESULTS FROM FUNCTION 'WS_DELIVERY_UPDATE_2'
IMPORTING
ef_error_in_goods_issue = md_goods_issue
TABLES
prot = mt_delv_return
EXCEPTIONS
system_failure = 2
communication_failure = 4.
IF sy-subrc <> 0.
"Message
ENDIF.
gv_count = gv_count + 1.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form display_data
*&---------------------------------------------------------------------*
FORM display_data .
TYPE-POOLS:
slis.
DATA:
ls_fieldcat TYPE slis_fieldcat_alv,
ls_layout TYPE slis_layout_alv.
DATA:
lt_fieldcat TYPE slis_t_fieldcat_alv.
DATA:
lv_program TYPE sy-repid.
IF gt_alv IS NOT INITIAL.
CLEAR ls_fieldcat.
ls_fieldcat-fieldname = 'SNO'.
ls_fieldcat-tabname = 'GT_ALV'.
ls_fieldcat-seltext_m = 'Serial Number'.
APPEND ls_fieldcat TO lt_fieldcat.
CLEAR ls_fieldcat.
ls_fieldcat-fieldname = 'TYPE'.
ls_fieldcat-tabname = 'GT_ALV'.
ls_fieldcat-seltext_m = 'Status'.
APPEND ls_fieldcat TO lt_fieldcat.
CLEAR ls_fieldcat.
ls_fieldcat-fieldname = 'MESSAGE'.
ls_fieldcat-tabname = 'GT_ALV'.
ls_fieldcat-seltext_m = 'Message'.
APPEND ls_fieldcat TO lt_fieldcat.
CLEAR ls_layout.
ls_layout-colwidth_optimize = 'X'.
ls_layout-zebra = 'X'.
lv_program = sy-repid.
* Display The Final Display
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = lv_program
is_layout = ls_layout
it_fieldcat = lt_fieldcat
TABLES
t_outtab = gt_alv
EXCEPTIONS
program_error = 1
OTHERS = 2.
ELSE.
MESSAGE 'No Errors Found' TYPE 'I'.
ENDIF.
ENDFORM.
NOte:
Please find the below Submit Program Code:
*&---------------------------------------------------------------------*
*& Report ZVF01
*&---------------------------------------------------------------------*
*& Program : ZVF01
*& Author :
*& Created on :
*& Requested By :
*& Project :
*& Transport-No :
*& Description : STO Full Cycle ( PO + Outbound + Piking qty PGI )
*& T-Code :
*&---------------------------------------------------------------------*
REPORT zvf01.
PARAMETERS : lv_vbeln TYPE vbeln.
DATA: bdcdata LIKE bdcdata OCCURS 0 WITH HEADER LINE,
l_mode VALUE 'N'.
DATA: it_bdcmsgcoll TYPE TABLE OF bdcmsgcoll.
START-OF-SELECTION.
PERFORM bdc_dynpro USING 'SAPMV60A' '0102'.
PERFORM bdc_field USING 'BDC_CURSOR'
'KOMFK-VBELN(01)'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=SICH'.
PERFORM bdc_field USING 'RV60A-FKART'
'ZGST'.
PERFORM bdc_field USING 'KOMFK-VBELN(01)'
lv_vbeln .
CALL TRANSACTION 'VF01' USING bdcdata[] MODE l_mode UPDATE 'S' MESSAGES INTO it_bdcmsgcoll.
COMMIT WORK AND WAIT .
IF it_bdcmsgcoll IS NOT INITIAL.
EXPORT it_bdcmsgcoll FROM it_bdcmsgcoll TO MEMORY ID 'IT_BDCMSGCOLL'.
ENDIF.
*----------------------------------------------------------------------*
* Start new screen *
*----------------------------------------------------------------------*
FORM bdc_dynpro USING program dynpro.
CLEAR bdcdata.
bdcdata-program = program.
bdcdata-dynpro = dynpro.
bdcdata-dynbegin = 'X'.
APPEND bdcdata.
ENDFORM. "bdc_dynpro
*----------------------------------------------------------------------*
* Insert field *
*----------------------------------------------------------------------*
FORM bdc_field USING fnam fval.
CLEAR bdcdata.
bdcdata-fnam = fnam.
bdcdata-fval = fval.
APPEND bdcdata.
ENDFORM. "bdc_field
*& Report ZVF01
*&---------------------------------------------------------------------*
*& Program : ZVF01
*& Author :
*& Created on :
*& Requested By :
*& Project :
*& Transport-No :
*& Description : STO Full Cycle ( PO + Outbound + Piking qty PGI )
*& T-Code :
*&---------------------------------------------------------------------*
REPORT zvf01.
PARAMETERS : lv_vbeln TYPE vbeln.
DATA: bdcdata LIKE bdcdata OCCURS 0 WITH HEADER LINE,
l_mode VALUE 'N'.
DATA: it_bdcmsgcoll TYPE TABLE OF bdcmsgcoll.
START-OF-SELECTION.
PERFORM bdc_dynpro USING 'SAPMV60A' '0102'.
PERFORM bdc_field USING 'BDC_CURSOR'
'KOMFK-VBELN(01)'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=SICH'.
PERFORM bdc_field USING 'RV60A-FKART'
'ZGST'.
PERFORM bdc_field USING 'KOMFK-VBELN(01)'
lv_vbeln .
CALL TRANSACTION 'VF01' USING bdcdata[] MODE l_mode UPDATE 'S' MESSAGES INTO it_bdcmsgcoll.
COMMIT WORK AND WAIT .
IF it_bdcmsgcoll IS NOT INITIAL.
EXPORT it_bdcmsgcoll FROM it_bdcmsgcoll TO MEMORY ID 'IT_BDCMSGCOLL'.
ENDIF.
*----------------------------------------------------------------------*
* Start new screen *
*----------------------------------------------------------------------*
FORM bdc_dynpro USING program dynpro.
CLEAR bdcdata.
bdcdata-program = program.
bdcdata-dynpro = dynpro.
bdcdata-dynbegin = 'X'.
APPEND bdcdata.
ENDFORM. "bdc_dynpro
*----------------------------------------------------------------------*
* Insert field *
*----------------------------------------------------------------------*
FORM bdc_field USING fnam fval.
CLEAR bdcdata.
bdcdata-fnam = fnam.
bdcdata-fval = fval.
APPEND bdcdata.
ENDFORM. "bdc_field
Comments
Post a Comment