0% found this document useful (0 votes)
250 views

BDC Xk02 Ooabap

The document describes a ZBDC_XK02 program that: 1. Reads Excel data and processes it using transaction XK02 for contract data. 2. Logs any error or warning messages during processing and displays results in an ALV grid. 3. The program uses classes and methods to initialize objects, fill internal tables from Excel, process the data using BDC calls, log messages, and display outputs.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
250 views

BDC Xk02 Ooabap

The document describes a ZBDC_XK02 program that: 1. Reads Excel data and processes it using transaction XK02 for contract data. 2. Logs any error or warning messages during processing and displays results in an ALV grid. 3. The program uses classes and methods to initialize objects, fill internal tables from Excel, process the data using BDC calls, log messages, and display outputs.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 14

***********************************************************************

* Program Name : ZBDC_XK02 *


* Description : XK02 BDC Program *
* Create Date : 18.05.2020 *
* Package : ZABAP *
* Tcode : *
* FO Owner : Rajat Kumar *
* Tech Owner : Tania Das *
************************************************************************
REPORT zbdc_xk02.

INCLUDE : zbdc_xk02_top, "" top declaration


zbdc_xk02_sel, "" selection screen declaration
zbdc_xk02_form. "" form

* Used to limit user commands on selection-screen


INCLUDE rsdbc1xx.

*Global ref object declaration.


DATA: gref_contract_bdc TYPE REF TO lcl_contract_bdc.

*Initialization
INITIALIZATION.

IF gref_contract_bdc IS NOT BOUND.


TRY .
CREATE OBJECT gref_contract_bdc.
CATCH cx_sy_create_object_error INTO DATA(lref_create_object_error) .
lref_create_object_error->if_message~get_text( ).
ENDTRY.
ENDIF.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file.


PERFORM sub_get_pres_filepath CHANGING p_file.

*Start of Selection event.


START-OF-SELECTION.
IF gref_contract_bdc IS BOUND.
CALL METHOD: gref_contract_bdc->fill_itable( iv_pfile = p_file ).
IF lt_excel[] IS NOT INITIAL.
CALL METHOD: gref_contract_bdc->forg_data_process.
IF gt_final[] IS NOT INITIAL.
CALL METHOD: gref_contract_bdc->display_alv.
ELSE.
MESSAGE 'No data for Process' TYPE 'S'.
ENDIF.
ENDIF.
ENDIF.
*&---------------------------------------------------------------------*
*& Include ZBDC_XK02_TOP
*&---------------------------------------------------------------------*

TYPES: BEGIN OF ty_excel,


lifnr TYPE string, "lifnr,
bukrs TYPE string, "bukrs,
qland TYPE string, "qland,
witht TYPE string, "witht,
wt_withcd TYPE string, "wt_withcd,
** WT_SUBJCT TYPE string,
qsrec TYPE string, "wt_qsrec,
END OF ty_excel,

BEGIN OF ty_final,
lifnr TYPE lifnr,
bukrs TYPE bukrs,
qland TYPE qland,
witht TYPE witht,
wt_withcd TYPE wt_withcd,
** WT_SUBJCT TYPE string,
qsrec TYPE wt_qsrec,
msg(100) TYPE c,
MSG1(10) TYPE C,
END OF ty_final.

**Global variable declaration


DATA: gv_mode TYPE char01 VALUE 'N',
gv_upd TYPE char01 VALUE 'S'.

*Data declaration
DATA: gt_final TYPE STANDARD TABLE OF ty_final,
gs_final TYPE ty_final,
lt_excel TYPE ty_excel OCCURS 8 WITH HEADER LINE,
ls_excel TYPE ty_excel,
it_header TYPE TABLE OF ty_excel,
wa_header TYPE ty_excel,
it_item TYPE TABLE OF ty_excel,
wa_item TYPE ty_excel,
gs_bdcdata TYPE bdcdata,
gt_bdcdata TYPE STANDARD TABLE OF bdcdata,
gt_msgcoll TYPE STANDARD TABLE OF bdcmsgcoll,
gref_columns TYPE REF TO cl_salv_columns_table,
gw_msgcoll TYPE bdcmsgcoll,
wa_options TYPE ctu_params,
ls_params TYPE pri_params,
lv_ppath TYPE string,
lv_lifnr(10) TYPE c.

