Application Development Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 

send some sample program for ALV reports

Former Member
0 Kudos

Hi all ,

send some sample program for ALV reports for learing purpose

tahnks.

1 ACCEPTED SOLUTION

raymond_giuseppi
Active Contributor
0 Kudos

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

4 REPLIES 4

raymond_giuseppi
Active Contributor
0 Kudos

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

Former Member
0 Kudos

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

Former Member
0 Kudos

Hi all