10-09-2007 7:31 AM
Hi all ,
send some sample program for ALV reports for learing purpose
tahnks.
10-09-2007 7:36 AM
Take a look at this ALV generatot : <a href="http://www.alvrobot.com.ar/home.php">http://www.alvrobot.com.ar/home.php</a>
Regards
10-09-2007 7:36 AM
Take a look at this ALV generatot : <a href="http://www.alvrobot.com.ar/home.php">http://www.alvrobot.com.ar/home.php</a>
Regards
10-09-2007 7:53 AM
Hi
refer this for ALV concept
Check the below links :
http://www.sap-img.com/abap/sample-programs-on-alv-grid.htm
http://www.sap-img.com/abap-function.htm
http://www.sap-basis-abap.com/sapab034.htm
http://www.erpgenie.com/abap/example_code.htm
These all are very simple ALV programs ,good luck
<b>Reward if usefull</b>
10-09-2007 12:42 PM
Hi ,
Resource Master
***************
----
Program YPPCRR *
Program type Report Program *
Title Resource Master Dara for Updation *
Author Naga Raju *
Requested By Balaji *
Date Written 24.05.2007 *
Specification Id F2-DP-FS-2-0002 *
Transport Request *
----
*******************************************************************
On-line Documentation
Description
This Program updates the Location Mater through the Transaction
/SAPAPO/LOC3 Based on the User Selection
Update
Reset
No Action
*
Output
ALV List output of the main Program
ALV List output of the Error Log
*******************************************************************
REPORT YPPCRR NO STANDARD PAGE HEADING
LINE-SIZE 120
LINE-COUNT 62(4)
MESSAGE-ID yap..
******************************************************************
******************************************************************
Global data
Include where all the data declarations are coded.
INCLUDE YPPCRR_data.
******************************************************************
******************************************************************
*Initialization
INITIALIZATION.
perform init_variant.
******************************************************************
******************************************************************
Constants
CONSTANTS: c_formname_top_of_page TYPE slis_formname
VALUE 'F_TOP_OF_PAGE'.
*****************************************************************
*****************************************************************
Selection-Screen
SELECTION-SCREEN : BEGIN OF BLOCK b1 WITH FRAME TITLE text-040.
SELECTION-SCREEN BEGIN OF LINE.
PARAMETERS:p_prs RADIOBUTTON GROUP ztyp USER-COMMAND ucom DEFAULT 'X'.
SELECTION-SCREEN COMMENT 3(28) text-003.
position 40.
parameters: p_file1 TYPE rlgrap-filename.
SELECTION-SCREEN END OF LINE.
skip 5.
SELECTION-SCREEN BEGIN OF LINE.
PARAMETERS: p_aps RADIOBUTTON GROUP ztyp.
SELECTION-SCREEN COMMENT 3(28) text-004.
position 40.
parameters: p_file2 type rlgrap-filename.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN END OF BLOCK b1.
AT SELECTION-SCREEN .
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file1.
CALL FUNCTION 'KD_GET_FILENAME_ON_F4'
EXPORTING
program_name = syst-repid
DYNPRO_NUMBER = SYST-DYNNR
field_name = p_file1
STATIC = ' '
MASK = ' '
CHANGING
file_name = p_file1
EXCEPTIONS
MASK_TOO_LONG = 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.
*********************************************************************
*********************************************************************
START-OF-SELECTION.
if p_prs = 'X'.
PERFORM f_read_datum1 TABLES t_res_head
USING p_file1
CHANGING w_subrc.
elseif p_aps = 'X'.
PERFORM f_read_datum2 TABLES t_res_head
USING p_file2
CHANGING w_subrc.
endif.
IF w_subrc = 0.
Validations
PERFORM VALIDATION.
PERFORM display_alv.
IF SY-UCOMM = '&F03'
or SY-UCOMM = '&F12'
or SY-UCOMM = '&F15'.
LEAVE LIST-PROCESSING.
ELSE.
ENDIF.
ELSE.
Message s100 with text-002.
ENDIF.
******************************************************************
******************************************************************
END-OF-SELECTION.
******************************************************************
******************************************************************
Forms part*
INCLUDE YPPCRR_forms.
&----
*& Include YPPCRR_DATA
&----
************************************************************************
Type-Pools
TYPE-POOLS: slis.
************************************************************************
*TYPES
DATA: BEGIN OF tl_res_head.
INCLUDE STRUCTURE ypp_res_head.
DATA: END OF tl_res_head.
DATA: BEGIN OF tl_res_head_val.
INCLUDE STRUCTURE ypp_resv.
DATA: END OF tl_res_head_val.
DATA : BEGIN OF ty_errlog ,
counter type i,
type(2) ,
name(10) TYPE c,
vrsioid(22) TYPE c,
restype TYPE c,
message(80) TYPE c,
END OF ty_errlog.
Global Variables
DATA : gc_flag(1) TYPE c,
w_val_err_flag(1) type c.
DATA: w_filename TYPE rlgrap-filename,
w_subrc TYPE sy-subrc,
w_t_res_head TYPE slis_t_fieldcat_alv,
wa_t_res_head TYPE slis_fieldcat_alv.
DATA : wa_date(10) TYPE c,
wa_time(10) TYPE c,
wa_title(40) TYPE c,
wa_type(4) TYPE c .
DATA: BAPI_RUN_YES_NO TYPE C.
*********************************************************************
*Structure
*INTERNAL TABLES USED BY ALV
DATA:
it_fieldcat_alv TYPE slis_t_fieldcat_alv,
IT_FIELDCAT_ALV_ERR TYPE SLIS_T_FIELDCAT_ALV,
it_status TYPE slis_formname VALUE 'F_MAIN',
it_user_command TYPE slis_formname VALUE 'F_USER_COMMAND',
it_events TYPE slis_t_event,
it_event_exit TYPE slis_t_event_exit,
it_list_comments TYPE slis_t_listheader,
it_excluding TYPE slis_t_extab,
it_sort TYPE slis_t_sortinfo_alv.
**********************************************************************
*Internal Table Declarations
DATA : BEGIN OF t_imex OCCURS 0 ,
string(256) TYPE c,
END OF t_imex.
DATA : fcode TYPE TABLE OF sy-ucomm.
DATA : fcode_bdc TYPE TABLE OF sy-ucomm.
DATA : fcode_error TYPE TABLE OF sy-ucomm.
DATA : fcode_final TYPE TABLE OF sy-ucomm.
STRUCTURE and WORKARES
*Internal Table Declarations
DATA : t_res_head like tl_res_head occurs 0 WITH HEADER LINE.
DATA : t_res_head_val like tl_res_head_val occurs 0 with header line.
data :l_res_head LIKE LINE OF t_res_head.
DATA : w_file TYPE string.
*DATA : wa_vrsioid(22) type c,
wa_locno(20) type c,
wa_calendar(2) type c,
wa_planner(3) type c.
DATA: T_RETURN LIKE BAPIRET2 OCCURS 0 WITH HEADER LINE.
DATA: RESOURCE_HEAD LIKE BAPI10004RESHEAD OCCURS 0 WITH HEADER LINE,
RESOURCE_HEAD_X LIKE BAPI10004RESHEADX OCCURS 0 WITH HEADER LINE,
RESOURCE_TEXT LIKE BAPI10004RESTEXT OCCURS 0 WITH HEADER LINE,
RESOURCE_TEXT_X LIKE BAPI10004RESTEXTX OCCURS 0 WITH HEADER LINE.
data : t_errlog like ty_errlog occurs 0 with header line.
DATA : wk_lines TYPE i,
wk_errlines TYPE i,
wk_count TYPE i.
DATA: g_tabname TYPE slis_tabname VALUE 'T_RES_HEAD'.
Variables to be used by ALV
DATA:
wk_variant LIKE disvariant,
wx_variant LIKE disvariant,
wk_variant_save(1) TYPE c,
wk_exit(1) TYPE c,
wk_repid LIKE sy-repid,
wk_user_specific(1) TYPE c,
wk_callback_ucomm TYPE slis_formname,
wk_callback_status TYPE slis_formname,
wk_callback_status1 TYPE slis_formname,
wk_print TYPE slis_print_alv,
wk_layout TYPE slis_layout_alv,
wk_html_top_of_page TYPE slis_formname,
wk_fieldcat_alv LIKE LINE OF it_fieldcat_alv,
wk_excluding LIKE LINE OF it_excluding,
wk_events LIKE LINE OF it_events,
wk_event_exit LIKE LINE OF it_event_exit,
wk_list_comments LIKE LINE OF it_list_comments,
wk_list1_comments LIKE LINE OF it_list_comments,
wk_list2_comments LIKE LINE OF it_list_comments,
wk_sort LIKE LINE OF it_sort.
*DATA :gc_delete_flag(1).
&----
*& Include YAPOLOC_FORMS
&----
FORM display_alv .
PERFORM f_fieldcat_build.
PERFORM f_event_build.
PERFORM f_exclude_build.
PERFORM f_print_build.
PERFORM f_layout_build.
PERFORM f_display_data.
ENDFORM. " display_alv
&----
*& Form f_fieldcat_build
&----
text
----
FORM f_fieldcat_build .
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
i_program_name = wk_repid
i_structure_name = 'YPP_RESV'
i_inclname = wk_repid
CHANGING
ct_fieldcat = it_fieldcat_alv.
ENDFORM. " F_FIELDCAT_BUILD
&----
*& Form F_EVENT_BUILD
&----
text
----
> p1 text* < p2 text
----
FORM f_event_build .
CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
EXPORTING
i_list_type = 0
IMPORTING
et_events = it_events.
READ TABLE it_events WITH KEY
name = slis_ev_top_of_page INTO wk_events.
IF sy-subrc = 0.
MOVE c_formname_top_of_page TO wk_events-form.
MODIFY it_events FROM wk_events INDEX sy-tabix.
ENDIF.
ENDFORM. " F_EVENT_BUILD
&----
*& Form F_EXCLUDE_BUILD
&----
text
----
--> p1 text
<-- p2 text
----
FORM f_exclude_build .
wk_excluding = '&GRAPH'. "Graphic
APPEND wk_excluding TO it_excluding.
ENDFORM. " F_EXCLUDE_BUILD
&----
*& Form F_PRINT_BUILD
&----
text
----
--> p1 text
<-- p2 text
----
FORM f_print_build .
wk_print-no_print_listinfos = 'X'.
ENDFORM. " F_PRINT_BUILD
&----
*& Form F_LAYOUT_BUILD
&----
text
----
--> p1 text
<-- p2 text
----
FORM f_layout_build .
wk_layout-zebra = 'X'.
WK_LAYOUT-COLWIDTH_OPTIMIZE = 'X'.
wk_layout-detail_popup = 'X'.
wk_layout-detail_initial_lines = 'X'.
wk_layout-detail_titlebar = 'Details '.
ENDFORM. " F_LAYOUT_BUILD
&----
*& Form F_DISPLAY_DATA
&----
text
----
--> p1 text
<-- p2 text
----
FORM f_display_data .
wk_callback_ucomm = 'CALLBACK_UCOMM'.
IF sy-ucomm = 'UPD' OR sy-ucomm = space .
wk_callback_status = 'CALLBACK_STATUS'.
ENDIF.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_background_id = 'SIWB_WALLPAPER'
i_callback_program = wk_repid
i_callback_html_top_of_page = 'HTML_TOP_OF_PAGE'
i_callback_pf_status_set = wk_callback_status
i_callback_user_command = wk_callback_ucomm
it_sort = it_sort
i_default = 'X'
i_save = 'A'
is_variant = wk_variant
is_layout = wk_layout
it_fieldcat = it_fieldcat_alv
it_events = it_events
it_event_exit = it_event_exit
it_excluding = it_excluding
is_print = wk_print
TABLES
t_outtab = t_res_head_val.
ENDFORM. " F_DISPLAY_DATA
ALV for Error Log
&----
*& Form display_alv_ERR
&----
text
----
--> p1 text
<-- p2 text
----
FORM display_alv_err .
PERFORM f_fieldcat_build_err.
PERFORM f_event_build_err.
PERFORM f_exclude_build_err.
PERFORM f_print_build_err.
PERFORM f_layout_build_err.
PERFORM f_display_data_err.
ENDFORM. " display_alv_ERR
*----
*& Form F_FIELDCAT_BUILD_err
&----
text
----
--> p1 text
<-- p2 text
----
FORM f_fieldcat_build_err .
BREAK-POINT.
REFRESH it_fieldcat_alv.
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
i_program_name = wk_repid
i_internal_tabname = 'TY_ERRLOG'
i_structure_name = 'YPP_ERR_LOG'
i_inclname = wk_repid
CHANGING
ct_fieldcat = it_fieldcat_alv_err.
LOOP AT it_fieldcat_alv INTO wk_fieldcat_alv.
CASE wk_fieldcat_alv-fieldname.
WHEN 'COUNTER'.
wk_fieldcat_alv-seltext_s = text-023.
wk_fieldcat_alv-seltext_m = text-023.
wk_fieldcat_alv-seltext_l = text-023.
wk_fieldcat_alv-reptext_ddic = text-023.
wk_fieldcat_alv-edit = 'X'.
WHEN 'TYPE'.
wk_fieldcat_alv-seltext_s = text-009.
wk_fieldcat_alv-seltext_m = text-009.
wk_fieldcat_alv-seltext_l = text-009.
wk_fieldcat_alv-reptext_ddic = text-009.
wk_fieldcat_alv-edit = 'X'.
WHEN 'NAME'.
wk_fieldcat_alv-seltext_s = text-010.
wk_fieldcat_alv-seltext_m = text-010.
wk_fieldcat_alv-seltext_l = text-010.
wk_fieldcat_alv-reptext_ddic = text-010.
wk_fieldcat_alv-edit = 'X'.
WHEN 'VRSIOID'.
wk_fieldcat_alv-seltext_s = text-011.
wk_fieldcat_alv-seltext_m = text-011.
wk_fieldcat_alv-seltext_l = text-011.
wk_fieldcat_alv-reptext_ddic = text-011.
wk_fieldcat_alv-edit = 'X'.
WHEN 'RESTYPE'.
wk_fieldcat_alv-seltext_s = text-012.
wk_fieldcat_alv-seltext_m = text-012.
wk_fieldcat_alv-seltext_l = text-012.
wk_fieldcat_alv-reptext_ddic = text-012.
wk_fieldcat_alv-edit = 'X'.
WHEN 'MESSAGE'.
wk_fieldcat_alv-seltext_s = text-013.
wk_fieldcat_alv-seltext_m = text-013.
wk_fieldcat_alv-seltext_l = text-013.
wk_fieldcat_alv-reptext_ddic = text-013.
wk_fieldcat_alv-edit = 'X'.
WHEN OTHERS.
ENDCASE.
MODIFY it_fieldcat_alv FROM wk_fieldcat_alv.
ENDLOOP.
ENDFORM. " F_FIELDCAT_BUILD_err
*&----
*& Form F_EVENT_BUILD_err
&----
text
----
--> p1 text
<-- p2 text
----
FORM f_event_build_err .
CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
EXPORTING
i_list_type = 0
IMPORTING
et_events = it_events.
READ TABLE it_events WITH KEY name = slis_ev_top_of_page
INTO wk_events.
IF sy-subrc = 0.
MOVE c_formname_top_of_page TO wk_events-form.
MODIFY it_events FROM wk_events INDEX sy-tabix.
ENDIF.
ENDFORM. " F_EVENT_BUILD_err
&----
*& Form F_EXCLUDE_BUILD_err
&----
text
----
--> p1 text
<-- p2 text
----
FORM f_exclude_build_err .
wk_excluding = '&GRAPH'. "Graphic
APPEND wk_excluding TO it_excluding.
ENDFORM. " F_EXCLUDE_BUILD_err
&----
*& Form F_PRINT_BUILD_err
&----
text
----
--> p1 text
<-- p2 text
----
FORM f_print_build_err .
wk_print-no_print_listinfos = 'X'.
ENDFORM. " F_PRINT_BUILD_err
&----
*& Form F_LAYOUT_BUILD_err
&----
text
----
--> p1 text
<-- p2 text
----
FORM f_layout_build_err .
wk_layout-zebra = 'X'.
WK_LAYOUT-COLWIDTH_OPTIMIZE = 'X'.
wk_layout-detail_popup = 'X'.
wk_layout-detail_initial_lines = 'X'.
wk_layout-detail_titlebar = 'Details '.
ENDFORM. " F_LAYOUT_BUILD_err
&----
*& Form F_DISPLAY_DATA_err
&----
text
----
--> p1 text
<-- p2 text
----
FORM f_display_data_err .
wk_callback_ucomm = 'CALLBACK_UCOMM'.
IF SY-UCOMM ne '&F03'.
wk_callback_status = 'CALLBACK_STATUS'.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_background_id = 'SIWB_WALLPAPER'
i_callback_program = wk_repid
i_callback_pf_status_set = wk_callback_status
i_callback_user_command = wk_callback_ucomm
it_sort = it_sort
i_default = 'X'
i_save = 'A'
is_variant = wk_variant
is_layout = wk_layout
it_fieldcat = it_fieldcat_alv_err
it_events = it_events
it_event_exit = it_event_exit
it_excluding = it_excluding
is_print = wk_print
TABLES
t_outtab = t_errlog.
KEEP EERRLOG BUTTON
SET PF-STATUS 'ZSTANDARD' EXCLUDING 'UPD' IMMEDIATELY.
ENDFORM. "f_display_data_err
**& Form F_TOP_OF_PAGE
*&----
text
*----
FORM f_top_of_page.
CLEAR: it_list_comments[],
wk_list_comments,
wk_list1_comments,
wk_list2_comments.
wk_list_comments-typ = 'H'. "H=Header,S=Selection, A=Action
wk_list_comments-key = ''.
CASE sy-ucomm.
WHEN ''.
wk_list_comments-info = text-030.
WHEN 'UPD'.
IF t_errlog[] IS INITIAL.
wk_list_comments-info = text-031.
ELSE.
wk_list_comments-info = text-032.
ENDIF.
WHEN 'ERRLOG'.
wk_list_comments-info = text-032.
WHEN '&F03'.
wk_list_comments-info = text-031.
WHEN '&F15'.
wk_list_comments-info = text-031.
WHEN '&F12'.
wk_list_comments-info = text-031.
ENDCASE.
APPEND wk_list_comments TO it_list_comments.
WRITE sy-datum TO wa_date.
WRITE sy-uzeit TO wa_time.
wk_list_comments-typ = 'S'. "H=Header, S=Selection, A=Action
wk_list_comments-key = ''.
wk_list_comments-info = 'User:'.
wk_list1_comments-info = sy-uname.
CONCATENATE wk_list_comments wk_list1_comments
INTO wk_list2_comments.
APPEND wk_list2_comments TO it_list_comments.
wk_list_comments-typ = 'S'. "H=Header, S=Selection, A=Action
wk_list_comments-key = ''.
wk_list_comments-info = ' Run Date : '.
wk_list1_comments-info = wa_date.
CONCATENATE wk_list_comments wk_list1_comments
INTO wk_list2_comments .
APPEND wk_list2_comments TO it_list_comments.
wk_list_comments-typ = 'S'. "H=Header, S=Selection, A=Action
wk_list_comments-key = ''.
wk_list_comments-info = 'Run Time : '.
wk_list1_comments-info = wa_time.
CONCATENATE wk_list_comments wk_list1_comments
INTO wk_list2_comments .
APPEND wk_list2_comments TO it_list_comments.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
I_LOGO = 'ENJOYSAP_LOGO'
it_list_commentary = it_list_comments.
ENDFORM. "F_TOP_OF_PAGE
----
FORM USER_COMMAND_SAMPLE *
----
--> UCOMM *
--> SELFIELD *
----
FORM callback_ucomm USING ucomm LIKE sy-ucomm
selfield TYPE slis_selfield.
DATA: v_langu(2) ,
v_loctype TYPE /sapapo/c_loctype.
data err_flg(1).
IF bapi_run_yes_no IS INITIAL.
CASE sy-ucomm.
WHEN 'UPD'.
bapi_run_yes_no = 'X'.
LOOP AT t_res_head_val WHERE val_err_msg EQ space.
v_langu = 'EN'.
refresh tables
REFRESH : resource_head ,
resource_head_x ,
resource_text ,
resource_text_x,
t_return.
CLEAR : resource_head ,
resource_head_x ,
resource_text ,
resource_text_x,
t_return .
resource_head-resource = t_res_head-name .
resource_head-restype = t_res_head-restype.
resource_head-location = t_res_head-locno.
CLEAR : v_loctype .
SELECT SINGLE loctype FROM /sapapo/loc CLIENT SPECIFIED
INTO v_loctype
WHERE mandt = sy-mandt
AND locno = t_res_head-locno.
resource_head-loctype = v_loctype.
resource_head-calendar = t_res_head-calendar.
resource_head-type = t_res_head-type.
IF t_res_head-type = '03'.
resource_head-dimension_bucket = t_res_head-dimension_bucket.
ELSE.
resource_head-dimension_bucket = space.
ENDIF.
APPEND resource_head.
CLEAR resource_head.
resource_head_x-resource = t_res_head-name.
resource_head_x-restype = 'X'.
resource_head_x-location = 'X'.
resource_head_x-loctype = 'X'.
resource_head_x-calendar = 'X'.
resource_head_x-type = 'X'.
IF t_res_head-type = '03'.
resource_head_x-dimension_bucket = 'X'.
ELSE.
resource_head_x-dimension_bucket = space.
ENDIF.
APPEND resource_head_x.
CLEAR resource_head_x.
resource_text-resource = t_res_head-name.
resource_text-langu = v_langu.
resource_text-res_short_text = t_res_head-text.
APPEND resource_text.
CLEAR resource_text.
resource_text_x-resource = t_res_head-name.
resource_text_x-langu = v_langu.
resource_text_x-res_short_text = 'X'.
APPEND resource_text_x.
CLEAR resource_text_x.
call bapi
CALL FUNCTION 'BAPI_RSSRVAPS_SAVEMULTI_30A'
EXPORTING
logical_system = 'AD2CLNT200'
business_system_group = 'BSG001'
commit_control = 'E'
NO_CREATE = ' '
TABLES
resource_head = resource_head
resource_head_x = resource_head_x
resource_text = resource_text
resource_text_x = resource_text_x
return = t_return.
IF sy-subrc = 0.
LOOP AT t_return WHERE type = 'E'
OR type = 'A'.
MOVE t_res_head_val-counter TO t_errlog-counter.
MOVE t_res_head_val-type TO t_errlog-type.
MOVE t_res_head_val-name TO t_errlog-name.
MOVE t_res_head_val-vrsioid TO t_errlog-vrsioid.
MOVE t_res_head_val-restype TO t_errlog-restype.
MOVE t_return-message TO t_errlog-message.
APPEND t_errlog.
CLEAR t_errlog..
ENDLOOP.
IF not t_errlog[] is initial..
IF sy-subrc = 0.
ERROR POP UP
MESSAGE text-007 type 'I'.
ELSE.
err_flg = 'X'.
SUCC POP UP
MESSAGE text-008 type 'I'.
ENDIF.
ELSE. "NE 0
LOOP AT t_return WHERE type = 'E'
OR type = 'A'.
MOVE t_res_head_val-counter TO t_errlog-counter.
MOVE t_res_head_val-type TO t_errlog-type.
MOVE t_res_head_val-name TO t_errlog-name.
MOVE t_res_head_val-vrsioid TO t_errlog-vrsioid.
MOVE t_res_head_val-restype TO t_errlog-restype.
MOVE t_return-message TO t_errlog-message.
APPEND t_errlog.
CLEAR t_errlog..
ENDLOOP.
IF sy-subrc = 0.
ELSE.
MOVE t_res_head_val-counter TO t_errlog-counter.
MOVE t_res_head_val-type TO t_errlog-type.
MOVE t_res_head_val-name TO t_errlog-name.
MOVE t_res_head_val-vrsioid TO t_errlog-vrsioid.
MOVE t_res_head_val-restype TO t_errlog-restype.
MOVE 'Error in Creation' TO t_errlog-message.
APPEND t_errlog.
CLEAR t_errlog..
ENDIF.
ENDIF.
ENDLOOP.
gc_flag = 'X'.
REFRESH fcode.
if err_flg = 'X'.
MESSAGE text-008 type 'I'.
endif.
ENDCASE.
ENDIF.
IF NOT t_errlog[] IS INITIAL.
wk_list_comments-info = text-032.
APPEND wk_list_comments TO it_list_comments.
.
APPEND 'UPD' TO fcode_error.
APPEND 'ERRLOG' TO fcode_error.
SET PF-STATUS 'ZSTANDARD' EXCLUDING fcode_error.
PERFORM display_alv_err.
ELSE.
ENDIF.
ENDFORM. "CALLBACK_UCOMM=
&----
*& Form CALLBACK_STATUS
&----
text
----
-->RT_EXTAB text
----
FORM callback_status USING rt_extab TYPE slis_t_extab.
IF bapi_run_yes_no IS NOT INITIAL .
IF t_errlog[] IS INITIAL.
REFRESH fcode.
APPEND 'UPD' TO fcode.
APPEND 'ERRLOG' TO fcode.
SET PF-STATUS 'ZSTANDARD' EXCLUDING 'ERRLOG'.
SET PF-STATUS 'ZSTANDARD' EXCLUDING fcode IMMEDIATELY .
ENDIF.
ELSE.
SET PF-STATUS 'ZSTANDARD' EXCLUDING 'ERRLOG' IMMEDIATELY .
ENDIF.
ENDFORM. "CALLBACK_STATUS
&----
*& Form CALLBACK_STATUS1
&----
text
----
-->RT_EXTAB text
----
FORM callback_status1 USING rt_extab TYPE slis_t_extab.
SET PF-STATUS 'ZSTANDARD' EXCLUDING 'UPD'.
ENDFORM. " CALLBACK_STATUS
&----
*& Form CALLBACK_STATUS2
&----
text
----
-->RT_EXTAB text
----
FORM callback_status2 USING rt_extab TYPE slis_t_extab.
REFRESH fcode_final.
IF sy-ucomm NE '&F03'.
APPEND 'UPD' TO fcode_final.
APPEND 'ERRLOG' TO fcode_final.
SET PF-STATUS 'ZSTANDARD' EXCLUDING fcode_final.
ELSE.
SET PF-STATUS 'ZSTANDARD' EXCLUDING 'UPD'.
ENDIF.
ENDFORM. "CALLBACK_STATUS2
*
&----
*& Form callback_ucomm_E
&----
text
----
-->UCOMM text
-->SELFIELD text
----
FORM callback_ucomm_e USING ucomm LIKE sy-ucomm
selfield TYPE slis_selfield.
CASE sy-ucomm.
WHEN 'ERRLOG' .
PERFORM display_alv_err.
WHEN '&F03'.
SET PF-STATUS 'ZSTANDARD' EXCLUDING 'UPD' IMMEDIATELY .
PERFORM display_alv .
ENDCASE.
ENDFORM. "CALLBACK_UCOMM=
&----
*& Form init_variant
&----
text
----
--> p1 text
<-- p2 text
----
FORM init_variant .
CLEAR: wk_variant.
wk_repid = sy-repid.
wk_variant-report = wk_repid.
wk_variant-username = sy-uname.
wk_variant_save = 'A'. "All types
ENDFORM. " init_variant
&----
*& Form f_read_datum1
&----
text
----
-->P_T_RES_HEAD text
-->P_P_FILE1 text
<--P_W_SUBRC text
----
FORM f_read_datum1 TABLES p_t_res_head STRUCTURE ypp_res_head
USING p_p_file1
CHANGING p_w_subrc.
DATA : iexcel LIKE zexcel_read OCCURS 0 WITH HEADER LINE.
CLEAR p_w_subrc.
CALL FUNCTION 'ZALSM_EXCEL_TO_INTERNAL_TABLE'
EXPORTING
filename = p_p_file1
i_begin_col = 1
i_begin_row = 1
i_end_col = 62
i_end_row = 50000
TABLES
intern = iexcel
EXCEPTIONS
inconsistent_parameters = 1
upload_ole = 2
OTHERS = 3.
IF sy-subrc <> 0.
p_w_subrc = 0 .
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
LOOP AT iexcel WHERE row > 2.
IF iexcel-col = '0001'.
p_t_res_head-type = iexcel-value.
ENDIF.
IF iexcel-col = '0002'.
p_t_res_head-name = iexcel-value.
ENDIF.
IF iexcel-col = '0003'.
p_t_res_head-vrsioid = iexcel-value.
ENDIF.
IF iexcel-col = '0004'.
p_t_res_head-restype = iexcel-value.
ENDIF.
IF iexcel-col = '0005'.
p_t_res_head-locno = iexcel-value.
ENDIF.
IF iexcel-col = '0006'.
p_t_res_head-tzone = iexcel-value.
ENDIF.
IF iexcel-col = '0007'.
p_t_res_head-calendar = iexcel-value.
ENDIF.
IF iexcel-col = '0008'.
p_t_res_head-planner = iexcel-value.
ENDIF.
IF iexcel-col = '0009'.
p_t_res_head-version_active = iexcel-value.
ENDIF.
IF iexcel-col = '0010'.
p_t_res_head-finite_planning = iexcel-value.
ENDIF.
IF iexcel-col = '0011'.
p_t_res_head-lc_days_minus = iexcel-value.
ENDIF.
IF iexcel-col = '0012'.
p_t_res_head-lc_days_plus = iexcel-value.
ENDIF.
IF iexcel-col = '0013'.
p_t_res_head-begti = iexcel-value.
ENDIF.
IF iexcel-col = '0014'.
p_t_res_head-endti = iexcel-value.
ENDIF.
IF iexcel-col = '0015'.
p_t_res_head-breaktime = iexcel-value.
ENDIF.
IF iexcel-col = '0016'.
p_t_res_head-utilization = iexcel-value.
ENDIF.
IF iexcel-col = '0017'.
p_t_res_head-noindivres = iexcel-value.
ENDIF.
IF iexcel-col = '0018'.
p_t_res_head-dimension_bucket = iexcel-value.
ENDIF.
IF iexcel-col = '0019'.
p_t_res_head-define_buckets = iexcel-value.
ENDIF.
IF iexcel-col = '0020'.
p_t_res_head-period = iexcel-value.
ENDIF.
IF iexcel-col = '0021'.
p_t_res_head-num_of_periods = iexcel-value.
ENDIF.
IF iexcel-col = '0022'.
p_t_res_head-capacity_a = iexcel-value.
ENDIF.
IF iexcel-col = '0023'.
p_t_res_head-util_bucket = iexcel-value.
ENDIF.
IF iexcel-col = '0024'.
p_t_res_head-overload = iexcel-value.
ENDIF.
IF iexcel-col = '0025'.
p_t_res_head-underload = iexcel-value.
ENDIF.
IF iexcel-col = '0026'.
p_t_res_head-text = iexcel-value.
ENDIF.
AT END OF row.
APPEND p_t_res_head.
CLEAR p_t_res_head.
ENDAT.
ENDLOOP.
ENDFORM. " f_read_datum1
&----
*& Form f_read_datum2
&----
text
----
-->P_T_RES_HEAD text
-->P_P_FILE2 text
<--P_W_SUBRC text
----
FORM f_read_datum2 TABLES p_t_res_head STRUCTURE ypp_res_head
USING p_p_file2
CHANGING p_w_subrc.
DATA : t_res_head_c like tl_res_head occurs 0 WITH HEADER LINE.
DATA: w_mode_path TYPE yapfpt-path,
w_full_path TYPE yapfpt-path,
w_sy_date TYPE sy-datum.
DATA: v_counter TYPE i .
****delete***
DATA:
length TYPE i .
****delete***
clear: LENGTH.
FIELD-SYMBOLS <fs_hex_container> TYPE x.
REFRESH: t_imex, t_res_head.
SELECT SINGLE PATH FROM YAPFPT INTO W_MODE_PATH.
*
Concatenate w_mode_path 'Resource_' w_sy_date2(2) w_sy_date4(2)
w_sy_date+6(2) '.CSV' into w_full_path.
*
OPEN DATASET p_file2 FOR INPUT IN TEXT MODE ENCODING DEFAULT..
IF sy-subrc = 0.
ASSIGN l_res_head TO <fs_hex_container> CASTING.
DO.
READ DATASET p_file2 INTO t_imex.
IF sy-subrc = 0.
SPLIT t_imex AT ',' INTO
l_res_head-type
l_res_head-name
l_res_head-vrsioid
l_res_head-restype
l_res_head-locno
l_res_head-tzone
l_res_head-calendar
l_res_head-planner
l_res_head-version_active
l_res_head-finite_planning
l_res_head-lc_days_minus
l_res_head-lc_days_plus
l_res_head-begti
l_res_head-endti
l_res_head-breaktime
l_res_head-utilization
l_res_head-noindivres
l_res_head-define_buckets
l_res_head-period
l_res_head-num_of_periods
l_res_head-capacity_a
l_res_head-util_bucket
l_res_head-overload
l_res_head-underload
l_res_head-text
.
****delete***
LENGTH = STRLEN( t_res_head-val_err_msg ) .
*
LENGTH = LENGTH - 1 .
*
t_res_head-val_err_msg+LENGTH(1) = SPACE.
****delete***
APPEND l_res_head TO t_res_head.
v_counter = v_counter + 1.
ELSE.
p_w_subrc = 0 .
EXIT.
ENDIF.
IF v_counter = 5 .
EXIT.
ELSE.
ENDIF.
ENDDO.
ELSE.
p_w_subrc = 0 .
ENDIF.
CLOSE DATASET p_file2.
loop at t_res_head .
if sy-tabix <= 2 .
else.
move-corresponding t_res_head to t_res_head_c .
Append t_res_head_c.
CLEAR T_RES_HEAD_C.
endif.
.
endloop.
T_RES_HEAD[] = T_RES_HEAD_C[].
ENDFORM. " f_read_datum2
&----
*& Form VALIDATION
&----
text
----
--> p1 text
<-- p2 text
----
FORM validation .
DATA: V_EXCEL_ROW_NO TYPE I VALUE 2 ..
LOOP AT t_res_head.
V_EXCEL_ROW_NO = V_EXCEL_ROW_NO + 1.
DATA: v_vrsioid TYPE /sapapo/vrsioid,
v_locno TYPE /sapapo/loc-locno,
v_planner TYPE /sapapo/planner-planner,
v_ident TYPE tfact-ident.
*1) Valdidate Type
CASE t_res_head-type.
WHEN '04' OR '05' OR '03' .
WHEN OTHERS .
t_res_head_val-COUNTER = V_EXCEL_ROW_NO .
MOVE-CORRESPONDING t_res_head TO t_res_head_val .
t_res_head_val-val_err_no = '01' .
t_res_head_val-val_err_msg = text-014 .
APPEND t_res_head_val.
CLEAR t_res_head_val.
IF NOT w_val_err_flag IS INITIAL.
ELSE.
w_val_err_flag = 'X'.
ENDIF.
ENDCASE.
*2) Validate Planning Version
SELECT SINGLE vrsioid FROM /sapapo/apo01 CLIENT SPECIFIED
INTO v_vrsioid
WHERE mandt = sy-mandt
AND vrsioex = t_res_head-vrsioid.
IF sy-subrc = 0.
ELSE.
t_res_head_val-COUNTER = V_EXCEL_ROW_NO .
MOVE-CORRESPONDING t_res_head TO t_res_head_val .
t_res_head_val-val_err_no = '02' .
t_res_head_val-val_err_msg = text-015 .
APPEND t_res_head_val.
CLEAR t_res_head_val.
IF NOT w_val_err_flag IS INITIAL.
ELSE.
w_val_err_flag = 'X'.
ENDIF.
ENDIF.
.
*3) Validate Category
IF t_res_head-restype = 'P'.
ELSE.
t_res_head_val-COUNTER = V_EXCEL_ROW_NO .
MOVE-CORRESPONDING t_res_head TO t_res_head_val .
t_res_head_val-val_err_no = '03' .
t_res_head_val-val_err_msg = text-016 .
APPEND t_res_head_val.
CLEAR t_res_head_val.
IF NOT w_val_err_flag IS INITIAL.
ELSE.
w_val_err_flag = 'X'.
ENDIF.
ENDIF.
*4) Validate Location
SELECT SINGLE locno FROM /sapapo/loc CLIENT SPECIFIED
INTO v_locno
WHERE mandt = sy-mandt
AND locno = t_res_head-locno.
IF sy-subrc = 0.
ELSE.
t_res_head_val-COUNTER = V_EXCEL_ROW_NO .
MOVE-CORRESPONDING t_res_head TO t_res_head_val .
t_res_head_val-val_err_no = '04' .
t_res_head_val-val_err_msg = text-017 .
APPEND t_res_head_val.
CLEAR t_res_head_val.
IF NOT w_val_err_flag IS INITIAL.
ELSE.
w_val_err_flag = 'X'.
ENDIF.
ENDIF.
*5) Validate Time Zone.
IF t_res_head-tzone EQ 'INDIA'.
ELSE.
t_res_head_val-COUNTER = V_EXCEL_ROW_NO .
MOVE-CORRESPONDING t_res_head TO t_res_head_val .
t_res_head_val-val_err_no = '05' .
t_res_head_val-val_err_msg = text-018 .
APPEND t_res_head_val.
CLEAR t_res_head_val.
IF NOT w_val_err_flag IS INITIAL.
ELSE.
w_val_err_flag = 'X'.
ENDIF.
ENDIF.
*6) Validate Factory Calendar
SELECT SINGLE ident FROM tfact
INTO v_ident
WHERE ident = t_res_head-calendar.
IF sy-subrc = 0.
ELSE.
t_res_head_val-COUNTER = V_EXCEL_ROW_NO .
MOVE-CORRESPONDING t_res_head TO t_res_head_val .
t_res_head_val-val_err_no = '06' .
t_res_head_val-val_err_msg = text-019 .
APPEND t_res_head_val.
CLEAR t_res_head_val.
IF NOT w_val_err_flag IS INITIAL.
ELSE.
w_val_err_flag = 'X'.
ENDIF.
ENDIF.
*7) Validate Planner
SELECT SINGLE planner FROM /sapapo/planner CLIENT SPECIFIED
INTO v_planner
WHERE mandt = sy-mandt
AND planner = t_res_head-planner.
IF sy-subrc EQ 0.
ELSE.
t_res_head_val-val_err_no = '07' .
t_res_head_val-val_err_msg = text-020 .
MODIFY t_res_head_val.
IF NOT w_val_err_flag IS INITIAL.
ELSE.
w_val_err_flag = 'X'.
ENDIF.
ENDIF.
*8) Validate Start
IF t_res_head-begti+0(2) > '24' OR
t_res_head-begti+2(1) NE ':' OR
t_res_head-begti+3(2) > '59' OR
t_res_head-begti+5(1) NE ':' OR
t_res_head-begti+6(2) > '59'.
t_res_head_val-COUNTER = V_EXCEL_ROW_NO .
MOVE-CORRESPONDING t_res_head TO t_res_head_val .
t_res_head_val-val_err_no = '08' .
t_res_head_val-val_err_msg = text-021 .
APPEND t_res_head_val.
CLEAR t_res_head_val.
IF NOT w_val_err_flag IS INITIAL.
ELSE.
w_val_err_flag = 'X'.
ENDIF.
ENDIF.
*9) Validate End
IF t_res_head-endti+0(2) > '24' OR
t_res_head-endti+2(1) NE ':' OR
t_res_head-endti+3(2) > '59' OR
t_res_head-endti+5(1) NE ':' OR
t_res_head-endti+6(2) > '59'.
t_res_head_val-COUNTER = V_EXCEL_ROW_NO .
MOVE-CORRESPONDING t_res_head TO t_res_head_val .
t_res_head_val-val_err_no = '09' .
t_res_head_val-val_err_msg = text-021 .
APPEND t_res_head_val.
CLEAR t_res_head_val.
IF NOT w_val_err_flag IS INITIAL.
ELSE.
w_val_err_flag = 'X'.
ENDIF.
ENDIF.
*10) Validate Break Duration
IF t_res_head-breaktime+0(2) > '24' OR
t_res_head-breaktime+2(1) NE ':' OR
t_res_head-breaktime+3(2) > '59' OR
t_res_head-breaktime+5(1) NE ':' OR
t_res_head-breaktime+6(2) > '59'.
t_res_head_val-COUNTER = V_EXCEL_ROW_NO .
MOVE-CORRESPONDING t_res_head TO t_res_head_val .
t_res_head_val-val_err_no = '10' .
t_res_head_val-val_err_msg = text-021 .
APPEND t_res_head_val.
CLEAR t_res_head_val.
IF NOT w_val_err_flag IS INITIAL.
ELSE.
w_val_err_flag = 'X'.
ENDIF.
ENDIF.
*11) Validate Capacity
CASE t_res_head-type.
WHEN '03'.
WHEN '04' .
IF t_res_head-noindivres = ' ' .
ELSE.
t_res_head_val-COUNTER = V_EXCEL_ROW_NO .
MOVE-CORRESPONDING t_res_head TO t_res_head_val .
t_res_head_val-val_err_no = '11' .
t_res_head_val-val_err_msg = text-022 .
APPEND t_res_head_val.
CLEAR t_res_head_val.
IF NOT w_val_err_flag IS INITIAL.
ELSE.
w_val_err_flag = 'X'.
ENDIF.
ENDIF.
WHEN '05'.
IF t_res_head-noindivres > '0'.
ELSE.
t_res_head_val-COUNTER = V_EXCEL_ROW_NO .
MOVE-CORRESPONDING t_res_head TO t_res_head_val .
t_res_head_val-val_err_no = '11' .
t_res_head_val-val_err_msg = text-022.
APPEND t_res_head_val.
CLEAR t_res_head_val.
IF NOT w_val_err_flag IS INITIAL.
ELSE.
w_val_err_flag = 'X'.
ENDIF.
ENDIF.
WHEN OTHERS.
t_res_head_val-COUNTER = V_EXCEL_ROW_NO .
MOVE-CORRESPONDING t_res_head TO t_res_head_val .
t_res_head_val-val_err_no = '11' .
t_res_head_val-val_err_msg = text-022 .
APPEND t_res_head_val.
CLEAR t_res_head_val.
IF NOT w_val_err_flag IS INITIAL.
ELSE.
w_val_err_flag = 'X'.
ENDIF.
ENDCASE.
if w_val_err_flag = ' '.
t_res_head_val-COUNTER = V_EXCEL_ROW_NO .
MOVE-CORRESPONDING t_res_head TO t_res_head_val .
t_res_head_val-val_err_no = ' ' .
t_res_head_val-val_err_msg = ' ' .
APPEND t_res_head_val.
CLEAR t_res_head_val.
else.
endif.
ENDLOOP.
IF w_val_err_flag = 'X' .
MESSAGE text-006 type 'I'. .
ELSE.
MESSAGE text-005 type 'I'.
ENDIF.
Regards,
T.Nagaraju
10-09-2007 12:59 PM