2005 Dec 27 2:03 PM
Hi,
I am doing ALV interactive report, i wrote the code but not sure whether it is correct or not and couldnt check as there is no data available. Can any one tell me whether this is correct or not.
In the Form User command, is it necessary to mention s_selfield-tabname = 'I_FINAL' or not. If i need to make any changes please let me know.
When the transaction MD04 is called I want to the pass the matnr and the werks respectively and skip first screen. can anyone please suggest me how write that.
Please see the code below
TYPE-POOLS: slis.
*---------------------------------------------------------------------*
* Tables *
* *
*---------------------------------------------------------------------*
TABLES : zlhstockoverview, "Stock Overview Details Table
zwipstat, "WIP Status Table
afpo, "Order item
mara, "General Material Data
marc. "Plant Data for Material
*---------------------------------------------------------------------*
* Types *
* *
*---------------------------------------------------------------------*
* Types declaration for the table ZLHSTOCKOVERVIEW
TYPES: BEGIN OF t_zlhstockoverview,
werks TYPE werks_d, "Plant
matnr TYPE matnr, "Material Number
dispo TYPE dispo, "MRP controller
dat00 TYPE dat00, "Receipt/Requirements date
extra TYPE extra, "MRP element data
umdat TYPE umdat, "Rescheduling date
ornum TYPE aufnr,
lotnumber TYPE zmes_lot,
END OF t_zlhstockoverview.
* Types declaration for the table ZWIPSTAT.
TYPES: BEGIN OF t_zwipstat,
lotnum TYPE zmes_lot, "MES Lot number
ordernum TYPE aufnr, "Order Number
opr_descp TYPE zoprdescp, "Operation Description
END OF t_zwipstat.
* Types declaration for the table ZWIPSTAT1.
TYPES: BEGIN OF t_zwipstat1,
lotnum TYPE zmes_lot, "MES Lot number
ordernum TYPE aufnr, "Order Number
opr_descp TYPE zoprdescp, "Operation Description
END OF t_zwipstat1.
* Types declaration for the table AFPO.
TYPES: BEGIN OF t_afpo,
aufnr TYPE aufnr, "Order Number
dauat TYPE aufart, "Order Type
psmng TYPE co_psmng, "Order item quantity
END OF t_afpo.
* Types declaration for the table AFPO.
TYPES: BEGIN OF t_mara,
matnr TYPE matnr, "Material Number
normt TYPE normt, "Industry Standard Description
END OF t_mara.
* Types declaration for the table FINAL1
TYPES: BEGIN OF t_final1,
ordernum TYPE aufnr,
dauat TYPE afpo-dauat,
matnr TYPE zlhstockoverview-matnr,
normt TYPE mara-normt,
lotnum TYPE zwipstat-lotnum,
psmng TYPE afpo-psmng,
umdat TYPE zlhstockoverview-umdat,
dat00 TYPE zlhstockoverview-dat00,
ornum TYPE aufnr,
lotnumber TYPE zmes_lot,
END OF t_final1.
* Types declaration for the table FINAL
TYPES: BEGIN OF t_final,
ordernum TYPE aufnr,
dauat TYPE afpo-dauat,
matnr TYPE zlhstockoverview-matnr,
normt TYPE mara-normt,
lotnum TYPE zwipstat-lotnum,
psmng TYPE afpo-psmng,
umdat TYPE zlhstockoverview-umdat,
dat00 TYPE zlhstockoverview-dat00,
ornum TYPE aufnr,
lotnumber TYPE zmes_lot,
END OF t_final.
*---------------------------------------------------------------------*
* Internal tables *
* *
*---------------------------------------------------------------------*
DATA: i_zlhstockoverview TYPE STANDARD TABLE OF t_zlhstockoverview
INITIAL SIZE 0,
i_zwipstat TYPE STANDARD TABLE OF t_zwipstat INITIAL SIZE 0,
i_zwipstat1 TYPE STANDARD TABLE OF t_zwipstat1 INITIAL SIZE 0,
i_afpo TYPE STANDARD TABLE OF t_afpo INITIAL SIZE 0,
i_mara TYPE STANDARD TABLE OF t_mara INITIAL SIZE 0,
i_final1 TYPE STANDARD TABLE OF t_final1 INITIAL SIZE 0,
i_final TYPE STANDARD TABLE OF t_final INITIAL SIZE 0.
* Structurs declaration
DATA: is_zlhstockoverview TYPE t_zlhstockoverview,
is_zwipstat TYPE t_zwipstat,
is_zwipstat1 TYPE t_zwipstat1,
is_afpo TYPE t_afpo,
is_mara TYPE t_mara,
is_final1 TYPE t_final1,
is_final TYPE t_final.
*----------------------------------------------------------------------*
* ALV VARIABLE'S *
*----------------------------------------------------------------------*
DATA : it_fieldcat TYPE slis_t_fieldcat_alv,
is_layout TYPE slis_layout_alv,
i_event TYPE slis_t_event, "TO DEFINE THE EVENT
" CATALOG FOR MARA
t_event TYPE slis_alv_event. "THIS IS A STRUCTURE TO
" HANDLE DIFFERENT EVENTS
* Variable declaration
DATA : v_extra TYPE zlhstockoverview-extra,
v_route(36) TYPE c,
v_oprnum(4) TYPE C,
v_index TYPE sy-tabix.
*Constant declaration.
DATA: c_delb0 TYPE delb0 VALUE 'PrdOrd'.
*---------------------------------------------------------------------*
* Selection-screen *
* *
*---------------------------------------------------------------------*
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001 .
PARAMETERS: p_werks TYPE marc-werks. "default 'TQT1'. "PLANT
SELECT-OPTIONS: s_matnr FOR mara-matnr, "MATERIAL Number
s_aufnr FOR afpo-aufnr, "Production Order No
s_oprdes FOR v_route, "Route - Operation
" Description
s_opnum FOR v_oprnum. "Operation Number
PARAMETERS: p_date TYPE mdez-dat00. "Requirement Date
SELECT-OPTIONS: s_dispo FOR marc-dispo, "MRP Controller
s_normt FOR mara-normt. "EG Number
SELECTION-SCREEN END OF BLOCK b1.
*---------------------------------------------------------------------*
* Start-of-selection *
* *
*---------------------------------------------------------------------*
START-OF-SELECTION.
SELECT werks
matnr
dispo
dat00
extra
umdat
INTO TABLE i_zlhstockoverview
FROM zlhstockoverview
WHERE delb0 = c_delb0
AND werks = p_werks
AND umdat = p_date
OR dat00 = p_date
AND matnr IN s_matnr
AND dispo IN s_dispo.
LOOP AT i_zlhstockoverview INTO is_zlhstockoverview.
MOVE is_zlhstockoverview-extra TO v_extra.
SPLIT v_extra AT '/' INTO is_zlhstockoverview-lotnumber
is_zlhstockoverview-ornum.
APPEND is_zlhstockoverview TO i_zlhstockoverview.
ENDLOOP.
if not I_ZLHSTOCKOVERVIEW is initial.
SELECT lotnum
ordernum
opr_descp
FROM zwipstat
INTO TABLE i_zwipstat1
for all entries IN i_zlhstockoverview
WHERE werks = i_zlhstockoverview-werks
AND ordernum = i_zlhstockoverview-ORNUM.
ENDIF.
if not I_ZLHSTOCKOVERVIEW is initial.
SELECT aufnr
dauat
psmng
FROM afpo
INTO TABLE i_afpo
FOR ALL ENTRIES IN I_ZLHSTOCKOVERVIEW
WHERE aufnr = i_zlhstockoverview-ornum
AND aufnr IN s_aufnr.
ENDIF.
if not I_ZLHSTOCKOVERVIEW is initial.
SELECT matnr
normt
FROM mara
INTO TABLE i_mara
FOR ALL ENTRIES IN i_zlhstockoverview
WHERE matnr = i_zlhstockoverview-matnr
AND matnr IN s_matnr.
ENDIF.
LOOP AT i_zwipstat1 INTO is_zwipstat1.
v_index = sy-tabix.
IF NOT is_zwipstat1-opr_descp+0(4) IN s_opnum AND
NOT is_zwipstat1-opr_descp+4(36) IN s_oprdes.
DELETE i_zwipstat1 INDEX v_index.
else.
move I_ZWIPSTAT1 to I_ZWIPSTAT.
ENDIF.
ENDLOOP.
LOOP AT i_zwipstat INTO is_zwipstat.
READ TABLE i_afpo INTO is_afpo WITH KEY
aufnr = is_zwipstat-lotnum.
MOVE is_afpo-dauat TO is_final1-dauat.
MOVE is_afpo-psmng TO is_final1-psmng.
MOVE is_zwipstat-lotnum TO is_final1-lotnum.
MOVE is_zwipstat-ordernum TO is_final1-ordernum.
APPEND is_final1 TO i_final1.
ENDLOOP.
LOOP AT i_zlhstockoverview INTO is_zlhstockoverview.
READ TABLE i_final1 INTO is_final1 WITH KEY
lotnum = is_zlhstockoverview-lotnumber.
MOVE is_zlhstockoverview-matnr TO is_final1-matnr.
MOVE is_zlhstockoverview-umdat TO is_final1-umdat.
MOVE is_zlhstockoverview-dat00 TO is_final1-dat00.
MOVE is_zlhstockoverview-ORNUM TO IS_FINAL1-ORNUM.
MOVE is_zlhstockoverview-LOTNUMBER TO IS_FINAL1-LOTNUMBER.
APPEND is_final1 TO i_final1.
ENDLOOP.
LOOP AT i_mara INTO is_mara.
READ TABLE i_final1 INTO is_final1 WITH KEY
matnr = is_mara-matnr.
MOVE is_final1-ordernum TO is_final-ordernum.
MOVE is_final1-dauat TO is_final-dauat.
MOVE is_final1-matnr TO is_final-matnr.
MOVE is_final1-lotnum TO is_final-lotnum.
MOVE is_final1-psmng TO is_final-psmng.
MOVE is_final1-umdat TO is_final-umdat.
MOVE is_final1-dat00 TO is_final-dat00.
MOVE is_FINAL1-ORNUM TO IS_FINAL-ORNUM.
MOVE is_FINAL1-LOTNUMBER TO IS_FINAL-LOTNUMBER.
MOVE is_mara-normt TO is_final-normt.
APPEND is_final TO i_final.
ENDLOOP.
* Sub routine to display the ALV
PERFORM output_alv.
PERFORM ZF_EVENTCAT USING I_EVENT.
*&---------------------------------------------------------------------
*& Form OUTPUT_ALV
*&---------------------------------------------------------------------
* text
*----------------------------------------------------------------------
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------
FORM output_alv .
IF it_fieldcat IS INITIAL.
PERFORM field_fill USING it_fieldcat.
ENDIF.
* Sub routine to set the layout
PERFORM set_layout USING is_layout.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = sy-repid
is_layout = is_layout
it_fieldcat = it_fieldcat
TABLES
t_outtab = i_final
EXCEPTIONS
program_error = 1
OTHERS = 2
.
IF sy-subrc <> 0.
ENDIF.
ENDFORM. " OUTPUT_ALV
*&---------------------------------------------------------------------
*& Form FIELD_FILL
*&---------------------------------------------------------------------
* text
*----------------------------------------------------------------------
* -->P_IT_FIELDCAT text
*----------------------------------------------------------------------
FORM field_fill USING pt_fieldcat TYPE slis_t_fieldcat_alv.
DATA : ls_fieldcat TYPE slis_fieldcat_alv,
pos TYPE i VALUE 1.
ls_fieldcat-col_pos = pos.
ls_fieldcat-fieldname = 'ORDERNUM'.
ls_fieldcat-ref_fieldname = 'ORDERNUM'.
ls_fieldcat-ref_tabname = 'ZWIPSTAT'.
APPEND ls_fieldcat TO pt_fieldcat.
CLEAR ls_fieldcat.
pos = pos + 1.
ls_fieldcat-col_pos = pos.
ls_fieldcat-fieldname = 'DAUAT'.
ls_fieldcat-ref_fieldname = 'DAUAT'.
ls_fieldcat-ref_tabname = 'AFPO'.
APPEND ls_fieldcat TO pt_fieldcat.
CLEAR ls_fieldcat.
pos = pos + 1.
ls_fieldcat-col_pos = pos.
ls_fieldcat-fieldname = 'MATNR'.
ls_fieldcat-ref_fieldname = 'MATNR'.
ls_fieldcat-ref_tabname = 'MARA'.
lS_fieldcat-hotspot = 'X'.
APPEND ls_fieldcat TO pt_fieldcat.
CLEAR ls_fieldcat.
pos = pos + 1.
ls_fieldcat-col_pos = pos.
ls_fieldcat-fieldname = 'NORMT'.
ls_fieldcat-ref_fieldname = 'NORMT'.
ls_fieldcat-ref_tabname = 'MARA'.
APPEND ls_fieldcat TO pt_fieldcat.
CLEAR ls_fieldcat.
pos = pos + 1.
ls_fieldcat-col_pos = pos.
ls_fieldcat-fieldname = 'LOTNUM'.
ls_fieldcat-ref_fieldname = 'LOTNUM'.
ls_fieldcat-ref_tabname = 'ZWIPSTAT'.
APPEND ls_fieldcat TO pt_fieldcat.
CLEAR ls_fieldcat.
pos = pos + 1.
ls_fieldcat-col_pos = pos.
ls_fieldcat-fieldname = 'PSMNG'.
ls_fieldcat-ref_fieldname = 'PSMNG'.
ls_fieldcat-ref_tabname = 'AFPO'.
APPEND ls_fieldcat TO pt_fieldcat.
CLEAR ls_fieldcat.
pos = pos + 1.
ls_fieldcat-col_pos = pos.
ls_fieldcat-fieldname = 'UMDAT'.
ls_fieldcat-ref_fieldname = 'UMDAT'.
ls_fieldcat-ref_tabname = 'ZLHSTOCKOVERVIEW'.
APPEND ls_fieldcat TO pt_fieldcat.
CLEAR ls_fieldcat.
pos = pos + 1.
ls_fieldcat-col_pos = pos.
ls_fieldcat-fieldname = 'DAT00'.
ls_fieldcat-ref_fieldname = 'DAT00'.
ls_fieldcat-ref_tabname = 'ZLHSTOCKOVERVIEW'.
APPEND ls_fieldcat TO pt_fieldcat.
CLEAR ls_fieldcat.
pos = pos + 1.
ls_fieldcat-col_pos = pos.
ls_fieldcat-fieldname = 'ORNUM'.
ls_fieldcat-seltext_l = text-002.
APPEND ls_fieldcat TO pt_fieldcat.
CLEAR ls_fieldcat.
pos = pos + 1.
ls_fieldcat-col_pos = pos.
ls_fieldcat-fieldname = 'LOTNUMBER'.
ls_fieldcat-seltext_l = text-003.
APPEND ls_fieldcat TO pt_fieldcat.
CLEAR ls_fieldcat.
pos = pos + 1.
ENDFORM. " FIELD_FILL
*&---------------------------------------------------------------------
*& Form SET_LAYOUT
*&---------------------------------------------------------------------
* text
*----------------------------------------------------------------------
* -->P_IS_LAYOUT text
*----------------------------------------------------------------------
FORM set_layout USING ls_layout TYPE slis_layout_alv.
CLEAR ls_layout.
ls_layout-zebra = 'X'.
ls_layout-colwidth_optimize = 'X'.
ENDFORM. " SET_LAYOUT
*&---------------------------------------------------------------------*
*& Form ZF_EVENTCAT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_I_EVENT text
*----------------------------------------------------------------------*
form ZF_EVENTCAT using p_i_event TYPE SLIS_T_EVENT.
CALL function 'REUSE_ALV_EVENTS_GET'
EXPORTING
I_LIST_TYPE = 0
IMPORTING
ET_EVENTS = P_I_EVENT
EXCEPTIONS
LIST_TYPE_WRONG = 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.
CLEAR T_EVENT.
READ TABLE P_I_EVENT WITH KEY NAME = SLIS_EV_USER_COMMAND INTO T_EVENT.
IF SY-SUBRC = 0.
MOVE 'USER_COMMAND' TO T_EVENT-FORM.
APPEND T_EVENT TO P_I_EVENT.
ENDIF.
endform. " ZF_EVENTCAT
*&---------------------------------------------------------------------*
*& Form USER_COMMAND
*&---------------------------------------------------------------------*
FORM user_command USING s_ucomm LIKE sy-ucomm s_selfield TYPE
slis_selfield.
CASE s_ucomm.
WHEN '&IC1'.
IF s_selfield-fieldname = 'MATNR' AND
s_selfield-tabname = 'I_FINAL'.
CALL TRANSACTION 'MD04'.
endif.
ENDCASE.
CLEAR S_UCOMM.
ENDFORM.
Hi,
I am doing ALV interactive report, i wrote the code but not sure whether it is correct or not and couldnt check as there is no data available. Can any one tell me whether this is correct or not.
In the Form User command, is it necessary to mention s_selfield-tabname = 'I_FINAL' or not. If i need to make any changes please let me know.
When the transaction MD04 is called I want to the pass the matnr and the werks respectively and skip first screen. can anyone please suggest me how write that.
Please see the code below
TYPE-POOLS: slis.
*---------------------------------------------------------------------*
* Tables *
* *
*---------------------------------------------------------------------*
TABLES : zlhstockoverview, "Stock Overview Details Table
zwipstat, "WIP Status Table
afpo, "Order item
mara, "General Material Data
marc. "Plant Data for Material
*---------------------------------------------------------------------*
* Types *
* *
*---------------------------------------------------------------------*
* Types declaration for the table ZLHSTOCKOVERVIEW
TYPES: BEGIN OF t_zlhstockoverview,
werks TYPE werks_d, "Plant
matnr TYPE matnr, "Material Number
dispo TYPE dispo, "MRP controller
dat00 TYPE dat00, "Receipt/Requirements date
extra TYPE extra, "MRP element data
umdat TYPE umdat, "Rescheduling date
ornum TYPE aufnr,
lotnumber TYPE zmes_lot,
END OF t_zlhstockoverview.
* Types declaration for the table ZWIPSTAT.
TYPES: BEGIN OF t_zwipstat,
lotnum TYPE zmes_lot, "MES Lot number
ordernum TYPE aufnr, "Order Number
opr_descp TYPE zoprdescp, "Operation Description
END OF t_zwipstat.
* Types declaration for the table ZWIPSTAT1.
TYPES: BEGIN OF t_zwipstat1,
lotnum TYPE zmes_lot, "MES Lot number
ordernum TYPE aufnr, "Order Number
opr_descp TYPE zoprdescp, "Operation Description
END OF t_zwipstat1.
* Types declaration for the table AFPO.
TYPES: BEGIN OF t_afpo,
aufnr TYPE aufnr, "Order Number
dauat TYPE aufart, "Order Type
psmng TYPE co_psmng, "Order item quantity
END OF t_afpo.
* Types declaration for the table AFPO.
TYPES: BEGIN OF t_mara,
matnr TYPE matnr, "Material Number
normt TYPE normt, "Industry Standard Description
END OF t_mara.
* Types declaration for the table FINAL1
TYPES: BEGIN OF t_final1,
ordernum TYPE aufnr,
dauat TYPE afpo-dauat,
matnr TYPE zlhstockoverview-matnr,
normt TYPE mara-normt,
lotnum TYPE zwipstat-lotnum,
psmng TYPE afpo-psmng,
umdat TYPE zlhstockoverview-umdat,
dat00 TYPE zlhstockoverview-dat00,
ornum TYPE aufnr,
lotnumber TYPE zmes_lot,
END OF t_final1.
* Types declaration for the table FINAL
TYPES: BEGIN OF t_final,
ordernum TYPE aufnr,
dauat TYPE afpo-dauat,
matnr TYPE zlhstockoverview-matnr,
normt TYPE mara-normt,
lotnum TYPE zwipstat-lotnum,
psmng TYPE afpo-psmng,
umdat TYPE zlhstockoverview-umdat,
dat00 TYPE zlhstockoverview-dat00,
ornum TYPE aufnr,
lotnumber TYPE zmes_lot,
END OF t_final.
*---------------------------------------------------------------------*
* Internal tables *
* *
*---------------------------------------------------------------------*
DATA: i_zlhstockoverview TYPE STANDARD TABLE OF t_zlhstockoverview
INITIAL SIZE 0,
i_zwipstat TYPE STANDARD TABLE OF t_zwipstat INITIAL SIZE 0,
i_zwipstat1 TYPE STANDARD TABLE OF t_zwipstat1 INITIAL SIZE 0,
i_afpo TYPE STANDARD TABLE OF t_afpo INITIAL SIZE 0,
i_mara TYPE STANDARD TABLE OF t_mara INITIAL SIZE 0,
i_final1 TYPE STANDARD TABLE OF t_final1 INITIAL SIZE 0,
i_final TYPE STANDARD TABLE OF t_final INITIAL SIZE 0.
* Structurs declaration
DATA: is_zlhstockoverview TYPE t_zlhstockoverview,
is_zwipstat TYPE t_zwipstat,
is_zwipstat1 TYPE t_zwipstat1,
is_afpo TYPE t_afpo,
is_mara TYPE t_mara,
is_final1 TYPE t_final1,
is_final TYPE t_final.
*----------------------------------------------------------------------*
* ALV VARIABLE'S *
*----------------------------------------------------------------------*
DATA : it_fieldcat TYPE slis_t_fieldcat_alv,
is_layout TYPE slis_layout_alv,
i_event TYPE slis_t_event, "TO DEFINE THE EVENT
" CATALOG FOR MARA
t_event TYPE slis_alv_event. "THIS IS A STRUCTURE TO
" HANDLE DIFFERENT EVENTS
* Variable declaration
DATA : v_extra TYPE zlhstockoverview-extra,
v_route(36) TYPE c,
v_oprnum(4) TYPE C,
v_index TYPE sy-tabix.
*Constant declaration.
DATA: c_delb0 TYPE delb0 VALUE 'PrdOrd'.
*---------------------------------------------------------------------*
* Selection-screen *
* *
*---------------------------------------------------------------------*
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001 .
PARAMETERS: p_werks TYPE marc-werks. "default 'TQT1'. "PLANT
SELECT-OPTIONS: s_matnr FOR mara-matnr, "MATERIAL Number
s_aufnr FOR afpo-aufnr, "Production Order No
s_oprdes FOR v_route, "Route - Operation
" Description
s_opnum FOR v_oprnum. "Operation Number
PARAMETERS: p_date TYPE mdez-dat00. "Requirement Date
SELECT-OPTIONS: s_dispo FOR marc-dispo, "MRP Controller
s_normt FOR mara-normt. "EG Number
SELECTION-SCREEN END OF BLOCK b1.
*---------------------------------------------------------------------*
* Start-of-selection *
* *
*---------------------------------------------------------------------*
START-OF-SELECTION.
SELECT werks
matnr
dispo
dat00
extra
umdat
INTO TABLE i_zlhstockoverview
FROM zlhstockoverview
WHERE delb0 = c_delb0
AND werks = p_werks
AND umdat = p_date
OR dat00 = p_date
AND matnr IN s_matnr
AND dispo IN s_dispo.
LOOP AT i_zlhstockoverview INTO is_zlhstockoverview.
MOVE is_zlhstockoverview-extra TO v_extra.
SPLIT v_extra AT '/' INTO is_zlhstockoverview-lotnumber
is_zlhstockoverview-ornum.
APPEND is_zlhstockoverview TO i_zlhstockoverview.
ENDLOOP.
if not I_ZLHSTOCKOVERVIEW is initial.
SELECT lotnum
ordernum
opr_descp
FROM zwipstat
INTO TABLE i_zwipstat1
for all entries IN i_zlhstockoverview
WHERE werks = i_zlhstockoverview-werks
AND ordernum = i_zlhstockoverview-ORNUM.
ENDIF.
if not I_ZLHSTOCKOVERVIEW is initial.
SELECT aufnr
dauat
psmng
FROM afpo
INTO TABLE i_afpo
FOR ALL ENTRIES IN I_ZLHSTOCKOVERVIEW
WHERE aufnr = i_zlhstockoverview-ornum
AND aufnr IN s_aufnr.
ENDIF.
if not I_ZLHSTOCKOVERVIEW is initial.
SELECT matnr
normt
FROM mara
INTO TABLE i_mara
FOR ALL ENTRIES IN i_zlhstockoverview
WHERE matnr = i_zlhstockoverview-matnr
AND matnr IN s_matnr.
ENDIF.
LOOP AT i_zwipstat1 INTO is_zwipstat1.
v_index = sy-tabix.
IF NOT is_zwipstat1-opr_descp+0(4) IN s_opnum AND
NOT is_zwipstat1-opr_descp+4(36) IN s_oprdes.
DELETE i_zwipstat1 INDEX v_index.
else.
move I_ZWIPSTAT1 to I_ZWIPSTAT.
ENDIF.
ENDLOOP.
LOOP AT i_zwipstat INTO is_zwipstat.
READ TABLE i_afpo INTO is_afpo WITH KEY
aufnr = is_zwipstat-lotnum.
MOVE is_afpo-dauat TO is_final1-dauat.
MOVE is_afpo-psmng TO is_final1-psmng.
MOVE is_zwipstat-lotnum TO is_final1-lotnum.
MOVE is_zwipstat-ordernum TO is_final1-ordernum.
APPEND is_final1 TO i_final1.
ENDLOOP.
LOOP AT i_zlhstockoverview INTO is_zlhstockoverview.
READ TABLE i_final1 INTO is_final1 WITH KEY
lotnum = is_zlhstockoverview-lotnumber.
MOVE is_zlhstockoverview-matnr TO is_final1-matnr.
MOVE is_zlhstockoverview-umdat TO is_final1-umdat.
MOVE is_zlhstockoverview-dat00 TO is_final1-dat00.
MOVE is_zlhstockoverview-ORNUM TO IS_FINAL1-ORNUM.
MOVE is_zlhstockoverview-LOTNUMBER TO IS_FINAL1-LOTNUMBER.
APPEND is_final1 TO i_final1.
ENDLOOP.
LOOP AT i_mara INTO is_mara.
READ TABLE i_final1 INTO is_final1 WITH KEY
matnr = is_mara-matnr.
MOVE is_final1-ordernum TO is_final-ordernum.
MOVE is_final1-dauat TO is_final-dauat.
MOVE is_final1-matnr TO is_final-matnr.
MOVE is_final1-lotnum TO is_final-lotnum.
MOVE is_final1-psmng TO is_final-psmng.
MOVE is_final1-umdat TO is_final-umdat.
MOVE is_final1-dat00 TO is_final-dat00.
MOVE is_FINAL1-ORNUM TO IS_FINAL-ORNUM.
MOVE is_FINAL1-LOTNUMBER TO IS_FINAL-LOTNUMBER.
MOVE is_mara-normt TO is_final-normt.
APPEND is_final TO i_final.
ENDLOOP.
* Sub routine to display the ALV
PERFORM output_alv.
PERFORM ZF_EVENTCAT USING I_EVENT.
*&---------------------------------------------------------------------
*& Form OUTPUT_ALV
*&---------------------------------------------------------------------
* text
*----------------------------------------------------------------------
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------
FORM output_alv .
IF it_fieldcat IS INITIAL.
PERFORM field_fill USING it_fieldcat.
ENDIF.
* Sub routine to set the layout
PERFORM set_layout USING is_layout.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = sy-repid
is_layout = is_layout
it_fieldcat = it_fieldcat
TABLES
t_outtab = i_final
EXCEPTIONS
program_error = 1
OTHERS = 2
.
IF sy-subrc <> 0.
ENDIF.
ENDFORM. " OUTPUT_ALV
*&---------------------------------------------------------------------
*& Form FIELD_FILL
*&---------------------------------------------------------------------
* text
*----------------------------------------------------------------------
* -->P_IT_FIELDCAT text
*----------------------------------------------------------------------
FORM field_fill USING pt_fieldcat TYPE slis_t_fieldcat_alv.
DATA : ls_fieldcat TYPE slis_fieldcat_alv,
pos TYPE i VALUE 1.
ls_fieldcat-col_pos = pos.
ls_fieldcat-fieldname = 'ORDERNUM'.
ls_fieldcat-ref_fieldname = 'ORDERNUM'.
ls_fieldcat-ref_tabname = 'ZWIPSTAT'.
APPEND ls_fieldcat TO pt_fieldcat.
CLEAR ls_fieldcat.
pos = pos + 1.
ls_fieldcat-col_pos = pos.
ls_fieldcat-fieldname = 'DAUAT'.
ls_fieldcat-ref_fieldname = 'DAUAT'.
ls_fieldcat-ref_tabname = 'AFPO'.
APPEND ls_fieldcat TO pt_fieldcat.
CLEAR ls_fieldcat.
pos = pos + 1.
ls_fieldcat-col_pos = pos.
ls_fieldcat-fieldname = 'MATNR'.
ls_fieldcat-ref_fieldname = 'MATNR'.
ls_fieldcat-ref_tabname = 'MARA'.
lS_fieldcat-hotspot = 'X'.
APPEND ls_fieldcat TO pt_fieldcat.
CLEAR ls_fieldcat.
pos = pos + 1.
ls_fieldcat-col_pos = pos.
ls_fieldcat-fieldname = 'NORMT'.
ls_fieldcat-ref_fieldname = 'NORMT'.
ls_fieldcat-ref_tabname = 'MARA'.
APPEND ls_fieldcat TO pt_fieldcat.
CLEAR ls_fieldcat.
pos = pos + 1.
ls_fieldcat-col_pos = pos.
ls_fieldcat-fieldname = 'LOTNUM'.
ls_fieldcat-ref_fieldname = 'LOTNUM'.
ls_fieldcat-ref_tabname = 'ZWIPSTAT'.
APPEND ls_fieldcat TO pt_fieldcat.
CLEAR ls_fieldcat.
pos = pos + 1.
ls_fieldcat-col_pos = pos.
ls_fieldcat-fieldname = 'PSMNG'.
ls_fieldcat-ref_fieldname = 'PSMNG'.
ls_fieldcat-ref_tabname = 'AFPO'.
APPEND ls_fieldcat TO pt_fieldcat.
CLEAR ls_fieldcat.
pos = pos + 1.
ls_fieldcat-col_pos = pos.
ls_fieldcat-fieldname = 'UMDAT'.
ls_fieldcat-ref_fieldname = 'UMDAT'.
ls_fieldcat-ref_tabname = 'ZLHSTOCKOVERVIEW'.
APPEND ls_fieldcat TO pt_fieldcat.
CLEAR ls_fieldcat.
pos = pos + 1.
ls_fieldcat-col_pos = pos.
ls_fieldcat-fieldname = 'DAT00'.
ls_fieldcat-ref_fieldname = 'DAT00'.
ls_fieldcat-ref_tabname = 'ZLHSTOCKOVERVIEW'.
APPEND ls_fieldcat TO pt_fieldcat.
CLEAR ls_fieldcat.
pos = pos + 1.
ls_fieldcat-col_pos = pos.
ls_fieldcat-fieldname = 'ORNUM'.
ls_fieldcat-seltext_l = text-002.
APPEND ls_fieldcat TO pt_fieldcat.
CLEAR ls_fieldcat.
pos = pos + 1.
ls_fieldcat-col_pos = pos.
ls_fieldcat-fieldname = 'LOTNUMBER'.
ls_fieldcat-seltext_l = text-003.
APPEND ls_fieldcat TO pt_fieldcat.
CLEAR ls_fieldcat.
pos = pos + 1.
ENDFORM. " FIELD_FILL
*&---------------------------------------------------------------------
*& Form SET_LAYOUT
*&---------------------------------------------------------------------
* text
*----------------------------------------------------------------------
* -->P_IS_LAYOUT text
*----------------------------------------------------------------------
FORM set_layout USING ls_layout TYPE slis_layout_alv.
CLEAR ls_layout.
ls_layout-zebra = 'X'.
ls_layout-colwidth_optimize = 'X'.
ENDFORM. " SET_LAYOUT
*&---------------------------------------------------------------------*
*& Form ZF_EVENTCAT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_I_EVENT text
*----------------------------------------------------------------------*
form ZF_EVENTCAT using p_i_event TYPE SLIS_T_EVENT.
CALL function 'REUSE_ALV_EVENTS_GET'
EXPORTING
I_LIST_TYPE = 0
IMPORTING
ET_EVENTS = P_I_EVENT
EXCEPTIONS
LIST_TYPE_WRONG = 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.
CLEAR T_EVENT.
READ TABLE P_I_EVENT WITH KEY NAME = SLIS_EV_USER_COMMAND INTO T_EVENT.
IF SY-SUBRC = 0.
MOVE 'USER_COMMAND' TO T_EVENT-FORM.
APPEND T_EVENT TO P_I_EVENT.
ENDIF.
endform. " ZF_EVENTCAT
*&---------------------------------------------------------------------*
*& Form USER_COMMAND
*&---------------------------------------------------------------------*
FORM user_command USING s_ucomm LIKE sy-ucomm s_selfield TYPE
slis_selfield.
CASE s_ucomm.
WHEN '&IC1'.
IF s_selfield-fieldname = 'MATNR' AND
s_selfield-tabname = 'I_FINAL'.
CALL TRANSACTION 'MD04'.
endif.
ENDCASE.
CLEAR S_UCOMM.
ENDFORM.
2005 Dec 27 2:10 PM
CASE s_ucomm.
WHEN '&IC1'.
IF s_selfield-fieldname = 'MATNR'
AND s_selfield-tabname = 'I_FINAL'.
SET PARAMETER ID 'MAT' FIELD I_FINAL-MATNR.
CALL TRANSACTION 'MD04' AND SKIP FIRST SCREEN.
endif.
ENDCASE.regards
vijay
2005 Dec 27 2:14 PM
Hi you need to pass this also along with MAT.
SET PARAMETER ID 'WRK' FIELD I_FINAL-WERKS.regards
vijay
2005 Dec 27 2:12 PM
Hi
IF s_selfield-fieldname = 'MATNR' AND
s_selfield-tabname = 'I_FINAL'.
READ TABLE I_FINAL INDEX s_selfield-TABIX.
SET PARAMETER ID 'MAT' FIELD I_FINAL-MATNR.
SET PARAMETER ID 'WRK' FIELD I_FINAL-WERKS.
CALL TRANSACTION 'MD04' AND SKIP FIRST SCREEN. endif.
mAX
2005 Dec 27 2:22 PM
Hi Hema,
I wonder if your user command event would be working as you've registered the events after calling the ALV GRID DISPLAY and you've not passed the events table to it.
One more suggestion. Never pass SY-REPID to ALV FM. store it in a variable and then pass it. Thats the convention which should be used. Plz. call the subroutine ZF_EVENTCAT before OUTPUT_ALV and within the 'REUSE_ALV_GRID_DISPLAY', pass one more internal table
IT_EVENTS = T_EVENT
2005 Dec 27 3:18 PM
Hi Satyadev,
I have made the changes to the code accordingly, can you pls have and let me know if i need to change anything else.
Now the problem is I am passing the MATERIAL NUMBER and Werks.
SET PARAMETER ID 'MAT' FIELD I_FINAL-MATNR.
SET PARAMETER ID 'WRK' FIELD I_FINAL-WERKS.
but I_FINAL is internal table without header line.
TYPE-POOLS: SLIS.
*---------------------------------------------------------------------*
* TABLES *
* *
*---------------------------------------------------------------------*
TABLES : ZLHSTOCKOVERVIEW, "STOCK OVERVIEW DETAILS TABLE
ZWIPSTAT, "WIP STATUS TABLE
AFPO, "ORDER ITEM
MARA, "GENERAL MATERIAL DATA
MARC. "PLANT DATA FOR MATERIAL
*---------------------------------------------------------------------*
* TYPES *
* *
*---------------------------------------------------------------------*
* TYPES DECLARATION FOR THE TABLE ZLHSTOCKOVERVIEW
TYPES: BEGIN OF T_ZLHSTOCKOVERVIEW,
WERKS TYPE WERKS_D, "PLANT
MATNR TYPE MATNR, "MATERIAL NUMBER
DISPO TYPE DISPO, "MRP CONTROLLER
DAT00 TYPE DAT00, "RECEIPT/REQUIREMENTS DATE
EXTRA TYPE EXTRA, "MRP ELEMENT DATA
UMDAT TYPE UMDAT, "RESCHEDULING DATE
ORNUM TYPE AUFNR,
LOTNUMBER TYPE ZMES_LOT,
END OF T_ZLHSTOCKOVERVIEW.
* TYPES DECLARATION FOR THE TABLE ZWIPSTAT.
TYPES: BEGIN OF T_ZWIPSTAT,
LOTNUM TYPE ZMES_LOT, "MES LOT NUMBER
ORDERNUM TYPE AUFNR, "ORDER NUMBER
OPR_DESCP TYPE ZOPRDESCP, "OPERATION DESCRIPTION
END OF T_ZWIPSTAT.
* TYPES DECLARATION FOR THE TABLE ZWIPSTAT1.
TYPES: BEGIN OF T_ZWIPSTAT1,
LOTNUM TYPE ZMES_LOT, "MES LOT NUMBER
ORDERNUM TYPE AUFNR, "ORDER NUMBER
OPR_DESCP TYPE ZOPRDESCP, "OPERATION DESCRIPTION
END OF T_ZWIPSTAT1.
* TYPES DECLARATION FOR THE TABLE AFPO.
TYPES: BEGIN OF T_AFPO,
AUFNR TYPE AUFNR, "ORDER NUMBER
DAUAT TYPE AUFART, "ORDER TYPE
PSMNG TYPE CO_PSMNG, "ORDER ITEM QUANTITY
END OF T_AFPO.
* TYPES DECLARATION FOR THE TABLE AFPO.
TYPES: BEGIN OF T_MARA,
MATNR TYPE MATNR, "MATERIAL NUMBER
NORMT TYPE NORMT, "INDUSTRY STANDARD DESCRIPTION
END OF T_MARA.
* TYPES DECLARATION FOR THE TABLE FINAL1
TYPES: BEGIN OF T_FINAL1,
ORDERNUM TYPE AUFNR,
DAUAT TYPE AFPO-DAUAT,
MATNR TYPE ZLHSTOCKOVERVIEW-MATNR,
NORMT TYPE MARA-NORMT,
LOTNUM TYPE ZWIPSTAT-LOTNUM,
PSMNG TYPE AFPO-PSMNG,
UMDAT TYPE ZLHSTOCKOVERVIEW-UMDAT,
DAT00 TYPE ZLHSTOCKOVERVIEW-DAT00,
ORNUM TYPE AUFNR,
LOTNUMBER TYPE ZMES_LOT,
END OF T_FINAL1.
* TYPES DECLARATION FOR THE TABLE FINAL
TYPES: BEGIN OF T_FINAL,
ORDERNUM TYPE AUFNR,
DAUAT TYPE AFPO-DAUAT,
MATNR TYPE ZLHSTOCKOVERVIEW-MATNR,
NORMT TYPE MARA-NORMT,
LOTNUM TYPE ZWIPSTAT-LOTNUM,
PSMNG TYPE AFPO-PSMNG,
UMDAT TYPE ZLHSTOCKOVERVIEW-UMDAT,
DAT00 TYPE ZLHSTOCKOVERVIEW-DAT00,
ORNUM TYPE AUFNR,
LOTNUMBER TYPE ZMES_LOT,
END OF T_FINAL.
*---------------------------------------------------------------------*
* INTERNAL TABLES *
* *
*---------------------------------------------------------------------*
DATA: I_ZLHSTOCKOVERVIEW TYPE STANDARD TABLE OF T_ZLHSTOCKOVERVIEW
INITIAL SIZE 0,
I_ZWIPSTAT TYPE STANDARD TABLE OF T_ZWIPSTAT INITIAL SIZE 0,
I_ZWIPSTAT1 TYPE STANDARD TABLE OF T_ZWIPSTAT1 INITIAL SIZE 0,
I_AFPO TYPE STANDARD TABLE OF T_AFPO INITIAL SIZE 0,
I_MARA TYPE STANDARD TABLE OF T_MARA INITIAL SIZE 0,
I_FINAL1 TYPE STANDARD TABLE OF T_FINAL1 INITIAL SIZE 0,
I_FINAL TYPE STANDARD TABLE OF T_FINAL INITIAL SIZE 0.
* STRUCTURS DECLARATION
DATA: IS_ZLHSTOCKOVERVIEW TYPE T_ZLHSTOCKOVERVIEW,
IS_ZWIPSTAT TYPE T_ZWIPSTAT,
IS_ZWIPSTAT1 TYPE T_ZWIPSTAT1,
IS_AFPO TYPE T_AFPO,
IS_MARA TYPE T_MARA,
IS_FINAL1 TYPE T_FINAL1,
IS_FINAL TYPE T_FINAL.
*----------------------------------------------------------------------*
* ALV VARIABLE'S *
*----------------------------------------------------------------------*
DATA : IT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV,
IS_LAYOUT TYPE SLIS_LAYOUT_ALV,
I_EVENT TYPE SLIS_T_EVENT, "TO DEFINE THE EVENT
" CATALOG FOR MARA
T_EVENT TYPE SLIS_ALV_EVENT, "THIS IS A STRUCTURE TO
" HANDLE DIFFERENT EVENTS
V_PRG LIKE SY-REPID. "WILL HOLD THE PROGRAM NAME
* VARIABLE DECLARATION
DATA : V_EXTRA TYPE ZLHSTOCKOVERVIEW-EXTRA,
V_ROUTE(36) TYPE C,
V_OPRNUM(4) TYPE C,
V_INDEX TYPE SY-TABIX.
*CONSTANT DECLARATION.
DATA: C_DELB0 TYPE DELB0 VALUE 'PRDORD'.
*---------------------------------------------------------------------*
* SELECTION-SCREEN *
* *
*---------------------------------------------------------------------*
SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001 .
PARAMETERS: P_WERKS TYPE MARC-WERKS. "DEFAULT 'TQT1'. "PLANT
SELECT-OPTIONS: S_MATNR FOR MARA-MATNR, "MATERIAL NUMBER
S_AUFNR FOR AFPO-AUFNR, "PRODUCTION ORDER NO
S_OPRDES FOR V_ROUTE, "ROUTE - OPERATION
" DESCRIPTION
S_OPNUM FOR V_OPRNUM. "OPERATION NUMBER
PARAMETERS: P_DATE TYPE MDEZ-DAT00. "REQUIREMENT DATE
SELECT-OPTIONS: S_DISPO FOR MARC-DISPO, "MRP CONTROLLER
S_NORMT FOR MARA-NORMT. "EG NUMBER
SELECTION-SCREEN END OF BLOCK B1.
*---------------------------------------------------------------------*
* START-OF-SELECTION *
* *
*---------------------------------------------------------------------*
START-OF-SELECTION.
SELECT WERKS
MATNR
DISPO
DAT00
EXTRA
UMDAT
INTO TABLE I_ZLHSTOCKOVERVIEW
FROM ZLHSTOCKOVERVIEW
WHERE DELB0 = C_DELB0
AND WERKS = P_WERKS
AND UMDAT = P_DATE
OR DAT00 = P_DATE
AND MATNR IN S_MATNR
AND DISPO IN S_DISPO.
LOOP AT I_ZLHSTOCKOVERVIEW INTO IS_ZLHSTOCKOVERVIEW.
MOVE IS_ZLHSTOCKOVERVIEW-EXTRA TO V_EXTRA.
SPLIT V_EXTRA AT '/' INTO IS_ZLHSTOCKOVERVIEW-LOTNUMBER
IS_ZLHSTOCKOVERVIEW-ORNUM.
APPEND IS_ZLHSTOCKOVERVIEW TO I_ZLHSTOCKOVERVIEW.
ENDLOOP.
IF NOT I_ZLHSTOCKOVERVIEW IS INITIAL.
SELECT LOTNUM
ORDERNUM
OPR_DESCP
FROM ZWIPSTAT
INTO TABLE I_ZWIPSTAT1
FOR ALL ENTRIES IN I_ZLHSTOCKOVERVIEW
WHERE WERKS = I_ZLHSTOCKOVERVIEW-WERKS
AND ORDERNUM = I_ZLHSTOCKOVERVIEW-ORNUM.
ENDIF.
IF NOT I_ZLHSTOCKOVERVIEW IS INITIAL.
SELECT AUFNR
DAUAT
PSMNG
FROM AFPO
INTO TABLE I_AFPO
FOR ALL ENTRIES IN I_ZLHSTOCKOVERVIEW
WHERE AUFNR = I_ZLHSTOCKOVERVIEW-ORNUM
AND AUFNR IN S_AUFNR.
ENDIF.
IF NOT I_ZLHSTOCKOVERVIEW IS INITIAL.
SELECT MATNR
NORMT
FROM MARA
INTO TABLE I_MARA
FOR ALL ENTRIES IN I_ZLHSTOCKOVERVIEW
WHERE MATNR = I_ZLHSTOCKOVERVIEW-MATNR
AND MATNR IN S_MATNR.
ENDIF.
LOOP AT I_ZWIPSTAT1 INTO IS_ZWIPSTAT1.
V_INDEX = SY-TABIX.
IF NOT IS_ZWIPSTAT1-OPR_DESCP+0(4) IN S_OPNUM AND
NOT IS_ZWIPSTAT1-OPR_DESCP+4(36) IN S_OPRDES.
DELETE I_ZWIPSTAT1 INDEX V_INDEX.
ELSE.
MOVE I_ZWIPSTAT1 TO I_ZWIPSTAT.
ENDIF.
ENDLOOP.
LOOP AT I_ZWIPSTAT INTO IS_ZWIPSTAT.
READ TABLE I_AFPO INTO IS_AFPO WITH KEY
AUFNR = IS_ZWIPSTAT-LOTNUM.
MOVE IS_AFPO-DAUAT TO IS_FINAL1-DAUAT.
MOVE IS_AFPO-PSMNG TO IS_FINAL1-PSMNG.
MOVE IS_ZWIPSTAT-LOTNUM TO IS_FINAL1-LOTNUM.
MOVE IS_ZWIPSTAT-ORDERNUM TO IS_FINAL1-ORDERNUM.
APPEND IS_FINAL1 TO I_FINAL1.
ENDLOOP.
LOOP AT I_ZLHSTOCKOVERVIEW INTO IS_ZLHSTOCKOVERVIEW.
READ TABLE I_FINAL1 INTO IS_FINAL1 WITH KEY
LOTNUM = IS_ZLHSTOCKOVERVIEW-LOTNUMBER.
MOVE IS_ZLHSTOCKOVERVIEW-MATNR TO IS_FINAL1-MATNR.
MOVE IS_ZLHSTOCKOVERVIEW-UMDAT TO IS_FINAL1-UMDAT.
MOVE IS_ZLHSTOCKOVERVIEW-DAT00 TO IS_FINAL1-DAT00.
MOVE IS_ZLHSTOCKOVERVIEW-ORNUM TO IS_FINAL1-ORNUM.
MOVE IS_ZLHSTOCKOVERVIEW-LOTNUMBER TO IS_FINAL1-LOTNUMBER.
APPEND IS_FINAL1 TO I_FINAL1.
ENDLOOP.
LOOP AT I_MARA INTO IS_MARA.
READ TABLE I_FINAL1 INTO IS_FINAL1 WITH KEY
MATNR = IS_MARA-MATNR.
MOVE IS_FINAL1-ORDERNUM TO IS_FINAL-ORDERNUM.
MOVE IS_FINAL1-DAUAT TO IS_FINAL-DAUAT.
MOVE IS_FINAL1-MATNR TO IS_FINAL-MATNR.
MOVE IS_FINAL1-LOTNUM TO IS_FINAL-LOTNUM.
MOVE IS_FINAL1-PSMNG TO IS_FINAL-PSMNG.
MOVE IS_FINAL1-UMDAT TO IS_FINAL-UMDAT.
MOVE IS_FINAL1-DAT00 TO IS_FINAL-DAT00.
MOVE IS_FINAL1-ORNUM TO IS_FINAL-ORNUM.
MOVE IS_FINAL1-LOTNUMBER TO IS_FINAL-LOTNUMBER.
MOVE IS_MARA-NORMT TO IS_FINAL-NORMT.
APPEND IS_FINAL TO I_FINAL.
ENDLOOP.
PERFORM ZF_EVENTCAT USING I_EVENT.
IF IT_FIELDCAT IS INITIAL.
PERFORM FIELD_FILL USING IT_FIELDCAT.
ENDIF.
PERFORM ZF_DISPLAY.
* SUB ROUTINE TO SET THE LAYOUT
PERFORM SET_LAYOUT USING IS_LAYOUT.
*&--------------------------------------------------------------------*
*& FORM FIELD_FILL *
*&--------------------------------------------------------------------*
* TEXT *
*---------------------------------------------------------------------*
* -->PT_FIELDCAT TEXT *
*---------------------------------------------------------------------*
FORM FIELD_FILL USING PT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV.
DATA : LS_FIELDCAT TYPE SLIS_FIELDCAT_ALV,
POS TYPE I VALUE 1.
LS_FIELDCAT-COL_POS = POS.
LS_FIELDCAT-FIELDNAME = 'ORDERNUM'.
LS_FIELDCAT-REF_FIELDNAME = 'ORDERNUM'.
LS_FIELDCAT-REF_TABNAME = 'ZWIPSTAT'.
APPEND LS_FIELDCAT TO PT_FIELDCAT.
CLEAR LS_FIELDCAT.
POS = POS + 1.
LS_FIELDCAT-COL_POS = POS.
LS_FIELDCAT-FIELDNAME = 'DAUAT'.
LS_FIELDCAT-REF_FIELDNAME = 'DAUAT'.
LS_FIELDCAT-REF_TABNAME = 'AFPO'.
APPEND LS_FIELDCAT TO PT_FIELDCAT.
CLEAR LS_FIELDCAT.
POS = POS + 1.
LS_FIELDCAT-COL_POS = POS.
LS_FIELDCAT-FIELDNAME = 'MATNR'.
LS_FIELDCAT-REF_FIELDNAME = 'MATNR'.
LS_FIELDCAT-REF_TABNAME = 'MARA'.
LS_FIELDCAT-HOTSPOT = 'X'.
APPEND LS_FIELDCAT TO PT_FIELDCAT.
CLEAR LS_FIELDCAT.
POS = POS + 1.
LS_FIELDCAT-COL_POS = POS.
LS_FIELDCAT-FIELDNAME = 'NORMT'.
LS_FIELDCAT-REF_FIELDNAME = 'NORMT'.
LS_FIELDCAT-REF_TABNAME = 'MARA'.
APPEND LS_FIELDCAT TO PT_FIELDCAT.
CLEAR LS_FIELDCAT.
POS = POS + 1.
LS_FIELDCAT-COL_POS = POS.
LS_FIELDCAT-FIELDNAME = 'LOTNUM'.
LS_FIELDCAT-REF_FIELDNAME = 'LOTNUM'.
LS_FIELDCAT-REF_TABNAME = 'ZWIPSTAT'.
APPEND LS_FIELDCAT TO PT_FIELDCAT.
CLEAR LS_FIELDCAT.
POS = POS + 1.
LS_FIELDCAT-COL_POS = POS.
LS_FIELDCAT-FIELDNAME = 'PSMNG'.
LS_FIELDCAT-REF_FIELDNAME = 'PSMNG'.
LS_FIELDCAT-REF_TABNAME = 'AFPO'.
APPEND LS_FIELDCAT TO PT_FIELDCAT.
CLEAR LS_FIELDCAT.
POS = POS + 1.
LS_FIELDCAT-COL_POS = POS.
LS_FIELDCAT-FIELDNAME = 'UMDAT'.
LS_FIELDCAT-REF_FIELDNAME = 'UMDAT'.
LS_FIELDCAT-REF_TABNAME = 'ZLHSTOCKOVERVIEW'.
APPEND LS_FIELDCAT TO PT_FIELDCAT.
CLEAR LS_FIELDCAT.
POS = POS + 1.
LS_FIELDCAT-COL_POS = POS.
LS_FIELDCAT-FIELDNAME = 'DAT00'.
LS_FIELDCAT-REF_FIELDNAME = 'DAT00'.
LS_FIELDCAT-REF_TABNAME = 'ZLHSTOCKOVERVIEW'.
APPEND LS_FIELDCAT TO PT_FIELDCAT.
CLEAR LS_FIELDCAT.
POS = POS + 1.
LS_FIELDCAT-COL_POS = POS.
LS_FIELDCAT-FIELDNAME = 'ORNUM'.
LS_FIELDCAT-SELTEXT_L = TEXT-002.
APPEND LS_FIELDCAT TO PT_FIELDCAT.
CLEAR LS_FIELDCAT.
POS = POS + 1.
LS_FIELDCAT-COL_POS = POS.
LS_FIELDCAT-FIELDNAME = 'LOTNUMBER'.
LS_FIELDCAT-SELTEXT_L = TEXT-003.
APPEND LS_FIELDCAT TO PT_FIELDCAT.
CLEAR LS_FIELDCAT.
POS = POS + 1.
ENDFORM. " FIELD_FILL
*&---------------------------------------------------------------------*
*& FORM ZF_EVENTCAT
*&---------------------------------------------------------------------*
* TEXT
*----------------------------------------------------------------------*
* -->P_I_EVENT TEXT
*----------------------------------------------------------------------*
FORM ZF_EVENTCAT USING P_I_EVENT TYPE SLIS_T_EVENT.
CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
EXPORTING
I_LIST_TYPE = 0
IMPORTING
ET_EVENTS = P_I_EVENT
EXCEPTIONS
LIST_TYPE_WRONG = 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.
CLEAR T_EVENT.
READ TABLE P_I_EVENT WITH KEY NAME = SLIS_EV_USER_COMMAND INTO T_EVENT.
IF SY-SUBRC = 0.
MOVE 'USER_COMMAND' TO T_EVENT-FORM.
APPEND T_EVENT TO P_I_EVENT.
ENDIF.
ENDFORM. " ZF_EVENTCAT
*&---------------------------------------------------------------------*
*& FORM ZF_DISPLAY
*&---------------------------------------------------------------------*
* TEXT
*----------------------------------------------------------------------*
* --> P1 TEXT
* <-- P2 TEXT
*----------------------------------------------------------------------*
FORM ZF_DISPLAY .
V_PRG = SY-REPID.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM = V_PRG
IS_LAYOUT = IS_LAYOUT
IT_FIELDCAT = IT_FIELDCAT
IT_EVENTS = I_EVENT
TABLES
T_OUTTAB = I_FINAL
EXCEPTIONS
PROGRAM_ERROR = 1
OTHERS = 2
.
IF SY-SUBRC <> 0.
ENDIF.
ENDFORM. " ZF_DISPLAY
*&---------------------------------------------------------------------*
*& FORM USER_COMMAND
*&---------------------------------------------------------------------*
FORM USER_COMMAND USING S_UCOMM LIKE SY-UCOMM S_SELFIELD TYPE
SLIS_SELFIELD.
CASE S_UCOMM.
WHEN '&IC1'.
IF S_SELFIELD-FIELDNAME = 'MATNR'.
SET PARAMETER ID 'MAT' FIELD I_FINAL-MATNR.
SET PARAMETER ID 'WRK' FIELD I_FINAL-WERKS.
CALL TRANSACTION 'MD04' AND SKIP FIRST SCREEN.
ENDIF.
ENDCASE.
CLEAR S_UCOMM.
ENDFORM.
*&--------------------------------------------------------------------*
*& FORM SET_LAYOUT *
*&--------------------------------------------------------------------*
* TEXT *
*---------------------------------------------------------------------*
* -->P_IS_LAYOUT TEXT *
*---------------------------------------------------------------------*
FORM SET_LAYOUT USING LS_LAYOUT TYPE SLIS_LAYOUT_ALV.
CLEAR LS_LAYOUT.
LS_LAYOUT-ZEBRA = 'X'.
LS_LAYOUT-COLWIDTH_OPTIMIZE = 'X'.
ENDFORM. " SET_LAYOUT
2005 Dec 27 3:25 PM
Hi
use statament READ with a workarea
DATA: WA LIKE I_FINAL.
IF s_selfield-fieldname = 'MATNR' AND
s_selfield-tabname = 'I_FINAL'.
READ TABLE I_FINAL INTO WA INDEX s_selfield-tabindex.
SET PARAMETER ID 'MAT' FIELD WA-MATNR.
SET PARAMETER ID 'WRK' FIELD WA-WERKS.
CALL TRANSACTION 'MD04' AND SKIP FIRST SCREEN. endif.
mAX
Message was edited by: max bianchi
Message was edited by: max bianchi
Message was edited by: max bianchi
2005 Dec 27 3:57 PM
Hi,
use the rs_selfield-tabindex to read the internal table into work area.
Hope that helps.
regards,
Satya
| User | Count |
|---|---|
| 4 | |
| 2 | |
| 2 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 |