DATA: it_zbdc_xk02 TYPE TABLE OF zfi_bdc_xk02_t,


wa_zbdc_xk02 TYPE zfi_bdc_xk02_t.
*&---------------------------------------------------------------------*
*& Include ZBDC_XK02_SEL
*&---------------------------------------------------------------------*

SELECTION-SCREEN BEGIN OF BLOCK blk1 WITH FRAME TITLE text-001.


PARAMETERS: p_file TYPE rlgrap-filename,
p_fname TYPE setformula NO-DISPLAY.
PARAMETERS: p_mode LIKE wa_options-dismode DEFAULT 'N'.

SELECTION-SCREEN END OF BLOCK blk1.

FORM sub_get_pres_filepath CHANGING fp_sflpat TYPE any.


DATA : l_field_name TYPE dynpread-fieldname VALUE 'P_PFILE'.

CALL FUNCTION 'F4_FILENAME'


EXPORTING
* PROGRAM_NAME = SYST-CPROG
* DYNPRO_NUMBER = SYST-DYNNR
field_name = l_field_name
IMPORTING
file_name = fp_sflpat.
ENDFORM.

*&---------------------------------------------------------------------*
*& Include ZBDC_XK02_FORM
*&---------------------------------------------------------------------*

CLASS lcl_contract_bdc DEFINITION.


PUBLIC SECTION.
METHODS:
constructor,
fill_itable IMPORTING iv_pfile TYPE rlgrap-filename,
forg_data_process,
* bdc_date_format IMPORTING im_date TYPE string
* EXPORTING ex_date TYPE char10 ,
call_bdc ,
message_log,
display_alv,
column_setting.
PRIVATE SECTION.
DATA: p_text(100) TYPE c,
lref_salv_table TYPE REF TO cl_salv_table,
lref_salv_functions TYPE REF TO cl_salv_functions,
lt_raw TYPE truxs_t_text_data.

ENDCLASS.

CLASS lcl_contract_bdc IMPLEMENTATION.


METHOD constructor.
REFRESH : gt_bdcdata,
gt_msgcoll,
lt_excel,
gt_final.
CLEAR: ls_excel, gw_msgcoll, gs_final.
ENDMETHOD.

METHOD fill_itable.
REFRESH: gt_final,lt_excel,gt_bdcdata,gt_msgcoll.
CLEAR: gs_final,ls_excel,gs_bdcdata,gw_msgcoll,gref_columns.
* Upload Excel file

CALL FUNCTION 'TEXT_CONVERT_XLS_TO_SAP'


EXPORTING
* I_FIELD_SEPERATOR = I_FIELD_SEPERATOR
i_line_header = 'X' ""I_LINE_HEADER
i_tab_raw_data = lt_raw ""i_tab_raw_data
i_filename = iv_pfile ""i_filename
TABLES
i_tab_converted_data = lt_excel "" i_tab_converted_data
EXCEPTIONS
conversion_failed = 1
OTHERS = 2.

IF sy-subrc NE 0.
MESSAGE ID sy-msgid
TYPE 'S'
NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4 DISPLAY LIKE sy-
msgty.
LEAVE TO LIST-PROCESSING.
ENDIF.

IF NOT lt_excel[] IS INITIAL.


** SORT lt_excel BY lifnr bukrs.
it_header[] = lt_excel[].
it_item[] = lt_excel[].
DELETE ADJACENT DUPLICATES FROM it_header COMPARING lifnr bukrs.
ENDIF.
ENDMETHOD.

METHOD forg_data_process.
wa_options-defsize = 'X'.
wa_options-updmode = 'S'.
wa_options-dismode = p_mode. ""'N'.

IF it_header IS NOT INITIAL.


LOOP AT it_header INTO wa_header.
REFRESH: gt_bdcdata, gt_msgcoll.

PERFORM bdc_dynpro USING 'SAPMF02K' '0101'.


PERFORM bdc_field USING 'BDC_CURSOR'
'RF02K-D0610'.
PERFORM bdc_field USING 'BDC_OKCODE'
'/00'.
PERFORM bdc_field USING 'RF02K-LIFNR'
wa_header-lifnr. ""'300228'.
PERFORM bdc_field USING 'RF02K-BUKRS'
wa_header-bukrs. ""'MCCS'.
PERFORM bdc_field USING 'RF02K-D0610'
'X'.

