Material PR Creation & Service PR Creation (ME51N) Using BAPI
*----------------------------------------------------------------------*
** Program Name : ZMM_AUTO_SERVICE_CREATE
** Description : Service & Material PR Uploa
** Created on : 2024
** Requestor : Functional Consultant
** Transport-No : 1234567890
*----------------------------------------------------------------------*
REPORT zmm_auto_service_create.
TYPE-POOLS: slis,truxs .
TABLES: sscrfields.
TYPES: BEGIN OF ty_data,
s_no TYPE i,
knttp TYPE knttp, "Account assignment category
pstyp TYPE pstyp, "Item category
header_text TYPE string, "" header text
bnfpo TYPE bnfpo, "Item number of purchase requisition
short_text TYPE txz01, "" short text
dev_date TYPE eindt, " delivery date
mat_grp TYPE matkl, " material group
plant TYPE ewerk, " plant
pur_grp TYPE ekgrp, " purchase group
name_req TYPE afnam, "" name
track_no TYPE bednr, "" tracking no
pur_org TYPE ekorg, "" purchase org
item_text TYPE string, "" item text
service_line TYPE extrow, "" service line
service_no TYPE srvpos, " service no
menge TYPE mengev, " quantity
gross_amount TYPE sbrtwr, " gross amount
wbs_element TYPE ps_posid, " wbs element
cost_center TYPE kostl,
END OF ty_data.
TYPES : BEGIN OF ty_data1,
s_no TYPE i,
doc_type TYPE bsart,
knttp TYPE knttp, "Account assignment category
header_text TYPE string, "" header text
bnfpo TYPE bnfpo, "Item number of purchase requisition
material TYPE matnr, " MATERIAL
short_text TYPE txz01, "" short text
qty TYPE mengev, ""QUALITY
uom TYPE meins, " MEASURE OF UNIT
dev_date TYPE eindt, " delivery date
preq_price TYPE sbrtwr,
mat_grp TYPE matkl, " material group
plant TYPE ewerk, " plant
sto_loc TYPE lgort_d, " plant
pur_grp TYPE ekgrp, " purchase group
pur_org TYPE ekorg, "" purchase org
item_text TYPE string, "" item text
* service_line TYPE extrow, "" service line
menge TYPE mengev, " quantity
gross_amount TYPE sbrtwr, " gross amount
cost_center TYPE kostl,
END OF ty_data1.
TYPES: BEGIN OF ty_final,
sno TYPE i,
type TYPE char1,
number(10) TYPE c,
banfn TYPE banfn,
message TYPE bapi_msg,
END OF ty_final.
DATA: gtab_excel TYPE STANDARD TABLE OF ty_data1,
stab_excel TYPE ty_data1.
DATA: itab_final TYPE STANDARD TABLE OF ty_final,
wa_final TYPE ty_final.
DATA:
gs_header TYPE bapimereqheader,
gs_headerx TYPE bapimereqheaderx,
gt_item TYPE TABLE OF bapimereqitemimp,
gs_item LIKE gt_item,
gt_itemx TYPE TABLE OF bapimereqitemx,
gs_itemx TYPE bapimereqitemx,
gt_account TYPE TABLE OF bapimereqaccount,
gs_account TYPE bapimereqaccount,
gt_accountx TYPE TABLE OF bapimereqaccountx,
gs_accountx TYPE bapimereqaccountx,
gt_service TYPE TABLE OF bapi_srv_service_line,
gs_service TYPE bapi_srv_service_line,
gt_servicex TYPE TABLE OF bapi_srv_service_linex,
gs_servicex TYPE bapi_srv_service_linex,
gt_service_acc TYPE TABLE OF bapi_srv_acc_data,
gs_service_acc TYPE bapi_srv_acc_data,
gt_service_accx TYPE TABLE OF bapi_srv_acc_datax,
gs_service_accx TYPE bapi_srv_acc_datax,
gt_return TYPE TABLE OF bapiret2,
gs_return TYPE bapiret2,
gt_header_text TYPE TABLE OF bapimereqitemtext,
gt_item_text TYPE TABLE OF bapimereqheadtext.
DATA: gs_header1 TYPE bapimereqheader,
gs_headerx1 TYPE bapimereqheaderx,
gt_item1 TYPE TABLE OF bapimereqitemimp,
gt_itemx1 TYPE TABLE OF bapimereqitemx,
gt_account1 TYPE TABLE OF bapimereqaccount,
gt_accountx1 TYPE TABLE OF bapimereqaccountx,
gt_service1 TYPE TABLE OF bapi_srv_service_line,
gt_servicex1 TYPE TABLE OF bapi_srv_service_linex,
gt_service_acc1 TYPE TABLE OF bapi_srv_acc_data,
gt_service_accx1 TYPE TABLE OF bapi_srv_acc_datax,
gt_return1 TYPE TABLE OF bapiret2,
gs_return1 TYPE bapiret2,
gt_item_text1 TYPE TABLE OF bapimereqheadtext,
gt_header_text1 TYPE TABLE OF bapimereqitemtext.
DATA: gt_account2 TYPE TABLE OF bapimereqaccount,
gt_accountx2 TYPE TABLE OF bapimereqaccountx.
DATA : itab_type TYPE truxs_t_text_data,
itab_excel TYPE STANDARD TABLE OF ty_data.
CONSTANTS: lc_e TYPE char1 VALUE 'E',
lc_s TYPE char1 VALUE 'S'.
DATA: lv_number TYPE bapimereqheader-preq_no,
lv_number1 TYPE bapimereqheader-preq_no,
lv_num TYPE i,
lv_bnfpo TYPE bnfpo,
lv_item TYPE ebelp.
DATA: wa_excel TYPE ty_data.
DATA: itab_fieldcat TYPE slis_t_fieldcat_alv,
wa_fieldcat TYPE slis_fieldcat_alv,
wa_layout TYPE slis_layout_alv.
***Excel File Dowload Button
DATA: h_excel TYPE ole2_object, " Excel object
h_mapl TYPE ole2_object, " list of workbooks
h_map TYPE ole2_object, " workbook
h_zl TYPE ole2_object, " cell
h_f TYPE ole2_object. " font
DATA: sl_no TYPE i VALUE 1.
DATA: no TYPE i.
DATA: pckg_no TYPE i VALUE 1,
line_no TYPE i,
sub_pckg TYPE i VALUE 1,
sub_pckg1 TYPE i VALUE 3,
serv_pckg_no TYPE i,
serv_line_no TYPE i,
ser_no TYPE i.
DATA: banfo TYPE i.
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE TEXT-001.
PARAMETERS : p_file TYPE rlgrap-filename. " OBLIGATORY.
SELECTION-SCREEN END OF BLOCK b1.
SELECTION-SCREEN BEGIN OF BLOCK b2 WITH FRAME TITLE TEXT-002.
PARAMETERS : p_file1 TYPE rlgrap-filename. " OBLIGATORY.
SELECTION-SCREEN END OF BLOCK b2.
SELECTION-SCREEN BEGIN OF BLOCK b3 WITH FRAME TITLE TEXT-003.
SELECTION-SCREEN: PUSHBUTTON 2(60) cmdgen USER-COMMAND a_gen VISIBLE LENGTH 20.
SELECTION-SCREEN END OF BLOCK b3.
SELECTION-SCREEN BEGIN OF BLOCK b4 WITH FRAME TITLE TEXT-004.
SELECTION-SCREEN: PUSHBUTTON 2(60) cmdgen1 USER-COMMAND a_gen1 VISIBLE LENGTH 20.
SELECTION-SCREEN END OF BLOCK b4.
INITIALIZATION.
CALL FUNCTION 'ICON_CREATE'
EXPORTING
name = icon_xxl
text = 'Generate Template'
info = 'Generate Excel File Template'
IMPORTING
result = cmdgen
EXCEPTIONS
OTHERS = 0.
CALL FUNCTION 'ICON_CREATE'
EXPORTING
name = icon_xxl
text = 'Generate Template1'
info = 'Generate Excel File Template'
IMPORTING
result = cmdgen1
EXCEPTIONS
OTHERS = 0.
AT SELECTION-SCREEN.
CASE sscrfields.
WHEN 'A_GEN'.
PERFORM generate_template.
WHEN 'A_GEN1'.
PERFORM generate_template1.
ENDCASE.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file.
CALL FUNCTION 'F4_FILENAME'
EXPORTING
program_name = syst-cprog
dynpro_number = syst-dynnr
IMPORTING
file_name = p_file.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file1.
CALL FUNCTION 'F4_FILENAME'
EXPORTING
program_name = syst-cprog
dynpro_number = syst-dynnr
IMPORTING
file_name = p_file1.
START-OF-SELECTION.
IF p_file IS NOT INITIAL.
CALL FUNCTION 'TEXT_CONVERT_XLS_TO_SAP'
EXPORTING
i_line_header = 'X'
i_tab_raw_data = itab_type
i_filename = p_file
TABLES
i_tab_converted_data = itab_excel
EXCEPTIONS
conversion_failed = 1
OTHERS = 2.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
ELSEIF p_file1 IS NOT INITIAL.
CALL FUNCTION 'TEXT_CONVERT_XLS_TO_SAP'
EXPORTING
i_line_header = 'X'
i_tab_raw_data = itab_type
i_filename = p_file1
TABLES
i_tab_converted_data = gtab_excel
EXCEPTIONS
conversion_failed = 1
OTHERS = 2.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
ELSE.
MESSAGE 'Please provide the filename' TYPE 'E'.
LEAVE LIST-PROCESSING.
ENDIF.
IF p_file1 IS NOT INITIAL.
PERFORM material_pr_create.
ELSEIF p_file IS NOT INITIAL.
PERFORM service_pr_create.
ENDIF.
PERFORM display.
*&---------------------------------------------------------------------*
*& Form service_pr_create
*&---------------------------------------------------------------------*
FORM service_pr_create .
IF NOT itab_excel IS INITIAL.
DATA(it_item) = itab_excel.
DATA(it_item1) = itab_excel.
DELETE ADJACENT DUPLICATES FROM it_item COMPARING s_no.
DELETE ADJACENT DUPLICATES FROM itab_excel COMPARING s_no bnfpo.
LOOP AT it_item INTO DATA(ls_item).
line_no = line_no + 1.
serv_line_no = serv_line_no + 1.
LOOP AT itab_excel INTO DATA(wa_excel) WHERE s_no = ls_item-s_no .
banfo = banfo + 10.
APPEND INITIAL LINE TO gt_item ASSIGNING FIELD-SYMBOL(<gs_item>).
<gs_item>-preq_item = wa_excel-bnfpo .
<gs_item>-pur_group = wa_excel-pur_grp.
<gs_item>-preq_name = wa_excel-name_req.
<gs_item>-short_text = wa_excel-short_text.
<gs_item>-plant = wa_excel-plant.
<gs_item>-trackingno = wa_excel-track_no.
<gs_item>-matl_group = wa_excel-mat_grp.
* wa_excel-service_no = |{ <wa_excel>-service_no ALPHA = IN }|.
PERFORM convert_date USING wa_excel-dev_date.
<gs_item>-deliv_date = wa_excel-dev_date.
IF wa_excel-pstyp = 'D'.
<gs_item>-item_cat = '9'.
ENDIF.
<gs_item>-acctasscat = wa_excel-knttp.
<gs_item>-purch_org = wa_excel-pur_org.
<gs_item>-pckg_no = sl_no.
APPEND INITIAL LINE TO gt_itemx ASSIGNING FIELD-SYMBOL(<gs_itemx>).
<gs_itemx>-preq_item = wa_excel-bnfpo .
<gs_itemx>-preq_itemx = abap_true.
<gs_itemx>-pur_group = abap_true.
<gs_itemx>-preq_name = abap_true.
<gs_itemx>-material = abap_true.
<gs_itemx>-short_text = abap_true.
<gs_itemx>-unit = abap_true.
<gs_itemx>-plant = abap_true.
<gs_itemx>-trackingno = abap_true.
<gs_itemx>-matl_group = abap_true.
<gs_itemx>-deliv_date = abap_true.
<gs_itemx>-item_cat = abap_true.
<gs_itemx>-acctasscat = abap_true.
<gs_itemx>-purch_org = abap_true.
<gs_itemx>-pckg_no = abap_true.
APPEND INITIAL LINE TO gt_header_text ASSIGNING FIELD-SYMBOL(<gs_header_text1>).
<gs_header_text1>-preq_item = wa_excel-bnfpo.
<gs_header_text1>-text_id = 'B01'.
<gs_header_text1>-text_line = wa_excel-header_text.
APPEND INITIAL LINE TO gt_item_text ASSIGNING FIELD-SYMBOL(<gs_item_text1>).
<gs_item_text1>-preq_item = wa_excel-bnfpo.
<gs_item_text1>-text_id = 'B01'.
<gs_item_text1>-text_line = wa_excel-item_text.
LOOP AT it_item1 INTO DATA(wa_item) WHERE s_no = wa_excel-s_no AND bnfpo = wa_excel-bnfpo.
serv_pckg_no = serv_pckg_no + 10.
ser_no = ser_no + 1.
APPEND INITIAL LINE TO gt_account ASSIGNING FIELD-SYMBOL(<gs_account>).
<gs_account>-preq_item = banfo.
<gs_account>-serial_no = ser_no.
<gs_account>-quantity = wa_item-menge.
<gs_account>-net_value = wa_item-gross_amount.
IF wa_excel-knttp = 'P'.
<gs_account>-wbs_element = wa_item-wbs_element.
ELSEIF wa_excel-knttp = 'K'.
<gs_account>-costcenter = wa_item-cost_center.
ENDIF.
APPEND INITIAL LINE TO gt_accountx ASSIGNING FIELD-SYMBOL(<gs_accountx>).
<gs_accountx>-preq_item = banfo.
<gs_accountx>-serial_no = ser_no.
<gs_accountx>-preq_itemx = 'X'.
<gs_accountx>-serial_nox = 'X'.
<gs_accountx>-quantity = abap_true.
<gs_accountx>-net_value = abap_true.
IF wa_excel-knttp = 'P'.
<gs_accountx>-wbs_element = abap_true.
ELSEIF wa_excel-knttp = 'K'.
<gs_accountx>-costcenter = abap_true.
ENDIF.
APPEND INITIAL LINE TO gt_service ASSIGNING FIELD-SYMBOL(<gs_service>).
<gs_service>-doc_item = banfo.
<gs_service>-outline = line_no.
<gs_service>-srv_line = serv_pckg_no.
<gs_service>-service = |{ wa_item-service_no ALPHA = IN }|.
<gs_service>-quantity = wa_item-menge.
SELECT SINGLE meins
FROM asmd INTO @DATA(uom)
WHERE asnum = @wa_item-service_no.
<gs_service>-uom = uom.
<gs_service>-gross_price = wa_item-gross_amount.
APPEND INITIAL LINE TO gt_servicex ASSIGNING FIELD-SYMBOL(<gs_servicex>).
<gs_servicex>-doc_item = banfo.
<gs_servicex>-outline = line_no.
<gs_servicex>-srv_line = serv_pckg_no.
<gs_servicex>-service = abap_true.
<gs_servicex>-quantity = abap_true.
<gs_servicex>-uom = abap_true.
<gs_servicex>-gross_price = abap_true.
APPEND INITIAL LINE TO gt_service_acc ASSIGNING FIELD-SYMBOL(<gs_service_acc>).
<gs_service_acc>-doc_item = banfo.
<gs_service_acc>-outline = line_no.
<gs_service_acc>-srv_line = serv_pckg_no.
<gs_service_acc>-serial_no = ser_no.
<gs_service_acc>-serial_no_item = ser_no.
<gs_service_acc>-percent = '100'.
APPEND INITIAL LINE TO gt_service_accx ASSIGNING FIELD-SYMBOL(<gs_service_accx>).
<gs_service_accx>-doc_item = banfo.
<gs_service_accx>-outline = line_no.
<gs_service_accx>-srv_line = serv_pckg_no.
<gs_service_accx>-serial_no = ser_no.
<gs_service_accx>-serial_no_item = abap_true.
<gs_service_accx>-percent = abap_true.
CLEAR: wa_item.
ENDLOOP.
CLEAR: serv_pckg_no,ser_no. CLEAR: wa_excel.
ENDLOOP.
CLEAR: banfo, line_no.
gt_item1 = gt_item.
gt_itemx1 = gt_itemx.
gt_account1 = gt_account.
gt_accountx1 = gt_accountx.
gt_service1 = gt_service.
gt_servicex1 = gt_servicex.
gt_service_acc1 = gt_service_acc.
gt_service_accx1 = gt_service_accx.
gt_header_text1 = gt_header_text.
gt_item_text1 = gt_item_text.
gs_header-pr_type = 'ZSER'.
gs_headerx-pr_type = 'X'.
CALL FUNCTION 'BAPI_PR_CREATE'
EXPORTING
prheader = gs_header
prheaderx = gs_headerx
IMPORTING
number = lv_number
TABLES
return = gt_return
pritem = gt_item
pritemx = gt_itemx
praccount = gt_account
praccountx = gt_accountx
pritemtext = gt_item_text
prheadertext = gt_header_text
servicelines = gt_service
servicelinesx = gt_servicex
serviceaccount = gt_service_acc
serviceaccountx = gt_service_accx.
IF sy-subrc = 0.
PERFORM bapi_commit.
PERFORM bapi_return.
ENDIF.
READ TABLE gt_return INTO gs_return WITH KEY number = '603'.
IF sy-subrc = 0.
CLEAR: lv_number.
gs_header-pr_type = 'ZSER'.
gs_header-memory = 'X'.
gs_header-hold_complete = 'X'.
gs_headerx-pr_type = 'X'.
gs_headerx-memory = 'X'.
gs_headerx-hold_complete = 'X'.
CALL FUNCTION 'BAPI_PR_CREATE'
EXPORTING
prheader = gs_header
prheaderx = gs_headerx
IMPORTING
number = lv_number
TABLES
return = gt_return
pritem = gt_item1
pritemx = gt_itemx1
praccount = gt_account1
praccountx = gt_accountx1
pritemtext = gt_item_text1
prheadertext = gt_header_text1
servicelines = gt_service1
servicelinesx = gt_servicex1
serviceaccount = gt_service_acc1
serviceaccountx = gt_service_accx1.
IF sy-subrc = 0.
PERFORM bapi_commit.
PERFORM bapi_return.
ENDIF.
ENDIF.
REFRESH: gt_item,gt_itemx, gt_account, gt_accountx , gt_service,gt_servicex,gt_service_acc,gt_service_accx,gt_return,
gt_item1, gt_itemx1, gt_account1, gt_accountx1, gt_service1, gt_servicex1, gt_service_acc1, gt_service_accx,gt_account2,gt_accountx2.
CLEAR: gs_return, wa_excel,
lv_bnfpo, lv_item, ser_no,serv_pckg_no, sl_no.
ENDLOOP.
ENDIF.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form display
*&---------------------------------------------------------------------*
FORM display .
wa_fieldcat-col_pos = 1.
wa_fieldcat-fieldname = 'SNO'.
wa_fieldcat-seltext_l = 'SNO'.
APPEND wa_fieldcat TO itab_fieldcat.
CLEAR: wa_fieldcat.
wa_fieldcat-col_pos = 2.
wa_fieldcat-fieldname = 'TYPE'.
wa_fieldcat-seltext_l = 'Type'.
APPEND wa_fieldcat TO itab_fieldcat.
CLEAR: wa_fieldcat.
wa_fieldcat-col_pos = 3.
wa_fieldcat-fieldname = 'NUMBER'.
wa_fieldcat-seltext_l = 'PR Number'.
wa_fieldcat-outputlen = 10.
APPEND wa_fieldcat TO itab_fieldcat.
CLEAR: wa_fieldcat.
wa_fieldcat-col_pos = 4.
wa_fieldcat-fieldname = 'MESSAGE'.
wa_fieldcat-seltext_l = 'Message'.
wa_fieldcat-outputlen = 100.
APPEND wa_fieldcat TO itab_fieldcat.
CLEAR: wa_fieldcat.
wa_layout-colwidth_optimize = abap_true.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = sy-cprog
is_layout = wa_layout
it_fieldcat = itab_fieldcat
TABLES
t_outtab = itab_final
EXCEPTIONS
program_error = 1
OTHERS = 2.
IF sy-subrc <> 0.
MESSAGE 'No Data found' TYPE 'E'.
ENDIF.
ENDFORM.
FORM convert_date USING p_gs_date.
CALL FUNCTION 'CONVERT_DATE_TO_INTERN_FORMAT'
EXPORTING
datum = p_gs_date
dtype = 'DATS'
IMPORTING
idate = p_gs_date.
ENDFORM.
FORM generate_template .
* start Excel
CREATE OBJECT h_excel 'EXCEL.APPLICATION'.
SET PROPERTY OF h_excel 'Visible' = 1.
* get list of workbooks, initially empty
CALL METHOD OF
h_excel
'Workbooks' = h_mapl.
*** Error handle File
PERFORM err_hdl.
* add a new workbook
CALL METHOD OF
h_mapl
'Add' = h_map.
*** Error handle File
PERFORM err_hdl.
PERFORM fill_cell USING: 1 1 0 'Sno',
1 2 0 'Account Assignment Category',
1 3 0 'Item Category',
1 4 0 'Header Text',
1 5 0 'Item PR',
1 6 0 'Short Text',
1 7 0 'Delivery Date',
1 8 0 'Material Group',
1 9 0 'Plant',
1 10 0 'Purchase Group',
1 11 0 'Name',
1 12 0 'Tracking No',
1 13 0 'Purchase Org',
1 14 0 'Item Text',
1 15 0 'Service Line',
1 16 0 'Service No',
1 17 0 'Quantity',
1 18 0 'Gross Amount',
1 19 0 'WBS Element',
1 20 0 'Cost Center'.
ENDFORM.
FORM err_hdl .
IF sy-subrc <> 0.
CALL METHOD OF
h_excel
'QUIT'.
FREE OBJECT h_excel.
h_excel-handle = -1.
MESSAGE: 'Failed to generate template.' TYPE 'E'.
ENDIF.
ENDFORM.
FORM fill_cell USING i j bold val.
CALL METHOD OF
h_excel
'Cells' = h_zl
EXPORTING
#1 = i
#2 = j.
PERFORM err_hdl.
SET PROPERTY OF h_zl 'Value' = val .
PERFORM err_hdl.
GET PROPERTY OF h_zl 'Font' = h_f.
PERFORM err_hdl.
SET PROPERTY OF h_f 'Bold' = bold .
PERFORM err_hdl.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form BAPI_COMMIT
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM bapi_commit .
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
wait = 'X'.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form material_pr_create
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM material_pr_create .
DATA(lt_item) = gtab_excel.
DELETE ADJACENT DUPLICATES FROM lt_item COMPARING s_no.
LOOP AT lt_item INTO DATA(la_item).
line_no = line_no + 1.
serv_line_no = serv_line_no + 1.
LOOP AT gtab_excel INTO stab_excel WHERE s_no = la_item-s_no .
banfo = banfo + 10.
APPEND INITIAL LINE TO gt_item ASSIGNING FIELD-SYMBOL(<gs_item>).
<gs_item>-preq_item = stab_excel-bnfpo .
<gs_item>-pur_group = stab_excel-pur_grp.
<gs_item>-material = |{ stab_excel-material ALPHA = IN }|.
<gs_item>-short_text = stab_excel-short_text.
<gs_item>-quantity = stab_excel-qty.
<gs_item>-unit = stab_excel-uom.
<gs_item>-plant = stab_excel-plant.
<gs_item>-store_loc = stab_excel-sto_loc.
* <gs_item>-trackingno = stab_excel-track_no.
<gs_item>-matl_group = stab_excel-mat_grp.
* wa_excel-service_no = |{ <wa_excel>-service_no ALPHA = IN }|.
PERFORM convert_date USING stab_excel-dev_date.
<gs_item>-deliv_date = stab_excel-dev_date.
<gs_item>-preq_price = stab_excel-preq_price.
<gs_item>-acctasscat = stab_excel-knttp.
<gs_item>-purch_org = stab_excel-pur_org.
<gs_item>-pckg_no = sl_no.
APPEND INITIAL LINE TO gt_itemx ASSIGNING FIELD-SYMBOL(<gs_itemx>).
<gs_itemx>-preq_item = stab_excel-bnfpo .
<gs_itemx>-preq_itemx = abap_true.
<gs_itemx>-pur_group = abap_true.
* <gs_itemx>-preq_name = abap_true.
<gs_itemx>-material = abap_true.
<gs_itemx>-short_text = abap_true.
<gs_itemx>-quantity = abap_true.
<gs_itemx>-unit = abap_true.
<gs_itemx>-plant = abap_true.
<gs_itemx>-store_loc = abap_true.
* <gs_itemx>-trackingno = abap_true.
<gs_itemx>-matl_group = abap_true.
<gs_itemx>-deliv_date = abap_true.
<gs_itemx>-preq_price = abap_true.
<gs_itemx>-acctasscat = abap_true.
<gs_itemx>-purch_org = abap_true.
<gs_itemx>-pckg_no = abap_true.
APPEND INITIAL LINE TO gt_account2 ASSIGNING FIELD-SYMBOL(<gs_account1>).
<gs_account1>-preq_item = banfo.
<gs_account1>-serial_no = serv_line_no.
<gs_account1>-quantity = stab_excel-menge.
<gs_account1>-net_value = stab_excel-gross_amount.
<gs_account1>-costcenter = stab_excel-cost_center.
APPEND INITIAL LINE TO gt_accountx2 ASSIGNING FIELD-SYMBOL(<gs_accountx1>).
<gs_accountx1>-preq_item = banfo.
<gs_accountx1>-serial_no = serv_line_no.
<gs_accountx1>-preq_itemx = 'X'.
<gs_accountx1>-serial_nox = 'X'.
<gs_accountx1>-quantity = abap_true.
<gs_accountx1>-net_value = abap_true.
<gs_accountx1>-costcenter = abap_true.
APPEND INITIAL LINE TO gt_header_text ASSIGNING FIELD-SYMBOL(<gs_header_text>).
<gs_header_text>-preq_item = banfo.
<gs_header_text>-text_id = 'B01'.
<gs_header_text>-text_line = stab_excel-header_text.
APPEND INITIAL LINE TO gt_item_text ASSIGNING FIELD-SYMBOL(<gs_item_text>).
<gs_item_text>-preq_item = banfo.
<gs_item_text>-text_id = 'B01'.
<gs_item_text>-text_line = stab_excel-item_text.
ENDLOOP.
gs_header-pr_type = stab_excel-doc_type.
gs_headerx-pr_type = 'X'.
CALL FUNCTION 'BAPI_PR_CREATE'
EXPORTING
prheader = gs_header
prheaderx = gs_headerx
IMPORTING
number = lv_number
TABLES
return = gt_return
pritem = gt_item
pritemx = gt_itemx
praccount = gt_account2
praccountx = gt_accountx2
pritemtext = gt_item_text
prheadertext = gt_header_text.
IF sy-subrc = 0.
PERFORM bapi_commit.
PERFORM bapi_return.
ENDIF.
ENDLOOP.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form generate_template1
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM generate_template1 .
* start Excel
CREATE OBJECT h_excel 'EXCEL.APPLICATION'.
SET PROPERTY OF h_excel 'Visible' = 1.
* get list of workbooks, initially empty
CALL METHOD OF
h_excel
'Workbooks' = h_mapl.
*** Error handle File
PERFORM err_hdl.
* add a new workbook
CALL METHOD OF
h_mapl
'Add' = h_map.
*** Error handle File
PERFORM err_hdl.
PERFORM fill_cell USING: 1 1 0 'Sno',
1 2 0 'Document Type',
1 3 0 'Account Assignment Category',
1 4 0 'Headar Text',
1 5 0 'Item PR',
1 6 0 'Material',
1 7 0 'Short Text',
1 8 0 'Quanlity',
1 9 0 'UOM',
1 10 0 'Delivery Date',
1 11 0 'Currency Amount',
1 12 0 'Material Group',
1 13 0 'Plant',
1 14 0 'Storage Location',
1 15 0 'Purchase Group',
1 16 0 'Purchase Org',
1 17 0 'Item Text',
1 18 0 'Quantity',
1 19 0 'Gross Amount',
1 20 0 'Cost Center'.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form BAPI_RETURN
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM bapi_return .
DELETE gt_return WHERE type = 'I'.
DELETE gt_return WHERE type = 'W'.
LOOP AT gt_return INTO gs_return.
lv_num = lv_num + 1.
wa_final-sno = lv_num.
wa_final-type = gs_return-type.
wa_final-number = lv_number.
wa_final-message = gs_return-message.
APPEND wa_final TO itab_final.
CLEAR: wa_final.
ENDLOOP.
ENDFORM.
Comments
Post a Comment