BDC Xk02 Ooabap
BDC Xk02 Ooabap
*Initialization
INITIALIZATION.
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.
*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.
*&---------------------------------------------------------------------*
*& Include ZBDC_XK02_FORM
*&---------------------------------------------------------------------*
ENDCLASS.
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
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.
METHOD forg_data_process.
wa_options-defsize = 'X'.
wa_options-updmode = 'S'.
wa_options-dismode = p_mode. ""'N'.
PERFORM form_item.
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.
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.
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.
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.
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.
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.
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.
ELSE.
ENDIF.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form PAGE_DOWN
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM page_down .
ENDFORM.
***INCLUDE RSDBC1R0.
* 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.