PERFORM form_item.

CALL METHOD me->call_bdc.


* BREAK-POINT.
CALL METHOD me->message_log .
CLEAR: wa_header.
REFRESH: gt_bdcdata, gt_msgcoll.
ENDLOOP.
ENDIF.
ENDMETHOD.

METHOD call_bdc.
CALL TRANSACTION 'XK02' USING gt_bdcdata "MODE P_MODE
" UPDATE 'A'"gv_upd'
OPTIONS FROM wa_options
MESSAGES INTO gt_msgcoll .
ENDMETHOD.

METHOD message_log.
IF gt_msgcoll[] IS NOT INITIAL.

LOOP AT gt_msgcoll INTO gw_msgcoll.

CLEAR : p_text.
CALL FUNCTION 'FORMAT_MESSAGE'
EXPORTING
id = gw_msgcoll-msgid ""SY-MSGID
lang = sy-langu ""'-D'
no = gw_msgcoll-msgnr ""SY-MSGNO
v1 = gw_msgcoll-msgv1 ""SY-MSGV1
v2 = gw_msgcoll-msgv2 ""SY-MSGV2
v3 = gw_msgcoll-msgv3 ""SY-MSGV3
v4 = gw_msgcoll-msgv4 ""SY-MSGV4
IMPORTING
msg = p_text
EXCEPTIONS
not_found = 1
OTHERS = 2.

READ TABLE gt_msgcoll INTO gw_msgcoll WITH KEY msgtyp = 'E'.


IF sy-subrc EQ 0.
gs_final-lifnr = wa_header-lifnr.
gs_final-bukrs = wa_header-bukrs.
gs_final-qland = wa_item-qland.
gs_final-witht = wa_item-witht.
gs_final-wt_withcd = wa_item-wt_withcd.
gs_final-qsrec = wa_item-qsrec.
gs_final-msg = p_text.
gs_final-msg1 = 'Error'.

APPEND gs_final TO gt_final.


CLEAR: gs_final,gw_msgcoll.
* ELSEIF sy-subrc NE 0.
* READ TABLE gt_msgcoll INTO gw_msgcoll WITH KEY msgtyp = 'W'.
* IF sy-subrc EQ 0 .
** COMMIT WORK AND WAIT.
* gs_final-lifnr = wa_header-lifnr.
* gs_final-bukrs = wa_header-bukrs.
* gs_final-qland = wa_item-qland.
* gs_final-witht = wa_item-witht.
* gs_final-wt_withcd = wa_item-wt_withcd.
* gs_final-qsrec = wa_item-qsrec.
* gs_final-msg = p_text.
* gs_final-msg1 = 'Success'.
* APPEND gs_final TO gt_final.
* CLEAR: gs_final, gw_msgcoll.
ELSEIF sy-subrc NE 0.
READ TABLE gt_msgcoll INTO gw_msgcoll WITH KEY msgtyp = 'S'.
IF sy-subrc EQ 0.
COMMIT WORK AND WAIT.
gs_final-lifnr = wa_header-lifnr.
gs_final-bukrs = wa_header-bukrs.
gs_final-qland = wa_item-qland.
gs_final-witht = wa_item-witht.
gs_final-wt_withcd = wa_item-wt_withcd.
gs_final-qsrec = wa_item-qsrec.
gs_final-msg = p_text.
gs_final-msg1 = 'Success'.
APPEND gs_final TO gt_final.
CLEAR: gs_final, gw_msgcoll.
ENDIF.
ENDIF.
ENDLOOP.

ELSE.
COMMIT WORK AND WAIT.
gs_final-lifnr = wa_header-lifnr.
gs_final-bukrs = wa_header-bukrs.
gs_final-qland = wa_item-qland.
gs_final-witht = wa_item-witht.
gs_final-wt_withcd = wa_item-wt_withcd.
gs_final-qsrec = wa_item-qsrec.
gs_final-msg = 'Successfully Updated'.
gs_final-msg1 = 'Success'.
APPEND gs_final TO gt_final.
CLEAR: gs_final, gw_msgcoll.

