SAP - ABAP : Create Purchase Order With Upload Excel File
Custom Structure ZSMM003_1
Custom Structure ZSMM003_2
Main Program
*&---------------------------------------------------------------------*
*& Report ZMMC003
*&---------------------------------------------------------------------*
*& Program Description : Upload Purchase Order
*& Created On : 09.02.2022
*&---------------------------------------------------------------------*
REPORT zmmc003.
INCLUDE zmmc003_01.
INCLUDE zmmc003_02.
INCLUDE zmmc003_03.
INCLUDE zmmc003_04.
INCLUDE zmmc003_05.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR filename.
CALL FUNCTION 'KD_GET_FILENAME_ON_F4'
EXPORTING
static = 'X'
mask = '*.xls'
CHANGING
file_name = filename.
AT SELECTION-SCREEN OUTPUT.
GET PARAMETER ID 'ZFILE' FIELD zz_pid.
LOOP AT SCREEN.
IF it_print IS NOT INITIAL AND
( screen-name CS 'P_LINE' OR screen-name CS 'FILENAME').
screen-input = 0.
ELSE.
screen-input = 1.
ENDIF.
MODIFY SCREEN.
ENDLOOP.
START-OF-SELECTION.
CALL SCREEN 100.
Include ZMMC003_01
*&---------------------------------------------------------------------*
*& Include ZMMC003_01
*&---------------------------------------------------------------------*
TYPES:
BEGIN OF zstab,
field TYPE char10,
END OF zstab.
TYPES :
BEGIN OF ty_print,
icons LIKE icon-id,
ccell TYPE lvc_t_scol,
cstyl TYPE lvc_t_styl,
cline TYPE char4,
matnr TYPE matnr,
snote TYPE char255,
sebeln TYPE ebeln.
INCLUDE STRUCTURE zsmm003_2.
TYPES:
END OF ty_print.
*ZSMM003_2
DATA:
ob_container TYPE REF TO cl_gui_custom_container,
ob_grid TYPE REF TO cl_gui_alv_grid.
DATA:
it_fieldcat TYPE lvc_t_fcat,
wa_fieldcat LIKE LINE OF it_fieldcat,
is_lyout TYPE lvc_s_layo.
DATA :
itab TYPE TABLE OF alsmex_tabline WITH HEADER LINE.
DATA :
it_excel TYPE TABLE OF zsmm003_1,
it_print TYPE TABLE OF ty_print,
it_tprnt TYPE TABLE OF ty_print,
it_zprnt TYPE TABLE OF ty_print,
wa_tprnt TYPE ty_print,
wa_print TYPE ty_print,
wa_zprnt TYPE ty_print,
wa_excel TYPE zsmm003_1,
stab TYPE TABLE OF zstab.
DATA:
it_color TYPE TABLE OF lvc_s_scol,
wa_color TYPE lvc_s_scol,
vi_color TYPE i.
DATA:
ex_poheader LIKE bapimepoheader,
ex_poheaderx LIKE bapimepoheaderx,
ex_poaddrvendor LIKE bapimepoaddrvendor,
ex_testrun LIKE bapiflag-bapiflag,
ex_memory_uncomplete LIKE bapiflag-bapiflag,
ex_memory_complete LIKE bapiflag-bapiflag,
ex_poexpimpheader LIKE bapieikp,
ex_poexpimpheaderx LIKE bapieikpx,
ex_versions LIKE bapimedcm,
ex_no_messaging LIKE bapiflag-bapiflag,
ex_no_message_req LIKE bapiflag-bapiflag,
ex_no_authority LIKE bapiflag-bapiflag,
ex_no_price_from_po LIKE bapiflag-bapiflag,
ex_park_complete LIKE bapiflag-bapiflag,
ex_park_uncomplete LIKE bapiflag-bapiflag,
im_exppurchaseorder LIKE bapimepoheader-po_number,
im_expheader LIKE bapimepoheader,
im_exppoexpimpheader LIKE bapieikp,
it_return TYPE TABLE OF bapiret2 WITH HEADER LINE,
it_poitem TYPE TABLE OF bapimepoitem,
wa_poitem TYPE bapimepoitem,
it_poitemx TYPE TABLE OF bapimepoitemx,
wa_poitemx TYPE bapimepoitemx,
it_poaddrdelivery TYPE TABLE OF bapimepoaddrdelivery,
wa_poaddrdelivery TYPE bapimepoaddrdelivery,
it_poschedule TYPE TABLE OF bapimeposchedule,
wa_poschedule TYPE bapimeposchedule,
it_poschedulex TYPE TABLE OF bapimeposchedulx,
wa_poschedulex TYPE bapimeposchedulx,
it_poaccount TYPE TABLE OF bapimepoaccount,
wa_poaccount TYPE bapimepoaccount,
it_poaccountprofitsegment TYPE TABLE OF bapimepoaccountprofitsegment,
wa_poaccountprofitsegment TYPE bapimepoaccountprofitsegment,
it_poaccountx TYPE TABLE OF bapimepoaccountx,
wa_poaccountx TYPE bapimepoaccountx,
it_pocondheader TYPE TABLE OF bapimepocondheader,
wa_pocondheader TYPE bapimepocondheader,
it_pocondheaderx TYPE TABLE OF bapimepocondheaderx,
wa_pocondheaderx TYPE bapimepocondheaderx,
it_pocond TYPE TABLE OF bapimepocond,
wa_pocond TYPE bapimepocond,
it_pocondx TYPE TABLE OF bapimepocondx,
wa_pocondx TYPE bapimepocondx,
it_polimits TYPE TABLE OF bapiesuhc,
wa_polimits TYPE bapiesuhc,
it_pocontractlimits TYPE TABLE OF bapiesucc,
wa_pocontractlimits TYPE bapiesucc,
it_poservices TYPE TABLE OF bapiesllc,
wa_poservices TYPE bapiesllc,
it_posrvaccessvalues TYPE TABLE OF bapiesklc,
wa_posrvaccessvalues TYPE bapiesklc,
it_poservicestext TYPE TABLE OF bapieslltx,
wa_poservicestext TYPE bapieslltx,
it_extensionin TYPE TABLE OF bapiparex,
wa_extensionin TYPE bapiparex,
it_extensionout TYPE TABLE OF bapiparex,
wa_extensionout TYPE bapiparex,
it_poexpimpitem TYPE TABLE OF bapieipo,
wa_poexpimpitem TYPE bapieipo,
it_poexpimpitemx TYPE TABLE OF bapieipox,
wa_poexpimpitemx TYPE bapieipox,
it_potextheader TYPE TABLE OF bapimepotextheader,
wa_potextheader TYPE bapimepotextheader,
it_potextitem TYPE TABLE OF bapimepotext,
wa_potextitem TYPE bapimepotext,
it_allversions TYPE TABLE OF bapimedcm_allversions,
wa_allversions TYPE bapimedcm_allversions,
it_popartner TYPE TABLE OF bapiekkop,
wa_popartner TYPE bapiekkop,
it_pocomponents TYPE TABLE OF bapimepocomponent,
wa_pocomponents TYPE bapimepocomponent,
it_pocomponentsx TYPE TABLE OF bapimepocomponentx,
wa_pocomponentsx TYPE bapimepocomponentx,
it_poshipping TYPE TABLE OF bapiitemship,
wa_poshipping TYPE bapiitemship,
it_poshippingx TYPE TABLE OF bapiitemshipx,
wa_poshippingx TYPE bapiitemshipx,
it_poshippingexp TYPE TABLE OF bapimeposhippexp,
wa_poshippingexp TYPE bapimeposhippexp,
it_serialnumber TYPE TABLE OF bapimeposerialno,
wa_serialnumber TYPE bapimeposerialno,
it_serialnumberx TYPE TABLE OF bapimeposerialnox,
wa_serialnumberx TYPE bapimeposerialnox,
it_invplanheader TYPE TABLE OF bapi_invoice_plan_header,
wa_invplanheader TYPE bapi_invoice_plan_header,
it_invplanheaderx TYPE TABLE OF bapi_invoice_plan_headerx,
wa_invplanheaderx TYPE bapi_invoice_plan_headerx,
it_invplanitem TYPE TABLE OF bapi_invoice_plan_item,
wa_invplanitem TYPE bapi_invoice_plan_item,
it_invplanitemx TYPE TABLE OF bapi_invoice_plan_itemx,
wa_invplanitemx TYPE bapi_invoice_plan_itemx,
it_nfmetallitms TYPE TABLE OF /nfm/bapidocitm WITH HEADER LINE.
DATA:
zz_pid TYPE char80,
vc_msg TYPE string, "String for Message
vc_str TYPE string, "String for Popup
vc_ppp TYPE char4, "Popup ID
vc_ans TYPE char1, "Answer
vi_tdo TYPE i, "Timer
vi_tcn TYPE i, "Timer Counter
vi_tot TYPE i, "Counter Load
vi_cld TYPE i, "Counter Load
vi_row TYPE i, "Row in Excel for Upload
vi_err TYPE i, "Error
vi_lck TYPE i. "Lock Table
DATA:
vi_print TYPE i,
vi_tmr TYPE i, "Timer
vi_dbl TYPE i, "Double
vi_dec TYPE i, "Decimals
vx_dec TYPE i, "Decimals Count
vc_dec TYPE t006-andec, "Decimals UoM
vc_num TYPE char15,
wa_t134 TYPE t134,
vi_vprsv TYPE vprsv,
vc_cro TYPE scal-indicator,
vc_out TYPE t006-msehi, "UoM Out
vd_dat TYPE sy-datum, "Date
vc_dat TYPE char10. "Date in Character
DATA:
vi_max TYPE i, "
vi_cnt TYPE i, "Counter
vc_txt TYPE char40, "Text Output
vp_prc TYPE p, "Percent in Decimals
vc_prc TYPE char3. "Percent in Character
DATA:
wa_t006 TYPE t006, "Units of Measurement
wa_t006a TYPE t006a,
wa_tcurc TYPE tcurc, "Currency Codes
xx_p_out TYPE p DECIMALS 2, "Output in Decimals
xx_v_out TYPE char15.
DATA:
z_ebelp TYPE ebelp,
z_zekkn TYPE dzekkn,
z_etenr TYPE etenr,
z_stunr TYPE stunr.
TABLES: t161, "Purchasing Document Types
t001, "Company Codes
lfa1, "Supplier Master (General Section)
lfm1, "Vendor master record purchasing organization data
t024e, "Purchasing Organizations
t024, "Purchasing Groups
tcurc, "Currency Codes
t163k, "Account Assignment Categories in Purchasing Document
t163y, "Texts for Item Categories
mara, "General Material Data
makt, "Material Descriptions
marc, "Plant Data for Material
ampl, "Table of Approved Manufacturer Parts
qinf, "QM-info record for material and vendor
t001w, "Plants/Branches
t001l, "Storage Locations
tka00, "Control parameters for controlling areas
tka02, "Controlling area assignment
tfacd, "Factory calendar definition
aufk, "Order Data
t006, "Units of Measurement
t023, "Material Groups
t007a, "Tax Keys
ska1, "G/L Account Master (Chart of Accounts)
csks, "Cost Center Master Record
anlh, "Main asset number
prps. "WBS (Work Breakdown Structure) Element Master Data
"Selection Screen
SELECTION-SCREEN BEGIN OF SCREEN 101 AS SUBSCREEN.
PARAMETERS:
* p_bukrs TYPE bukrs,
filename TYPE localfile MEMORY ID zfile,
p_line TYPE i DEFAULT 6.
SELECTION-SCREEN END OF SCREEN 101 .
Include ZMMC003_02
*&---------------------------------------------------------------------*
*& Include ZMMC003_02
*&---------------------------------------------------------------------*
CLASS lcl_event_receiver DEFINITION DEFERRED.
DATA:
g_event_receiver TYPE REF TO lcl_event_receiver,
wa_stable TYPE lvc_s_stbl.
DATA : gs_toolbar TYPE stb_button.
CLASS lcl_event_receiver DEFINITION.
PUBLIC SECTION.
METHODS:handle_double_click FOR EVENT double_click OF cl_gui_alv_grid
IMPORTING e_row e_column.
ENDCLASS.
CLASS lcl_event_receiver IMPLEMENTATION.
METHOD handle_double_click.
CLEAR wa_print.
READ TABLE it_print[] INTO wa_print INDEX e_row-index.
CASE e_column.
WHEN 'MATNR'.
SET PARAMETER ID 'MXX' FIELD 'K'.
SET PARAMETER ID 'MAT' FIELD wa_print-matnr.
CALL TRANSACTION 'MM03' AND SKIP FIRST SCREEN.
WHEN 'SNOTE'.
SET PARAMETER ID 'BES' FIELD wa_print-sebeln.
CALL TRANSACTION 'ME23N' AND SKIP FIRST SCREEN.
ENDCASE.
ENDMETHOD.
ENDCLASS.
*&---------------------------------------------------------------------*
*& Module STATUS_0100 OUTPUT
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
MODULE status_0100 OUTPUT.
REFRESH stab.
IF it_print IS INITIAL.
APPEND 'POST' TO stab.
APPEND 'CLRD' TO stab.
ELSE.
APPEND 'READ' TO stab.
ENDIF.
SET PF-STATUS 'PFS100' EXCLUDING stab.
SET TITLEBAR 'TTL100' WITH 'Upload Purchase Order'.
PERFORM initial_screen.
ENDMODULE.
*&---------------------------------------------------------------------*
*& Module USER_COMMAND_0100 INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE user_command_0100 INPUT.
CASE sy-ucomm.
WHEN 'BACK' OR 'EXIT' OR 'CNCL'.
LEAVE PROGRAM.
WHEN 'READ'.
CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'
EXPORTING
text = 'Loading.......'.
PERFORM read_excel USING filename '1' p_line '30' '32000'.
WHEN 'POST'.
* PERFORM check_save.
IF it_print IS INITIAL.
ELSE.
READ TABLE it_print WITH KEY icons = '@0A@' TRANSPORTING NO FIELDS.
IF sy-subrc = 0.
CONCATENATE 'Please check your' 'excel data' INTO vc_msg SEPARATED BY ' '.
MESSAGE vc_msg TYPE 'S' DISPLAY LIKE 'E'.
ELSE.
CONCATENATE 'Do you want upload Purchase Order' '?' INTO vc_str SEPARATED BY ' '.
PERFORM popup_out USING 'ICON_QUESTION' 'Upload Confirmation' vc_str 'Yes' 'No' 'X' CHANGING vc_ans.
IF vc_ans = '1'.
PERFORM check_save.
ELSEIF vc_ans = '2'.
CONCATENATE 'Upload Purchase Order' 'be defect' INTO vc_msg SEPARATED BY ' '.
MESSAGE vc_msg TYPE 'S' DISPLAY LIKE 'E'.
ENDIF.
ENDIF.
ENDIF.
WHEN 'CLRD'.
REFRESH it_print.
ENDCASE.
ENDMODULE.
FORM initial_screen.
IF ob_container IS INITIAL.
CREATE OBJECT ob_container
EXPORTING
container_name = 'CONTAINER'.
CREATE OBJECT ob_grid
EXPORTING
i_parent = ob_container.
CREATE OBJECT g_event_receiver.
ENDIF.
PERFORM set_fieldcat.
PERFORM set_lyout.
PERFORM alv_displ_out.
* SET HANDLER :
* g_event_handler->handle_button_click FOR ob_grid,
* g_event_handler->handle_double_click FOR ob_grid.
CALL METHOD ob_grid->refresh_table_display.
SET HANDLER :
g_event_receiver->handle_double_click FOR ob_grid.
ENDFORM.
FORM set_fieldcat.
REFRESH it_fieldcat.
PERFORM :
append_fieldcat USING 'ICONS' 'Status' 'CHAR' '' '' '5' '' 'X' '' '3',
append_fieldcat USING 'SNOTE' 'Message' 'CHAR' '' '' '40' '' 'X' '' '3'.
CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'
EXPORTING
i_structure_name = 'ZSMM003_2'
CHANGING
ct_fieldcat = it_fieldcat.
CLEAR wa_fieldcat.
LOOP AT it_fieldcat INTO wa_fieldcat.
IF wa_fieldcat-fieldname = 'LIFNR' OR wa_fieldcat-fieldname = 'BSART'.
wa_fieldcat-key = 'X'.
ENDIF.
MODIFY it_fieldcat FROM wa_fieldcat
TRANSPORTING key WHERE fieldname = wa_fieldcat-fieldname.
CLEAR wa_fieldcat.
ENDLOOP.
ENDFORM.
FORM set_lyout .
CLEAR is_lyout.
is_lyout-zebra = 'X'.
is_lyout-cwidth_opt = 'X'.
is_lyout-box_fname = 'MATNR'.
* is_lyout-no_rowins = 'X'.
is_lyout-stylefname = 'CSTYL'.
is_lyout-info_fname = 'CLINE'.
is_lyout-ctab_fname = 'CCELL'.
ENDFORM.
FORM append_fieldcat USING p_fname p_fdesc p_dtype p_qfield p_cfield p_olen p_sum p_key p_tabname p_act.
DATA irows TYPE i.
CLEAR irows.
DESCRIBE TABLE it_fieldcat LINES irows.
irows = irows + 1.
CLEAR wa_fieldcat.
IF p_fname = 'ICONS'.
wa_fieldcat-icon = 'X'.
wa_fieldcat-just = 'C'.
ENDIF.
wa_fieldcat-col_pos = irows.
wa_fieldcat-key = p_key.
wa_fieldcat-fieldname = p_fname.
wa_fieldcat-scrtext_l = p_fdesc.
wa_fieldcat-scrtext_m = p_fdesc.
wa_fieldcat-scrtext_s = p_fdesc.
wa_fieldcat-datatype = p_dtype.
wa_fieldcat-qfieldname = p_qfield.
wa_fieldcat-cfieldname = p_cfield.
wa_fieldcat-outputlen = p_olen.
wa_fieldcat-do_sum = p_sum.
wa_fieldcat-tabname = p_tabname.
APPEND wa_fieldcat TO it_fieldcat.
ENDFORM.
FORM read_excel USING p_file p_bcol p_brow p_ecol p_erow.
CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE'
EXPORTING
filename = p_file
i_begin_col = p_bcol
i_begin_row = p_brow
i_end_col = p_ecol
i_end_row = p_erow
TABLES
intern = itab[]
EXCEPTIONS
inconsistent_parameters = 1
upload_ole = 2
OTHERS = 3.
DATA lv_index TYPE i.
FIELD-SYMBOLS <fs>.
LOOP AT itab.
MOVE itab-col TO lv_index.
ASSIGN COMPONENT lv_index OF STRUCTURE wa_excel TO <fs>.
MOVE itab-value TO <fs>.
AT END OF row.
* APPEND wa_record TO it_record.
CLEAR wa_print.
wa_print-icons = '@08@'.
MOVE-CORRESPONDING wa_excel TO wa_print.
APPEND wa_print TO it_print.
CLEAR wa_excel.
ENDAT.
ENDLOOP.
* IF sy-subrc <> 0.
* vc_msg = sy-subrc.
* CONDENSE vc_msg.
* CONCATENATE 'Error' vc_msg 'Problem Uploading Excel Spreadsheet' INTO vc_msg SEPARATED BY ' '.
* MESSAGE vc_msg TYPE 'S' DISPLAY LIKE 'E'.
* ENDIF.
ENDFORM.
FORM alv_displ_out.
CALL METHOD ob_grid->set_table_for_first_display
EXPORTING
* is_variant = is_varnt "DISVARIANT
i_save = 'A' "CHAR1 - X:Global - U:User - A:All - Space:No
i_default = 'X' "CHAR1 - X:Allowed - Space:not
is_layout = is_lyout "LVC_S_LAYO
* is_print = is_print "LVC_S_PRNT
* it_toolbar_excluding = it_excld "UI_FUNCTIONS
CHANGING
it_outtab = it_print
it_fieldcatalog = it_fieldcat "LVC_T_FCAT
* it_sort = it_sort "LVC_T_SORT
EXCEPTIONS
invalid_parameter_combination = 1
program_error = 2
too_many_lines = 3
OTHERS = 4.
ENDFORM.
Include ZMMC003_03
Include ZMMC003_04
*&---------------------------------------------------------------------*
*& Include ZMMC003_04
*&---------------------------------------------------------------------*
FORM set_trafc_icon USING p_icn p_set p_all.
IF ( p_all = 1 AND wa_print-icons <> '@02@' ) OR p_all = 9.
wa_print-icons = p_icn.
ENDIF.
ENDFORM.
FORM alv_color_set USING p_fld p_col p_int p_inv.
IF it_color IS INITIAL.
MOVE p_fld TO wa_color-fname.
MOVE p_col TO wa_color-color-col.
MOVE p_int TO wa_color-color-int.
MOVE p_inv TO wa_color-color-inv.
APPEND wa_color TO it_color.
wa_print-ccell[] = it_color[].
ELSE.
CLEAR: vi_color, wa_color.
LOOP AT it_color INTO wa_color WHERE fname = p_fld.
vi_color = vi_color + 1.
MOVE p_fld TO wa_color-fname.
MOVE p_col TO wa_color-color-col.
MOVE p_int TO wa_color-color-int.
MOVE p_inv TO wa_color-color-inv.
MODIFY it_color FROM wa_color.
EXIT.
CLEAR wa_color.
ENDLOOP.
IF vi_color IS INITIAL.
MOVE p_fld TO wa_color-fname.
MOVE p_col TO wa_color-color-col.
MOVE p_int TO wa_color-color-int.
MOVE p_inv TO wa_color-color-inv.
APPEND wa_color TO it_color.
ENDIF.
wa_print-ccell[] = it_color[].
ENDIF.
ENDFORM.
FORM datum_inp USING p_inp CHANGING p_err p_out.
CALL FUNCTION 'CONVERT_DATE_TO_INTERNAL'
EXPORTING
date_external = p_inp
accept_initial_date = ''
IMPORTING
date_internal = p_out
EXCEPTIONS
date_external_is_invalid = 1
OTHERS = 2.
p_err = sy-subrc.
ENDFORM.
*----------------------------------------------------------------------*
FORM datum_out USING p_inp CHANGING p_out.
CONCATENATE p_inp+6(2) p_inp+4(2) p_inp+4(4) INTO p_out SEPARATED BY '.'.
ENDFORM.
*----------------------------------------------------------------------*
FORM check_uom USING p_uom CHANGING p_err p_msg p_out p_dec.
CLEAR: p_err, p_msg, p_out, p_dec.
CLEAR: wa_t006a.
SELECT SINGLE * FROM t006a INTO wa_t006a WHERE mseh3 = p_uom.
IF wa_t006a IS INITIAL.
CLEAR: wa_t006.
SELECT SINGLE * FROM t006 INTO wa_t006 WHERE msehi = p_uom.
IF wa_t006 IS NOT INITIAL.
p_out = wa_t006-msehi.
p_dec = wa_t006-andec.
ELSE.
p_err = 1.
p_msg = 'Check UoM: Unit of Measurement not found'.
ENDIF.
ELSE.
CLEAR: wa_t006.
SELECT SINGLE * FROM t006 INTO wa_t006 WHERE msehi = wa_t006a-msehi.
p_out = wa_t006-msehi.
p_dec = wa_t006-andec.
ENDIF.
ENDFORM.
FORM check_num USING p_num p_uom p_dot p_cur CHANGING p_err p_msg p_out.
CLEAR: p_err, vx_dec, p_out.
IF p_num IS INITIAL.
p_err = 1.
p_msg = 'Check Number: Data null'.
EXIT.
ENDIF.
vc_num = p_num.
REPLACE ALL OCCURRENCES OF ',' IN vc_num WITH '.'.
CLEAR vi_dec.
IF p_uom IS NOT INITIAL.
PERFORM check_uom USING p_uom CHANGING p_err p_msg vc_out vi_dec.
ELSEIF p_dot IS INITIAL AND p_cur IS INITIAL.
p_err = 1.
p_msg = 'Check Number: No Data reference'.
ELSEIF p_cur = '1'.
p_msg = ''.
vi_dec = 1.
ELSEIF p_cur = '2'.
p_msg = ''.
vi_dec = 2.
ELSEIF p_cur = '3'.
p_msg = ''.
vi_dec = 3.
ELSEIF p_dot = '.' OR p_dot = ',' OR p_cur = 'USD'.
p_msg = ''.
vi_dec = 2.
ENDIF.
CHECK p_err IS INITIAL.
vi_tmr = strlen( vc_num ).
CLEAR: vi_cnt, vi_dbl.
DO vi_tmr TIMES.
IF vc_num+vi_cnt(1) = '0' OR vc_num+vi_cnt(1) = '1' OR vc_num+vi_cnt(1) = '2' OR vc_num+vi_cnt(1) = '3'
OR vc_num+vi_cnt(1) = '4' OR vc_num+vi_cnt(1) = '5' OR vc_num+vi_cnt(1) = '6' OR vc_num+vi_cnt(1) = '7'
OR vc_num+vi_cnt(1) = '8' OR vc_num+vi_cnt(1) = '9' OR vc_num+vi_cnt(1) = ',' OR vc_num+vi_cnt(1) = '.'.
IF vc_num+vi_cnt(1) = ',' OR vc_num+vi_cnt(1) = '.'.
vi_dbl = vi_dbl + 1.
ENDIF.
IF vi_cnt IS INITIAL AND ( vc_num+vi_cnt(1) = ',' OR vc_num+vi_cnt(1) = '.' ).
p_err = 1.
p_msg = 'Check Number: Wrong format'.
EXIT.
ENDIF.
IF vi_dbl IS NOT INITIAL AND vi_dec IS NOT INITIAL.
IF vx_dec > vi_dec.
p_err = 1.
p_msg = 'Check Number: Wrong format'.
EXIT.
ENDIF.
vx_dec = vx_dec + 1.
ENDIF.
IF ( vi_dbl > 1 )
OR ( vi_dec IS INITIAL AND ( vc_num+vi_cnt(1) = ',' OR vc_num+vi_cnt(1) = '.' ) )
OR vc_num+vi_cnt(1) = ','.
p_err = 1.
p_msg = 'Check Number: Wrong format'.
EXIT.
ENDIF.
ELSE.
p_err = 1.
p_msg = 'Check Number: Wrong format'.
EXIT.
ENDIF.
vi_cnt = vi_cnt + 1.
ENDDO.
CHECK p_err IS INITIAL.
IF p_cur = 'IDR'.
p_out = vc_num / 100.
ELSE.
p_out = vc_num.
ENDIF.
ENDFORM.
FORM alpha_inp USING p_inp CHANGING p_err p_out.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
input = p_inp
IMPORTING
output = p_out.
p_err = sy-subrc.
ENDFORM.
*----------------------------------------------------------------------*
FORM alpha_out USING p_inp CHANGING p_err p_out.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'
EXPORTING
input = p_inp
IMPORTING
output = p_out.
p_err = sy-subrc.
ENDFORM.
FORM popup_out USING p_typ p_tit p_txt p_bt1 p_bt2 p_cnc CHANGING p_ans.
CALL FUNCTION 'POPUP_TO_CONFIRM'
EXPORTING
titlebar = p_tit
text_question = p_txt
text_button_1 = p_bt1 "(001)
icon_button_1 = 'ICON_YES'
text_button_2 = p_bt2 "(002)
icon_button_2 = 'ICON_NO'
default_button = '1'
display_cancel_button = p_cnc
* START_COLUMN = 25
* START_ROW = 6
popup_type = p_typ
* IV_QUICKINFO_BUTTON_1 = ' '
* IV_QUICKINFO_BUTTON_2 = ' '
IMPORTING
answer = p_ans
EXCEPTIONS
text_not_found = 1
OTHERS = 2.
ENDFORM.
FORM pload_out USING p_val p_inf p_tbx p_lne.
CHECK p_lne IS NOT INITIAL.
vp_prc = ( p_tbx / p_lne ) * 100.
vc_prc = vp_prc.
SHIFT vc_prc LEFT DELETING LEADING ' '.
IF p_val = 0.
CONCATENATE 'Loading..' vc_prc '% Complete' INTO vc_txt SEPARATED BY ' '.
ELSEIF p_val = 1.
CONCATENATE p_inf '.. ' INTO vc_txt.
CONCATENATE vc_txt vc_prc '% Complete' INTO vc_txt SEPARATED BY ' '.
ENDIF.
IF vp_prc GT vi_max OR p_tbx EQ 1.
CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'
EXPORTING
percentage = vp_prc
text = vc_txt.
vi_max = vp_prc.
ENDIF.
ENDFORM.
Include ZMMC003_05
*&---------------------------------------------------------------------*
*& Include ZMMC003_05
*&---------------------------------------------------------------------*
FORM check_save.
REFRESH it_tprnt.
it_tprnt[] = it_print[].
CLEAR wa_tprnt.
LOOP AT it_tprnt INTO wa_tprnt WHERE icons <> '@08@' AND icons <> '@09@'.
DELETE it_tprnt.
CLEAR wa_tprnt.
ENDLOOP.
REFRESH it_zprnt.
it_zprnt[] = it_tprnt[].
SORT it_zprnt BY unsez.
DELETE ADJACENT DUPLICATES FROM it_zprnt COMPARING unsez.
DESCRIBE TABLE it_zprnt LINES vi_print.
CLEAR: wa_zprnt, vi_cld.
LOOP AT it_zprnt INTO wa_zprnt.
vi_cld = vi_cld + 1.
CONCATENATE 'Creating Purchase Order' wa_tprnt-unsez INTO vc_msg SEPARATED BY ' '.
PERFORM pload_out USING 1 vc_msg vi_cld vi_print.
PERFORM uplod_set.
CLEAR wa_zprnt.
ENDLOOP.
DESCRIBE TABLE it_tprnt LINES vi_print.
REFRESH it_print.
it_print[] = it_tprnt[].
ENDFORM.
FORM uplod_set .
PERFORM uplod_exp.
PERFORM uplod_imp.
PERFORM uplod_tab.
CALL FUNCTION 'BAPI_PO_CREATE1'
EXPORTING
poheader = ex_poheader
poheaderx = ex_poheaderx
poaddrvendor = ex_poaddrvendor
testrun = ex_testrun
memory_uncomplete = ex_memory_uncomplete
memory_complete = ex_memory_complete
poexpimpheader = ex_poexpimpheader
poexpimpheaderx = ex_poexpimpheaderx
versions = ex_versions
no_messaging = ex_no_messaging
no_message_req = ex_no_message_req
no_authority = ex_no_authority
no_price_from_po = ex_no_price_from_po
park_complete = ex_park_complete
park_uncomplete = ex_park_uncomplete
IMPORTING
exppurchaseorder = im_exppurchaseorder
expheader = im_expheader
exppoexpimpheader = im_exppoexpimpheader
TABLES
return = it_return
poitem = it_poitem
poitemx = it_poitemx
poaddrdelivery = it_poaddrdelivery
poschedule = it_poschedule
poschedulex = it_poschedulex
poaccount = it_poaccount
poaccountprofitsegment = it_poaccountprofitsegment
poaccountx = it_poaccountx
pocondheader = it_pocondheader
pocondheaderx = it_pocondheaderx
pocond = it_pocond
pocondx = it_pocondx
polimits = it_polimits
pocontractlimits = it_pocontractlimits
poservices = it_poservices
posrvaccessvalues = it_posrvaccessvalues
poservicestext = it_poservicestext
extensionin = it_extensionin
extensionout = it_extensionout
poexpimpitem = it_poexpimpitem
poexpimpitemx = it_poexpimpitemx
potextheader = it_potextheader
potextitem = it_potextitem
allversions = it_allversions
popartner = it_popartner
pocomponents = it_pocomponents
pocomponentsx = it_pocomponentsx
poshipping = it_poshipping
poshippingx = it_poshippingx
poshippingexp = it_poshippingexp
serialnumber = it_serialnumber
serialnumberx = it_serialnumberx
invplanheader = it_invplanheader
invplanheaderx = it_invplanheaderx
invplanitem = it_invplanitem
invplanitemx = it_invplanitemx
nfmetallitms = it_nfmetallitms.
DATA zebelp TYPE ebelp.
CLEAR: it_return, vc_msg.
READ TABLE it_return INTO it_return WITH KEY type = 'E'.
IF it_return IS NOT INITIAL.
wa_zprnt-icons = '@F1@'.
wa_zprnt-snote = it_return-message.
MODIFY it_tprnt FROM wa_zprnt TRANSPORTING icons snote WHERE unsez = wa_zprnt-unsez.
ELSE.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
wait = 'X'.
CONCATENATE 'Success:' it_return-message_v1 'No.' im_exppurchaseorder INTO vc_msg SEPARATED BY ' '.
wa_zprnt-icons = '@5Y@'.
wa_zprnt-snote = vc_msg.
wa_zprnt-sebeln = im_exppurchaseorder .
MODIFY it_tprnt FROM wa_zprnt TRANSPORTING icons snote sebeln WHERE unsez = wa_zprnt-unsez.
ENDIF.
ENDFORM.
FORM uplod_exp .
"--------------------------------------------------------------------------------------------------------------------------------------------------
CLEAR ex_poheader.
CLEAR ex_poheaderx.
ex_poheader-our_ref = wa_zprnt-unsez.
IF ex_poheader-our_ref IS NOT INITIAL.
ex_poheaderx-our_ref = 'X'.
ENDIF.
ex_poheader-doc_type = wa_zprnt-bsart.
IF ex_poheader-doc_type IS NOT INITIAL.
ex_poheaderx-doc_type = 'X'.
ENDIF.
ex_poheader-doc_date = wa_zprnt-bedat.
IF ex_poheader-doc_date IS NOT INITIAL.
ex_poheaderx-doc_date = 'X'.
ENDIF.
ex_poheader-vendor = wa_zprnt-lifnr.
IF ex_poheader-vendor IS NOT INITIAL.
ex_poheaderx-vendor = 'X'.
ENDIF.
ex_poheader-purch_org = wa_zprnt-ekorg.
IF ex_poheader-purch_org IS NOT INITIAL.
ex_poheaderx-purch_org = 'X'.
ENDIF.
ex_poheader-pur_group = wa_zprnt-ekgrp.
IF ex_poheader-pur_group IS NOT INITIAL.
ex_poheaderx-pur_group = 'X'.
ENDIF.
* EX_POHEADER-COMP_CODE = WA_ZPRNT-BUKRS.
* IF EX_POHEADER-COMP_CODE IS NOT INITIAL.
* EX_POHEADERX-COMP_CODE = 'X'.
* ENDIF.
ex_poheader-currency = wa_zprnt-waers.
IF ex_poheader-currency IS NOT INITIAL.
ex_poheaderx-currency = 'X'.
ENDIF.
ex_poheader-ex_rate_fx = 'X'.
IF ex_poheader-ex_rate_fx IS NOT INITIAL.
ex_poheaderx-ex_rate_fx = 'X'.
ENDIF.
ex_poheader-ref_1 = wa_zprnt-ihrez.
IF ex_poheader-ref_1 IS NOT INITIAL.
ex_poheaderx-ref_1 = 'X'.
ENDIF.
ex_poheader-sales_pers = wa_zprnt-verkf.
IF ex_poheader-sales_pers IS NOT INITIAL.
ex_poheaderx-sales_pers = 'X'.
ENDIF.
ex_poheader-pmnttrms = wa_zprnt-zterm.
ex_poheaderx-pmnttrms = 'X'.
"--------------------------------------------------------------------------------------------------------------------------------------------------
CLEAR ex_poaddrvendor.
"--------------------------------------------------------------------------------------------------------------------------------------------------
ex_testrun = ''.
ex_memory_uncomplete = ''.
ex_memory_complete = ''.
"--------------------------------------------------------------------------------------------------------------------------------------------------
CLEAR ex_poexpimpheader.
CLEAR ex_poexpimpheaderx.
"--------------------------------------------------------------------------------------------------------------------------------------------------
CLEAR ex_versions.
"--------------------------------------------------------------------------------------------------------------------------------------------------
ex_no_messaging = ''.
ex_no_message_req = ''.
ex_no_authority = ''.
ex_no_price_from_po = 'X'.
ex_park_complete = ''.
ex_park_uncomplete = ''.
ENDFORM.
*----------------------------------------------------------------------*
FORM uplod_imp .
CLEAR im_exppurchaseorder.
CLEAR im_expheader.
CLEAR im_exppoexpimpheader.
ENDFORM.
*----------------------------------------------------------------------*
FORM uplod_tab .
REFRESH it_return.
REFRESH it_poitem.
REFRESH it_poitemx.
REFRESH it_poaddrdelivery.
REFRESH it_poschedule.
REFRESH it_poschedulex.
REFRESH it_poaccount.
REFRESH it_poaccountx.
REFRESH it_poaccountprofitsegment.
REFRESH it_pocondheader.
REFRESH it_pocondheaderx.
REFRESH it_pocond.
REFRESH it_pocondx.
REFRESH it_polimits.
REFRESH it_pocontractlimits.
REFRESH it_poservices.
REFRESH it_posrvaccessvalues.
REFRESH it_poservicestext.
REFRESH it_extensionin.
REFRESH it_extensionout.
REFRESH it_poexpimpitem.
REFRESH it_poexpimpitemx.
REFRESH it_potextheader.
REFRESH it_potextitem.
REFRESH it_allversions.
REFRESH it_popartner.
REFRESH it_pocomponents.
REFRESH it_pocomponentsx.
REFRESH it_poshipping.
REFRESH it_poshippingx.
REFRESH it_poshippingexp.
REFRESH it_serialnumber.
REFRESH it_serialnumberx.
REFRESH it_invplanheader.
REFRESH it_invplanheaderx.
REFRESH it_invplanitem.
REFRESH it_invplanitemx.
"--------------------------------------------------------------------------------------------------------------------------------------------------
CLEAR: z_zekkn, z_etenr, z_stunr.
CLEAR: wa_tprnt, z_zekkn, z_etenr, z_stunr.
LOOP AT it_tprnt INTO wa_tprnt WHERE unsez = wa_zprnt-unsez.
CLEAR wa_poitem.
READ TABLE it_poitem INTO wa_poitem WITH KEY po_item = wa_tprnt-ebelp.
IF wa_poitem IS INITIAL.
z_zekkn = 1.
z_etenr = 1.
z_stunr = 1.
CLEAR wa_poitem.
CLEAR wa_poitemx.
wa_poitem-po_item = wa_tprnt-ebelp.
IF wa_poitem-po_item IS NOT INITIAL.
wa_poitemx-po_item = wa_poitem-po_item.
wa_poitemx-po_itemx = 'X'.
ENDIF.
IF wa_tprnt-knttp IS NOT INITIAL.
wa_poitem-acctasscat = wa_tprnt-knttp.
wa_poitemx-acctasscat = 'X'.
ENDIF.
IF wa_tprnt-epstp IS NOT INITIAL.
wa_poitem-item_cat = wa_tprnt-epstp.
wa_poitemx-item_cat = 'X'.
ENDIF.
* IF WA_TPRNT-PSTYP = '3'.
* WA_POITEM-ITEM_CAT = 'L'. "WA_TPRNT-PSTYP.
* IF WA_POITEM-ITEM_CAT IS NOT INITIAL.
* WA_POITEMX-ITEM_CAT = 'X'.
* ENDIF.
* ENDIF.
* wa_poitem-ematerial = wa_tprnt-ematn.
* if wa_poitem-ematerial is not initial.
* wa_poitemx-ematerial = 'X'.
*
* wa_poitem-ematerial_long = wa_poitem-ematerial.
* wa_poitemx-ematerial_long = 'X'.
* endif.
IF wa_tprnt-ematn IS NOT INITIAL.
wa_poitem-material = wa_tprnt-ematn.
wa_poitemx-material = 'X'.
wa_poitem-material_long = wa_poitem-material.
wa_poitemx-material_long = 'X'.
ENDIF.
IF wa_tprnt-txz01 IS NOT INITIAL.
wa_poitem-short_text = wa_tprnt-txz01.
wa_poitemx-short_text = 'X'.
ENDIF.
wa_poitem-plant = wa_tprnt-werks.
IF wa_poitem-plant IS NOT INITIAL.
wa_poitemx-plant = 'X'.
ENDIF.
IF wa_tprnt-lgort IS NOT INITIAL.
wa_poitem-stge_loc = wa_tprnt-lgort.
wa_poitemx-stge_loc = 'X'.
ENDIF.
IF wa_tprnt-meins IS NOT INITIAL.
wa_poitem-po_unit = wa_tprnt-meins.
wa_poitemx-po_unit = 'X'.
ENDIF.
IF wa_tprnt-waers = 'IDR'.
wa_tprnt-netpr = wa_tprnt-netpr * 100.
ENDIF.
IF wa_tprnt-netpr IS NOT INITIAL.
wa_poitem-net_price = wa_tprnt-netpr.
wa_poitemx-net_price = 'X'.
ENDIF.
wa_poitem-price_unit = wa_tprnt-peinh.
IF wa_poitem-price_unit IS NOT INITIAL.
wa_poitemx-price_unit = 'X'.
ENDIF.
wa_poitem-orderpr_un = wa_tprnt-bprme.
IF wa_poitem-orderpr_un IS NOT INITIAL.
wa_poitemx-orderpr_un = 'X'.
ENDIF.
IF wa_tprnt-matkl IS NOT INITIAL.
wa_poitem-matl_group = wa_tprnt-matkl.
wa_poitemx-matl_group = 'X'.
ENDIF.
IF wa_tprnt-afnam IS NOT INITIAL.
wa_poitem-preq_name = wa_tprnt-afnam.
wa_poitemx-preq_name = 'X'.
ENDIF.
IF wa_tprnt-mwskz IS NOT INITIAL.
wa_poitem-tax_code = wa_tprnt-mwskz.
wa_poitemx-tax_code = 'X'.
ENDIF.
IF wa_tprnt-unsez IS NOT INITIAL.
wa_poitem-trackingno = wa_tprnt-unsez.
wa_poitemx-trackingno = 'X'.
ENDIF.
*QUANTITY
* WA_POITEM-GR_BASEDIV = WA_TPRNT-WEBRE.
* WA_POITEMX-GR_BASEDIV = 'X'.
IF wa_poitem IS NOT INITIAL.
APPEND wa_poitem TO it_poitem.
APPEND wa_poitemx TO it_poitemx.
ENDIF.
IF wa_tprnt-knttp IS NOT INITIAL.
CLEAR wa_poaccount.
CLEAR wa_poaccountx.
wa_poaccount-po_item = wa_tprnt-ebelp.
IF wa_poaccount-po_item IS NOT INITIAL.
wa_poaccountx-po_item = wa_poaccount-po_item.
wa_poaccountx-po_itemx = 'X'.
ENDIF.
wa_poaccount-serial_no = z_zekkn.
IF wa_poaccount-serial_no IS NOT INITIAL.
wa_poaccountx-serial_no = wa_poaccount-serial_no.
wa_poaccountx-serial_nox = 'X'.
ENDIF.
IF wa_tprnt-anln1 IS NOT INITIAL.
wa_poaccount-quantity = wa_tprnt-ktmng.
* WA_POACCOUNT-QUANTITY = WA_TPRNT-SMENGE.
IF wa_poaccount-quantity IS NOT INITIAL.
wa_poaccountx-quantity = 'X'.
ENDIF.
ENDIF.
* WA_POACCOUNT-GL_ACCOUNT = WA_TPRNT-SAKTO.
* IF WA_POACCOUNT-GL_ACCOUNT IS NOT INITIAL.
* WA_POACCOUNTX-GL_ACCOUNT = 'X'.
* ENDIF.
wa_poaccount-costcenter = wa_tprnt-kostl.
IF wa_poaccount-costcenter IS NOT INITIAL.
wa_poaccountx-costcenter = 'X'.
ENDIF.
wa_poaccount-asset_no = wa_tprnt-anln1.
IF wa_poaccount-asset_no IS NOT INITIAL.
wa_poaccountx-asset_no = 'X'.
ENDIF.
wa_poaccount-orderid = wa_tprnt-aufnr.
IF wa_poaccount-orderid IS NOT INITIAL.
wa_poaccountx-orderid = 'X'.
ENDIF.
IF wa_poaccount IS NOT INITIAL.
APPEND wa_poaccount TO it_poaccount.
APPEND wa_poaccountx TO it_poaccountx.
ENDIF.
ENDIF.
CLEAR wa_poschedule.
CLEAR wa_poschedulex.
wa_poschedule-po_item = wa_tprnt-ebelp.
IF wa_poschedule-po_item IS NOT INITIAL.
wa_poschedulex-po_item = wa_poschedule-po_item.
wa_poschedulex-po_itemx = 'X'.
ENDIF.
wa_poschedule-sched_line = z_etenr.
IF wa_poschedule-sched_line IS NOT INITIAL.
wa_poschedulex-sched_line = wa_poschedule-sched_line.
wa_poschedulex-sched_linex = 'X'.
ENDIF.
CONCATENATE wa_tprnt-eindt+6(2) wa_tprnt-eindt+4(2) wa_tprnt-eindt+0(4) INTO wa_poschedule-delivery_date SEPARATED BY '.'.
* WA_POSCHEDULE-DELIVERY_DATE = WA_TPRNT-EINDT.
IF wa_poschedule-delivery_date IS NOT INITIAL.
wa_poschedulex-delivery_date = 'X'.
ENDIF.
wa_poschedule-quantity = wa_tprnt-ktmng.
* WA_POSCHEDULE-QUANTITY = WA_TPRNT-SMENGE.
IF wa_poschedule-quantity IS NOT INITIAL.
wa_poschedulex-quantity = 'X'.
ENDIF.
IF wa_poschedule IS NOT INITIAL.
APPEND wa_poschedule TO it_poschedule.
APPEND wa_poschedulex TO it_poschedulex.
ENDIF.
ELSE.
z_zekkn = z_zekkn + 1.
z_etenr = z_etenr + 1.
IF wa_tprnt-knttp IS NOT INITIAL.
CLEAR wa_poaccount.
CLEAR wa_poaccountx.
wa_poaccount-po_item = wa_tprnt-ebelp.
IF wa_poaccount-po_item IS NOT INITIAL.
wa_poaccountx-po_item = wa_poaccount-po_item.
wa_poaccountx-po_itemx = 'X'.
ENDIF.
wa_poaccount-serial_no = z_zekkn.
IF wa_poaccount-serial_no IS NOT INITIAL.
wa_poaccountx-serial_no = wa_poaccount-serial_no.
wa_poaccountx-serial_nox = 'X'.
ENDIF.
IF wa_tprnt-anln1 IS NOT INITIAL.
wa_poaccount-quantity = wa_tprnt-ktmng.
* WA_POACCOUNT-QUANTITY = WA_TPRNT-SMENGE.
IF wa_poaccount-quantity IS NOT INITIAL.
wa_poaccountx-quantity = 'X'.
ENDIF.
ENDIF.
* WA_POACCOUNT-GL_ACCOUNT = WA_TPRNT-SAKTO.
* IF WA_POACCOUNT-GL_ACCOUNT IS NOT INITIAL.
* WA_POACCOUNTX-GL_ACCOUNT = 'X'.
* ENDIF.
wa_poaccount-costcenter = wa_tprnt-kostl.
IF wa_poaccount-costcenter IS NOT INITIAL.
wa_poaccountx-costcenter = 'X'.
ENDIF.
wa_poaccount-asset_no = wa_tprnt-anln1.
IF wa_poaccount-asset_no IS NOT INITIAL.
wa_poaccountx-asset_no = 'X'.
ENDIF.
wa_poaccount-orderid = wa_tprnt-aufnr.
IF wa_poaccount-orderid IS NOT INITIAL.
wa_poaccountx-orderid = 'X'.
ENDIF.
IF wa_poaccount IS NOT INITIAL.
APPEND wa_poaccount TO it_poaccount.
APPEND wa_poaccountx TO it_poaccountx.
ENDIF.
ENDIF.
CLEAR wa_poschedule.
CLEAR wa_poschedulex.
wa_poschedule-po_item = wa_tprnt-ebelp.
IF wa_poschedule-po_item IS NOT INITIAL.
wa_poschedulex-po_item = wa_poschedule-po_item.
wa_poschedulex-po_itemx = 'X'.
ENDIF.
wa_poschedule-sched_line = z_etenr.
IF wa_poschedule-sched_line IS NOT INITIAL.
wa_poschedulex-sched_line = wa_poschedule-sched_line.
wa_poschedulex-sched_linex = 'X'.
ENDIF.
CONCATENATE wa_tprnt-eindt+6(2) wa_tprnt-eindt+4(2) wa_tprnt-eindt+0(4) INTO wa_poschedule-delivery_date SEPARATED BY '.'.
* WA_POSCHEDULE-DELIVERY_DATE = WA_TPRNT-EINDT.
IF wa_poschedule-delivery_date IS NOT INITIAL.
wa_poschedulex-delivery_date = 'X'.
ENDIF.
wa_poschedule-quantity = wa_tprnt-ktmng.
* WA_POSCHEDULE-QUANTITY = WA_TPRNT-SMENGE.
IF wa_poschedule-quantity IS NOT INITIAL.
wa_poschedulex-quantity = 'X'.
ENDIF.
IF wa_poschedule IS NOT INITIAL.
APPEND wa_poschedule TO it_poschedule.
APPEND wa_poschedulex TO it_poschedulex.
ENDIF.
ENDIF.
CLEAR wa_tprnt.
ENDLOOP.
ENDFORM.
Excel Template
Comments
Post a Comment