REPORT yregex.
Thursday, 31 October 2024
Wednesday, 16 October 2024
SAP ABAP - Upload G/L Account (FS00) Custom Program
Gui Status
Download template Here
TYPES:
BEGIN OF ty_excel,
bukrs TYPE bukrs,
saknr TYPE saknr,
glacc_type TYPE char1,
ktoks TYPE ska1-ktoks,
txt20 TYPE txt20,
txt50 TYPE txt50,
waers TYPE waers,
kdfsl TYPE skb1-kdfsl,
bewgp TYPE skb1-bewgp,
mwskz TYPE skb1-mwskz,
xmwno TYPE skb1-xmwno,
mitkz TYPE skb1-mitkz,
altkt TYPE skb1-altkt,
infky TYPE skb1-infky,
togru TYPE skb1-togru,
zuawa TYPE skb1-zuawa,
fstag TYPE skb1-fstag,
xintb TYPE skb1-xintb,
xnkon TYPE skb1-xnkon,
xmitk TYPE skb1-xmitk,
fdlev TYPE skb1-fdlev,
xgkon TYPE skb1-xgkon,
hbkid TYPE skb1-hbkid,
hktid TYPE skb1-hktid,
END OF ty_excel,
BEGIN OF ty_data,
icons LIKE icon-id,
snote TYPE char255,
ccell TYPE lvc_t_scol,
cstyl TYPE lvc_t_styl,
cline TYPE char4,
bukrs TYPE bukrs,
saknr TYPE saknr,
glacc_type TYPE char1,
ktoks TYPE ska1-ktoks,
txt20 TYPE txt20,
txt50 TYPE txt50,
waers TYPE waers,
kdfsl TYPE skb1-kdfsl,
bewgp TYPE skb1-bewgp,
mwskz TYPE skb1-mwskz,
xmwno TYPE skb1-xmwno,
mitkz TYPE skb1-mitkz,
altkt TYPE skb1-altkt,
infky TYPE skb1-infky,
togru TYPE skb1-togru,
zuawa TYPE skb1-zuawa,
fstag TYPE skb1-fstag,
xintb TYPE skb1-xintb,
xnkon TYPE skb1-xnkon,
xmitk TYPE skb1-xmitk,
fdlev TYPE skb1-fdlev,
xgkon TYPE skb1-xgkon,
hbkid TYPE skb1-hbkid,
hktid TYPE skb1-hktid,
END OF ty_data,
BEGIN OF zstab,
field TYPE char10,
END OF zstab.
DATA:
lt_excel TYPE TABLE OF ty_excel,
ls_excel TYPE ty_excel,
lt_data TYPE TABLE OF ty_data,
ls_data TYPE ty_data,
stab TYPE TABLE OF zstab,
itab TYPE TABLE OF alsmex_tabline WITH HEADER LINE.
DATA:
ob_container TYPE REF TO cl_gui_custom_container,
ob_grid TYPE REF TO cl_gui_alv_grid,
lt_fieldcat TYPE lvc_t_fcat,
ls_fieldcat LIKE LINE OF lt_fieldcat,
is_lyout TYPE lvc_s_layo,
lt_message TYPE TABLE OF bdcmsgcoll,
ls_message LIKE LINE OF lt_message,
ld_mode TYPE c VALUE 'N'.
DATA:
zz_pid TYPE char80.
DATA: bdcdata LIKE bdcdata OCCURS 0 WITH HEADER LINE.
* messages of call transaction
DATA: messtab LIKE bdcmsgcoll OCCURS 0 WITH HEADER LINE.
* error session opened (' ' or 'X')
DATA: e_group_opened.
* message texts
TABLES: t100.
"Selection Screen
SELECTION-SCREEN BEGIN OF SCREEN 101 AS SUBSCREEN.
PARAMETERS:
* p_bukrs TYPE bukrs OBLIGATORY,
filename TYPE localfile MEMORY ID zfile,
p_line TYPE i DEFAULT 3,
p_total TYPE i.
SELECTION-SCREEN END OF SCREEN 101 .
AT SELECTION-SCREEN ON VALUE-REQUEST FOR filename.
* MESSAGE 'Tes' TYPE 'I' DISPLAY LIKE 'S'.
CALL FUNCTION 'KD_GET_FILENAME_ON_F4'
EXPORTING
static = 'X'
mask = '*.xls'
CHANGING
file_name = filename.
AT SELECTION-SCREEN OUTPUT.
GET PARAMETER ID 'ZFILE' FIELD zz_pid.
LOOP AT SCREEN.
IF lt_data IS NOT INITIAL AND
( screen-name CS 'P_LINE' OR screen-name CS 'P_BUKRS' OR screen-name CS 'FILENAME').
screen-input = 0.
ELSE.
screen-input = 1.
ENDIF.
IF screen-name CS 'P_TOTAL'.
screen-input = 0.
ENDIF.
MODIFY SCREEN.
ENDLOOP.
START-OF-SELECTION.
CALL SCREEN 100.
*&---------------------------------------------------------------------*
*& Module STATUS_0100 OUTPUT
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
MODULE status_0100 OUTPUT.
REFRESH stab.
IF lt_data IS INITIAL.
APPEND 'POST' TO stab.
APPEND 'CLRD' TO stab.
ELSE.
APPEND 'READ' TO stab.
ENDIF.
SET PF-STATUS 'PF100' EXCLUDING stab.
SET TITLEBAR 'TL100' WITH 'Upload G/L Account Master'.
PERFORM initial_screen.
ENDMODULE.
*&---------------------------------------------------------------------*
*& Module USER_COMMAND_0100 INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE user_command_0100 INPUT.
CASE sy-ucomm.
WHEN 'BACK' OR 'EXIT' OR 'CNCL'.
LEAVE PROGRAM.
WHEN 'READ'.
CLEAR p_total.
PERFORM read_excel USING filename '1' p_line '70' '65536'.
DESCRIBE TABLE lt_data LINES p_total.
WHEN 'CLRD'.
REFRESH : lt_data, lt_excel.
WHEN 'POST'.
PERFORM create_gl.
ENDCASE.
ENDMODULE.
FORM initial_screen.
IF ob_container IS INITIAL.
CREATE OBJECT ob_container
EXPORTING
container_name = 'CONTAINER'.
CREATE OBJECT ob_grid
EXPORTING
i_parent = ob_container.
ENDIF.
PERFORM set_fieldcat.
PERFORM set_lyout.
PERFORM alv_displ_out.
CALL METHOD ob_grid->refresh_table_display.
ENDFORM.
FORM set_fieldcat.
REFRESH lt_fieldcat.
PERFORM :
append_fieldcat USING 'ICONS' 'Status' 'CHAR' '' '' '5' '' 'X' 'LT_DATA' '1',
append_fieldcat USING 'SNOTE' 'Message' 'CHAR' '' '' '40' '' 'X' 'LT_DATA' '1'.
CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'
EXPORTING
i_structure_name = 'YSFC001'
CHANGING
ct_fieldcat = lt_fieldcat.
ENDFORM.
FORM append_fieldcat USING p_fname p_fdesc p_dtype p_qfield p_cfield p_olen p_sum p_key p_tabname p_act.
DATA irows TYPE i.
CLEAR irows.
DESCRIBE TABLE lt_fieldcat LINES irows.
irows = irows + 1.
CLEAR ls_fieldcat.
IF p_fname = 'ICONS'.
ls_fieldcat-icon = 'X'.
ls_fieldcat-just = 'C'.
ENDIF.
ls_fieldcat-col_pos = irows.
ls_fieldcat-key = p_key.
ls_fieldcat-fieldname = p_fname.
ls_fieldcat-scrtext_l = p_fdesc.
ls_fieldcat-scrtext_m = p_fdesc.
ls_fieldcat-scrtext_s = p_fdesc.
ls_fieldcat-datatype = p_dtype.
ls_fieldcat-qfieldname = p_qfield.
ls_fieldcat-cfieldname = p_cfield.
ls_fieldcat-outputlen = p_olen.
ls_fieldcat-do_sum = p_sum.
ls_fieldcat-tabname = p_tabname.
APPEND ls_fieldcat TO lt_fieldcat.
ENDFORM.
FORM set_lyout .
CLEAR is_lyout.
is_lyout-zebra = 'X'.
is_lyout-cwidth_opt = 'X'.
is_lyout-box_fname = 'ZBOX'.
* is_lyout-no_rowins = 'X'.
is_lyout-stylefname = 'CSTYL'.
is_lyout-info_fname = 'CLINE'.
is_lyout-ctab_fname = 'CCELL'.
ENDFORM.
FORM alv_displ_out.
CALL METHOD ob_grid->set_table_for_first_display
EXPORTING
* is_variant = is_varnt "DISVARIANT
i_save = 'A' "CHAR1 - X:Global - U:User - A:All - Space:No
i_default = 'X' "CHAR1 - X:Allowed - Space:not
is_layout = is_lyout "LVC_S_LAYO
* is_print = is_print "LVC_S_PRNT
* it_toolbar_excluding = it_excld "UI_FUNCTIONS
CHANGING
it_outtab = lt_data
it_fieldcatalog = lt_fieldcat "LVC_T_FCAT
* it_sort = it_sort "LVC_T_SORT
EXCEPTIONS
invalid_parameter_combination = 1
program_error = 2
too_many_lines = 3
OTHERS = 4.
ENDFORM.
FORM read_excel USING p_file p_bcol p_brow p_ecol p_erow.
* CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE'
CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE'
EXPORTING
filename = p_file
i_begin_col = p_bcol
i_begin_row = p_brow
i_end_col = p_ecol
i_end_row = p_erow
TABLES
intern = itab[]
EXCEPTIONS
inconsistent_parameters = 1
upload_ole = 2
OTHERS = 3.
DATA lv_index TYPE i.
FIELD-SYMBOLS <fs>.
LOOP AT itab.
MOVE itab-col TO lv_index.
ASSIGN COMPONENT lv_index OF STRUCTURE ls_excel TO <fs>.
MOVE itab-value TO <fs>.
AT END OF row.
CLEAR ls_data.
* ls_data-icons = '@08@'.
MOVE-CORRESPONDING ls_excel TO ls_data.
SELECT SINGLE saknr FROM skb1
INTO @DATA(ls_check)
WHERE saknr = @ls_data-saknr AND bukrs = @ls_data-bukrs.
IF ls_check IS NOT INITIAL.
ls_data-icons = '@0A@'.
ls_data-snote = |G/L Account { ls_data-saknr } already exists in company code { ls_data-bukrs }|.
ELSE.
ls_data-icons = '@08@'.
ENDIF.
CLEAR ls_check.
APPEND ls_data TO lt_data.
CLEAR ls_excel.
ENDAT.
ENDLOOP.
ENDFORM.
FORM create_gl.
CLEAR ls_data.
LOOP AT lt_data INTO ls_data WHERE icons = '@08@'.
REFRESH bdcdata[].
PERFORM bdc_dynpro USING 'SAPLGL_ACCOUNT_MASTER_MAINTAIN' '2001'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=ACC_CRE'.
PERFORM bdc_field USING 'BDC_CURSOR'
'GLACCOUNT_SCREEN_KEY-SAKNR'.
PERFORM bdc_field USING 'GLACCOUNT_SCREEN_KEY-SAKNR'
ls_data-saknr.
PERFORM bdc_field USING 'GLACCOUNT_SCREEN_KEY-BUKRS'
ls_data-bukrs.
PERFORM bdc_dynpro USING 'SAPLGL_ACCOUNT_MASTER_MAINTAIN' '2001'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=GLACC_TYPE'.
PERFORM bdc_field USING 'BDC_CURSOR'
'GLACCOUNT_SCREEN_COA-GLACCOUNT_TYPE'.
PERFORM bdc_field USING 'GLACCOUNT_SCREEN_COA-GLACCOUNT_TYPE'
ls_data-glacc_type.
PERFORM bdc_dynpro USING 'SAPLGL_ACCOUNT_MASTER_MAINTAIN' '2001'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=2102_GROUP'.
PERFORM bdc_field USING 'BDC_CURSOR'
'GLACCOUNT_SCREEN_COA-KTOKS'.
PERFORM bdc_field USING 'GLACCOUNT_SCREEN_COA-GLACCOUNT_TYPE'
ls_data-glacc_type.
PERFORM bdc_field USING 'GLACCOUNT_SCREEN_COA-KTOKS'
ls_data-ktoks.
PERFORM bdc_dynpro USING 'SAPLGL_ACCOUNT_MASTER_MAINTAIN' '2001'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=ENTER'.
PERFORM bdc_field USING 'GLACCOUNT_SCREEN_COA-GLACCOUNT_TYPE'
ls_data-glacc_type.
PERFORM bdc_field USING 'GLACCOUNT_SCREEN_COA-KTOKS'
ls_data-ktoks.
PERFORM bdc_field USING 'BDC_CURSOR'
'GLACCOUNT_SCREEN_COA-TXT50_ML'.
PERFORM bdc_field USING 'GLACCOUNT_SCREEN_COA-TXT20_ML'
ls_data-txt20.
PERFORM bdc_field USING 'GLACCOUNT_SCREEN_COA-TXT50_ML'
ls_data-txt50.
PERFORM bdc_dynpro USING 'SAPLGL_ACCOUNT_MASTER_MAINTAIN' '2001'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=TAB02'.
PERFORM bdc_field USING 'BDC_CURSOR'
'GLACCOUNT_SCREEN_COA-GLACCOUNT_TYPE'.
PERFORM bdc_field USING 'GLACCOUNT_SCREEN_COA-GLACCOUNT_TYPE'
ls_data-glacc_type.
PERFORM bdc_field USING 'GLACCOUNT_SCREEN_COA-KTOKS'
ls_data-ktoks.
PERFORM bdc_field USING 'GLACCOUNT_SCREEN_COA-TXT20_ML'
ls_data-txt20.
PERFORM bdc_field USING 'GLACCOUNT_SCREEN_COA-TXT50_ML'
ls_data-txt50.
PERFORM bdc_dynpro USING 'SAPLGL_ACCOUNT_MASTER_MAINTAIN' '2001'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=TAB03'.
PERFORM bdc_field USING 'BDC_CURSOR'
'GLACCOUNT_SCREEN_CCODE-MITKZ'.
PERFORM bdc_field USING 'GLACCOUNT_SCREEN_CCODE-WAERS'
ls_data-waers.
PERFORM bdc_field USING 'GLACCOUNT_SCREEN_CCODE-ZUAWA'
'001'.
PERFORM bdc_dynpro USING 'SAPLGL_ACCOUNT_MASTER_MAINTAIN' '2001'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=ENTER'.
PERFORM bdc_field USING 'GLACCOUNT_SCREEN_CCODE-FSTAG'
ls_data-fstag.
PERFORM bdc_field USING 'GLACCOUNT_SCREEN_CCODE-XGKON'
ls_data-xgkon.
PERFORM bdc_field USING 'BDC_CURSOR'
'GLACCOUNT_SCREEN_CCODE-ZINRT'.
PERFORM bdc_field USING 'GLACCOUNT_SCREEN_CCODE-ZINRT'
''.
PERFORM bdc_dynpro USING 'SAPLGL_ACCOUNT_MASTER_MAINTAIN' '2001'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=TAB04'.
PERFORM bdc_field USING 'BDC_CURSOR'
'GLACCOUNT_SCREEN_CCODE-FSTAG'.
PERFORM bdc_field USING 'GLACCOUNT_SCREEN_CCODE-FSTAG'
ls_data-fstag.
PERFORM bdc_field USING 'GLACCOUNT_SCREEN_CCODE-XGKON'
ls_data-xgkon.
PERFORM bdc_dynpro USING 'SAPLGL_ACCOUNT_MASTER_MAINTAIN' '2001'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=TAB05'.
PERFORM bdc_field USING 'BDC_CURSOR'
'GLACCOUNT_SCREEN_COA-LANGU_KW(01)'.
PERFORM bdc_dynpro USING 'SAPLGL_ACCOUNT_MASTER_MAINTAIN' '2001'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=TAB06'.
PERFORM bdc_field USING 'BDC_CURSOR'
'GLACCOUNT_SCREEN_KEY-SAKNR'.
PERFORM bdc_dynpro USING 'SAPLGL_ACCOUNT_MASTER_MAINTAIN' '2001'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=SAVE'.
PERFORM bdc_field USING 'BDC_CURSOR'
'EENO_DYNP-ZEILE(01)'.
PERFORM bdc_dynpro USING 'SAPLGL_ACCOUNT_MASTER_MAINTAIN' '2001'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=BACK'.
PERFORM bdc_field USING 'BDC_CURSOR'
'GLACCOUNT_SCREEN_KEY-SAKNR'.
PERFORM bdc_field USING 'GLACCOUNT_SCREEN_KEY-SAKNR'
ls_data-saknr.
PERFORM bdc_field USING 'GLACCOUNT_SCREEN_KEY-BUKRS'
ls_data-bukrs.
REFRESH lt_message.
CALL TRANSACTION 'FS00' USING bdcdata[]
MODE ld_mode
UPDATE 'S'
MESSAGES INTO lt_message.
READ TABLE lt_message ASSIGNING FIELD-SYMBOL(<fs_mssg>)
WITH KEY msgtyp = 'E'.
IF sy-subrc = 0.
ls_data-snote = |{ <fs_mssg>-msgv1 } { <fs_mssg>-msgv2 } { <fs_mssg>-msgv3 } { <fs_mssg>-msgv4 }|.
ls_data-icons = '@F1@'.
ELSE.
ls_data-snote = |G/L Account { ls_data-saknr } Created!|.
ls_data-icons = '@5Y@'.
ENDIF.
MODIFY lt_Data FROM ls_data
TRANSPORTING icons snote
WHERE bukrs = ls_data-bukrs AND saknr = ls_data-saknr.
CLEAR ls_data.
ENDLOOP.
ENDFORM.
FORM bdc_dynpro USING program dynpro.
CLEAR bdcdata.
bdcdata-program = program.
bdcdata-dynpro = dynpro.
bdcdata-dynbegin = 'X'.
APPEND bdcdata.
ENDFORM.
*----------------------------------------------------------------------*
* Insert field *
*----------------------------------------------------------------------*
FORM bdc_field USING fnam fval.
CLEAR bdcdata.
bdcdata-fnam = fnam.
bdcdata-fval = fval.
APPEND bdcdata.
ENDFORM.
Wednesday, 25 September 2024
SAP ABAP - PDF Viewer From Application Server Directory
AL11
REPORT ysap_pdf_viewer.
DATA : lt_data TYPE TABLE OF x255.
DATA : wa_line TYPE x255.
DATA: lo_docking_container TYPE REF TO cl_gui_docking_container.
DATA: lo_html TYPE REF TO cl_gui_html_viewer.
DATA: lv_url TYPE char255.
DATA: ok_code(20).
DATA filename TYPE string.
PARAMETERS fname TYPE localfile.
** Selection screen value request
AT SELECTION-SCREEN ON VALUE-REQUEST FOR fname.
CALL FUNCTION 'KD_GET_FILENAME_ON_F4'
EXPORTING
static = 'X'
CHANGING
file_name = fname.
IF sy-subrc <> 0.
* Implement suitable error handling here
ENDIF.
START-OF-SELECTION.
filename = '/usr/sap/attachment/'. "AL11 Directory
filename = |{ filename }{ fname }|.
* Read PDF File
PERFORM read_file.
* Display to screen
PERFORM display_pdf.
*&---------------------------------------------------------------------*
*& Form read_file
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM read_file.
fname = filename.
OPEN DATASET fname FOR INPUT IN BINARY MODE.
IF sy-subrc = 0.
DO.
READ DATASET fname INTO wa_line.
IF sy-subrc = 0.
APPEND wa_line TO lt_data.
ELSE.
APPEND wa_line TO lt_data.
EXIT.
ENDIF.
ENDDO.
ENDIF.
ENDFORM. "read_file
*&---------------------------------------------------------------------*
*& Form display_pdf
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM display_pdf.
IF NOT lt_data IS INITIAL.
CALL SCREEN 100.
ELSE.
WRITE :/ 'No data to display'.
ENDIF.
ENDFORM. "display_pdf
*&---------------------------------------------------------------------*
*& Module STATUS_0100 OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE status_0100 OUTPUT.
SET PF-STATUS 'MAIN'.
CLEAR ok_code.
IF NOT ( lo_docking_container IS INITIAL ).
CALL METHOD lo_docking_container->free
EXCEPTIONS
cntl_error = 1
cntl_system_error = 2
OTHERS = 3.
ENDIF.
IF NOT ( lo_html IS INITIAL ).
CALL METHOD lo_html->free
EXCEPTIONS
cntl_error = 1
cntl_system_error = 2
OTHERS = 3.
ENDIF.
CREATE OBJECT lo_docking_container
EXPORTING
repid = sy-repid
dynnr = sy-dynnr
extension = 5000.
CREATE OBJECT lo_html
EXPORTING
parent = lo_docking_container.
*
* Load the HTML
lo_html->load_data(
EXPORTING
type = 'application'
subtype = 'pdf'
IMPORTING
assigned_url = lv_url
CHANGING
data_table = lt_data
EXCEPTIONS
dp_invalid_parameter = 1
dp_error_general = 2
cntl_error = 3
OTHERS = 4 ).
* Show it
lo_html->show_url( url = lv_url in_place = 'X' ).
ENDMODULE. " STATUS_0100 OUTPUT
*&---------------------------------------------------------------------*
*& Module USER_COMMAND_0100 INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE user_command_0100 INPUT.
CASE sy-ucomm.
WHEN 'BACK' OR 'EXIT' OR 'CANC'.
IF NOT ( lo_docking_container IS INITIAL ).
CALL METHOD lo_docking_container->free
EXCEPTIONS
cntl_error = 1
cntl_system_error = 2
OTHERS = 3.
ENDIF.
IF NOT ( lo_html IS INITIAL ).
CALL METHOD lo_html->free
EXCEPTIONS
cntl_error = 1
cntl_system_error = 2
OTHERS = 3.
ENDIF.
leave TO SCREEN 0.
ENDCASE.
ENDMODULE. " USER_COMMAND_0100 INPUT
DATA : lt_data TYPE TABLE OF x255.
DATA : wa_line TYPE x255.
DATA: lo_docking_container TYPE REF TO cl_gui_docking_container.
DATA: lo_html TYPE REF TO cl_gui_html_viewer.
DATA: lv_url TYPE char255.
DATA: ok_code(20).
DATA filename TYPE string.
PARAMETERS fname TYPE localfile.
** Selection screen value request
AT SELECTION-SCREEN ON VALUE-REQUEST FOR fname.
CALL FUNCTION 'KD_GET_FILENAME_ON_F4'
EXPORTING
static = 'X'
CHANGING
file_name = fname.
IF sy-subrc <> 0.
* Implement suitable error handling here
ENDIF.
START-OF-SELECTION.
filename = '/usr/sap/attachment/'. "AL11 Directory
filename = |{ filename }{ fname }|.
* Read PDF File
PERFORM read_file.
* Display to screen
PERFORM display_pdf.
*&---------------------------------------------------------------------*
*& Form read_file
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM read_file.
fname = filename.
OPEN DATASET fname FOR INPUT IN BINARY MODE.
IF sy-subrc = 0.
DO.
READ DATASET fname INTO wa_line.
IF sy-subrc = 0.
APPEND wa_line TO lt_data.
ELSE.
APPEND wa_line TO lt_data.
EXIT.
ENDIF.
ENDDO.
ENDIF.
ENDFORM. "read_file
*&---------------------------------------------------------------------*
*& Form display_pdf
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM display_pdf.
IF NOT lt_data IS INITIAL.
CALL SCREEN 100.
ELSE.
WRITE :/ 'No data to display'.
ENDIF.
ENDFORM. "display_pdf
*&---------------------------------------------------------------------*
*& Module STATUS_0100 OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE status_0100 OUTPUT.
SET PF-STATUS 'MAIN'.
CLEAR ok_code.
IF NOT ( lo_docking_container IS INITIAL ).
CALL METHOD lo_docking_container->free
EXCEPTIONS
cntl_error = 1
cntl_system_error = 2
OTHERS = 3.
ENDIF.
IF NOT ( lo_html IS INITIAL ).
CALL METHOD lo_html->free
EXCEPTIONS
cntl_error = 1
cntl_system_error = 2
OTHERS = 3.
ENDIF.
CREATE OBJECT lo_docking_container
EXPORTING
repid = sy-repid
dynnr = sy-dynnr
extension = 5000.
CREATE OBJECT lo_html
EXPORTING
parent = lo_docking_container.
*
* Load the HTML
lo_html->load_data(
EXPORTING
type = 'application'
subtype = 'pdf'
IMPORTING
assigned_url = lv_url
CHANGING
data_table = lt_data
EXCEPTIONS
dp_invalid_parameter = 1
dp_error_general = 2
cntl_error = 3
OTHERS = 4 ).
* Show it
lo_html->show_url( url = lv_url in_place = 'X' ).
ENDMODULE. " STATUS_0100 OUTPUT
*&---------------------------------------------------------------------*
*& Module USER_COMMAND_0100 INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE user_command_0100 INPUT.
CASE sy-ucomm.
WHEN 'BACK' OR 'EXIT' OR 'CANC'.
IF NOT ( lo_docking_container IS INITIAL ).
CALL METHOD lo_docking_container->free
EXCEPTIONS
cntl_error = 1
cntl_system_error = 2
OTHERS = 3.
ENDIF.
IF NOT ( lo_html IS INITIAL ).
CALL METHOD lo_html->free
EXCEPTIONS
cntl_error = 1
cntl_system_error = 2
OTHERS = 3.
ENDIF.
leave TO SCREEN 0.
ENDCASE.
ENDMODULE. " USER_COMMAND_0100 INPUT
Monday, 23 September 2024
SAP ABAP - Upload File to OneDrive Folder
REPORT yupload_file.
** Data Declarations
DATA: gv_filename TYPE string,
lt_data_tab TYPE TABLE OF x255,
lv_bin_size TYPE i,
lv_file TYPE string,
e_filenamefull TYPE string,
e_filename TYPE string,
e_extension TYPE string.
DATA:
lv_e_pathname TYPE rstxtlg, "
lv_i_filepath TYPE rsfilenm, "
lv_e_filename TYPE rsawbnobjnm. "
** Parameters
PARAMETERS : gv_name TYPE localfile.
** Selection screen value request
AT SELECTION-SCREEN ON VALUE-REQUEST FOR gv_name.
CALL FUNCTION 'KD_GET_FILENAME_ON_F4'
EXPORTING
static = 'X'
CHANGING
file_name = gv_name.
IF sy-subrc <> 0.
* Implement suitable error handling here
ENDIF.
START-OF-SELECTION.
PERFORM upload_attachment.
FORM upload_attachment.
CLEAR : lv_i_filepath.
gv_filename = gv_name.
lv_i_filepath = gv_name.
** upload the file data from desktop/localfile
CALL FUNCTION 'GUI_UPLOAD'
EXPORTING
filename = gv_filename
filetype = 'BIN'
IMPORTING
filelength = lv_bin_size
TABLES
data_tab = lt_data_tab.
CALL FUNCTION 'RSDS_SPLIT_PATH_TO_FILENAME' "split file path in file name and path
EXPORTING
i_filepath = lv_i_filepath
IMPORTING
e_pathname = lv_e_pathname
e_filename = lv_e_filename
. " RSDS_SPLIT_PATH_TO_FILENAME
CLEAR lv_file.
DATA(dstpatch) = 'XX:OneDrivePath\'.
lv_file = |{ dstpatch }{ lv_e_filename }|.
CALL FUNCTION 'GUI_DOWNLOAD'
EXPORTING
filename = lv_file
filetype = 'BIN'
TABLES
data_tab = lt_data_tab
EXCEPTIONS
file_write_error = 1
no_batch = 2
gui_refuse_filetransfer = 3
invalid_type = 4
no_authority = 5
unknown_error = 6
header_not_allowed = 7
separator_not_allowed = 8
filesize_not_allowed = 9
header_too_long = 10
dp_error_create = 11
dp_error_send = 12
dp_error_write = 13
unknown_dp_error = 14
access_denied = 15
dp_out_of_memory = 16
disk_full = 17
dp_timeout = 18
file_not_found = 19
dataprovider_exception = 20
control_flush_error = 21
OTHERS = 22.
IF sy-subrc <> 0.
* Implement suitable error handling here
ENDIF.
IF sy-subrc = 0.
WRITE: / 'Successfully uploaded to One Drive'.
ENDIF.
ENDFORM.
** Data Declarations
DATA: gv_filename TYPE string,
lt_data_tab TYPE TABLE OF x255,
lv_bin_size TYPE i,
lv_file TYPE string,
e_filenamefull TYPE string,
e_filename TYPE string,
e_extension TYPE string.
DATA:
lv_e_pathname TYPE rstxtlg, "
lv_i_filepath TYPE rsfilenm, "
lv_e_filename TYPE rsawbnobjnm. "
** Parameters
PARAMETERS : gv_name TYPE localfile.
** Selection screen value request
AT SELECTION-SCREEN ON VALUE-REQUEST FOR gv_name.
CALL FUNCTION 'KD_GET_FILENAME_ON_F4'
EXPORTING
static = 'X'
CHANGING
file_name = gv_name.
IF sy-subrc <> 0.
* Implement suitable error handling here
ENDIF.
START-OF-SELECTION.
PERFORM upload_attachment.
FORM upload_attachment.
CLEAR : lv_i_filepath.
gv_filename = gv_name.
lv_i_filepath = gv_name.
** upload the file data from desktop/localfile
CALL FUNCTION 'GUI_UPLOAD'
EXPORTING
filename = gv_filename
filetype = 'BIN'
IMPORTING
filelength = lv_bin_size
TABLES
data_tab = lt_data_tab.
CALL FUNCTION 'RSDS_SPLIT_PATH_TO_FILENAME' "split file path in file name and path
EXPORTING
i_filepath = lv_i_filepath
IMPORTING
e_pathname = lv_e_pathname
e_filename = lv_e_filename
. " RSDS_SPLIT_PATH_TO_FILENAME
CLEAR lv_file.
DATA(dstpatch) = 'XX:OneDrivePath\'.
lv_file = |{ dstpatch }{ lv_e_filename }|.
CALL FUNCTION 'GUI_DOWNLOAD'
EXPORTING
filename = lv_file
filetype = 'BIN'
TABLES
data_tab = lt_data_tab
EXCEPTIONS
file_write_error = 1
no_batch = 2
gui_refuse_filetransfer = 3
invalid_type = 4
no_authority = 5
unknown_error = 6
header_not_allowed = 7
separator_not_allowed = 8
filesize_not_allowed = 9
header_too_long = 10
dp_error_create = 11
dp_error_send = 12
dp_error_write = 13
unknown_dp_error = 14
access_denied = 15
dp_out_of_memory = 16
disk_full = 17
dp_timeout = 18
file_not_found = 19
dataprovider_exception = 20
control_flush_error = 21
OTHERS = 22.
IF sy-subrc <> 0.
* Implement suitable error handling here
ENDIF.
IF sy-subrc = 0.
WRITE: / 'Successfully uploaded to One Drive'.
ENDIF.
ENDFORM.
Thursday, 5 September 2024
SAP ABAP - Multiple Header ALV List
REPORT ZALV_LIST_MULTIHEADER NO STANDARD PAGE HEADING.
TYPE-POOLS: slis.
DATA :t_fieldcat TYPE slis_t_fieldcat_alv,
w_fieldcat TYPE slis_fieldcat_alv,
layout TYPE slis_layout_alv,
t_sort TYPE slis_t_sortinfo_alv,
t_event TYPE slis_t_event WITH HEADER LINE,
d_repid LIKE sy-repid,
d_layout TYPE slis_layout_alv,
key TYPE slis_keyinfo_alv.
TYPES : BEGIN OF ty_data,
store(50),
price TYPE dmbtr,
quantity TYPE p,
total TYPE dmbtr, "(10) TYPE p DECIMALS 2,
price2 TYPE dmbtr,
quantity2 TYPE p,
total2 TYPE dmbtr, "(10) TYPE p DECIMALS 2,
curr TYPE waers,
END OF ty_data.
DATA : t_data TYPE ty_data OCCURS 0 WITH HEADER LINE.
START-OF-SELECTION.
PERFORM f_process_data.
PERFORM f_write_data.
*&---------------------------------------------------------------------*
*& Form F_PROCESS_DATA
*&---------------------------------------------------------------------*
FORM f_process_data .
*fill data t_data
t_data-store = 'Ayam Kampung'.
t_data-quantity = 30.
t_data-price = 50000.
t_data-total = t_data-quantity * t_data-price.
t_data-quantity2 = 525.
t_data-price2 = 55000.
t_data-total2 = t_data-quantity2 * t_data-price2.
t_data-curr = 'IDR'.
APPEND t_data.
t_data-store = 'Ayam Boiler'.
t_data-quantity = 10.
t_data-price = 50000.
t_data-total = t_data-quantity * t_data-price.
t_data-quantity2 = 55.
t_data-price2 = 55000.
t_data-total2 = t_data-quantity2 * t_data-price2.
t_data-curr = 'IDR'.
APPEND t_data.
ENDFORM. " F_PROCESS_DATA
*&---------------------------------------------------------------------*
*& Form F_WRITE_DATA
*&---------------------------------------------------------------------*
FORM f_write_data .
PERFORM field_catalog.
PERFORM build_layout.
PERFORM build_event.
d_repid = sy-repid.
CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
EXPORTING
i_callback_program = d_repid
is_layout = d_layout
i_bypassing_buffer = 'X'
it_fieldcat = t_fieldcat
i_default = 'X'
i_save = 'A'
it_events = t_event[]
it_sort = t_sort
TABLES
t_outtab = t_data[]
EXCEPTIONS
program_error = 1
OTHERS = 2.
ENDFORM. " F_WRITE_DATA
*&---------------------------------------------------------------------*
*& Form FIELD_CATALOG
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM field_catalog .
PERFORM f_fieldcats USING :
'STORE' 'STORE' '50' '' '' '' '' '',
'QUANTITY' 'QUANTITY' '15' '' '' '' '' '',
'PRICE' 'PRICE' '15' '' 'CURR' '' '' '',
'TOTAL' 'TOTAL' '20' '' 'CURR' '' '' '',
'QUANTITY2' 'QUANTITY2' '15' '' '' '' '' '',
'PRICE2' 'PRICE2' '15' '' 'CURR' '' '' '',
'TOTAL2' 'TOTAL2' '20' '' 'CURR' '' '' ''.
ENDFORM. " FIELD_CATALOG
*&---------------------------------------------------------------------*
*& Form F_FIELDCATS
*&---------------------------------------------------------------------*
FORM f_fieldcats USING fu_fname
fu_text
fu_len
fu_sum
fu_curr
fu_spot
fu_out
fu_sign.
DATA : lt_fieldcat TYPE slis_fieldcat_alv.
lt_fieldcat-fieldname = fu_fname. "field name
lt_fieldcat-seltext_l = lt_fieldcat-seltext_m = "text
lt_fieldcat-seltext_s = fu_text.
lt_fieldcat-reptext_ddic = fu_text.
lt_fieldcat-outputlen = fu_len. "text length
lt_fieldcat-do_sum = fu_sum. "summing
lt_fieldcat-cfieldname = fu_curr. "currency
lt_fieldcat-hotspot = fu_spot.
lt_fieldcat-no_out = fu_out.
lt_fieldcat-no_sign = fu_sign.
APPEND lt_fieldcat TO t_fieldcat.
CLEAR: lt_fieldcat.
ENDFORM. " F_FIELDCATS
*&---------------------------------------------------------------------*
*& Form BUILD_LAYOUT
*&---------------------------------------------------------------------*
FORM build_layout .
d_layout-colwidth_optimize = ''.
d_layout-zebra = 'X'.
d_layout-no_colhead = 'X'. "space.
ENDFORM. " BUILD_LAYOUT
*&---------------------------------------------------------------------*
*& Form BUILD_EVENT
*&---------------------------------------------------------------------*
FORM build_event .
t_event-form = 'TOP_PAGE'.
t_event-name = 'TOP_OF_PAGE'.
APPEND t_event.
ENDFORM. " BUILD_EVENT
*&---------------------------------------------------------------------*
*& Form top_of_page
*&---------------------------------------------------------------------*
FORM top_page.
ULINE (295) .
FORMAT COLOR 1 .
WRITE: / sy-vline, (48) '' CENTERED,
sy-vline, (50) 'Current Period' CENTERED,
sy-vline, (50) 'Ytd Period' CENTERED,
sy-vline.
* ULINE (295) .
WRITE: / sy-vline, (48) ' ' CENTERED,
sy-vline, (13) 'Quantity' CENTERED,
sy-vline, (13) 'per Unit' CENTERED,
sy-vline, (18) 'Total' CENTERED,
sy-vline, (13) 'Quantity' CENTERED,
sy-vline, (13) 'per Unit' CENTERED,
sy-vline, (18) 'Total' CENTERED,
sy-vline.
* ULINE (295) .
FORMAT COLOR OFF.
ENDFORM. "top_of_page
TYPE-POOLS: slis.
DATA :t_fieldcat TYPE slis_t_fieldcat_alv,
w_fieldcat TYPE slis_fieldcat_alv,
layout TYPE slis_layout_alv,
t_sort TYPE slis_t_sortinfo_alv,
t_event TYPE slis_t_event WITH HEADER LINE,
d_repid LIKE sy-repid,
d_layout TYPE slis_layout_alv,
key TYPE slis_keyinfo_alv.
TYPES : BEGIN OF ty_data,
store(50),
price TYPE dmbtr,
quantity TYPE p,
total TYPE dmbtr, "(10) TYPE p DECIMALS 2,
price2 TYPE dmbtr,
quantity2 TYPE p,
total2 TYPE dmbtr, "(10) TYPE p DECIMALS 2,
curr TYPE waers,
END OF ty_data.
DATA : t_data TYPE ty_data OCCURS 0 WITH HEADER LINE.
START-OF-SELECTION.
PERFORM f_process_data.
PERFORM f_write_data.
*&---------------------------------------------------------------------*
*& Form F_PROCESS_DATA
*&---------------------------------------------------------------------*
FORM f_process_data .
*fill data t_data
t_data-store = 'Ayam Kampung'.
t_data-quantity = 30.
t_data-price = 50000.
t_data-total = t_data-quantity * t_data-price.
t_data-quantity2 = 525.
t_data-price2 = 55000.
t_data-total2 = t_data-quantity2 * t_data-price2.
t_data-curr = 'IDR'.
APPEND t_data.
t_data-store = 'Ayam Boiler'.
t_data-quantity = 10.
t_data-price = 50000.
t_data-total = t_data-quantity * t_data-price.
t_data-quantity2 = 55.
t_data-price2 = 55000.
t_data-total2 = t_data-quantity2 * t_data-price2.
t_data-curr = 'IDR'.
APPEND t_data.
ENDFORM. " F_PROCESS_DATA
*&---------------------------------------------------------------------*
*& Form F_WRITE_DATA
*&---------------------------------------------------------------------*
FORM f_write_data .
PERFORM field_catalog.
PERFORM build_layout.
PERFORM build_event.
d_repid = sy-repid.
CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
EXPORTING
i_callback_program = d_repid
is_layout = d_layout
i_bypassing_buffer = 'X'
it_fieldcat = t_fieldcat
i_default = 'X'
i_save = 'A'
it_events = t_event[]
it_sort = t_sort
TABLES
t_outtab = t_data[]
EXCEPTIONS
program_error = 1
OTHERS = 2.
ENDFORM. " F_WRITE_DATA
*&---------------------------------------------------------------------*
*& Form FIELD_CATALOG
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM field_catalog .
PERFORM f_fieldcats USING :
'STORE' 'STORE' '50' '' '' '' '' '',
'QUANTITY' 'QUANTITY' '15' '' '' '' '' '',
'PRICE' 'PRICE' '15' '' 'CURR' '' '' '',
'TOTAL' 'TOTAL' '20' '' 'CURR' '' '' '',
'QUANTITY2' 'QUANTITY2' '15' '' '' '' '' '',
'PRICE2' 'PRICE2' '15' '' 'CURR' '' '' '',
'TOTAL2' 'TOTAL2' '20' '' 'CURR' '' '' ''.
ENDFORM. " FIELD_CATALOG
*&---------------------------------------------------------------------*
*& Form F_FIELDCATS
*&---------------------------------------------------------------------*
FORM f_fieldcats USING fu_fname
fu_text
fu_len
fu_sum
fu_curr
fu_spot
fu_out
fu_sign.
DATA : lt_fieldcat TYPE slis_fieldcat_alv.
lt_fieldcat-fieldname = fu_fname. "field name
lt_fieldcat-seltext_l = lt_fieldcat-seltext_m = "text
lt_fieldcat-seltext_s = fu_text.
lt_fieldcat-reptext_ddic = fu_text.
lt_fieldcat-outputlen = fu_len. "text length
lt_fieldcat-do_sum = fu_sum. "summing
lt_fieldcat-cfieldname = fu_curr. "currency
lt_fieldcat-hotspot = fu_spot.
lt_fieldcat-no_out = fu_out.
lt_fieldcat-no_sign = fu_sign.
APPEND lt_fieldcat TO t_fieldcat.
CLEAR: lt_fieldcat.
ENDFORM. " F_FIELDCATS
*&---------------------------------------------------------------------*
*& Form BUILD_LAYOUT
*&---------------------------------------------------------------------*
FORM build_layout .
d_layout-colwidth_optimize = ''.
d_layout-zebra = 'X'.
d_layout-no_colhead = 'X'. "space.
ENDFORM. " BUILD_LAYOUT
*&---------------------------------------------------------------------*
*& Form BUILD_EVENT
*&---------------------------------------------------------------------*
FORM build_event .
t_event-form = 'TOP_PAGE'.
t_event-name = 'TOP_OF_PAGE'.
APPEND t_event.
ENDFORM. " BUILD_EVENT
*&---------------------------------------------------------------------*
*& Form top_of_page
*&---------------------------------------------------------------------*
FORM top_page.
ULINE (295) .
FORMAT COLOR 1 .
WRITE: / sy-vline, (48) '' CENTERED,
sy-vline, (50) 'Current Period' CENTERED,
sy-vline, (50) 'Ytd Period' CENTERED,
sy-vline.
* ULINE (295) .
WRITE: / sy-vline, (48) ' ' CENTERED,
sy-vline, (13) 'Quantity' CENTERED,
sy-vline, (13) 'per Unit' CENTERED,
sy-vline, (18) 'Total' CENTERED,
sy-vline, (13) 'Quantity' CENTERED,
sy-vline, (13) 'per Unit' CENTERED,
sy-vline, (18) 'Total' CENTERED,
sy-vline.
* ULINE (295) .
FORMAT COLOR OFF.
ENDFORM. "top_of_page
Wednesday, 4 September 2024
SAP ABAP - Display Message in Popup Table
*&---------------------------------------------------------------------*
*& Report YBULK_MESSAGE
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT ybulk_message.
TYPES: BEGIN OF ty_message,
msgid LIKE sy-msgid,
msgty LIKE sy-msgty,
msgno LIKE sy-msgno,
msgv1 LIKE sy-msgv1,
msgv2 LIKE sy-msgv2,
msgv3 LIKE sy-msgv3,
msgv4 LIKE sy-msgv4,
lineno LIKE mesg-zeile,
END OF ty_message.
DATA:
lt_message TYPE TABLE OF ty_message.
START-OF-SELECTION.
PERFORM display_message.
FORM display_message.
REFRESH lt_message.
lt_message = VALUE #(
( msgid = 'FB'
msgty = 'E'
msgno = '000'
msgv1 = 'Material XXX01'
msgv2 = 'Not'
msgv3 = 'Found'
msgv4 = ''
lineno = '1'
) "Line 1
( msgid = 'FB'
msgty = 'E'
msgno = '000'
msgv1 = 'Plant L001'
msgv2 = 'Not'
msgv3 = 'Found'
msgv4 = ''
lineno = '2'
) "Line 2
).
CALL FUNCTION 'C14Z_MESSAGES_SHOW_AS_POPUP'
TABLES
i_message_tab = lt_message.
ENDFORM.
*& Report YBULK_MESSAGE
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT ybulk_message.
TYPES: BEGIN OF ty_message,
msgid LIKE sy-msgid,
msgty LIKE sy-msgty,
msgno LIKE sy-msgno,
msgv1 LIKE sy-msgv1,
msgv2 LIKE sy-msgv2,
msgv3 LIKE sy-msgv3,
msgv4 LIKE sy-msgv4,
lineno LIKE mesg-zeile,
END OF ty_message.
DATA:
lt_message TYPE TABLE OF ty_message.
START-OF-SELECTION.
PERFORM display_message.
FORM display_message.
REFRESH lt_message.
lt_message = VALUE #(
( msgid = 'FB'
msgty = 'E'
msgno = '000'
msgv1 = 'Material XXX01'
msgv2 = 'Not'
msgv3 = 'Found'
msgv4 = ''
lineno = '1'
) "Line 1
( msgid = 'FB'
msgty = 'E'
msgno = '000'
msgv1 = 'Plant L001'
msgv2 = 'Not'
msgv3 = 'Found'
msgv4 = ''
lineno = '2'
) "Line 2
).
CALL FUNCTION 'C14Z_MESSAGES_SHOW_AS_POPUP'
TABLES
i_message_tab = lt_message.
ENDFORM.
Subscribe to:
Posts (Atom)
ABAP CDS View Part 10 : Authorization & DCL untuk ABAP CDS
Authorization & DCL di ABAP CDS | Panduan Lengkap (PFCG, @AccessControl, DCL) Authorization & DCL untuk ABAP CDS — Pandua...
-
Pada postingan kali saya akan share sebuah aplikasi IT Asset management yang fungsinya untuk memonitoring semua Asset khusus IT, contohnya ...
-
How to Create a REST API in SAP ABAP — Step-by-step Guide Summary: This tutorial shows how to build a REST API in SAP ABAP by creating ...
-
CDS View dengan Join di SAP ABAP | Tutorial SAP S/4HANA CDS View dengan Join (Multi Table) Kalau di Episode 4 kita main di sing...