ENDIF.
""""""""""""""""""" Save response data into table"""""""""""""""""
IF gt_final IS NOT INITIAL.
CLEAR: wa_zbdc_xk02.
REFRESH: it_zbdc_xk02.
LOOP AT gt_final INTO gs_final.
MOVE-CORRESPONDING gs_final TO wa_zbdc_xk02.
wa_zbdc_xk02-start_date = sy-datum.
wa_zbdc_xk02-time = sy-uzeit.
wa_zbdc_xk02-user_name = sy-uname.

APPEND wa_zbdc_xk02 TO it_zbdc_xk02.


CLEAR: wa_zbdc_xk02,gs_final.
ENDLOOP.

IF it_zbdc_xk02 IS NOT INITIAL.


MODIFY zfi_bdc_xk02_t FROM TABLE it_zbdc_xk02.
IF sy-subrc IS INITIAL.
COMMIT WORK.
REFRESH it_zbdc_xk02.
ENDIF.
ENDIF.

ENDIF.
ENDMETHOD.

METHOD display_alv.
IF gt_final[] IS NOT INITIAL." AND sy-batch NE 'X'.
TRY.
CALL METHOD cl_salv_table=>factory
EXPORTING
list_display = if_salv_c_bool_sap=>false
IMPORTING
r_salv_table = lref_salv_table
CHANGING
t_table = gt_final.

CATCH cx_salv_msg INTO DATA(lref_salv_msg).


lref_salv_msg->if_alv_message~get_message( ).
ENDTRY.
"To set the screen status
TRY.
CALL METHOD lref_salv_table->set_screen_status
EXPORTING
report = sy-repid
pfstatus = sy-pfkey.
ENDTRY.
"Get the list of function code
CALL METHOD lref_salv_table->get_functions
RECEIVING
value = lref_salv_functions.

"To set the toolbar in ALV


CALL METHOD lref_salv_functions->set_all
EXPORTING
value = if_salv_c_bool_sap=>true.

DATA: lr_layout TYPE REF TO cl_salv_layout,


ls_key TYPE salv_s_layout_key.

lr_layout = lref_salv_table->get_layout( ).
ls_key-report = sy-repid.
lr_layout->set_key( ls_key ).
lr_layout->set_default( 'X' ).
lr_layout->set_save_restriction( if_salv_c_layout=>restrict_none ).

gref_columns = lref_salv_table->get_columns( ).
"To set the column heading and cell formating
me->column_setting( ).
"To display the final ALV
CALL METHOD lref_salv_table->display.
ENDIF.
ENDMETHOD.

METHOD column_setting.
DATA: lr_columns TYPE REF TO cl_salv_columns,
lr_column TYPE REF TO cl_salv_column,
l_text TYPE scrtext_l,
lref_salv_not_found TYPE REF TO cx_salv_not_found,
lv_message TYPE string.

"ALV Column text and formate


TRY.
l_text = text-002.
lr_columns = lref_salv_table->get_columns( ).
lr_column = lr_columns->get_column( 'MSG' ).
lr_column->set_long_text( l_text ).
CALL METHOD lr_column->set_alignment
EXPORTING
value = if_salv_c_alignment=>left.
CATCH cx_salv_not_found INTO lref_salv_not_found.
lv_message = lref_salv_not_found->if_message~get_text( ).
ENDTRY.

TRY.
l_text = text-003.
lr_columns = lref_salv_table->get_columns( ).
lr_column = lr_columns->get_column( 'MSG1' ).
lr_column->set_long_text( l_text ).
CALL METHOD lr_column->set_alignment
EXPORTING
value = if_salv_c_alignment=>left.
CATCH cx_salv_not_found INTO lref_salv_not_found.
lv_message = lref_salv_not_found->if_message~get_text( ).
ENDTRY.
ENDMETHOD.

ENDCLASS.

*&---------------------------------------------------------------------*
*& Form BDC_DYNPRO
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_0471 text
* -->P_0472 text
*----------------------------------------------------------------------*
FORM bdc_dynpro USING program TYPE any
dynpro TYPE any.
CLEAR gs_bdcdata.
gs_bdcdata-program = program.
gs_bdcdata-dynpro = dynpro.
gs_bdcdata-dynbegin = 'X'.
APPEND gs_bdcdata TO gt_bdcdata.
ENDFORM. " BDC_DYNPRO
*&---------------------------------------------------------------------*
*& FORM BDC_FIELD
*&---------------------------------------------------------------------*
* PASSING THE FIELD VALUES TO BDC
*----------------------------------------------------------------------*
FORM bdc_field USING fnam TYPE any
fval TYPE any.
CLEAR gs_bdcdata.
gs_bdcdata-fnam = fnam.
gs_bdcdata-fval = fval.
APPEND gs_bdcdata TO gt_bdcdata.
ENDFORM.

*&---------------------------------------------------------------------*
*& Form FORM_ITEM
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM form_item .
DATA: v_count(2) TYPE n,
v_fld1 TYPE string,
v_fld2 TYPE string,
v_fld3 TYPE string,
v_fld4 TYPE string.
DATA : lv_ind(01).
lv_ind = 'X'.

* BREAK-POINT .
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
input = wa_header-lifnr
IMPORTING
output = lv_lifnr.

SELECT * FROM lfbw INTO TABLE @DATA(lt_lfbw)


WHERE lifnr = @lv_lifnr ""wa_header-lifnr
AND bukrs = @wa_header-bukrs.
* SHIFT wa_header-lifnr LEFT DELETING LEADING '0'.
DESCRIBE TABLE lt_lfbw LINES DATA(lines).

DATA: lv_lines1(02).
* BREAK-POINT .
* lv_lines1 = 0.
* DO lines TIMES.
* lv_lines1 = lv_lines1 + 1.
* IF lv_lines1 GE 6.
* PERFORM page_down.
* lv_lines1 = lv_lines1 - 6 .
* v_count = lines + 1.
*
* ENDIF.
* ENDDO.
** ASSERT lines = lines( lt_lfbw ).
*
** v_count = lines + 1.
** IF lines gE 6.
** v_count = LV_lines1 + 1.
** ELSE.
** v_count = lines + 1.
** ENDIF.

v_count = lines + 1.
* BREAK-POINT.
IF v_count > 6.
lv_lines1 = 0.
lv_lines1 = lv_lines1 + 1.

CONCATENATE 'LFBW-QSREC(' v_count ')' INTO v_fld4.

PERFORM bdc_dynpro USING 'SAPMF02K' '0610'.


PERFORM bdc_field USING 'BDC_OKCODE'
'=ENTR'.

PERFORM bdc_field USING 'BDC_CURSOR'


v_fld4. ""'LFBW-QSREC(03)'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=ENTR'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=P+'.
* v_count = lv_lines1 + 1.

PERFORM bdc_field USING 'BDC_CURSOR'


v_fld4. ""'LFBW-QSREC(03)'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=ENTR'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=P+'.
v_count = 1.
* ENDIF.

LOOP AT it_item INTO wa_item WHERE lifnr = wa_header-lifnr.

CONCATENATE 'LFBW-WITHT(' v_count ')' INTO v_fld1.


CONCATENATE 'LFBW-WT_WITHCD(' v_count ')' INTO v_fld2.
CONCATENATE 'LFBW-WT_SUBJCT('v_count ')' INTO v_fld3 .
CONCATENATE 'LFBW-QSREC(' v_count ')' INTO v_fld4.

PERFORM bdc_dynpro USING 'SAPMF02K' '0610'.


PERFORM bdc_field USING 'BDC_OKCODE'
'=ENTR'.
PERFORM bdc_field USING 'BDC_CURSOR'
v_fld4. ""'LFBW-QSREC(03)'.
PERFORM bdc_field USING 'LFB1-QLAND'
wa_item-qland. ""'IN'.
PERFORM bdc_field USING v_fld1 ""'LFBW-WITHT(03)'
wa_item-witht. ""'I1'.
PERFORM bdc_field USING v_fld2 ""'LFBW-
WT_WITHCD(03)'
wa_item-wt_withcd. ""'I2'.

PERFORM bdc_field USING v_fld3 ""'LFBW-


WT_SUBJCT(03)'
lv_ind. ""'X'.
PERFORM bdc_field USING v_fld4 ""'LFBW-QSREC(03)'
wa_item-qsrec. ""'OT'.
* PERFORM bdc_dynpro USING 'SAPMF02K' '0610'.
* PERFORM bdc_field USING 'BDC_OKCODE'
* '=UPDA'.
* PERFORM bdc_field USING 'BDC_CURSOR'
* v_fld3. ""'LFBW-
WT_SUBJCT(03)'.
v_count = v_count + 1.
IF v_count > 6.
v_count = 1.

PERFORM bdc_field USING 'BDC_CURSOR'


v_fld4. ""'LFBW-QSREC(03)'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=ENTR'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=P+'.
ENDIF.
ENDLOOP.

PERFORM bdc_dynpro USING 'SAPMF02K' '0610'.


PERFORM bdc_field USING 'BDC_OKCODE'
'=UPDA'.
PERFORM bdc_field USING 'BDC_CURSOR'
v_fld3.

ELSE.

LOOP AT it_item INTO wa_item WHERE lifnr = wa_header-lifnr.

CONCATENATE 'LFBW-WITHT(' v_count ')' INTO v_fld1.


CONCATENATE 'LFBW-WT_WITHCD(' v_count ')' INTO v_fld2.
CONCATENATE 'LFBW-WT_SUBJCT('v_count ')' INTO v_fld3 .
CONCATENATE 'LFBW-QSREC(' v_count ')' INTO v_fld4.

PERFORM bdc_dynpro USING 'SAPMF02K' '0610'.


PERFORM bdc_field USING 'BDC_OKCODE'
'=ENTR'.
PERFORM bdc_field USING 'BDC_CURSOR'
v_fld4. ""'LFBW-QSREC(03)'.
PERFORM bdc_field USING 'LFB1-QLAND'
wa_item-qland. ""'IN'.
PERFORM bdc_field USING v_fld1 ""'LFBW-WITHT(03)'
wa_item-witht. ""'I1'.
PERFORM bdc_field USING v_fld2 ""'LFBW-
WT_WITHCD(03)'
wa_item-wt_withcd. ""'I2'.

PERFORM bdc_field USING v_fld3 ""'LFBW-


WT_SUBJCT(03)'
lv_ind. ""'X'.
PERFORM bdc_field USING v_fld4 ""'LFBW-QSREC(03)'
wa_item-qsrec. ""'OT'.
* PERFORM bdc_dynpro USING 'SAPMF02K' '0610'.
* PERFORM bdc_field USING 'BDC_OKCODE'
* '=UPDA'.
* PERFORM bdc_field USING 'BDC_CURSOR'
* v_fld3. ""'LFBW-
WT_SUBJCT(03)'.
v_count = v_count + 1.
IF v_count > 6.
v_count = 1.

PERFORM bdc_field USING 'BDC_CURSOR'


v_fld4. ""'LFBW-QSREC(03)'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=ENTR'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=P+'.
ENDIF.
ENDLOOP.

PERFORM bdc_dynpro USING 'SAPMF02K' '0610'.


PERFORM bdc_field USING 'BDC_OKCODE'
'=UPDA'.
PERFORM bdc_field USING 'BDC_CURSOR'
v_fld3.

ENDIF.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form PAGE_DOWN
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM page_down .

DATA : v_fld4 TYPE string.


DATA(v_count1) = 6.
DATA : v_count(02).
v_count = v_count1 .
CONCATENATE 'LFBW-QSREC(' v_count ')' INTO v_fld4.
PERFORM bdc_field USING 'BDC_CURSOR'
v_fld4. ""'LFBW-QSREC(03)'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=ENTR'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=P+'.

ENDFORM.
***INCLUDE RSDBC1R0.

TYPE-POOLS: RSDS, SYDB0.

* Zwischengespeicherte RESTRICT-Informationen
DATA BEGIN OF COMMON PART %_RUNT_XX_%.
* Tabelle der bereits initialisierten Programme
DATA: BEGIN OF SCREEN_PROGS OCCURS 5,
PROGRAM LIKE SY-REPID,
LDBPG LIKE SY-LDBPG, " Datenbankprogramm
VARIPROG LIKE SY-REPID, " Variantenprogramm
AFTER_FIRST_PBO, " Erstes PBO vorbei
RESTRICT_SET, " Einmal Restriktionen gesetzt
TITLE LIKE SY-TITLE, " Standardtitel
ANY_VARIANTS,
SUBMODE(2),
STATUS_SUBMODE(2),
DYNSEL,
REPORT_WRITER, " SPEZIALVARIANTENPFLEGE REPORTWRITER.
SSCR LIKE RSSCR OCCURS 0,
DYNREF TYPE SYDB0_DYNREF OCCURS 0,
TEXTS LIKE RSSELTEXTS OCCURS 0,
* modtext type sydb0_modtext occurs 0,
HASH(10),
END OF SCREEN_PROGS.
* Beschreibung der Bilder + Stack
DATA SCREENS TYPE SYDB0_SCREEN_T.
DATA SCR_STACK TYPE SYDB0_SCR_STACK.
DATA CURRENT_SCREEN TYPE SYDB0_SCREEN.
DATA CURRENT_SCR TYPE SYDB0_SCR_STACK_LINE.
DATA PARENT_SCR TYPE SYDB0_SCR_STACK_LINE.
DATA PARENT_NO_SPAGPA LIKE RSSCR-NAME OCCURS 0.
DATA NO_SPAGPA_STACK LIKE PARENT_NO_SPAGPA OCCURS 0 .
data ancestors_scr type SYDB0_SCR_STACK.
* Was muß bei 'Abbrechen' auf Level x restauriert werden?
DATA: BEGIN OF RESTORE OCCURS 5,
LEVEL TYPE I,
PROGRAM LIKE SY-REPID,
VARIANT LIKE SY-SLSET, " Variante
DYNS_FIELDS LIKE RSDSFIELDS OCCURS 10,
TEXPR TYPE RSDS_TEXPR,
VARIDYN LIKE RSVARIDYN OCCURS 0,
VDATDYN LIKE RSVDATDYN OCCURS 0,
VSCR_T TYPE SYDB0_VSCR_T,
MEMKEY LIKE RSVAMEMKEY,
ORIGINAL,
END OF RESTORE.
* Laufende Nummer für Bildstack-Memory-IDs
DATA MEMONUM(8) TYPE N.
* Variantenpflege: Bildverwaltung.
DATA: VARISCREENS LIKE RSDYNNR OCCURS 5 WITH HEADER LINE,
VSCR_TFILL TYPE I,
VSCR_INDEX TYPE I.
DATA: BEGIN OF VSCREENS OCCURS 5,
DYNNR LIKE SY-DYNNR,
END OF VSCREENS.
DATA: VSCR_T TYPE SYDB0_VSCR_T,
CURR_VSCR TYPE SYDB0_VSCR.
* --------- Daten für dynamische Selektion --------------------------- *
DATA: BEGIN OF DYNS,
PROGRAM LIKE SY-REPID, " Programm des dyn. Bildes
SELSCREEN_FLAG, " 'dynamisches' Selektionsbild
INITIALIZED, " bereits initialisiert ?
query_initialized, " Aufruf für Query infoset
FIELDS_SELECTED, " bereits Felder ausgewählt ?
TABS, " DYNS_TABS nicht leer ?
ACTIVE_SELECTIONS TYPE I, " Abgrenzungen aktiv ?
SELID LIKE RSDYNSEL-SELID, " Von INIT gelieferte SELID
VARIS, " Variablen?
END OF DYNS.
* Free_selections-Knoten
DATA: DYNS_NODES LIKE RSDFSNODES OCCURS 0 WITH HEADER LINE.
* Tabelle der selektierten Felder
DATA: BEGIN OF DYNS_FIELDS OCCURS 10 .
INCLUDE STRUCTURE RSDSFIELDS.
DATA: END OF DYNS_FIELDS.

DATA: GL_VARIDYN LIKE RSVARIDYN OCCURS 0.


DATA: GL_VDATDYN LIKE RSVDATDYN OCCURS 0.

DATA: BEGIN OF NOINTS OCCURS 0,


PROGRAM LIKE SY-REPID,
SELOPTS LIKE RSLDBSELOP OCCURS 0,
END OF NOINTS.
DATA END OF COMMON PART %_RUNT_XX_%.
data FLAG_QUERY_ACTIVE.

constants: fdelline like sy-ucomm value 'DELSCTX',


fdelall like sy-ucomm value 'DELACTX',
ftext like sy-ucomm value 'SWITCHTEXT'.

You might also like