PO Service Entry Sheet Create ( ML81N) Using BAPI
*&---------------------------------------------------------------------*
*& Report ZMM_SERVICE_ENTRY_CREATE*&---------------------------------------------------------------------*
************************************************************************
* Program : ZMM_SERVICE_ENTRY_CREATE
* Description : PO Service Entry Sheet Create
* Author : King Of ABAP'r
* Created on : 2023
* Requested By : Functional Consultant
* Transport-No : 1234567890
*----------------------------------------------------------------------*
* Description : Cutover Object
* Assumption :
* Called from :
* Called to : N/A
* Includes : N/A
* Logical DB : N/A
*----------------------------------------------------------------------*
REPORT zmm_service_entry_create.
INCLUDE zmm_service_entry_create_top.
INCLUDE zmm_service_entry_create_sel.
INCLUDE zmm_service_entry_create_f01.
START-OF-SELECTION.
PERFORM get_file_data.
PERFORM create_ses.
PERFORM display.
*&---------------------------------------------------------------------*
*& Include ZMM_SERVICE_ENTRY_CREATE_TOP
*&---------------------------------------------------------------------*
TYPES: BEGIN OF ty_file,
* Header
sno(5) TYPE c, " Index
extr_no(16) TYPE c, " essr-lblne1 Extranal number
prps_internal(12) TYPE c, "sbnamag-essr Person Internal
prps_extranal(16) TYPE c, "sbnaman-essr Person Extranal
service_loc(25) TYPE c, "dlort-essr Location
period_from(10) TYPE c, "lzvon-essr Begin Date
period_to(10) TYPE c, "lzbis-essr End Date
short_text(40) TYPE c, "TXZ01-essr Short Text
po_no(10) TYPE c, "ebeln-essr Po Number
po_item(5) TYPE n, "ebelp-essr Po Item
doc_date(10) TYPE c, "bldat-essr Document Date
posting_date(10) TYPE c, "budat-essr Posting Date
reference(16) TYPE c, "xblnr-essr Reference Doc Number
acceptance TYPE c, "essr-KZABN
*& Include ZMM_SERVICE_ENTRY_CREATE_TOP
*&---------------------------------------------------------------------*
TYPES: BEGIN OF ty_file,
* Header
sno(5) TYPE c, " Index
extr_no(16) TYPE c, " essr-lblne1 Extranal number
prps_internal(12) TYPE c, "sbnamag-essr Person Internal
prps_extranal(16) TYPE c, "sbnaman-essr Person Extranal
service_loc(25) TYPE c, "dlort-essr Location
period_from(10) TYPE c, "lzvon-essr Begin Date
period_to(10) TYPE c, "lzbis-essr End Date
short_text(40) TYPE c, "TXZ01-essr Short Text
po_no(10) TYPE c, "ebeln-essr Po Number
po_item(5) TYPE n, "ebelp-essr Po Item
doc_date(10) TYPE c, "bldat-essr Document Date
posting_date(10) TYPE c, "budat-essr Posting Date
reference(16) TYPE c, "xblnr-essr Reference Doc Number
acceptance TYPE c, "essr-KZABN
* Item
cost_center(10) TYPE c, "eskn-kostl Cost Center
service(18) TYPE c, "esll-asnum Activity Number
service_item(10) TYPE c, "esll-EXTROW
qnty(13) TYPE c, "esll-MENGEV Quantity
tax_code(2) TYPE c, "esll-mwskz Tax on sales/purchases code
END OF ty_file.
DATA:
lt_file TYPE TABLE OF ty_file.
DATA:
lt_file1 TYPE TABLE OF ty_file,
lt_file2 TYPE TABLE OF ty_file,
gs_file TYPE ty_file,
gs_file1 TYPE ty_file,
gs_file2 TYPE ty_file.
TYPES: BEGIN OF ty_alv,
lblni TYPE lblni,
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.
cost_center(10) TYPE c, "eskn-kostl Cost Center
service(18) TYPE c, "esll-asnum Activity Number
service_item(10) TYPE c, "esll-EXTROW
qnty(13) TYPE c, "esll-MENGEV Quantity
tax_code(2) TYPE c, "esll-mwskz Tax on sales/purchases code
END OF ty_file.
DATA:
lt_file TYPE TABLE OF ty_file.
DATA:
lt_file1 TYPE TABLE OF ty_file,
lt_file2 TYPE TABLE OF ty_file,
gs_file TYPE ty_file,
gs_file1 TYPE ty_file,
gs_file2 TYPE ty_file.
TYPES: BEGIN OF ty_alv,
lblni TYPE lblni,
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.
*&---------------------------------------------------------------------*
*& Include ZMM_SERVICE_ENTRY_CREATE_SEL
*&---------------------------------------------------------------------*
* Selection Screen
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE TEXT-001.
PARAMETERS:p_file LIKE rlgrap-filename OBLIGATORY.
SELECTION-SCREEN END OF BLOCK b1.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file.
* File Upload
PERFORM file_upload.
*& Include ZMM_SERVICE_ENTRY_CREATE_SEL
*&---------------------------------------------------------------------*
* Selection Screen
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE TEXT-001.
PARAMETERS:p_file LIKE rlgrap-filename OBLIGATORY.
SELECTION-SCREEN END OF BLOCK b1.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file.
* File Upload
PERFORM file_upload.
*&---------------------------------------------------------------------*
*& Include ZMM_SERVICE_ENTRY_CREATE_F01
*&---------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& Form file_upload
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
FORM file_upload .
* F4 Functionality
CALL FUNCTION 'F4_FILENAME'
EXPORTING
program_name = syst-cprog
dynpro_number = syst-dynnr
field_name = 'P_FILE'
IMPORTING
file_name = p_file.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form get_file_data
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
FORM get_file_data .
DATA: lt_raw TYPE truxs_t_text_data.
* Convert the XL file to Internal Table
REFRESH lt_file.
CALL FUNCTION 'TEXT_CONVERT_XLS_TO_SAP'
EXPORTING
i_line_header = abap_true
i_tab_raw_data = lt_raw
i_filename = p_file
TABLES
i_tab_converted_data = lt_file
EXCEPTIONS
conversion_failed = 1
OTHERS = 2.
IF sy-subrc <> 0.
CASE sy-subrc.
WHEN 1.
MESSAGE 'File Conversion Error' TYPE 'E' DISPLAY LIKE 'S'.
ENDCASE.
ENDIF.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form create_ses
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
FORM create_ses .
** bapi Declarations
DATA: ls_bapihdr TYPE bapiessrc.
DATA: lv_entry_no TYPE bapiessr-sheet_no.
DATA: lt_cost TYPE TABLE OF bapiesknc,
ls_cost TYPE bapiesknc,
lt_service TYPE TABLE OF bapiesllc,
ls_service TYPE bapiesllc,
lt_account TYPE TABLE OF bapiesklc,
ls_account TYPE bapiesklc,
lt_return TYPE TABLE OF bapiret2,
ls_return TYPE bapiret2.
CONSTANTS: lc_e TYPE char1 VALUE 'E',
lc_s TYPE char1 VALUE 'S'.
DATA: lv_date TYPE datum,
lv_date1 TYPE datum,
lv_date2 TYPE datum,
lv_date3 TYPE datum,
l_line TYPE i,
l_count TYPE n LENGTH 5,
counter TYPE i,
counter1 TYPE i.
DATA: l_packno TYPE ekpo-packno,
l_sub_packno TYPE esll-sub_packno.
DATA: lv_count TYPE sy-tabix,
lv_pack TYPE packno VALUE '0000000001'.
lt_file1[] = lt_file[].
SORT lt_file1[] BY po_no po_item.
***Fetch the Package Number from EKPO Table
IF lt_file1 IS NOT INITIAL.
SELECT ebeln,
ebelp,
packno,
mwskz,
kostl
FROM ekpo INTO TABLE @DATA(lt_ekpo)
FOR ALL ENTRIES IN @lt_file1
WHERE ebeln = @lt_file1-po_no
AND ebelp = @lt_file1-po_item.
***Fetch the line items From the table ESll
IF lt_ekpo IS NOT INITIAL.
SELECT packno,
introw,
extrow,
sub_packno
FROM esll INTO TABLE @DATA(lt_esll)
FOR ALL ENTRIES IN @lt_ekpo
WHERE packno = @lt_ekpo-packno.
***Pass the packag Number and get the Sub package number
IF lt_esll IS NOT INITIAL.
SELECT packno,
introw,
extrow,
sub_packno
FROM esll INTO TABLE @DATA(lt_esll_sub)
FOR ALL ENTRIES IN @lt_esll
WHERE packno = @lt_esll-sub_packno.
ENDIF.
ENDIF.
ENDIF.
LOOP AT lt_file1 INTO DATA(ls_file) .
gs_file1 = ls_file.
READ TABLE lt_ekpo INTO DATA(ls_ekpo) WITH KEY ebeln = gs_file1-po_no
ebelp = gs_file1-po_item.
AT NEW sno.
*************************Header Data****************************************
ls_bapihdr-ext_number = gs_file1-extr_no.
ls_bapihdr-person_int = gs_file1-prps_internal.
ls_bapihdr-person_ext = gs_file1-prps_extranal.
ls_bapihdr-location = gs_file1-service_loc.
** Begin Date
REPLACE ALL OCCURRENCES OF '.' IN gs_file1-period_from WITH space.
CONDENSE gs_file1-period_from NO-GAPS.
CLEAR:lv_date.
CONCATENATE gs_file1-period_from+4(4) gs_file1-period_from+2(2) gs_file1-period_from+0(2) INTO lv_date.
ls_bapihdr-begdate = lv_date.
** End Date
REPLACE ALL OCCURRENCES OF '.' IN gs_file1-period_to WITH space.
CONDENSE gs_file1-period_to NO-GAPS.
CLEAR: lv_date1.
CONCATENATE gs_file1-period_to+4(4) gs_file1-period_to+2(2) gs_file1-period_to+0(2) INTO lv_date1.
ls_bapihdr-enddate = lv_date1.
ls_bapihdr-pckg_no = lv_pack.
ls_bapihdr-short_text = gs_file1-short_text.
ls_bapihdr-po_number = gs_file1-po_no.
ls_bapihdr-po_item = gs_file1-po_item.
** Document Date
REPLACE ALL OCCURRENCES OF '.' IN gs_file1-doc_date WITH space.
CONDENSE gs_file1-doc_date NO-GAPS.
CLEAR:lv_date2.
CONCATENATE gs_file1-doc_date+4(4) gs_file1-doc_date+2(2) gs_file1-doc_date+0(2) INTO lv_date2.
ls_bapihdr-doc_date = lv_date2.
** Posting Date
REPLACE ALL OCCURRENCES OF '.' IN gs_file1-posting_date WITH space.
CONDENSE gs_file1-posting_date NO-GAPS.
CLEAR:lv_date3.
CONCATENATE gs_file1-posting_date+4(4) gs_file1-posting_date+2(2) gs_file1-posting_date+0(2) INTO lv_date3.
ls_bapihdr-post_date = lv_date3.
ls_bapihdr-ref_doc_no = gs_file1-reference.
ls_bapihdr-acceptance = gs_file1-acceptance.
********************************Entrysheet Account Assignment******************
ls_cost-pckg_no = lv_pack.
ls_cost-serial_no = '01'.
IF gs_file1-cost_center IS NOT INITIAL.
ls_cost-costcenter = gs_file1-cost_center.
ELSE.
ls_cost-costcenter = ls_ekpo-kostl.
ENDIF.
APPEND: ls_cost TO lt_cost.
CLEAR: ls_cost.
*******************************Entrysheet Account Services********************
ls_service-pckg_no = lv_pack.
ls_service-line_no = lv_pack.
ls_service-ext_line = '0000000000'.
ls_service-outl_ind = abap_true.
ls_service-subpckg_no = lv_pack + 1.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
input = gs_file1-service
IMPORTING
output = gs_file1-service.
APPEND ls_service TO lt_service.
CLEAR: ls_service.
*******************************ENTRYSHEETSRVACCASSVALUES********************
ls_account-pckg_no = lv_pack.
ls_account-line_no = lv_pack.
ls_account-serial_no = '01'.
APPEND: ls_account TO lt_account.
CLEAR:ls_account.
ENDAT.
ls_service-pckg_no = lv_pack + 1.
counter = counter + 1.
ls_service-line_no = counter.
counter1 = counter1 + 10.
ls_service-ext_line = counter1.
* READ TABLE lt_ekpo INTO DATA(ls_ekpo) WITH KEY ebeln = gs_file1-po_no
* ebelp = gs_file1-po_item.
* IF sy-subrc EQ 0.
READ TABLE lt_esll INTO DATA(ls_esll) WITH KEY packno = ls_ekpo-packno.
IF sy-subrc EQ 0.
READ TABLE lt_esll_sub INTO DATA(ls_esll_sub) WITH KEY packno = ls_esll-sub_packno
extrow = gs_file1-service_item.
IF sy-subrc EQ 0.
ls_service-pln_pckg = ls_esll_sub-packno.
ls_service-pln_line = ls_esll_sub-introw.
ENDIF.
* ENDIF.
ENDIF.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
input = gs_file1-service
IMPORTING
output = gs_file1-service.
ls_service-service = gs_file1-service.
ls_service-quantity = gs_file1-qnty.
IF gs_file1-tax_code IS NOT INITIAL.
ls_service-tax_code = gs_file1-tax_code.
ELSE.
ls_service-tax_code = ls_ekpo-mwskz.
ENDIF.
APPEND ls_service TO lt_service.
CLEAR: ls_service, l_packno, l_sub_packno,gs_file1.
AT END OF sno.
CALL FUNCTION 'BAPI_ENTRYSHEET_CREATE'
EXPORTING
entrysheetheader = ls_bapihdr
IMPORTING
entrysheet = lv_entry_no
TABLES
entrysheetaccountassignment = lt_cost
entrysheetservices = lt_service
entrysheetsrvaccassvalues = lt_account
return = lt_return.
READ TABLE lt_return INTO ls_return WITH KEY type = lc_e.
IF sy-subrc = 0.
LOOP AT lt_return INTO ls_return.
gs_alv-lblni = lv_entry_no.
gs_alv-type = ls_return-type.
gs_alv-message = ls_return-message.
APPEND gs_alv TO gt_alv.
CLEAR gs_alv.
ENDLOOP.
CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
ELSE.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
wait = abap_true.
gs_alv-lblni = lv_entry_no.
gs_alv-type = lc_s.
gs_alv-message = TEXT-002.
APPEND gs_alv TO gt_alv.
CLEAR gs_alv.
CLEAR:ls_service,ls_cost,ls_account,ls_return,lv_count,lt_cost,lt_service,lt_account,lv_count.
CLEAR: ls_ekpo,ls_esll,ls_esll_sub.
CLEAR: counter ,counter1.
WAIT UP TO 1 SECONDS.
ENDIF.
CLEAR: ls_return.
ENDAT.
ENDLOOP.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form display
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM display .
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.
CLEAR ls_fieldcat.
ls_fieldcat-fieldname = 'LBLNI'.
ls_fieldcat-tabname = 'GT_ALV'.
ls_fieldcat-seltext_m = 'Entry Sheet 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 Output
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.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
ENDFORM.
*& Include ZMM_SERVICE_ENTRY_CREATE_F01
*&---------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& Form file_upload
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
FORM file_upload .
* F4 Functionality
CALL FUNCTION 'F4_FILENAME'
EXPORTING
program_name = syst-cprog
dynpro_number = syst-dynnr
field_name = 'P_FILE'
IMPORTING
file_name = p_file.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form get_file_data
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
FORM get_file_data .
DATA: lt_raw TYPE truxs_t_text_data.
* Convert the XL file to Internal Table
REFRESH lt_file.
CALL FUNCTION 'TEXT_CONVERT_XLS_TO_SAP'
EXPORTING
i_line_header = abap_true
i_tab_raw_data = lt_raw
i_filename = p_file
TABLES
i_tab_converted_data = lt_file
EXCEPTIONS
conversion_failed = 1
OTHERS = 2.
IF sy-subrc <> 0.
CASE sy-subrc.
WHEN 1.
MESSAGE 'File Conversion Error' TYPE 'E' DISPLAY LIKE 'S'.
ENDCASE.
ENDIF.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form create_ses
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
FORM create_ses .
** bapi Declarations
DATA: ls_bapihdr TYPE bapiessrc.
DATA: lv_entry_no TYPE bapiessr-sheet_no.
DATA: lt_cost TYPE TABLE OF bapiesknc,
ls_cost TYPE bapiesknc,
lt_service TYPE TABLE OF bapiesllc,
ls_service TYPE bapiesllc,
lt_account TYPE TABLE OF bapiesklc,
ls_account TYPE bapiesklc,
lt_return TYPE TABLE OF bapiret2,
ls_return TYPE bapiret2.
CONSTANTS: lc_e TYPE char1 VALUE 'E',
lc_s TYPE char1 VALUE 'S'.
DATA: lv_date TYPE datum,
lv_date1 TYPE datum,
lv_date2 TYPE datum,
lv_date3 TYPE datum,
l_line TYPE i,
l_count TYPE n LENGTH 5,
counter TYPE i,
counter1 TYPE i.
DATA: l_packno TYPE ekpo-packno,
l_sub_packno TYPE esll-sub_packno.
DATA: lv_count TYPE sy-tabix,
lv_pack TYPE packno VALUE '0000000001'.
lt_file1[] = lt_file[].
SORT lt_file1[] BY po_no po_item.
***Fetch the Package Number from EKPO Table
IF lt_file1 IS NOT INITIAL.
SELECT ebeln,
ebelp,
packno,
mwskz,
kostl
FROM ekpo INTO TABLE @DATA(lt_ekpo)
FOR ALL ENTRIES IN @lt_file1
WHERE ebeln = @lt_file1-po_no
AND ebelp = @lt_file1-po_item.
***Fetch the line items From the table ESll
IF lt_ekpo IS NOT INITIAL.
SELECT packno,
introw,
extrow,
sub_packno
FROM esll INTO TABLE @DATA(lt_esll)
FOR ALL ENTRIES IN @lt_ekpo
WHERE packno = @lt_ekpo-packno.
***Pass the packag Number and get the Sub package number
IF lt_esll IS NOT INITIAL.
SELECT packno,
introw,
extrow,
sub_packno
FROM esll INTO TABLE @DATA(lt_esll_sub)
FOR ALL ENTRIES IN @lt_esll
WHERE packno = @lt_esll-sub_packno.
ENDIF.
ENDIF.
ENDIF.
LOOP AT lt_file1 INTO DATA(ls_file) .
gs_file1 = ls_file.
READ TABLE lt_ekpo INTO DATA(ls_ekpo) WITH KEY ebeln = gs_file1-po_no
ebelp = gs_file1-po_item.
AT NEW sno.
*************************Header Data****************************************
ls_bapihdr-ext_number = gs_file1-extr_no.
ls_bapihdr-person_int = gs_file1-prps_internal.
ls_bapihdr-person_ext = gs_file1-prps_extranal.
ls_bapihdr-location = gs_file1-service_loc.
** Begin Date
REPLACE ALL OCCURRENCES OF '.' IN gs_file1-period_from WITH space.
CONDENSE gs_file1-period_from NO-GAPS.
CLEAR:lv_date.
CONCATENATE gs_file1-period_from+4(4) gs_file1-period_from+2(2) gs_file1-period_from+0(2) INTO lv_date.
ls_bapihdr-begdate = lv_date.
** End Date
REPLACE ALL OCCURRENCES OF '.' IN gs_file1-period_to WITH space.
CONDENSE gs_file1-period_to NO-GAPS.
CLEAR: lv_date1.
CONCATENATE gs_file1-period_to+4(4) gs_file1-period_to+2(2) gs_file1-period_to+0(2) INTO lv_date1.
ls_bapihdr-enddate = lv_date1.
ls_bapihdr-pckg_no = lv_pack.
ls_bapihdr-short_text = gs_file1-short_text.
ls_bapihdr-po_number = gs_file1-po_no.
ls_bapihdr-po_item = gs_file1-po_item.
** Document Date
REPLACE ALL OCCURRENCES OF '.' IN gs_file1-doc_date WITH space.
CONDENSE gs_file1-doc_date NO-GAPS.
CLEAR:lv_date2.
CONCATENATE gs_file1-doc_date+4(4) gs_file1-doc_date+2(2) gs_file1-doc_date+0(2) INTO lv_date2.
ls_bapihdr-doc_date = lv_date2.
** Posting Date
REPLACE ALL OCCURRENCES OF '.' IN gs_file1-posting_date WITH space.
CONDENSE gs_file1-posting_date NO-GAPS.
CLEAR:lv_date3.
CONCATENATE gs_file1-posting_date+4(4) gs_file1-posting_date+2(2) gs_file1-posting_date+0(2) INTO lv_date3.
ls_bapihdr-post_date = lv_date3.
ls_bapihdr-ref_doc_no = gs_file1-reference.
ls_bapihdr-acceptance = gs_file1-acceptance.
********************************Entrysheet Account Assignment******************
ls_cost-pckg_no = lv_pack.
ls_cost-serial_no = '01'.
IF gs_file1-cost_center IS NOT INITIAL.
ls_cost-costcenter = gs_file1-cost_center.
ELSE.
ls_cost-costcenter = ls_ekpo-kostl.
ENDIF.
APPEND: ls_cost TO lt_cost.
CLEAR: ls_cost.
*******************************Entrysheet Account Services********************
ls_service-pckg_no = lv_pack.
ls_service-line_no = lv_pack.
ls_service-ext_line = '0000000000'.
ls_service-outl_ind = abap_true.
ls_service-subpckg_no = lv_pack + 1.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
input = gs_file1-service
IMPORTING
output = gs_file1-service.
APPEND ls_service TO lt_service.
CLEAR: ls_service.
*******************************ENTRYSHEETSRVACCASSVALUES********************
ls_account-pckg_no = lv_pack.
ls_account-line_no = lv_pack.
ls_account-serial_no = '01'.
APPEND: ls_account TO lt_account.
CLEAR:ls_account.
ENDAT.
ls_service-pckg_no = lv_pack + 1.
counter = counter + 1.
ls_service-line_no = counter.
counter1 = counter1 + 10.
ls_service-ext_line = counter1.
* READ TABLE lt_ekpo INTO DATA(ls_ekpo) WITH KEY ebeln = gs_file1-po_no
* ebelp = gs_file1-po_item.
* IF sy-subrc EQ 0.
READ TABLE lt_esll INTO DATA(ls_esll) WITH KEY packno = ls_ekpo-packno.
IF sy-subrc EQ 0.
READ TABLE lt_esll_sub INTO DATA(ls_esll_sub) WITH KEY packno = ls_esll-sub_packno
extrow = gs_file1-service_item.
IF sy-subrc EQ 0.
ls_service-pln_pckg = ls_esll_sub-packno.
ls_service-pln_line = ls_esll_sub-introw.
ENDIF.
* ENDIF.
ENDIF.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
input = gs_file1-service
IMPORTING
output = gs_file1-service.
ls_service-service = gs_file1-service.
ls_service-quantity = gs_file1-qnty.
IF gs_file1-tax_code IS NOT INITIAL.
ls_service-tax_code = gs_file1-tax_code.
ELSE.
ls_service-tax_code = ls_ekpo-mwskz.
ENDIF.
APPEND ls_service TO lt_service.
CLEAR: ls_service, l_packno, l_sub_packno,gs_file1.
AT END OF sno.
CALL FUNCTION 'BAPI_ENTRYSHEET_CREATE'
EXPORTING
entrysheetheader = ls_bapihdr
IMPORTING
entrysheet = lv_entry_no
TABLES
entrysheetaccountassignment = lt_cost
entrysheetservices = lt_service
entrysheetsrvaccassvalues = lt_account
return = lt_return.
READ TABLE lt_return INTO ls_return WITH KEY type = lc_e.
IF sy-subrc = 0.
LOOP AT lt_return INTO ls_return.
gs_alv-lblni = lv_entry_no.
gs_alv-type = ls_return-type.
gs_alv-message = ls_return-message.
APPEND gs_alv TO gt_alv.
CLEAR gs_alv.
ENDLOOP.
CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
ELSE.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
wait = abap_true.
gs_alv-lblni = lv_entry_no.
gs_alv-type = lc_s.
gs_alv-message = TEXT-002.
APPEND gs_alv TO gt_alv.
CLEAR gs_alv.
CLEAR:ls_service,ls_cost,ls_account,ls_return,lv_count,lt_cost,lt_service,lt_account,lv_count.
CLEAR: ls_ekpo,ls_esll,ls_esll_sub.
CLEAR: counter ,counter1.
WAIT UP TO 1 SECONDS.
ENDIF.
CLEAR: ls_return.
ENDAT.
ENDLOOP.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form display
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM display .
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.
CLEAR ls_fieldcat.
ls_fieldcat-fieldname = 'LBLNI'.
ls_fieldcat-tabname = 'GT_ALV'.
ls_fieldcat-seltext_m = 'Entry Sheet 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 Output
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.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
ENDFORM.
Comments
Post a Comment