Requirement in ALV
Hi All,
I have one requirement, In the ALV report output if user selects one record and press one push button, a pop up should come
Ex: If user selects SO and press DELETE button, then a pop up screen should come with all the serial nubers related to the SO numbers(Depending on SO Qty it will be one or more than one)
In the POP up screen format will be
Check Box1 Serial Number1
Check Box2 Serial Number2
Like this it has to come..
If the user selects the check box, depending on the check box it has to delete the records from SAP..
How to achieve this one.. Any Standard FM is avaiable for this one..
Please suggest..
Thanks & Regards,
Sreelipi
Hi you create two routine as below.
here t_mseg is a internal table which has output data nad a box field..
form PF_STATUS using rt_ext type slis_t_extab.
set pf-status 'ZSTATUS'.
endform.
form usrcmd using p_ucomm type sy-ucomm
ps_selfield type slis_selfield.
ps_selfield-fieldname = t_mseg-box .
data:lt_matnr type MSEG-matnr.
case p_ucomm.
when 'EXECUTE'.
loop at T_mseg where box = 'X'.
if sy-subrc EQ 0.
exit.
endloop .
call POPUP_TO_CONFIRM.
you must pass all routines in FM.
you also create a layout and pass in FM.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
Similar Messages
-
Pls help me this is an urgent requirement on ALV GRID
Hi all
Here i am sendig my requirement pls help me on coding ..
Report Assignment For ELTPs:
Selection criteria :
Circle id : Select option without interval and mandatory
SPR Id : Select option without interval
Project Status : Parameter
Output required in ALV Grid format with the below structure :
cProjects ID SPR ID Project Name Circle ID Circle Description Delegation Status No. of CU Projects CU-PO Share FLCB FLCB
NAME FLCL ID FLCL Name FLCL Email ID
1232007
1230
ABCD No 0
1242007
1240
ABCD Partial 2
1112007
1241
XYZ
2222007
1242
WXY
1252007
1250
EFGH Full 1
3332007
1251
DEF
Requirement :
1. The report should list all the CFU projects and the corresponding CU projects circle wise based on the circles entered on the selection screen and which have the SPR ids and Project status on the selection screen.
2. If SPR id or Project status is not entered then all the projects to be considered for the given circle/s.
3. It should display the details of the CFU project first. The corresponding CU projects should be listed below that CFU project in the successive rows.
4. For example, project 1232007 is a CFU project which does not have any CU under it. Hence, another CFU project 1242007 is displayed in the second row. It has 2 CU projects under it. The details of those two CU projects are displayed in the 3rd and 4th rows.
5. Total share given to the CU circle (by adding different PO shares to that circle in that project) by the CFU project should be displayed in the field CU-PO Share.
6. For CU projects, the fields Delegation Status, No. of CU projects and CU-PO share should be space.
7. FLCB, FLCL ID, FLCL name and FLCL email need to given for all the projects in all the rows.
Tables to be referred: ZSCP_PROJECT, ZSCP_CIRCLE_M, ZSCP_PJ_CL_PO_MP, ZSCP_PRJ_LINK, USR21,
ADR6, BUT000,CGPL_TEXT.
[<b>b]Here i done the coding the but the error showing that field catolog is not found..
pls check this and kindly send the code .....</b></b>
REPORT Z_64328_TEST .
TYPE-POOLS : SLIS.
TABLES : ZSCP_PROJECT,ZSCP_CIRCLE_M,ZSCP_PJ_CL_PO_MP,ZSCP_PRJ_LINK,
USR21,ADR6, BUT000.
SELECT-OPTIONS : S_CIRID FOR ZSCP_CIRCLE_M-CIRCLE_ID NO INTERVALS.
SELECT-OPTIONS : S_SPR_ID FOR ZSCP_PROJECT-SPR_PROJECT_ID NO INTERVALS.
PARAMETERS : P_STAT LIKE ZSCP_PROJECT-PRJ_STAT.
DATA : GS_LAYOUT1 TYPE SLIS_LAYOUT_ALV,
CT_FIELDCAT1 TYPE SLIS_T_FIELDCAT_ALV,
G_REPID TYPE SY-REPID,
TEMP_CAT1 TYPE SLIS_FIELDCAT_ALV,
HEADER_ALV1 TYPE SLIS_T_LISTHEADER,
HEADER_ALV_WA1 TYPE SLIS_LISTHEADER,
GT_SORT TYPE SLIS_T_SORTINFO_ALV WITH HEADER LINE,
GS_KEYINFO TYPE SLIS_KEYINFO_ALV.
DATA : SPRID TYPE ZSPR_PROJECT_ID.
DATA : CID TYPE ZCIRCLE_ID.
DATA : ITAB TYPE TABLE OF ZSCP_PROJECT.
DATA : WA TYPE ZSCP_PROJECT.
DATA : ITAB1 TYPE TABLE OF ZSCP_CIRCLE_M.
DATA : WA1 TYPE ZSCP_CIRCLE_M.
SELECT * FROM ZSCP_CIRCLE_M INTO TABLE ITAB1.
SELECT * FROM ZSCP_PROJECT INTO TABLE ITAB WHERE SPR_PROJECT_ID IN S_SPR_ID OR CIRCLE_ID IN S_CIRID.
LOOP AT ITAB INTO WA.
READ TABLE ITAB1 INTO WA1 WITH KEY CIRCLE_ID = WA-CIRCLE_ID.
WRITE : WA1-CIRCLE_DESC.
WRITE : WA-CIRCLE_ID,
WA-PROJECT_ID,
WA-DELEG_STAT,
WA-PRJ_STAT,
WA-FLCB,
WA-FLCL.
ENDLOOP.
*PERFORM FIELD_CATALOG1.
PERFORM alv_display1.
FORM FIELD_CATALOG1.
CLEAR TEMP_CAT1.
TEMP_CAT1-TABNAME = 'ITAB'.
TEMP_CAT1-FIELDNAME = 'CIRCLE_ID'.
TEMP_CAT1-KEY = 'X'.
TEMP_CAT1-SELTEXT_M = 'CIRCLEID'.
TEMP_CAT1-OUTPUTLEN = 10.
APPEND TEMP_CAT1 TO CT_FIELDCAT1.
CLEAR TEMP_CAT1.
TEMP_CAT1-TABNAME = 'ITAB'.
TEMP_CAT1-FIELDNAME = 'SPR_PROJECT_ID'.
TEMP_CAT1-KEY = 'X'.
TEMP_CAT1-SELTEXT_M = 'CPROJECTID'.
TEMP_CAT1-OUTPUTLEN = 10.
APPEND TEMP_CAT1 TO CT_FIELDCAT1.
CLEAR TEMP_CAT1.
TEMP_CAT1-TABNAME = 'ITAB'.
TEMP_CAT1-FIELDNAME = 'CIRCLE_DESC'.
TEMP_CAT1-KEY = 'X'.
TEMP_CAT1-SELTEXT_M = 'CIRCLEDESC'.
TEMP_CAT1-OUTPUTLEN = 10.
APPEND TEMP_CAT1 TO CT_FIELDCAT1.
CLEAR TEMP_CAT1.
TEMP_CAT1-TABNAME = 'ITAB'.
TEMP_CAT1-FIELDNAME = 'DELEG_STAT'.
TEMP_CAT1-KEY = 'X'.
TEMP_CAT1-SELTEXT_M = 'DELGSTAT'.
TEMP_CAT1-OUTPUTLEN = 10.
APPEND TEMP_CAT1 TO CT_FIELDCAT1.
CLEAR TEMP_CAT1.
TEMP_CAT1-TABNAME = 'ITAB'.
TEMP_CAT1-FIELDNAME = 'PRJ_STAT'.
TEMP_CAT1-KEY = 'X'.
TEMP_CAT1-SELTEXT_M = 'PROJSTAT'.
TEMP_CAT1-OUTPUTLEN = 10.
APPEND TEMP_CAT1 TO CT_FIELDCAT1.
CLEAR TEMP_CAT1.
TEMP_CAT1-TABNAME = 'ITAB'.
TEMP_CAT1-FIELDNAME = 'FLCB'.
TEMP_CAT1-KEY = 'X'.
TEMP_CAT1-SELTEXT_M = 'FLCB1'.
TEMP_CAT1-OUTPUTLEN = 10.
APPEND TEMP_CAT1 TO CT_FIELDCAT1.
CLEAR TEMP_CAT1.
TEMP_CAT1-TABNAME = 'ITAB'.
TEMP_CAT1-FIELDNAME = 'FLCL'.
TEMP_CAT1-KEY = 'X'.
TEMP_CAT1-SELTEXT_M = 'FLCL1'.
TEMP_CAT1-OUTPUTLEN = 10.
APPEND TEMP_CAT1 TO CT_FIELDCAT1.
ENDFORM. "END CATALOG1.
FORM ALV_DISPLAY1.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_INTERFACE_CHECK = ' '
I_BYPASSING_BUFFER = ' '
I_BUFFER_ACTIVE = ' '
I_CALLBACK_PROGRAM = G_REPID
I_CALLBACK_PF_STATUS_SET = ' '
I_CALLBACK_USER_COMMAND = ' '
I_CALLBACK_TOP_OF_PAGE = 'TOP-OF-PAGE1 '
I_CALLBACK_HTML_TOP_OF_PAGE = ' '
I_CALLBACK_HTML_END_OF_LIST = ' '
I_STRUCTURE_NAME =
I_BACKGROUND_ID = ' '
I_GRID_TITLE =
I_GRID_SETTINGS =
IS_LAYOUT = GS_LAYOUT1
IT_FIELDCAT = CT_FIELDCAT1
IT_EXCLUDING =
IT_SPECIAL_GROUPS =
IT_SORT = GT_SORT[]
IT_FILTER =
IS_SEL_HIDE =
I_DEFAULT = 'X'
I_SAVE = 'A '
TABLES
T_OUTTAB = ITAB
EXCEPTIONS
PROGRAM_ERROR = 1
OTHERS = 2
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDFORM.
Thanks and regards
Nagendra Kumarhi nagendra,
go through this code.
TYPE-POOLS : SLIS.
TABLES : ZSCP_PROJECT,ZSCP_CIRCLE_M,ZSCP_PJ_CL_PO_MP,ZSCP_PRJ_LINK,
USR21,ADR6, BUT000.
SELECT-OPTIONS : S_CIRID FOR ZSCP_CIRCLE_M-CIRCLE_ID NO INTERVALS.
SELECT-OPTIONS : S_SPR_ID FOR ZSCP_PROJECT-SPR_PROJECT_ID NO INTERVALS.
PARAMETERS : P_STAT LIKE ZSCP_PROJECT-PRJ_STAT.
DATA : GS_LAYOUT1 TYPE SLIS_LAYOUT_ALV,
CT_FIELDCAT1 TYPE SLIS_T_FIELDCAT_ALV,
G_REPID TYPE SY-REPID,
TEMP_CAT1 TYPE SLIS_FIELDCAT_ALV,
HEADER_ALV1 TYPE SLIS_T_LISTHEADER,
HEADER_ALV_WA1 TYPE SLIS_LISTHEADER,
GT_SORT TYPE SLIS_T_SORTINFO_ALV WITH HEADER LINE,
GS_KEYINFO TYPE SLIS_KEYINFO_ALV.
DATA : SPRID TYPE ZSPR_PROJECT_ID.
DATA : CID TYPE ZCIRCLE_ID.
DATA : ITAB TYPE TABLE OF ZSCP_PROJECT.
DATA : WA TYPE ZSCP_PROJECT.
DATA : ITAB1 TYPE TABLE OF ZSCP_CIRCLE_M.
DATA : WA1 TYPE ZSCP_CIRCLE_M.
SELECT * FROM ZSCP_CIRCLE_M INTO TABLE ITAB1.
SELECT * FROM ZSCP_PROJECT INTO TABLE ITAB WHERE SPR_PROJECT_ID IN S_SPR_ID OR CIRCLE_ID IN S_CIRID.
LOOP AT ITAB INTO WA.
READ TABLE ITAB1 INTO WA1 WITH KEY CIRCLE_ID = WA-CIRCLE_ID.
WRITE : WA1-CIRCLE_DESC.
WRITE : WA-CIRCLE_ID,
WA-PROJECT_ID,
WA-DELEG_STAT,
WA-PRJ_STAT,
WA-FLCB,
WA-FLCL.
ENDLOOP.
PERFORM FIELD_CATALOG1.
PERFORM alv_display1.
FORM FIELD_CATALOG1.
CLEAR TEMP_CAT1.
TEMP_CAT1-TABNAME = 'ITAB'.
TEMP_CAT1-FIELDNAME = 'CIRCLE_ID'.
TEMP_CAT1-KEY = 'X'.
TEMP_CAT1-SELTEXT_M = 'CIRCLEID'.
TEMP_CAT1-OUTPUTLEN = 10.
APPEND TEMP_CAT1 TO CT_FIELDCAT1.
CLEAR TEMP_CAT1.
TEMP_CAT1-TABNAME = 'ITAB'.
TEMP_CAT1-FIELDNAME = 'SPR_PROJECT_ID'.
TEMP_CAT1-KEY = 'X'.
TEMP_CAT1-SELTEXT_M = 'CPROJECTID'.
TEMP_CAT1-OUTPUTLEN = 10.
APPEND TEMP_CAT1 TO CT_FIELDCAT1.
CLEAR TEMP_CAT1.
TEMP_CAT1-TABNAME = 'ITAB'.
TEMP_CAT1-FIELDNAME = 'CIRCLE_DESC'.
TEMP_CAT1-KEY = 'X'.
TEMP_CAT1-SELTEXT_M = 'CIRCLEDESC'.
TEMP_CAT1-OUTPUTLEN = 10.
APPEND TEMP_CAT1 TO CT_FIELDCAT1.
CLEAR TEMP_CAT1.
TEMP_CAT1-TABNAME = 'ITAB'.
TEMP_CAT1-FIELDNAME = 'DELEG_STAT'.
TEMP_CAT1-KEY = 'X'.
TEMP_CAT1-SELTEXT_M = 'DELGSTAT'.
TEMP_CAT1-OUTPUTLEN = 10.
APPEND TEMP_CAT1 TO CT_FIELDCAT1.
CLEAR TEMP_CAT1.
TEMP_CAT1-TABNAME = 'ITAB'.
TEMP_CAT1-FIELDNAME = 'PRJ_STAT'.
TEMP_CAT1-KEY = 'X'.
TEMP_CAT1-SELTEXT_M = 'PROJSTAT'.
TEMP_CAT1-OUTPUTLEN = 10.
APPEND TEMP_CAT1 TO CT_FIELDCAT1.
CLEAR TEMP_CAT1.
TEMP_CAT1-TABNAME = 'ITAB'.
TEMP_CAT1-FIELDNAME = 'FLCB'.
TEMP_CAT1-KEY = 'X'.
TEMP_CAT1-SELTEXT_M = 'FLCB1'.
TEMP_CAT1-OUTPUTLEN = 10.
APPEND TEMP_CAT1 TO CT_FIELDCAT1.
CLEAR TEMP_CAT1.
TEMP_CAT1-TABNAME = 'ITAB'.
TEMP_CAT1-FIELDNAME = 'FLCL'.
TEMP_CAT1-KEY = 'X'.
TEMP_CAT1-SELTEXT_M = 'FLCL1'.
TEMP_CAT1-OUTPUTLEN = 10.
APPEND TEMP_CAT1 TO CT_FIELDCAT1.
ENDFORM. "END CATALOG1.
FORM ALV_DISPLAY1.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_INTERFACE_CHECK = ' '
I_BYPASSING_BUFFER = ' '
I_BUFFER_ACTIVE = ' '
I_CALLBACK_PROGRAM = G_REPID
I_CALLBACK_PF_STATUS_SET = ' '
I_CALLBACK_USER_COMMAND = ' '
I_CALLBACK_TOP_OF_PAGE = 'TOP-OF-PAGE1 '
I_CALLBACK_HTML_TOP_OF_PAGE = ' '
I_CALLBACK_HTML_END_OF_LIST = ' '
I_STRUCTURE_NAME =
I_BACKGROUND_ID = ' '
I_GRID_TITLE =
I_GRID_SETTINGS =
IS_LAYOUT = GS_LAYOUT1
IT_FIELDCAT = CT_FIELDCAT1
IT_EXCLUDING =
IT_SPECIAL_GROUPS =
IT_SORT = GT_SORT[]
IT_FILTER =
IS_SEL_HIDE =
I_DEFAULT = 'X'
I_SAVE = 'A '
TABLES
T_OUTTAB = ITAB
EXCEPTIONS
PROGRAM_ERROR = 1
OTHERS = 2
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDFORM.
<b>please reward points if helpfull.</b>
with regards,
radhika kolluru. -
Main heading and Sub Heading Requirment in ALV wih download to excel featur
Hello Everyone,
I have a very typical requirment in ALV . I want the output to be displayed as folows :
Category
Head1
Head2
Here the heading category is just a heading and no header and line item data. so hirearchal kind of ALV is of no use. and i cant write this was in TOP-OF-PAGE as i want to download this data to excel and if i write it in TOP-OF-PAGE the dwnload in excel is misaligned. I have been thorugh the various topics posted here and couldn't get a feasible solution. Please Help.Hi,
This is not possible
Refer these links
Re: ALV query
Re: Multiple lines in alv column headings
If this solves ur problem reward points and close the thread -
Hi,
Please help with a solution:
my requirement is to add the following to an existing program.
i need to add 3 fields from a new table(a table which is not used in the program).
the fields are :
Vendor Part No. : Field ZWTYVND-Z_WTY_MAT_VPN
Mail To Vendor No.: Field ZWTYVND-Z_WTY_LIFNR_MAIL
Mail To Vendor Name: Field ZWTYVND-WTY_NAME1
here is the program code:
REPORT zwtyrep008
LINE-SIZE 500
MESSAGE-ID zpp02.
*& Report ZWTYREP008 *
*$*$----------------------------------------------------------------$*$*
*$*$---T A B L E S--------------------------------------------------$*$*
*$*$----------------------------------------------------------------$*$*
TABLES: wty_pnwtyh_dia, "
wty_pnwtyv_dia,
mara,
usr21,
pnwtyv,
adrp,
s084.
*$*$----------------------------------------------------------------$*$*
*$*$ CONSTANTS
*$*$----------------------------------------------------------------$*$*
CONSTANTS: true(1) VALUE 'X',
false(1) VALUE ' '.
CONSTANTS: c_year_low(4) VALUE '1960',
c_year_high(4) VALUE '9999',
c_zero LIKE wty_pvwty_dia-valiv VALUE '0.00',
c_claim_to_process TYPE i VALUE 3000.
CONSTANTS: c_save(1) VALUE 'U'.
*$*$----------------------------------------------------------------$*$*
*$*$ TYPES
*$*$----------------------------------------------------------------$*$*
TYPE-POOLS: slis, pwty.
TYPES: BEGIN OF lt_period,
year(4),
poper(2),
start TYPE d,
end TYPE d,
END OF lt_period.
TYPES: BEGIN OF tp_charac_value,
atwrt LIKE cawn-atwrt,
END OF tp_charac_value.
TYPES: BEGIN OF tp_submit_records,
header_guid LIKE wty_pnwtyv_dia-header_guid,
versn LIKE wty_pnwtyv_dia-versn,
prev_version LIKE wty_pnwtyv_dia-prev_version,
kateg LIKE wty_pnwtyv_dia-kateg,
aktiv LIKE wty_pnwtyv_dia-aktiv,
pnguid LIKE wty_pnwtyv_dia-pnguid,
knumv LIKE wty_pnwtyv_dia-knumv,
END OF tp_submit_records.
TYPES: BEGIN OF tp_cond_table,
kschl LIKE konv-kschl,
zaehk LIKE konv-zaehk,
kinak LIKE konv-kinak,
kbetr LIKE konv-kbetr,
END OF tp_cond_table.
*$*$----------------------------------------------------------------$*$*
*$*$---I N T E R N A L T A B L E S--------------------------------$*$*
*$*$----------------------------------------------------------------$*$*
* Report table to display with ALV
DATA: t_detail_info TYPE STANDARD TABLE OF zwty_claim_avg_rep_det
WITH HEADER LINE
INITIAL SIZE 0.
FIELD-SYMBOLS:<fs_detail_info> LIKE LINE OF t_detail_info.
DATA: t_summary_alv TYPE STANDARD TABLE OF zwty_claim_avg_rep_sum
WITH HEADER LINE
INITIAL SIZE 0.
FIELD-SYMBOLS:<fs_summary_alv> LIKE LINE OF t_summary_alv.
DATA: t_detail_alv TYPE STANDARD TABLE OF zwty_claim_avg_rep_det
WITH HEADER LINE
INITIAL SIZE 0.
FIELD-SYMBOLS:<fs_detail_alv> LIKE LINE OF t_detail_alv.
DATA: it_submit_records TYPE HASHED TABLE OF tp_submit_records
WITH UNIQUE KEY header_guid versn
WITH HEADER LINE
INITIAL SIZE 0.
FIELD-SYMBOLS: <fs_submit_rec_vs2> TYPE tp_submit_records.
DATA: it_period TYPE HASHED TABLE OF lt_period
WITH UNIQUE KEY year poper
WITH HEADER LINE
INITIAL SIZE 0.
FIELD-SYMBOLS: <fs_it_period> LIKE LINE OF it_period.
DATA: it_pvwty_dia_all TYPE wty_pvwty_dia_tab.
FIELD-SYMBOLS: <fs_pvwty_dia_es3> LIKE LINE OF it_pvwty_dia_all.
DATA: it_cond_table TYPE STANDARD TABLE OF tp_cond_table
WITH HEADER LINE
INITIAL SIZE 0.
FIELD-SYMBOLS: <fs_cond_table> TYPE tp_cond_table.
*$*$----------------------------------------------------------------$*$*
*$*$---G L O B A L D A T A ---------------------------------------$*$*
*$*$----------------------------------------------------------------$*$*
DATA: gt_fieldcat_sum TYPE slis_t_fieldcat_alv,
gt_fieldcat_det TYPE slis_t_fieldcat_alv,
gtw_fieldcat LIKE LINE OF gt_fieldcat_sum,
gt_top_of_page TYPE slis_t_listheader,
gtw_top_of_page LIKE LINE OF gt_top_of_page,
gt_end_of_page TYPE slis_t_listheader,
gtw_end_of_page LIKE LINE OF gt_end_of_page,
gs_layout TYPE slis_layout_alv,
gt_excluding TYPE slis_t_extab,
gtw_excluding LIKE LINE OF gt_excluding,
gs_variant1 TYPE disvariant,
gs_variant2 TYPE disvariant,
eventcat TYPE slis_t_event, "EVENEMENT
eventcat_ln LIKE LINE OF eventcat, "LIGNE D'EVENEMENT
gt_sort TYPE slis_t_sortinfo_alv,
gtw_sort LIKE LINE OF gt_sort.
DATA: wa_lis_progname LIKE sy-cprog,
wa_low_date TYPE d,
wa_high_date TYPE d,
wa_index_mat TYPE i,
wa_index_link TYPE i,
wa_level_alv TYPE i.
DATA: g_callback_pgm(40) TYPE c,
g_callback_user_command(30) TYPE c.
DATA: my_print TYPE slis_print_alv.
FIELD-SYMBOLS: <fs_pvwty_dia> TYPE wty_pvwty_dia.
* SELECTION SCREEN *
SELECTION-SCREEN SKIP 1.
SELECTION-SCREEN BEGIN OF BLOCK post WITH FRAME TITLE text-001.
SELECT-OPTIONS: s_cpudt FOR s084-spmon NO-EXTENSION,
s_postdt FOR wty_pnwtyv_dia-fkdat NO-EXTENSION.
SELECTION-SCREEN END OF BLOCK post.
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-002.
SELECT-OPTIONS: s_vend FOR pnwtyv-v_parnr NO INTERVALS.
SELECT-OPTIONS: s_clgrp FOR wty_pnwtyh_dia-clmgrp.
SELECTION-SCREEN SKIP 1.
SELECT-OPTIONS: s_model FOR wty_pnwtyh_dia-z_wty_model.
SELECT-OPTIONS: s_matnr FOR mara-matnr.
SELECTION-SCREEN END OF BLOCK b1.
SELECTION-SCREEN BEGIN OF BLOCK lay WITH FRAME TITLE text-004.
PARAMETERS: varn1 TYPE slis_vari MEMORY ID fit_alv_gl, "Dis. variant
varn2 TYPE slis_vari.
SELECTION-SCREEN END OF BLOCK lay.
*$*$----------------------------------------------------------------$*$*
*$*$---A T S E L E C T I O N - S C R E E N-------------------------$*$*
*$*$----------------------------------------------------------------$*$*
AT SELECTION-SCREEN ON VALUE-REQUEST FOR varn1.
PERFORM alv_variant_f4 USING '0001' CHANGING varn1.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR varn2.
PERFORM alv_variant_f4 USING '0002' CHANGING varn2.
AT SELECTION-SCREEN ON BLOCK post. "Validate posting parameters
PERFORM validate_posting_parameter.
AT SELECTION-SCREEN ON s_model. "Validate model
PERFORM validate_model.
AT SELECTION-SCREEN ON s_vend. "Validate vendor
PERFORM validate_vendor.
AT SELECTION-SCREEN ON s_matnr. "Validate material
PERFORM validate_material.
AT SELECTION-SCREEN ON s_clgrp. "Validate claim group
PERFORM validate_claim_group.
AT SELECTION-SCREEN OUTPUT.
* Initialization.
INITIALIZATION.
* Initialize default display variant for ALV report
CLEAR gs_variant1.
MOVE sy-repid TO: gs_variant1-report,
gs_variant2-report.
gs_variant1-handle = '0001'.
gs_variant2-handle = '0002'.
wa_lis_progname = sy-repid.
PERFORM set_default_variant CHANGING gs_variant1
varn1.
PERFORM set_default_variant CHANGING gs_variant2
varn2.
PERFORM get_fin_period USING c_year_low c_year_high.
PERFORM set_period_to_analyse.
*$*$----------------------------------------------------------------$*$*
*$*$---S T A R T - O F - S E L E C T I O N--------------------------$*$*
*$*$----------------------------------------------------------------$*$*
START-OF-SELECTION.
PERFORM select_claim_to_process.
*$*$----------------------------------------------------------------$*$*
*$*$---E N D - O F - S E L E C T I O N------------------------------$*$*
*$*$----------------------------------------------------------------$*$*
END-OF-SELECTION.
CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'
EXPORTING
* PERCENTAGE = 0
text = text-m02.
IF sy-batch = 'X'.
PERFORM set_print_alv_grid.
ENDIF.
PERFORM show_alv_grid.
*& Form PRINT_DETAIL_ALV
FORM show_alv_grid.
* Prepare ALV_GRID before display
* ===============================
PERFORM init_field.
PERFORM init_layout.
PERFORM init_fieldcat.
PERFORM init_excluding.
PERFORM init_event.
* SORT report_data BY bukrs werks.
PERFORM call_alv_list_display_level_1.
ENDFORM. " PRINT_DETAIL
*& Form VARIANT_F4 copied from RPCWCCK3
* Display a list of all available display variants for the ALV.
* <--P_varn1 Return the selected variant and return
FORM variant_f4 CHANGING p_varn1 TYPE disvariant-variant.
DATA: l_variant LIKE disvariant.
* Get the list of available variants for the report
l_variant-report = sy-repid.
CALL FUNCTION 'REUSE_ALV_VARIANT_F4'
EXPORTING
is_variant = l_variant
i_save = 'A'
IMPORTING
es_variant = l_variant.
p_varn1 = l_variant-variant.
ENDFORM. " VARIANT_F4
*& Form INIT_FIELD
FORM init_field.
MOVE sy-repid TO g_callback_pgm.
MOVE 'MY_USER_COMMAND' TO g_callback_user_command.
ENDFORM. " INIT_FIELD
*& Form INIT_LAYOUT
FORM init_layout.
gs_layout-window_titlebar = sy-title.
gs_layout-colwidth_optimize = 'X'.
gs_layout-expand_all = 'X'.
gs_layout-no_subtotals = ''.
gs_layout-key_hotspot = 'X'. " Afficher Hotspot
gs_layout-zebra = 'X'.
gs_layout-group_change_edit = 'X'.
gs_layout-f2code = 'DISPLAY'.
* gs_layout-max_linesize = 400.
* gs_layout-totals_only = 'X'.
ENDFORM. " INIT_LAYOUT
*& Form INIT_FIELDCAT
FORM init_fieldcat.
DATA: lt_fieldcatalog TYPE lvc_t_fcat,
ltw_fieldcatalog TYPE lvc_s_fcat.
REFRESH: lt_fieldcatalog,
gt_fieldcat_sum,
gt_fieldcat_det.
CLEAR gtw_sort.
REFRESH gt_sort.
* ==============================================
* Set the label column for summary report leve 1
* ==============================================
CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'
EXPORTING
i_structure_name = 'ZWTY_CLAIM_AVG_REP_SUM'
i_client_never_display = 'X'
CHANGING
ct_fieldcat = lt_fieldcatalog.
* FIELD pos sub up down Group
PERFORM create_sort USING: 'V_PARNR' 1 'X' 'X' ' ' 'X',
'NAME' 2 'X' 'X' ' ' 'X',
'MAKTX' 3 'X' 'X' ' ' 'X',
'MATNR' 4 'X' 'X' ' ' 'X'.
LOOP AT lt_fieldcatalog INTO ltw_fieldcatalog.
CLEAR: gtw_fieldcat.
MOVE-CORRESPONDING ltw_fieldcatalog TO gtw_fieldcat.
PERFORM set_alv_field_desc USING ltw_fieldcatalog '1'.
APPEND gtw_fieldcat TO gt_fieldcat_sum.
ENDLOOP.
PERFORM set_hot_spot TABLES gt_fieldcat_sum USING 'CLAIM_NB'.
* =========================================
* Field Catalog for Detail report (level 2)
* =========================================
REFRESH: lt_fieldcatalog.
CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'
EXPORTING
i_structure_name = 'ZWTY_CLAIM_AVG_REP_DET'
i_client_never_display = 'X'
CHANGING
ct_fieldcat = lt_fieldcatalog.
LOOP AT lt_fieldcatalog INTO ltw_fieldcatalog.
CLEAR: gtw_fieldcat.
MOVE-CORRESPONDING ltw_fieldcatalog TO gtw_fieldcat.
PERFORM set_alv_field_desc USING ltw_fieldcatalog '2'.
APPEND gtw_fieldcat TO gt_fieldcat_det.
ENDLOOP.
PERFORM set_hot_spot TABLES gt_fieldcat_det USING 'CLMNO'.
ENDFORM. " INIT_FIELDCAT
*& Form INIT_SORT
FORM create_sort USING p_fieldname p_spos
p_subtot TYPE char1
p_up TYPE char1
p_down TYPE char1
p_group TYPE char1.
CLEAR: gtw_sort.
gtw_sort-fieldname = p_fieldname.
gtw_sort-spos = p_spos.
gtw_sort-subtot = p_subtot.
gtw_sort-up = p_up.
gtw_sort-down = p_down.
gtw_sort-group = p_group.
APPEND gtw_sort TO gt_sort.
ENDFORM. "create_sort
*& Form INIT_EXCLUDING
* Exclude des option de l'application tool bar
FORM init_excluding.
CLEAR gtw_excluding.
REFRESH gt_excluding.
gtw_excluding-fcode = '&ABC'.
APPEND gtw_excluding TO gt_excluding.
ENDFORM. " INIT_EXCLUDING
*& Form call_alv_list_display_level_1
FORM call_alv_list_display_level_1.
* DATA: l_i_save VALUE 'U'. "User-specific variants only
DATA: l_i_save VALUE 'A'. "Any type of variants
gs_variant1-report = sy-repid.
gs_variant1-variant = varn1.
gs_layout-colwidth_optimize = true.
wa_level_alv = 1.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = g_callback_pgm
i_callback_user_command = g_callback_user_command
is_layout = gs_layout
it_fieldcat = gt_fieldcat_sum
it_excluding = gt_excluding
it_sort = gt_sort
i_save = l_i_save
is_variant = gs_variant1
it_events = eventcat
is_print = my_print
TABLES
t_outtab = t_summary_alv
EXCEPTIONS
program_error = 1
OTHERS = 2.
ENDFORM. " call_alv_list_display_level_1
*& Form INIT_EVENT
* Determine quelle routine a executer selon l'event
FORM init_event.
eventcat_ln-name = 'TOP_OF_PAGE'.
eventcat_ln-form = 'ALV_PAGE_HEADER'.
APPEND eventcat_ln TO eventcat.
eventcat_ln-name = 'END_OF_PAGE'.
eventcat_ln-form = 'FOOTER_PAGE'.
APPEND eventcat_ln TO eventcat.
ENDFORM. " INIT_EVENT
*& Form ALV_PAGE_HEADER
FORM alv_page_header.
DATA: l_date_time(22),
l_char7(7),
l_char10(10).
DATA: p_date(10) TYPE c.
DATA: p_time(8) TYPE c.
DATA: p_name(80) TYPE c.
* Format current date and time
WRITE sy-datum TO p_date USING EDIT MASK '____/__/__'.
WRITE sy-uzeit TO p_time USING EDIT MASK '__:__:__'.
CONCATENATE p_date '-' p_time
INTO l_date_time SEPARATED BY space.
* Set the user name
SELECT SINGLE
persnumber addrnumber INTO (usr21-persnumber, usr21-addrnumber)
FROM usr21
WHERE bname = sy-uname.
SELECT SINGLE name_first name_last
INTO (adrp-name_first, adrp-name_last )
FROM adrp
WHERE persnumber = usr21-persnumber.
CONCATENATE adrp-name_first adrp-name_last INTO p_name
SEPARATED BY space.
REFRESH gt_top_of_page.
CLEAR gtw_top_of_page.
* Program title ------------------------------------------------
CLEAR gtw_top_of_page.
gtw_top_of_page-typ = 'H'.
gtw_top_of_page-info = sy-title.
APPEND gtw_top_of_page TO gt_top_of_page.
CLEAR gtw_top_of_page.
gtw_top_of_page-typ = 'S'.
gtw_top_of_page-key = 'Parameters :'.
* Period / Posting Date -----------------------------------------
IF s_cpudt[] IS INITIAL.
WRITE s_postdt-low TO l_char10.
CONCATENATE gtw_top_of_page-info
text-104
l_char10
INTO gtw_top_of_page-info SEPARATED BY space.
IF NOT s_postdt-high IS INITIAL.
WRITE s_postdt-high TO l_char10.
CONCATENATE gtw_top_of_page-info
text-105
l_char10
INTO gtw_top_of_page-info SEPARATED BY space.
ENDIF.
APPEND gtw_top_of_page TO gt_top_of_page.
ELSE.
CONCATENATE s_cpudt-low(4) '/' s_cpudt-low+4(2)
INTO l_char7 .
CONCATENATE gtw_top_of_page-info
text-103
l_char7
INTO gtw_top_of_page-info SEPARATED BY space.
IF s_cpudt-high NE space.
CONCATENATE s_cpudt-high(4) '/' s_cpudt-high+4(2)
INTO l_char7 .
CONCATENATE gtw_top_of_page-info
text-105
l_char7
INTO gtw_top_of_page-info SEPARATED BY space.
ENDIF.
APPEND gtw_top_of_page TO gt_top_of_page.
ENDIF.
* Display wich level we display -----------------------------
* IF wa_level_alv > 1.
* CLEAR gtw_top_of_page.
* IF wa_level_alv = 2.
* gtw_top_of_page-info = t_summary_alv-v_parnr.
* SHIFT gtw_top_of_page-info LEFT DELETING LEADING '0'.
* ENDIF.
* gtw_top_of_page-typ = 'S'.
* gtw_top_of_page-key = 'Partner:'.
* APPEND gtw_top_of_page TO gt_top_of_page.
* ENDIF.
* Executed by -----------------------------------------------
CLEAR gtw_top_of_page.
gtw_top_of_page-typ = 'S'.
gtw_top_of_page-key = 'Report executed by :'.
gtw_top_of_page-info = p_name.
* * Date & time of execution --------------------------------
APPEND gtw_top_of_page TO gt_top_of_page.
gtw_top_of_page-key = 'DATE :'.
gtw_top_of_page-info = l_date_time.
APPEND gtw_top_of_page TO gt_top_of_page.
* Name of the report ----------------------------------------
CLEAR gtw_top_of_page.
gtw_top_of_page-typ = 'A'.
* LS_LINE-KEY: not used for this type
gtw_top_of_page-info = sy-repid.
APPEND gtw_top_of_page TO gt_top_of_page.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
it_list_commentary = gt_top_of_page.
* IF sy-batch = 'X' AND sy-linsz > 255 AND l_ctr_newpage = 0.
* NEW-PAGE PRINT ON LINE-SIZE 255. "Pour wrapper !!!!!!
* ENDIF.
ENDFORM. "ALV_PAGE_HEADER
*& Form footer_page
FORM footer_page.
DATA: l_footer(300),
l_page_no(5).
l_page_no = sy-pagno.
CONCATENATE 'Page' l_page_no INTO l_footer SEPARATED BY space.
SKIP 2.
WRITE:/001 l_footer(sy-linsz) CENTERED.
ENDFORM. "footer_page
*& Form MY_USER_COMMAND
* text
* -->P_SY_UCOMM text
* -->P_GS_SELFIELD text
FORM my_user_command USING p_sy_ucomm
p_gs_selfield TYPE slis_selfield.
DATA: l_claim_no LIKE mcshier-hiername,
lv_tcode_last(15).
* ======================================================
* Call TX WTY to display the claim. Only possible at the
* detail report(level 3)
* ======================================================
CASE p_gs_selfield-fieldname.
WHEN 'CLMNO'.
READ TABLE t_detail_alv INDEX p_gs_selfield-tabindex.
SHIFT t_detail_alv-clmno LEFT DELETING LEADING '0'.
l_claim_no = t_detail_alv-clmno.
CONCATENATE sy-tcode syst-modno
INTO lv_tcode_last.
EXPORT wty_tcode_last_memoid FROM lv_tcode_last TO MEMORY
ID 'WTY_TCODE_LAST_MEMOID'.
SET PARAMETER ID 'CLMNO' FIELD l_claim_no.
CALL TRANSACTION 'WTY' AND SKIP FIRST SCREEN.
WHEN 'CLAIM_NB'.
* =====================================
* Display the next level of information
* =====================================
CASE wa_level_alv.
WHEN 1.
REFRESH: t_detail_alv.
wa_level_alv = 2.
READ TABLE t_summary_alv INDEX p_gs_selfield-tabindex.
LOOP AT t_detail_info
ASSIGNING <fs_detail_info>
WHERE v_parnr EQ t_summary_alv-v_parnr
AND crncy EQ t_summary_alv-crncy
AND item_type EQ t_summary_alv-item_type
AND ov_meinh EQ t_summary_alv-ov_meinh
AND iv_meinh EQ t_summary_alv-iv_meinh
AND matnr EQ t_summary_alv-matnr.
MOVE-CORRESPONDING <fs_detail_info> TO t_detail_alv.
APPEND t_detail_alv.
ENDLOOP.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = g_callback_pgm
i_callback_user_command = g_callback_user_command
is_layout = gs_layout
it_fieldcat = gt_fieldcat_det
it_excluding = gt_excluding
* it_sort = gt_sort
i_save = c_save
is_variant = gs_variant2
it_events = eventcat
is_print = my_print
TABLES
t_outtab = t_detail_alv
EXCEPTIONS
program_error = 1
OTHERS = 2.
wa_level_alv = 1.
ENDCASE.
ENDCASE.
ENDFORM. " MY_USER_COMMAND
* FORM PRINT_ALV_GRID *
* Print the report not on screen for special batch processing. *
* --> IT Table to print - Z_HRF_BEN_CONF_FLEX
FORM set_print_alv_grid.
my_print-print = 'X'. "Force printing
my_print-no_print_selinfos = 'X'.
my_print-no_print_listinfos = 'X'.
my_print-no_new_page = ''. "Separate spool files
my_print-prnt_title = 'X'.
my_print-prnt_info = 'X'.
my_print-reserve_lines = 3.
ENDFORM. "set_print_alv_grid
*& Form ALV_VARIANT_F4
FORM alv_variant_f4 USING p_handle
CHANGING p_vari.
DATA: rs_variant LIKE disvariant.
DATA: nof4 TYPE c.
CLEAR nof4.
LOOP AT SCREEN.
IF screen-name = p_vari.
IF screen-input = 0.
nof4 = 'X'.
ENDIF.
ENDIF.
ENDLOOP.
rs_variant-report = sy-repid.
rs_variant-username = sy-uname.
rs_variant-handle = p_handle.
CALL FUNCTION 'REUSE_ALV_VARIANT_F4'
EXPORTING
is_variant = rs_variant
i_save = 'A'
IMPORTING
es_variant = rs_variant
EXCEPTIONS
OTHERS = 1.
IF sy-subrc = 0 AND nof4 EQ space.
p_vari = rs_variant-variant.
ENDIF.
ENDFORM. " ALV_VARIANT_F4
*& Form validate_model
* text
* --> p1 text
* <-- p2 text
FORM validate_model .
DATA: l_matnr LIKE mara-matnr.
SELECT SINGLE matnr
INTO l_matnr
FROM mara
WHERE matnr IN s_model
AND mtart EQ 'ZKMA'.
IF sy-subrc NE 0.
MESSAGE e000 WITH text-e07.
ENDIF.
ENDFORM. " validate_model
*& Form select_claim_to_process
* text
* --> p1 text
* <-- p2 text
FORM select_claim_to_process .
DATA: lt_pnwtyh_dia TYPE wty_pnwtyh_dia_tab,
lt_pnwtyv_dia TYPE wty_pnwtyv_dia_tab,
lt_pvwty_dia TYPE wty_pvwty_dia_tab,
lt_pnwtyh_dia_tmp TYPE wty_pnwtyh_dia_tab,
lt_pnwtyv_dia_tmp TYPE wty_pnwtyv_dia_tab,
lt_pvwty_dia_tmp TYPE wty_pvwty_dia_tab,
lt_pvwty_dia_mat TYPE wty_pvwty_dia_tab,
lt_sel_fkdat TYPE pwty_sel_fkdat_pt,
lt_sel_v_parnr TYPE pwty_sel_v_parnr_pt,
lt_sel_clmty TYPE pwty_sel_clmty_pt,
lt_sel_clmgrp TYPE pwty_sel_clmgrp_pt.
DATA: lst_sel_fkdat LIKE LINE OF lt_sel_fkdat,
lst_sel_clmty LIKE LINE OF lt_sel_clmty.
DATA: BEGIN OF lt_clmno OCCURS 0,
clmno LIKE pnwtyh-clmno,
END OF lt_clmno,
lt_clmno_tmp LIKE lt_clmno OCCURS 0,
lt_claim TYPE pwty_sel_clmno_pt,
wa_clmno LIKE LINE OF lt_claim.
DATA: l_nb_claim TYPE i.
RANGES: lr_model FOR wty_pnwtyh_dia-z_wty_model.
FIELD-SYMBOLS: <lfs_pnwtyh_dia> LIKE LINE OF lt_pnwtyh_dia,
<lfs_pnwtyv_dia> LIKE LINE OF lt_pnwtyv_dia,
<lfs_pvwty_dia_es2> LIKE LINE OF lt_pvwty_dia,
<lfs_pvwty_dia_mat> LIKE LINE OF lt_pvwty_dia_mat.
REFRESH: lt_pnwtyh_dia, lt_pnwtyv_dia,lt_pvwty_dia, lt_sel_clmty,
lr_model, t_detail_info, t_summary_alv, lt_pvwty_dia_mat.
CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'
EXPORTING
* PERCENTAGE = 0
text = text-m01. "Extracting claim
* ========================
* Get the Claim to process
* ========================
* SELECT clmno
* INTO TABLE lt_clmno
* FROM pnwtyh
* WHERE z_wty_convflg EQ space
* AND z_wty_error EQ space
* wa_clmno-sign = 'I'.
* wa_clmno-option = 'EQ'.
* LOOP AT lt_clmno.
* wa_clmno-low = lt_clmno-clmno.
* APPEND wa_clmno TO lt_claim.
* ENDLOOP.
lst_sel_fkdat-sign = 'I'.
lst_sel_fkdat-option = 'BT'.
lst_sel_fkdat-low = wa_low_date.
lst_sel_fkdat-high = wa_high_date.
APPEND lst_sel_fkdat TO lt_sel_fkdat.
lst_sel_clmty-sign = 'E'.
lst_sel_clmty-option = 'EQ'.
lst_sel_clmty-low = 'ZSBC'.
APPEND lst_sel_clmty TO lt_sel_clmty.
lt_sel_v_parnr[] = s_vend[].
lt_sel_clmgrp[] = s_clgrp[].
CALL FUNCTION 'PVSDBWTY_CLAIM_SELECT'
EXPORTING
it_sel_fkdat = lt_sel_fkdat
it_sel_clmgrp = lt_sel_clmgrp
it_sel_v_parnr = lt_sel_v_parnr
it_sel_clmty = lt_sel_clmty
* it_sel_clmno = lt_claim
IMPORTING
et_pnwtyh_dia = lt_pnwtyh_dia
et_pnwtyv_dia = lt_pnwtyv_dia
et_pvwty_dia = lt_pvwty_dia
EXCEPTIONS
no_entry_found = 1
authority_failed = 2
OTHERS = 3.
IF sy-subrc = 3 .
MESSAGE e309(wty) .
ENDIF .
CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'
EXPORTING
* PERCENTAGE = 0
text = text-m03. "Extracting claim
LOOP AT lt_pvwty_dia
ASSIGNING <fs_pvwty_dia>
WHERE poskt_cust = 'MAT'.
INSERT <fs_pvwty_dia> INTO TABLE lt_pvwty_dia_mat.
ENDLOOP.
it_pvwty_dia_all[] = lt_pvwty_dia[].
SORT lt_pnwtyh_dia BY pnguid.
SORT lt_pvwty_dia BY version_guid z_wty_posnr_hier.
SORT lt_pvwty_dia_mat BY version_guid.
SORT it_pvwty_dia_all BY version_guid posnr.
* Keep Version record OC or IV in a separate table for later use
LOOP AT lt_pnwtyv_dia
ASSIGNING <lfs_pnwtyv_dia>.
it_submit_records-header_guid = <lfs_pnwtyv_dia>-header_guid.
it_submit_records-versn = <lfs_pnwtyv_dia>-versn.
it_submit_records-prev_version = <lfs_pnwtyv_dia>-prev_version.
it_submit_records-kateg = <lfs_pnwtyv_dia>-kateg.
it_submit_records-aktiv = <lfs_pnwtyv_dia>-aktiv.
it_submit_records-knumv = <lfs_pnwtyv_dia>-knumv.
it_submit_records-pnguid = <lfs_pnwtyv_dia>-pnguid.
INSERT TABLE it_submit_records.
ENDLOOP.
* =============
* Process Claim
* =============
LOOP AT lt_pnwtyv_dia
ASSIGNING <lfs_pnwtyv_dia>
WHERE aktiv EQ true "Active version only
AND kateg EQ 'IV' "Category
AND fi_doc_exist EQ 'X'.
CLEAR: t_detail_info, t_summary_alv.
* Read Header detail
READ TABLE lt_pnwtyh_dia
WITH KEY pnguid = <lfs_pnwtyv_dia>-header_guid
ASSIGNING <lfs_pnwtyh_dia>
BINARY SEARCH.
* Claim must be without error -----------------------------
IF sy-subrc NE 0 OR
<lfs_pnwtyh_dia>-z_wty_error = true OR
<lfs_pnwtyh_dia>-z_wty_convflg = true.
CONTINUE. "Rejected this Claim
ENDIF.
* Check Model
IF <lfs_pnwtyh_dia>-z_wty_model IN s_model.
ELSE.
CONTINUE. "Rejected this Claim
ENDIF.
* Read first "MAT" Item information ------------------
READ TABLE lt_pvwty_dia_mat
WITH KEY version_guid = <lfs_pnwtyv_dia>-pnguid
ASSIGNING <lfs_pvwty_dia_mat>
BINARY SEARCH.
wa_index_mat = sy-tabix.
IF sy-subrc NE 0.
CONTINUE. "Rejected this Claim
ENDIF.
* ====================================================
* Process all item "MAT" linked to the current version
* ====================================================
WHILE sy-subrc = 0
AND
<lfs_pvwty_dia_mat>-version_guid = <lfs_pnwtyv_dia>-pnguid.
IF <lfs_pvwty_dia_mat>-matnr IN s_matnr.
* ======================================
* Process Items linked to the "MAT" Item
* ======================================
READ TABLE lt_pvwty_dia
WITH KEY version_guid = <lfs_pnwtyv_dia>-pnguid
z_wty_posnr_hier = <lfs_pvwty_dia_mat>-posnr
ASSIGNING <lfs_pvwty_dia_es2>
BINARY SEARCH.
wa_index_link = sy-tabix.
DO. "Execute only ONCE (to process all items linked to the)
"MAT Item
IF sy-subrc NE 0.
EXIT. "Exit the DO loop
ENDIF.
WHILE sy-subrc = 0
AND
<lfs_pvwty_dia_es2>-version_guid =
<lfs_pnwtyv_dia>-pnguid
AND
<lfs_pvwty_dia_es2>-z_wty_posnr_hier =
<lfs_pvwty_dia_mat>-posnr.
IF <lfs_pvwty_dia_es2>-valiv EQ c_zero.
ELSE.
* Initialize the detail information to display ---------
CLEAR: t_detail_info.
t_detail_info-v_parnr = <lfs_pnwtyv_dia>-v_parnr.
t_detail_info-matnr = <lfs_pvwty_dia_mat>-matnr.
t_detail_info-item_type = <lfs_pvwty_dia_es2>-poskt_cust.
t_detail_info-iv_versn = <lfs_pnwtyv_dia>-versn.
t_detail_info-clmno = <lfs_pnwtyh_dia>-clmno.
t_detail_info-crncy = <lfs_pnwtyv_dia>-v_crncy.
t_detail_info-iv_meinh = <lfs_pvwty_dia_es2>-meinh.
t_detail_info-z_wty_model = <lfs_pnwtyh_dia>-z_wty_model.
ADD <lfs_pvwty_dia_es2>-quant TO
t_detail_info-iv_appr_qty.
SELECT SINGLE kbetr
INTO t_detail_info-iv_appr_rate
FROM konv
WHERE knumv = <lfs_pnwtyv_dia>-knumv
AND kposn = <lfs_pvwty_dia_es2>-posnr
AND kschl = 'ZVAP'
AND kinak = space.
* t_detail_info-flat_indic = <lfs_pnwtyh_dia>-z_wty_model
* t_detail_info-pric_indic = <lfs_pnwtyh_dia>-z_wty_serno
PERFORM get_the_submit_record
USING <lfs_pnwtyv_dia>-header_guid
<lfs_pnwtyv_dia>-prev_version
<lfs_pnwtyh_dia>-clmno
<lfs_pvwty_dia_es2>-posnr.
ENDIF.
* =====================
* Read next Linked item
* =====================
PERFORM read_next_item TABLES lt_pvwty_dia
CHANGING wa_index_link.
IF sy-subrc = 0.
ASSIGN <fs_pvwty_dia> TO <lfs_pvwty_dia_es2>.
ENDIF.
ENDWHILE.
EXIT. "Exit the DO loop
ENDDO.
ENDIF.
* ====================
* Read next "MAT" item
* ====================
PERFORM read_next_item TABLES lt_pvwty_dia_mat
CHANGING wa_index_mat.
IF sy-subrc = 0.
ASSIGN <fs_pvwty_dia> TO <lfs_pvwty_dia_mat>.
ENDIF.
ENDWHILE.
ENDLOOP.
* ========================
* Get the description text
* ========================
LOOP AT t_detail_info
ASSIGNING <fs_detail_info>.
* Get the model text -------------------------------------
SELECT SINGLE mfrpn
INTO <fs_detail_info>-z_wty_model
FROM mara
WHERE matnr = <fs_detail_info>-z_wty_model.
* Set Node name to regroup later by group -----------------
SELECT SINGLE name1
INTO <fs_detail_info>-name
FROM lfa1
WHERE lifnr = <fs_detail_info>-v_parnr.
* Set Node name to regroup later by group -----------------
SELECT SINGLE maktx
INTO <fs_detail_info>-maktx
FROM makt
WHERE matnr = <fs_detail_info>-matnr
AND spras = sy-langu.
MOVE-CORRESPONDING <fs_detail_info> TO t_summary_alv.
t_summary_alv-claim_nb = 1.
COLLECT t_summary_alv.
ENDLOOP.
* ===========================================
* Calculate the average of the summary report
* ===========================================
LOOP AT t_summary_alv
ASSIGNING <fs_summary_alv>.
DIVIDE <fs_summary_alv>-ov_prop_qty BY <fs_summary_alv>-claim_nb.
DIVIDE <fs_summary_alv>-ov_prop_rate BY <fs_summary_alv>-claim_nb.
DIVIDE <fs_summary_alv>-ov_submit_qty BY <fs_summary_alv>-claim_nb.
DIVIDE <fs_summary_alv>-ov_submit_rate BY <fs_summary_alv>-claim_nb.
DIVIDE <fs_summary_alv>-iv_appr_qty BY <fs_summary_alv>-claim_nb.
DIVIDE <fs_summary_alv>-iv_appr_rate BY <fs_summary_alv>-claim_nb.
ENDLOOP.
DELETE t_summary_alv WHERE v_parnr NOT IN s_vend.
ENDFORM. " select_claim_to_process
*& Form SET_HOT_SPOT
* text
* -->P_0287 text
FORM set_hot_spot TABLES p_fieldcat TYPE slis_t_fieldcat_alv
USING value(p_field).
FIELD-SYMBOLS: <lfs_field_cat> LIKE LINE OF gt_fieldcat_sum.
READ TABLE p_fieldcat WITH KEY fieldname = p_field
ASSIGNING <lfs_field_cat>.
IF sy-subrc = 0.
<lfs_field_cat>-hotspot = 'X'.
<lfs_field_cat>-key = 'X'.
ENDIF.
ENDFORM. " SET_HOT_SPOT
*& Form set_screen_text
* text
* -->P_0997 text
FORM set_screen_text USING p_label
p_text.
MOVE p_label TO :gtw_fieldcat-seltext_l,
gtw_fieldcat-seltext_m,
gtw_fieldcat-seltext_s,
gtw_fieldcat-reptext_ddic.
IF p_text NE space.
gtw_fieldcat-ddictxt = p_text.
ENDIF.
ENDFORM. " set_screen_text
*& Form set_default_variant
* text
* -->P_0822 text
* <--P_GS_VARIANT1 text
FORM set_default_variant CHANGING p_variant TYPE disvariant
p_disvar TYPE slis_vari.
* Get default variant
CALL FUNCTION 'REUSE_ALV_VARIANT_DEFAULT_GET'
EXPORTING
i_save = c_save
CHANGING
cs_variant = p_variant
EXCEPTIONS
not_found = 2.
IF sy-subrc = 0.
p_disvar = p_variant-variant.
ENDIF.
ENDFORM. " set_default_variant
*& Form validate_vendor
* text
* --> p1 text
* <-- p2 text
FORM validate_vendor.
DATA: l_lifnr LIKE lfa1-lifnr.
IF s_vend[] IS INITIAL.
ELSE.
SELECT SINGLE lifnr
INTO l_lifnr
FROM lfa1
WHERE lifnr IN s_vend.
IF sy-subrc NE 0.
MESSAGE e000 WITH text-e01.
ENDIF.
ENDIF.
ENDFORM. " validate_vendor
*& Form inform_claim_error
* text
* --> p1 text
* <-- p2 text
FORM inform_claim_error USING value(p_claim_no)
value(p_version).
DATA: l_text1(50),
l_text2(50).
CONCATENATE text-301
p_claim_no
INTO l_text1 SEPARATED BY space.
CONCATENATE text-302
p_version
text-303
INTO l_text2 SEPARATED BY space.
CALL FUNCTION 'POPUP_TO_INFORM'
EXPORTING
titel = text-200
txt1 = l_text1
txt2 = l_text2
txt3 = ' '
txt4 = text-304.
ENDFORM. " inform_claim_error
*& Form validate_posting_parameter
* text
* --> p1 text
* <-- p2 text
FORM validate_posting_parameter .
DATA: l_low_date TYPE d,
l_high_date TYPE d.
CLEAR: wa_low_date, wa_high_date.
* Posting parameters must be entered
IF s_cpudt[] IS INITIAL AND s_postdt[] IS INITIAL.
MESSAGE e000 WITH text-e04.
ENDIF.
* Posting paramters can't be intered at the same time
IF s_cpudt[] IS INITIAL OR s_postdt[] IS INITIAL.
ELSE.
MESSAGE e000 WITH text-e03.
ENDIF.
* Validate posting period ---------------------------------------------
IF s_postdt[] IS INITIAL.
READ TABLE s_cpudt INDEX 1.
IF s_cpudt-low IS INITIAL.
MESSAGE e000 WITH text-e03.
ENDIF.
PERFORM validate_period USING s_cpudt-low
CHANGING l_low_date
l_high_date.
wa_low_date = l_low_date.
wa_high_date = l_high_date.
IF s_cpudt-high IS INITIAL.
ELSE.
PERFORM validate_period USING s_cpudt-high
CHANGING l_low_date
l_high_date.
IF s_cpudt-high LT s_cpudt-low.
MESSAGE ID 'DB' TYPE 'E' NUMBER '650' .
ENDIF.
wa_high_date = l_high_date.
ENDIF.
ELSE.
* Validate posting date --------------------------------------------
READ TABLE s_postdt INDEX 1.
wa_low_date = s_postdt-low.
IF s_postdt-high IS INITIAL.
wa_high_date = wa_low_date.
ELSE.
wa_high_date = s_postdt-high.
ENDIF.
ENDIF.
ENDFORM. " validate_posting_parameter
*& Form get_fin_period
* Get the financial period from 1960 to 9999
* --> p1 text
* <-- p2 text
FORM get_fin_period USING value(p_year_low)
value(p_year_high).
DATA : BEGIN OF fp_table OCCURS 0,
periv LIKE t009b-periv, "FINANCIAL YEAR VARIANT
bdatj LIKE t009b-bdatj, "CALENDAR YEAR
bumon LIKE t009b-bumon, "MONTH
butag LIKE t009b-butag, "DAY OF MONTH
poper LIKE t009b-poper, "COST PERIOD
reljr LIKE t009b-reljr, "YEAR SHIFT
END OF fp_table.
DATA: l_fin_bdatj LIKE t009b-bdatj,
l_period_start TYPE d,
l_period_end TYPE d,
l_prev_period_end TYPE d,
l_prev_fin_bdatj LIKE t009b-bdatj,
l_prev_poper LIKE t009b-poper,
l_count TYPE n.
* Get the Fiscal year variant periods
SELECT periv bdatj bumon butag poper reljr
INTO TABLE fp_table
FROM t009b
WHERE periv = 'ZB'.
LOOP AT fp_table.
IF l_prev_period_end NE '00000000'.
l_period_start = l_prev_period_end + 1.
ENDIF.
CONCATENATE fp_table-bdatj fp_table-bumon fp_table-butag
INTO l_period_end.
l_prev_period_end = l_period_end.
l_fin_bdatj = fp_table-bdatj + fp_table-reljr.
IF c_year_low NE '' AND l_fin_bdatj LT p_year_low.
CONTINUE.
ELSEIF p_year_high NE '' AND l_fin_bdatj GT p_year_high.
CONTINUE.
ELSEIF p_year_low NE '' AND p_year_high EQ '' AND
l_fin_bdatj GT c_year_low.
CONTINUE.
ENDIF.
IF l_prev_fin_bdatj EQ l_fin_bdatj AND
l_prev_poper EQ fp_table-poper.
it_period-end = l_period_end.
MODIFY it_period TRANSPORTING end
WHERE year = it_period-year
AND poper = it_period-poper.
ELSE.
it_period-year = l_fin_bdatj.
it_period-poper = fp_table-poper+1.
it_period-start = l_period_start.
it_period-end = l_period_end.
INSERT TABLE it_period.
ENDIF.
l_prev_fin_bdatj = l_fin_bdatj.
l_prev_poper = fp_table-poper.
IF l_count EQ 0.
l_count = l_count + 1.
ENDIF.
ENDLOOP.
ENDFORM. " get_fin_period
*& Form set_period_to_analyse
* Find the fiscal period for a specific date
* --> p1 text
* <-- p2 text
FORM set_period_to_analyse.
LOOP AT it_period
ASSIGNING <fs_it_period>
WHERE start LE sy-datum
AND end GE sy-datum.
CONCATENATE <fs_it_period>-year
<fs_it_period>-poper
INTO s_cpudt-low.
s_cpudt-sign = 'I'.
s_cpudt-option = 'EQ'.
APPEND s_cpudt.
EXIT.
ENDLOOP.
ENDFORM. " set_period_to_analyse
*& Form validate_material
* text
* --> p1 text
* <-- p2 text
FORM validate_material .
DATA: l_matnr LIKE mara-matnr.
IF s_matnr[] IS INITIAL.
ELSE.
SELECT SINGLE matnr
INTO l_matnr
FROM mara
WHERE matnr IN s_matnr.
IF sy-subrc NE 0.
MESSAGE e000 WITH text-e02.
ENDIF.
ENDIF.
ENDFORM. " validate_material
*& Form validate_claim_group
* text
* --> p1 text
* <-- p2 text
FORM validate_claim_group .
DATA: l_clmgrp LIKE cwty006-clmgrp.
IF s_clgrp[] IS INITIAL.
ELSE.
SELECT SINGLE clmgrp
INTO l_clmgrp
FROM cwty006
WHERE clmgrp IN s_clgrp.
IF sy-subrc NE 0.
MESSAGE e000 WITH text-e06.
ENDIF.
ENDIF.
ENDFORM. " validate_claim_group
*& Form set_alv_field_desc
* text
* -->P_LTW_FIELDCATALOG text
* <--P_GTW_FIELDCAT text
FORM set_alv_field_desc USING value(p_fieldcat) TYPE lvc_s_fcat
value(p_level).
gtw_fieldcat-seltext_l = p_fieldcat-scrtext_l.
gtw_fieldcat-seltext_m = p_fieldcat-scrtext_m.
gtw_fieldcat-seltext_s = p_fieldcat-scrtext_s.
gtw_fieldcat-reptext_ddic = p_fieldcat-reptext.
CASE p_fieldcat-fieldname.
WHEN 'NAME'.
PERFORM set_screen_text USING 'Vendor Name' 'L'.
WHEN 'MAKTX'.
PERFORM set_screen_text USING 'Material Description' 'L'.
WHEN 'CLAIM_NB'.
PERFORM set_screen_text USING '#Claims' 'L'.
WHEN 'IV_MEINH'.
PERFORM set_screen_text USING 'IV UoM' 'L'.
WHEN 'OV_MEINH'.
PERFORM set_screen_text USING 'OV UoM' 'L'.
WHEN 'FLAT_INDIC'.
PERFORM set_screen_text USING 'Flat Rate Ind.' 'L'.
WHEN 'PRIC_INDIC'.
PERFORM set_screen_text USING 'Price Ind.' 'L'.
WHEN 'OV_PROP_QTY'.
IF p_level = 1. "Summary report
*BEGIN OF TR#D03K935718
* PERFORM set_screen_text USING 'OV avg. Prop. Qty' 'L'.
PERFORM set_screen_text USING 'Avg Prop Qty Sub' 'L'. "RFC2917
*END OF TR#D03K935718
ELSE.
PERFORM set_screen_text USING 'OV Prop. Qty' 'L'.
ENDIF.
WHEN 'OV_PROP_RATE'.
IF p_level = 1. "Summary report
*BEGIN OF TR#D03K935718
* PERFORM set_screen_text USING 'OV avg. Prop. Rate $' 'L'.
PERFORM set_screen_text USING 'Avg Prop Rate Sub' 'L'. "RFC2917
*END OF TR#D03K935718
ELSE.
PERFORM set_screen_text USING 'OV Prop. Rate $' 'L'.
ENDIF.
WHEN 'OV_SUBMIT_QTY'.
IF p_level = 1. "Summary report
*BEGIN OF TR#D03K935718
* PERFORM set_screen_text USING 'OV avg. Submit Qty' 'L'.
PERFORM set_screen_text USING 'Avg Qty Sub' 'L'. "RFC2917
*END OF TR#D03K935718
ELSE.
PERFORM set_screen_text USING 'OV Submit Qty' 'L'.
ENDIF.
WHEN 'OV_SUBMIT_RATE'.
IF p_level = 1. "Summary report
*BEGIN OF TR#D03K935718
* PERFORM set_screen_text USING 'OV avg. Submit Rate $' 'L'.
PERFORM set_screen_text USING 'Avg Rate Sub' 'L'. "RFC2917
*END OF TR#D03K935718
ELSE.
PERFORM set_screen_text USING 'OV Submit Rate $' 'L'.
ENDIF.
WHEN 'IV_APPR_QTY'.
IF p_level = 1. "Summary report
*BEGIN OF TR#D03K935718
* PERFORM set_screen_text USING 'IV Avg. Appr. Qty' 'L'.
PERFORM set_screen_text USING 'Avg Qty Pd' 'L'. "RFC2917
*END OF TR#D03K935718
ELSE.
PERFORM set_screen_text USING 'IV Appr. Qty' 'L'.
ENDIF.
WHEN 'IV_APPR_RATE'.
IF p_level = 1. "Summary report
*BEGIN OF TR#D03K935718
* PERFORM set_screen_text USING 'IV Avg. Appr. Rate $' 'L'.
PERFORM set_screen_text USING 'Avg Rate Pd' 'L'. "RFC2917
*END OF TR#D03K935718
ELSE.
PERFORM set_screen_text USING 'IV Appr. Rate $' 'L'.
ENDIF.
WHEN 'OV_VERSN'.
PERFORM set_screen_text USING 'OV Versn.' 'L'.
WHEN 'IV_VERSN'.
PERFORM set_screen_text USING 'IV Versn.' 'L'.
WHEN OTHERS.
gtw_fieldcat-ddictxt = p_fieldcat-selddictxt.
ENDCASE.
* Initialisation des Labels des entetes de colonne -------------------
gtw_fieldcat-no_out = p_fieldcat-no_out.
gtw_fieldcat-emphasize = p_fieldcat-emphasize.
gtw_fieldcat-fix_column = p_fieldcat-fix_column.
gtw_fieldcat-icon = p_fieldcat-icon.
gtw_fieldcat-no_zero = 'X'.
gtw_fieldcat-do_sum = p_fieldcat-do_sum.
ENDFORM. " set_alv_field_desc
*& Form validate_period
* text
* -->P_S_CPUDT_LOW text
FORM validate_period USING value(p_period)
CHANGING p_low_date TYPE d
p_high_date TYPE d.
DATA: l_year(4),
l_poper(2).
l_year = p_period(4).
l_poper = p_period+4(2).
READ TABLE it_period WITH KEY year = l_year
poper = l_poper
ASSIGNING <fs_it_period>.
IF sy-subrc NE 0.
MESSAGE e000 WITH text-e04.
ENDIF.
p_low_date = <fs_it_period>-start.
p_high_date = <fs_it_period>-end.
ENDFORM. " validate_period
*& Form read_next_item
* text
* --> p1 text
* <-- p2 text
FORM read_next_item TABLES pt_pvwty_dia STRUCTURE wty_pvwty_dia
CHANGING p_index TYPE i.
p_index = p_index + 1.
* Read next Item information ------------------------------
READ TABLE pt_pvwty_dia INDEX p_index
ASSIGNING <fs_pvwty_dia>.
ENDFORM. " read_next_item
*& Form get_the_submit_record
* text
* -->P_<LFS_PNWTYV_DIA>_HEADER_GUID text
* -->P_<LFS_PNWTYV_DIA>_PREV_VERSION text
FORM get_the_submit_record USING p_header_guid
p_prev_version
p_claim_no
p_posnr.
DATA: l_nb_while TYPE i,
l_zaehk LIKE konv-zaehk,
l_submit_found(1).
* ... USD1092841 - Add Start
FIELD-SYMBOLS: <fs_submit_rec_vs3> TYPE tp_submit_records.
* ... USD1092841 - Add End
CLEAR: l_submit_found, l_nb_while.
READ TABLE it_submit_records
WITH KEY header_guid = p_header_guid
versn = p_prev_version
ASSIGNING <fs_submit_rec_vs2>.
WHILE sy-subrc = 0 .
ADD 1 TO l_nb_while.
* if more than 30 loop(endless loop), it means somHi Siddarth
As per query, if you want to display sums automatically when you report is displayed for the first time, you'll have to modify your field catalog a bit.
To acheive this, you need to identify the field for which the totals are calculated ex- for every new material num, or for every new documnet number etc.
once you have this info, you identify the field that has to be totaled.
then while building your fieldcatalog, set this parameter :
l_wa_fieldcat-do_sum = 'X' for the field that has to be totaled.
and when you build a sort table then set this parameter:
l_t_sort TYPE slis_t_sortinfo_alv.
l_s_sort-subtot = 'X'. for the field for which totals are calculated.
Hope this helps.
Cheers
Ravish
Reward if helpful -
Information required on ALV report
Hello,
I am working on ALV report my requirement is I have to display output in colors like first line is as in white color and second line is light blue....this is applicable for all records in ALV Grid output.
Could you please help me how to get the alternate rows in color.
Thank you in Advance.Hi Kishore ,
See This links
Row color in ALV grid
selecting multiple rows in alv grid -
Help required in ALV Tree Control
Hi All,
I am using OO ALV tree Control in my Project every thing is working fine.
in treecontrol 'If we double click on Node I con it displays resultant screen'- its fine for us
'If we double click on Node Text it is displaying nothing means no Event is triggering.
my Requirement is tha 'it should work even if we click on Node Text' . Like in standard Applications SE15 .
Suggest some Methods regarding this. Note All these nodes are Dynamic Nodes comes from Data Base table.
Thanks in Adv.
MurthyJust check Tcode: DWDM.
Good no of example programs for oops tree are available there -
I am using function module ALV. I need a add a box on the side which comes in ALV. Second i need to control it such that the person can either select one record or mutilple. I know for getting the box there is a field in the layout. Help in this regards will be really helpful.
Regards,
GurpreetHi ,
The internal table which you are passing to the Function module of ALV ,in that just put a field of character type with length 1 say SEL(1) type C.
And in the layout just provide the fieldname for e.g. WA_LAYOUT-BOX_FIELDNAME = 'SEL'.
Below i am giving a sample code which gives ALV output , In this user can select the record and process it for the smartform . Observe the section of code carefully it will help you out.
any difficulty you can get bact to me.
Sample code:
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Project Name : SABIC Sustenance
Copyright : SABIC
*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Program Name : ZMSTR0022
Program Type : REPORT
Development Class : ZLE_MST
Originator : Nilesh Raut
Initiated on : 24 DEC 2007
Completed on : 30 DEc 2007
Final Release on :
Developed by : Sudeep Reddy Lingi
Transport Request No : DS1K9A04GO
*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Program Description :Report for application of permit
*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
NOTES -----This report is used by Permit unit at SMO to develop the
form of application of permit.
No Authorization Check Required
*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
REPORT ZMSTR0022.
CONSTANTS: C_FORM_NAME TYPE TDSFNAME VALUE 'ZMST_PER_APPL'.
TABLES :ZMST_PERMIT.
TYPE-POOLS: SLIS.
TYPE-POOLS :VRM. "Value Request Manager
TYPES:BEGIN OF STRU_ZMST_PERMIT,
CHECKBOX(1) TYPE C, " Checkbox
ZPIDNUM TYPE ZMST_PERMIT-ZPIDNUM, " Permit ID No.
ZARBDSC TYPE ZMST_PERMIT-ZARBDSC, " Arabic description
ZENGDSC TYPE ZMST_PERMIT-ZENGDSC, " English description
ZENQUAN TYPE ZMST_PERMIT-ZENQUAN, " Qty in English
ZARQUAN TYPE ZMST_PERMIT-ZARQUAN, " Qty in Arabic
ZENUOM TYPE ZMST_PERMIT-ZENUOM, " UoM
ZTARIFF TYPE ZMST_PERMIT-ZTARIFF, " Tariff No
ZARRPRT TYPE ZMST_PERMIT-ZARRPRT, " Port code
ZPRT_NAME(60) TYPE C, " Port name in Arabic
ZPERNUM TYPE ZMST_PERMIT-ZPERNUM, " Reference No
ZEFFDT TYPE ZMST_PERMIT-ZEFFDT, " Valid from
ZEXPDT TYPE ZMST_PERMIT-ZEXPDT, " Valid to
ZARB_DT(15) TYPE C, " Arabic Date of letter
ZNAME_AUTH(50) TYPE C, " Name of Authority
ZPERM_MIN(50) TYPE C, " Permit Ministry
END OF STRU_ZMST_PERMIT.
TYPES:BEGIN OF STRU_PERMIT,
ZPIDNUM TYPE ZMST_PERMIT-ZPIDNUM, " Permit ID No.
ZENGDSC TYPE ZMST_PERMIT-ZENGDSC, " English description
ZARBDSC TYPE ZMST_PERMIT-ZARBDSC, " Arabic description
ZTARIFF TYPE ZMST_PERMIT-ZTARIFF, " Tariff No
ZPERNUM TYPE ZMST_PERMIT-ZPERNUM, " Reference No
ZARRPRT TYPE ZMST_PERMIT-ZARRPRT, " Port code
ZEFFDT TYPE ZMST_PERMIT-ZEFFDT, " Valid from
ZEXPDT TYPE ZMST_PERMIT-ZEXPDT, " Valid to
END OF STRU_PERMIT.
TYPES: BEGIN OF STRU_FORM_PERMIT,
ZARBDSC TYPE ZMST_PERMIT-ZARBDSC, " Arabic description
ZENGDSC TYPE ZMST_PERMIT-ZENGDSC, " English description
ZENQUAN TYPE ZMST_PERMIT-ZENQUAN, " Qty in English
ZARQUAN TYPE ZMST_PERMIT-ZARQUAN, " Qty in Arabic
ZENUOM TYPE ZMST_PERMIT-ZENUOM, " UoM
ZTARIFF TYPE ZMST_PERMIT-ZTARIFF, " Tariff No
ZPRT_NAME(60) TYPE C, " Port name in Arabic
END OF STRU_FORM_PERMIT.
DATA: IT_PERMIT TYPE TABLE OF STRU_PERMIT.
DATA: IT_ZMST_PERMIT TYPE TABLE OF STRU_ZMST_PERMIT,
WA_ZMST_PERMIT LIKE LINE OF IT_ZMST_PERMIT,
IT_FORM_PERMIT TYPE TABLE OF STRU_FORM_PERMIT,
WA_FORM_PERMIT LIKE LINE OF IT_FORM_PERMIT.
DATA: WA_LAYOUT TYPE SLIS_LAYOUT_ALV,
WA_FIELDCAT TYPE SLIS_FIELDCAT_ALV,
IT_FIELDCAT TYPE TABLE OF SLIS_FIELDCAT_ALV.
DATA: W_FORM TYPE RS38L_FNAM.
DATA: W_NAME_AUTH(50),
W_ZARBDT(15),
W_ZENGDT(10),
W_ZPRT_NAME(70).
DATA: W_PARAM TYPE SSFCTRLOP.
DATA:W_NAME1 TYPE DFIES-FIELDNAME,
W_NAME2 TYPE HELP_INFO-DYNPROFLD .
SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-023.
SELECT-OPTIONS:S_PIDNUM FOR ZMST_PERMIT-ZPIDNUM ,
S_ENGDSC FOR ZMST_PERMIT-ZENGDSC NO INTERVALS LOWER CASE,
S_ARBDSC FOR ZMST_PERMIT-ZARBDSC NO INTERVALS LOWER CASE,
S_TARIFF FOR ZMST_PERMIT-ZTARIFF NO INTERVALS,
S_PERNUM FOR ZMST_PERMIT-ZPERNUM NO INTERVALS,
S_ARRPRT FOR ZMST_PERMIT-ZARRPRT NO INTERVALS MATCHCODE OBJECT ZMST_PORTS.
PARAMETER:P_PERTYP(2) TYPE C AS LISTBOX VISIBLE LENGTH 20.
SELECTION-SCREEN END OF BLOCK B1.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR S_PIDNUM-LOW.
W_NAME2 = 'S_PIDNUM-LOW'.
W_NAME1 = 'ZPIDNUM'.
PERFORM F4_HELP USING W_NAME1 W_NAME2 . "calling subroutine to provide desired F4 help
AT SELECTION-SCREEN ON VALUE-REQUEST FOR S_PIDNUM-HIGH.
W_NAME2 = 'S_PIDNUM-HIGH'.
W_NAME1 = 'ZPIDNUM'.
PERFORM F4_HELP USING W_NAME1 W_NAME2 . "calling subroutine to provide desired F4 help
AT SELECTION-SCREEN ON VALUE-REQUEST FOR S_ENGDSC-LOW.
W_NAME2 = 'S_ENGDSC'.
W_NAME1 = 'ZENGDSC'.
PERFORM F4_HELP USING W_NAME1 W_NAME2 . "calling subroutine to provide desired F4 help
AT SELECTION-SCREEN ON VALUE-REQUEST FOR S_ARBDSC-LOW.
W_NAME2 = 'S_ARBDSC'.
W_NAME1 = 'ZARBDSC'.
PERFORM F4_HELP USING W_NAME1 W_NAME2 . "calling subroutine to provide desired F4 help
AT SELECTION-SCREEN ON VALUE-REQUEST FOR S_TARIFF-LOW.
W_NAME2 = 'S_TARIFF'.
W_NAME1 = 'ZTARIFF'.
PERFORM F4_HELP USING W_NAME1 W_NAME2 . "calling subroutine to provide desired F4 help
AT SELECTION-SCREEN ON VALUE-REQUEST FOR S_PERNUM-LOW.
W_NAME2 = 'S_PERNUM'.
W_NAME1 = 'ZPERNUM'.
PERFORM F4_HELP USING W_NAME1 W_NAME2 . "calling subroutine to provide desired F4 help
AT SELECTION-SCREEN.
IF SY-UCOMM = 'ONLI'.
PERFORM CHECK_INPUT. "calling subroutine to check inputs on selection screen
ENDIF.
INITIALIZATION.
PERFORM VAL_PERTYP.
START-OF-SELECTION.
PERFORM FILL_FIELDCAT. "calling subroutine for filling fieldcatalog
If Permit ministry is blank then fetch data from ZMST_PERMIT otherwise from ZMST_PERMITHI--
IF P_PERTYP IS INITIAL.
PERFORM FETCH_PERMIT. "calling subroutine to fetch data from ZMST_PERMIT
ELSE.
PERFORM FETCH_PERMITHI. "calling subroutine to fetch data from ZMST_PERMITHI
ENDIF.
END-OF-SELECTION.
*& Form fill_fieldcat
text
--> p1 text
<-- p2 text
FORM FILL_FIELDCAT .
-passing the parameters of layout--
WA_LAYOUT-ZEBRA = 'X'.
WA_LAYOUT-COLWIDTH_OPTIMIZE = 'X'.
WA_LAYOUT-BOX_FIELDNAME = 'CHECKBOX'.
WA_LAYOUT-BOX_TABNAME = 'IT_ZMST_PERMIT'.
-Passing the parameters of fieldcatalog--
WA_FIELDCAT-FIELDNAME = 'ZPIDNUM'.
WA_FIELDCAT-TABNAME = 'IT_ZMST_PERMIT'.
WA_FIELDCAT-SELTEXT_M = TEXT-001.
APPEND WA_FIELDCAT TO IT_FIELDCAT.
CLEAR WA_FIELDCAT.
WA_FIELDCAT-FIELDNAME = 'ZARBDSC'.
WA_FIELDCAT-TABNAME = 'IT_ZMST_PERMIT'.
WA_FIELDCAT-SELTEXT_M = TEXT-002.
WA_FIELDCAT-EDIT = 'X'.
WA_FIELDCAT-LOWERCASE = 'X'.
WA_FIELDCAT-OUTPUTLEN = 120.
APPEND WA_FIELDCAT TO IT_FIELDCAT.
CLEAR WA_FIELDCAT.
WA_FIELDCAT-FIELDNAME = 'ZENGDSC'.
WA_FIELDCAT-TABNAME = 'IT_ZMST_PERMIT'.
WA_FIELDCAT-SELTEXT_M = TEXT-003.
WA_FIELDCAT-EDIT = 'X'.
WA_FIELDCAT-LOWERCASE = 'X'.
WA_FIELDCAT-OUTPUTLEN = 120.
APPEND WA_FIELDCAT TO IT_FIELDCAT.
CLEAR WA_FIELDCAT.
WA_FIELDCAT-FIELDNAME = 'ZENQUAN'.
WA_FIELDCAT-TABNAME = 'IT_ZMST_PERMIT'.
WA_FIELDCAT-SELTEXT_M = TEXT-004.
WA_FIELDCAT-EDIT = 'X'.
WA_FIELDCAT-LOWERCASE = 'X'.
APPEND WA_FIELDCAT TO IT_FIELDCAT.
CLEAR WA_FIELDCAT.
WA_FIELDCAT-FIELDNAME = 'ZARQUAN'.
WA_FIELDCAT-TABNAME = 'IT_ZMST_PERMIT'.
WA_FIELDCAT-SELTEXT_M = TEXT-005.
WA_FIELDCAT-EDIT = 'X'.
WA_FIELDCAT-LOWERCASE = 'X'.
APPEND WA_FIELDCAT TO IT_FIELDCAT.
CLEAR WA_FIELDCAT.
WA_FIELDCAT-FIELDNAME = 'ZENUOM'.
WA_FIELDCAT-TABNAME = 'IT_ZMST_PERMIT'.
WA_FIELDCAT-SELTEXT_M = TEXT-006.
WA_FIELDCAT-EDIT = 'X'.
WA_FIELDCAT-LOWERCASE = 'X'.
APPEND WA_FIELDCAT TO IT_FIELDCAT.
CLEAR WA_FIELDCAT.
WA_FIELDCAT-FIELDNAME = 'ZTARIFF'.
WA_FIELDCAT-TABNAME = 'IT_ZMST_PERMIT'.
WA_FIELDCAT-SELTEXT_M = TEXT-007.
WA_FIELDCAT-EDIT = 'X'.
WA_FIELDCAT-OUTPUTLEN = 15.
WA_FIELDCAT-LOWERCASE = 'X'.
APPEND WA_FIELDCAT TO IT_FIELDCAT.
CLEAR WA_FIELDCAT.
WA_FIELDCAT-FIELDNAME = 'ZARB_DT'.
WA_FIELDCAT-TABNAME = 'IT_ZMST_PERMIT'.
WA_FIELDCAT-SELTEXT_L = TEXT-013.
WA_FIELDCAT-EDIT = 'X'.
WA_FIELDCAT-LOWERCASE = 'X'.
APPEND WA_FIELDCAT TO IT_FIELDCAT.
CLEAR WA_FIELDCAT.
WA_FIELDCAT-FIELDNAME = 'ZNAME_AUTH'.
WA_FIELDCAT-TABNAME = 'IT_ZMST_PERMIT'.
WA_FIELDCAT-SELTEXT_M = TEXT-014.
WA_FIELDCAT-EDIT = 'X'.
WA_FIELDCAT-OUTPUTLEN = 50.
WA_FIELDCAT-LOWERCASE = 'X'.
APPEND WA_FIELDCAT TO IT_FIELDCAT.
CLEAR WA_FIELDCAT.
WA_FIELDCAT-FIELDNAME = 'ZPRT_NAME'.
WA_FIELDCAT-TABNAME = 'IT_ZMST_PERMIT'.
WA_FIELDCAT-SELTEXT_M = TEXT-009.
WA_FIELDCAT-EDIT = 'X'.
WA_FIELDCAT-OUTPUTLEN = 60.
WA_FIELDCAT-LOWERCASE = 'X'.
APPEND WA_FIELDCAT TO IT_FIELDCAT.
CLEAR WA_FIELDCAT.
WA_FIELDCAT-FIELDNAME = 'ZARRPRT'.
WA_FIELDCAT-TABNAME = 'IT_ZMST_PERMIT'.
WA_FIELDCAT-SELTEXT_M = TEXT-008.
APPEND WA_FIELDCAT TO IT_FIELDCAT.
CLEAR WA_FIELDCAT.
WA_FIELDCAT-FIELDNAME = 'ZPERNUM'.
WA_FIELDCAT-TABNAME = 'IT_ZMST_PERMIT'.
WA_FIELDCAT-SELTEXT_M = TEXT-010.
APPEND WA_FIELDCAT TO IT_FIELDCAT.
CLEAR WA_FIELDCAT.
WA_FIELDCAT-FIELDNAME = 'ZEFFDT'.
WA_FIELDCAT-TABNAME = 'IT_ZMST_PERMIT'.
WA_FIELDCAT-SELTEXT_M = TEXT-011.
APPEND WA_FIELDCAT TO IT_FIELDCAT.
CLEAR WA_FIELDCAT.
WA_FIELDCAT-FIELDNAME = 'ZEXPDT'.
WA_FIELDCAT-TABNAME = 'IT_ZMST_PERMIT'.
WA_FIELDCAT-SELTEXT_M = TEXT-012.
APPEND WA_FIELDCAT TO IT_FIELDCAT.
CLEAR WA_FIELDCAT.
WA_FIELDCAT-FIELDNAME = 'ZPERM_MIN'.
WA_FIELDCAT-TABNAME = 'IT_ZMST_PERMIT'.
WA_FIELDCAT-SELTEXT_M = TEXT-019.
WA_FIELDCAT-OUTPUTLEN = 50.
WA_FIELDCAT-LOWERCASE = 'X'.
APPEND WA_FIELDCAT TO IT_FIELDCAT.
CLEAR WA_FIELDCAT.
ENDFORM. " fill_fieldcat
*& Form alv_disp
text
--> p1 text
<-- p2 text
FORM ALV_DISP .
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM = 'ZMSTR0022'
I_CALLBACK_PF_STATUS_SET = 'PF_STATUS'
I_CALLBACK_USER_COMMAND = 'USER_COMMAND'
I_GRID_TITLE = TEXT-015
IS_LAYOUT = WA_LAYOUT
IT_FIELDCAT = IT_FIELDCAT
I_SAVE = 'A'
TABLES
T_OUTTAB = IT_ZMST_PERMIT
EXCEPTIONS
PROGRAM_ERROR = 1
OTHERS = 2.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDFORM. " alv_disp
*& Form PF_STATUS
text
This subroutine sets the GUI status
FORM PF_STATUS USING RT_EXTAB TYPE SLIS_T_EXTAB.
SET PF-STATUS 'ZSTANDARD_FULLSCREEN'.
ENDFORM. "PF_STATUS
*& Form USER_COMMAND
FORM USER_COMMAND USING R_UCOMM TYPE SY-UCOMM RS_SELFIELD TYPE SLIS_SELFIELD.
*For Printing Smartform
IF R_UCOMM = 'PRT'.
CLEAR WA_FORM_PERMIT.
REFRESH IT_FORM_PERMIT.
LOOP AT IT_ZMST_PERMIT INTO WA_ZMST_PERMIT WHERE CHECKBOX = 'X'.
MOVE-CORRESPONDING WA_ZMST_PERMIT TO WA_FORM_PERMIT.
APPEND WA_FORM_PERMIT TO IT_FORM_PERMIT .
*Check for First occurence of Name of authority
IF WA_ZMST_PERMIT-ZNAME_AUTH NE SPACE.
IF W_NAME_AUTH = ' '.
W_NAME_AUTH = WA_ZMST_PERMIT-ZNAME_AUTH.
ENDIF.
ENDIF.
*Check for First occurence of Arabic date
IF WA_ZMST_PERMIT-ZARB_DT NE SPACE.
IF W_ZARBDT = ' '.
W_ZARBDT = WA_ZMST_PERMIT-ZARB_DT.
ENDIF.
ENDIF.
IF WA_ZMST_PERMIT-ZPRT_NAME NE SPACE.
IF W_ZPRT_NAME = ' '.
MOVE WA_ZMST_PERMIT-ZPRT_NAME TO W_ZPRT_NAME.
CONDENSE W_ZPRT_NAME.
ENDIF.
ENDIF.
CLEAR : WA_FORM_PERMIT, WA_ZMST_PERMIT.
ENDLOOP.
CONCATENATE SY-DATUM0(4) '/' SY-DATUM4(2) '/' SY-DATUM+6(2) INTO W_ZENGDT.
*Printing Subroutine
IF NOT IT_FORM_PERMIT[] IS INITIAL.
PERFORM PRINT_FORM.
ELSE.
MESSAGE TEXT-018 TYPE 'I'.
ENDIF.
ENDIF.
ENDFORM. "user_command
*& Form F4_HELP
text
--> p1 text
<-- p2 text
FORM F4_HELP USING: W_VAR TYPE DFIES-FIELDNAME
W_VAR1 TYPE HELP_INFO-DYNPROFLD .
Fetching data from zmst_permit for F4 help on PERMIT ID No.--
IF IT_PERMIT[] IS INITIAL.
SELECT ZPIDNUM
ZENGDSC
ZARBDSC
ZTARIFF
ZPERNUM
ZARRPRT
ZEFFDT
ZEXPDT
FROM ZMST_PERMIT INTO CORRESPONDING FIELDS OF TABLE IT_PERMIT.
ENDIF.
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
RETFIELD = W_NAME1 " 'ZPIDNUM'
DYNPPROG = 'ZMSTR0022'
DYNPNR = SY-DYNNR
DYNPROFIELD = W_NAME2 "'S_PIDNUM'
VALUE_ORG = 'S'
TABLES
VALUE_TAB = IT_PERMIT
EXCEPTIONS
PARAMETER_ERROR = 1
NO_VALUES_FOUND = 2
OTHERS = 3.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDFORM. " F4_HELP
*& Form check_input
text
--> p1 text
<-- p2 text
FORM CHECK_INPUT .
IF S_PIDNUM[] IS INITIAL AND
S_ENGDSC[] IS INITIAL AND
S_ARBDSC[] IS INITIAL AND
S_TARIFF[] IS INITIAL AND
S_PERNUM[] IS INITIAL AND
S_ARRPRT[] IS INITIAL .
MESSAGE TEXT-016 TYPE 'E'.
LEAVE TO TRANSACTION 'ZMSTR022'.
ENDIF.
ENDFORM. " check_input
*& Form print_form
text
--> p1 text
<-- p2 text
FORM PRINT_FORM .
CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'
EXPORTING
FORMNAME = C_FORM_NAME
IMPORTING
FM_NAME = W_FORM
EXCEPTIONS
NO_FORM = 1
NO_FUNCTION_MODULE = 2
OTHERS = 3.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
W_PARAM-LANGU ='AR'.
CALL FUNCTION W_FORM
EXPORTING
CONTROL_PARAMETERS = W_PARAM
W_NAME_AUTH = W_NAME_AUTH
W_ZARBDT = W_ZARBDT
W_ZENGDT = W_ZENGDT
W_ZPRT_NAME = W_ZPRT_NAME
TABLES
IT_FORM_PERMIT = IT_FORM_PERMIT
EXCEPTIONS
FORMATTING_ERROR = 1
INTERNAL_ERROR = 2
SEND_ERROR = 3
USER_CANCELED = 4
OTHERS = 5.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDFORM. " print_form
*& Form fetch_Permit
text
--> p1 text
<-- p2 text
FORM FETCH_PERMIT .
-Fetching data from zmst_permit based on the inputs on selection screen--
SELECT
ZPIDNUM
ZARBDSC
ZENGDSC
ZENQUAN
ZARQUAN
ZENUOM
ZTARIFF
ZARRPRT
ZPERNUM
ZEFFDT
ZEXPDT
FROM ZMST_PERMIT INTO CORRESPONDING FIELDS OF TABLE IT_ZMST_PERMIT
WHERE ZPIDNUM IN S_PIDNUM
AND ZENGDSC IN S_ENGDSC
AND ZARBDSC IN S_ARBDSC
AND ZTARIFF IN S_TARIFF
AND ZPERNUM IN S_PERNUM
AND ZARRPRT IN S_ARRPRT.
IF SY-SUBRC <> 0.
MESSAGE TEXT-017 TYPE 'I'.
LEAVE TO TRANSACTION 'ZMSTR022'.
ELSE.
LOOP AT IT_ZMST_PERMIT INTO WA_ZMST_PERMIT.
WA_ZMST_PERMIT-ZPERM_MIN = TEXT-020.
MODIFY IT_ZMST_PERMIT INDEX SY-TABIX FROM WA_ZMST_PERMIT TRANSPORTING ZPERM_MIN .
ENDLOOP.
PERFORM ALV_DISP. " calling subroutine for ALV display
ENDIF.
ENDFORM. " fetch_Permit
*& Form fetch_permithi
text
--> p1 text
<-- p2 text
FORM FETCH_PERMITHI .
-Fetching data from zmst_permit based on the inputs on selection screen--
SELECT
ZPIDNUM
ZARBDSC
ZENGDSC
ZENQUAN
ZARQUAN
ZENUOM
ZTARIFF
ZARRPRT
ZPERNUM
ZEFFDT
ZEXPDT
FROM ZMST_PERMITHI INTO CORRESPONDING FIELDS OF TABLE IT_ZMST_PERMIT
WHERE ZPIDNUM IN S_PIDNUM
AND ZENGDSC IN S_ENGDSC
AND ZARBDSC IN S_ARBDSC
AND ZTARIFF IN S_TARIFF
AND ZPERNUM IN S_PERNUM
AND ZARRPRT IN S_ARRPRT
AND ZPERTYP = P_PERTYP.
IF SY-SUBRC <> 0.
MESSAGE TEXT-017 TYPE 'I'.
LEAVE TO TRANSACTION 'ZMSTR022'.
ELSE.
LOOP AT IT_ZMST_PERMIT INTO WA_ZMST_PERMIT.
CASE P_PERTYP.
WHEN 'I'.
WA_ZMST_PERMIT-ZPERM_MIN = TEXT-021.
MODIFY IT_ZMST_PERMIT INDEX SY-TABIX FROM WA_ZMST_PERMIT TRANSPORTING ZPERM_MIN .
WHEN 'H'.
WA_ZMST_PERMIT-ZPERM_MIN = TEXT-022.
MODIFY IT_ZMST_PERMIT INDEX SY-TABIX FROM WA_ZMST_PERMIT TRANSPORTING ZPERM_MIN .
ENDCASE.
ENDLOOP.
PERFORM ALV_DISP. " calling subroutine for ALV display
ENDIF.
ENDFORM. " fetch_permithi
*& Form val_PERTYP
text
--> p1 text
<-- p2 text
FORM VAL_PERTYP .
DATA: W_NAME TYPE VRM_ID,
IT_LIST TYPE VRM_VALUES,
WA_VALUE LIKE LINE OF IT_LIST.
WA_VALUE-KEY = ' '.
WA_VALUE-TEXT = TEXT-020.
APPEND WA_VALUE TO IT_LIST.
CLEAR WA_VALUE.
WA_VALUE-KEY = 'I'.
WA_VALUE-TEXT = TEXT-021.
APPEND WA_VALUE TO IT_LIST.
CLEAR WA_VALUE.
WA_VALUE-KEY = 'H'.
WA_VALUE-TEXT = TEXT-022.
APPEND WA_VALUE TO IT_LIST.
CLEAR WA_VALUE.
W_NAME = 'P_PERTYP'.
P_PERTYP = ' '.
CALL FUNCTION 'VRM_SET_VALUES'
EXPORTING
ID = W_NAME
VALUES = IT_LIST
EXCEPTIONS
ID_ILLEGAL_NAME = 1
OTHERS = 2.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDFORM. " val_PERTYP -
Hi I am displaying an output on ALV Grid.
My requirement is, If i select one record on Alv Grid,with Corresponding fields from ALV i have to populate one screen.
So I should go Interactive ALV ?..
I never worked on Interactive ALV.
Can any one plz help on this...........Hi,
U have to use the Events.
Register the Events or Simply
CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
EXPORTING
i_list_type = 0
IMPORTING
et_events = it_events
EXCEPTIONS
list_type_wrong = 1
OTHERS = 2.
IF sy-subrc = 0.
SORT it_events BY name.
ENDIF.
FORM user_command USING rucomm TYPE sy-ucomm "#EC CALLED
rs_selfield TYPE slis_selfield .
IF rucomm = '&IC1'.
Endif.
EndForm.
Please let me know for any more solutions.
Affable
Arbind -
Help required - For ALV program
Hi Guys,
I have created an ALV (using containers) with , say , 10 fields. As the container size is not large enough to accomodate all the 10 fields, it is getting displayed as
field1, field2,field8, field9 and field10.
When I click on the horizontal scrollbar, the fields getting displayed should change as follows.
First click: Field2, Field3, Field8,Field9, Field10
Second click: Field3,Field4, 8, 9,10
Third click: Field4,Field5,8,9,10
This is for one of my friends.Can you provide me with good ideas as to how to approach this problem and if any one has worked on similar problem, please provide the code for it.
I will check the code and will award points to all helpful answers.
Have a nice day .
Regards,
SP.Hello Sylendra
As developer of ALV lists we do not care that much about the layout of the list because the user has all the options available to adjust it to her specific needs.
Your requirement is to be able to "freeze" columns at the right border of the ALV list. This is, as far as I know, not possible, only at the left border.
When you call the context menu for a column heading you will see the options
- Freeze to Column
- Unfreeze Columns
If you freeze a column all columns to its left side remain fixed. Thus, in your case you have to change the order of your columns that the fixed columns (field8 - field10) appear on the left side of the ALV list.
Regards
Uwe -
LOGO required in ALV top of page using factory method
Hi,
I am doing an ALV using factory method of class Cl_SALV_TABLE. Can any one help me about putting a LOGO on the top of page.
Thanks in advance.
AmitavaHi,
In START-OF-SELECTION.
put form to display header
like PERFORM build_header
gr_table->display( ).
then...
in FORM
FORM build_header.
lr_grid TYPE REF TO cl_salv_form_layout_grid,
lr_logo TYPE REF TO cl_salv_form_layout_logo,
create object lr_logo.
lr_logo->set_left_content( lr_grid ).
lr_logo->set_right_logo( 'LOGO_NAME' ).
* Set the element top_of_list
gr_table->set_top_of_list( lr_logo ).
ENDFORM.
thanx. -
Hi all,Help Required fin ALV,Thnx in Advance
Hi All,
Can you please share me some detailed material regarding ALV.
All the function Modules used and the purpose of them.
Thnk you very much .
Regards,
AmithHi Amith,
Welcome to SDN :).
refer below link
http://www.sapdevelopment.co.uk/reporting/alvhome.htm
Regards,
Atish -
ALV heading required using ALV opps-urgent
Hi All,
I developed one report which is displaying ouput in grid using ALV OOPS concept.
i need heading as foloows.
Header :
Program ID : EDI report program name
Date/Time : date/time where the report is generated
Page No :
User id : logon ID
anybody can send me the code how to display this header in my logic using oops concept only.
thanks,
maheedharHi
Use the std class
cl_salv_form_layout_grid to displayn this
use the methods
create_Label and create_text for creating this
see the sample
DATA: ln_grid TYPE REF TO cl_salv_form_layout_grid,
ln_flow TYPE REF TO cl_salv_form_layout_flow,
ln_label TYPE REF TO cl_salv_form_label,
ln_text TYPE REF TO cl_salv_form_text.
Program name
ln_label = lcn_grid->create_label( row = 2 column = 1 text = 'Program:'(t02) tooltip = 'Program technical name'(t20) ).
ln_text = lcn_grid->create_text( row = 2 column = 2 text = sy-cprog tooltip = sy-cprog ).
System
ln_label = lcn_grid->create_label( row = 3 column = 1 text = 'System:'(t03) tooltip = 'System:'(t03) ).
ln_text = lcn_grid->create_text( row = 3 column = 2 text = sy-sysid tooltip = sy-sysid ).
Client
ln_label = lcn_grid->create_label( row = 3 column = 3 text = 'Client:'(t04) tooltip = 'Client:'(t04) ).
ln_text = lcn_grid->create_text( row = 3 column = 4 text = sy-mandt tooltip = sy-mandt ).
Regards
Anji -
Urgently required on ALV grid Standard program
In the standard program,
BCALV_EDIT_04 ,
when the user click the insert button, it is triggering a method
(get_inserted_row). In this method they are passing a exporting parameter.
My doudbt is :
what is happening when the the method is triggered and where can i see the internal program of that method.
Thank you for ur suggestion in ADVANCE....Hi,
Run this code and look at break-points.
<u>
1st - On the moment of the event trigeer.
1nd - The event was trigeered and the event handler is running.</u>
<b>REPORT zmar.
CLASS main DEFINITION
CLASS main DEFINITION.
PUBLIC SECTION.
EVENTS evt EXPORTING value(e_data) TYPE char01.
METHODS event_trigger.
METHODS set_data IMPORTING i_data TYPE char01.
PRIVATE SECTION.
DATA v_data TYPE char01 VALUE 'X'.
ENDCLASS.
CLASS main IMPLEMENTATION
CLASS main IMPLEMENTATION.
METHOD event_trigger.
the event is trigger
BREAK-POINT.
RAISE EVENT evt EXPORTING e_data = v_data.
ENDMETHOD.
METHOD set_data.
MOVE i_data TO v_data.
WRITE: / 'New v_data value ->', v_data.
ENDMETHOD.
ENDCLASS.
CLASS second DEFINITION
CLASS second DEFINITION.
PUBLIC SECTION.
METHODS event_handler FOR EVENT evt OF main
IMPORTING e_data sender.
ENDCLASS.
CLASS second IMPLEMENTATION
CLASS second IMPLEMENTATION.
METHOD event_handler.
the event was triggered and this method(event handler was called)
BREAK-POINT.
WRITE: 'v_data value ->', e_data.
CALL METHOD sender->set_data( i_data = 'Y' ).
ENDMETHOD.
ENDCLASS.
START-OF-SELECTION.
DATA: obj_main TYPE REF TO main.
DATA: obj_second TYPE REF TO second.
CREATE OBJECT: obj_main, obj_second.
SET HANDLER obj_second->event_handler FOR obj_main.
CALL METHOD obj_main->event_trigger( ).</b>
Regards.
Marcelo Ramos -
hi experts,
well i am having a problem regarding ALV display...the requirement is :
ALV DISPLAY SHOULD BE LIKE THIS
Open Balance 12345
SY-DATUM POSTING DATE DOC. NUMBER LOCAL CURRENCY AMOUNT
now the sum of the amount is displayed in front of open balance field, which is displayed in a first row of ALV display. And below are the columns with heading are having a details of the GL-ACCOUNT.
Is this possible using a same ALV grid display or i have to use 2 ALV grid display? In both cases plz let me know to get this sort of output?
regards,
Yahya Shoaib.In the heading part you can display the total..
*& Report ZTRN_ALV1
REPORT ZTRN_ALV1.
TYPE-POOLS: SLIS.
DATA: REPID LIKE SY-REPID,
FCAT TYPE SLIS_T_FIELDCAT_ALV,
GCAT TYPE SLIS_FIELDCAT_ALV,
FCAT1 TYPE SLIS_T_FIELDCAT_ALV,
GCAT1 TYPE SLIS_FIELDCAT_ALV,
LAYOUT TYPE SLIS_LAYOUT_ALV,
T_EVENTS TYPE SLIS_T_EVENT,
EVENTS TYPE SLIS_ALV_EVENT,
HEADING TYPE SLIS_T_LISTHEADER,
HEADER TYPE SLIS_LISTHEADER.
PARAMETERS: CCODE LIKE LFB1-BUKRS.
DATA: BEGIN OF ITAB OCCURS 0,
lifnr LIKE LFA1-LIFNR,
BUKRS LIKE LFB1-BUKRS,
NAME1 LIKE LFA1-NAME1,
END OF ITAB.
DATA: BEGIN OF JTAB OCCURS 0,
EBELN LIKE EKKO-EBELN,
lifnr LIKE LFA1-LIFNR,
AEDAT LIKE EKKO-AEDAT,
END OF JTAB.
*DATA: JTAB LIKE STANDARD TABLE OF EKKO WITH HEADER LINE INITIAL SIZE 0.
START-OF-SELECTION.
REPID = SY-REPID.
PERFORM FETCH.
PERFORM FIELDCAT.
PERFORM LAYOUT.
PERFORM GET_EVENTS.
PERFORM EVENTS.
PERFORM OUTPUT.
*& Form FETCH
text
--> p1 text
<-- p2 text
FORM FETCH .
SELECT ALIFNR ANAME1 BBUKRS INTO CORRESPONDING FIELDS OF TABLE ITAB FROM LFA1 AS A JOIN LFB1 AS B ON ALIFNR EQ B~LIFNR WHERE
B~BUKRS EQ CCODE.
ENDFORM. " FETCH
*& Form FIELDCAT
text
--> p1 text
<-- p2 text
FORM FIELDCAT .
GCAT-COL_POS = '1'.
GCAT-FIELDNAME = 'BUKRS'.
GCAT-TABNAME = ITAB.
GCAT-SELTEXT_M = 'COMPANY CODE'.
APPEND GCAT TO FCAT.
GCAT-COL_POS = '2'.
GCAT-FIELDNAME = 'LIFNR'.
GCAT-TABNAME = ITAB.
GCAT-SELTEXT_M = 'VENDOR NUMBER'.
APPEND GCAT TO FCAT.
GCAT-COL_POS = '3'.
GCAT-FIELDNAME = 'NAME1'.
GCAT-TABNAME = ITAB.
GCAT-SELTEXT_M = 'VENDOR NAME'.
APPEND GCAT TO FCAT.
ENDFORM. " FIELDCAT
*& Form LAYOUT
text
--> p1 text
<-- p2 text
FORM LAYOUT .
LAYOUT-ZEBRA = 'X'.
ENDFORM. " LAYOUT
*& Form GET_EVENTS
text
--> p1 text
<-- p2 text
FORM GET_EVENTS .
CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
EXPORTING
I_LIST_TYPE = 0
IMPORTING
ET_EVENTS = T_EVENTS
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.
ENDFORM. " GET_EVENTS
*& Form EVENTS
text
--> p1 text
<-- p2 text
FORM EVENTS .
READ TABLE T_EVENTS INTO EVENTS WITH KEY NAME = 'TOP_OF_PAGE'.
EVENTS-FORM = 'TOP_OF_PAGE'.
MODIFY TABLE T_EVENTS FROM EVENTS TRANSPORTING FORM.
READ TABLE T_EVENTS INTO EVENTS WITH KEY NAME = 'USER_COMMAND'.
EVENTS-FORM = 'USER_COMMAND'.
MODIFY TABLE T_EVENTS FROM EVENTS TRANSPORTING FORM.
ENDFORM. " EVENTS
*& Form OUTPUT
text
--> p1 text
<-- p2 text
FORM OUTPUT .
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_INTERFACE_CHECK = ' '
I_BYPASSING_BUFFER = ' '
I_BUFFER_ACTIVE = ' '
I_CALLBACK_PROGRAM = REPID
I_CALLBACK_PF_STATUS_SET = ' '
I_CALLBACK_TOP_OF_PAGE = 'TOP_OF_PAGE'
I_CALLBACK_HTML_TOP_OF_PAGE = ' '
I_CALLBACK_HTML_END_OF_LIST = ' '
I_STRUCTURE_NAME =
I_BACKGROUND_ID = ' '
I_GRID_TITLE =
I_GRID_SETTINGS =
IS_LAYOUT = LAYOUT
IT_FIELDCAT = FCAT[]
IT_EXCLUDING =
IT_SPECIAL_GROUPS =
IT_SORT =
IT_FILTER =
IS_SEL_HIDE =
I_DEFAULT = 'X'
I_SAVE = ' '
IS_VARIANT =
IT_EVENTS = T_EVENTS
IT_EVENT_EXIT =
IS_PRINT =
IS_REPREP_ID =
I_SCREEN_START_COLUMN = 0
I_SCREEN_START_LINE = 0
I_SCREEN_END_COLUMN = 0
I_SCREEN_END_LINE = 0
I_HTML_HEIGHT_TOP = 0
I_HTML_HEIGHT_END = 0
IT_ALV_GRAPHICS =
IT_HYPERLINK =
IT_ADD_FIELDCAT =
IT_EXCEPT_QINFO =
IR_SALV_FULLSCREEN_ADAPTER =
IMPORTING
E_EXIT_CAUSED_BY_CALLER =
ES_EXIT_CAUSED_BY_USER =
TABLES
T_OUTTAB = ITAB
EXCEPTIONS
PROGRAM_ERROR = 1
OTHERS = 2
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDFORM. " OUTPUT
*& Form TOP_OF_PAGE
text
--> p1 text
<-- p2 text
FORM TOP_OF_PAGE .
CLEAR HEADING[]. <----IN THIS INTERNAL TABLE YOU EASILY DISPLAY TOTAL...
HEADER-TYP = 'H'.
HEADER-INFO = 'WIPRO TECHNOLOGIES'.
APPEND HEADER TO HEADING.
HEADER-TYP = 'S'.
HEADER-INFO = 'ADVANCED ABAP TRAINING'.
APPEND HEADER TO HEADING.
HEADER-TYP = 'A'.
HEADER-INFO = 'LIST OF VENDORS'.
APPEND HEADER TO HEADING.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
IT_LIST_COMMENTARY = HEADING[]
I_LOGO =
I_END_OF_LIST_GRID =
I_ALV_FORM =
ENDFORM. -
ALV report requirement for peculiar SUBTOTAL
The following table is required for ALV report for inventory calculation.
The last column is the physical balance.
No......A.......... B....... C......D (D=A+B-C)
1......50........8........ 2.......56
2...... 20.........3.........1......22
3.......56.........10.......6...... 60
........50........21...... 9...... 60 (SUBTOTAL ROW)
Requirement for the subtotal row:
The subtotal for column A should be 50, It should take the first value 50 in the opening column in 1st row.
The subtotal for D column should be 60, It should be same as the value 60, in the LAST row that is 60
all other column subtotals are mathemetical totals as usual.
thanx
gaut
Edited by: gautam gautam on May 6, 2009 1:31 AMHi,
Try this
In side the loop
at new matnr.
capture the column1 (A)value into one variable
at end of matnr
capture the column 4 (D) value into one variable
and print it in subtotal row
Regards
Krishna
Maybe you are looking for
-
Import photoshop CS3 layers into Flash CS5?
Does anyone know if you can import photoshop layers from CS3 into Flash CS5? I am looking to get Flash CS5 for my Win 7 but am worried I won't be able to use it with all my CS3 photoshop work. Has anyone had experience with this and can tell me one
-
how to create a report in jsp?
-
What happens if I want my songs after subscription finishes?
Just wondering what happens if I stop my subscription to it can I have acess to my songs and pull them back?
-
No sound in previously created ".prel" files when I reopen them
If I am creating new file everything works OK. Also if I tried to play the sound track on the previously created prel files the sound is OK
-
I have been unable to retrieve the offers which are avilable to new Z2 owners on the Xperia Lounge, both the games and films. I have followed the instructions, but when I try to get the vouvher I get this message "The Voucher is currently unavailabl