Raw Material IQA Status Inventory Report
*&---------------------------------------------------------------------*
*& Company ASAT Company Limited *
*& *
*& Report ZRMM0033 *
*& *
*& Autor: LILO. *
*& *
*& Date: 05.26.2005 *
*& *
*----------------------------------------------------------------------*
*& Description: *
*& The report is used for query the raw material inventory data *
*& *
*----------------------------------------------------------------------*
*& Modification:
* Mod Resp Person Date Description
*
*----------------------------------------------------------------------*
REPORT zrmm0033 message-id 00.
TYPE-POOLS: slis.
*----------------------------------------------------------------------*
* Tables *
*----------------------------------------------------------------------*
TABLES: kna1, "Customer Master
mcha, mchb, "Material Batches/Stocks
cabn, cabnt, ausp, "Characteristics/Values
klah, ksml, "Class Header/Characteristics
resb, "Reservation
makt, "Material Text
aufk, afko, "Order master/header data
vbak, vbap, "Sales order header/line item data
mara, marc,
adrc, vbpa, vbkd. "Address, sales document partner/business dat
*----------------------------------------------------------------------*
* Declarations *
*----------------------------------------------------------------------*
TYPES: tp_char05 TYPE char05.
DATA: BEGIN OF gt_main OCCURS 1,
matnr LIKE mchb-matnr, "Material
werks LIKE mchb-werks, "Plant
lgort LIKE mchb-lgort, "Storage Location
charg LIKE mchb-charg, "Batch
BTREMARK(40), "Remark field "DEVK903322
ernam LIKE mchb-ernam, "Created by
aenam LIKE mchb-aenam, "Changed by
sperc LIKE mchb-sperc, "Inventory Block
clabs LIKE mchb-clabs, "Unrestricted
cumlm LIKE mchb-cumlm, "Stock in transfer
cinsm LIKE mchb-cinsm, "In quanlity inspection
ceinm LIKE mchb-ceinm, "Restricted use
cspem LIKE mchb-cspem, "Blocked
cretm LIKE mchb-cretm, "Returns
lwedt LIKE mcha-lwedt, "Last GR
END OF gt_main.
* batch classification characteristics
DATA: BEGIN OF gt_bclass OCCURS 0,
posnr LIKE api_ch_att-posnr, "Item No.
atinn LIKE cabnt-atinn, "Internal Characteristics
atnam like api_ch_att-atnam, "Characteristics
atbez LIKE cabnt-atbez, "Characteristics description
dtype LIKE api_ch_att-dtype, "Characteristics type
anzdz like api_ch_att-anzdz, "Decimal places
atsch like api_ch_att-atsch, "template/edit mask
msehi like api_ch_att-msehi, "UOM
exist TYPE c, "Value exist
END OF gt_bclass.
DATA: BEGIN OF gt_bcldat OCCURS 0,
matnr LIKE mchb-matnr, "Material
werks LIKE mchb-werks, "Plant
lgort LIKE mchb-lgort, "Storage Location
charg LIKE mchb-charg, "Batch
atinn LIKE ausp-atinn, "Internal Characteristics
atwrt LIKE ausp-atwrt, "Characteristics Value
atflv like ausp-atflv, "Characteristics num value
END OF gt_bcldat.
* material classification characteristics
DATA: BEGIN OF gt_mclass OCCURS 0,
posnr LIKE api_ch_att-posnr, "Item No.
atinn LIKE cabnt-atinn, "Internal Characteristics
atnam like api_ch_att-atnam, "Characteristics
atbez LIKE cabnt-atbez, "Characteristics description
atfor LIKE klmerka-atfor, "Characteristics type
anzdz like api_ch_att-anzdz, "Decimal places
atsch like api_ch_att-atsch, "template/edit mask
dimen like klmerka-dimen, "UOM
END OF gt_mclass.
DATA: BEGIN OF gt_mcldat OCCURS 0,
matnr LIKE mchb-matnr, "Material
werks LIKE mchb-werks, "Plant
lgort LIKE mchb-lgort, "Storage Location
charg LIKE mchb-charg, "Batch
atnam LIKE cabn-atnam, "Characteristics
ausp1 LIKE ausp-atwrt, "Characteristics description
atflv like ausp-atflv, "Characteristics num value
END OF gt_mcldat.
DATA: BEGIN OF itab OCCURS 1,
* insert fields here
matnr LIKE mchb-matnr, "Material
werks LIKE mchb-werks, "Plant
lgort LIKE mchb-lgort, "Storage Location
charg LIKE mchb-charg, "Batch
BTREMARK(40), "Batch Remark DEVK903322
ernam LIKE mchb-ernam, "Created by
aenam LIKE mchb-aenam, "Changed by
sperc LIKE mchb-sperc, "Inventory Block
clabs LIKE mchb-clabs, "Unrestricted
cumlm LIKE mchb-cumlm, "Stock in transfer
cinsm LIKE mchb-cinsm, "In quanlity inspection
ceinm LIKE mchb-ceinm, "Restricted use
cspem LIKE mchb-cspem, "Blocked
cretm LIKE mchb-cretm, "Returns
lwedt LIKE mcha-lwedt, "Last GR
meins like mara-meins, "UOM
zeinr like mara-zeinr, "Drawing Document
zeivr like mara-zeivr, "Drawing version
licha like mcha-licha, "vendor batch
hsdat like mcha-hsdat, "production date
fvdt2 like mcha-fvdt2, "mfg date
* production order related
xwaok LIKE resb-xwaok, "Movement allowed
kzear LIKE resb-kzear, "Final issue
bdter LIKE resb-bdter, "Requirements date
bdmng LIKE resb-bdmng, "Requirements quantity
enmng LIKE resb-enmng, "Withdrawal quantity
osmng LIKE resb-bdmng, "Outstanding reqt qty
aufnr LIKE resb-aufnr, "Order number
baugr LIKE resb-baugr, "Material number(FG)
maktx LIKE makt-maktx, "Material text
class LIKE sclass-class, "Class
kdauf LIKE aufk-kdauf, "Sales order
kdpos LIKE aufk-kdpos, "Sales order item
aprio LIKE afko-aprio, "Order priority
auart LIKE vbak-auart, "Sales document type
kunnr LIKE vbpa-kunnr, "Bill-to party
name1 LIKE adrc-name1, "Customer name
arktx LIKE vbap-arktx, "Sales item description
kdmat LIKE vbap-kdmat, "Customer material
tdlin(205) type c, "SO item textf for fab lot#
* tdlin LIKE tline-tdline, "SO item textf for fab lot#
lprio LIKE vbap-lprio, "SO item delivery priority
bstdk LIKE vbkd-bstdk, "SO purchase order date
RM_DWG LIKE AUSP-ATWRT, " SUPPLIER DRAWING NO
RM_NO LIKE AUSP-ATWRT, " ASAT DRAWING NO
END OF itab.
*A000001
DATA: BEGIN OF gt_exp OCCURS 1,
* die stock information
werks LIKE mchb-werks, "Plant
lgort LIKE mchb-lgort, "Storage Location
charg LIKE mchb-charg, "Batch
clabs(18) type c, "Unrestricted
lwedt LIKE mcha-lwedt, "Last GR
iqa(1) type c,
** die characteristic information, refer to DB_DIE_CLASS
* kunnr(10) type c, "Customer Code
* name1 like kna1-name1, "Customer Name
* fablt(30) type c, "Fab Lot No.
* wqty(8) type c, "Wafer Quantity
* dqty(13) type c, "Die Received Quantity
END OF gt_exp.
DATA: lin TYPE i, l(6).
data : begin of xtab1 occurs 0,
line(1000).
data : end of xtab1.
* end of A00001
DATA: BEGIN OF con_class,
* class type constants
* matnr(3) VALUE '001',
charg(3) VALUE '022',
END OF con_class.
DATA: BEGIN OF con_char,
* charateristic constants
* cust(30) VALUE 'DB_CUSTOMER',
* fl(30) VALUE 'DB_FL',
* ICCUST(30) VALUE 'ICB_CUSTOMER',
* ICLOT(30) VALUE 'ICB_LOT_NO',
iqa(30) VALUE 'MM_IQA_STATUS',
END OF con_char.
DATA: BEGIN OF con_sel,
* selection constants
* kunnr(3) VALUE '001',
* fablt(3) VALUE '002',
* ICCUST(3) VALUE '003',
* ICLOT(3) VALUE '004',
IQA(3) VALUE '001',
END OF con_sel.
DATA: BEGIN OF con_subtotal,
st01 TYPE tp_char05 VALUE 'CLABS',
st02 TYPE tp_char05 VALUE 'CUMLM',
st03 TYPE tp_char05 VALUE 'CINSM',
st04 TYPE tp_char05 VALUE 'CEINM',
st05 TYPE tp_char05 VALUE 'CSPEM',
st06 TYPE tp_char05 VALUE 'CRETM',
END OF con_subtotal.
DATA: BEGIN OF con_sotxt,
itmid(4) VALUE 'Z002',
itmobj(4) VALUE 'VBBP',
END OF con_sotxt.
* Report variant variables
DATA: G_REPID LIKE SY-REPID.
DATA: GX_VARIANT LIKE DISVARIANT,
G_EXIT(1) TYPE C,
G_SAVE(1) TYPE C,
G_VARIANT LIKE DISVARIANT.
* Dynamic internal table variables
FIELD-SYMBOLS: <f>,
<tab> TYPE STANDARD TABLE,
<wa>.
DATA: intern TYPE alsmex_tabline OCCURS 0 WITH HEADER LINE,
fcat TYPE slis_t_fieldcat_alv,
it_fieldcat TYPE lvc_t_fcat,
g_idx TYPE i.
CONSTANTS: c_billto(2) VALUE 'RE',
* c_maxmm TYPE i VALUE 14, "DEVK903896
" Value in C_MAXMM controls how many MM fields to be
" printed out in the ALV format
C_MAXMM TYPE I VALUE 23, "DEVK903896
c_bcl(4) VALUE 'BCL_',
c_mcl(4) VALUE 'MCL_'.
data atwrt1 like ausp-atwrt.
*----------------------------------------------------------------------*
* Selection Screen *
*----------------------------------------------------------------------*
SELECTION-SCREEN BEGIN OF BLOCK a WITH FRAME TITLE text-001.
* Selection criteria
*PARAMETERS p_matnrz LIKE mchb-matnr.
SELECT-OPTIONS so_matnr FOR mchb-matnr.
SELECT-OPTIONS so_werks FOR mchb-werks.
SELECT-OPTIONS so_lgort FOR mchb-lgort.
SELECT-OPTIONS so_charg FOR mchb-charg.
SELECT-OPTIONS so_mtart FOR mara-mtart.
SELECT-OPTIONS so_matkl FOR mara-matkl.
SELECT-OPTIONS so_dispo FOR marc-dispo.
SELECT-OPTIONS so_licha FOR mcha-licha.
PARAMETERS p_class LIKE klah-class DEFAULT 'MM_RAWMAT' NO-DISPLAY.
SELECTION-SCREEN END OF BLOCK a.
** DB Characteristics
*SELECTION-SCREEN BEGIN OF BLOCK d WITH FRAME TITLE text-005.
*SELECT-OPTIONS so_kunnr FOR kna1-kunnr.
*SELECT-OPTIONS so_fablt FOR ausp-atwrt.
*SELECTION-SCREEN END OF BLOCK d.
** ICB Characteristics
*SELECTION-SCREEN BEGIN OF BLOCK e WITH FRAME TITLE text-006.
*SELECT-OPTIONS IC_CUST FOR KNA1-KUNNR. "DEVK903322
*SELECT-OPTIONS IC_LOT FOR AUSP-ATWRT. "DEVK903322
*SELECTION-SCREEN END OF BLOCK e.
* Raw Material Characteristics
SELECTION-SCREEN BEGIN OF BLOCK d WITH FRAME TITLE text-007.
SELECT-OPTIONS so_iqa FOR ausp-atwrt.
SELECTION-SCREEN END OF BLOCK d.
* Variant
SELECTION-SCREEN BEGIN OF BLOCK 0 WITH FRAME TITLE TEXT-003.
PARAMETERS: P_VARI LIKE DISVARIANT-VARIANT.
SELECTION-SCREEN END OF BLOCK 0.
* Layout
SELECTION-SCREEN BEGIN OF BLOCK b WITH FRAME TITLE text-002.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT (20) text-011
FOR FIELD p_nozero.
SELECTION-SCREEN POSITION pos_low.
PARAMETERS p_nozero AS CHECKBOX DEFAULT 'X'.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT (20) text-012
FOR FIELD p_ppincl.
SELECTION-SCREEN POSITION pos_low.
PARAMETERS p_ppincl AS CHECKBOX.
SELECTION-SCREEN END OF LINE.
" START OF DEVK903322
PARAMETERS P_NOMISS AS CHECKBOX.
PARAMETERS P_NOEMPT AS CHECKBOX.
" END OF DEVK903322
SELECTION-SCREEN SKIP 1.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT (20) text-013 FOR FIELD p_nodisp.
PARAMETERS p_nodisp TYPE c NO-DISPLAY.
SELECTION-SCREEN END OF LINE.
PARAMETERS p_werksl AS CHECKBOX DEFAULT 'X'.
PARAMETERS p_lgortl AS CHECKBOX DEFAULT 'X'.
PARAMETERS p_chargl AS CHECKBOX DEFAULT 'X'.
SELECTION-SCREEN END OF BLOCK b.
* A00001
SELECTION-SCREEN BEGIN OF BLOCK c WITH FRAME TITLE text-004.
parameters : p_cbexp type c as checkbox.
parameters : p_fname1 like rlgrap-filename MODIF ID MG2, " obligatory
p_fname2 like rlgrap-filename MODIF ID MG2. " obligatory
SELECTION-SCREEN END OF BLOCK c.
* Process on value request
AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_VARI.
PERFORM F4_FOR_VARIANT.
* A00001
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_fname1 .
perform F4_VALUE_FNAME1.
* PAI
AT SELECTION-SCREEN.
PERFORM PAI_OF_SELECTION_SCREEN.
perform check_file.
*AT SELECTION-SCREEN ON so_kunnr.
* PERFORM check_so_value USING con_sel-kunnr.
*
*AT SELECTION-SCREEN ON END OF so_kunnr.
* PERFORM check_so_value USING con_sel-kunnr.
*
*AT SELECTION-SCREEN ON so_fablt.
* PERFORM check_so_value USING con_sel-fablt.
*
*AT SELECTION-SCREEN ON END OF so_fablt.
* PERFORM check_so_value USING con_sel-fablt.
*
AT SELECTION-SCREEN ON so_iqa.
PERFORM check_so_value USING con_sel-iqa.
AT SELECTION-SCREEN ON END OF so_iqa.
PERFORM check_so_value USING con_sel-iqa.
* START OF DEVK903322
*AT SELECTION-SCREEN ON IC_CUST.
* PERFORM CHECK_SO_VALUE USING CON_SEL-KUNNR.
*
*AT SELECTION-SCREEN ON END OF IC_CUST.
* PERFORM CHECK_SO_VALUE USING CON_SEL-KUNNR.
*
*AT SELECTION-SCREEN ON IC_LOT.
* PERFORM CHECK_SO_VALUE USING CON_SEL-ICLOT.
*
*AT SELECTION-SCREEN ON END OF IC_LOT.
* PERFORM CHECK_SO_VALUE USING CON_SEL-ICLOT.
* END OF DEVK903322
AT SELECTION-SCREEN ON p_werksl.
IF p_werksl IS INITIAL.
IF p_lgortl = 'X'.
MESSAGE w899(mm)
WITH 'Stock at higher levels will also be displayed.'.
p_werksl = 'X'.
ENDIF.
ENDIF.
AT SELECTION-SCREEN ON p_lgortl.
IF p_lgortl IS INITIAL.
IF p_chargl = 'X'.
MESSAGE w899(mm)
WITH 'Stock at higher levels will also be displayed.'.
p_lgortl = 'X'.
ENDIF.
ENDIF.
*----------------------------------------------------------------------*
* Initialization *
*----------------------------------------------------------------------*
INITIALIZATION.
G_REPID = SY-REPID.
* Set Options: save variants userspecific or general
G_SAVE = 'A'.
PERFORM VARIANT_INIT.
* Get default variant
GX_VARIANT = G_VARIANT.
CALL FUNCTION 'REUSE_ALV_VARIANT_DEFAULT_GET'
EXPORTING
I_SAVE = G_SAVE
CHANGING
CS_VARIANT = GX_VARIANT
EXCEPTIONS
NOT_FOUND = 2.
IF SY-SUBRC = 0.
P_VARI = GX_VARIANT-VARIANT.
ENDIF.
*----------------------------------------------------------------------*
* Start of Selection *
*----------------------------------------------------------------------*
START-OF-SELECTION.
* IF p_matnrz IS INITIAL.
* IF SO_MATNR[] IS INITIAL and SO_LGORT[] IS INITIAL.
* MESSAGE s899(mm)
* WITH 'Please enter material and/or storage location!'.
* EXIT.
* ENDIF.
* insert code to fill ITAB here :)
PERFORM select_records.
IF P_NOMISS = 'X'.
DELETE ITAB WHERE BTREMARK = 'Missing'.
ENDIF.
IF P_NOEMPT = 'X'.
DELETE ITAB WHERE BTREMARK = 'Empty'.
ENDIF.
DELETE ITAB WHERE BTREMARK = 'Skip'.
END-OF-SELECTION.
DESCRIBE TABLE itab LINES lin.
WRITE lin TO l.
if p_cbexp = 'X'.
perform collect_dieinfo.
perform format_file.
if p_fname1 is initial.
perform download_serv.
else.
perform download_pc.
endif.
else.
PERFORM outputalv.
endif.
*******************************************************
*----------------------------------------------------------------------*
* Subroutine *
*----------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& Form initialization
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM initialization .
ENDFORM. " initialization
*&---------------------------------------------------------------------*
*& Form OutputALV
*&---------------------------------------------------------------------*
* Purpose: Set and display ALV grids
*----------------------------------------------------------------------*
FORM outputalv.
DATA: fieldcat TYPE slis_t_fieldcat_alv,
fc_str TYPE slis_fieldcat_alv,
layout TYPE slis_layout_alv,
title TYPE lvc_title,
repid LIKE sy-repid,
variant LIKE disvariant,
sort TYPE slis_t_sortinfo_alv,
sort_str TYPE slis_sortinfo_alv
.
repid = sy-repid.
layout-colwidth_optimize = 'X'.
* variant-report = repid.
* create dynamic table
PERFORM build-field-cat.
PERFORM create-data-table.
PERFORM fill-data-table.
title = sy-title.
* SORTING OPTIONS
sort_str-spos = 1.
sort_str-fieldname = 'MATNR'.
sort_str-up = 'X'.
sort_str-subtot = 'X'. " calc subtotals by this
IF p_werksl IS INITIAL.
sort_str-expa = 'X'. " collapse to subtotals
ENDIF.
APPEND sort_str TO sort.
sort_str-spos = 2.
sort_str-fieldname = 'WERKS'.
* sort_str-down = 'X'.
sort_str-up = 'X'.
sort_str-subtot = 'X'. " calc subtotals by this
IF p_lgortl IS INITIAL.
sort_str-expa = 'X'. " collapse to subtotals
ENDIF.
APPEND sort_str TO sort.
sort_str-spos = 3.
sort_str-fieldname = 'LGORT'.
sort_str-up = 'X'.
sort_str-subtot = 'X'. " calc subtotals by this
IF p_chargl IS INITIAL.
sort_str-expa = 'X'. " collapse to subtotals
ENDIF.
APPEND sort_str TO sort.
* display ALV
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_grid_title = title
it_fieldcat = fcat[] "REPLACED fieldcat
is_layout = layout
i_save = G_SAVE "'A'
is_variant = G_VARIANT "variant
it_sort = sort
* I_CALLBACK_PROGRAM = repid
* I_CALLBACK_USER_COMMAND = 'OUTPUTALV_DETAILS'
TABLES
t_outtab = <tab> "REPLACED itab
EXCEPTIONS
program_error = 1
OTHERS = 2
.
ENDFORM. "OutputALV
*******************************************************
*FORM OutputALV_Details USING in_ucomm LIKE sy-ucomm
* in_selfield TYPE SLIS_SELFIELD.
*
* get the info from line selected
* READ TABLE itab INDEX in_selfield-tabindex.
*
** REFRESH det_tab.
*
*
* SORT det_tab BY .
*
*ENDFORM.
*&---------------------------------------------------------------------*
*& Form select_records
*&---------------------------------------------------------------------*
* Purpose: Select records from tables by selection criteria
*----------------------------------------------------------------------*
* -->P_ATWRT text
*----------------------------------------------------------------------*
FORM select_records.
DATA: l_token TYPE c,
l_tabix LIKE sy-tabix.
data: xmatnr like mara-matnr.
* get table data
if so_matnr[] is initial.
if so_charg[] is initial.
SELECT * INTO CORRESPONDING FIELDS OF TABLE gt_main FROM mchb
WHERE werks IN so_werks
AND lgort IN so_lgort AND charg IN so_charg.
else.
SELECT * INTO CORRESPONDING FIELDS OF TABLE gt_main FROM mchb
WHERE werks IN so_werks AND charg IN so_charg
AND lgort IN so_lgort.
endif.
else.
SELECT * INTO CORRESPONDING FIELDS OF TABLE gt_main FROM mchb
WHERE matnr IN SO_matnr AND werks IN so_werks
AND lgort IN so_lgort AND charg IN so_charg.
endif.
* delete gt_main where
* sperc = 0 and clabs = 0 and
* cumlm = 0 and cinsm = 0 and
* ceinm = 0 and cspem = 0 and
* cretm = 0.
LOOP AT gt_main.
select single matnr into xmatnr from mara
where matnr = gt_main-matnr
and mtart in so_mtart
and matkl in so_matkl.
check sy-subrc = 0.
select single matnr into xmatnr from marc
where matnr = gt_main-matnr
and werks = gt_main-werks
and dispo in so_dispo.
check sy-subrc = 0.
SELECT SINGLE lwedt INTO gt_main-lwedt
FROM mcha WHERE matnr = gt_main-matnr AND werks = gt_main-werks
AND charg = gt_main-charg.
PERFORM check_batch_value USING l_token.
" START OF DEVK903322
* CHECK l_token IS INITIAL.
IF L_TOKEN = 'X'.
GT_MAIN-BTREMARK = 'Empty'.
ELSEIF L_TOKEN = 'Y'.
GT_MAIN-BTREMARK = 'Missing'.
ELSEIF L_TOKEN = 'Z'.
GT_MAIN-BTREMARK = 'Others'.
ELSEIF L_TOKEN = 'N'. "Characteristics not found
GT_MAIN-BTREMARK = 'Skip'.
ELSEIF L_TOKEN = ' '.
GT_MAIN-BTREMARK = 'OK'.
* EXIT. "DEVK903601
ENDIF.
check l_token = ' '.
" END OF DEVK903322
****************************************
clear atwrt1.
select single ausp~atwrt into (atwrt1)
from ausp join cabn on ausp~atinn = cabn~atinn
where objek = gt_main-matnr
and klart = '001'
and cabn~atnam = 'RM_SUP_DWG_NUM'.
itab-rm_dwg = atwrt1.
clear atwrt1.
select single ausp~atwrt into (atwrt1)
from ausp join cabn on ausp~atinn = cabn~atinn
where objek = gt_main-matnr
and klart = '001'
and cabn~atnam = 'RM_DRAWING_NO'.
*
* SELECT SINGLE * FROM AUSP WHERE OBJEK = BATAB-MATNR
* AND KLART = '001'
* AND ATINN = 'RM_DRAWING_NO'.
itab-rm_no = atwrt1.
****************************************
select single * from mcha where matnr = gt_main-matnr
and werks = gt_main-werks
and charg = gt_main-charg.
check mcha-licha in so_licha.
move: mcha-licha to itab-licha,
mcha-hsdat to itab-hsdat,
mcha-fvdt2 to itab-fvdt2.
select single * from mara where matnr = gt_main-matnr.
move: mara-meins to itab-meins,
mara-zeinr to itab-zeinr,
mara-zeivr to itab-zeivr.
MOVE-CORRESPONDING gt_main TO itab.
IF p_nozero = 'X'.
IF ( gt_main-clabs = 0 AND gt_main-cumlm = 0
AND gt_main-cinsm = 0 AND gt_main-ceinm = 0
AND gt_main-cspem = 0 AND gt_main-cretm = 0 ).
DELETE gt_bcldat
WHERE werks = gt_main-werks AND ( lgort = gt_main-lgort )
AND ( charg = gt_main-charg ).
CHECK p_nozero IS INITIAL.
ENDIF.
ENDIF.
IF p_ppincl = 'X'.
PERFORM pp_details USING gt_main-matnr gt_main-werks
gt_main-lgort gt_main-charg.
sort gt_mclass by posnr.
ELSE.
APPEND itab.
CLEAR itab.
ENDIF.
ENDLOOP.
SORT gt_bclass BY posnr.
LOOP AT gt_bclass.
l_tabix = sy-tabix.
READ TABLE gt_bcldat WITH KEY atinn = gt_bclass-atinn.
IF sy-subrc = 0.
gt_bclass-exist = 'X'.
MODIFY gt_bclass INDEX l_tabix TRANSPORTING exist.
ENDIF.
ENDLOOP.
ENDFORM. " select_records
*&---------------------------------------------------------------------*
*& Form check_so_value
*&---------------------------------------------------------------------*
* Purpose: check select-option whether it is within batches
*----------------------------------------------------------------------*
* -->P_ATWRT text
*----------------------------------------------------------------------*
FORM check_so_value USING p_atwrt.
DATA: l_count TYPE i.
DATA: lt_ausp LIKE ausp OCCURS 0 WITH HEADER LINE.
DATA: l_atwrt LIKE ausp-atwrt.
DATA: l_mesg(80) TYPE c.
DATA: lt_so LIKE bbpf4b OCCURS 0 WITH HEADER LINE.
CASE p_atwrt.
* WHEN con_sel-kunnr.
* LOOP AT so_kunnr.
* MOVE-CORRESPONDING so_kunnr TO lt_so.
* APPEND lt_so.
* CLEAR lt_so.
* ENDLOOP.
* PERFORM check_class_value TABLES lt_so
* USING con_char-cust.
*
* WHEN con_sel-fablt.
* LOOP AT so_fablt.
* MOVE-CORRESPONDING so_fablt TO lt_so.
* APPEND lt_so.
* CLEAR lt_so.
* ENDLOOP.
* PERFORM check_class_value TABLES lt_so
* USING con_char-fl.
* " START OF DEVK903322
* WHEN CON_SEL-ICLOT.
* LOOP AT IC_LOT.
* MOVE-CORRESPONDING IC_LOT TO LT_SO.
* APPEND LT_SO.
* CLEAR LT_SO.
* ENDLOOP.
* PERFORM CHECK_CLASS_VALUE TABLES LT_SO
* USING CON_CHAR-ICLOT.
* " END OF DEVK903322
WHEN con_sel-iqa.
LOOP AT so_iqa.
MOVE-CORRESPONDING so_iqa TO lt_so.
APPEND lt_so.
CLEAR lt_so.
ENDLOOP.
PERFORM check_class_value TABLES lt_so
USING con_char-iqa.
WHEN OTHERS.
ENDCASE.
ENDFORM. " check_so_value
*&---------------------------------------------------------------------*
*& Form get_charval
*&---------------------------------------------------------------------*
* Purpoase: Get characteristic values by characteristic
* name(p_char) and class(p_class), and store the values
* into table(p_ausp)
*----------------------------------------------------------------------*
* -->P_CHAR text
* -->P_CLASS text
* -->P_AUSP text
*----------------------------------------------------------------------*
FORM get_charval TABLES p_ausp
USING p_char LIKE cabn-atnam
p_class LIKE ausp-klart
p_charn LIKE cabnt-atbez.
SELECT SINGLE atinn INTO cabn-atinn FROM cabn
WHERE atnam = p_char.
SELECT SINGLE atbez INTO p_charn FROM cabnt
WHERE atinn = cabn-atinn.
SELECT * INTO TABLE p_ausp FROM ausp
WHERE atinn = cabn-atinn AND klart = p_class.
ENDFORM. " get_charval
*&---------------------------------------------------------------------*
*& Form check_class_value
*&---------------------------------------------------------------------*
* Purpose: Check classification values in select-options
*----------------------------------------------------------------------*
* -->P_SO text
*----------------------------------------------------------------------*
FORM check_class_value TABLES p_so STRUCTURE bbpf4b
USING p_char.
DATA: l_count TYPE i.
DATA: lt_ausp LIKE ausp OCCURS 0 WITH HEADER LINE.
DATA: l_atwrt LIKE ausp-atwrt.
DATA: l_mesg(80) TYPE c,
l_subrc LIKE sy-subrc.
DATA: l_desc LIKE cabnt-atbez.
DESCRIBE TABLE p_so LINES l_count.
IF l_count > 0.
PERFORM get_charval TABLES lt_ausp
USING p_char con_class-charg l_desc.
IF l_count = 1.
READ TABLE p_so INDEX 1.
* Single value
IF p_so-option = 'EQ'.
READ TABLE lt_ausp WITH KEY atwrt = p_so-low.
l_subrc = sy-subrc.
l_atwrt = p_so-low.
ENDIF.
* Multiple values check low and high
IF p_so-option = 'BT'.
READ TABLE lt_ausp WITH KEY atwrt = p_so-low.
IF sy-subrc = 0.
READ TABLE lt_ausp WITH KEY atwrt = p_so-high.
l_atwrt = p_so-high.
ELSE.
l_atwrt = p_so-low.
ENDIF.
l_subrc = sy-subrc.
ENDIF.
ELSE.
LOOP AT p_so.
* Single value
IF p_so-option = 'EQ'.
READ TABLE lt_ausp WITH KEY atwrt = p_so-low.
IF sy-subrc NE 0.
l_atwrt = p_so-low.
l_subrc = sy-subrc.
EXIT.
ENDIF.
ENDIF.
* Multiple values check low and high
IF p_so-option = 'BT'.
READ TABLE lt_ausp WITH KEY atwrt = p_so-low.
IF sy-subrc = 0.
READ TABLE lt_ausp WITH KEY atwrt = p_so-high.
IF sy-subrc NE 0.
l_atwrt = p_so-high.
l_subrc = sy-subrc.
EXIT.
ENDIF.
ELSE.
l_atwrt = p_so-low.
l_subrc = sy-subrc.
EXIT.
ENDIF.
ENDIF.
ENDLOOP.
ENDIF.
IF l_subrc NE 0.
CONCATENATE l_desc l_atwrt 'does not exist!!'
INTO l_mesg SEPARATED BY space.
MESSAGE e899(mm)
WITH l_mesg.
ENDIF.
ENDIF.
ENDFORM. " check_class_value
*&---------------------------------------------------------------------*
*& Form check_batch_value
*&---------------------------------------------------------------------*
* Purpose: Check batch value if it is chosen in select-options
*----------------------------------------------------------------------*
* -->P_TOKEN text
*----------------------------------------------------------------------*
FORM check_batch_value USING p_token.
DATA: l_check TYPE i.
DATA: l_count TYPE i.
DATA: lt_ausp LIKE ausp OCCURS 0.
DATA: lt_val LIKE api_vali OCCURS 0 WITH HEADER LINE,
lt_char LIKE api_char OCCURS 0 WITH HEADER LINE,
lt_att LIKE api_ch_att OCCURS 0 WITH HEADER LINE.
DATA: wa_val LIKE api_vali.
CLEAR p_token.
* READ TABLE gt_bclass INDEX 1.
* IF sy-subrc = 0.
* CALL FUNCTION 'QC01_BATCH_VALUES_READ'
* EXPORTING
* i_val_matnr = gt_main-matnr
* i_val_werks = gt_main-werks
* i_val_charge = gt_main-charg
* TABLES
* t_val_tab = lt_val
* EXCEPTIONS
* no_class = 1
* internal_error = 2
* no_values = 3
* no_chars = 4
* OTHERS = 5.
* ELSE.
CALL FUNCTION 'QC01_BATCH_VALUES_READ'
EXPORTING
i_val_matnr = gt_main-matnr
i_val_werks = gt_main-werks
i_val_charge = gt_main-charg
* I_LANGUAGE = SY-LANGU
* I_DATE = SY-DATUM
* IMPORTING
* E_CLASS =
* E_CLASS_TYPE =
TABLES
t_val_tab = lt_val
t_char_tab = lt_char
t_att_tab = lt_att
EXCEPTIONS
no_class = 1
internal_error = 2
no_values = 3
no_chars = 4
OTHERS = 5
.
* ENDIF.
IF sy-subrc = 0.
* get batch classification
LOOP AT lt_att.
read table gt_bclass with key atinn = lt_att-atinn.
if sy-subrc <> 0.
MOVE-CORRESPONDING lt_att TO gt_bclass.
APPEND gt_bclass.
endif.
ENDLOOP.
* DESCRIBE TABLE SO_FABLT LINES lin. "DEVK903601
* IF LIN > 0. "DEVK903601
* read table lt_val with key atnam = con_char-fl.
* if sy-subrc = 0.
* LOOP AT lt_val
* WHERE atnam = con_char-fl
* AND atwrt IN so_fablt.
* l_check = 1.
* CHECK l_check IS INITIAL.
* ENDLOOP.
* IF l_check IS INITIAL.
* p_token = 'N'.
* EXIT.
* ENDIF.
* endif.
* ENDIF. "DEVK903601
* CLEAR l_check.
* DESCRIBE TABLE SO_KUNNR LINES lin. "DEVK903601
* IF LIN > 0. "DEVK903601
* read table lt_val with key atnam = con_char-cust.
* if sy-subrc = 0.
* LOOP AT lt_val
* WHERE atnam = con_char-cust
* AND atwrt IN so_kunnr.
* l_check = 1.
* CHECK l_check IS INITIAL.
* ENDLOOP.
* IF l_check IS INITIAL.
* p_token = 'N'.
* EXIT.
* ENDIF.
* endif.
* ENDIF. "DEVK903601
* CLEAR l_check.
* "" START OF DEVK903322
* DESCRIBE TABLE IC_CUST LINES lin. "DEVK903601
* IF LIN > 0. "DEVK903601
* READ TABLE LT_VAL WITH KEY ATNAM = CON_CHAR-ICCUST.
* IF SY-SUBRC = 0.
* LOOP AT LT_VAL
* WHERE ATNAM = CON_CHAR-ICCUST
* AND ATWRT IN IC_CUST.
* L_CHECK = 1.
* CHECK L_CHECK IS INITIAL.
* ENDLOOP.
* IF L_CHECK IS INITIAL.
* P_TOKEN = 'N'.
* EXIT.
* ENDIF.
* ENDIF.
* ENDIF. "DEVK903601
* CLEAR l_check.
* DESCRIBE TABLE IC_LOT LINES lin. "DEVK903601
* IF LIN > 0. "DEVK903601
* READ TABLE LT_VAL WITH KEY ATNAM = CON_CHAR-ICLOT.
* IF SY-SUBRC = 0.
* LOOP AT LT_VAL
* WHERE ATNAM = CON_CHAR-ICLOT
* AND ATWRT IN IC_LOT.
* L_CHECK = 1.
* CHECK L_CHECK IS INITIAL.
* ENDLOOP.
* IF L_CHECK IS INITIAL.
* P_TOKEN = 'N'.
* EXIT.
* ENDIF.
* ENDIF.
* ENDIF. "DEVK903601
* "" END OF DEVK903322
DESCRIBE TABLE SO_iqa LINES lin. "DEVK903601
IF LIN > 0. "DEVK903601
read table lt_val with key atnam = con_char-iqa.
if sy-subrc = 0.
LOOP AT lt_val
WHERE atnam = con_char-iqa
AND atwrt IN so_iqa.
l_check = 1.
CHECK l_check IS INITIAL.
ENDLOOP.
IF l_check IS INITIAL.
p_token = 'N'.
EXIT.
ENDIF.
else.
p_token = 'N'.
EXIT.
endif.
ENDIF. "DEVK903601
LOOP AT lt_val.
MOVE-CORRESPONDING gt_main TO gt_bcldat.
MOVE-CORRESPONDING lt_val TO gt_bcldat.
APPEND gt_bcldat.
CLEAR gt_bcldat.
ENDLOOP.
ELSE.
IF SY-SUBRC = '3'. "Batch characteristics exist but empty
p_token = 'X'.
ELSEIF SY-SUBRC = '2'. "Batch characteristics does not exist
P_TOKEN = 'Y'.
ELSE.
P_TOKEN = 'Z'.
ENDIF.
ENDIF.
ENDFORM. " check_batch_value
*&---------------------------------------------------------------------*
*& Form pp_details
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_MATNR text
* -->P_WERKS text
* -->P_LGORT text
* -->P_CHARG text
*----------------------------------------------------------------------*
FORM pp_details USING p_matnr
p_werks
p_lgort
p_charg.
DATA: lt_class LIKE sclass OCCURS 0 WITH HEADER LINE,
lt_clobjdat LIKE clobjdat OCCURS 0 WITH HEADER LINE.
DATA: l_tname LIKE thead-tdname,
l_tdobj LIKE thead-tdobject.
DATA: lt_tline LIKE tline OCCURS 0 WITH HEADER LINE.
DATA: l_objek LIKE ausp-objek.
DATA: lt_features like KLMERKA occurs 0 with header line.
DATA: wa_tab like itab.
DATA: l_tdata(40).
DATA: l_token type i.
move-corresponding itab to wa_tab.
* get reservation details
SELECT * FROM resb
WHERE matnr = p_matnr AND werks = p_werks
AND charg = p_charg.
MOVE-CORRESPONDING WA_TAB TO ITAB.
MOVE: resb-xwaok TO itab-xwaok,
resb-kzear TO itab-kzear,
resb-bdter TO itab-bdter,
resb-bdmng TO itab-bdmng,
resb-enmng TO itab-enmng,
resb-aufnr TO itab-aufnr,
resb-baugr TO itab-baugr.
itab-osmng = resb-bdmng - resb-enmng.
* get device details, the material classification
SELECT SINGLE maktx INTO itab-maktx FROM makt
WHERE matnr = resb-baugr AND spras = sy-langu.
l_objek = resb-baugr.
CALL FUNCTION 'CLAF_CLASSIFICATION_OF_OBJECTS'
EXPORTING
classtype = '001' "con_class-matnr
object = l_objek
TABLES
t_class = lt_class
t_objectdata = lt_clobjdat
EXCEPTIONS
no_classification = 1
no_classtypes = 2
invalid_class_type = 3
OTHERS = 4.
IF sy-subrc = 0.
READ TABLE lt_class INDEX 1.
MOVE lt_class-class TO itab-class.
LOOP AT lt_clobjdat.
* check if a new characteristic exists
READ TABLE gt_mclass WITH KEY atnam = lt_clobjdat-atnam.
IF sy-subrc NE 0.
CALL FUNCTION 'CLME_FEATURE_ATTR_OF_CLASS'
EXPORTING
class = itab-class
classtype = '001' "con_class-matnr
tables
tfeatures = lt_features
EXCEPTIONS
CLASS_NOT_FOUND = 1
NO_AUTHORITY = 2
OTHERS = 3
.
IF sy-subrc = 0.
read table lt_features with key lt_clobjdat-atnam.
check sy-subrc = 0.
move lt_clobjdat-posnr to gt_mclass-posnr.
move-corresponding lt_features to gt_mclass.
append gt_mclass.
ENDIF.
ENDIF.
MOVE-CORRESPONDING gt_main TO gt_mcldat.
MOVE-CORRESPONDING lt_clobjdat TO gt_mcldat.
APPEND gt_mcldat.
ENDLOOP.
ENDIF.
* get order details
SELECT SINGLE aprio INTO itab-aprio FROM afko
WHERE aufnr = resb-aufnr.
SELECT SINGLE kdauf kdpos INTO (itab-kdauf,itab-kdpos) FROM aufk
WHERE aufnr = resb-aufnr.
* get sales order details
IF sy-subrc = 0.
SELECT SINGLE auart INTO itab-auart FROM vbak
WHERE vbeln = itab-kdauf.
SELECT SINGLE * FROM vbpa
WHERE vbeln = itab-kdauf AND posnr = itab-kdpos
AND parvw = c_billto.
IF sy-subrc = 0.
MOVE vbpa-kunnr TO itab-kunnr.
SELECT SINGLE name1 INTO itab-name1 FROM adrc
WHERE addrnumber = vbpa-adrnr.
ELSE.
SELECT SINGLE * FROM vbpa
WHERE vbeln = itab-kdauf AND parvw = c_billto.
MOVE vbpa-kunnr TO itab-kunnr.
SELECT SINGLE name1 INTO itab-name1 FROM adrc
WHERE addrnumber = vbpa-adrnr.
ENDIF.
SELECT SINGLE arktx kdmat lprio
INTO (itab-arktx,itab-kdmat,itab-lprio) FROM vbap
WHERE vbeln = itab-kdauf AND posnr = itab-kdpos.
SELECT SINGLE bstdk INTO itab-bstdk FROM vbkd
WHERE vbeln = itab-kdauf AND posnr = itab-kdpos.
CONCATENATE itab-kdauf itab-kdpos INTO l_tname.
l_tdobj = con_sotxt-itmobj.
CALL FUNCTION 'READ_TEXT'
EXPORTING
id = con_sotxt-itmid
language = sy-langu
name = l_tname
object = l_tdobj
TABLES
lines = lt_tline
EXCEPTIONS
id = 1
language = 2
name = 3
not_found = 4
object = 5
reference_check = 6
wrong_access_to_archive = 7
OTHERS = 8.
IF sy-subrc = 0.
loop at lt_tline.
l_tdata = lt_tline-tdline.
if itab-tdlin is initial.
itab-tdlin = l_tdata.
else.
concatenate itab-tdlin l_tdata into itab-tdlin
separated by '/'.
endif.
if sy-index = 5.
exit.
endif.
endloop.
* change for multiple texts 26.11.2003
* READ TABLE lt_tline INDEX 1.
* MOVE lt_tline-tdline TO itab-tdlin.
ENDIF.
ENDIF.
l_token = 1.
APPEND ITAB.
CLEAR ITAB.
ENDSELECT.
if l_token is initial.
APPEND ITAB.
CLEAR ITAB.
endif.
ENDFORM. " pp_details
*&---------------------------------------------------------------------*
*& Form BUILD-FIELD-CAT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM build-field-cat .
CLEAR g_idx.
PERFORM build-mm-fields.
PERFORM build-bcl-fields.
PERFORM build-pp-fields.
PERFORM build-mcl-fields.
ENDFORM. " BUILD-FIELD-CAT
*&---------------------------------------------------------------------*
*& Form BUILD-MM-FIELDS
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM build-mm-fields .
DATA: is_fieldcat LIKE LINE OF it_fieldcat,
wcat LIKE LINE OF fcat.
DO c_maxmm TIMES.
g_idx = g_idx + 1. "global index to track down the table col
is_fieldcat-col_pos = g_idx.
CASE sy-index.
WHEN 01.
is_fieldcat-fieldname = 'MATNR'.
is_fieldcat-ref_field = 'MATNR'.
is_fieldcat-ref_table = 'MCHB'.
WHEN 02.
is_fieldcat-fieldname = 'WERKS'.
is_fieldcat-ref_field = 'WERKS'.
is_fieldcat-ref_table = 'MCHB'.
WHEN 03.
is_fieldcat-fieldname = 'LGORT'.
is_fieldcat-ref_field = 'LGORT'.
is_fieldcat-ref_table = 'MCHB'.
WHEN 04.
is_fieldcat-fieldname = 'CHARG'.
is_fieldcat-ref_field = 'CHARG'.
is_fieldcat-ref_table = 'MCHB'.
" START OF DEVK903322
WHEN 05.
IS_FIELDCAT-FIELDNAME = 'BTREMARK'.
IS_FIELDCAT-REF_FIELD = ''.
IS_FIELDCAT-REF_TABLE = ''.
" END OF DEVK903322
*start 001
is_fieldcat-inttype = 'C'.
is_fieldcat-intlen = 20.
is_fieldcat-scrtext_l = 'BTREMARK'.
is_fieldcat-scrtext_s = 'BTREMARK'.
is_fieldcat-seltext = is_fieldcat-scrtext_l .
wcat-seltext_l = is_fieldcat-scrtext_l.
wcat-seltext_s = is_fieldcat-scrtext_s.
*end 001
WHEN 06.
is_fieldcat-fieldname = 'ERNAM'.
is_fieldcat-ref_field = 'ERNAM'.
is_fieldcat-ref_table = 'MCHB'.
WHEN 07.
is_fieldcat-fieldname = 'AENAM'.
is_fieldcat-ref_field = 'AENAM'.
is_fieldcat-ref_table = 'MCHB'.
WHEN 08.
is_fieldcat-fieldname = 'SPERC'.
is_fieldcat-ref_field = 'SPERC'.
is_fieldcat-ref_table = 'MCHB'.
WHEN 09.
is_fieldcat-fieldname = 'CLABS'.
is_fieldcat-ref_field = 'CLABS'.
is_fieldcat-ref_table = 'MCHB'.
wcat-do_sum = 'X'.
WHEN 10.
is_fieldcat-fieldname = 'CUMLM'.
is_fieldcat-ref_field = 'CUMLM'.
is_fieldcat-ref_table = 'MCHB'.
wcat-do_sum = 'X'.
WHEN 11.
is_fieldcat-fieldname = 'CINSM'.
is_fieldcat-ref_field = 'CINSM'.
is_fieldcat-ref_table = 'MCHB'.
wcat-do_sum = 'X'.
WHEN 12.
is_fieldcat-fieldname = 'CEINM'.
is_fieldcat-ref_field = 'CEINM'.
is_fieldcat-ref_table = 'MCHB'.
wcat-do_sum = 'X'.
WHEN 13.
is_fieldcat-fieldname = 'CSPEM'.
is_fieldcat-ref_field = 'CSPEM'.
is_fieldcat-ref_table = 'MCHB'.
wcat-do_sum = 'X'.
WHEN 14.
is_fieldcat-fieldname = 'CRETM'.
is_fieldcat-ref_field = 'CRETM'.
is_fieldcat-ref_table = 'MCHB'.
wcat-do_sum = 'X'.
WHEN 15.
is_fieldcat-fieldname = 'LWEDT'.
is_fieldcat-ref_field = 'LWEDT'.
is_fieldcat-ref_table = 'MCHA'.
WHEN 16.
is_fieldcat-fieldname = 'MEINS'.
is_fieldcat-ref_field = 'MEINS'.
is_fieldcat-ref_table = 'MARA'.
WHEN 17.
is_fieldcat-fieldname = 'ZEINR'.
is_fieldcat-ref_field = 'ZEINR'.
is_fieldcat-ref_table = 'MARA'.
WHEN 18.
is_fieldcat-fieldname = 'ZEIVR'.
is_fieldcat-ref_field = 'ZEIVR'.
is_fieldcat-ref_table = 'MARA'.
WHEN 19.
is_fieldcat-fieldname = 'LICHA'.
is_fieldcat-ref_field = 'LICHA'.
is_fieldcat-ref_table = 'MCHA'.
WHEN 20.
is_fieldcat-fieldname = 'HSDAT'.
is_fieldcat-ref_field = 'HSDAT'.
is_fieldcat-ref_table = 'MCHA'.
WHEN 21.
is_fieldcat-fieldname = 'FVDT2'.
is_fieldcat-ref_field = 'FVDT2'.
is_fieldcat-ref_table = 'MCHA'.
WHEN 22.
is_fieldcat-fieldname = 'RM_DWG'.
* is_fieldcat-ref_field = 'ATWRT'.
* is_fieldcat-ref_table = 'AUSP'.
is_fieldcat-inttype = 'C'.
is_fieldcat-intlen = 30.
is_fieldcat-scrtext_l = 'Supplier Drawing NO'.
is_fieldcat-scrtext_s = 'Supplier Drawing NO'.
is_fieldcat-seltext = is_fieldcat-scrtext_l .
wcat-seltext_l = is_fieldcat-scrtext_l.
wcat-seltext_s = is_fieldcat-scrtext_s.
WHEN 23.
is_fieldcat-fieldname = 'RM_NO'.
* is_fieldcat-ref_field = 'ATWRT'.
* is_fieldcat-ref_table = 'AUSP'.
is_fieldcat-inttype = 'C'.
is_fieldcat-intlen = 30.
is_fieldcat-scrtext_l = 'Asat Drawing NO'.
is_fieldcat-scrtext_s = 'Asat Drawing NO'.
is_fieldcat-seltext = is_fieldcat-scrtext_l .
wcat-seltext_l = is_fieldcat-scrtext_l.
wcat-seltext_s = is_fieldcat-scrtext_s.
ENDCASE.
APPEND is_fieldcat TO it_fieldcat.
* field catalog for alv grid
wcat-col_pos = is_fieldcat-col_pos.
wcat-fieldname = is_fieldcat-fieldname.
wcat-ref_tabname = is_fieldcat-ref_table.
wcat-ref_fieldname = is_fieldcat-ref_field.
APPEND wcat TO fcat.
CLEAR: is_fieldcat, wcat.
ENDDO.
ENDFORM. " BUILD-MM-FIELDS
*&---------------------------------------------------------------------*
*& Form BUILD-PP-FIELDS
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM build-pp-fields .
DATA: is_fieldcat LIKE LINE OF it_fieldcat,
wcat LIKE LINE OF fcat.
DO 21 TIMES.
g_idx = g_idx + 1. "global index to track down the table col
is_fieldcat-col_pos = g_idx.
CASE sy-index.
WHEN 1.
is_fieldcat-fieldname = 'XWAOK'.
is_fieldcat-ref_field = 'XWAOK'.
is_fieldcat-ref_table = 'RESB'.
WHEN 2.
is_fieldcat-fieldname = 'KZEAR'.
is_fieldcat-ref_field = 'KZEAR'.
is_fieldcat-ref_table = 'RESB'.
WHEN 3.
is_fieldcat-fieldname = 'BDTER'.
is_fieldcat-ref_field = 'BDTER'.
is_fieldcat-ref_table = 'RESB'.
WHEN 4.
is_fieldcat-fieldname = 'BDMNG'.
is_fieldcat-ref_field = 'BDMNG'.
is_fieldcat-ref_table = 'RESB'.
WHEN 5.
is_fieldcat-fieldname = 'ENMNG'.
is_fieldcat-ref_field = 'ENMNG'.
is_fieldcat-ref_table = 'RESB'.
WHEN 6.
is_fieldcat-fieldname = 'OSMNG'.
is_fieldcat-ref_field = 'ENMNG'.
is_fieldcat-ref_table = 'RESB'.
is_fieldcat-scrtext_l = 'Outstanding Reqmt Quantity'.
is_fieldcat-scrtext_s = 'OS Req. Qty'.
wcat-seltext_l = is_fieldcat-scrtext_l.
wcat-seltext_s = is_fieldcat-scrtext_s.
WHEN 7.
is_fieldcat-fieldname = 'AUFNR'.
is_fieldcat-ref_field = 'AUFNR'.
is_fieldcat-ref_table = 'RESB'.
WHEN 8.
is_fieldcat-fieldname = 'KDAUF'.
is_fieldcat-ref_field = 'KDAUF'.
is_fieldcat-ref_table = 'AUFK'.
WHEN 9.
is_fieldcat-fieldname = 'KDPOS'.
is_fieldcat-ref_field = 'KDPOS'.
is_fieldcat-ref_table = 'AUFK'.
WHEN 10.
is_fieldcat-fieldname = 'APRIO'.
is_fieldcat-ref_field = 'APRIO'.
is_fieldcat-ref_table = 'AFKO'.
WHEN 11.
is_fieldcat-fieldname = 'AUART'.
is_fieldcat-ref_field = 'AUART'.
is_fieldcat-ref_table = 'VBAK'.
WHEN 12.
is_fieldcat-fieldname = 'KUNNR'.
is_fieldcat-ref_field = 'KUNNR'.
is_fieldcat-ref_table = 'VBPA'.
WHEN 13.
is_fieldcat-fieldname = 'NAME1'.
is_fieldcat-ref_field = 'NAME1'.
is_fieldcat-ref_table = 'ADRC'.
WHEN 14.
is_fieldcat-fieldname = 'ARKTX'.
is_fieldcat-ref_field = 'ARKTX'.
is_fieldcat-ref_table = 'VBAP'.
WHEN 15.
is_fieldcat-fieldname = 'KDMAT'.
is_fieldcat-ref_field = 'KDMAT'.
is_fieldcat-ref_table = 'VBAP'.
WHEN 16.
is_fieldcat-fieldname = 'TDLIN'.
is_fieldcat-inttype = 'C'.
is_fieldcat-intlen = '210'.
is_fieldcat-scrtext_l = 'Fabrication Lot No'.
is_fieldcat-scrtext_s = 'Fab Lot#'.
wcat-seltext_l = is_fieldcat-scrtext_l.
wcat-seltext_s = is_fieldcat-scrtext_s.
WHEN 17.
is_fieldcat-fieldname = 'LPRIO'.
is_fieldcat-ref_field = 'LPRIO'.
is_fieldcat-ref_table = 'VBAP'.
WHEN 18.
is_fieldcat-fieldname = 'BSTDK'.
is_fieldcat-ref_field = 'BSTDK'.
is_fieldcat-ref_table = 'VBKD'.
WHEN 19.
is_fieldcat-fieldname = 'BAUGR'.
is_fieldcat-ref_field = 'BAUGR'.
is_fieldcat-ref_table = 'RESB'.
WHEN 20.
is_fieldcat-fieldname = 'MAKTX'.
is_fieldcat-ref_field = 'MAKTX'.
is_fieldcat-ref_table = 'MAKT'.
WHEN 21.
is_fieldcat-fieldname = 'CLASS'.
is_fieldcat-ref_field = 'CLASS'.
is_fieldcat-ref_table = 'SCLASS'.
ENDCASE.
APPEND is_fieldcat TO it_fieldcat.
* field catalog for alv grid
IF p_ppincl IS INITIAL.
wcat-no_out = 'X'.
ENDIF.
wcat-col_pos = is_fieldcat-col_pos.
wcat-fieldname = is_fieldcat-fieldname.
wcat-ref_tabname = is_fieldcat-ref_table.
wcat-ref_fieldname = is_fieldcat-ref_field.
APPEND wcat TO fcat.
CLEAR: is_fieldcat, wcat.
ENDDO.
ENDFORM. " BUILD-PP-FIELDS
*&---------------------------------------------------------------------*
*& Form CREATE-DATA-TABLE
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM create-data-table .
DATA: new_table TYPE REF TO data,
new_line TYPE REF TO data.
CALL METHOD cl_alv_table_create=>create_dynamic_table
EXPORTING
it_fieldcatalog = it_fieldcat
IMPORTING
ep_table = new_table.
ASSIGN new_table->* TO <tab>.
CREATE DATA new_line LIKE LINE OF <tab>.
ASSIGN new_line->* TO <wa>.
ENDFORM. " CREATE-DATA-TABLE
*&---------------------------------------------------------------------*
*& Form FILL-DATA-TABLE
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM fill-data-table .
FIELD-SYMBOLS: <fs_field> TYPE ANY.
DATA: l_idx(3) TYPE n,
l_field(8).
CLEAR <wa>.
LOOP AT itab.
* Fill MM details
ASSIGN COMPONENT 'MATNR' OF STRUCTURE <wa> TO <f>.
<f> = itab-matnr.
ASSIGN COMPONENT 'WERKS' OF STRUCTURE <wa> TO <f>.
<f> = itab-werks.
ASSIGN COMPONENT 'LGORT' OF STRUCTURE <wa> TO <f>.
<f> = itab-lgort.
ASSIGN COMPONENT 'CHARG' OF STRUCTURE <wa> TO <f>.
<f> = itab-charg.
" START OF DEVK903322
ASSIGN COMPONENT 'BTREMARK' OF STRUCTURE <WA> TO <F>.
<F> = ITAB-BTREMARK.
" END OF DEVK903322
ASSIGN COMPONENT 'ERNAM' OF STRUCTURE <wa> TO <f>.
<f> = itab-ernam.
ASSIGN COMPONENT 'AENAM' OF STRUCTURE <wa> TO <f>.
<f> = itab-aenam.
ASSIGN COMPONENT 'SPERC' OF STRUCTURE <wa> TO <f>.
<f> = itab-sperc.
ASSIGN COMPONENT 'CLABS' OF STRUCTURE <wa> TO <f>.
<f> = itab-clabs.
ASSIGN COMPONENT 'CUMLM' OF STRUCTURE <wa> TO <f>.
<f> = itab-cumlm.
ASSIGN COMPONENT 'CINSM' OF STRUCTURE <wa> TO <f>.
<f> = itab-cinsm.
ASSIGN COMPONENT 'CEINM' OF STRUCTURE <wa> TO <f>.
<f> = itab-ceinm.
ASSIGN COMPONENT 'CSPEM' OF STRUCTURE <wa> TO <f>.
<f> = itab-cspem.
ASSIGN COMPONENT 'CRETM' OF STRUCTURE <wa> TO <f>.
<f> = itab-cretm.
ASSIGN COMPONENT 'LWEDT' OF STRUCTURE <wa> TO <f>.
<f> = itab-lwedt.
ASSIGN COMPONENT 'MEINS' OF STRUCTURE <wa> TO <f>.
<f> = itab-meins.
ASSIGN COMPONENT 'ZEINR' OF STRUCTURE <wa> TO <f>.
<f> = itab-zeinr.
ASSIGN COMPONENT 'ZEIVR' OF STRUCTURE <wa> TO <f>.
<f> = itab-zeivr.
ASSIGN COMPONENT 'LICHA' OF STRUCTURE <wa> TO <f>.
<f> = itab-licha.
ASSIGN COMPONENT 'HSDAT' OF STRUCTURE <wa> TO <f>.
<f> = itab-hsdat.
ASSIGN COMPONENT 'FVDT2' OF STRUCTURE <wa> TO <f>.
<f> = itab-fvdt2.
****************************************************
ASSIGN COMPONENT 'RM_DWG' OF STRUCTURE <wa> TO <f>.
<f> = itab-RM_DWG.
ASSIGN COMPONENT 'RM_NO' OF STRUCTURE <wa> TO <f>.
<f> = itab-RM_NO.
******************************************************
* Fill batch classification details
LOOP AT gt_bclass.
l_idx = sy-tabix.
CONCATENATE c_bcl l_idx INTO l_field.
ASSIGN COMPONENT l_field OF STRUCTURE <wa> TO <f>.
READ TABLE gt_bcldat WITH KEY werks = itab-werks
lgort = itab-lgort charg = itab-charg atinn = gt_bclass-atinn.
IF sy-subrc = 0.
if gt_bclass-dtype = 'NUM'.
<f> = gt_bcldat-atflv.
else.
<f> = gt_bcldat-atwrt.
endif.
ENDIF.
ENDLOOP.
* Fill PP details
ASSIGN COMPONENT 'XWAOK' OF STRUCTURE <wa> TO <f>.
<f> = itab-xwaok.
ASSIGN COMPONENT 'KZEAR' OF STRUCTURE <wa> TO <f>.
<f> = itab-kzear.
ASSIGN COMPONENT 'KZEAR' OF STRUCTURE <wa> TO <f>.
<f> = itab-kzear.
ASSIGN COMPONENT 'BDTER' OF STRUCTURE <wa> TO <f>.
<f> = itab-bdter.
ASSIGN COMPONENT 'BDMNG' OF STRUCTURE <wa> TO <f>.
<f> = itab-bdmng.
ASSIGN COMPONENT 'ENMNG' OF STRUCTURE <wa> TO <f>.
<f> = itab-enmng.
ASSIGN COMPONENT 'OSMNG' OF STRUCTURE <wa> TO <f>.
<f> = itab-osmng.
ASSIGN COMPONENT 'AUFNR' OF STRUCTURE <wa> TO <f>.
<f> = itab-aufnr.
ASSIGN COMPONENT 'BAUGR' OF STRUCTURE <wa> TO <f>.
<f> = itab-baugr.
ASSIGN COMPONENT 'MAKTX' OF STRUCTURE <wa> TO <f>.
<f> = itab-maktx.
ASSIGN COMPONENT 'CLASS' OF STRUCTURE <wa> TO <f>.
<f> = itab-class.
ASSIGN COMPONENT 'KDAUF' OF STRUCTURE <wa> TO <f>.
<f> = itab-kdauf.
ASSIGN COMPONENT 'KDPOS' OF STRUCTURE <wa> TO <f>.
<f> = itab-kdpos.
ASSIGN COMPONENT 'APRIO' OF STRUCTURE <wa> TO <f>.
<f> = itab-aprio.
ASSIGN COMPONENT 'AUART' OF STRUCTURE <wa> TO <f>.
<f> = itab-auart.
ASSIGN COMPONENT 'KUNNR' OF STRUCTURE <wa> TO <f>.
<f> = itab-kunnr.
ASSIGN COMPONENT 'NAME1' OF STRUCTURE <wa> TO <f>.
<f> = itab-name1.
ASSIGN COMPONENT 'ARKTX' OF STRUCTURE <wa> TO <f>.
<f> = itab-arktx.
ASSIGN COMPONENT 'KDMAT' OF STRUCTURE <wa> TO <f>.
<f> = itab-kdmat.
ASSIGN COMPONENT 'TDLIN' OF STRUCTURE <wa> TO <f>.
<f> = itab-tdlin.
ASSIGN COMPONENT 'LPRIO' OF STRUCTURE <wa> TO <f>.
<f> = itab-lprio.
ASSIGN COMPONENT 'BSTDK' OF STRUCTURE <wa> TO <f>.
<f> = itab-bstdk.
* Fill material classification details
LOOP AT gt_mclass.
l_idx = sy-tabix.
CONCATENATE c_mcl l_idx INTO l_field.
ASSIGN COMPONENT l_field OF STRUCTURE <wa> TO <f>.
READ TABLE gt_mcldat WITH KEY werks = itab-werks
lgort = itab-lgort charg = itab-charg atnam = gt_mclass-atnam.
IF sy-subrc = 0.
if gt_mclass-atfor = 'NUM'.
<f> = gt_mcldat-atflv.
else.
<f> = gt_mcldat-ausp1.
endif.
ENDIF.
ENDLOOP.
APPEND <wa> TO <tab>.
CLEAR <wa>.
ENDLOOP.
ENDFORM. " FILL-DATA-TABLE
*&---------------------------------------------------------------------*
*& Form BUILD-BCL-FIELDS
*&---------------------------------------------------------------------*
* Purpose: Builds up the field structure for batch classification
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM build-bcl-fields .
DATA: is_fieldcat LIKE LINE OF it_fieldcat,
wcat LIKE LINE OF fcat.
* l_index(3) TYPE n.
LOOP AT gt_bclass.
g_idx = g_idx + 1. "global index to track down the table col
is_fieldcat-col_pos = g_idx.
* generic field name
CONCATENATE c_bcl gt_bclass-posnr INTO is_fieldcat-fieldname.
* field formats
if gt_bclass-dtype = 'NUM'.
is_fieldcat-inttype = 'P'.
move: gt_bclass-atsch to is_fieldcat-EDIT_MASK,
gt_bclass-anzdz to is_fieldcat-DECIMALS,
gt_bclass-msehi to is_fieldcat-QUANTITY,
is_fieldcat-fieldname to is_fieldcat-DECMLFIELD.
* check if field is quantity
find 'qty' in gt_bclass-atnam ignoring case.
if sy-subrc = 0.
wcat-do_sum = 'X'.
endif.
else.
is_fieldcat-inttype = 'C'.
is_fieldcat-intlen = '30'.
endif.
is_fieldcat-seltext = gt_bclass-atbez.
APPEND is_fieldcat TO it_fieldcat.
* field catalog for alv grid
IF gt_bclass-exist IS INITIAL.
wcat-no_out = 'X'.
ENDIF.
wcat-col_pos = is_fieldcat-col_pos.
wcat-fieldname = is_fieldcat-fieldname.
wcat-seltext_l = is_fieldcat-seltext.
APPEND wcat TO fcat.
CLEAR: is_fieldcat, wcat.
ENDLOOP.
ENDFORM. " BUILD-BCL-FIELDS
*&---------------------------------------------------------------------*
*& Form BUILD-MCL-FIELDS
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM build-mcl-fields .
DATA: is_fieldcat LIKE LINE OF it_fieldcat,
l_idx(3) type n,
wcat LIKE LINE OF fcat.
LOOP AT gt_mclass.
g_idx = g_idx + 1. "global index to track down the table col
is_fieldcat-col_pos = g_idx.
* generic field name
* CONCATENATE c_mcl gt_mclass-posnr INTO is_fieldcat-fieldname.
l_idx = sy-tabix.
CONCATENATE c_mcl l_idx INTO is_fieldcat-fieldname.
* field formats
if gt_mclass-atfor = 'NUM'.
is_fieldcat-inttype = 'P'.
move: gt_mclass-atsch to is_fieldcat-EDIT_MASK,
gt_mclass-anzdz to is_fieldcat-DECIMALS,
gt_mclass-dimen(3) to is_fieldcat-QUANTITY,
is_fieldcat-fieldname to is_fieldcat-DECMLFIELD.
* check if field is quantity
find 'qty' in gt_mclass-atnam ignoring case.
if sy-subrc = 0.
wcat-do_sum = 'X'.
endif.
else.
is_fieldcat-inttype = 'C'.
is_fieldcat-intlen = '30'.
endif.
is_fieldcat-seltext = gt_mclass-atbez.
APPEND is_fieldcat TO it_fieldcat.
* field catalog for alv grid
IF p_ppincl IS INITIAL.
wcat-no_out = 'X'.
ENDIF.
wcat-col_pos = is_fieldcat-col_pos.
wcat-fieldname = is_fieldcat-fieldname.
wcat-seltext_l = is_fieldcat-seltext.
APPEND wcat TO fcat.
CLEAR: is_fieldcat, wcat.
ENDLOOP.
ENDFORM. " BUILD-MCL-FIELDS
*&---------------------------------------------------------------------*
*& Form VARIANT_INIT
*&---------------------------------------------------------------------*
* Purpose: Initialize variants
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
form VARIANT_INIT .
CLEAR G_VARIANT.
G_VARIANT-REPORT = G_REPID.
endform. " VARIANT_INIT
*&---------------------------------------------------------------------*
*& Form F4_FOR_VARIANT
*&---------------------------------------------------------------------*
* Purpose: Search variants request
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
form F4_FOR_VARIANT .
*
CALL FUNCTION 'REUSE_ALV_VARIANT_F4'
EXPORTING
IS_VARIANT = G_VARIANT
I_SAVE = G_SAVE
* it_default_fieldcat =
IMPORTING
E_EXIT = G_EXIT
ES_VARIANT = GX_VARIANT
EXCEPTIONS
NOT_FOUND = 2.
IF SY-SUBRC = 2.
MESSAGE ID SY-MSGID TYPE 'S' NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ELSE.
IF G_EXIT = SPACE.
P_VARI = GX_VARIANT-VARIANT.
ENDIF.
ENDIF.
endform. " F4_FOR_VARIANT
*&---------------------------------------------------------------------*
*& Form PAI_OF_SELECTION_SCREEN
*&---------------------------------------------------------------------*
* Purpose: Check selection values
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
form PAI_OF_SELECTION_SCREEN .
*
IF NOT P_VARI IS INITIAL.
MOVE G_VARIANT TO GX_VARIANT.
MOVE P_VARI TO GX_VARIANT-VARIANT.
CALL FUNCTION 'REUSE_ALV_VARIANT_EXISTENCE'
EXPORTING
I_SAVE = G_SAVE
CHANGING
CS_VARIANT = GX_VARIANT.
G_VARIANT = GX_VARIANT.
ELSE.
PERFORM VARIANT_INIT.
ENDIF.
endform. " PAI_OF_SELECTION_SCREEN
*&---------------------------------------------------------------------*
*& Form F4_VALUE_FNAME1
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
form F4_VALUE_FNAME1 .
DATA: l_path LIKE dxfields-longpath , "NAD_50A
l_abend_flag LIKE dxfields-abendflag. "NAD_50A
l_path = p_fname1.
CALL FUNCTION 'F4_DXFILENAME_TOPRECURSION'
EXPORTING
i_location_flag = 'P'
i_server = ' '
i_path = l_path
IMPORTING
o_path = l_path
abend_flag = l_abend_flag
EXCEPTIONS
communication_failure = 1
system_failure = 2
rfc_error = 3.
IF sy-subrc EQ 0.
p_fname1 = l_path.
ENDIF.
endform. " F4_VALUE_FNAME1
*&---------------------------------------------------------------------*
*& Form check_file
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
form check_file .
if p_fname1 ne space.
if p_fname2 ne space.
message e001 with ' Please enter either PC files or server files'.
endif.
endif.
endform. " check_file
*&---------------------------------------------------------------------*
*& Form collect_dieinfo
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
form collect_dieinfo .
data: begin of lt_kna1 occurs 0,
kunnr like kna1-kunnr,
name1 like kna1-kunnr,
end of lt_kna1.
select * into corresponding fields of table lt_kna1 from kna1.
loop at itab
* M000001
where lgort ne 'DWIP'.
gt_exp-werks = itab-werks.
gt_exp-lgort = itab-lgort.
gt_exp-charg = itab-charg.
gt_exp-clabs = itab-clabs.
gt_exp-lwedt = itab-lwedt.
LOOP AT gt_bclass.
READ TABLE gt_bcldat WITH KEY werks = itab-werks
lgort = itab-lgort charg = itab-charg atinn = gt_bclass-atinn.
IF sy-subrc = 0.
case gt_bclass-atnam.
* when 'DB_CUSTOMER'.
* gt_exp-kunnr = gt_bcldat-atwrt.
*
* when 'DB_FL'.
* gt_exp-fablt = gt_bcldat-atwrt.
*
* when 'DB_WQTY'.
* gt_exp-wqty = gt_bcldat-atwrt.
*
* when 'DB_DQTY'.
* gt_exp-dqty = gt_bcldat-atwrt.
when 'MM_IQA_STATUS'.
gt_exp-iqa = gt_bcldat-atwrt.
when others.
endcase.
ENDIF.
ENDLOOP.
* if gt_exp-kunnr is initial.
* if not so_kunnr is initial.
* clear gt_exp.
* continue.
* endif.
* else.
* read table lt_kna1 with key kunnr = gt_exp-kunnr.
* gt_exp-name1 = lt_kna1-name1.
* endif.
append gt_exp.
clear gt_exp.
endloop.
endform. " collect_dieinfo
*&---------------------------------------------------------------------*
*& Form format_file
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
form format_file .
data: l_grdate(10).
* M000001
* concatenate 'Plant' 'SLoc' 'Received Date' 'Batch' 'Customer#'
* 'Customer' 'Fab lot no.' 'Wafer Qty' 'Received Qty'
* 'Current Qty' 'Remark' into xtab1 separated by ','.
concatenate 'Plant' 'SLoc' 'Received Date' 'Batch' 'Customer#'
'Customer' 'Fab lot no.' 'Wafer Qty' 'Received Qty'
'Current Qty' into xtab1 separated by ','.
append xtab1.
clear xtab1.
loop at gt_exp.
if not gt_exp-lwedt is initial.
concatenate gt_exp-lwedt+4(2) gt_exp-lwedt+6(2) gt_exp-lwedt(4)
into l_grdate separated by '/'.
endif.
concatenate '"' gt_exp-werks '"' ','
'"' gt_exp-lgort '"' ','
'"' l_grdate '"' ','
'"' gt_exp-charg '"' ','
'"' gt_exp-iqa '"' ','
* '"' gt_exp-kunnr '"' ','
* '"' gt_exp-name1 '"' ','
* '"' gt_exp-fablt '"' ','
* '"' gt_exp-wqty '"' ','
* '"' gt_exp-dqty '"' ','
'"' gt_exp-clabs '"'
into xtab1.
append xtab1.
clear: xtab1, l_grdate.
endloop.
endform. " format_file
*&---------------------------------------------------------------------*
*& Form download_serv
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
form download_serv .
if p_fname2 ne space.
OPEN DATASET p_fname2 FOR OUTPUT IN TEXT MODE ENCODING DEFAULT.
IF sy-subrc = 0.
loop at xtab1.
transfer xtab1 to p_fname2." length 195.
endloop.
CLOSE DATASET p_fname2.
WRITE:/ 'Template is output to', p_fname2.
ELSE.
WRITE:/ 'Error File open error!'.
ENDIF.
endif.
endform. " download_serv
*&---------------------------------------------------------------------*
*& Form download_pc
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
form download_pc .
data : l_fname type STRING.
if p_fname1 ne space.
l_fname = p_fname1.
CALL FUNCTION 'GUI_DOWNLOAD'
EXPORTING
* BIN_FILESIZE =
FILENAME = l_fname
FILETYPE = 'ASC'
* APPEND = ' '
* WRITE_FIELD_SEPARATOR = ' '
* HEADER = '00'
* TRUNC_TRAILING_BLANKS = ' '
* WRITE_LF = 'X'
* COL_SELECT = ' '
* COL_SELECT_MASK = ' '
* DAT_MODE = ' '
* CONFIRM_OVERWRITE = ' '
* NO_AUTH_CHECK = ' '
* CODEPAGE = ' '
* IGNORE_CERR = ABAP_TRUE
* REPLACEMENT = '#'
* WRITE_BOM = ' '
* IMPORTING
* FILELENGTH =
TABLES
DATA_TAB = xtab1[]
* EXCEPTIONS
* FILE_WRITE_ERROR = 1
* NO_BATCH = 2
* GUI_REFUSE_FILETRANSFER = 3
* INVALID_TYPE = 4
* NO_AUTHORITY = 5
* UNKNOWN_ERROR = 6
* HEADER_NOT_ALLOWED = 7
* SEPARATOR_NOT_ALLOWED = 8
* FILESIZE_NOT_ALLOWED = 9
* HEADER_TOO_LONG = 10
* DP_ERROR_CREATE = 11
* DP_ERROR_SEND = 12
* DP_ERROR_WRITE = 13
* UNKNOWN_DP_ERROR = 14
* ACCESS_DENIED = 15
* DP_OUT_OF_MEMORY = 16
* DISK_FULL = 17
* DP_TIMEOUT = 18
* FILE_NOT_FOUND = 19
* DATAPROVIDER_EXCEPTION = 20
* CONTROL_FLUSH_ERROR = 21
* OTHERS = 22
.
IF SY-SUBRC = 0.
WRITE:/ 'File is output to', l_fname.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
endif.
endform. " download_pc