├── src ├── new │ ├── time-dependent-view.txt │ ├── create-uuid.abap │ ├── decode-uri.abap │ ├── OXT_MESSAGE_TO_POPUP.abap │ ├── enhance.txt │ ├── F4_FILENAME.abap │ ├── SDOK_MIMETYPE_GET.abap │ ├── TRINT_FILE_GET_EXTENSION.abap │ ├── VIEW_MAINTENANCE_CALL.abap │ ├── CL_DEMO_OUTPUT-segments.abap │ ├── date-time-add-seconds.abap │ ├── move_char_to_num.txt │ ├── user-list-by-auth-value.abap │ ├── TEXT_CONVERT_XLS_TO_SAP.abap │ ├── select-amdp-in-abap.abap │ ├── list-factory-days-between-dates.abap │ ├── ITS_GET_URL.abap │ ├── zip-text-content.abap │ ├── ZCL_HTTP │ │ ├── send-file-in-multipart-form.abap │ │ ├── ZCX_HTTP.abap │ │ ├── sample-proxy-form.abap │ │ ├── sample-basic-auth-json-payload.abap │ │ └── sample-proxy-token-form-1.abap │ ├── selection-screen-date-interval.abap │ ├── convert-guid-string-to-raw-uuid.abap │ ├── display-migo-document.abap │ ├── POPUP_TO_CONFIRM.abap │ ├── FI_F4_ZTERM.abap │ ├── rtts-get-structure-components.abap │ ├── search-help-result-to-internal-table.abap │ ├── CALCULATE_TAX_FROM_GROSSAMOUNT.abap │ ├── param-table.txt │ ├── alv-search-help │ │ ├── callback-report.abap │ │ ├── top.abap │ │ └── forms.abap │ ├── dynamic-where-clause.abap │ ├── ADDR_DIALOG.abap │ ├── list-structure-components-fill-extension.abap │ ├── ENQUEUE_READ.abap │ ├── DD_DOMVALUES_GET.abap │ ├── COMPLEX_SELECTIONS_DIALOG.abap │ ├── date-time-difference.abap │ ├── create-string-table.abap │ ├── sample-selection-screen.abap │ ├── MATERIAL_UNIT_CONVERSION.abap │ ├── iteration-expression.abap │ ├── FILE_OPEN_DIALOG.abap │ ├── amdp-case-insensitive-search │ │ ├── zcl_amdp.abap │ │ └── z_call_amdp.abap │ ├── get-table-columns-from-adbc-sqlserver.abap │ ├── fill-bapi-flag.abap │ ├── maintenance-view-event-01-before-save-validation.abap │ ├── write-base64-encoded-file-to-server.abap │ ├── abap2xlsx-reader-examples │ │ └── abap2xlsx-reader.abap │ ├── exclude-alv-toolbar-functions.abap │ ├── frequent.txt │ ├── salv-mini-template.abap │ ├── get-its-context-and-query-param.abap │ ├── extract-zipped-and-base64-encoded-file.abap │ ├── gateway-add-function-import-parameter.abap │ ├── get-MB52-data.abap │ ├── find-structures-having-certain-types-of-fields.abap │ ├── amdp-table-function.txt │ ├── display-image.abap │ ├── next-working-day-starting-next-monday.abap │ ├── update-idoc-status.abap │ ├── search-help-exit-sample.abap │ ├── build-rfc-structure.abap │ ├── abap2xlsx-mail.attachment.abap │ ├── add-property-to-gateway-entity.abap │ ├── maintenance-event-05-before-save.abap │ ├── RSAN_UT_FILTER_BUILD_SQL_WHERE.abap │ ├── find-range-structures.abap │ ├── gateway-response-header-message.abap │ ├── RFC_READ_TABLE.abap │ ├── read-textpool.abap │ ├── rest-api-call.abap │ ├── dynamically-update-data-from-excel-to-database-table.abap │ ├── ask-path-and-download-xlsx.abap │ ├── smartform-as-pdf-attachment.abap │ ├── SELECT_OPTIONS_RESTRICT.abap │ ├── BAPI_PO_CREATE1.abap │ ├── bsp-display-pdf.abap │ ├── add-fied-to-table.abap │ ├── zreq.txt │ ├── Z_RKD_WORD_WRAP.abap │ ├── ZCL_BDC │ │ └── usage.abap │ ├── ui2_cl_json.abap │ ├── gateway-download-smartform-as-pdf.txt │ └── create_job.abap ├── objects │ ├── structure.md │ ├── table-type.md │ ├── message.md │ └── data-element.md ├── snippets │ ├── message-display.abap │ ├── RH_GET_PLVAR.abap │ ├── SAPGUI_SET_FUNCTIONCODE.abap │ ├── get-domain-value-text.abap │ ├── CONVERT_BDCMSGCOLL_TO_BAPIRET2.abap │ ├── MONTH_NAMES_GET.abap │ ├── FI_TAX_GET_TAX_ACCOUNTS.abap │ ├── HR_F4_GET_SUBTYPE.abap │ ├── build-lvc-fieldcatalog.abap │ ├── RKD_WORD_WRAP.abap │ ├── REUSE_ALV_VARIANT_F4.abap │ ├── SAVE_TEXT.abap │ ├── HR_BANK_SEARCH.abap │ ├── SELECT_OPTIONS_RESTRICT.abap │ ├── parallel-cursor.abap │ ├── POPUP_GET_VALUES.abap │ ├── HR_F4HELP_IN_INTERVAL.abap │ ├── convert-text-to-utf8.abap │ ├── F4IF_INT_TABLE_VALUE_REQUEST.abap │ ├── tax-calculation.abap │ └── suppress-smartforms-dialog-and-download-pdf.abap └── lib-package │ ├── package.devc.xml │ ├── program │ ├── package.devc.xml │ └── ydtp_mass_download.prog.xml │ ├── template │ ├── package.devc.xml │ ├── yi_globalalv.prog.xml │ ├── yp_salv_mini.prog.xml │ ├── yp_alv_template.prog.xml │ ├── yp_salv_mini.prog.abap │ └── yp_alv_grid.prog.xml │ └── .abapgit.xml ├── LICENSE └── README.md /src/new/time-dependent-view.txt: -------------------------------------------------------------------------------- 1 | execute report RSVIEWTD -------------------------------------------------------------------------------- /src/new/create-uuid.abap: -------------------------------------------------------------------------------- 1 | DATA(lv_uuid) = cl_system_uuid=>create_uuid_c32_static( ). -------------------------------------------------------------------------------- /src/objects/structure.md: -------------------------------------------------------------------------------- 1 | |Name|Text| 2 | |---|---| 3 | |BAPIRET2|Return Parameter| -------------------------------------------------------------------------------- /src/new/decode-uri.abap: -------------------------------------------------------------------------------- 1 | i_aciklama = conv #( cl_http_utility=>unescape_url( conv string( ls_converted_keys-i_aciklama ) ) ). -------------------------------------------------------------------------------- /src/objects/table-type.md: -------------------------------------------------------------------------------- 1 | |Name|Text|Type| 2 | |---|---|---| 3 | |BAPIRETTAB|Table with BAPI Return Information|BAPIRET2| -------------------------------------------------------------------------------- /src/objects/message.md: -------------------------------------------------------------------------------- 1 | |Class|No|Text| 2 | |---|---|---| 3 | |00|055|Fill out all required entry fields| 4 | |SV|026|Select entries before performing the function| -------------------------------------------------------------------------------- /src/snippets/message-display.abap: -------------------------------------------------------------------------------- 1 | DATA t_return TYPE TABLE OF bapiret2. 2 | 3 | CALL FUNCTION 'FINB_BAPIRET2_DISPLAY' 4 | EXPORTING 5 | it_message = t_return. -------------------------------------------------------------------------------- /src/new/OXT_MESSAGE_TO_POPUP.abap: -------------------------------------------------------------------------------- 1 | CALL FUNCTION 'OXT_MESSAGE_TO_POPUP' 2 | EXPORTING 3 | it_message = gt_return_all 4 | EXCEPTIONS 5 | bal_error = 1 6 | OTHERS = 2. -------------------------------------------------------------------------------- /src/new/enhance.txt: -------------------------------------------------------------------------------- 1 | alv template 2 | -hide toolbar 3 | -exclude toolbar functions 4 | -CANC -> set screen 0 5 | -controller class 6 | -no data found 7 | -build_fcat -> ref_table/ref_field not populating -------------------------------------------------------------------------------- /src/new/F4_FILENAME.abap: -------------------------------------------------------------------------------- 1 | PARAMETERS: p_fname TYPE ibipparms-path OBLIGATORY. 2 | 3 | AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_fname. 4 | CALL FUNCTION 'F4_FILENAME' 5 | IMPORTING 6 | file_name = p_fname. -------------------------------------------------------------------------------- /src/new/SDOK_MIMETYPE_GET.abap: -------------------------------------------------------------------------------- 1 | DATA lv_mimetype TYPE mimetypes-type. 2 | CALL FUNCTION 'SDOK_MIMETYPE_GET' 3 | EXPORTING 4 | extension = ls_document_data-obj_type 5 | IMPORTING 6 | mimetype = lv_mimetype. -------------------------------------------------------------------------------- /src/new/TRINT_FILE_GET_EXTENSION.abap: -------------------------------------------------------------------------------- 1 | DATA lv_extension TYPE sood-file_ext. 2 | CALL FUNCTION 'TRINT_FILE_GET_EXTENSION' 3 | EXPORTING 4 | filename = iv_filename 5 | IMPORTING 6 | extension = lv_extension. -------------------------------------------------------------------------------- /src/new/VIEW_MAINTENANCE_CALL.abap: -------------------------------------------------------------------------------- 1 | CALL FUNCTION 'VIEW_MAINTENANCE_CALL' 2 | EXPORTING 3 | action = 'U' 4 | view_name = 'ZFUELTYPES' 5 | EXCEPTIONS 6 | OTHERS = 99. -------------------------------------------------------------------------------- /src/snippets/RH_GET_PLVAR.abap: -------------------------------------------------------------------------------- 1 | CALL FUNCTION 'RH_GET_PLVAR' 2 | EXPORTING 3 | no_message = abap_true 4 | IMPORTING 5 | plvar = lv_plvar 6 | EXCEPTIONS 7 | no_plvar = 1 8 | OTHERS = 2. -------------------------------------------------------------------------------- /src/snippets/SAPGUI_SET_FUNCTIONCODE.abap: -------------------------------------------------------------------------------- 1 | CALL FUNCTION 'SAPGUI_SET_FUNCTIONCODE' 2 | EXPORTING 3 | functioncode = '/00' "Enter 4 | EXCEPTIONS 5 | function_not_supported = 1 6 | OTHERS = 2. -------------------------------------------------------------------------------- /src/new/CL_DEMO_OUTPUT-segments.abap: -------------------------------------------------------------------------------- 1 | cl_demo_output=>new( 2 | )->begin_section( `RETURN` 3 | )->write_data( return 4 | )->next_section( `OBJEC` 5 | )->write_data( t_objec 6 | )->next_section( `STRUC` 7 | )->write_data( t_struc 8 | )->display( ). -------------------------------------------------------------------------------- /src/snippets/get-domain-value-text.abap: -------------------------------------------------------------------------------- 1 | SELECT ddtext FROM dd07t INTO @DATA(lv_ddtext) UP TO 1 ROWS 2 | WHERE domname = 'ZRT_D_PERIOD' 3 | AND ddlanguage = @sy-langu 4 | AND as4local = 'A' 5 | AND domvalue_l = @ip_period. 6 | ENDSELECT. -------------------------------------------------------------------------------- /src/new/date-time-add-seconds.abap: -------------------------------------------------------------------------------- 1 | cl_abap_tstmp=>td_add( 2 | EXPORTING 3 | date = sy-datum 4 | time = sy-uzeit 5 | secs = 82800 6 | IMPORTING 7 | res_date = ls_db-valid_until_date 8 | res_time = ls_db-valid_until_time ). -------------------------------------------------------------------------------- /src/snippets/CONVERT_BDCMSGCOLL_TO_BAPIRET2.abap: -------------------------------------------------------------------------------- 1 | DATA: t_bdcmsg TYPE TABLE OF bdcmsgcoll, 2 | t_return TYPE TABLE OF bapiret2. 3 | 4 | CALL FUNCTION 'CONVERT_BDCMSGCOLL_TO_BAPIRET2' 5 | TABLES 6 | imt_bdcmsgcoll = t_bdcmsg 7 | ext_return = t_return. -------------------------------------------------------------------------------- /src/objects/data-element.md: -------------------------------------------------------------------------------- 1 | |Name|Text|Domain| 2 | |---|---|---| 3 | |AEDAT|Date of Last Change|DATUM| 4 | |AEZET|Time last change was made|UZEIT| 5 | |DDSIGN|Type of SIGN component in row type of a Ranges type|DDSIGN| 6 | |DDOPTION|Type of OPTION component in row type of a Ranges type|DDOPTION| -------------------------------------------------------------------------------- /src/new/move_char_to_num.txt: -------------------------------------------------------------------------------- 1 | CALL FUNCTION 'MOVE_CHAR_TO_NUM' 2 | EXPORTING 3 | chr = -menge 4 | IMPORTING 5 | num = -menge 6 | EXCEPTIONS 7 | convt_no_number = 1 8 | convt_overflow = 2 9 | OTHERS = 3. -------------------------------------------------------------------------------- /src/new/user-list-by-auth-value.abap: -------------------------------------------------------------------------------- 1 | CALL FUNCTION 'SUSR_DDL_USERS_BY_AUTHVALUES' 2 | EXPORTING 3 | id_suso = 'ZMRM_WFSTR' 4 | id_fld1 = 'WERKS' 5 | id_val1 = CONV xuval( lv_werks ) 6 | IMPORTING 7 | et_users = lt_users. 8 | READ TABLE lt_users INTO ls_user INDEX 1. 9 | ls_badi_approver-businessuser = ls_user-bname. -------------------------------------------------------------------------------- /src/new/TEXT_CONVERT_XLS_TO_SAP.abap: -------------------------------------------------------------------------------- 1 | CALL FUNCTION 'TEXT_CONVERT_XLS_TO_SAP' 2 | EXPORTING 3 | i_line_header = abap_true 4 | i_tab_raw_data = lt_raw 5 | i_filename = lv_file 6 | TABLES 7 | i_tab_converted_data = it_excel2 8 | EXCEPTIONS 9 | conversion_failed = 1 10 | OTHERS = 2. -------------------------------------------------------------------------------- /src/new/select-amdp-in-abap.abap: -------------------------------------------------------------------------------- 1 | SELECT * FROM ztf_posaggattrib( p_store = @lv_retailstoreid, p_date = @lv_prevday ) 2 | INTO TABLE @DATA(lt_prevday) 3 | ##db_feature_mode[amdp_table_function]. 4 | 5 | SELECT * FROM ztf_posaggattrib( p_store = @lv_retailstoreid, p_date = @iv_date ) 6 | INTO TABLE @DATA(lt_today) 7 | ##db_feature_mode[amdp_table_function]. -------------------------------------------------------------------------------- /src/lib-package/package.devc.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | sap-lib 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /src/new/list-factory-days-between-dates.abap: -------------------------------------------------------------------------------- 1 | CALL FUNCTION 'RKE_SELECT_FACTDAYS_FOR_PERIOD' 2 | EXPORTING 3 | i_datab = -badat_pr 4 | i_datbi = -udate 5 | i_factid = 'TR' 6 | TABLES 7 | eth_dats = lt_days 8 | EXCEPTIONS 9 | date_conversion_error = 1 10 | OTHERS = 2. -------------------------------------------------------------------------------- /src/lib-package/program/package.devc.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | $LIB_PROGRAM 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /src/lib-package/template/package.devc.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | $LIB_TEMPLATE 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /src/snippets/MONTH_NAMES_GET.abap: -------------------------------------------------------------------------------- 1 | DATA: lt_t247 TYPE TABLE OF t247. 2 | 3 | CALL FUNCTION 'MONTH_NAMES_GET' 4 | TABLES 5 | month_names = lt_t247 6 | EXCEPTIONS 7 | month_names_not_found = 1 8 | OTHERS = 2. 9 | 10 | TRY. 11 | head-month_name = lt_t247[ mnr = head-monat ]-ltx. 12 | CATCH cx_root. 13 | ENDTRY. -------------------------------------------------------------------------------- /src/new/ITS_GET_URL.abap: -------------------------------------------------------------------------------- 1 | DATA: lv_url TYPE char1250. 2 | CALL FUNCTION 'ITS_GET_URL' 3 | IMPORTING 4 | url = lv_url 5 | EXCEPTIONS 6 | its_not_available = 1 7 | OTHERS = 2. 8 | IF sy-subrc <> 0. 9 | * Implement suitable error handling here 10 | ENDIF. 11 | IF lv_url IS INITIAL. 12 | gv_gui = 'X'. 13 | ELSE. 14 | gv_gui = space. 15 | ENDIF. 16 | -------------------------------------------------------------------------------- /src/new/zip-text-content.abap: -------------------------------------------------------------------------------- 1 | DATA: lv_binary_json TYPE xstring, 2 | lo_zip TYPE REF TO cl_abap_zip. 3 | CALL FUNCTION 'SCMS_STRING_TO_XSTRING' 4 | EXPORTING 5 | text = content 6 | IMPORTING 7 | buffer = lv_binary_json 8 | EXCEPTIONS 9 | failed = 1 10 | OTHERS = 2. 11 | CREATE OBJECT lo_zip. 12 | lo_zip->add( name = 'request.json' 13 | content = lv_binary_json ). 14 | zip = lo_zip->save( ). -------------------------------------------------------------------------------- /src/new/ZCL_HTTP/send-file-in-multipart-form.abap: -------------------------------------------------------------------------------- 1 | lv_response = zcl_http=>request( ip_host = host 2 | ip_endpoint = lv_endpoint 3 | ip_token = token 4 | ip_multipart = abap_true 5 | ip_file = lv_file 6 | ip_file_name = 'request.zip' ). -------------------------------------------------------------------------------- /src/new/selection-screen-date-interval.abap: -------------------------------------------------------------------------------- 1 | SELECTION-SCREEN BEGIN OF LINE. 2 | SELECTION-SCREEN COMMENT 1(10) TEXT-s01 FOR FIELD p_begda MODIF ID flt. 3 | SELECTION-SCREEN POSITION 33. 4 | PARAMETERS p_begda TYPE datum OBLIGATORY DEFAULT sy-datum MODIF ID flt. 5 | SELECTION-SCREEN COMMENT 52(5) TEXT-s02 FOR FIELD p_endda MODIF ID flt. 6 | PARAMETERS p_endda TYPE datum OBLIGATORY DEFAULT sy-datum MODIF ID flt. 7 | SELECTION-SCREEN END OF LINE. -------------------------------------------------------------------------------- /src/new/convert-guid-string-to-raw-uuid.abap: -------------------------------------------------------------------------------- 1 | DATA: lv_offset TYPE i, 2 | lv_guid TYPE c LENGTH 36, 3 | lv_sourceuuid TYPE SYSUUID_X. 4 | 5 | lv_guid = -value+lv_offset(36). 6 | cl_gdt_conversion=>guid_inbound( 7 | EXPORTING 8 | im_value = lv_guid 9 | IMPORTING 10 | ex_guid_x = lv_sourceuuid ). 11 | SELECT SINGLE @abap_true FROM /oaa/src_capa_w 12 | WHERE sourceuuid = @lv_sourceuuid 13 | INTO @DATA(lv_exists). -------------------------------------------------------------------------------- /src/new/display-migo-document.abap: -------------------------------------------------------------------------------- 1 | CALL FUNCTION 'MIGO_DIALOG' 2 | EXPORTING 3 | i_action = 'A04' 4 | i_refdoc = 'R02' 5 | i_notree = 'X' 6 | i_no_auth_check = ' ' 7 | i_deadend = 'X' 8 | i_skip_first_screen = 'X' 9 | i_okcode = 'OK_GO' 10 | i_mblnr = -mblnr 11 | i_mjahr = -mjahr. -------------------------------------------------------------------------------- /src/new/POPUP_TO_CONFIRM.abap: -------------------------------------------------------------------------------- 1 | CALL FUNCTION 'POPUP_TO_CONFIRM' 2 | EXPORTING 3 | text_question = 'Kaydetmek istiyor musunuz?'(t01) 4 | default_button = '2' 5 | display_cancel_button = abap_false 6 | IMPORTING 7 | answer = lv_answer 8 | EXCEPTIONS 9 | text_not_found = 1 10 | OTHERS = 2. 11 | IF lv_answer <> '1'. 12 | RETURN. 13 | ENDIF. -------------------------------------------------------------------------------- /src/snippets/FI_TAX_GET_TAX_ACCOUNTS.abap: -------------------------------------------------------------------------------- 1 | CALL FUNCTION 'FI_TAX_GET_TAX_ACCOUNTS' 2 | EXPORTING 3 | i_mwskz = ls_kdv-mwskz 4 | i_bukrs = p_bukrs 5 | i_ktosl = 'MWS' 6 | IMPORTING 7 | e_t030k = ls_t030k 8 | EXCEPTIONS 9 | bukrs_not_found = 1 10 | entry_not_found = 2 11 | parameter_error = 3 12 | OTHERS = 4. 13 | 14 | ls_actx-gl_account = ls_t030k-konts. 15 | ls_actx-acct_key = ls_t030k-ktosl. -------------------------------------------------------------------------------- /src/new/FI_F4_ZTERM.abap: -------------------------------------------------------------------------------- 1 | IF mode = display. 2 | lv_xshow = abap_true. 3 | ENDIF. 4 | CALL FUNCTION 'FI_F4_ZTERM' 5 | EXPORTING 6 | i_koart = 'K' 7 | * i_zterm = mepo1226-zterm 8 | i_xshow = lv_xshow 9 | IMPORTING 10 | e_zterm = -zterm 11 | EXCEPTIONS 12 | nothing_found = 01. -------------------------------------------------------------------------------- /src/new/rtts-get-structure-components.abap: -------------------------------------------------------------------------------- 1 | DATA: lo_type TYPE REF TO cl_abap_structdescr, 2 | lt_comp_head TYPE abap_component_tab, 3 | ls_comp like LINE OF lt_comp_head. 4 | 5 | lo_type ?= cl_abap_typedescr=>describe_by_data( ls_data ). 6 | lt_comp_head = lo_type->get_components( ). 7 | 8 | LOOP AT lt_comp_head INTO ls_comp. 9 | IF ls_comp-type IS INSTANCE OF CL_ABAP_ELEMDESCR. 10 | WRITE:/ ls_comp-name, '1'. 11 | ELSE. 12 | WRITE:/ ls_comp-name, '0'. 13 | ENDIF. 14 | ENDLOOP. -------------------------------------------------------------------------------- /src/new/search-help-result-to-internal-table.abap: -------------------------------------------------------------------------------- 1 | DATA lt_wwgna TYPE TABLE OF ddshretval. 2 | CALL FUNCTION 'F4IF_FIELD_VALUE_REQUEST' 3 | EXPORTING 4 | tabname = '' 5 | fieldname = '' 6 | searchhelp = 'ZRT_SH_WWGNA' 7 | suppress_recordlist = 'X' 8 | TABLES 9 | return_tab = lt_wwgna 10 | EXCEPTIONS 11 | field_not_found = 1 12 | no_help_for_field = 2 13 | inconsistent_help = 3 14 | no_values_found = 4 15 | OTHERS = 5. -------------------------------------------------------------------------------- /src/new/CALCULATE_TAX_FROM_GROSSAMOUNT.abap: -------------------------------------------------------------------------------- 1 | DATA: lt_mwdat TYPE STANDARD TABLE OF rtax1u15. 2 | 3 | CLEAR lt_mwdat. 4 | CALL FUNCTION 'CALCULATE_TAX_FROM_GROSSAMOUNT' 5 | EXPORTING 6 | i_bukrs = ls_poheader-comp_code 7 | i_mwskz = -tax_code 8 | i_waers = lv_waers 9 | i_wrbtr = CONV bseg-wrbtr( -brtwr ) 10 | TABLES 11 | t_mwdat = lt_mwdat 12 | EXCEPTIONS 13 | OTHERS = 19. 14 | IF lt_mwdat IS NOT INITIAL. 15 | -net_price = lt_mwdat[ 1 ]-kawrt. 16 | ENDIF. -------------------------------------------------------------------------------- /src/lib-package/.abapgit.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | T 6 | / 7 | PREFIX 8 | 9 | /.gitignore 10 | /LICENSE 11 | /README.md 12 | /package.json 13 | /.travis.yml 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /src/snippets/HR_F4_GET_SUBTYPE.abap: -------------------------------------------------------------------------------- 1 | PROCESS ON VALUE-REQUEST. 2 | FIELD zdfpa_t092-bnksa MODULE bnksa_values. 3 | 4 | MODULE bnksa_values INPUT. 5 | CALL FUNCTION 'HR_F4_GET_SUBTYPE' 6 | EXPORTING 7 | infty = '0009' 8 | IMPORTING 9 | subty = zdfpa_t092-bnksa 10 | EXCEPTIONS 11 | infty_not_found = 1 12 | no_entries_found = 2 13 | cancelled = 3 14 | infty_not_supported = 4 15 | infty_has_no_subties = 5 16 | OTHERS = 6. 17 | ENDMODULE. -------------------------------------------------------------------------------- /src/new/param-table.txt: -------------------------------------------------------------------------------- 1 | MANDT SYMANDT CLNT 3 0 0 Client ID 2 | NAME RVARI_VNAM CHAR 30 0 0 ABAP: Name of Variant Variable 3 | TYPE WLC_RSSCR_KIND CHAR 1 0 0 Load Control/Ext. Paral. Proc.: Selection Type 4 | NUMB TVARV_NUMB NUMC 4 0 0 ABAP: Current selection number 5 | SIGN DDSIGN CHAR 1 0 0 Type of SIGN component in row type of a Ranges type 6 | OPTI DDOPTION CHAR 2 0 0 Type of OPTION component in row type of a Ranges type 7 | LOW RVARI_VAL_255 CHAR 255 0 0 Selection Variants: Field Content (LOW/HIGH) 8 | HIGH RVARI_VAL_255 CHAR 255 0 0 Selection Variants: Field Content (LOW/HIGH) -------------------------------------------------------------------------------- /src/snippets/build-lvc-fieldcatalog.abap: -------------------------------------------------------------------------------- 1 | FORM build_fcat USING it_list TYPE ANY TABLE 2 | CHANGING ct_fcat TYPE lvc_t_fcat. 3 | cl_salv_table=>factory( 4 | IMPORTING 5 | r_salv_table = DATA(lo_salv) 6 | CHANGING 7 | t_table = it_list ). 8 | 9 | ct_fcat = cl_salv_controller_metadata=>get_lvc_fieldcatalog( 10 | r_columns = lo_salv->get_columns( ) 11 | r_aggregations = lo_salv->get_aggregations( ) ). 12 | 13 | LOOP AT ct_fcat ASSIGNING FIELD-SYMBOL(). 14 | -no_sign = abap_false. 15 | ENDLOOP. 16 | ENDFORM. -------------------------------------------------------------------------------- /src/new/alv-search-help/callback-report.abap: -------------------------------------------------------------------------------- 1 | REPORT zqm_r_subroutine. 2 | 3 | FORM posnr_help_cb TABLES record_tab STRUCTURE seahlpres 4 | CHANGING shlp TYPE shlp_descr_t 5 | callcontrol LIKE ddshf4ctrl. 6 | DATA lv_vbeln TYPE vbrk-vbeln. 7 | GET PARAMETER ID 'VF' FIELD lv_vbeln. 8 | IF lv_vbeln IS NOT INITIAL. 9 | APPEND VALUE #( shlpname = 'F4_POSNR_VBRP' 10 | shlpfield = 'VBELN' 11 | sign = 'I' 12 | option = 'EQ' 13 | low = lv_vbeln ) TO shlp-selopt. 14 | ENDIF. 15 | ENDFORM. -------------------------------------------------------------------------------- /src/new/dynamic-where-clause.abap: -------------------------------------------------------------------------------- 1 | * NOT TESTED !!! 2 | 3 | DATA : s_store TYPE RANGE OF zrt_satici_prim-magaza. 4 | DATA : s_date TYPE RANGE OF sy-datum. 5 | 6 | APPEND VALUE #( sign = 'I' 7 | option = 'EQ' 8 | low = lv_magaza ) TO s_store. 9 | 10 | APPEND VALUE #( sign = 'I' 11 | option = 'EQ' 12 | low = lv_tarih ) TO s_date. 13 | 14 | DATA(lv_where) = cl_shdb_seltab=>combine_seltabs( 15 | it_named_seltabs = VALUE #( 16 | ( name = 'RETAILSTOREID' dref = REF #( s_store[] ) ) 17 | ( name = 'BUSINESSDAYDATE' dref = REF #( s_date[] ) ) 18 | ) 19 | ) . -------------------------------------------------------------------------------- /src/lib-package/template/yi_globalalv.prog.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | YI_GLOBALALV 7 | I 8 | T 9 | X 10 | 11 | 12 | 13 | R 14 | Global include for SLIS ALV report template 15 | 43 16 | 17 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /src/new/ADDR_DIALOG.abap: -------------------------------------------------------------------------------- 1 | METHOD on_addrdet. 2 | 3 | DATA lt_dia TYPE STANDARD TABLE OF addr1_dia. 4 | FIELD-SYMBOLS LIKE LINE OF lt_dia. 5 | 6 | APPEND INITIAL LINE TO lt_dia ASSIGNING . 7 | -addrnumber = /acrn/_ithl_st_ITHLDOSY_hs-addrnumber. 8 | -maint_mode = 'DISPLAY'. 9 | 10 | CALL FUNCTION 'ADDR_DIALOG' 11 | TABLES 12 | number_handle_tab = lt_dia 13 | EXCEPTIONS 14 | address_not_exist = 1 15 | group_not_valid = 2 16 | parameter_error = 3 17 | internal_error = 4 18 | OTHERS = 5. 19 | 20 | ENDMETHOD. -------------------------------------------------------------------------------- /src/lib-package/template/yp_salv_mini.prog.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | YP_SALV_MINI 7 | 1 8 | T 9 | X 10 | X 11 | 12 | 13 | 14 | R 15 | SALV mini template 16 | 18 17 | 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /src/snippets/RKD_WORD_WRAP.abap: -------------------------------------------------------------------------------- 1 | DATA lv_text TYPE c LENGTH 1000. 2 | DATA lt_out_lines TYPE TABLE OF tline-tdline. 3 | 4 | CALL FUNCTION 'RKD_WORD_WRAP' 5 | EXPORTING 6 | textline = lv_text 7 | outputlen = 72 8 | TABLES 9 | out_lines = lt_out_lines 10 | EXCEPTIONS 11 | outputlen_too_large = 1 12 | OTHERS = 2. 13 | 14 | DATA lt_lines TYPE STANDARD TABLE OF tline. 15 | 16 | LOOP AT lt_out_lines ASSIGNING FIELD-SYMBOL(). 17 | APPEND INITIAL LINE TO lt_lines ASSIGNING FIELD-SYMBOL(). 18 | -tdformat = '*'. 19 | -tdline = . 20 | ENDLOOP. -------------------------------------------------------------------------------- /src/lib-package/program/ydtp_mass_download.prog.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | YDTP_MASS_DOWNLOAD 7 | 1 8 | T 9 | X 10 | X 11 | 12 | 13 | 14 | R 15 | Mass extraction of ABAP development objects 16 | 43 17 | 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /src/new/list-structure-components-fill-extension.abap: -------------------------------------------------------------------------------- 1 | METHOD fill_container. 2 | * IS_VALUE TYPE ANY 3 | * ES_CONTAINER TYPE CSEQUENCE 4 | 5 | DATA lv_offset TYPE i. 6 | 7 | LOOP AT CAST cl_abap_structdescr( cl_abap_typedescr=>describe_by_data( is_value ) )->get_components( ) INTO DATA(ls_comp). 8 | DATA(lref_type) = CAST cl_abap_elemdescr( ls_comp-type ). 9 | ASSIGN COMPONENT ls_comp-name OF STRUCTURE is_value TO FIELD-SYMBOL(). 10 | IF sy-subrc = 0 AND IS NOT INITIAL. 11 | es_container+lv_offset(lref_type->output_length) = . 12 | ENDIF. 13 | ADD lref_type->output_length TO lv_offset. 14 | ENDLOOP. 15 | 16 | ENDMETHOD. -------------------------------------------------------------------------------- /src/lib-package/template/yp_alv_template.prog.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | YP_ALV_TEMPLATE 7 | 1 8 | T 9 | X 10 | X 11 | 12 | 13 | 14 | R 15 | SLIS ALV report template with user interaction functionality 16 | 60 17 | 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /src/new/ENQUEUE_READ.abap: -------------------------------------------------------------------------------- 1 | DATA garg TYPE seqg3-garg. 2 | DATA enq TYPE STANDARD TABLE OF seqg3. 3 | DATA(lv_unlocked) = abap_false. 4 | garg = sy-mandt && iv_vgbel. 5 | DO 60 TIMES. 6 | WAIT UP TO 1 SECONDS. 7 | CALL FUNCTION 'ENQUEUE_READ' 8 | EXPORTING 9 | gname = 'EKKO' 10 | garg = garg 11 | TABLES 12 | enq = enq 13 | EXCEPTIONS 14 | communication_failure = 1 15 | system_failure = 2 16 | OTHERS = 3. 17 | IF enq IS INITIAL. 18 | lv_unlocked = abap_true. 19 | EXIT. 20 | ENDIF. 21 | ENDDO. 22 | 23 | IF lv_unlocked = abap_false. 24 | RETURN. 25 | ENDIF. -------------------------------------------------------------------------------- /src/new/DD_DOMVALUES_GET.abap: -------------------------------------------------------------------------------- 1 | FUNCTION z_get_domvalues. 2 | *"---------------------------------------------------------------------- 3 | *"*"Local Interface: 4 | *" IMPORTING 5 | *" VALUE(IV_DOMNAME) TYPE DD07L-DOMNAME 6 | *" EXPORTING 7 | *" VALUE(ET_DOMVAL) TYPE DD07VTAB 8 | *"---------------------------------------------------------------------- 9 | 10 | CALL FUNCTION 'DD_DOMVALUES_GET' 11 | EXPORTING 12 | domname = iv_domname 13 | text = 'X' 14 | langu = sy-langu 15 | bypass_buffer = abap_true 16 | TABLES 17 | dd07v_tab = et_domval 18 | EXCEPTIONS 19 | wrong_textflag = 1 20 | OTHERS = 2. 21 | 22 | ENDFUNCTION. -------------------------------------------------------------------------------- /src/new/COMPLEX_SELECTIONS_DIALOG.abap: -------------------------------------------------------------------------------- 1 | DATA excluded_options TYPE rsoptions. 2 | DATA tab_and_field TYPE rstabfield. 3 | DATA r_werks TYPE RANGE OF t001w-werks. 4 | 5 | tab_and_field = VALUE #( tablename = 'T001W' fieldname = 'WERKS' ). 6 | excluded_options = VALUE #( cp = abap_true nb = abap_true ne = abap_true np = abap_true ). 7 | 8 | CALL FUNCTION 'COMPLEX_SELECTIONS_DIALOG' 9 | EXPORTING 10 | just_incl = 'X' 11 | excluded_options = excluded_options 12 | tab_and_field = tab_and_field 13 | TABLES 14 | range = r_werks 15 | EXCEPTIONS 16 | no_range_tab = 1 17 | cancelled = 2 18 | internal_error = 3 19 | invalid_fieldname = 4 20 | OTHERS = 5. -------------------------------------------------------------------------------- /src/new/date-time-difference.abap: -------------------------------------------------------------------------------- 1 | DATA(lv_seconds) = CONV i( 0 ). 2 | TRY. 3 | CALL METHOD cl_abap_tstmp=>td_subtract 4 | EXPORTING 5 | date1 = ls_list-aedat 6 | time1 = ls_list-aezet 7 | date2 = ls_list-erdat 8 | time2 = ls_list-erzet 9 | IMPORTING 10 | res_secs = lv_seconds. 11 | CATCH cx_parameter_invalid_type . 12 | CATCH cx_parameter_invalid_range . 13 | ENDTRY. 14 | IF lv_seconds IS NOT INITIAL. 15 | DATA(lv_hours) = CONV i( lv_seconds DIV 3600 ). 16 | DATA(lv_minutes) = CONV i( ( lv_seconds MOD 3600 ) / 60 ). 17 | ls_list-turnover = CONV string( lv_hours ) && ':' && |{ CONV char2( lv_minutes ) ALPHA = IN }|. 18 | CONDENSE ls_list-turnover NO-GAPS. 19 | ENDIF. -------------------------------------------------------------------------------- /src/new/create-string-table.abap: -------------------------------------------------------------------------------- 1 | FORM create_string_table USING itab TYPE ANY TABLE 2 | CHANGING er_itab TYPE REF TO data. 3 | 4 | DATA lr_line TYPE REF TO data. 5 | 6 | CREATE DATA lr_line LIKE LINE OF itab. 7 | ASSIGN lr_line->* TO FIELD-SYMBOL(). 8 | DATA(lo_stru) = CAST cl_abap_structdescr( cl_abap_structdescr=>describe_by_data( ) ). 9 | DATA(lt_comp) = lo_stru->get_components( ). 10 | 11 | LOOP AT lt_comp ASSIGNING FIELD-SYMBOL(). 12 | -type = cl_abap_elemdescr=>get_string( ). 13 | ENDLOOP. 14 | 15 | DATA(lo_tabledescr) = cl_abap_tabledescr=>create( cl_abap_structdescr=>create( lt_comp ) ). 16 | CREATE DATA er_itab TYPE HANDLE lo_tabledescr. 17 | 18 | ENDFORM. -------------------------------------------------------------------------------- /src/new/sample-selection-screen.abap: -------------------------------------------------------------------------------- 1 | TABLES sscrfields. 2 | 3 | PARAMETERS: p_fname TYPE ibipparms-path. 4 | 5 | SELECTION-SCREEN FUNCTION KEY 1. 6 | 7 | INITIALIZATION. 8 | sscrfields-functxt_01 = text-s01. 9 | 10 | AT SELECTION-SCREEN OUTPUT. 11 | LOOP AT SCREEN. 12 | IF screen-name = 'P_FNAME'. 13 | screen-required = '2'. 14 | MODIFY SCREEN. 15 | ENDIF. 16 | ENDLOOP. 17 | 18 | AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_fname. 19 | PERFORM file_open_dialog CHANGING p_fname. 20 | 21 | AT SELECTION-SCREEN. 22 | CASE sscrfields-ucomm. 23 | WHEN 'FC01'. 24 | WHEN 'ONLI'. 25 | IF p_fname IS INITIAL. 26 | MESSAGE e055(00). 27 | * Tüm zorunlu alanları doldurun 28 | ENDIF. 29 | ENDCASE. -------------------------------------------------------------------------------- /src/new/MATERIAL_UNIT_CONVERSION.abap: -------------------------------------------------------------------------------- 1 | CALL FUNCTION 'MATERIAL_UNIT_CONVERSION' 2 | EXPORTING 3 | INPUT = 1 4 | KZMEINH = 'X' 5 | MATNR = WA_MARC-MATNR 6 | MEINH = ARTICLES-VRKME 7 | MEINS = WA_MARC-MEINS 8 | IMPORTING 9 | OUTPUT = L_OUTPUT 10 | EXCEPTIONS 11 | CONVERSION_NOT_FOUND = 1 12 | INPUT_INVALID = 2 13 | MATERIAL_NOT_FOUND = 3 14 | MEINH_NOT_FOUND = 4 15 | MEINS_MISSING = 5 16 | NO_MEINH = 6 17 | OUTPUT_INVALID = 7 18 | OVERFLOW = 8 19 | OTHERS = 9. -------------------------------------------------------------------------------- /src/snippets/REUSE_ALV_VARIANT_F4.abap: -------------------------------------------------------------------------------- 1 | PARAMETERS: p_vari LIKE disvariant-variant. 2 | 3 | AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_vari. 4 | PERFORM get_vari CHANGING p_vari. 5 | 6 | FORM get_vari CHANGING p_vari. 7 | 8 | DATA: 9 | 10 | ls_vari TYPE disvariant. 11 | 12 | ls_vari-report = sy-repid. 13 | 14 | CALL FUNCTION 'REUSE_ALV_VARIANT_F4' 15 | EXPORTING 16 | is_variant = ls_vari 17 | IMPORTING 18 | es_variant = ls_vari 19 | EXCEPTIONS 20 | not_found = 1 21 | program_error = 2 22 | OTHERS = 3. 23 | IF sy-subrc <> 0. 24 | MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno 25 | WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4. 26 | ENDIF. 27 | 28 | p_vari = ls_vari-variant. 29 | 30 | ENDFORM. -------------------------------------------------------------------------------- /src/new/iteration-expression.abap: -------------------------------------------------------------------------------- 1 | DATA: lt_item TYPE bapimeconf_t_item, 2 | lt_conf TYPE bapimeconf_t_detail, 3 | lt_confx TYPE bapimeconf_t_detailx. 4 | 5 | lt_item = VALUE #( FOR wa IN confirmation ( item_no = wa-item_no ) ). 6 | lt_conf = VALUE #( FOR wa IN confirmation ( item_no = wa-item_no 7 | conf_category = 'AB' 8 | deliv_date_typ = 'D' 9 | deliv_date = wa-deliv_date 10 | quantity = wa-quantity ) ). 11 | lt_confx = VALUE #( FOR wa IN confirmation ( item_no = wa-item_no 12 | conf_category = 'X' 13 | deliv_date = 'X' 14 | quantity = 'X' ) ). -------------------------------------------------------------------------------- /src/lib-package/template/yp_salv_mini.prog.abap: -------------------------------------------------------------------------------- 1 | REPORT yp_salv_mini. 2 | 3 | TABLES: bkpf. 4 | 5 | DATA o_salv TYPE REF TO cl_salv_table. 6 | DATA t_bkpf TYPE TABLE OF bkpf. 7 | 8 | SELECT-OPTIONS: s_budat FOR bkpf-budat. 9 | 10 | START-OF-SELECTION. 11 | 12 | SELECT * FROM bkpf INTO TABLE t_bkpf 13 | WHERE budat IN s_budat. 14 | 15 | END-OF-SELECTION. 16 | 17 | CALL METHOD cl_salv_table=>factory 18 | IMPORTING 19 | r_salv_table = o_salv 20 | CHANGING 21 | t_table = t_bkpf. 22 | 23 | o_salv->get_functions( )->set_all( abap_true ). 24 | o_salv->get_columns( )->set_optimize( abap_true ). 25 | o_salv->get_columns( )->set_key_fixation( value = abap_true ). 26 | o_salv->get_columns( )->set_column_position( columnname = 'BUDAT' 27 | position = 1 ). 28 | 29 | o_salv->display( ). 30 | -------------------------------------------------------------------------------- /src/new/FILE_OPEN_DIALOG.abap: -------------------------------------------------------------------------------- 1 | PARAMETERS: p_fname TYPE ibipparms-path OBLIGATORY. 2 | 3 | AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_fname. 4 | PERFORM file_open_dialog CHANGING p_fname. 5 | 6 | FORM file_open_dialog CHANGING cp_fname. 7 | 8 | DATA: lt_filetable TYPE filetable, 9 | lv_rc TYPE i. 10 | 11 | cl_gui_frontend_services=>file_open_dialog( 12 | EXPORTING 13 | default_extension = 'xlsx' 14 | file_filter = '(*.xlsx)|*.xlsx|' 15 | CHANGING 16 | file_table = lt_filetable 17 | rc = lv_rc 18 | EXCEPTIONS 19 | file_open_dialog_failed = 1 20 | cntl_error = 2 21 | error_no_gui = 3 22 | not_supported_by_gui = 4 23 | OTHERS = 5 ). 24 | 25 | TRY. 26 | cp_fname = lt_filetable[ 1 ]-filename. 27 | CATCH cx_root. 28 | ENDTRY. 29 | 30 | ENDFORM. -------------------------------------------------------------------------------- /src/new/amdp-case-insensitive-search/zcl_amdp.abap: -------------------------------------------------------------------------------- 1 | CLASS zoaa_cl_common_amdp DEFINITION 2 | PUBLIC 3 | FINAL 4 | CREATE PUBLIC. 5 | 6 | PUBLIC SECTION. 7 | INTERFACES if_amdp_marker_hdb. 8 | 9 | CLASS-METHODS : 10 | search_store IMPORTING VALUE(iv_search) TYPE string 11 | EXPORTING VALUE(et_stores) TYPE ZPOSDW_TT_030. 12 | PROTECTED SECTION. 13 | PRIVATE SECTION. 14 | ENDCLASS. 15 | 16 | 17 | 18 | CLASS zoaa_cl_common_amdp IMPLEMENTATION. 19 | 20 | MEthod search_store by database PROCEDURE FOR HDB LANGUAGE SQLSCRIPT 21 | OPTIONS READ-ONLY. 22 | et_stores = SELECT werks, CASE WHEN ( LENGTH(LTRIM(werks,' 0123456789')) = 0 and LTRIM(werks,' ') <> '' ) 23 | THEN LPAD( werks,10,'0' ) ELSE werks END as retailstoreid, name1 FROM "$ABAP.SCHEMA( /POSDW/SAP_ECC )".t001w 24 | WHERE ( UPPER(werks) LIKE CONCAT(CONCAT('%', UPPER(:iv_search)), '%') ) 25 | OR ( UPPER(name1) LIKE CONCAT(CONCAT('%', UPPER(:iv_search)), '%') ); 26 | ENDMETHOD. 27 | ENDCLASS. -------------------------------------------------------------------------------- /src/snippets/SAVE_TEXT.abap: -------------------------------------------------------------------------------- 1 | DATA lt_lines TYPE STANDARD TABLE OF tline. 2 | 3 | LOOP AT lt_out_lines ASSIGNING FIELD-SYMBOL(). 4 | APPEND INITIAL LINE TO lt_lines ASSIGNING FIELD-SYMBOL(). 5 | -tdformat = '*'. 6 | -tdline = . 7 | ENDLOOP. 8 | 9 | CALL FUNCTION 'SAVE_TEXT' 10 | EXPORTING 11 | header = VALUE thead( tdobject = 'BELEG' 12 | tdname = |{ ip_key+10(4) }{ ip_key(10) }{ ip_key+14(4) }| 13 | tdid = '0002' 14 | tdspras = sy-langu 15 | tdlinesize = '072' 16 | mandt = sy-mandt ) 17 | savemode_direct = abap_true 18 | TABLES 19 | lines = lt_lines 20 | EXCEPTIONS 21 | id = 1 22 | language = 2 23 | name = 3 24 | object = 4 25 | OTHERS = 5. 26 | IF sy-subrc = 0. 27 | COMMIT WORK. 28 | ENDIF. -------------------------------------------------------------------------------- /src/snippets/HR_BANK_SEARCH.abap: -------------------------------------------------------------------------------- 1 | PROCESS ON VALUE-REQUEST. 2 | FIELD P0009-BANKL MODULE LIST_BANKL. 3 | 4 | MODULE LIST_BANKL. 5 | PERFORM BANK_SEARCH USING 'P0009-BANKS' "country 6 | 'P0009-BANKL' "bank key 7 | 'P0009-BANKN'. "bank account 8 | ENDMODULE. 9 | 10 | FORM bank_search USING p_dynpfield_country LIKE feld-name 11 | p_dynpfield_bankkey LIKE feld-name 12 | p_dynpfield_bankacc LIKE feld-name. 13 | 14 | CALL FUNCTION 'HR_BANK_SEARCH' 15 | EXPORTING 16 | p_dynpfield_country = p_dynpfield_country 17 | p_dynpfield_bankkey = p_dynpfield_bankkey 18 | p_dynpfield_bankacc = p_dynpfield_bankacc 19 | p_dynpfield_bankname = 'BNKA_BF-BANKA' 20 | EXCEPTIONS 21 | fieldname_not_valid = 1 22 | country_not_found = 2 23 | OTHERS = 3. 24 | 25 | IF sy-subrc EQ 2. 26 | MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno 27 | WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4. 28 | ENDIF. 29 | 30 | ENDFORM. -------------------------------------------------------------------------------- /src/new/amdp-case-insensitive-search/z_call_amdp.abap: -------------------------------------------------------------------------------- 1 | FUNCTION zposae_store_value_help. 2 | *"---------------------------------------------------------------------- 3 | *"*"Local Interface: 4 | *" IMPORTING 5 | *" VALUE(IV_SEARCH) TYPE STRING OPTIONAL 6 | *" EXPORTING 7 | *" VALUE(ET_STORES) TYPE ZPOSAE_RETAILSTORES_T 8 | *"---------------------------------------------------------------------- 9 | 10 | IF iv_search IS INITIAL. 11 | SELECT werks AS retailstoreid, name1 AS retailstorename FROM zposdw_t001w_limited 12 | INTO CORRESPONDING FIELDS OF TABLE @et_stores 13 | ##db_feature_mode[amdp_table_function]. 14 | 15 | LOOP AT et_stores ASSIGNING FIELD-SYMBOL(). 16 | -retailstoreid = |{ -retailstoreid ALPHA = IN }|. 17 | ENDLOOP. 18 | ELSE. 19 | zoaa_cl_common_amdp=>search_store( 20 | EXPORTING 21 | iv_search = iv_search 22 | IMPORTING 23 | et_stores = DATA(lt_result) ). 24 | ET_STORES = CORRESPONDING #( lt_result MAPPING retailstorename = name1 ) . 25 | ENDIF. 26 | 27 | ENDFUNCTION. -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2018 Kerem Kayacan 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /src/new/get-table-columns-from-adbc-sqlserver.abap: -------------------------------------------------------------------------------- 1 | TYPES: BEGIN OF lst_schema, 2 | column_name TYPE string, 3 | data_type TYPE string, 4 | character_maximum_length TYPE i, 5 | numeric_precision TYPE i, 6 | datetime_precision TYPE i, 7 | is_nullable TYPE string, 8 | END OF lst_schema. 9 | DATA: ls_schema TYPE lst_schema, 10 | lt_schema TYPE TABLE OF lst_schema. 11 | 12 | DATA: lv_query TYPE string. 13 | 14 | lv_query = `SELECT COLUMN_NAME, DATA_TYPE, CHARACTER_MAXIMUM_LENGTH, NUMERIC_PRECISION, DATETIME_PRECISION, ` && 15 | `IS_NULLABLE FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = N'crm_customer_vw'`. 16 | 17 | DATA(o_conn) = cl_sql_connection=>get_connection( CONV dbcon_name( 'VERIPARK' ) ). 18 | DATA(lo_statement) = o_conn->create_statement( ). 19 | DATA(lo_result) = lo_statement->execute_query( lv_query ). 20 | lo_result->set_param_struct( REF #( ls_schema ) ). 21 | WHILE lo_result->next( ) > 0. 22 | * WRITE:/ ls_schema-column_name. 23 | APPEND ls_schema TO lt_schema. 24 | ENDWHILE. 25 | lo_result->close( ). 26 | cl_demo_output=>display( lt_schema ). -------------------------------------------------------------------------------- /src/new/fill-bapi-flag.abap: -------------------------------------------------------------------------------- 1 | FORM fill_bapi_flag USING it_bapi TYPE STANDARD TABLE 2 | CHANGING ct_bapix TYPE STANDARD TABLE. 3 | 4 | DATA: lo_sdescr TYPE REF TO cl_abap_structdescr, 5 | lo_edescr TYPE REF TO cl_abap_elemdescr. 6 | 7 | APPEND INITIAL LINE TO ct_bapix ASSIGNING FIELD-SYMBOL(). 8 | lo_sdescr ?= cl_abap_structdescr=>describe_by_data( ). 9 | DATA(lt_comp) = lo_sdescr->get_components( ). 10 | 11 | CLEAR ct_bapix[]. 12 | 13 | LOOP AT it_bapi ASSIGNING FIELD-SYMBOL(). 14 | APPEND INITIAL LINE TO ct_bapix ASSIGNING . 15 | LOOP AT lt_comp ASSIGNING FIELD-SYMBOL(). 16 | lo_edescr ?= -type. 17 | ASSIGN COMPONENT -name OF STRUCTURE TO FIELD-SYMBOL(). 18 | ASSIGN COMPONENT -name OF STRUCTURE TO FIELD-SYMBOL(). 19 | IF sy-subrc = 0. 20 | IF lo_edescr->output_length = '1'. 21 | IF IS NOT INITIAL. 22 | = abap_true. 23 | ENDIF. 24 | ELSE. 25 | = . 26 | ENDIF. 27 | ENDIF. 28 | ENDLOOP. 29 | ENDLOOP. 30 | 31 | ENDFORM. -------------------------------------------------------------------------------- /src/new/maintenance-view-event-01-before-save-validation.abap: -------------------------------------------------------------------------------- 1 | FORM on_before_save. 2 | DATA: ls_total TYPE zcod_segment_01, 3 | lt_total LIKE TABLE OF ls_total, 4 | lv_total TYPE c LENGTH 30. 5 | LOOP AT total. 6 | ls_total = . 7 | CLEAR ls_total-segment. 8 | COLLECT ls_total INTO lt_total. 9 | ENDLOOP. 10 | LOOP AT lt_total INTO ls_total WHERE hr <> 100 11 | OR hq <> 100 12 | OR oh <> 100. 13 | IF ls_total-hr <> 100. 14 | WRITE ls_total-hr TO lv_total DECIMALS 2. 15 | ELSEIF ls_total-hq <> 100. 16 | WRITE ls_total-hq TO lv_total DECIMALS 2. 17 | ELSEIF ls_total-oh <> 100. 18 | WRITE ls_total-oh TO lv_total DECIMALS 2. 19 | ENDIF. 20 | CONDENSE lv_total. 21 | MESSAGE s045(zco) WITH ls_total-bukrs ls_total-gjahr ls_total-poper lv_total DISPLAY LIKE 'E'. 22 | * Comp: & period: & & total must be 100. Currently & 23 | vim_abort_saving = abap_true. 24 | EXIT. 25 | ENDLOOP. 26 | IF vim_abort_saving = abap_true. 27 | sy-subrc = 4. 28 | ELSE. 29 | sy-subrc = 0. 30 | ENDIF. 31 | ENDFORM. -------------------------------------------------------------------------------- /src/new/write-base64-encoded-file-to-server.abap: -------------------------------------------------------------------------------- 1 | TYPES lvt_content(1022) TYPE x. 2 | DATA: lt_content TYPE TABLE OF lvt_content, 3 | lv_hex_content TYPE xstring, 4 | lv_path TYPE rlgrap-filename, 5 | lt_parts TYPE TABLE OF string. 6 | 7 | CLEAR: lv_hex_content, lt_content. 8 | 9 | CALL FUNCTION 'SCMS_BASE64_DECODE_STR' 10 | EXPORTING 11 | input = ls_file-sdata 12 | IMPORTING 13 | output = lv_hex_content 14 | EXCEPTIONS 15 | failed = 1 16 | OTHERS = 2. 17 | 18 | CALL FUNCTION 'SCMS_XSTRING_TO_BINARY' 19 | EXPORTING 20 | buffer = lv_hex_content 21 | TABLES 22 | binary_tab = lt_content. 23 | 24 | SPLIT ls_file-sfilename AT '/' INTO TABLE lt_parts. 25 | LOOP AT lt_parts INTO DATA(lv_part). 26 | ENDLOOP. 27 | 28 | lv_path = '/usr/sap/trans/BW_AL11/' && lv_part. 29 | 30 | OPEN DATASET lv_path FOR OUTPUT IN BINARY MODE. 31 | IF sy-subrc = 0. 32 | LOOP AT lt_content ASSIGNING FIELD-SYMBOL(). 33 | TRANSFER TO lv_path. 34 | ENDLOOP. 35 | CLOSE DATASET lv_path. 36 | WRITE:/ icon_led_green AS ICON, lv_path. 37 | ELSE. 38 | WRITE:/ icon_led_red AS ICON, lv_path. 39 | ENDIF. -------------------------------------------------------------------------------- /src/snippets/SELECT_OPTIONS_RESTRICT.abap: -------------------------------------------------------------------------------- 1 | INITIALIZATION. 2 | PERFORM initialization. 3 | 4 | FORM initialization . 5 | 6 | CALL FUNCTION 'SELECT_OPTIONS_RESTRICT' 7 | EXPORTING 8 | restriction = VALUE sscr_restrict( 9 | opt_list_tab = VALUE #( 10 | ( name = 'EQ_LE_GE' 11 | options = VALUE #( 12 | eq = abap_true 13 | le = abap_true 14 | ge = abap_true ) ) ) 15 | ass_tab = VALUE #( 16 | ( kind = 'S' 17 | name = 'S_SPMON' 18 | sg_main = 'I' 19 | sg_addy = '' 20 | op_main = 'EQ_LE_GE' ) ) ) 21 | EXCEPTIONS 22 | too_late = 1 23 | repeated = 2 24 | selopt_without_options = 3 25 | selopt_without_signs = 4 26 | invalid_sign = 5 27 | empty_option_list = 6 28 | invalid_kind = 7 29 | repeated_kind_a = 8 30 | OTHERS = 9. 31 | 32 | ENDFORM. -------------------------------------------------------------------------------- /src/snippets/parallel-cursor.abap: -------------------------------------------------------------------------------- 1 | SORT lt_cards BY card_type memb_id card_valid_from DESCENDING. 2 | 3 | DATA(lv_tabix) = 1. 4 | 5 | LOOP AT lt_cards ASSIGNING FIELD-SYMBOL(). 6 | IF -active_object_id IS INITIAL. 7 | -active_object_id = -object_id. 8 | ENDIF. 9 | DATA(lv_found) = abap_false. 10 | LOOP AT lt_cards ASSIGNING FIELD-SYMBOL() FROM lv_tabix. 11 | IF -card_type < -card_type OR 12 | -memb_id < -memb_id. 13 | CONTINUE. 14 | ELSEIF -card_type = -card_type AND 15 | -memb_id = -memb_id. 16 | IF lv_found = abap_false. 17 | lv_tabix = sy-tabix. 18 | lv_found = abap_true. 19 | ENDIF. 20 | IF -object_id <> -object_id AND 21 | -card_valid_from <= -card_valid_from. 22 | -active_object_id = -object_id. 23 | ENDIF. 24 | ELSEIF -card_type > -card_type OR 25 | -memb_id > -memb_id. 26 | IF lv_found = abap_false. 27 | lv_tabix = sy-tabix. 28 | ENDIF. 29 | EXIT. 30 | ENDIF. 31 | ENDLOOP. 32 | ENDLOOP. -------------------------------------------------------------------------------- /src/snippets/POPUP_GET_VALUES.abap: -------------------------------------------------------------------------------- 1 | FORM ask_for_values CHANGING ep_doc_date 2 | ep_ref_doc_no. 3 | 4 | DATA: 5 | lt_fields TYPE TABLE OF sval, 6 | ls_fields LIKE LINE OF lt_fields, 7 | lv_rc TYPE c LENGTH 1. 8 | 9 | CLEAR: ep_doc_date, ep_ref_doc_no. 10 | 11 | ls_fields-tabname = 'BKPF'. 12 | ls_fields-fieldname = 'BUDAT'. 13 | ls_fields-fieldtext = TEXT-t08. 14 | ls_fields-value = sy-datum. 15 | APPEND ls_fields TO lt_fields. CLEAR ls_fields. 16 | 17 | ls_fields-tabname = 'BKPF'. 18 | ls_fields-fieldname = 'XBLNR'. 19 | ls_fields-fieldtext = TEXT-t09. 20 | ls_fields-novaluehlp = 'X'. 21 | APPEND ls_fields TO lt_fields. CLEAR ls_fields. 22 | 23 | CALL FUNCTION 'POPUP_GET_VALUES' 24 | EXPORTING 25 | popup_title = TEXT-t07 26 | IMPORTING 27 | returncode = lv_rc 28 | TABLES 29 | fields = lt_fields 30 | EXCEPTIONS 31 | error_in_fields = 1 32 | OTHERS = 2. 33 | 34 | IF lv_rc = 'A'. 35 | RETURN. 36 | ENDIF. 37 | 38 | READ TABLE lt_fields INTO ls_fields INDEX 1. 39 | IF sy-subrc = 0. 40 | ep_doc_date = ls_fields-value. 41 | ENDIF. 42 | 43 | READ TABLE lt_fields INTO ls_fields INDEX 2. 44 | IF sy-subrc = 0. 45 | ep_ref_doc_no = ls_fields-value. 46 | ENDIF. 47 | 48 | ENDFORM. -------------------------------------------------------------------------------- /src/new/abap2xlsx-reader-examples/abap2xlsx-reader.abap: -------------------------------------------------------------------------------- 1 | REPORT yxlsx_read. 2 | 3 | DATA: excel TYPE REF TO zcl_excel, 4 | reader TYPE REF TO zif_excel_reader. 5 | 6 | DATA: worksheet TYPE REF TO zcl_excel_worksheet, 7 | highest_column TYPE zexcel_cell_column, 8 | highest_row TYPE int4, 9 | column TYPE zexcel_cell_column VALUE 1, 10 | col_str TYPE zexcel_cell_column_alpha, 11 | row TYPE int4 VALUE 1, 12 | value TYPE zexcel_cell_value. 13 | 14 | CREATE OBJECT reader TYPE zcl_excel_reader_2007. 15 | excel = reader->load_file( 'C:\Users\kerem.kayacan\Temp\yakit_sarfiyat.xlsx' ). 16 | 17 | BREAK-POINT. 18 | 19 | worksheet = excel->get_active_worksheet( ). 20 | highest_column = worksheet->get_highest_column( ). 21 | highest_row = worksheet->get_highest_row( ). 22 | 23 | WRITE: 'Highest column: ', highest_column, 'Highest row: ', highest_row. 24 | WRITE: /. 25 | 26 | WHILE row <= highest_row. 27 | WHILE column <= highest_column. 28 | col_str = zcl_excel_common=>convert_column2alpha( column ). 29 | worksheet->get_cell( 30 | EXPORTING 31 | ip_column = col_str 32 | ip_row = row 33 | IMPORTING 34 | ep_value = value 35 | ). 36 | WRITE: value. 37 | column = column + 1. 38 | ENDWHILE. 39 | WRITE: /. 40 | column = 1. 41 | row = row + 1. 42 | ENDWHILE. 43 | 44 | BREAK-POINT. -------------------------------------------------------------------------------- /src/new/exclude-alv-toolbar-functions.abap: -------------------------------------------------------------------------------- 1 | FORM exclude_toolbar_functions CHANGING ct_excl TYPE ui_functions. 2 | APPEND '&DETAIL' TO t_excl. 3 | APPEND '&SORT_ASC' TO t_excl. 4 | APPEND '&SORT_DSC' TO t_excl. 5 | APPEND '&FIND' TO t_excl. 6 | APPEND '&PRINT_BACK' TO t_excl. 7 | APPEND '&PRINT_BACK_PREVIEW' TO t_excl. 8 | APPEND '&VEXCEL' TO t_excl. 9 | APPEND '&XXL' TO t_excl. 10 | APPEND '&AQW' TO t_excl. 11 | APPEND '&PC' TO t_excl. 12 | APPEND '&SEND' TO t_excl. 13 | APPEND '&ML' TO t_excl. 14 | APPEND '&HTML' TO t_excl. 15 | APPEND '&COL0' TO t_excl. 16 | APPEND '&INFO' TO t_excl. 17 | APPEND cl_gui_alv_grid=>mc_mb_filter TO t_excl. 18 | APPEND cl_gui_alv_grid=>mc_mb_sum TO t_excl. 19 | APPEND cl_gui_alv_grid=>mc_mb_subtot TO t_excl. 20 | APPEND cl_gui_alv_grid=>mc_mb_view TO t_excl. 21 | APPEND '&CHECK' TO t_excl. 22 | APPEND '&REFRESH' TO t_excl. 23 | APPEND cl_gui_alv_grid=>mc_fc_loc_cut TO t_excl. 24 | APPEND cl_gui_alv_grid=>mc_fc_loc_copy TO t_excl. 25 | APPEND cl_gui_alv_grid=>mc_fc_loc_paste TO t_excl. 26 | APPEND cl_gui_alv_grid=>mc_fc_loc_paste_new_row TO t_excl. 27 | APPEND cl_gui_alv_grid=>mc_fc_loc_undo TO t_excl. 28 | APPEND cl_gui_alv_grid=>mc_fc_loc_append_row TO t_excl. 29 | APPEND cl_gui_alv_grid=>mc_fc_loc_insert_row TO t_excl. 30 | APPEND cl_gui_alv_grid=>mc_fc_loc_delete_row TO t_excl. 31 | APPEND cl_gui_alv_grid=>mc_fc_loc_copy_row TO t_excl. 32 | APPEND cl_gui_alv_grid=>mc_fc_call_abc TO t_excl. 33 | ENDFORM. -------------------------------------------------------------------------------- /src/snippets/HR_F4HELP_IN_INTERVAL.abap: -------------------------------------------------------------------------------- 1 | PROCESS ON VALUE-REQUEST. 2 | FIELD p0007-schkz MODULE schkz_f4_request. 3 | 4 | MODULE schkz_f4_request INPUT. 5 | PERFORM schkz_f4_request. 6 | ENDMODULE. 7 | 8 | FORM schkz_f4_request. 9 | DATA: intf TYPE STANDARD TABLE OF ddshiface, 10 | intfwa LIKE LINE OF intf. 11 | 12 | intfwa-dispfield = 'X'. 13 | 14 | intfwa-shlpfield = 'ZEITY'. 15 | intfwa-valfield = 'T503-ZEITY'. 16 | intfwa-value = t503-zeity. 17 | INSERT intfwa INTO TABLE intf. 18 | 19 | intfwa-shlpfield = 'MOSID'. 20 | intfwa-valfield = 'T001P-MOSID'. 21 | intfwa-value = t001p-mosid. 22 | INSERT intfwa INTO TABLE intf. 23 | 24 | intfwa-shlpfield = 'MOFID'. 25 | intfwa-valfield = 'T001P-MOFID'. 26 | intfwa-value = t001p-mofid. 27 | INSERT intfwa INTO TABLE intf. 28 | 29 | CLEAR intfwa-dispfield. 30 | 31 | intfwa-shlpfield = 'ENDDA'. 32 | intfwa-valfield = 'P0007-BEGDA'. 33 | intfwa-internal = 'D'. 34 | INSERT intfwa INTO TABLE intf. 35 | 36 | intfwa-shlpfield = 'BEGDA'. 37 | intfwa-valfield = 'P0007-BEGDA'. 38 | intfwa-internal = 'D'. 39 | INSERT intfwa INTO TABLE intf. 40 | 41 | intfwa-shlpfield = 'SCHKZ'. 42 | intfwa-valfield = 'P0007-SCHKZ'. 43 | intfwa-internal = 'D'. 44 | INSERT intfwa INTO TABLE intf. 45 | 46 | CALL FUNCTION 'HR_F4HELP_IN_INTERVAL' 47 | EXPORTING 48 | im_shlpname = 'H_T508A' 49 | im_shlpfield = 'SCHKZ' 50 | TABLES 51 | tab_intf = intf. 52 | 53 | ENDFORM. -------------------------------------------------------------------------------- /src/snippets/convert-text-to-utf8.abap: -------------------------------------------------------------------------------- 1 | DATA : lo_conv TYPE REF TO cl_abap_conv_out_ce, 2 | lv_xstring TYPE xstring. 3 | 4 | * Encoding format 5 | lo_conv = cl_abap_conv_out_ce=>create( encoding = 'UTF-8' ). 6 | 7 | TRY. "For BOM if needed 8 | lo_conv->write( EXPORTING data = cl_abap_char_utilities=>byte_order_mark_utf8 ). 9 | CATCH cx_sy_codepage_converter_init . 10 | CATCH cx_sy_conversion_codepage . 11 | CATCH cx_parameter_invalid_type . 12 | CATCH cx_parameter_invalid_range . 13 | ENDTRY. 14 | 15 | *here data is a string table but you can use structure with another method 16 | LOOP AT data_table INTO data_line. 17 | TRY. 18 | lo_conv->write( EXPORTING data = data_line ). 19 | CATCH cx_sy_codepage_converter_init . 20 | CATCH cx_sy_conversion_codepage . 21 | CATCH cx_parameter_invalid_type . 22 | CATCH cx_parameter_invalid_range . 23 | ENDTRY. 24 | * next line! 25 | TRY. 26 | lo_conv->write( EXPORTING data = cl_abap_char_utilities=>cr_lf ). 27 | CATCH cx_sy_codepage_converter_init . 28 | CATCH cx_sy_conversion_codepage . 29 | CATCH cx_parameter_invalid_type . 30 | CATCH cx_parameter_invalid_range . 31 | ENDTRY. 32 | ENDLOOP. 33 | 34 | *get full content in one xstring 35 | lv_xstring = lo_conv->get_buffer( ). 36 | 37 | * et voila!! 38 | OPEN DATASET lv_filename FOR OUTPUT IN BINARY MODE. 39 | IF sy-subrc EQ 0. 40 | TRANSFER lv_xline TO lv_filename. 41 | CLOSE DATASET lv_filename. 42 | ENDIF. 43 | -------------------------------------------------------------------------------- /src/new/frequent.txt: -------------------------------------------------------------------------------- 1 | Table type 2 | SOLI_TAB 3 | SOLIX_TAB 4 | TRG_DATE 5 | TRG_CHAR4 6 | WRF_MAKTX_RTTY 7 | WDY_KEY_VALUE_LIST Standard list of key/value relationships as strings 8 | WDFR_MATKL_RANG_TYP Material group range 9 | 10 | Structure 11 | TAB512 12 | 13 | Data element 14 | CDATE DATS 8 0 Yaratma tarihi 15 | CTIME CHAR 6 0 Bitiş saati 16 | OBZAE NUMC 4 Sayaç anahtarı 17 | AUFUSER7 DATS 8 0 İş başlangıcı 18 | AUFUSER8 DATS 8 0 İş bitiş tarihi 19 | BKK_LIGHTCODE CHAR 1 0 ALV'de ışık ikonu durumu 20 | GEOLON 21 | GEOLAT 22 | FC_NAME CHAR 30 Ad 23 | 24 | Message 25 | 00055 Tüm zorunlu alanları doldurun 26 | SV004 Seçime uygun bir giriş bulunamadı 27 | SV171 Internal error 28 | 00398 & & & & 29 | SV018 Veriler saklandı 30 | SV043 Veriler saklanmıştı 31 | DB000 & & & & 32 | SV026 İşlevi yürütmeden önce girişleri seç 33 | DB650 Alt sınır üst sınırdan büyük 34 | 00382 Toplu giriş işlemesi sona erdi 35 | 00517 İş tamamlandı 36 | FES016 Dosyanın yazılması sırasında hata. 37 | 0K004 İmleci listedeki bir satıra konumlayın 38 | 0K006 Asgari bir giriş seçiniz 39 | 0K007 Son değer ilk değerden küçük 40 | BT676 İstisna ortaya çıktı (function = &1; sy-subrc = &2) 41 | NR401 İşlem yürütülemez 42 | 01246 Sistem izin verseydi blokajlar kaldırılırdı 43 | FL060 Saved 44 | 45 | 46 | 47 | Table 48 | E070-E071 Transport request content 49 | TVARV Table of variables in selection criteria 50 | 51 | Program 52 | RSSYSCOMP Batch version comparison 53 | 54 | TCODE 55 | DWDM 56 | 57 | FM 58 | POPUP_CONTINUE_YES_NO -------------------------------------------------------------------------------- /src/new/salv-mini-template.abap: -------------------------------------------------------------------------------- 1 | *&---------------------------------------------------------------------* 2 | *& Report ZFI_TCMB_INFLATION 3 | *& 4 | *&---------------------------------------------------------------------* 5 | *& 6 | *& 7 | *&---------------------------------------------------------------------* 8 | 9 | REPORT zfi_tcmb_inflation. 10 | 11 | DATA: gt_inf TYPE TABLE OF zrt_inf_rate, 12 | go_salv TYPE REF TO cl_salv_table, 13 | go_col TYPE REF TO cl_salv_column_table. 14 | 15 | PARAMETERS: p_start TYPE datum, 16 | p_end TYPE datum, 17 | p_upd AS CHECKBOX DEFAULT 'X'. 18 | 19 | INITIALIZATION. 20 | p_start = sy-datum - 30. 21 | p_end = sy-datum. 22 | 23 | START-OF-SELECTION. 24 | 25 | gt_inf = zcl_tcmb_inflation=>get( 26 | iv_start_date = p_start 27 | iv_end_date = p_end 28 | iv_update_db = p_upd ). 29 | 30 | END-OF-SELECTION. 31 | IF sy-batch = abap_false. 32 | CALL METHOD cl_salv_table=>factory 33 | IMPORTING 34 | r_salv_table = go_salv 35 | CHANGING 36 | t_table = gt_inf. 37 | 38 | go_salv->get_functions( )->set_all( abap_true ). 39 | go_salv->get_columns( )->set_optimize( abap_true ). 40 | * go_salv->get_columns( )->set_key_fixation( value = abap_true ). 41 | * go_salv->get_columns( )->set_column_position( columnname = 'MANDT' 42 | * position = 1 ). 43 | go_col ?= go_salv->get_columns( )->get_column( 'MANDT' ). 44 | go_col->set_visible( abap_false ). 45 | go_salv->display( ). 46 | ENDIF. -------------------------------------------------------------------------------- /src/new/get-its-context-and-query-param.abap: -------------------------------------------------------------------------------- 1 | REPORT zfiori_launch_mb90. 2 | 3 | START-OF-SELECTION. 4 | 5 | DATA gt_context TYPE STANDARD TABLE OF savwctxt. 6 | CALL FUNCTION 'ITS_IMPORT_CONTEXT' 7 | TABLES 8 | context = gt_context 9 | EXCEPTIONS 10 | its_not_available = 1 11 | OTHERS = 2. 12 | 13 | IF gt_context IS INITIAL. 14 | LEAVE PROGRAM. 15 | ENDIF. 16 | 17 | READ TABLE gt_context INTO DATA(gs_context) WITH KEY fieldname = '~TRANSACTION'. 18 | 19 | DATA: gv_mblnr TYPE mkpf-mblnr, 20 | gv_mjahr TYPE mkpf-mjahr. 21 | 22 | FIND 'MATERIALDOCUMENT=' IN gs_context-fieldcont MATCH OFFSET DATA(gv_offset). 23 | IF gv_offset > 0. 24 | ADD 17 TO gv_offset. 25 | gv_mblnr = gs_context-fieldcont+gv_offset(10). 26 | ENDIF. 27 | CLEAR gv_offset. 28 | FIND 'MATERIALDOCUMENTYEAR=' IN gs_context-fieldcont MATCH OFFSET gv_offset. 29 | IF gv_offset > 0. 30 | ADD 21 TO gv_offset. 31 | gv_mjahr = gs_context-fieldcont+gv_offset(4). 32 | ENDIF. 33 | 34 | DATA gv_objky TYPE nast-objky. 35 | gv_objky = gv_mblnr && gv_mjahr && '%'. 36 | SELECT SINGLE '1' FROM nast 37 | WHERE kappl = 'ME' 38 | AND objky LIKE @gv_objky 39 | INTO @DATA(gv_vermo). 40 | IF sy-subrc <> 0. 41 | gv_vermo = '2'. 42 | ENDIF. 43 | 44 | end-of-SELECTION. 45 | 46 | DATA gtr_mblnr TYPE RANGE OF mkpf-mblnr. 47 | 48 | gtr_mblnr = VALUE #( ( sign = 'I' option = 'EQ' low = gv_mblnr ) ). 49 | 50 | SUBMIT mm70amea 51 | WITH pm_vermo = gv_vermo 52 | WITH pm_mjahr = gv_mjahr 53 | WITH rg_mblnr IN gtr_mblnr. -------------------------------------------------------------------------------- /src/new/ZCL_HTTP/ZCX_HTTP.abap: -------------------------------------------------------------------------------- 1 | class ZCX_HTTP definition 2 | public 3 | inheriting from CX_STATIC_CHECK 4 | create public . 5 | 6 | public section. 7 | 8 | interfaces IF_T100_DYN_MSG . 9 | interfaces IF_T100_MESSAGE . 10 | 11 | aliases DEFAULT_TEXTID 12 | for IF_T100_MESSAGE~DEFAULT_TEXTID . 13 | aliases MSGTY 14 | for IF_T100_DYN_MSG~MSGTY . 15 | aliases MSGV1 16 | for IF_T100_DYN_MSG~MSGV1 . 17 | aliases MSGV2 18 | for IF_T100_DYN_MSG~MSGV2 . 19 | aliases MSGV3 20 | for IF_T100_DYN_MSG~MSGV3 . 21 | aliases MSGV4 22 | for IF_T100_DYN_MSG~MSGV4 . 23 | aliases T100KEY 24 | for IF_T100_MESSAGE~T100KEY . 25 | 26 | methods CONSTRUCTOR 27 | importing 28 | !TEXTID like IF_T100_MESSAGE=>T100KEY optional 29 | !PREVIOUS like PREVIOUS optional 30 | !MSGTY type SYMSGTY optional 31 | !MSGV1 type SYMSGV optional 32 | !MSGV2 type SYMSGV optional 33 | !MSGV3 type SYMSGV optional 34 | !MSGV4 type SYMSGV optional . 35 | methods GET_MSG 36 | returning 37 | value(RT_MSG) type BAPIRET2_TAB . 38 | 39 | METHOD get_msg. 40 | 41 | MESSAGE ID me->t100key-msgid TYPE me->msgty NUMBER me->t100key-msgno 42 | WITH me->msgv1 me->msgv2 me->msgv3 me->msgv4 43 | INTO DATA(lv_message). 44 | 45 | APPEND VALUE #( type = me->msgty 46 | id = me->t100key-msgid 47 | number = me->t100key-msgno 48 | message_v1 = me->msgv1 49 | message_v2 = me->msgv2 50 | message_v3 = me->msgv3 51 | message_v4 = me->msgv4 52 | message = lv_message ) TO rt_msg. 53 | 54 | ENDMETHOD. -------------------------------------------------------------------------------- /src/new/extract-zipped-and-base64-encoded-file.abap: -------------------------------------------------------------------------------- 1 | DATA: "lv_base64 TYPE string, 2 | lv_decoded_data TYPE xstring, 3 | lv_file_content TYPE xstring, 4 | lt_bin TYPE TABLE OF x255, 5 | lv_len TYPE i, 6 | lv_xml_string TYPE string. 7 | 8 | " 1. Base64 çözme 9 | CALL FUNCTION 'SCMS_BASE64_DECODE_STR' 10 | EXPORTING 11 | input = lv_binary_data " Base64 kodlu veri 12 | IMPORTING 13 | output = lv_decoded_data. " Çözülen veri (zipli hali) 14 | 15 | " 2. CL_ABAP_ZIP sınıfı ile zip'i yükleme 16 | DATA(lo_zip) = NEW cl_abap_zip( ). 17 | 18 | TRY. 19 | " Zip içeriğini yükle 20 | lo_zip->load( lv_decoded_data ). 21 | 22 | " 3. Zip'ten XML dosyasını çıkar 23 | lo_zip->get( EXPORTING index = 1 " İlk dosya varsayılan alınır 24 | IMPORTING content = lv_file_content ). 25 | 26 | " 4. XSTRING'i BINARY'e dönüştürme 27 | CALL FUNCTION 'SCMS_XSTRING_TO_BINARY' 28 | EXPORTING 29 | buffer = lv_file_content 30 | IMPORTING 31 | output_length = lv_len 32 | TABLES 33 | binary_tab = lt_bin. 34 | 35 | " 5. BINARY'den STRING'e dönüştürme 36 | CALL FUNCTION 'SCMS_BINARY_TO_STRING' 37 | EXPORTING 38 | input_length = lv_len 39 | IMPORTING 40 | text_buffer = lv_xml_string 41 | TABLES 42 | binary_tab = lt_bin 43 | EXCEPTIONS 44 | failed = 1 45 | OTHERS = 2. 46 | 47 | IF sy-subrc = 0. 48 | " Çözülen XML verisi burada kullanılabilir 49 | WRITE: / 'Çözülen XML Verisi:', lv_xml_string. 50 | ELSE. 51 | WRITE: / 'Dönüşüm hatası meydana geldi.'. 52 | ENDIF. 53 | 54 | CATCH cx_root INTO DATA(lx_zip_error). 55 | WRITE: / 'Zip çıkarma hatası: ', lx_zip_error->get_text( ). 56 | ENDTRY. -------------------------------------------------------------------------------- /src/snippets/F4IF_INT_TABLE_VALUE_REQUEST.abap: -------------------------------------------------------------------------------- 1 | AT SELECTION-SCREEN ON VALUE-REQUEST FOR s_kschl-low. 2 | PERFORM get_kschl USING 'S_KSCHL-LOW'. 3 | 4 | FORM get_kschl USING p_fname. 5 | 6 | DATA: BEGIN OF ls_help, 7 | kschl LIKE zor_rt_r003-kschl, 8 | vtext LIKE t685t-vtext, 9 | END OF ls_help, 10 | lt_help LIKE TABLE OF ls_help. 11 | 12 | SELECT DISTINCT z~kschl, t685t~vtext 13 | FROM zor_rt_r003 AS z 14 | LEFT OUTER JOIN t685t ON t685t~spras = @sy-langu 15 | AND t685t~kvewe = 'A' 16 | AND t685t~kappl = 'M' 17 | AND t685t~kschl = z~kschl 18 | INTO TABLE @lt_help 19 | WHERE z~kschl <> @space 20 | ORDER BY z~kschl. 21 | 22 | PERFORM call_value_request TABLES lt_help 23 | USING 'KSCHL' 'VTEXT' sy-dynnr p_fname. 24 | 25 | ENDFORM. 26 | 27 | FORM call_value_request TABLES pt_value_tab 28 | USING pv_retfield 29 | pv_pvalkey 30 | pv_dynpnr 31 | pv_dynprofield. 32 | 33 | DATA: 34 | lv_dynpnr TYPE sydynnr, 35 | lv_dynprofield TYPE dynfnam. 36 | 37 | lv_dynpnr = pv_dynpnr. 38 | lv_dynprofield = pv_dynprofield. 39 | 40 | CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST' 41 | EXPORTING 42 | retfield = pv_retfield 43 | pvalkey = pv_pvalkey 44 | dynpprog = sy-repid 45 | dynpnr = lv_dynpnr 46 | dynprofield = lv_dynprofield 47 | value_org = 'S' 48 | TABLES 49 | value_tab = pt_value_tab 50 | EXCEPTIONS 51 | parameter_error = 1 52 | no_values_found = 2 53 | OTHERS = 3. 54 | 55 | ENDFORM. -------------------------------------------------------------------------------- /src/new/gateway-add-function-import-parameter.abap: -------------------------------------------------------------------------------- 1 | method define. 2 | 3 | super->define( ). 4 | 5 | data(lo_action) = model->get_action( 'EmptyProductTransferHandlingUnit' ). "#EC NOTEXT 6 | lo_action->set_http_method( /iwbep/if_mgw_med_odata_types=>gcs_med_http_methods-put ). 7 | 8 | lo_action = model->get_action( 'CloseProductTransferHandlingUnit' ). "#EC NOTEXT 9 | lo_action->set_http_method( /iwbep/if_mgw_med_odata_types=>gcs_med_http_methods-put ). 10 | 11 | lo_action = model->get_action( 'SubmitProductTransfer' ). "#EC NOTEXT 12 | lo_action->set_http_method( /iwbep/if_mgw_med_odata_types=>gcs_med_http_methods-put ). 13 | 14 | lo_action = model->get_action( 'OpenProductTransferHandlingUnit' ). "#EC NOTEXT 15 | lo_action->set_http_method( /iwbep/if_mgw_med_odata_types=>gcs_med_http_methods-put ). 16 | 17 | me->modify_product_transfer( ). 18 | * me->modify_settings( ). 19 | """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""$"$\SE:(1) Class CL_RTST_TRNSFR_PRODUCT_MPC_EXT, Method DEFINE, End A 20 | *$*$-Start: (1)---------------------------------------------------------------------------------$*$* 21 | ENHANCEMENT 1 ZRTST_TRNSFR_PROD_MPC_DEFINE. "active version 22 | lo_action = model->get_action( iv_action_name = 'SubmitProductTransfer' ). 23 | DATA(lo_param) = lo_action->CREATE_INPUT_PARAMETER( IV_PARAMETER_NAME = 'AppType' IV_ABAP_FIELDNAME = 'APP_TYPE' ). 24 | lo_param->/IWBEP/IF_MGW_ODATA_PROPERTY~set_type_edm_string( ). 25 | lo_param->/IWBEP/IF_MGW_ODATA_PROPERTY~set_maxlength( iv_max_length = 10 ). "#EC NOTEXT 26 | lo_param->/IWBEP/IF_MGW_ODATA_PROPERTY~set_nullable( iv_nullable = abap_true ). 27 | ENDENHANCEMENT. 28 | *$*$-End: (1)---------------------------------------------------------------------------------$*$* 29 | endmethod. -------------------------------------------------------------------------------- /src/new/get-MB52-data.abap: -------------------------------------------------------------------------------- 1 | FUNCTION zrt_f_get_mb52_data. 2 | *"---------------------------------------------------------------------- 3 | *"*"Local Interface: 4 | *" IMPORTING 5 | *" REFERENCE(ITR_WERKS) TYPE TRG_CHAR4 6 | *" REFERENCE(ITR_LGORT) TYPE TRG_CHAR4 7 | *" REFERENCE(ITR_MATKL) TYPE WDFR_MATKL_RANG_TYP 8 | *" EXPORTING 9 | *" REFERENCE(EV_LABST) TYPE MARD-LABST 10 | *" REFERENCE(EV_SALK3) TYPE SALK3 11 | *" REFERENCE(ET_LIST) TYPE ZRTT_MB52 12 | *"---------------------------------------------------------------------- 13 | 14 | DATA lo_result TYPE REF TO data. 15 | FIELD-SYMBOLS TYPE ANY TABLE. 16 | 17 | cl_salv_bs_runtime_info=>set( 18 | display = abap_false 19 | metadata = abap_false 20 | data = abap_true ). 21 | 22 | SUBMIT rm07mlbs 23 | WITH werks IN itr_werks 24 | WITH lgort IN itr_lgort 25 | WITH matkla IN itr_matkl 26 | WITH nozero EQ abap_true 27 | WITH novalues EQ abap_false 28 | WITH pa_hsq EQ abap_false 29 | WITH pa_flt EQ abap_true 30 | AND RETURN. 31 | 32 | TRY. 33 | cl_salv_bs_runtime_info=>get_data_ref( 34 | IMPORTING 35 | r_data = lo_result ). 36 | CATCH cx_salv_bs_sc_runtime_info . 37 | ENDTRY. 38 | ASSIGN lo_result->* TO . 39 | IF IS NOT ASSIGNED. 40 | RETURN. 41 | ENDIF. 42 | LOOP AT ASSIGNING FIELD-SYMBOL(). 43 | APPEND INITIAL LINE TO et_list ASSIGNING FIELD-SYMBOL(). 44 | MOVE-CORRESPONDING to . 45 | ASSIGN COMPONENT 'LABST' OF STRUCTURE TO FIELD-SYMBOL(). 46 | IF sy-subrc = 0. 47 | ADD TO ev_labst. 48 | ENDIF. 49 | ASSIGN COMPONENT 'WLABS' OF STRUCTURE TO . 50 | IF sy-subrc = 0. 51 | ADD TO ev_salk3. 52 | ENDIF. 53 | ENDLOOP. 54 | 55 | ENDFUNCTION. -------------------------------------------------------------------------------- /src/new/find-structures-having-certain-types-of-fields.abap: -------------------------------------------------------------------------------- 1 | DATA: gv_exclude_slash TYPE abap_bool, " Exclude structures starting with '/' 2 | gt_matching_structures TYPE TABLE OF dd02l, " Matching Structures 3 | gs_table TYPE dd02l, 4 | gtr_tabname TYPE RANGE OF dd03l-tabname. 5 | 6 | PARAMETERS: excslash AS CHECKBOX DEFAULT abap_true. 7 | 8 | INITIALIZATION. 9 | %_excslash_%_app_%-text = 'Exclude struc. starting with /'. 10 | 11 | START-OF-SELECTION. 12 | 13 | gv_exclude_slash = excslash. 14 | 15 | IF excslash = abap_true. 16 | DATA ls_tabname LIKE LINE OF gtr_tabname. 17 | ls_tabname-sign = 'I'. 18 | ls_tabname-option = 'NP'. 19 | ls_tabname-low = '/*'. 20 | APPEND ls_tabname TO gtr_tabname. 21 | ENDIF. 22 | 23 | SELECT * FROM dd02l 24 | INTO TABLE gt_matching_structures 25 | WHERE tabclass = 'INTTAB' 26 | AND tabname IN ( SELECT tabname FROM dd03l WHERE datatype = 'DATS' AND tabname IN gtr_tabname ) 27 | AND tabname IN ( SELECT tabname FROM dd03l WHERE datatype = 'TIMS' AND tabname IN gtr_tabname ). 28 | 29 | FORMAT COLOR COL_HEADING. 30 | WRITE: 1(30) 'STRUCTURE', 35 'TABLE TYPE'. 31 | FORMAT COLOR COL_NORMAL. 32 | 33 | DATA: lt_fields TYPE TABLE OF dd03l, 34 | lv_tabtype TYPE c LENGTH 30. 35 | 36 | LOOP AT gt_matching_structures INTO gs_table. 37 | 38 | CLEAR lt_fields. 39 | SELECT * FROM dd03l 40 | INTO TABLE lt_fields 41 | WHERE tabname = gs_table-tabname. 42 | CHECK lines( lt_fields ) = 2. 43 | 44 | SELECT SINGLE typename 45 | FROM dd40l 46 | INTO lv_tabtype 47 | WHERE rowtype = gs_table-tabname. 48 | 49 | WRITE: / gs_table-tabname UNDER 'STRUCTURE', 50 | lv_tabtype UNDER 'TABLE TYPE'. 51 | 52 | CLEAR lv_tabtype. 53 | 54 | ENDLOOP. 55 | 56 | IF lines( gt_matching_structures ) = 0. 57 | WRITE: 'No matching structures found.'. 58 | ENDIF. -------------------------------------------------------------------------------- /src/new/amdp-table-function.txt: -------------------------------------------------------------------------------- 1 | class zcl_amdp_posaggattrib definition 2 | public 3 | final 4 | create public . 5 | 6 | public section. 7 | 8 | interfaces IF_AMDP_MARKER_HDB . 9 | 10 | class-methods GET_ATTR 11 | for table function ZTF_POSAGGATTRIB . 12 | PROTECTED SECTION. 13 | PRIVATE SECTION. 14 | ENDCLASS. 15 | 16 | 17 | 18 | CLASS zcl_amdp_posaggattrib IMPLEMENTATION. 19 | 20 | 21 | METHOD GET_ATTR BY DATABASE FUNCTION FOR HDB LANGUAGE SQLSCRIPT 22 | OPTIONS READ-ONLY . 23 | 24 | return select "SAPClient" as SAPCLIENT, 25 | "RetailStoreID" as RETAILSTOREID, 26 | "BusinessDayDate" as BUSINESSDAYDATE, 27 | "TransactionIndex" as TRANSACTIONINDEX, 28 | "TransactionNumber" as TRANSACTIONNUMBER, 29 | "ItemID" as ITEMID, 30 | "Article" as ARTICLE 31 | from "PUBLIC"."SAPBW::ECV_POSAGGREGATEDATTRIBUTE" 32 | where "SAPClient" = :p_client; 33 | 34 | ENDMETHOD. 35 | 36 | 37 | ENDCLASS. 38 | 39 | ************************************************************************* 40 | 41 | @AccessControl.authorizationCheck: #CHECK 42 | @EndUserText.label: 'POS aggregated attribute' 43 | define table function ZTF_POSAGGATTRIB 44 | with parameters @Environment.systemField: #CLIENT 45 | p_client:abap.clnt, 46 | p_store:char10, 47 | p_date:datum 48 | returns { 49 | SAPClient: mandt; 50 | RETAILSTOREID: CHAR10; 51 | BUSINESSDAYDATE: DATUM; 52 | TRANSACTIONINDEX: INT4; 53 | TRANSACTIONNUMBER: CHAR20; 54 | ITEMID: CHAR18; 55 | ARTICLE: CHAR18; 56 | } 57 | 58 | implemented by method zcl_amdp_posaggattrib=>GET_ATTR 59 | 60 | *************************************************************************** 61 | 62 | SELECT * FROM ztf_posaggattrib( p_store = '0000001119', p_date = '20220211' ) 63 | INTO TABLE @DATA(t_attr) UP TO 100 ROWS 64 | ##db_feature_mode[amdp_table_function]. -------------------------------------------------------------------------------- /src/new/display-image.abap: -------------------------------------------------------------------------------- 1 | METHOD display_image. 2 | 3 | TYPES pic_line(1022) TYPE x. 4 | DATA pic_tab TYPE TABLE OF pic_line. 5 | 6 | DATA l_alignment TYPE i. 7 | 8 | DATA lv_image TYPE xstring. 9 | 10 | CALL FUNCTION 'SCMS_BASE64_DECODE_STR' 11 | EXPORTING 12 | input = image_base64 13 | IMPORTING 14 | output = lv_image 15 | EXCEPTIONS 16 | failed = 1 17 | OTHERS = 2. 18 | 19 | CALL FUNCTION 'SCMS_XSTRING_TO_BINARY' 20 | EXPORTING 21 | buffer = lv_image 22 | TABLES 23 | binary_tab = pic_tab. 24 | 25 | CALL FUNCTION 'DP_CREATE_URL' 26 | EXPORTING 27 | type = 'IMAGE' 28 | subtype = 'GIF' 29 | TABLES 30 | data = pic_tab 31 | CHANGING 32 | url = url. 33 | 34 | CALL SCREEN 1001 STARTING AT 5 5. 35 | 36 | ENDMETHOD. 37 | 38 | MODULE status_1001 OUTPUT. 39 | DATA l_alignment TYPE i. 40 | 41 | CREATE OBJECT: container1 EXPORTING container_name = 'PICTURE1', 42 | pict1 EXPORTING parent = container1. 43 | 44 | l_alignment = cl_gui_control=>align_at_left + 45 | cl_gui_control=>align_at_right + 46 | cl_gui_control=>align_at_top + 47 | cl_gui_control=>align_at_bottom. 48 | 49 | CALL METHOD pict1->set_alignment 50 | EXPORTING 51 | alignment = l_alignment. 52 | 53 | CALL METHOD pict1->set_3d_border 54 | EXPORTING 55 | border = 1. 56 | 57 | evt_tab_line-eventid = cl_gui_picture=>eventid_picture_click. 58 | evt_tab_line-appl_event = ' '. " System Event! 59 | APPEND evt_tab_line TO evt_tab. 60 | 61 | CALL METHOD pict1->set_registered_events 62 | EXPORTING 63 | events = evt_tab. 64 | 65 | CALL METHOD pict1->load_picture_from_url 66 | EXPORTING 67 | url = url 68 | EXCEPTIONS 69 | OTHERS = 4. 70 | 71 | pict1->set_display_mode( 72 | EXPORTING 73 | display_mode = cl_gui_picture=>display_mode_fit 74 | EXCEPTIONS 75 | error = 1 ). 76 | 77 | SET PF-STATUS 'SCREEN_1001'. 78 | ENDMODULE. -------------------------------------------------------------------------------- /src/new/ZCL_HTTP/sample-proxy-form.abap: -------------------------------------------------------------------------------- 1 | FUNCTION z_cdc_get_token. 2 | *"---------------------------------------------------------------------- 3 | *"*"Local Interface: 4 | *" EXPORTING 5 | *" REFERENCE(TOKEN) TYPE STRING 6 | *" REFERENCE(ET_RETURN) TYPE BAPIRET2_TAB 7 | *"---------------------------------------------------------------------- 8 | 9 | DATA: lv_apikey TYPE string, 10 | lv_userkey TYPE string, 11 | lv_secret TYPE string. 12 | 13 | SELECT SINGLE low FROM tvarvc INTO lv_apikey WHERE name = 'Z_CDC_APIKEY'. 14 | SELECT SINGLE low FROM tvarvc INTO lv_userkey WHERE name = 'Z_CDC_USERKEY'. 15 | SELECT SINGLE low FROM tvarvc INTO lv_secret WHERE name = 'Z_CDC_SECRET'. 16 | 17 | TRY. 18 | DATA(lv_response) = zcl_http=>request( ip_host = 'socialize.eu1.gigya.com' 19 | ip_endpoint = '/socialize.getToken' 20 | ip_proxy_host = c_proxy_host 21 | ip_proxy_port = c_proxy_port 22 | it_form = VALUE #( ( key = 'grant_type' value = 'none' ) 23 | ( key = 'client_id' value = lv_apikey ) 24 | ( key = 'userKey' value = lv_userkey ) 25 | ( key = 'secret' value = lv_secret ) ) ). 26 | CATCH zcx_http INTO DATA(lr_http_error). 27 | et_return = lr_http_error->get_msg( ). 28 | RETURN. 29 | ENDTRY. 30 | 31 | DATA(lr_response) = /ui2/cl_json=>generate( json = lv_response ). 32 | /ui2/cl_data_access=>create( ir_data = lr_response iv_component = `ACCESS_TOKEN`)->value( IMPORTING ev_data = token ). 33 | IF token IS INITIAL. 34 | DATA lv_msg TYPE string. 35 | /ui2/cl_data_access=>create( ir_data = lr_response iv_component = `ERRORDETAILS`)->value( IMPORTING ev_data = lv_msg ). 36 | DATA(ls_bapiret2) = zcl_string=>to_bapiret2( lv_msg ). 37 | APPEND ls_bapiret2 TO et_return. 38 | ENDIF. 39 | 40 | ENDFUNCTION. -------------------------------------------------------------------------------- /src/new/next-working-day-starting-next-monday.abap: -------------------------------------------------------------------------------- 1 | METHOD calc_payment_date. 2 | 3 | DATA: lv_wotnr TYPE p, 4 | lv_holiday_found TYPE scal-indicator, 5 | lt_thol TYPE TABLE OF thol. 6 | 7 | CALL FUNCTION 'DAY_IN_WEEK' 8 | EXPORTING 9 | datum = ip_approve_date 10 | IMPORTING 11 | wotnr = lv_wotnr. 12 | 13 | DATA(lv_payment_date) = CONV d( ip_approve_date + ( 8 - lv_wotnr ) ). 14 | 15 | DO. 16 | CALL FUNCTION 'DAY_IN_WEEK' 17 | EXPORTING 18 | datum = lv_payment_date 19 | IMPORTING 20 | wotnr = lv_wotnr. 21 | IF lv_wotnr = 6 OR lv_wotnr = 7. 22 | ADD 1 TO lv_payment_date. 23 | ELSE. 24 | CLEAR: lv_holiday_found, lt_thol. 25 | CALL FUNCTION 'HOLIDAY_CHECK_AND_GET_INFO' 26 | EXPORTING 27 | date = lv_payment_date 28 | holiday_calendar_id = 'TR' 29 | with_holiday_attributes = 'X' 30 | IMPORTING 31 | holiday_found = lv_holiday_found 32 | TABLES 33 | holiday_attributes = lt_thol 34 | EXCEPTIONS 35 | calendar_buffer_not_loadable = 1 36 | date_after_range = 2 37 | date_before_range = 3 38 | date_invalid = 4 39 | holiday_calendar_id_missing = 5 40 | holiday_calendar_not_found = 6 41 | OTHERS = 7. 42 | CASE lv_holiday_found. 43 | WHEN 'X'. 44 | READ TABLE lt_thol ASSIGNING FIELD-SYMBOL() INDEX 1. 45 | CASE sy-subrc. 46 | WHEN 0. 47 | CASE -klass. 48 | WHEN '2'. "yarım gün 49 | EXIT. 50 | WHEN OTHERS. 51 | ADD 1 TO lv_payment_date. 52 | ENDCASE. 53 | WHEN OTHERS. 54 | ADD 1 TO lv_payment_date. 55 | ENDCASE. 56 | WHEN OTHERS. 57 | EXIT. 58 | ENDCASE. 59 | ENDIF. 60 | ENDDO. 61 | 62 | rv_payment_date = lv_payment_date. 63 | 64 | ENDMETHOD. -------------------------------------------------------------------------------- /src/new/update-idoc-status.abap: -------------------------------------------------------------------------------- 1 | FORM update_idoc_status . 2 | TYPES: BEGIN OF t_idoc, 3 | docnum TYPE edidc-docnum, 4 | END OF t_idoc. 5 | 6 | DATA: lt_kasa_icmal TYPE TABLE OF zfit_possumup, 7 | lt_idoc TYPE TABLE OF t_idoc, 8 | lt_idoc_status TYPE STANDARD TABLE OF bdidocstat, 9 | ls_kasa_icmal LIKE LINE OF lt_kasa_icmal, 10 | ls_idoc TYPE t_idoc, 11 | ls_idoc_status LIKE LINE OF lt_idoc_status, 12 | lv_status TYPE edidc-status, 13 | lv_is_updated TYPE xfeld. 14 | 15 | LOOP AT gt_rows INTO gs_row. 16 | READ TABLE gt_data INTO gs_data INDEX gs_row-index. 17 | IF sy-subrc = 0. 18 | SELECT docnum FROM zfit_possumup APPENDING CORRESPONDING FIELDS OF TABLE lt_kasa_icmal "#EC CI_SEL_NESTED 19 | WHERE budat = gs_data-budat 20 | AND prctr = gs_data-prctr 21 | AND paytp = gs_data-paytp. 22 | ENDIF. 23 | ENDLOOP. 24 | 25 | LOOP AT lt_kasa_icmal INTO ls_kasa_icmal. 26 | ls_idoc-docnum = ls_kasa_icmal-docnum. 27 | COLLECT ls_idoc INTO lt_idoc. 28 | ENDLOOP. 29 | 30 | DELETE lt_idoc WHERE docnum = space. 31 | 32 | LOOP AT lt_idoc INTO ls_idoc. 33 | SELECT SINGLE status FROM edidc INTO lv_status "#EC CI_SEL_NESTED 34 | WHERE docnum = ls_idoc-docnum. 35 | IF sy-subrc = 0 AND lv_status = '51'. 36 | ls_idoc_status-docnum = ls_idoc-docnum. 37 | ls_idoc_status-status = '53'. 38 | APPEND ls_idoc_status TO lt_idoc_status. 39 | CALL FUNCTION 'IDOC_STATUS_WRITE_TO_DATABASE' 40 | EXPORTING 41 | idoc_number = ls_idoc-docnum 42 | TABLES 43 | idoc_status = lt_idoc_status 44 | EXCEPTIONS 45 | idoc_foreign_lock = 1 46 | idoc_not_found = 2 47 | idoc_status_records_empty = 3 48 | idoc_status_invalid = 4 49 | db_error = 5 50 | OTHERS = 6. 51 | IF sy-subrc = 0. 52 | lv_is_updated = 'X'. 53 | ENDIF. 54 | ENDIF. 55 | ENDLOOP. 56 | 57 | IF lv_is_updated = 'X'. 58 | COMMIT WORK. 59 | ENDIF. 60 | ENDFORM. -------------------------------------------------------------------------------- /src/new/search-help-exit-sample.abap: -------------------------------------------------------------------------------- 1 | FUNCTION z_rt_wwgnb_shexit. 2 | *"---------------------------------------------------------------------- 3 | *"*"Local Interface: 4 | *" TABLES 5 | *" SHLP_TAB TYPE SHLP_DESCT 6 | *" RECORD_TAB STRUCTURE SEAHLPRES 7 | *" CHANGING 8 | *" VALUE(SHLP) TYPE SHLP_DESCR 9 | *" VALUE(CALLCONTROL) LIKE DDSHF4CTRL STRUCTURE DDSHF4CTRL 10 | *"---------------------------------------------------------------------- 11 | 12 | BREAK-POINT ID zdevrt00002. 13 | 14 | DATA: BEGIN OF lt_rec OCCURS 0, 15 | class TYPE m_wwgna-class, 16 | kschl TYPE m_wwgna-kschl, 17 | kschg TYPE m_wwgna-kschg, 18 | spras TYPE m_wwgna-spras, 19 | klpos TYPE m_wwgna-klpos, 20 | klart TYPE m_wwgna-klart, 21 | clint TYPE m_wwgna-clint, 22 | wwskz TYPE m_wwgna-wwskz, 23 | END OF lt_rec. 24 | 25 | IF callcontrol-step = 'DISP'. 26 | * LOOP AT record_tab. 27 | * lt_rec = record_tab-string. 28 | * APPEND lt_rec. 29 | * ENDLOOP. 30 | DELETE ADJACENT DUPLICATES FROM record_tab COMPARING ALL FIELDS. 31 | CALL FUNCTION 'F4UT_PARAMETER_VALUE_GET' 32 | EXPORTING 33 | parameter = 'CLASS' 34 | fieldname = 'CLASS' 35 | TABLES 36 | shlp_tab = shlp_tab 37 | record_tab = record_tab 38 | results_tab = lt_rec 39 | CHANGING 40 | shlp = shlp 41 | callcontrol = callcontrol. 42 | 43 | CALL FUNCTION 'F4UT_PARAMETER_VALUE_GET' 44 | EXPORTING 45 | parameter = 'CLINT' 46 | fieldname = 'CLINT' 47 | TABLES 48 | shlp_tab = shlp_tab 49 | record_tab = record_tab 50 | results_tab = lt_rec 51 | CHANGING 52 | shlp = shlp 53 | callcontrol = callcontrol. 54 | 55 | 56 | 57 | SELECT wwgna~clint, 58 | kssk~objek FROM zrt_v_m_wwgna AS wwgna 59 | INNER JOIN kssk ON kssk~clint EQ wwgna~clint 60 | INTO TABLE @DATA(lt_wwgna). 61 | 62 | LOOP AT lt_rec. 63 | READ TABLE lt_wwgna WITH KEY objek = lt_rec-clint TRANSPORTING NO FIELDS. 64 | IF sy-subrc EQ 4. 65 | DELETE record_tab WHERE string+3(10) = lt_rec-clint. 66 | ENDIF. 67 | ENDLOOP. 68 | 69 | 70 | 71 | * BREAK-POINT. 72 | ENDIF. 73 | 74 | 75 | ENDFUNCTION. -------------------------------------------------------------------------------- /src/new/build-rfc-structure.abap: -------------------------------------------------------------------------------- 1 | METHOD get_name. 2 | 3 | TYPES: BEGIN OF lst_plant, 4 | plant TYPE werks_d, 5 | END OF lst_plant, 6 | ltt_plant TYPE STANDARD TABLE OF lst_plant WITH DEFAULT KEY. 7 | 8 | DATA: lt_fields TYPE STANDARD TABLE OF rfc_fields, 9 | lt_comp TYPE cl_abap_structdescr=>component_table, 10 | lr_plant_data TYPE REF TO data. 11 | 12 | FIELD-SYMBOLS TYPE INDEX TABLE. 13 | 14 | CALL FUNCTION 'RFC_GET_STRUCTURE_DEFINITION' DESTINATION lcl_plant=>c_destination 15 | EXPORTING 16 | tabname = 'T001W' 17 | TABLES 18 | fields = lt_fields 19 | EXCEPTIONS 20 | table_not_active = 1 21 | OTHERS = 2. 22 | 23 | LOOP AT lt_fields ASSIGNING FIELD-SYMBOL(). 24 | APPEND INITIAL LINE TO lt_comp ASSIGNING FIELD-SYMBOL(). 25 | -name = -fieldname. 26 | CASE -exid. 27 | WHEN 'I'. -type = cl_abap_elemdescr=>get_i( ). 28 | WHEN 'D'. -type = cl_abap_elemdescr=>get_d( ). 29 | WHEN 'T'. -type = cl_abap_elemdescr=>get_t( ). 30 | WHEN 'C'. -type = cl_abap_elemdescr=>get_c( CONV i( -intlength ) ). 31 | WHEN 'N'. -type = cl_abap_elemdescr=>get_n( CONV i( -intlength ) ). 32 | WHEN 'P'. -type = cl_abap_elemdescr=>get_p( p_length = CONV i( -intlength ) p_decimals = CONV i( -decimals ) ). 33 | ENDCASE. 34 | ENDLOOP. 35 | 36 | DATA(lo_structdescr) = cl_abap_structdescr=>create( lt_comp ). 37 | DATA(lo_tabledescr) = cl_abap_tabledescr=>create( lo_structdescr ). 38 | CREATE DATA lr_plant_data TYPE HANDLE lo_tabledescr. 39 | ASSIGN lr_plant_data->* TO . 40 | 41 | CALL FUNCTION 'ISIDE_CE_GET_PLANT_TXT' DESTINATION lcl_plant=>c_destination 42 | EXPORTING 43 | it_plant = VALUE ltt_plant( ( plant = iv_werks ) ) 44 | IMPORTING 45 | et_plant_data = . 46 | 47 | READ TABLE ASSIGNING FIELD-SYMBOL() INDEX 1. 48 | IF IS ASSIGNED. 49 | ASSIGN COMPONENT 'NAME1' OF STRUCTURE to FIELD-SYMBOL(). 50 | IF IS ASSIGNED. 51 | rv_name1 = . 52 | ENDIF. 53 | ENDIF. 54 | 55 | ENDMETHOD. -------------------------------------------------------------------------------- /src/new/abap2xlsx-mail.attachment.abap: -------------------------------------------------------------------------------- 1 | DATA lv_email TYPE string. 2 | 3 | CALL FUNCTION 'POPUP_GET_STRING' 4 | EXPORTING 5 | label = 'E-Posta' 6 | IMPORTING 7 | value = lv_email. 8 | 9 | DATA: lo_excel TYPE REF TO zcl_excel, 10 | lo_worksheet TYPE REF TO zcl_excel_worksheet, 11 | lo_column TYPE REF TO zcl_excel_column, 12 | lo_row TYPE REF TO zcl_excel_row, 13 | lv_line TYPE i. 14 | 15 | CREATE OBJECT lo_excel. 16 | lo_worksheet = lo_excel->get_active_worksheet( ). 17 | 18 | LOOP AT gt_out INTO DATA(ls_out). 19 | 20 | ADD 1 TO lv_line. 21 | lo_worksheet->set_cell( ip_row = lv_line ip_column = 'A' ip_value = ls_out-matnr ). 22 | 23 | ENDLOOP. 24 | 25 | DATA: cl_writer TYPE REF TO zif_excel_writer, 26 | xdata TYPE xstring, 27 | lt_rawdata TYPE STANDARD TABLE OF solix, 28 | lv_size TYPE i. 29 | 30 | CREATE OBJECT cl_writer TYPE zcl_excel_writer_2007. 31 | xdata = cl_writer->write_file( lo_excel ). 32 | 33 | CALL METHOD cl_bcs_convert=>xstring_to_solix( 34 | EXPORTING 35 | iv_xstring = xdata 36 | RECEIVING 37 | et_solix = lt_rawdata ). 38 | 39 | " E-posta Gönderimi 40 | DATA: lo_send_request TYPE REF TO cl_bcs, 41 | lo_document TYPE REF TO cl_document_bcs, 42 | lo_recipient TYPE REF TO if_recipient_bcs. 43 | 44 | TRY. 45 | lo_send_request = cl_bcs=>create_persistent( ). 46 | 47 | " E-posta Gövdesi 48 | lo_document = cl_document_bcs=>create_document( 49 | i_type = 'RAW' 50 | i_text = VALUE soli_tab( ( line = 'Sealed Bag listesi ektedir.' ) ) 51 | i_subject = 'Sealed Bag' ). 52 | 53 | lo_document->add_attachment( 54 | i_attachment_type = 'BIN' 55 | i_attachment_subject = 'Sealed Bag' 56 | i_att_content_hex = lt_rawdata 57 | i_attachment_header = value #( ( line = '&SO_FILENAME=SealedBag.xlsx' ) ) ). 58 | 59 | lo_send_request->set_document( lo_document ). 60 | 61 | " Alıcı Ekle 62 | lo_recipient = cl_cam_address_bcs=>create_internet_address( CONV adr6-smtp_addr( lv_email ) ). 63 | lo_send_request->add_recipient( lo_recipient ). 64 | 65 | " E-posta Gönder 66 | lo_send_request->send( i_with_error_screen = abap_true ). 67 | COMMIT WORK. 68 | MESSAGE 'E-posta gönderildi.' TYPE 'S'. 69 | 70 | CATCH cx_bcs. 71 | MESSAGE 'E-posta gönderiminde hata.' TYPE 'E'. 72 | ENDTRY. -------------------------------------------------------------------------------- /src/new/add-property-to-gateway-entity.abap: -------------------------------------------------------------------------------- 1 | data lo_entity_type type ref to /iwbep/if_mgw_odata_entity_typ. 2 | data lo_property type ref to /iwbep/if_mgw_odata_property. 3 | 4 | * entity PostDocumentItem 5 | lo_entity_type = model->get_entity_type( iv_entity_name = cl_rtst_rcv_product_mpc=>gc_postdocumentitem ). 6 | 7 | * add properties 8 | lo_property = lo_entity_type->create_property( iv_property_name = 'ExpectedQuantity' iv_abap_fieldname = 'EXPECTED_QUANTITY' ). "#EC NOTEXT 9 | lo_property->set_type_edm_decimal( ). 10 | lo_property->set_precison( iv_precision = 3 ). "#EC NOTEXT 11 | lo_property->set_maxlength( iv_max_length = 13 ). "#EC NOTEXT 12 | lo_property->set_creatable( abap_true ). 13 | lo_property->set_updatable( abap_false ). 14 | lo_property->set_sortable( abap_false ). 15 | lo_property->set_nullable( abap_false ). 16 | lo_property->set_filterable( abap_false ). 17 | 18 | lo_property = lo_entity_type->create_property( iv_property_name = 'ExpectedQuantityUnitCode' iv_abap_fieldname = 'EXPECTED_QUANTITY_UNIT_CODE' ). "#EC NOTEXT 19 | lo_property->set_type_edm_string( ). 20 | lo_property->set_maxlength( iv_max_length = 3 ). "#EC NOTEXT 21 | lo_property->set_conversion_exit( 'CUNIT' ). "#EC NOTEXT 22 | lo_property->set_semantic( 'unit-of-measure' ). "#EC NOTEXT 23 | lo_property->set_creatable( abap_true ). 24 | lo_property->set_updatable( abap_false ). 25 | lo_property->set_sortable( abap_false ). 26 | lo_property->set_nullable( abap_false ). 27 | lo_property->set_filterable( abap_false ). 28 | 29 | lo_property = lo_entity_type->create_property( iv_property_name = 'ExpectedQuantityUnitName' iv_abap_fieldname = 'EXPECTED_QUANTITY_UNIT_NAME' ). "#EC NOTEXT 30 | lo_property->set_type_edm_string( ). 31 | lo_property->set_maxlength( iv_max_length = 10 ). "#EC NOTEXT 32 | lo_property->set_creatable( abap_true ). 33 | lo_property->set_updatable( abap_false ). 34 | lo_property->set_sortable( abap_false ). 35 | lo_property->set_nullable( abap_false ). 36 | lo_property->set_filterable( abap_false ). 37 | 38 | lo_property = lo_entity_type->create_property( iv_property_name = 'ExpectedQuantityBase' iv_abap_fieldname = 'EXPECTED_QUANTITY_BASE' ). "#EC NOTEXT 39 | lo_property->set_type_edm_decimal( ). 40 | lo_property->set_precison( iv_precision = 3 ). "#EC NOTEXT 41 | lo_property->set_maxlength( iv_max_length = 13 ). "#EC NOTEXT 42 | lo_property->set_creatable( abap_false ). 43 | lo_property->set_updatable( abap_true ). 44 | lo_property->set_sortable( abap_false ). 45 | lo_property->set_nullable( abap_false ). 46 | lo_property->set_filterable( abap_false ). -------------------------------------------------------------------------------- /src/new/maintenance-event-05-before-save.abap: -------------------------------------------------------------------------------- 1 | FORM before_save. 2 | 3 | TYPES: BEGIN OF lst_channel, 4 | key TYPE zoaa_rsicalcg-channel, 5 | END OF lst_channel. 6 | DATA: BEGIN OF ls_total. 7 | INCLUDE STRUCTURE zoaa_rsicalcg. 8 | INCLUDE STRUCTURE vimtbflags. 9 | DATA: END OF ls_total. 10 | DATA: lt_calc TYPE TABLE OF zoaa_rsicalcg, 11 | ls_calc TYPE zoaa_rsicalcg, 12 | ls_oos TYPE zoaa_rsicalcg, 13 | ls_lim TYPE zoaa_rsicalcg, 14 | ls_ons TYPE zoaa_rsicalcg, 15 | lt_channel TYPE TABLE OF lst_channel, 16 | ls_channel TYPE lst_channel. 17 | FIELD-SYMBOLS: TYPE x, "Hexadecimal value of from value 18 | TYPE x. "Hexadecimal value of to value 19 | 20 | LOOP AT total. 21 | IF <> geloescht AND 22 | <> update_geloescht AND 23 | <> neuer_geloescht. 24 | ASSIGN total TO CASTING. 25 | ASSIGN ls_calc TO CASTING. 26 | = . 27 | APPEND ls_calc TO lt_calc. 28 | ls_channel-key = ls_calc-channel. 29 | COLLECT ls_channel INTO lt_channel. 30 | ENDIF. 31 | ENDLOOP. 32 | 33 | LOOP AT lt_channel INTO ls_channel. 34 | CLEAR: ls_ons, ls_lim, ls_oos. 35 | READ TABLE lt_calc INTO ls_oos WITH KEY channel = ls_channel-key 36 | rough_stock_value = 'out_of_stock'. 37 | READ TABLE lt_calc INTO ls_lim WITH KEY channel = ls_channel-key 38 | rough_stock_value = 'limited'. 39 | READ TABLE lt_calc INTO ls_ons WITH KEY channel = ls_channel-key 40 | rough_stock_value = 'on_stock'. 41 | IF NOT ( ls_oos-quantity_high > 0 AND ls_lim-quantity_high > 0 AND ls_ons-quantity_high > 0 ). 42 | MESSAGE ID 'ZOAA' TYPE 'S' NUMBER '030' WITH ls_channel-key DISPLAY LIKE 'E'. 43 | vim_abort_saving = 'X'. 44 | sy-subrc = 4. 45 | RETURN. 46 | ENDIF. 47 | IF NOT ( ls_ons-quantity_high > ls_ons-quantity_low AND 48 | ls_lim-quantity_high > ls_lim-quantity_low AND 49 | ls_oos-quantity_high > ls_oos-quantity_low ). 50 | MESSAGE ID 'ZOAA' TYPE 'S' NUMBER '030' WITH ls_channel-key DISPLAY LIKE 'E'. 51 | vim_abort_saving = 'X'. 52 | sy-subrc = 4. 53 | RETURN. 54 | ENDIF. 55 | IF NOT ( ( ls_ons-quantity_low - ls_lim-quantity_high = 1 ) AND 56 | ( ls_lim-quantity_low - ls_oos-quantity_high = 1 ) ). 57 | MESSAGE ID 'ZOAA' TYPE 'S' NUMBER '030' WITH ls_channel-key DISPLAY LIKE 'E'. 58 | vim_abort_saving = 'X'. 59 | sy-subrc = 4. 60 | RETURN. 61 | ENDIF. 62 | ENDLOOP. 63 | 64 | sy-subrc = 0. 65 | 66 | ENDFORM. -------------------------------------------------------------------------------- /src/new/ZCL_HTTP/sample-basic-auth-json-payload.abap: -------------------------------------------------------------------------------- 1 | FUNCTION z_get_vendor_performance . 2 | *"---------------------------------------------------------------------- 3 | *"*"Local Interface: 4 | *" IMPORTING 5 | *" VALUE(IP_MAGAZAKODU) TYPE CHAR4 6 | *" VALUE(IP_TARIH) TYPE DATUM 7 | *" VALUE(IP_CUSTOMFIELD1) TYPE DSTRING OPTIONAL 8 | *" VALUE(IP_CUSTOMFIELD2) TYPE DSTRING OPTIONAL 9 | *" VALUE(IP_CUSTOMFIELD3) TYPE DSTRING OPTIONAL 10 | *" EXPORTING 11 | *" VALUE(ET_VENDOR_PERFORMANCE) TYPE ZTT_VENDOR_PERF_RFC_RESP 12 | *"---------------------------------------------------------------------- 13 | 14 | TYPES: BEGIN OF input, 15 | magazakodu TYPE string, 16 | tarih TYPE string, 17 | customfield1 TYPE string, 18 | customfield2 TYPE string, 19 | customfield3 TYPE string, 20 | END OF input, 21 | BEGIN OF json, 22 | input TYPE input, 23 | END OF json. 24 | 25 | DATA: lv_body TYPE string, 26 | lv_response TYPE string, 27 | lv_json TYPE json. 28 | 29 | lv_json-input-magazakodu = ip_magazakodu. 30 | lv_json-input-tarih = ip_tarih(4) && '-' && ip_tarih+4(2) && '-' && ip_tarih+6(2). 31 | lv_json-input-customfield1 = ip_customfield1. 32 | lv_json-input-customfield2 = ip_customfield2. 33 | lv_json-input-customfield3 = ip_customfield3. 34 | 35 | lv_body = /ui2/cl_json=>serialize( data = lv_json 36 | compress = abap_false 37 | pretty_name = /ui2/cl_json=>pretty_mode-none 38 | * name_mappings = lt_map 39 | ). 40 | 41 | TRY. 42 | lv_response = zcl_http=>request( 43 | ip_protocol = 'http' 44 | ip_host = 'nn.nnn.n.nnn:nnnnn' 45 | ip_endpoint = '/RESTAdapter/bw/performans/info' 46 | ip_username = 'USERNAME' 47 | ip_password = 'PASSWORD' 48 | ip_body = lv_body ). 49 | CATCH zcx_http INTO DATA(lx_http). 50 | ENDTRY. 51 | 52 | TYPES: BEGIN OF pers_list, 53 | item TYPE STANDARD TABLE OF zst_vendor_perf_item WITH DEFAULT KEY, 54 | END OF pers_list, 55 | BEGIN OF resp_item. 56 | INCLUDE TYPE zst_vendor_perf_response. 57 | TYPES: personelliste TYPE pers_list, 58 | END OF resp_item, 59 | BEGIN OF response, 60 | 61 | item TYPE STANDARD TABLE OF resp_item WITH DEFAULT KEY, 62 | END OF response. 63 | 64 | DATA ls_parsed_response TYPE response. 65 | 66 | /ui2/cl_json=>deserialize( 67 | EXPORTING 68 | json = lv_response 69 | CHANGING 70 | data = ls_parsed_response ). 71 | 72 | LOOP AT ls_parsed_response-item ASSIGNING FIELD-SYMBOL(). 73 | LOOP AT -personelliste-item ASSIGNING FIELD-SYMBOL(). 74 | APPEND INITIAL LINE TO et_vendor_performance ASSIGNING FIELD-SYMBOL(). 75 | MOVE-CORRESPONDING TO . 76 | MOVE-CORRESPONDING TO -personelliste. 77 | ENDLOOP. 78 | ENDLOOP. 79 | 80 | ENDFUNCTION. -------------------------------------------------------------------------------- /src/snippets/tax-calculation.abap: -------------------------------------------------------------------------------- 1 | FORM calculate_tax_amount USING ip_bukrs 2 | ip_belnr 3 | ip_gjahr 4 | ip_buzei 5 | ip_dmbtr 6 | ip_waers 7 | CHANGING cp_mwskz 8 | cp_percent 9 | cp_amount. 10 | 11 | DATA lt_mwdat TYPE TABLE OF rtax1u15. 12 | 13 | CLEAR: cp_mwskz, cp_percent, cp_amount. 14 | 15 | SELECT SINGLE mwskz FROM rseg INTO @cp_mwskz "#EC CI_SEL_NESTED 16 | WHERE belnr = @ip_belnr 17 | AND gjahr = @ip_gjahr 18 | AND buzei = @ip_buzei. 19 | 20 | CALL FUNCTION 'CALCULATE_TAX_FROM_GROSSAMOUNT' 21 | EXPORTING 22 | i_bukrs = ip_bukrs 23 | i_mwskz = cp_mwskz 24 | i_waers = ip_waers 25 | i_wrbtr = ip_dmbtr 26 | TABLES 27 | t_mwdat = lt_mwdat 28 | EXCEPTIONS 29 | bukrs_not_found = 1 30 | country_not_found = 2 31 | mwskz_not_defined = 3 32 | mwskz_not_valid = 4 33 | account_not_found = 5 34 | different_discount_base = 6 35 | different_tax_base = 7 36 | txjcd_not_valid = 8 37 | not_found = 9 38 | ktosl_not_found = 10 39 | kalsm_not_found = 11 40 | parameter_error = 12 41 | knumh_not_found = 13 42 | kschl_not_found = 14 43 | unknown_error = 15 44 | OTHERS = 16. 45 | 46 | READ TABLE lt_mwdat ASSIGNING FIELD-SYMBOL() INDEX 1. 47 | IF sy-subrc = 0. 48 | cp_amount = -wmwst. 49 | WRITE -msatz TO cp_percent DECIMALS 0. 50 | CONDENSE cp_percent. 51 | ENDIF. 52 | 53 | ENDFORM. 54 | 55 | FORM calc_tax_from_net USING ip_bukrs 56 | ip_mwskz 57 | ip_waers 58 | ip_wrbtr 59 | CHANGING cp_percent 60 | cp_amount. 61 | 62 | DATA lt_mwdat TYPE TABLE OF rtax1u15. 63 | 64 | CALL FUNCTION 'CALCULATE_TAX_FROM_NET_AMOUNT' 65 | EXPORTING 66 | i_bukrs = ip_bukrs 67 | i_mwskz = ip_mwskz 68 | i_waers = ip_waers 69 | i_wrbtr = ip_wrbtr 70 | TABLES 71 | t_mwdat = lt_mwdat 72 | EXCEPTIONS 73 | bukrs_not_found = 1 74 | country_not_found = 2 75 | mwskz_not_defined = 3 76 | mwskz_not_valid = 4 77 | ktosl_not_found = 5 78 | kalsm_not_found = 6 79 | parameter_error = 7 80 | knumh_not_found = 8 81 | kschl_not_found = 9 82 | unknown_error = 10 83 | account_not_found = 11 84 | txjcd_not_valid = 12 85 | OTHERS = 13. 86 | 87 | READ TABLE lt_mwdat ASSIGNING FIELD-SYMBOL() INDEX 1. 88 | IF sy-subrc = 0. 89 | WRITE -msatz TO cp_percent DECIMALS 0. 90 | CONDENSE cp_percent. 91 | cp_amount = -wmwst. 92 | ENDIF. 93 | 94 | ENDFORM. -------------------------------------------------------------------------------- /src/new/RSAN_UT_FILTER_BUILD_SQL_WHERE.abap: -------------------------------------------------------------------------------- 1 | FUNCTION z_mm_read_assets . 2 | *"---------------------------------------------------------------------- 3 | *"*"Local Interface: 4 | *" IMPORTING 5 | *" VALUE(IV_BE_CO_CODE) TYPE MMPUR_D_BE_COCODE 6 | *" VALUE(IV_ANLN1) TYPE ANLN1 OPTIONAL 7 | *" VALUE(ITR_ANLKL) TYPE RANGE_ANLKL_IN_T OPTIONAL 8 | *" VALUE(ITR_AKTIV) TYPE DATE_T_RANGE OPTIONAL 9 | *" EXPORTING 10 | *" VALUE(ET_ASSET) TYPE ZTMM_ASSET 11 | *"---------------------------------------------------------------------- 12 | 13 | DATA(lv_destination) = zcl_mm_cproc_pr=>retrieve_destination( iv_be_co_code ). 14 | 15 | DATA lt_options TYPE STANDARD TABLE OF rfc_db_opt. 16 | DATA lt_fields TYPE STANDARD TABLE OF rfc_db_fld. 17 | DATA lt_data TYPE STANDARD TABLE OF tab512. 18 | 19 | DATA lt_sel TYPE rsdri_t_range. 20 | DATA lv_where_clause TYPE string. 21 | 22 | IF iv_anln1 IS NOT INITIAL AND iv_anln1 <> 'null'. 23 | APPEND VALUE #( chanm = 'ANLN1' 24 | sign = 'I' 25 | compop = 'EQ' 26 | low = iv_anln1 ) TO lt_sel. 27 | ENDIF. 28 | LOOP AT itr_anlkl ASSIGNING FIELD-SYMBOL(). 29 | APPEND VALUE #( chanm = 'ANLKL' 30 | sign = -sign 31 | compop = -option 32 | low = -low 33 | high = -high ) TO lt_sel. 34 | ENDLOOP. 35 | LOOP AT itr_aktiv ASSIGNING FIELD-SYMBOL(). 36 | APPEND VALUE #( chanm = 'AKTIV' 37 | sign = -sign 38 | compop = -option 39 | low = -low 40 | high = -high ) TO lt_sel. 41 | ENDLOOP. 42 | 43 | CALL FUNCTION 'RSAN_UT_FILTER_BUILD_SQL_WHERE' 44 | EXPORTING 45 | i_t_sel = lt_sel 46 | IMPORTING 47 | e_where_clause = lv_where_clause. 48 | 49 | CALL FUNCTION 'RKD_WORD_WRAP' 50 | EXPORTING 51 | textline = CONV char30k( lv_where_clause ) 52 | outputlen = 72 53 | TABLES 54 | out_lines = lt_options 55 | EXCEPTIONS 56 | outputlen_too_large = 1 57 | OTHERS = 2. 58 | 59 | lt_fields = VALUE #( ( fieldname = 'ANLN1' ) 60 | ( fieldname = 'ANLN2' ) 61 | ( fieldname = 'ANLKL' ) 62 | ( fieldname = 'TXT50' ) 63 | ( fieldname = 'AKTIV' ) ). 64 | 65 | CALL FUNCTION 'RFC_READ_TABLE' DESTINATION lv_destination 66 | EXPORTING 67 | query_table = 'MMPUR_V_ASSET' 68 | delimiter = '|' 69 | TABLES 70 | options = lt_options 71 | fields = lt_fields 72 | data = lt_data 73 | EXCEPTIONS 74 | table_not_available = 1 75 | table_without_data = 2 76 | option_not_valid = 3 77 | field_not_valid = 4 78 | not_authorized = 5 79 | data_buffer_exceeded = 6 80 | OTHERS = 7. 81 | 82 | LOOP AT lt_data ASSIGNING FIELD-SYMBOL(). 83 | APPEND INITIAL LINE TO et_asset ASSIGNING FIELD-SYMBOL(). 84 | SPLIT -wa AT '|' INTO -anln1 -anln2 -anlkl -txt50 -aktiv. 85 | ENDLOOP. 86 | 87 | ENDFUNCTION. -------------------------------------------------------------------------------- /src/new/alv-search-help/top.abap: -------------------------------------------------------------------------------- 1 | TYPES: BEGIN OF gst_invo, 2 | vbeln TYPE vbrp-vbeln, 3 | posnr TYPE vbrp-posnr, 4 | END OF gst_invo. 5 | 6 | DATA: gt_invo TYPE TABLE OF gst_invo, 7 | go_grid TYPE REF TO cl_gui_alv_grid, 8 | go_cont TYPE REF TO cl_gui_custom_container. 9 | 10 | CLASS lcl_events DEFINITION. 11 | PUBLIC SECTION. 12 | CLASS-METHODS: 13 | on_user_command FOR EVENT user_command OF cl_gui_alv_grid 14 | IMPORTING e_ucomm, 15 | on_after_user_command FOR EVENT after_user_command OF cl_gui_alv_grid 16 | IMPORTING e_ucomm e_saved e_not_processed, 17 | on_toolbar FOR EVENT toolbar OF cl_gui_alv_grid 18 | IMPORTING e_object e_interactive, 19 | on_f4 FOR EVENT onf4 OF cl_gui_alv_grid 20 | IMPORTING e_fieldname e_fieldvalue es_row_no er_event_data et_bad_cells e_display. 21 | ENDCLASS. 22 | 23 | CLASS lcl_events IMPLEMENTATION. 24 | METHOD on_user_command. 25 | BREAK-POINT. 26 | ENDMETHOD. 27 | METHOD on_after_user_command. 28 | BREAK-POINT. 29 | ENDMETHOD. 30 | METHOD on_toolbar. 31 | APPEND VALUE #( function = 'ADD' icon = icon_insert_row quickinfo = TEXT-b01 ) TO e_object->mt_toolbar. 32 | APPEND VALUE #( function = 'DEL' icon = icon_delete_row quickinfo = TEXT-b02 ) TO e_object->mt_toolbar. 33 | ENDMETHOD. 34 | METHOD on_f4. 35 | 36 | DATA lt_sel TYPE STANDARD TABLE OF ddshretval. 37 | 38 | CASE e_fieldname. 39 | WHEN 'VBELN'. 40 | 41 | CALL FUNCTION 'F4IF_FIELD_VALUE_REQUEST' 42 | EXPORTING 43 | tabname = 'VBRP' 44 | fieldname = 'VBELN' 45 | searchhelp = 'H_VBRK' 46 | TABLES 47 | return_tab = lt_sel 48 | EXCEPTIONS 49 | field_not_found = 1 50 | no_help_for_field = 2 51 | inconsistent_help = 3 52 | no_values_found = 4 53 | OTHERS = 5. 54 | 55 | READ TABLE lt_sel ASSIGNING FIELD-SYMBOL() INDEX 1. 56 | IF sy-subrc = 0. 57 | READ TABLE gt_invo ASSIGNING FIELD-SYMBOL() INDEX es_row_no-row_id. 58 | IF sy-subrc = 0. 59 | -vbeln = -fieldval. 60 | ENDIF. 61 | ENDIF. 62 | 63 | WHEN 'POSNR'. 64 | 65 | READ TABLE gt_invo ASSIGNING INDEX es_row_no-row_id. 66 | IF sy-subrc = 0. 67 | SET PARAMETER ID 'VF' FIELD -vbeln. 68 | ENDIF. 69 | 70 | CALL FUNCTION 'F4IF_FIELD_VALUE_REQUEST' 71 | EXPORTING 72 | tabname = 'VBRP' 73 | fieldname = 'POSNR' 74 | searchhelp = 'ZF4_POSNR_VBRP' 75 | callback_program = 'ZQM_R_SUBROUTINE' 76 | callback_form = 'POSNR_HELP_CB' 77 | TABLES 78 | return_tab = lt_sel 79 | EXCEPTIONS 80 | field_not_found = 1 81 | no_help_for_field = 2 82 | inconsistent_help = 3 83 | no_values_found = 4 84 | OTHERS = 5. 85 | 86 | READ TABLE lt_sel ASSIGNING INDEX 1. 87 | IF sy-subrc = 0. 88 | READ TABLE gt_invo ASSIGNING INDEX es_row_no-row_id. 89 | IF sy-subrc = 0. 90 | -posnr = -fieldval. 91 | ENDIF. 92 | ENDIF. 93 | 94 | ENDCASE. 95 | 96 | er_event_data->m_event_handled = abap_true. 97 | 98 | ENDMETHOD. 99 | ENDCLASS. -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # abap-reference 2 | Template programs, utility procedures and code samples for ABAP and other SAP development tools. Contributions are welcome. 3 | 4 | Templates, programs and classes (src/lib-package folder) are activated in an ABAP 7.50 SP 4 system and exported via [abapGit](https://github.com/larshp/abapGit). Latest [release](https://github.com/kkayacan/sap-lib/releases) can be imported into an ABAP 7.02 SP 8 system. 5 | 6 | #### Disclaimer 7 | Code in snippets folder are samples and are not guaranteed to work by just copying and pasting. Adjust it according to your requirement. 8 | 9 | #### Folder structure 10 | - [src](src/) 11 | - [lib-package](src/lib-package/) Templates and programs exported via abapGit 12 | - [program](src/lib-package/program/) Programs 13 | - [template](src/lib-package/template/) Templates 14 | - [objects](src/objects/) Frequently used standard objects 15 | - [snippets](src/snippets/) 16 | 17 | ### Also check [uncategorized new additions](/src/new/) 18 | 19 | ### Index 20 | 21 | ##### Programs 22 | - [Extract ABAP development objects to html/text files](src/lib-package/program/ydtp_mass_download.prog.abap) 23 | 24 | ##### Templates 25 | - [Interactive CL_GUI_ALV_GRID](src/lib-package/template/yp_alv_grid.prog.abap) 26 | - [Interactive SLIS ALV](src/lib-package/template/yp_alv_template.prog.abap) 27 | - [SALV mini template](src/lib-package/template/yp_salv_mini.prog.abap) 28 | - [ALV grid in docking container](src/lib-package/template/yp_docking.prog.abap) 29 | 30 | ##### Snippets 31 | - Algorithm 32 | - [Parallel cursor](src/snippets/parallel-cursor.abap) 33 | 34 | - ALV 35 | - [List variant search help for SLIS ALV](src/snippets/REUSE_ALV_VARIANT_F4.abap) 36 | - [Build LVC field catalog](src/snippets/build-lvc-fieldcatalog.abap) 37 | 38 | - Data dictionary 39 | - [Get domain value text](src/snippets/get-domain-value-text.abap) 40 | 41 | - Date 42 | - [Find month names](src/snippets/MONTH_NAMES_GET.abap) 43 | 44 | - Dialog/Screen 45 | - [Force enter key with SAPGUI_SET_FUNCTIONCODE](src/snippets/SAPGUI_SET_FUNCTIONCODE.abap) 46 | 47 | - Excel 48 | - [Create native Excel file in background and send as email attachment](src/snippets/create-excel-bg-and-send-mail.abap) 49 | - [Create Excel file with OLE2 interface](src/snippets/ole2-excel.abap) 50 | 51 | - FI 52 | - [Split items of BAPI_ACC_DOCUMENT_POST](src/snippets/BAPI_ACC_DOCUMENT_POST-split-items.abap) 53 | - [Get GL account for tax indicator](src/snippets/FI_TAX_GET_TAX_ACCOUNTS.abap) 54 | - [Tax calculation](src/snippets/tax-calculation.abap) 55 | 56 | - HR/HCM 57 | - [Get active plan variant](src/snippets/RH_GET_PLVAR.abap) 58 | - [Infotype subtype search help](src/snippets/HR_F4_GET_SUBTYPE.abap) 59 | - [Search help function for data with time constraint](src/snippets/HR_F4HELP_IN_INTERVAL.abap) 60 | - [Search help function for bank accounts](src/snippets/HR_BANK_SEARCH.abap) 61 | 62 | - Message 63 | - [Display BAPIRET2 table](src/snippets/message-display.abap) 64 | - [Convert BDC messages to BAPIRET2](src/snippets/CONVERT_BDCMSGCOLL_TO_BAPIRET2.abap) 65 | 66 | - Popup 67 | - [Ask for values with popup](src/snippets/POPUP_GET_VALUES.abap) 68 | 69 | - Search help 70 | - [F4IF_INT_TABLE_VALUE_REQUEST generic use](src/snippets/F4IF_INT_TABLE_VALUE_REQUEST.abap) 71 | 72 | - Selection screen 73 | - [SELECT_OPTIONS_RESTRICT](src/snippets/SELECT_OPTIONS_RESTRICT.abap) 74 | 75 | - Smartforms 76 | - [Suppress dialog and download pdf](src/snippets/suppress-smartforms-dialog-and-download-pdf.abap) 77 | 78 | - Standard text 79 | - [Sample use for SAVE_TEXT](src/snippets/SAVE_TEXT.abap) 80 | 81 | - String/text 82 | - [Split single line string into multi line text](src/snippets/RKD_WORD_WRAP.abap) 83 | - [Convert text data to UTF-8](src/snippets/convert-text-to-utf8.abap) -------------------------------------------------------------------------------- /src/new/find-range-structures.abap: -------------------------------------------------------------------------------- 1 | REPORT y_find_range_struc. 2 | 3 | DATA: gv_data_element TYPE rollname, " Data Element Name 4 | gv_exclude_slash TYPE abap_bool, " Exclude structures starting with '/' 5 | gt_matching_structures TYPE TABLE OF dd02l, " Matching Structures 6 | gs_table TYPE dd02l, 7 | gtr_tabname TYPE RANGE OF dd03l-tabname, 8 | gtr_leng TYPE RANGE OF dd03l-leng. 9 | 10 | PARAMETERS: rdatael RADIOBUTTON GROUP r01 USER-COMMAND r01 DEFAULT 'X', 11 | datael TYPE rollname MODIF ID dat, 12 | rtype RADIOBUTTON GROUP r01, 13 | datatype TYPE dd03l-datatype MODIF ID typ, 14 | leng TYPE dd03l-leng MODIF ID typ, 15 | excslash AS CHECKBOX DEFAULT abap_true. 16 | 17 | INITIALIZATION. 18 | %_rdatael_%_app_%-text = 'Data Element'. 19 | %_datael_%_app_%-text = 'Data Element'. 20 | %_rtype_%_app_%-text = 'Type'. 21 | %_datatype_%_app_%-text = 'Type'. 22 | %_leng_%_app_%-text = 'Length'. 23 | %_excslash_%_app_%-text = 'Exclude struc. starting with /'. 24 | 25 | AT SELECTION-SCREEN OUTPUT. 26 | LOOP AT SCREEN. 27 | CASE abap_false. 28 | WHEN rdatael. 29 | IF screen-group1 = 'DAT'. 30 | screen-input = 0. 31 | ENDIF. 32 | WHEN rtype. 33 | IF screen-group1 = 'TYP'. 34 | screen-input = 0. 35 | ENDIF. 36 | ENDCASE. 37 | MODIFY SCREEN. 38 | ENDLOOP. 39 | 40 | START-OF-SELECTION. 41 | 42 | gv_data_element = datael. 43 | gv_exclude_slash = excslash. 44 | 45 | IF excslash = abap_true. 46 | gtr_tabname = VALUE #( ( sign = 'I' option = 'NP' low = '/*' ) ). 47 | ENDIF. 48 | 49 | CASE abap_true. 50 | WHEN rdatael. 51 | SELECT * FROM dd02l 52 | WHERE tabclass = 'INTTAB' 53 | AND tabname IN ( SELECT tabname FROM dd03l WHERE rollname = @gv_data_element 54 | AND tabname IN @gtr_tabname ) 55 | INTO TABLE @gt_matching_structures. 56 | WHEN rtype. 57 | IF leng IS NOT INITIAL. 58 | gtr_leng = VALUE #( ( sign = 'I' option = 'EQ' low = leng ) ). 59 | ENDIF. 60 | SELECT * FROM dd02l 61 | WHERE tabclass = 'INTTAB' 62 | AND tabname IN ( SELECT tabname FROM dd03l WHERE datatype = @datatype 63 | AND leng IN @gtr_leng 64 | AND tabname IN @gtr_tabname ) 65 | INTO TABLE @gt_matching_structures. 66 | ENDCASE. 67 | 68 | FORMAT COLOR COL_HEADING. 69 | WRITE: 1(30) 'STRUCTURE', 35 'TABLE TYPE'. 70 | FORMAT COLOR COL_NORMAL. 71 | 72 | DATA: lt_fields TYPE TABLE OF dd03l, 73 | lv_tabtype TYPE c LENGTH 30. 74 | 75 | LOOP AT gt_matching_structures INTO gs_table. 76 | 77 | CLEAR lt_fields. 78 | SELECT * FROM dd03l 79 | WHERE tabname = @gs_table-tabname 80 | INTO TABLE @lt_fields. 81 | CHECK lines( lt_fields ) = 4. 82 | 83 | IF lt_fields[ 1 ]-fieldname CS 'SIGN' 84 | AND lt_fields[ 1 ]-leng = 1 85 | AND lt_fields[ 2 ]-fieldname CS 'OPTION' 86 | AND lt_fields[ 2 ]-leng = 2 87 | AND lt_fields[ 3 ]-fieldname = 'LOW' 88 | AND lt_fields[ 4 ]-fieldname = 'HIGH'. 89 | 90 | SELECT SINGLE typename 91 | FROM dd40l 92 | WHERE rowtype = @gs_table-tabname 93 | INTO @lv_tabtype. 94 | 95 | WRITE: / gs_table-tabname UNDER 'STRUCTURE', 96 | lv_tabtype UNDER 'TABLE TYPE'. 97 | 98 | CLEAR lv_tabtype. 99 | 100 | ENDIF. 101 | ENDLOOP. 102 | 103 | IF lines( gt_matching_structures ) = 0. 104 | WRITE:/ 'No matching structures found.'. 105 | ENDIF. -------------------------------------------------------------------------------- /src/new/gateway-response-header-message.abap: -------------------------------------------------------------------------------- 1 | METHOD storeproducts_get_entityset. 2 | 3 | DATA(lt_filter_select_options) = io_tech_request_context->get_filter( )->get_filter_select_options( ). 4 | READ TABLE lt_filter_select_options INTO DATA(ls_so) WITH KEY property = 'DUMMY_STR_PROD_STOCK_INCL'. 5 | IF sy-subrc = 0. 6 | IF ls_so-select_options IS NOT INITIAL. 7 | zcl_rtst_op_storeproduct=>set_apptype( CONV char1( ls_so-select_options[ 1 ]-low ) ). 8 | ENDIF. 9 | ENDIF. 10 | 11 | CLEAR ls_so. 12 | READ TABLE lt_filter_select_options INTO ls_so WITH KEY property = 'DUMMY_STORE_PRODUCT_INCL'. 13 | 14 | IF ls_so IS NOT INITIAL. 15 | DATA lt_entityset TYPE zcl_zretailstore_order_mpc=>tt_storeproduct. 16 | zcl_rtst_op_storeproduct=>set_ignore_paging( abap_true ). 17 | zcl_rtst_op_storeproduct=>get_instance( )->get_entityset( 18 | EXPORTING 19 | io_tech_request_context = io_tech_request_context 20 | io_message_container = /iwbep/if_mgw_conv_srv_runtime~get_message_container( ) 21 | IMPORTING 22 | et_entityset = lt_entityset 23 | es_response_context = es_response_context ). 24 | 25 | DATA(lv_released) = abap_false. 26 | LOOP AT lt_entityset ASSIGNING FIELD-SYMBOL() WHERE order_document_id IS NOT INITIAL. 27 | SELECT SINGLE eban~frgkz, t16fs~frgc1 28 | FROM eban 29 | JOIN t16fs ON t16fs~frggr = eban~frggr 30 | AND t16fs~frgsx = eban~frgst 31 | WHERE eban~banfn = @-order_document_id 32 | AND eban~bnfpo = @-order_document_item_id 33 | INTO @DATA(ls_eban). 34 | IF sy-subrc = 0 AND ls_eban-frgkz <> '2'. 35 | CALL FUNCTION 'BAPI_REQUISITION_RELEASE' 36 | EXPORTING 37 | number = -order_document_id 38 | rel_code = ls_eban-frgc1 39 | item = CONV bapi2009ob-preq_item( -order_document_item_id ) 40 | EXCEPTIONS 41 | authority_check_fail = 1 42 | requisition_not_found = 2 43 | enqueue_fail = 3 44 | prerequisite_fail = 4 45 | release_already_posted = 5 46 | responsibility_fail = 6 47 | OTHERS = 7. 48 | IF sy-subrc <> 0. 49 | me->/iwbep/if_mgw_conv_srv_runtime~get_message_container( )->add_message( 50 | iv_msg_type = /iwbep/cl_cos_logger=>error 51 | iv_msg_id = sy-msgid 52 | iv_msg_number = sy-msgno 53 | iv_msg_v1 = sy-msgv1 54 | iv_msg_v2 = sy-msgv2 55 | iv_msg_v3 = sy-msgv3 56 | iv_msg_v4 = sy-msgv4 57 | iv_add_to_response_header = abap_true 58 | iv_message_target = CONV string( -product_name ) ). 59 | EXIT. 60 | ELSEIF lv_released = abap_false. 61 | me->/iwbep/if_mgw_conv_srv_runtime~get_message_container( )->add_message( 62 | iv_msg_type = /iwbep/cl_cos_logger=>success 63 | iv_msg_id = 'SV' 64 | iv_msg_number = '018' 65 | iv_add_to_response_header = abap_true ). 66 | ENDIF. 67 | ENDIF. 68 | ENDLOOP. 69 | 70 | zcl_rtst_op_storeproduct=>set_ignore_paging( abap_false ). 71 | ENDIF. 72 | 73 | zcl_rtst_op_storeproduct=>get_instance( )->get_entityset( 74 | EXPORTING 75 | io_tech_request_context = io_tech_request_context 76 | io_message_container = /iwbep/if_mgw_conv_srv_runtime~get_message_container( ) 77 | IMPORTING 78 | et_entityset = et_entityset 79 | es_response_context = es_response_context ). 80 | 81 | ENDMETHOD. -------------------------------------------------------------------------------- /src/new/RFC_READ_TABLE.abap: -------------------------------------------------------------------------------- 1 | FUNCTION z_mm_read_be_pr. 2 | *"---------------------------------------------------------------------- 3 | *"*"Local Interface: 4 | *" IMPORTING 5 | *" VALUE(IV_BE_CO_CODE) TYPE MMPUR_D_BE_COCODE 6 | *" VALUE(IV_BANFN) TYPE BANFN 7 | *" EXPORTING 8 | *" VALUE(ET_BE_PR_ITEM) TYPE ZTMM_CPROC_EBAN 9 | *"---------------------------------------------------------------------- 10 | 11 | DATA: lt_dfies TYPE TABLE OF dfies, 12 | lv_length TYPE i, 13 | lt_values TYPE TABLE OF string, 14 | lv_banfn TYPE eban-banfn, 15 | lv_bnfpo TYPE eban-bnfpo. 16 | 17 | DATA lt_options TYPE STANDARD TABLE OF rfc_db_opt. 18 | DATA lt_fields TYPE STANDARD TABLE OF rfc_db_fld. 19 | DATA lt_data TYPE STANDARD TABLE OF tab512. 20 | 21 | DATA(lv_destination) = zcl_mm_cproc_pr=>retrieve_destination( iv_be_co_code ). 22 | 23 | lt_options = VALUE #( ( text = |BANFN EQ '{ iv_banfn }'| ) ). 24 | 25 | CALL FUNCTION 'DDIF_FIELDINFO_GET' DESTINATION lv_destination 26 | EXPORTING 27 | tabname = 'EBAN' 28 | TABLES 29 | dfies_tab = lt_dfies 30 | EXCEPTIONS 31 | not_found = 1 32 | internal_error = 2 33 | OTHERS = 3. 34 | 35 | DELETE lt_dfies WHERE fieldname = 'MANDT'. 36 | 37 | DO. 38 | 39 | lv_length = 0. 40 | CLEAR lt_fields. 41 | 42 | LOOP AT lt_dfies ASSIGNING FIELD-SYMBOL(). 43 | lv_length = lv_length + -leng. 44 | IF lv_length > 512. 45 | EXIT. 46 | ENDIF. 47 | ADD 1 TO lv_length. 48 | APPEND VALUE #( fieldname = -fieldname ) TO lt_fields. 49 | IF -keyflag = abap_false. 50 | CLEAR -fieldname. 51 | ENDIF. 52 | ENDLOOP. 53 | DELETE lt_dfies WHERE fieldname IS INITIAL. 54 | 55 | CLEAR lt_data. 56 | CALL FUNCTION 'RFC_READ_TABLE' DESTINATION lv_destination 57 | EXPORTING 58 | query_table = 'EBAN' 59 | delimiter = '|' 60 | TABLES 61 | options = lt_options 62 | fields = lt_fields 63 | data = lt_data 64 | EXCEPTIONS 65 | table_not_available = 1 66 | table_without_data = 2 67 | option_not_valid = 3 68 | field_not_valid = 4 69 | not_authorized = 5 70 | data_buffer_exceeded = 6 71 | OTHERS = 7. 72 | 73 | CLEAR lt_values. 74 | LOOP AT lt_data ASSIGNING FIELD-SYMBOL(). 75 | CLEAR: lv_banfn, lv_bnfpo. 76 | SPLIT -wa AT '|' INTO TABLE lt_values. 77 | LOOP AT lt_fields ASSIGNING FIELD-SYMBOL(). 78 | READ TABLE lt_values ASSIGNING FIELD-SYMBOL() INDEX sy-tabix. 79 | IF sy-subrc = 0. 80 | CASE -fieldname. 81 | WHEN 'BANFN'. 82 | lv_banfn = . 83 | WHEN 'BNFPO'. 84 | lv_bnfpo = . 85 | READ TABLE et_be_pr_item ASSIGNING FIELD-SYMBOL() WITH KEY banfn = lv_banfn 86 | bnfpo = lv_bnfpo. 87 | IF sy-subrc <> 0. 88 | APPEND INITIAL LINE TO et_be_pr_item ASSIGNING . 89 | -banfn = lv_banfn. 90 | -bnfpo = lv_bnfpo. 91 | -be_co_code = iv_be_co_code. 92 | ENDIF. 93 | WHEN OTHERS. 94 | IF IS ASSIGNED. 95 | ASSIGN COMPONENT -fieldname OF STRUCTURE TO FIELD-SYMBOL(). 96 | IF sy-subrc = 0. 97 | = . 98 | ENDIF. 99 | ENDIF. 100 | ENDCASE. 101 | ENDIF. 102 | ENDLOOP. 103 | UNASSIGN . 104 | ENDLOOP. 105 | 106 | IF NOT line_exists( lt_dfies[ keyflag = abap_false ] ). 107 | EXIT. 108 | ENDIF. 109 | 110 | ENDDO. 111 | 112 | ENDFUNCTION. -------------------------------------------------------------------------------- /src/new/read-textpool.abap: -------------------------------------------------------------------------------- 1 | REPORT yread_textpool. 2 | 3 | TYPES: BEGIN OF gst_pool, 4 | object TYPE tadir-object, 5 | obj_name TYPE tadir-obj_name. 6 | INCLUDE TYPE textpool. 7 | TYPES: END OF gst_pool. 8 | 9 | DATA: gt_pool TYPE TABLE OF gst_pool, 10 | lt_pool TYPE TABLE OF textpool, 11 | gv_prog TYPE program. 12 | 13 | FIELD-SYMBOLS TYPE STANDARD TABLE. 14 | 15 | PARAMETERS: p_devc TYPE tadir-devclass OBLIGATORY, 16 | p_lang TYPE sy-langu OBLIGATORY DEFAULT sy-langu, 17 | p_prog RADIOBUTTON GROUP r01 DEFAULT 'X', 18 | p_dtel RADIOBUTTON GROUP r01, 19 | p_doma RADIOBUTTON GROUP r01, 20 | p_tran RADIOBUTTON GROUP r01. 21 | 22 | START-OF-SELECTION. 23 | 24 | CASE abap_true. 25 | WHEN p_prog. 26 | SELECT object, obj_name, CAST( obj_name AS CHAR( 30 ) ) AS rollname, CAST( obj_name AS CHAR( 20 ) ) AS tcode 27 | FROM tadir 28 | WHERE pgmid = 'R3TR' 29 | AND object IN ('CLAS','FUGR','PROG') 30 | AND devclass = @p_devc 31 | INTO TABLE @DATA(gt_tadir). 32 | 33 | LOOP AT gt_tadir ASSIGNING FIELD-SYMBOL(). 34 | CASE -object. 35 | WHEN 'CLAS'. 36 | gv_prog = cl_oo_classname_service=>get_classpool_name( CONV seoclsname( -obj_name ) ). 37 | WHEN 'FUGR'. 38 | gv_prog = 'SAPL' && -obj_name. 39 | WHEN 'PROG'. 40 | gv_prog = -obj_name. 41 | ENDCASE. 42 | CLEAR lt_pool. 43 | READ TEXTPOOL gv_prog INTO lt_pool LANGUAGE p_lang. 44 | LOOP AT lt_pool ASSIGNING FIELD-SYMBOL(). 45 | CHECK NOT -entry = 'D .'. 46 | APPEND INITIAL LINE TO gt_pool ASSIGNING FIELD-SYMBOL(). 47 | MOVE-CORRESPONDING TO . 48 | MOVE-CORRESPONDING TO . 49 | ENDLOOP. 50 | ENDLOOP. 51 | ASSIGN gt_pool TO . 52 | WHEN p_dtel. 53 | SELECT object, obj_name, CAST( obj_name AS CHAR( 30 ) ) AS rollname, CAST( obj_name AS CHAR( 20 ) ) AS tcode 54 | FROM tadir 55 | WHERE pgmid = 'R3TR' 56 | AND object = 'DTEL' 57 | AND devclass = @p_devc 58 | INTO TABLE @gt_tadir. 59 | IF gt_tadir IS NOT INITIAL. 60 | SELECT * FROM dd04t 61 | FOR ALL ENTRIES IN @gt_tadir 62 | WHERE rollname = @gt_tadir-rollname 63 | AND ddlanguage = @p_lang 64 | INTO TABLE @DATA(gt_dd04t). 65 | ENDIF. 66 | ASSIGN gt_dd04t TO . 67 | WHEN p_doma. 68 | SELECT object, obj_name, CAST( obj_name AS CHAR( 30 ) ) AS rollname, CAST( obj_name AS CHAR( 20 ) ) AS tcode 69 | FROM tadir 70 | WHERE pgmid = 'R3TR' 71 | AND object = 'DOMA' 72 | AND devclass = @p_devc 73 | INTO TABLE @gt_tadir. 74 | IF gt_tadir IS NOT INITIAL. 75 | SELECT * FROM dd07t 76 | FOR ALL ENTRIES IN @gt_tadir 77 | WHERE domname = @gt_tadir-rollname 78 | AND ddlanguage = @p_lang 79 | INTO TABLE @DATA(gt_dd07t). 80 | ENDIF. 81 | ASSIGN gt_dd07t TO . 82 | WHEN p_tran. 83 | SELECT object, obj_name, CAST( obj_name AS CHAR( 30 ) ) AS rollname, CAST( obj_name AS CHAR( 20 ) ) AS tcode 84 | FROM tadir 85 | WHERE pgmid = 'R3TR' 86 | AND object = 'TRAN' 87 | AND devclass = @p_devc 88 | INTO TABLE @gt_tadir. 89 | IF gt_tadir IS NOT INITIAL. 90 | SELECT * FROM tstct 91 | FOR ALL ENTRIES IN @gt_tadir 92 | WHERE tcode = @gt_tadir-tcode 93 | AND sprsl = @p_lang 94 | INTO TABLE @DATA(gt_tstct). 95 | ENDIF. 96 | ASSIGN gt_tstct TO . 97 | ENDCASE. 98 | 99 | END-OF-SELECTION. 100 | 101 | CALL METHOD cl_salv_table=>factory 102 | IMPORTING 103 | r_salv_table = DATA(go_salv) 104 | CHANGING 105 | t_table = . 106 | go_salv->get_functions( )->set_all( abap_true ). 107 | go_salv->get_columns( )->set_optimize( abap_true ). 108 | go_salv->display( ). -------------------------------------------------------------------------------- /src/new/rest-api-call.abap: -------------------------------------------------------------------------------- 1 | REPORT y. 2 | 3 | 4 | DATA lv_val TYPE string. 5 | 6 | CALL METHOD cl_http_client=>create_by_url 7 | EXPORTING 8 | url = 'http://185.22.184.249:3002/api/Ozsut/token' 9 | IMPORTING 10 | client = DATA(o_post) 11 | EXCEPTIONS 12 | argument_not_found = 1 13 | plugin_not_active = 2 14 | internal_error = 3 15 | OTHERS = 4. 16 | 17 | CALL METHOD o_post->request->set_method 18 | EXPORTING 19 | method = 'POST'. 20 | 21 | CALL METHOD o_post->request->if_http_entity~set_content_type 22 | EXPORTING 23 | content_type = 'application/x-www-form-urlencoded'. 24 | 25 | CALL METHOD o_post->request->set_header_field 26 | EXPORTING 27 | name = 'Accept' 28 | value = 'application/json'. 29 | 30 | CALL METHOD o_post->request->if_http_entity~set_form_field 31 | EXPORTING 32 | name = 'grant_type' 33 | value = 'password'. 34 | 35 | CALL METHOD o_post->request->if_http_entity~set_form_field 36 | EXPORTING 37 | name = 'username' 38 | value = 'omerd'. 39 | 40 | CALL METHOD o_post->request->if_http_entity~set_form_field 41 | EXPORTING 42 | name = 'password' 43 | value = 'omerd!'. 44 | 45 | o_post->send( 46 | EXCEPTIONS 47 | http_communication_failure = 1 48 | http_invalid_state = 2 ). 49 | 50 | o_post->receive( 51 | EXCEPTIONS 52 | http_communication_failure = 1 53 | http_invalid_state = 2 54 | http_processing_failed = 3 ). 55 | 56 | DATA lv_response TYPE string. 57 | 58 | lv_response = o_post->response->get_cdata( ). 59 | 60 | BREAK-POINT. 61 | 62 | TYPES: BEGIN OF lst_token, 63 | access_token TYPE string, 64 | token_type TYPE string, 65 | expires_in TYPE string, 66 | END OF lst_token. 67 | 68 | DATA ls_token TYPE lst_token. 69 | 70 | /ui2/cl_json=>deserialize( 71 | EXPORTING 72 | json = lv_response 73 | CHANGING 74 | data = ls_token ). 75 | 76 | BREAK-POINT. 77 | 78 | CALL METHOD cl_http_client=>create_by_url 79 | EXPORTING 80 | url = 'http://185.22.184.249:3002/api/OzSutService/GetKupon?KuponKodu=OZST7TDHFS97' 81 | IMPORTING 82 | client = DATA(o_get) 83 | EXCEPTIONS 84 | argument_not_found = 1 85 | plugin_not_active = 2 86 | internal_error = 3 87 | OTHERS = 4. 88 | 89 | CALL METHOD o_get->request->set_method 90 | EXPORTING 91 | method = 'GET'. 92 | 93 | lv_val = ls_token-token_type && ` ` && ls_token-access_token. 94 | 95 | CALL METHOD o_get->request->set_header_field 96 | EXPORTING 97 | name = 'Authorization' 98 | value = lv_val. 99 | 100 | o_get->send( 101 | EXCEPTIONS 102 | http_communication_failure = 1 103 | http_invalid_state = 2 ). 104 | 105 | o_get->receive( 106 | EXCEPTIONS 107 | http_communication_failure = 1 108 | http_invalid_state = 2 109 | http_processing_failed = 3 ). 110 | 111 | CLEAR lv_response. 112 | lv_response = o_get->response->get_cdata( ). 113 | 114 | TYPES: BEGIN OF lst_return_value, 115 | kuponid TYPE string, 116 | gecerliliktarihi TYPE string, 117 | kupondurumu TYPE string, 118 | kampanyaid TYPE string, 119 | kuponuretimiid TYPE string, 120 | kuponkodu TYPE string, 121 | kullanimsayisi TYPE string, 122 | durum TYPE string, 123 | aciklama TYPE string, 124 | bayikatiliorani TYPE string, 125 | netfiyat TYPE string, 126 | faturalandirilacaktutar TYPE string, 127 | kupontanitimi TYPE string, 128 | kampanyatanitimi TYPE string, 129 | END OF lst_return_value, 130 | 131 | BEGIN OF lst_response, 132 | success TYPE string, 133 | errordetail TYPE string, 134 | errorcode TYPE string, 135 | returnvalue TYPE lst_return_value, 136 | END OF lst_response. 137 | 138 | DATA ls_response TYPE lst_response. 139 | 140 | /ui2/cl_json=>deserialize( 141 | EXPORTING 142 | json = lv_response 143 | 144 | CHANGING 145 | data = ls_response ). 146 | 147 | BREAK-POINT. -------------------------------------------------------------------------------- /src/new/dynamically-update-data-from-excel-to-database-table.abap: -------------------------------------------------------------------------------- 1 | * https://blogs.sap.com/2019/09/20/dynamically-update-data-from-excel-to-database-table/ 2 | 3 | REPORT zr_dynamic_table_update_excel NO STANDARD PAGE HEADING. 4 | 5 | *** --- Data Declarations 6 | DATA:lt_excel TYPE TABLE OF alsmex_tabline, 7 | lt_dref TYPE REF TO data, 8 | ls_dref TYPE REF TO data, 9 | lv_col TYPE i, 10 | lo_alv TYPE REF TO cl_salv_table, 11 | lt_table_filds TYPE TABLE OF dfies. 12 | *** --- Field Symbols 13 | FIELD-SYMBOLS : TYPE any . 14 | FIELD-SYMBOLS : TYPE STANDARD TABLE. 15 | FIELD-SYMBOLS : . 16 | 17 | *** --- Selection screen designing 18 | SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE TEXT-001. 19 | PARAMETERS:p_file TYPE rlgrap-filename OBLIGATORY, 20 | p_table TYPE dd02l-tabname OBLIGATORY, 21 | p_test AS CHECKBOX DEFAULT abap_true. 22 | SELECTION-SCREEN END OF BLOCK b1. 23 | 24 | *** --- value request for p_file 25 | AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file. 26 | CALL FUNCTION 'F4_FILENAME' 27 | IMPORTING 28 | file_name = p_file. 29 | *** --- START-OF-SELECTION 30 | START-OF-SELECTION. 31 | *create OBJECT lr_descr. 32 | *** --- Assigning fields symbols for Tables 33 | CREATE DATA lt_dref TYPE TABLE OF (p_table). 34 | CREATE DATA ls_dref TYPE (p_table). 35 | *** --- Assign field symbol with table type of DDIC 36 | ASSIGN lt_dref->* TO . 37 | *** --- Assign field symbol with Structure type of DDIC 38 | ASSIGN ls_dref->* TO . 39 | *** --- Call the Function module ALSM_EXCEL_TO_INTERNAL_TABLE 40 | CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE' 41 | EXPORTING 42 | filename = p_file 43 | i_begin_col = 1 44 | i_begin_row = 1 45 | i_end_col = 99 46 | i_end_row = 999999 47 | TABLES 48 | intern = lt_excel 49 | EXCEPTIONS 50 | inconsistent_parameters = 1 51 | upload_ole = 2 52 | OTHERS = 3. 53 | IF sy-subrc EQ 0. 54 | *** --- Sort 55 | SORT lt_excel BY row. 56 | 57 | LOOP AT lt_excel INTO DATA(ls_excel). 58 | 59 | *** --- Adding count to skip the mapping for MANDT field 60 | lv_col = ls_excel-col + 1. 61 | ASSIGN COMPONENT lv_col OF STRUCTURE TO . 62 | IF sy-subrc = 0. 63 | ***-- Compare Excel sheet column data and Dynamic table fields 64 | IF ls_excel-row = 1. 65 | CALL FUNCTION 'DDIF_FIELDINFO_GET' 66 | EXPORTING 67 | tabname = p_table 68 | TABLES 69 | dfies_tab = lt_table_filds 70 | EXCEPTIONS 71 | not_found = 1 72 | internal_error = 2 73 | OTHERS = 3. 74 | READ TABLE lt_table_filds INTO DATA(ls_table_fields) INDEX lv_col. 75 | IF sy-subrc = 0. 76 | IF ls_table_fields-fieldname NE ls_excel-value. 77 | WRITE: 'Excel sheet data and Dynamic table fields are not matching'. 78 | EXIT. 79 | ENDIF. 80 | ENDIF. 81 | ELSE. 82 | = ls_excel-value. 83 | ENDIF. 84 | ENDIF. 85 | IF ls_excel-row GT 1. 86 | AT END OF row. 87 | APPEND TO . 88 | CLEAR . 89 | ENDAT. 90 | ENDIF. 91 | ENDLOOP. 92 | 93 | IF IS NOT INITIAL. 94 | IF p_test IS INITIAL. 95 | *** --- Modify 96 | MODIFY (p_table) FROM TABLE . 97 | IF sy-subrc EQ 0. 98 | COMMIT WORK. 99 | DATA(lv_lines) = lines( ). 100 | WRITE: TEXT-002,lv_lines. 101 | ELSE. 102 | ROLLBACK WORK. 103 | MESSAGE TEXT-003 TYPE 'E' DISPLAY LIKE 'I'. 104 | ENDIF. 105 | ELSE. 106 | *** --- Factory Method 107 | cl_salv_table=>factory( 108 | IMPORTING 109 | r_salv_table = lo_alv " Basis Class Simple ALV Tables 110 | CHANGING 111 | t_table = 112 | ). 113 | *** --- Display 114 | lo_alv->display( ). 115 | ENDIF. 116 | ENDIF. 117 | ENDIF. -------------------------------------------------------------------------------- /src/new/ask-path-and-download-xlsx.abap: -------------------------------------------------------------------------------- 1 | FORM excel. 2 | 3 | PERFORM print USING abap_true. 4 | 5 | DATA: lo_excel TYPE REF TO zcl_excel, 6 | lo_worksheet TYPE REF TO zcl_excel_worksheet, 7 | lv_val TYPE string, 8 | lv_row TYPE i. 9 | 10 | CREATE OBJECT lo_excel. 11 | lo_worksheet = lo_excel->get_active_worksheet( ). 12 | 13 | lo_worksheet->get_column( ip_column = 'A' )->set_width( ip_width = '18' ). 14 | lo_worksheet->get_column( ip_column = 'C' )->set_width( ip_width = '18' ). 15 | lo_worksheet->get_column( ip_column = 'E' )->set_width( ip_width = '18' ). 16 | lo_worksheet->get_column( ip_column = 'F' )->set_width( ip_width = '18' ). 17 | 18 | ADD 1 TO lv_row. 19 | lo_worksheet->set_cell( ip_row = lv_row ip_column = 'A' ip_value = TEXT-c01 ). 20 | lo_worksheet->set_cell( ip_row = lv_row ip_column = 'B' ip_value = TEXT-c02 ). 21 | lo_worksheet->set_cell( ip_row = lv_row ip_column = 'C' ip_value = TEXT-c03 ). 22 | lo_worksheet->set_cell( ip_row = lv_row ip_column = 'D' ip_value = TEXT-c04 ). 23 | lo_worksheet->set_cell( ip_row = lv_row ip_column = 'E' ip_value = TEXT-c05 ). 24 | lo_worksheet->set_cell( ip_row = lv_row ip_column = 'F' ip_value = TEXT-c06 ). 25 | lo_worksheet->set_cell( ip_row = lv_row ip_column = 'G' ip_value = TEXT-c07 ). 26 | 27 | LOOP AT gt_excel ASSIGNING FIELD-SYMBOL(). 28 | LOOP AT -item ASSIGNING FIELD-SYMBOL(). 29 | ADD 1 TO lv_row. 30 | lo_worksheet->set_cell( ip_row = lv_row ip_column = 'A' ip_value = -header-iblnr ). 31 | lo_worksheet->set_cell( ip_row = lv_row ip_column = 'B' ip_value = -header-gjahr ). 32 | lo_worksheet->set_cell( ip_row = lv_row ip_column = 'C' ip_value = -header-gidat ). 33 | lo_worksheet->set_cell( ip_row = lv_row ip_column = 'D' ip_value = -zeili ). 34 | lo_worksheet->set_cell( ip_row = lv_row ip_column = 'E' ip_value = -matnr ). 35 | lo_worksheet->set_cell( ip_row = lv_row ip_column = 'F' ip_value = -charg ). 36 | lo_worksheet->set_cell( ip_row = lv_row ip_column = 'G' ip_value = -meins ). 37 | ENDLOOP. 38 | ENDLOOP. 39 | 40 | PERFORM download_xls USING lo_excel. 41 | 42 | ENDFORM. 43 | 44 | FORM download_xls USING io_excel TYPE REF TO zcl_excel. 45 | DATA: cl_writer TYPE REF TO zif_excel_writer, 46 | xdata TYPE xstring, 47 | t_rawdata TYPE solix_tab, 48 | bytecount TYPE i, 49 | lv_fullpath TYPE string. 50 | CREATE OBJECT cl_writer TYPE zcl_excel_writer_2007. 51 | xdata = cl_writer->write_file( io_excel ). 52 | t_rawdata = cl_bcs_convert=>xstring_to_solix( iv_xstring = xdata ). 53 | bytecount = xstrlen( xdata ). 54 | PERFORM file_save_dialog CHANGING lv_fullpath. 55 | IF lv_fullpath IS INITIAL. 56 | RETURN. 57 | ENDIF. 58 | cl_gui_frontend_services=>gui_download( EXPORTING bin_filesize = bytecount 59 | filename = lv_fullpath 60 | filetype = 'BIN' 61 | CHANGING data_tab = t_rawdata ). 62 | ENDFORM. 63 | 64 | FORM file_save_dialog CHANGING VALUE(rv_file_path) TYPE string. 65 | 66 | DATA: lv_filename TYPE string, 67 | lv_path TYPE string, 68 | lv_sep TYPE c LENGTH 1. 69 | 70 | CALL METHOD cl_gui_frontend_services=>get_desktop_directory 71 | CHANGING 72 | desktop_directory = rv_file_path. 73 | cl_gui_cfw=>update_view( ). 74 | 75 | cl_gui_frontend_services=>get_file_separator( 76 | CHANGING 77 | file_separator = lv_sep 78 | EXCEPTIONS 79 | not_supported_by_gui = 1 80 | error_no_gui = 2 81 | cntl_error = 3 82 | others = 4 ). 83 | 84 | CONCATENATE rv_file_path lv_sep sy-datum sy-uzeit '.xlsx' INTO rv_file_path. 85 | 86 | DATA: lt_file_table TYPE STANDARD TABLE OF string. 87 | 88 | CALL METHOD cl_gui_frontend_services=>file_save_dialog 89 | EXPORTING 90 | default_extension = 'XLSX' 91 | default_file_name = rv_file_path 92 | CHANGING 93 | filename = lv_filename 94 | path = lv_path 95 | fullpath = rv_file_path. 96 | 97 | ENDFORM. -------------------------------------------------------------------------------- /src/snippets/suppress-smartforms-dialog-and-download-pdf.abap: -------------------------------------------------------------------------------- 1 | FORM print_pdf. 2 | 3 | DATA: fmname TYPE rs38l_fnam, 4 | ls_output TYPE ssfcrescl, 5 | lt_otf TYPE TABLE OF itcoo, 6 | lv_size TYPE i, 7 | lt_lines TYPE TABLE OF tline, 8 | lv_filename TYPE string, 9 | lv_path TYPE string, 10 | lv_fullpath TYPE string, 11 | lv_user_action TYPE i. 12 | 13 | CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME' 14 | EXPORTING 15 | formname = 'ZSMARTFORM_NAME' 16 | IMPORTING 17 | fm_name = fmname 18 | EXCEPTIONS 19 | no_form = 1 20 | no_function_module = 2 21 | OTHERS = 3. 22 | IF sy-subrc <> 0. 23 | MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno 24 | WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4. 25 | ENDIF. 26 | 27 | LOOP AT gt_data ASSIGNING FIELD-SYMBOL(). 28 | 29 | CALL FUNCTION fmname 30 | EXPORTING 31 | control_parameters = VALUE ssfctrlop( no_dialog = abap_true 32 | getotf = abap_true ) 33 | output_options = VALUE ssfcompop( tddest = 'PDF1' ) 34 | user_settings = abap_false 35 | lt_table = -item 36 | ls_header = -head 37 | IMPORTING 38 | job_output_info = ls_output 39 | EXCEPTIONS 40 | formatting_error = 1 41 | internal_error = 2 42 | send_error = 3 43 | user_canceled = 4 44 | OTHERS = 5. 45 | IF sy-subrc <> 0. 46 | MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno 47 | WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4. 48 | ENDIF. 49 | 50 | APPEND LINES OF ls_output-otfdata TO lt_otf. 51 | 52 | ENDLOOP. 53 | 54 | CALL FUNCTION 'CONVERT_OTF' 55 | EXPORTING 56 | format = 'PDF' 57 | IMPORTING 58 | bin_filesize = lv_size 59 | TABLES 60 | otf = lt_otf 61 | lines = lt_lines 62 | EXCEPTIONS 63 | err_max_linewidth = 1 64 | err_format = 2 65 | err_conv_not_possible = 3 66 | err_bad_otf = 4 67 | OTHERS = 5. 68 | IF sy-subrc <> 0. 69 | 70 | ENDIF. 71 | 72 | CALL METHOD cl_gui_frontend_services=>file_save_dialog 73 | EXPORTING 74 | default_extension = 'PDF' 75 | default_file_name = 'CombinedOutput' 76 | CHANGING 77 | filename = lv_filename 78 | path = lv_path 79 | fullpath = lv_fullpath 80 | user_action = lv_user_action 81 | EXCEPTIONS 82 | cntl_error = 1 83 | error_no_gui = 2 84 | not_supported_by_gui = 3 85 | invalid_default_file_name = 4 86 | OTHERS = 5. 87 | IF sy-subrc <> 0 OR 88 | lv_user_action = cl_gui_frontend_services=>action_cancel. 89 | RETURN. 90 | ENDIF. 91 | 92 | CALL METHOD cl_gui_frontend_services=>gui_download 93 | EXPORTING 94 | bin_filesize = lv_size 95 | filename = lv_fullpath 96 | filetype = 'BIN' 97 | CHANGING 98 | data_tab = lt_lines 99 | EXCEPTIONS 100 | file_write_error = 1 101 | no_batch = 2 102 | gui_refuse_filetransfer = 3 103 | invalid_type = 4 104 | no_authority = 5 105 | unknown_error = 6 106 | header_not_allowed = 7 107 | separator_not_allowed = 8 108 | filesize_not_allowed = 9 109 | header_too_long = 10 110 | dp_error_create = 11 111 | dp_error_send = 12 112 | dp_error_write = 13 113 | unknown_dp_error = 14 114 | access_denied = 15 115 | dp_out_of_memory = 16 116 | disk_full = 17 117 | dp_timeout = 18 118 | file_not_found = 19 119 | dataprovider_exception = 20 120 | control_flush_error = 21 121 | not_supported_by_gui = 22 122 | error_no_gui = 23 123 | OTHERS = 24. 124 | IF sy-subrc <> 0. 125 | MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno 126 | WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4. 127 | ENDIF. 128 | 129 | ENDFORM. -------------------------------------------------------------------------------- /src/new/smartform-as-pdf-attachment.abap: -------------------------------------------------------------------------------- 1 | FUNCTION ZFM_FORM_PDF. 2 | *"---------------------------------------------------------------------- 3 | *"*"Local Interface: 4 | *" IMPORTING 5 | *" REFERENCE(IM_FORM_NAME) TYPE TDSFNAME 6 | *" EXPORTING 7 | *" REFERENCE(EX_SIZE) TYPE SOOD-OBJLEN 8 | *" REFERENCE(EX_CONTENT) TYPE SOLI_TAB 9 | *"---------------------------------------------------------------------- 10 | 11 | *----------------------------------------------------------------------* 12 | * Data declarations 13 | *----------------------------------------------------------------------* 14 | DATA : LV_NAME TYPE RS38L_FNAM, " Variable to get the name of the function module 15 | LV_SIZE TYPE I, " Integer variable to get the size of the form 16 | WA_OUT_INFO TYPE SSFCRESCL, " Work area to get the output information of the smart form 17 | WA_OUTPUT_OPT TYPE SSFCTRLOP, " Work area to set the output control option of smart form 18 | WA_OUT TYPE SSFCOMPOP, " Work area to set the output options 19 | IT_LINES TYPE STANDARD TABLE OF TLINE, " Internal table to get the binary content of the smart form 20 | IT_OTF TYPE STANDARD TABLE OF ITCOO. " Internal table to hold the otf format of smart form 21 | 22 | 23 | 24 | 25 | *----------------------------------------------------------------------* 26 | * Calling the function module to get the function module generated for the smart form. 27 | *----------------------------------------------------------------------* 28 | CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME' 29 | EXPORTING 30 | FORMNAME = IM_FORM_NAME 31 | IMPORTING 32 | FM_NAME = LV_NAME 33 | EXCEPTIONS 34 | NO_FORM = 1 35 | NO_FUNCTION_MODULE = 2 36 | OTHERS = 3. 37 | 38 | 39 | 40 | *----------------------------------------------------------------------* 41 | * Calling the function module of the smart form and getting the content of the form. 42 | *----------------------------------------------------------------------* 43 | 44 | WA_OUTPUT_OPT-GETOTF = 'X'. 45 | WA_OUTPUT_OPT-DEVICE = 'PRINTER'. 46 | WA_OUTPUT_OPT-PREVIEW = ''. 47 | WA_OUTPUT_OPT-NO_DIALOG = 'X'. 48 | WA_OUT-TDDEST = 'LOCL'. 49 | 50 | * Note: Function module is to be replaced with the function module of the calling smart form 51 | * Data to be passed to the function module is to be added as the importing parameter 52 | 53 | CALL FUNCTION LV_NAME 54 | EXPORTING 55 | CONTROL_PARAMETERS = WA_OUTPUT_OPT 56 | OUTPUT_OPTIONS = WA_OUT 57 | USER_SETTINGS = ' ' 58 | IMPORTING 59 | JOB_OUTPUT_INFO = WA_OUT_INFO 60 | EXCEPTIONS 61 | FORMATTING_ERROR = 1 62 | INTERNAL_ERROR = 2 63 | SEND_ERROR = 3 64 | USER_CANCELED = 4 65 | OTHERS = 5. 66 | 67 | 68 | *----------------------------------------------------------------------* 69 | * Calling the function module to convert the otf data of smart form into binary contents 70 | *----------------------------------------------------------------------* 71 | 72 | IT_OTF = WA_OUT_INFO-OTFDATA. 73 | 74 | CALL FUNCTION 'CONVERT_OTF' 75 | EXPORTING 76 | FORMAT = 'PDF' 77 | MAX_LINEWIDTH = 132 78 | IMPORTING 79 | BIN_FILESIZE = LV_SIZE 80 | TABLES 81 | OTF = IT_OTF 82 | LINES = IT_LINES 83 | EXCEPTIONS 84 | ERR_MAX_LINEWIDTH = 1 85 | ERR_FORMAT = 2 86 | ERR_CONV_NOT_POSSIBLE = 3 87 | ERR_BAD_OTF = 4 88 | OTHERS = 5. 89 | 90 | 91 | *----------------------------------------------------------------------* 92 | * Calling the function module to convert the binary data of smart form into format attached to the mail 93 | *----------------------------------------------------------------------* 94 | 95 | CALL FUNCTION 'SX_TABLE_LINE_WIDTH_CHANGE' 96 | EXPORTING 97 | LINE_WIDTH_DST = 255 98 | TABLES 99 | CONTENT_IN = IT_LINES 100 | CONTENT_OUT = EX_CONTENT 101 | EXCEPTIONS 102 | ERR_LINE_WIDTH_SRC_TOO_LONG = 1 103 | ERR_LINE_WIDTH_DST_TOO_LONG = 2 104 | ERR_CONV_FAILED = 3 105 | OTHERS = 4. 106 | 107 | 108 | 109 | 110 | 111 | *----------------------------------------------------------------------* 112 | * Exporting the contents back to the calling program 113 | *----------------------------------------------------------------------* 114 | 115 | EX_SIZE = LV_SIZE. 116 | 117 | ENDFUNCTION. -------------------------------------------------------------------------------- /src/new/ZCL_HTTP/sample-proxy-token-form-1.abap: -------------------------------------------------------------------------------- 1 | FUNCTION z_cdc_get_user . 2 | *"---------------------------------------------------------------------- 3 | *"*"Local Interface: 4 | *" IMPORTING 5 | *" REFERENCE(IV_EMAIL) TYPE STRING OPTIONAL 6 | *" REFERENCE(IV_PHONE) TYPE STRING OPTIONAL 7 | *" EXPORTING 8 | *" REFERENCE(ES_USER) TYPE ZCDC_USER 9 | *" REFERENCE(ET_RETURN) TYPE BAPIRET2_TAB 10 | *"---------------------------------------------------------------------- 11 | 12 | DATA: lv_token TYPE string, 13 | lt_form TYPE wdy_key_value_list. 14 | 15 | CALL FUNCTION 'Z_CDC_GET_TOKEN' 16 | IMPORTING 17 | token = lv_token 18 | et_return = et_return. 19 | IF line_exists( et_return[ type = 'E' ] ). 20 | RETURN. 21 | ENDIF. 22 | 23 | DO 2 TIMES. 24 | 25 | CASE sy-index. 26 | WHEN 1. 27 | IF iv_email IS NOT INITIAL. 28 | lt_form = VALUE #( ( key = 'query' value = `SELECT * FROM emailAccounts WHERE profile.email="` && iv_email && `"` ) ). 29 | ELSE. 30 | lt_form = VALUE #( ( key = 'query' value = `SELECT * FROM emailAccounts WHERE phoneNumber="` && iv_phone && `"` ) ). 31 | ENDIF. 32 | WHEN 2. 33 | IF iv_email IS NOT INITIAL. 34 | lt_form = VALUE #( ( key = 'query' value = `SELECT * FROM accounts WHERE profile.email="` && iv_email && `"` ) ). 35 | ELSE. 36 | lt_form = VALUE #( ( key = 'query' value = `SELECT * FROM accounts WHERE phoneNumber="` && iv_phone && `"` ) ). 37 | ENDIF. 38 | ENDCASE. 39 | TRY. 40 | DATA(lv_response) = zcl_http=>request( ip_host = 'accounts.eu1.gigya.com' 41 | ip_endpoint = '/accounts.search' 42 | ip_proxy_host = c_proxy_host 43 | ip_proxy_port = c_proxy_port 44 | ip_token = lv_token 45 | it_form = lt_form ). 46 | CATCH zcx_http INTO DATA(lr_http_error). 47 | et_return = lr_http_error->get_msg( ). 48 | RETURN. 49 | ENDTRY. 50 | 51 | DATA(lr_response) = /ui2/cl_json=>generate( json = lv_response ). 52 | /ui2/cl_data_access=>create( ir_data = lr_response iv_component = `RESULTS[1]-UID`)->value( IMPORTING ev_data = es_user-uid ). 53 | IF es_user-uid IS INITIAL. 54 | DATA lv_msg TYPE string. 55 | /ui2/cl_data_access=>create( ir_data = lr_response iv_component = `ERRORDETAILS`)->value( IMPORTING ev_data = lv_msg ). 56 | DATA(ls_bapiret2) = zcl_string=>to_bapiret2( lv_msg ). 57 | APPEND ls_bapiret2 TO et_return. 58 | RETURN. 59 | ELSE. 60 | EXIT. 61 | ENDIF. 62 | 63 | ENDDO. 64 | 65 | /ui2/cl_data_access=>create( ir_data = lr_response 66 | iv_component = `RESULTS[1]-PREFERENCES-COLLECTINGDATA-ISCONSENTGRANTED` 67 | )->value( IMPORTING ev_data = es_user-collecting_data ). 68 | /ui2/cl_data_access=>create( ir_data = lr_response 69 | iv_component = `RESULTS[1]-PREFERENCES-COLLECTINGMARKETINGDATA-ISCONSENTGRANTED` 70 | )->value( IMPORTING ev_data = es_user-collecting_marketing_data ). 71 | /ui2/cl_data_access=>create( ir_data = lr_response 72 | iv_component = `RESULTS[1]-PREFERENCES-COLLECTINGSTATISTICSDATA-ISCONSENTGRANTED` 73 | )->value( IMPORTING ev_data = es_user-collecting_statistics_data ). 74 | /ui2/cl_data_access=>create( ir_data = lr_response 75 | iv_component = `RESULTS[1]-PREFERENCES-NOTIFICATIONSFROMCALLCENTER-ISCONSENTGRANTED` 76 | )->value( IMPORTING ev_data = es_user-notifications_from_call_center ). 77 | /ui2/cl_data_access=>create( ir_data = lr_response 78 | iv_component = `RESULTS[1]-PREFERENCES-NOTIFICATIONSVIASMS-ISCONSENTGRANTED` 79 | )->value( IMPORTING ev_data = es_user-notifications_via_sms ). 80 | /ui2/cl_data_access=>create( ir_data = lr_response 81 | iv_component = `RESULTS[1]-PREFERENCES-NOTIFICATIONSVIAWHATSAPPANDVIB-ISCONSENTGRANTED` 82 | )->value( IMPORTING ev_data = es_user-notifications_via_whatsapp ). 83 | /ui2/cl_data_access=>create( ir_data = lr_response 84 | iv_component = `RESULTS[1]-PREFERENCES-PERMANENTDATA-ISCONSENTGRANTED` 85 | )->value( IMPORTING ev_data = es_user-permanent_data ). 86 | /ui2/cl_data_access=>create( ir_data = lr_response 87 | iv_component = `RESULTS[1]-PREFERENCES-PRIVACY-PRIVACYPOLICY-ISCONSENTGRANTED` 88 | )->value( IMPORTING ev_data = es_user-privacy_policy ). 89 | /ui2/cl_data_access=>create( ir_data = lr_response 90 | iv_component = `RESULTS[1]-PREFERENCES-THMONELOYALTY-ISCONSENTGRANTED` 91 | )->value( IMPORTING ev_data = es_user-thm_one_loyalty ). 92 | 93 | ENDFUNCTION. -------------------------------------------------------------------------------- /src/new/SELECT_OPTIONS_RESTRICT.abap: -------------------------------------------------------------------------------- 1 | REPORT TESTREP. 2 | 3 | * Include type pool SSCR 4 | TYPE-POOLS SSCR. 5 | 6 | * Define the object to be passed to the RESTRICTION parameter 7 | DATA RESTRICT TYPE SSCR_RESTRICT. 8 | 9 | * Auxiliary objects for filling RESTRICT 10 | DATA OPT_LIST TYPE SSCR_OPT_LIST. 11 | DATA ASS TYPE SSCR_ASS. 12 | 13 | * Define the selection screen objects 14 | * First block: 3 SELECT-OPTIONS 15 | SELECTION-SCREEN BEGIN OF BLOCK BLOCK_0 WITH FRAME TITLE TEXT-BL0. 16 | SELECT-OPTIONS SEL_0_0 FOR SY-TVAR0. 17 | SELECT-OPTIONS SEL_0_1 FOR SY-TVAR1. 18 | SELECT-OPTIONS SEL_0_2 FOR SY-TVAR2. 19 | SELECT-OPTIONS SEL_0_3 FOR SY-TVAR3. 20 | SELECTION-SCREEN END OF BLOCK BLOCK_0. 21 | 22 | * Second block: 2 SELECT-OPTIONS 23 | SELECTION-SCREEN BEGIN OF BLOCK BLOCK_1 WITH FRAME TITLE TEXT-BL1. 24 | SELECT-OPTIONS SEL_1_0 FOR SY-SUBRC. 25 | SELECT-OPTIONS SEL_1_1 FOR SY-REPID. 26 | SELECTION-SCREEN END OF BLOCK BLOCK_1. 27 | 28 | INITIALIZATION. 29 | 30 | * Define the option list 31 | 32 | * ALL: All options allowed 33 | MOVE 'ALL' TO OPT_LIST-NAME. 34 | MOVE 'X' TO: OPT_LIST-OPTIONS-BT, 35 | OPT_LIST-OPTIONS-CP, 36 | OPT_LIST-OPTIONS-EQ, 37 | OPT_LIST-OPTIONS-GE, 38 | OPT_LIST-OPTIONS-GT, 39 | OPT_LIST-OPTIONS-LE, 40 | OPT_LIST-OPTIONS-LT, 41 | OPT_LIST-OPTIONS-NB, 42 | OPT_LIST-OPTIONS-NE, 43 | OPT_LIST-OPTIONS-NP. 44 | APPEND OPT_LIST TO RESTRICT-OPT_LIST_TAB. 45 | 46 | * NOPATTERN: CP and NP not allowed 47 | CLEAR OPT_LIST. 48 | MOVE 'NOPATTERN' TO OPT_LIST-NAME. 49 | MOVE 'X' TO: OPT_LIST-OPTIONS-BT, 50 | OPT_LIST-OPTIONS-EQ, 51 | OPT_LIST-OPTIONS-GE, 52 | OPT_LIST-OPTIONS-GT, 53 | OPT_LIST-OPTIONS-LE, 54 | OPT_LIST-OPTIONS-LT, 55 | OPT_LIST-OPTIONS-NB, 56 | OPT_LIST-OPTIONS-NE. 57 | APPEND OPT_LIST TO RESTRICT-OPT_LIST_TAB. 58 | 59 | * NOINTERVLS: BT and NB not allowed 60 | CLEAR OPT_LIST. 61 | MOVE 'NOINTERVLS' TO OPT_LIST-NAME. 62 | MOVE 'X' TO: OPT_LIST-OPTIONS-CP, 63 | OPT_LIST-OPTIONS-EQ, 64 | OPT_LIST-OPTIONS-GE, 65 | OPT_LIST-OPTIONS-GT, 66 | OPT_LIST-OPTIONS-LE, 67 | OPT_LIST-OPTIONS-LT, 68 | OPT_LIST-OPTIONS-NE, 69 | OPT_LIST-OPTIONS-NP. 70 | APPEND OPT_LIST TO RESTRICT-OPT_LIST_TAB. 71 | 72 | * EQ_AND_CP: only EQ and CP allowed 73 | CLEAR OPT_LIST. 74 | MOVE 'EQ_AND_CP' TO OPT_LIST-NAME. 75 | MOVE 'X' TO: OPT_LIST-OPTIONS-CP, 76 | OPT_LIST-OPTIONS-EQ. 77 | APPEND OPT_LIST TO RESTRICT-OPT_LIST_TAB. 78 | 79 | * JUST_EQ: Only EQ allowed 80 | CLEAR OPT_LIST. 81 | MOVE 'JUST_EQ' TO OPT_LIST-NAME. 82 | MOVE 'X' TO OPT_LIST-OPTIONS-EQ. 83 | APPEND OPT_LIST TO RESTRICT-OPT_LIST_TAB. 84 | 85 | * Assign selection screen objects to option list and sign 86 | 87 | * KIND = 'A': applies to all SELECT-OPTIONS 88 | MOVE: 'A' TO ASS-KIND, 89 | '*' TO ASS-SG_MAIN, 90 | 'NOPATTERN' TO ASS-OP_MAIN, 91 | 'NOINTERVLS' TO ASS-OP_ADDY. 92 | APPEND ASS TO RESTRICT-ASS_TAB. 93 | 94 | * KIND = 'B': applies to all SELECT-OPTIONS in block BLOCK_0, 95 | * that is, SEL_0_0, SEL_0_1, SEL_0_2 96 | CLEAR ASS. 97 | MOVE: 'B' TO ASS-KIND, 98 | 'BLOCK_0' TO ASS-NAME, 99 | 'I' TO ASS-SG_MAIN, 100 | '*' TO ASS-SG_ADDY, 101 | 'NOINTERVLS' TO ASS-OP_MAIN. 102 | APPEND ASS TO RESTRICT-ASS_TAB. 103 | 104 | * KIND = 'S': applies to SELECT-OPTION SEL-0-2 105 | CLEAR ASS. 106 | MOVE: 'S' TO ASS-KIND, 107 | 'SEL_0_2' TO ASS-NAME, 108 | 'I' TO ASS-SG_MAIN, 109 | '*' TO ASS-SG_ADDY, 110 | 'EQ_AND_CP' TO ASS-OP_MAIN, 111 | 'ALL' TO ASS-OP_ADDY. 112 | APPEND ASS TO RESTRICT-ASS_TAB. 113 | 114 | * KIND = 'S': Applies to SELECT-OPTION SEL_0_3 115 | CLEAR ASS. 116 | MOVE: 'S' TO ASS-KIND, 117 | 'SEL_0_3' TO ASS-NAME, 118 | 'I' TO ASS-SG_MAIN, 119 | 'N' TO ASS-SG_ADDY, 120 | 'JUST_EQ' TO ASS-OP_MAIN. 121 | APPEND ASS TO RESTRICT-ASS_TAB. 122 | 123 | * Call function module 124 | CALL FUNCTION 'SELECT_OPTIONS_RESTRICT' 125 | EXPORTING 126 | RESTRICTION = RESTRICT 127 | * DB = ' ' 128 | EXCEPTIONS 129 | TOO_LATE = 1 130 | REPEATED = 2 131 | NOT_DURING_SUBMIT = 3 132 | DB_CALL_AFTER_REPORT_CALL = 4 133 | SELOPT_WITHOUT_OPTIONS = 5 134 | SELOPT_WITHOUT_SIGNS = 6 135 | INVALID_SIGN = 7 136 | REPORT_CALL_AFTER_DB_ERROR = 8 137 | EMPTY_OPTION_LIST = 9 138 | INVALID_KIND = 10 139 | REPEATED_KIND_A = 11 140 | OTHERS = 12. 141 | 142 | * Exception handling 143 | IF SY-SUBRC NE 0. 144 | ... 145 | ENDIF. -------------------------------------------------------------------------------- /src/new/BAPI_PO_CREATE1.abap: -------------------------------------------------------------------------------- 1 | FUNCTION z_create_po. 2 | *"---------------------------------------------------------------------- 3 | *"*"Local Interface: 4 | *" IMPORTING 5 | *" VALUE(IS_PO_HEAD) TYPE ZST_POCREATE_HEAD 6 | *" VALUE(IT_PO_ITEM) TYPE ZTT_POCREATE_ITEM 7 | *" VALUE(IT_ATTACHMENT) TYPE ZTT_ATTACHMENT OPTIONAL 8 | *" EXPORTING 9 | *" VALUE(EV_EBELN) TYPE EBELN 10 | *" VALUE(ET_RETURN) TYPE BAPIRET2_TAB 11 | *"---------------------------------------------------------------------- 12 | 13 | DATA: ls_poheader TYPE bapimepoheader, 14 | ls_poheaderx TYPE bapimepoheaderx, 15 | lt_poitem TYPE STANDARD TABLE OF bapimepoitem, 16 | lt_poitemx TYPE STANDARD TABLE OF bapimepoitemx, 17 | lv_po_item TYPE bapimepoitem-po_item, 18 | lv_assigned_store_id TYPE werks_d, 19 | lt_mwdat TYPE STANDARD TABLE OF rtax1u15. 20 | 21 | TRY. 22 | cl_wsrs_plant=>get_and_check_plant( 23 | CHANGING 24 | cv_plant = lv_assigned_store_id ). 25 | CATCH cx_wsrs_plant INTO DATA(lx_wsrs_plant). 26 | et_return = VALUE #( ( type = 'E' id = 'ZFIORI_PO' number = '001' ) ). 27 | RETURN. 28 | ENDTRY. 29 | 30 | SELECT SINGLE t001k~bukrs AS comp_code, t001w~ekorg AS purch_org 31 | FROM t001k 32 | JOIN t001w ON t001w~bwkey = t001k~bwkey 33 | WHERE t001w~werks = @lv_assigned_store_id 34 | INTO CORRESPONDING FIELDS OF @ls_poheader. 35 | 36 | SELECT low FROM tvarvc 37 | WHERE name = 'FAPP4_EKGRP' 38 | INTO TABLE @DATA(lt_ekgrp). 39 | LOOP AT lt_ekgrp ASSIGNING FIELD-SYMBOL(). 40 | IF -low(4) = ls_poheader-purch_org. 41 | ls_poheader-pur_group = -low+5(3). 42 | ENDIF. 43 | ENDLOOP. 44 | 45 | SELECT SINGLE partner1 FROM but050 46 | WHERE partner2 = @lv_assigned_store_id 47 | AND date_to >= @is_po_head-aedat 48 | AND date_from <= @is_po_head-aedat 49 | AND reltyp = 'Z00001' 50 | INTO @ls_poheader-vendor. 51 | 52 | ls_poheader-doc_type = 'Z004'. 53 | ls_poheader-creat_date = is_po_head-aedat. 54 | ls_poheader-doc_date = is_po_head-aedat. 55 | ls_poheader-ref_1 = is_po_head-ihrez. 56 | 57 | ls_poheaderx-comp_code = abap_true. 58 | ls_poheaderx-doc_type = abap_true. 59 | ls_poheaderx-creat_date = abap_true. 60 | ls_poheaderx-vendor = abap_true. 61 | ls_poheaderx-purch_org = abap_true. 62 | ls_poheaderx-pur_group = abap_true. 63 | ls_poheaderx-doc_date = abap_true. 64 | ls_poheaderx-ref_1 = abap_true. 65 | 66 | SELECT SINGLE waers FROM t001 67 | WHERE bukrs = @ls_poheader-comp_code 68 | INTO @DATA(lv_waers). 69 | 70 | LOOP AT it_po_item ASSIGNING FIELD-SYMBOL(). 71 | ADD 10 TO lv_po_item. 72 | APPEND INITIAL LINE TO lt_poitem ASSIGNING FIELD-SYMBOL(). 73 | -po_item = lv_po_item. 74 | -material = -matnr. 75 | -plant = lv_assigned_store_id. 76 | -stge_loc = '0001'. 77 | -quantity = -menge. 78 | -po_unit = -meins. 79 | SELECT SINGLE mwskz FROM ztax 80 | WHERE percent = @-tax_percent 81 | AND begda <= @is_po_head-aedat 82 | AND endda >= @is_po_head-aedat 83 | INTO @-tax_code. 84 | 85 | CLEAR lt_mwdat. 86 | CALL FUNCTION 'CALCULATE_TAX_FROM_GROSSAMOUNT' 87 | EXPORTING 88 | i_bukrs = ls_poheader-comp_code 89 | i_mwskz = -tax_code 90 | i_waers = lv_waers 91 | i_wrbtr = CONV bseg-wrbtr( -brtwr ) 92 | TABLES 93 | t_mwdat = lt_mwdat 94 | EXCEPTIONS 95 | OTHERS = 19. 96 | IF lt_mwdat IS NOT INITIAL. 97 | -net_price = lt_mwdat[ 1 ]-kawrt. 98 | ENDIF. 99 | -price_unit = -menge. 100 | -po_price = '2'. 101 | 102 | -period_ind_expiration_date = 'D'. 103 | 104 | APPEND INITIAL LINE TO lt_poitemx ASSIGNING FIELD-SYMBOL(). 105 | -po_item = -po_item. 106 | -po_itemx = abap_true. 107 | -material = abap_true. 108 | -plant = abap_true. 109 | -stge_loc = abap_true. 110 | -quantity = abap_true. 111 | -po_unit = abap_true. 112 | -tax_code = abap_true. 113 | -net_price = abap_true. 114 | -price_unit = abap_true. 115 | -po_price = abap_true. 116 | -period_ind_expiration_date = ''. 117 | ENDLOOP. 118 | 119 | CALL FUNCTION 'BAPI_PO_CREATE1' 120 | EXPORTING 121 | poheader = ls_poheader 122 | poheaderx = ls_poheaderx 123 | IMPORTING 124 | exppurchaseorder = ev_ebeln 125 | TABLES 126 | return = et_return 127 | poitem = lt_poitem 128 | poitemx = lt_poitemx. 129 | 130 | IF NOT line_exists( et_return[ type = 'E' ] ). 131 | CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'. 132 | ENDIF. 133 | 134 | ENDFUNCTION. -------------------------------------------------------------------------------- /src/new/alv-search-help/forms.abap: -------------------------------------------------------------------------------- 1 | FORM display_alv. 2 | 3 | DATA: lt_fcat TYPE lvc_t_fcat, 4 | lt_excl TYPE ui_functions. 5 | 6 | IF go_grid IS NOT BOUND. 7 | 8 | IF gt_invo IS INITIAL. 9 | APPEND INITIAL LINE TO gt_invo. 10 | ENDIF. 11 | 12 | CREATE OBJECT go_cont 13 | EXPORTING 14 | container_name = 'ALVGRID' 15 | lifetime = cl_gui_control=>lifetime_dynpro 16 | EXCEPTIONS 17 | cntl_error = 1 18 | cntl_system_error = 2 19 | create_error = 3 20 | lifetime_error = 4 21 | lifetime_dynpro_dynpro_link = 5 22 | OTHERS = 6. 23 | 24 | CREATE OBJECT go_grid 25 | EXPORTING 26 | i_lifetime = cl_gui_control=>lifetime_dynpro 27 | i_parent = go_cont 28 | i_appl_events = abap_true "Triggers PAI/PBO on alv events 29 | EXCEPTIONS 30 | error_cntl_create = 1 31 | error_cntl_init = 2 32 | error_cntl_link = 3 33 | error_dp_create = 4 34 | OTHERS = 5. 35 | 36 | PERFORM build_fcat USING gt_invo CHANGING lt_fcat. 37 | * PERFORM change_fcat CHANGING lt_fcat. 38 | 39 | LOOP AT lt_fcat ASSIGNING FIELD-SYMBOL(). 40 | -ref_table = 'VBRP'. 41 | -edit = abap_true. 42 | -f4availabl = abap_true. 43 | ENDLOOP. 44 | 45 | go_grid->register_f4_for_fields( VALUE #( ( fieldname = 'VBELN' register = abap_true ) 46 | ( fieldname = 'POSNR' register = abap_true ) ) ). 47 | 48 | SET HANDLER lcl_events=>on_toolbar FOR go_grid. 49 | SET HANDLER lcl_events=>on_user_command FOR go_grid. 50 | SET HANDLER lcl_events=>on_after_user_command FOR go_grid. 51 | * SET HANDLER lcl_events=>on_double_click FOR go_grid. 52 | SET HANDLER lcl_events=>on_f4 FOR go_grid. 53 | 54 | PERFORM exclude_toolbar_functions CHANGING lt_excl. 55 | 56 | go_grid->set_table_for_first_display( 57 | EXPORTING 58 | is_layout = VALUE #( cwidth_opt = abap_true 59 | sel_mode = '' 60 | info_fname = '' ) 61 | it_toolbar_excluding = lt_excl 62 | CHANGING 63 | it_outtab = gt_invo 64 | it_fieldcatalog = lt_fcat 65 | EXCEPTIONS 66 | invalid_parameter_combination = 1 67 | program_error = 2 68 | too_many_lines = 3 69 | OTHERS = 4 ). 70 | 71 | ELSE. 72 | 73 | go_grid->set_frontend_layout( VALUE #( cwidth_opt = abap_true ) ). 74 | 75 | go_grid->refresh_table_display( 76 | EXPORTING 77 | is_stable = VALUE #( row = abap_true col = abap_true ) 78 | EXCEPTIONS 79 | finished = 1 80 | OTHERS = 2 ). 81 | 82 | ENDIF. 83 | 84 | ENDFORM. 85 | 86 | FORM build_fcat USING it_list TYPE ANY TABLE 87 | CHANGING ct_fcat TYPE lvc_t_fcat. 88 | cl_salv_table=>factory( 89 | IMPORTING 90 | r_salv_table = DATA(lo_salv) 91 | CHANGING 92 | t_table = it_list ). 93 | 94 | ct_fcat = cl_salv_controller_metadata=>get_lvc_fieldcatalog( 95 | r_columns = lo_salv->get_columns( ) 96 | r_aggregations = lo_salv->get_aggregations( ) ). 97 | 98 | LOOP AT ct_fcat ASSIGNING FIELD-SYMBOL(). 99 | -no_sign = abap_false. 100 | ENDLOOP. 101 | ENDFORM. 102 | 103 | FORM exclude_toolbar_functions CHANGING ct_excl TYPE ui_functions. 104 | APPEND '&DETAIL' TO ct_excl. 105 | APPEND '&SORT_ASC' TO ct_excl. 106 | APPEND '&SORT_DSC' TO ct_excl. 107 | APPEND '&FIND' TO ct_excl. 108 | APPEND '&PRINT_BACK' TO ct_excl. 109 | APPEND '&PRINT_BACK_PREVIEW' TO ct_excl. 110 | APPEND '&VEXCEL' TO ct_excl. 111 | APPEND '&XXL' TO ct_excl. 112 | APPEND '&AQW' TO ct_excl. 113 | APPEND '&PC' TO ct_excl. 114 | APPEND '&SEND' TO ct_excl. 115 | APPEND '&ML' TO ct_excl. 116 | APPEND '&HTML' TO ct_excl. 117 | APPEND '&COL0' TO ct_excl. 118 | APPEND '&INFO' TO ct_excl. 119 | APPEND cl_gui_alv_grid=>mc_mb_filter TO ct_excl. 120 | APPEND cl_gui_alv_grid=>mc_mb_sum TO ct_excl. 121 | APPEND cl_gui_alv_grid=>mc_mb_subtot TO ct_excl. 122 | APPEND cl_gui_alv_grid=>mc_mb_view TO ct_excl. 123 | APPEND '&CHECK' TO ct_excl. 124 | APPEND '&REFRESH' TO ct_excl. 125 | APPEND cl_gui_alv_grid=>mc_fc_loc_cut TO ct_excl. 126 | APPEND cl_gui_alv_grid=>mc_fc_loc_copy TO ct_excl. 127 | APPEND cl_gui_alv_grid=>mc_fc_loc_paste TO ct_excl. 128 | APPEND cl_gui_alv_grid=>mc_fc_loc_paste_new_row TO ct_excl. 129 | APPEND cl_gui_alv_grid=>mc_fc_loc_undo TO ct_excl. 130 | APPEND cl_gui_alv_grid=>mc_fc_loc_append_row TO ct_excl. 131 | APPEND cl_gui_alv_grid=>mc_fc_loc_insert_row TO ct_excl. 132 | APPEND cl_gui_alv_grid=>mc_fc_loc_delete_row TO ct_excl. 133 | APPEND cl_gui_alv_grid=>mc_fc_loc_copy_row TO ct_excl. 134 | ENDFORM. -------------------------------------------------------------------------------- /src/new/bsp-display-pdf.abap: -------------------------------------------------------------------------------- 1 | *** Event Handler *** 2 | DATA: lt_content TYPE cms_tab_txt_tline, 3 | lv_bin_file TYPE xstring, 4 | lv_bin_filesize TYPE i. 5 | 6 | FIELD-SYMBOLS: LIKE LINE OF lt_0128_ext. 7 | 8 | table ?= cl_htmlb_manager=>get_data( request = request 9 | name = 'tableView' 10 | id = 'LT_0128_EXT' ). 11 | table_event ?= table->data. 12 | 13 | READ TABLE lt_0128_ext ASSIGNING 14 | INDEX table_event->selectedrowindex. 15 | IF sy-subrc = 0. 16 | CALL FUNCTION 'READ_TEXT' 17 | EXPORTING 18 | id = -txtid 19 | language = -sprsl 20 | name = -obnam 21 | object = -objct 22 | TABLES 23 | lines = lt_content 24 | EXCEPTIONS 25 | id = 1 26 | language = 2 27 | name = 3 28 | not_found = 4 29 | object = 5 30 | reference_check = 6 31 | wrong_access_to_archive = 7 32 | OTHERS = 8. 33 | ENDIF. 34 | 35 | DATA: lv_fm_name TYPE rs38l_fnam, 36 | ls_control_parameters TYPE ssfctrlop, 37 | ls_output_options TYPE ssfcompop, 38 | ls_job_output_info TYPE ssfcrescl, 39 | lt_lines TYPE TABLE OF tline. 40 | 41 | CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME' 42 | EXPORTING 43 | formname = 'ZHR_BILDIRIM_MEKTUP' 44 | IMPORTING 45 | fm_name = lv_fm_name 46 | EXCEPTIONS 47 | no_form = 1 48 | no_function_module = 2 49 | OTHERS = 3. 50 | 51 | ls_control_parameters-getotf = 'X'. 52 | ls_control_parameters-no_dialog = 'X'. 53 | ls_control_parameters-device = 'PRINTER'. 54 | ls_output_options-tdprinter = 'I9SWIN'. 55 | 56 | CALL FUNCTION lv_fm_name 57 | EXPORTING 58 | control_parameters = ls_control_parameters 59 | output_options = ls_output_options 60 | ip_datum = -begda 61 | IMPORTING 62 | job_output_info = ls_job_output_info 63 | TABLES 64 | gt_line = lt_content 65 | EXCEPTIONS 66 | formatting_error = 1 67 | internal_error = 2 68 | send_error = 3 69 | user_canceled = 4 70 | OTHERS = 5. 71 | 72 | CALL FUNCTION 'CONVERT_OTF' 73 | EXPORTING 74 | format = 'PDF' 75 | max_linewidth = 132 76 | IMPORTING 77 | bin_filesize = lv_bin_filesize 78 | bin_file = lv_bin_file 79 | TABLES 80 | otf = ls_job_output_info-otfdata 81 | lines = lt_lines 82 | EXCEPTIONS 83 | err_max_linewidth = 1 84 | err_format = 2 85 | err_conv_not_possible = 3 86 | OTHERS = 4. 87 | 88 | CREATE OBJECT cached_response TYPE cl_http_response 89 | EXPORTING 90 | add_c_msg = 1. 91 | 92 | cached_response->set_data( data = lv_bin_file 93 | length = lv_bin_filesize ). 94 | 95 | cached_response->set_header_field( name = if_http_header_fields=>content_type 96 | value = 'application/pdf' ). 97 | cached_response->set_status( code = 200 reason = 'OK' ). 98 | cached_response->server_cache_expire_rel( expires_rel = 180 ). 99 | 100 | CALL FUNCTION 'GUID_CREATE' 101 | IMPORTING 102 | ev_guid_32 = guid. 103 | 104 | CALL METHOD cl_http_ext_csif=>access_info_get 105 | CHANGING 106 | crep_http = lv_crep_http 107 | EXCEPTIONS 108 | failed = 1 109 | OTHERS = 2. 110 | 111 | CONCATENATE runtime->application_url '/' guid l_pernr '.pdf' INTO pdf_link_128. 112 | 113 | cl_http_server=>server_cache_upload( url = pdf_link_128 114 | response = cached_response ). 115 | 116 | CONCATENATE 'http://' lv_crep_http-http_serv ':' 117 | lv_crep_http-http_port pdf_link_128 INTO pdf_link_128. 118 | 119 | *** main.htm *** 120 | 121 | <%@page language="abap" %> 122 | <%@extension name="htmlb" prefix="htmlb" %> 123 | <%@extension name="phtmlb" prefix="phtmlb" %> 124 | 125 | 127 | 128 | 129 | 130 | 134 | 135 | 136 | 137 | 138 | 139 | 140 | -------------------------------------------------------------------------------- /src/new/add-fied-to-table.abap: -------------------------------------------------------------------------------- 1 | FORM add_dynamic_data. 2 | 3 | TYPES: BEGIN OF lst_ausp, 4 | matnr TYPE mara-matnr, 5 | atinn TYPE ausp-atinn, 6 | atwrt TYPE ausp-atwrt, 7 | END OF lst_ausp. 8 | 9 | DATA: lv_objek TYPE c LENGTH 18, 10 | lv_max TYPE i, 11 | lt_ausp TYPE TABLE OF lst_ausp, 12 | lr_itab TYPE REF TO data, 13 | lv_count TYPE n LENGTH 2, 14 | lt_ausp_sorted TYPE SORTED TABLE OF lst_ausp WITH NON-UNIQUE KEY matnr. 15 | 16 | LOOP AT gt_itab. 17 | SELECT SINGLE cuobj FROM inob 18 | WHERE klart = '026' 19 | AND objek = @gt_itab-matnr 20 | INTO @DATA(lv_cuobj). 21 | IF sy-subrc = 0. 22 | CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT' 23 | EXPORTING 24 | input = lv_cuobj 25 | IMPORTING 26 | output = lv_objek. 27 | SELECT @gt_itab-matnr, atinn, atwrt FROM ausp 28 | WHERE objek = @lv_objek 29 | AND klart = '026' 30 | APPENDING TABLE @lt_ausp. 31 | IF sy-subrc = 0. 32 | IF sy-dbcnt > lv_max. 33 | lv_max = sy-dbcnt. 34 | ENDIF. 35 | ENDIF. 36 | ENDIF. 37 | ENDLOOP. 38 | 39 | DATA(lt_comp) = CAST cl_abap_structdescr( cl_abap_structdescr=>describe_by_data( gt_itab ) )->get_components( ). 40 | 41 | DATA(lt_fcat) = gt_fieldcat[]. 42 | SORT lt_fcat BY col_pos DESCENDING. 43 | READ TABLE lt_fcat INTO DATA(ls_fcat) INDEX 1. 44 | FREE lt_fcat. 45 | 46 | DO lv_max TIMES. 47 | lv_count = sy-index. 48 | APPEND INITIAL LINE TO lt_comp ASSIGNING FIELD-SYMBOL(). 49 | -name = 'ATINN' && lv_count. 50 | -type ?= cl_abap_elemdescr=>describe_by_name( 'ATINN' ). 51 | APPEND INITIAL LINE TO gt_fieldcat ASSIGNING FIELD-SYMBOL(). 52 | -fieldname = -name. 53 | -tabname = ls_fcat-tabname. 54 | ADD 1 TO ls_fcat-col_pos. 55 | -col_pos = ls_fcat-col_pos. 56 | -no_out = abap_true. 57 | -seltext_m = -seltext_l = -reptext_ddic = |{ TEXT-c01 } { lv_count }|. 58 | -seltext_s = |{ TEXT-c02 } { lv_count }|. 59 | -rollname = 'ATINN'. 60 | -ref_tabname = 'AUSP'. 61 | -ref_fieldname = 'ATINN'. 62 | -no_out = abap_true. 63 | APPEND INITIAL LINE TO lt_comp ASSIGNING . 64 | -name = 'ATBEZ' && lv_count. 65 | -type ?= cl_abap_elemdescr=>describe_by_name( 'ATBEZ' ). 66 | APPEND INITIAL LINE TO gt_fieldcat ASSIGNING . 67 | -fieldname = -name. 68 | -tabname = ls_fcat-tabname. 69 | ADD 1 TO ls_fcat-col_pos. 70 | -col_pos = ls_fcat-col_pos. 71 | -seltext_m = -seltext_l = -reptext_ddic = |{ TEXT-c03 } { lv_count }|. 72 | -seltext_s = |{ TEXT-c04 } { lv_count }|. 73 | -rollname = 'ATBEZ'. 74 | -ref_tabname = 'CABNT'. 75 | -ref_fieldname = 'ATBEZ'. 76 | APPEND INITIAL LINE TO lt_comp ASSIGNING . 77 | -name = 'ATWRT' && lv_count. 78 | -type ?= cl_abap_elemdescr=>describe_by_name( 'ATWRT' ). 79 | APPEND INITIAL LINE TO gt_fieldcat ASSIGNING . 80 | -tabname = ls_fcat-tabname. 81 | -fieldname = -name. 82 | ADD 1 TO ls_fcat-col_pos. 83 | -col_pos = ls_fcat-col_pos. 84 | -seltext_m = -seltext_l = -reptext_ddic = |{ TEXT-c05 } { lv_count }|. 85 | -seltext_s = |{ TEXT-c06 } { lv_count }|. 86 | -rollname = 'ATWRT'. 87 | -ref_tabname = 'AUSP'. 88 | -ref_fieldname = 'ATWRT'. 89 | ENDDO. 90 | 91 | DATA(lo_tabledescr) = cl_abap_tabledescr=>create( cl_abap_structdescr=>create( lt_comp ) ). 92 | CREATE DATA lr_itab TYPE HANDLE lo_tabledescr. 93 | ASSIGN lr_itab->* TO . 94 | 95 | SORT lt_ausp BY matnr atinn. 96 | lt_ausp_sorted = lt_ausp. 97 | 98 | SORT lt_ausp BY atinn. 99 | DELETE ADJACENT DUPLICATES FROM lt_ausp COMPARING atinn. 100 | 101 | IF lt_ausp IS NOT INITIAL. 102 | SELECT atinn, atbez FROM cabnt 103 | FOR ALL ENTRIES IN @lt_ausp 104 | WHERE atinn = @lt_ausp-atinn 105 | AND spras = @p_spras 106 | AND adzhl = @space 107 | INTO TABLE @DATA(lt_cabnt). 108 | SORT lt_cabnt BY atinn. 109 | ENDIF. 110 | FREE lt_ausp. 111 | 112 | LOOP AT gt_itab. 113 | APPEND INITIAL LINE TO ASSIGNING FIELD-SYMBOL(). 114 | MOVE-CORRESPONDING gt_itab TO . 115 | lv_count = '00'. 116 | LOOP AT lt_ausp_sorted ASSIGNING FIELD-SYMBOL() WHERE matnr = gt_itab-matnr. 117 | ADD 1 TO lv_count. 118 | ASSIGN COMPONENT |ATINN{ lv_count }| OF STRUCTURE TO FIELD-SYMBOL(). 119 | = -atinn. 120 | ASSIGN COMPONENT |ATWRT{ lv_count }| OF STRUCTURE TO . 121 | = -atwrt. 122 | READ TABLE lt_cabnt ASSIGNING FIELD-SYMBOL() WITH KEY atinn = -atinn BINARY SEARCH. 123 | IF sy-subrc = 0. 124 | ASSIGN COMPONENT |ATBEZ{ lv_count }| OF STRUCTURE TO . 125 | = -atbez. 126 | ENDIF. 127 | ENDLOOP. 128 | ENDLOOP. 129 | 130 | ENDFORM. -------------------------------------------------------------------------------- /src/new/zreq.txt: -------------------------------------------------------------------------------- 1 | REPORT zreq LINE-SIZE 170. 2 | 3 | 4 | * Selection screen * 5 | 6 | PARAMETERS p_trkorr LIKE e070-trkorr OBLIGATORY. 7 | 8 | PARAMETERS p_lpath LIKE rlgrap-filename OBLIGATORY DEFAULT 'c:\temp\'. 9 | 10 | 11 | SELECTION-SCREEN SKIP. 12 | 13 | 14 | PARAMETERS p_down RADIOBUTTON GROUP func DEFAULT 'X'. 15 | 16 | PARAMETERS p_up RADIOBUTTON GROUP func. 17 | 18 | 19 | * Global data * 20 | 21 | TYPE-POOLS sabc. 22 | 23 | 24 | DATA pos TYPE i. 25 | 26 | DATA temp TYPE c. 27 | 28 | 29 | DATA path LIKE rlgrap-filename. 30 | 31 | DATA path_cofile LIKE rlgrap-filename. 32 | 33 | DATA path_data LIKE rlgrap-filename. 34 | 35 | DATA path_bin LIKE rlgrap-filename. 36 | 37 | 38 | DATA fk LIKE rlgrap-filename. 39 | 40 | DATA fr LIKE rlgrap-filename. 41 | 42 | DATA fd LIKE rlgrap-filename. 43 | 44 | 45 | DATA separator TYPE c. 46 | 47 | 48 | * Complete local path * 49 | 50 | AT SELECTION-SCREEN. 51 | 52 | pos = strlen( p_lpath ) - 1. 53 | 54 | temp = p_lpath+pos(1). 55 | 56 | CHECK NOT temp = '\'. 57 | 58 | CONCATENATE p_lpath '\' INTO p_lpath. 59 | 60 | 61 | START-OF-SELECTION. 62 | 63 | 64 | * Determine transport base directory * 65 | 66 | CALL 'C_SAPGPARAM' ID 'NAME' FIELD 'DIR_TRANS' 67 | 68 | ID 'VALUE' FIELD path. 69 | 70 | *path = '\\bekotest\saploc\trans'. 71 | 72 | 73 | * Determine file/path separator * 74 | 75 | IF sy-opsys = 'Windows NT'. 76 | 77 | separator = '\'. 78 | 79 | ELSE. 80 | 81 | separator = '/'. 82 | 83 | ENDIF. 84 | 85 | 86 | * Determine transport directories * 87 | 88 | CONCATENATE path separator 'cofiles' separator INTO path_cofile. 89 | 90 | CONCATENATE path separator 'data' separator INTO path_data. 91 | 92 | CONCATENATE path separator 'data' separator INTO path_bin. 93 | 94 | WRITE / 'Paths:'. 95 | 96 | WRITE: / path_cofile,path_data,path_bin. 97 | 98 | SKIP. 99 | 100 | 101 | * Build filenames * 102 | 103 | CONCATENATE p_trkorr+3(7) p_trkorr+0(3) INTO fk SEPARATED BY '.'. 104 | 105 | CONCATENATE 'R' p_trkorr+4(6) '.' p_trkorr+0(3) INTO fr. 106 | 107 | CONCATENATE 'D' p_trkorr+4(6) '.' p_trkorr+0(3) INTO fd. 108 | 109 | 110 | * Up- or download transport request * 111 | 112 | IF p_down = 'X'. 113 | 114 | PERFORM download USING path_cofile p_lpath fk. 115 | 116 | PERFORM download USING path_data p_lpath fr. 117 | 118 | PERFORM download USING path_data p_lpath fd. 119 | 120 | ELSE. 121 | 122 | PERFORM upload USING p_lpath path_cofile fk. 123 | 124 | PERFORM upload USING p_lpath path_data fr. 125 | 126 | PERFORM upload USING p_lpath path_data fd. 127 | 128 | ENDIF. 129 | 130 | 131 | * Download files * 132 | 133 | FORM download USING VALUE(srcpath) LIKE rlgrap-filename 134 | 135 | VALUE(dstpath) LIKE rlgrap-filename 136 | 137 | VALUE(file) LIKE rlgrap-filename. 138 | 139 | DATA BEGIN OF buffer OCCURS 0. 140 | 141 | DATA data(1024) TYPE x. 142 | 143 | DATA END OF buffer. 144 | 145 | 146 | DATA filename TYPE rlgrap-filename. 147 | 148 | DATA reclen TYPE i. 149 | 150 | DATA filelen TYPE i. 151 | 152 | 153 | * Read input file * 154 | 155 | CONCATENATE srcpath file INTO filename. 156 | 157 | OPEN DATASET filename FOR INPUT IN BINARY MODE. 158 | 159 | CHECK sy-subrc = 0. 160 | 161 | WHILE sy-subrc = 0. 162 | 163 | READ DATASET filename INTO buffer LENGTH reclen. 164 | 165 | filelen = filelen + reclen. 166 | 167 | APPEND buffer. 168 | 169 | ENDWHILE. 170 | 171 | CLOSE DATASET filename. 172 | 173 | 174 | * Download file * 175 | 176 | CONCATENATE dstpath file INTO filename. 177 | 178 | CALL FUNCTION 'WS_DOWNLOAD' 179 | EXPORTING 180 | bin_filesize = filelen 181 | filename = filename 182 | filetype = 'BIN' 183 | TABLES 184 | data_tab = buffer 185 | EXCEPTIONS 186 | OTHERS = 1. 187 | 188 | CHECK sy-subrc = 0. 189 | 190 | WRITE: / 'Download:',(150) file. 191 | 192 | ENDFORM. 193 | 194 | 195 | * Upload file * 196 | 197 | FORM upload USING VALUE(srcpath) LIKE rlgrap-filename 198 | 199 | VALUE(dstpath) LIKE rlgrap-filename 200 | 201 | VALUE(file) LIKE rlgrap-filename. 202 | 203 | DATA BEGIN OF buffer OCCURS 0. 204 | 205 | DATA data(1024) TYPE x. 206 | 207 | DATA END OF buffer. 208 | 209 | 210 | DATA filename TYPE rlgrap-filename. 211 | 212 | DATA reclen TYPE i. 213 | 214 | DATA filelen TYPE i. 215 | 216 | DATA result TYPE c. 217 | 218 | 219 | * Check if file exists * 220 | 221 | CONCATENATE srcpath file INTO filename. 222 | 223 | CALL FUNCTION 'WS_QUERY' 224 | EXPORTING 225 | filename = filename 226 | query = 'FE' 227 | IMPORTING 228 | return = result 229 | EXCEPTIONS 230 | OTHERS = 1. 231 | 232 | CHECK sy-subrc = 0 AND result = '1'. 233 | 234 | 235 | * Upload file * 236 | 237 | CALL FUNCTION 'WS_UPLOAD' 238 | EXPORTING 239 | filename = filename 240 | filetype = 'BIN' 241 | IMPORTING 242 | filelength = filelen 243 | TABLES 244 | data_tab = buffer 245 | EXCEPTIONS 246 | OTHERS = 1. 247 | 248 | 249 | * Write file to server * 250 | 251 | CONCATENATE dstpath file INTO filename. 252 | 253 | OPEN DATASET filename FOR OUTPUT IN BINARY MODE. 254 | 255 | CHECK sy-subrc = 0. 256 | 257 | LOOP AT buffer. 258 | 259 | DESCRIBE FIELD buffer-data LENGTH reclen IN BYTE MODE. 260 | 261 | IF filelen > reclen. 262 | 263 | filelen = filelen - reclen. 264 | 265 | ELSE. 266 | 267 | reclen = filelen. 268 | 269 | ENDIF. 270 | 271 | TRANSFER buffer TO filename LENGTH reclen. 272 | 273 | ENDLOOP. 274 | 275 | CLOSE DATASET filename. 276 | 277 | WRITE: / 'Upload:',(150) file. 278 | 279 | ENDFORM. -------------------------------------------------------------------------------- /src/new/Z_RKD_WORD_WRAP.abap: -------------------------------------------------------------------------------- 1 | FUNCTION Z_RKD_WORD_WRAP. 2 | *"---------------------------------------------------------------------- 3 | *"*"Local Interface: 4 | *" IMPORTING 5 | *" VALUE(TEXTLINE) TYPE C 6 | *" VALUE(DELIMITER) TYPE C DEFAULT SPACE 7 | *" VALUE(OUTPUTLEN) TYPE I DEFAULT 35 8 | *" EXPORTING 9 | *" VALUE(OUT_LINE1) TYPE C 10 | *" VALUE(OUT_LINE2) TYPE C 11 | *" VALUE(OUT_LINE3) TYPE C 12 | *" VALUE(OUT_LINE4) TYPE C 13 | *" TABLES 14 | *" OUT_LINES OPTIONAL 15 | *" EXCEPTIONS 16 | *" OUTPUTLEN_TOO_LARGE 17 | *"---------------------------------------------------------------------- 18 | 19 | * complete re-design with note 1307869 20 | CONSTANTS: MAX_OUTPUTLEN TYPE I VALUE 256. 21 | 22 | data: ld_line(max_outputlen) type c, 23 | ld_str_len type i, 24 | ld_fieldlen type i, 25 | begin of lt_lines occurs 0, 26 | line(256) type c, 27 | end of lt_lines. 28 | 29 | * initial checks 30 | if outputlen gt max_outputlen. 31 | raise outputlen_too_large. 32 | endif. 33 | describe field textline length ld_fieldlen in character mode. 34 | if ld_fieldlen lt outputlen. 35 | outputlen = ld_fieldlen. 36 | endif. 37 | 38 | * check for split-option 39 | ld_str_len = strlen( textline ). 40 | if delimiter eq space or 41 | ld_str_len gt outputlen. 42 | * complex split: last occurrence of delimiter before split-position 43 | perform split_complex tables lt_lines 44 | using textline 45 | outputlen 46 | delimiter. 47 | else. 48 | * do a simple split with the delimiter 49 | split textline at delimiter into table lt_lines 50 | in character mode. 51 | endif. 52 | 53 | * fill the return parameters 54 | loop at lt_lines. 55 | case sy-tabix. 56 | when 1. out_line1 = lt_lines-line. 57 | when 2. out_line2 = lt_lines-line. 58 | when 3. out_line3 = lt_lines-line. 59 | when 4. out_line4 = lt_lines-line. 60 | endcase. 61 | ld_line = lt_lines-line. 62 | append ld_line to out_lines. 63 | endloop. 64 | 65 | ENDFUNCTION. 66 | *&---------------------------------------------------------------------* 67 | *& Form SPLIT_COMPLEX "new with note 1307869 68 | *&---------------------------------------------------------------------* 69 | * split the ID_TEXT at last delimiter ID_DEL with a maximum 70 | * length ID_LEN 71 | *&---------------------------------------------------------------------* 72 | form split_complex tables ct_lines 73 | using id_text type c 74 | id_len type i 75 | id_del type c. 76 | 77 | data: ld_len type i, 78 | ld_pos type i, 79 | ld_strlen type i. 80 | * ld_string(256) type c. 81 | 82 | field-symbols: type c, 83 | type c. "H1407684 84 | 85 | assign id_text to . "H1407684 86 | refresh ct_lines. 87 | * get starting position 88 | CL_SCP_LINEBREAK_UTIL=>STRING_SPLIT_AT_POSITION( 89 | exporting im_string = "H1407684 90 | im_pos_tech = id_len 91 | importing ex_pos_tech = ld_pos ). 92 | * check each single character - processing rigth to left 93 | do. 94 | * check for exit 95 | ld_strlen = strlen( ). "H1407684 96 | ld_len = ld_pos. 97 | ld_pos = ld_pos - 1. 98 | if ld_pos lt 0 or ld_strlen eq 0. 99 | exit. 100 | endif. 101 | * get actual character 102 | CL_SCP_LINEBREAK_UTIL=>STRING_SPLIT_AT_POSITION( 103 | exporting im_string = "H1407684 104 | im_pos_tech = ld_pos 105 | importing ex_pos_tech = ld_pos ). 106 | ld_len = ld_len - ld_pos. 107 | assign +ld_pos(ld_len) to casting. "H1407684 108 | * check actual character 109 | if ( eq id_del and ld_pos ne 0 ) or 110 | ( ld_strlen le id_len ). 111 | * delimiter found or string is short enough 112 | if ld_pos gt 0. "H1365149 113 | concatenate (ld_pos) "H1407684 114 | into ct_lines RESPECTING BLANKS. "H1355908 115 | else. "H1365149 116 | ct_lines = . "H1365149 117 | endif. "H1365149 118 | append ct_lines. 119 | shift by ld_pos places. "H1407684 120 | shift by ld_len places. "H1407684 121 | CL_SCP_LINEBREAK_UTIL=>STRING_SPLIT_AT_POSITION( 122 | exporting im_string = "H1407684 123 | im_pos_tech = id_len 124 | importing ex_pos_tech = ld_pos ). 125 | elseif ld_pos = 0. 126 | * no delimiter found - do a break at ID_LEN 127 | CL_SCP_LINEBREAK_UTIL=>STRING_SPLIT_AT_POSITION( 128 | exporting im_string = "H1407684 129 | im_pos_tech = id_len 130 | importing ex_pos_tech = ld_pos ). 131 | ct_lines = (ld_pos). "H1407684 132 | append ct_lines. 133 | shift by ld_pos places. "H1407684 134 | CL_SCP_LINEBREAK_UTIL=>STRING_SPLIT_AT_POSITION( 135 | exporting im_string = "H1407684 136 | im_pos_tech = id_len 137 | importing ex_pos_tech = ld_pos ). 138 | endif. 139 | enddo. 140 | 141 | endform. -------------------------------------------------------------------------------- /src/lib-package/template/yp_alv_grid.prog.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | YP_ALV_GRID 7 | 1 8 | T 9 | X 10 | X 11 | 12 | 13 | 14 |
15 | YP_ALV_GRID 16 | 0001 17 | T 18 | List 19 | N 20 | 0001 21 | 027 22 | 120 23 |
24 | 25 | 26 | SCREEN 27 | SCREEN 28 | 29 | 30 | 31 | 32 | SCREEN 33 | SCREEN 34 | OKCODE 35 | OKCODE 36 | ____________________ 37 | 020 38 | 020 39 | 001 40 | CHAR 41 | X 42 | 43 | 44 | 45 | 46 | 47 | PROCESS BEFORE OUTPUT. 48 | 49 | 50 | MODULE pbo. 51 | 52 | 53 | 54 | PROCESS AFTER INPUT. 55 | 56 | 57 | MODULE pai. 58 | 59 | 60 | 61 | 0 62 | 0 63 | 2 64 | 0 65 | 0 66 | 2 67 | 68 |
69 |
70 | 71 | 72 | 000001 73 | 000001 74 | 75 | 76 | 77 | STATUS 78 | D 79 | 000001 80 | 000001 81 | 0001 82 | List screen 83 | 84 | 85 | 86 | 87 | BACK 88 | 001 89 | S 90 | Back 91 | 92 | 93 | CANC 94 | 001 95 | S 96 | ICON_CANCEL 97 | @0W@ 98 | Cancel 99 | 100 | 101 | EXIT 102 | 001 103 | S 104 | Exit 105 | 106 | 107 | SAVE 108 | 001 109 | S 110 | ICON_SYSTEM_SAVE 111 | @2L@ 112 | Save 113 | 114 | 115 | 116 | 117 | 000001 118 | 03 119 | BACK 120 | 001 121 | 122 | 123 | 000001 124 | 11 125 | SAVE 126 | 001 127 | 128 | 129 | 000001 130 | 12 131 | CANC 132 | 001 133 | 134 | 135 | 000001 136 | 15 137 | EXIT 138 | 001 139 | 140 | 141 | 142 | 143 | STATUS 144 | BACK 145 | 146 | 147 | STATUS 148 | CANC 149 | 150 | 151 | STATUS 152 | EXIT 153 | 154 | 155 | STATUS 156 | SAVE 157 | 158 | 159 | 160 | 161 | A 162 | 000001 163 | D 164 | List screen 165 | 166 | 167 | P 168 | 000001 169 | D 170 | List screen 171 | 172 | 173 | B 174 | 000001 175 | 0001 176 | D 177 | List screen 178 | 179 | 180 | 181 | 182 | TITLE 183 | & 184 | 185 | 186 | 187 | 188 | 189 | I 190 | S01 191 | Filter criteria 192 | 15 193 | 194 | 195 | R 196 | Interactive CL_GUI_ALV_GRID template 197 | 36 198 | 199 | 200 | S 201 | S_MTART 202 | . 203 | 9 204 | D 205 | 206 | 207 |
208 |
209 |
210 | -------------------------------------------------------------------------------- /src/new/ZCL_BDC/usage.abap: -------------------------------------------------------------------------------- 1 | DATA(lo_po) = NEW zcl_bdc( ). 2 | 3 | lo_po->bdc_dynpro( program = 'SAPLMEGUI' dynpro = '0014' ). 4 | lo_po->bdc_field( fnam = 'BDC_OKCODE' fval = '=MECHOB' ). 5 | lo_po->bdc_field( fnam = 'BDC_SUBSCR' fval = 'SAPLMEGUI 0010SUB0' ). 6 | lo_po->bdc_field( fnam = 'BDC_SUBSCR' fval = 'SAPLMEGUI 0030SUB0' ). 7 | lo_po->bdc_field( fnam = 'BDC_SUBSCR' fval = 'SAPLMEGUI 2000SUB0' ). 8 | lo_po->bdc_field( fnam = 'BDC_SUBSCR' fval = 'SAPLMEGUI 1105SUB1' ). 9 | lo_po->bdc_field( fnam = 'MEPO_TOPLINE-BSART' fval = 'NB' ). 10 | lo_po->bdc_field( fnam = 'BDC_SUBSCR' fval = 'SAPLMEVIEWS 1100SUB1' ). 11 | lo_po->bdc_field( fnam = 'BDC_SUBSCR' fval = 'SAPLMEVIEWS 4000SUB1' ). 12 | lo_po->bdc_field( fnam = 'BDC_SUBSCR' fval = 'SAPLMEVIEWS 1200SUB2' ). 13 | lo_po->bdc_field( fnam = 'BDC_SUBSCR' fval = 'SAPLMEVIEWS 2000SUB1' ). 14 | lo_po->bdc_field( fnam = 'BDC_SUBSCR' fval = 'SAPLMEVIEWS 1100SUB2' ). 15 | lo_po->bdc_field( fnam = 'BDC_SUBSCR' fval = 'SAPLMEVIEWS 4001SUB1' ). 16 | lo_po->bdc_field( fnam = 'BDC_SUBSCR' fval = 'SAPLMEVIEWS 1200SUB2' ). 17 | lo_po->bdc_field( fnam = 'BDC_SUBSCR' fval = 'SAPLMEVIEWS 2000SUB1' ). 18 | lo_po->bdc_field( fnam = 'BDC_SUBSCR' fval = 'SAPLMEVIEWS 1100SUB3' ). 19 | lo_po->bdc_field( fnam = 'BDC_SUBSCR' fval = 'SAPLMEVIEWS 4002SUB1' ). 20 | lo_po->bdc_field( fnam = 'BDC_SUBSCR' fval = 'SAPLMEVIEWS 1200SUB2' ). 21 | lo_po->bdc_field( fnam = 'BDC_SUBSCR' fval = 'SAPLMEGUI 1301SUB1' ). 22 | lo_po->bdc_field( fnam = 'BDC_SUBSCR' fval = 'SAPLMEGUI 6000SUB1' ). 23 | lo_po->bdc_field( fnam = 'DYN_6000-LIST' fval = ' 1' ). 24 | lo_po->bdc_field( fnam = 'BDC_SUBSCR' fval = 'SAPLMEGUI 1303SUB2' ). 25 | lo_po->bdc_field( fnam = 'BDC_SUBSCR' fval = 'SAPLMEVIEWS 1102TABSTRIPCONTROL1SUB' ). 26 | lo_po->bdc_field( fnam = 'BDC_SUBSCR' fval = 'SAPLMEGUI 1319SUB1' ). 27 | lo_po->bdc_field( fnam = 'BDC_CURSOR' fval = 'MEPO1319-MATKL' ). 28 | * lo_po->bdc_field( fnam = 'MEPO1319-SPINF' fval = 'X' ). 29 | lo_po->bdc_dynpro( program = 'SAPLMEGUI' dynpro = '0002' ). 30 | lo_po->bdc_field( fnam = 'BDC_OKCODE' fval = '=MEOK' ). 31 | lo_po->bdc_field( fnam = 'BDC_SUBSCR' fval = 'SAPLMEGUI 0003SUB0' ). 32 | lo_po->bdc_field( fnam = 'BDC_CURSOR' fval = 'MEPO_SELECT-EBELN' ). 33 | lo_po->bdc_field( fnam = 'MEPO_SELECT-EBELN' fval = ls_lips-vgbel ). 34 | lo_po->bdc_field( fnam = 'MEPO_SELECT-BSTYP_F' fval = 'X' ). 35 | lo_po->bdc_dynpro( program = 'SAPLMEGUI' dynpro = '0014' ). 36 | lo_po->bdc_field( fnam = 'BDC_OKCODE' fval = '=MENACH' ). 37 | lo_po->bdc_field( fnam = 'BDC_SUBSCR' fval = 'SAPLMEGUI 0010SUB0' ). 38 | lo_po->bdc_field( fnam = 'BDC_SUBSCR' fval = 'SAPLMEGUI 0030SUB0' ). 39 | lo_po->bdc_field( fnam = 'BDC_SUBSCR' fval = 'SAPLMEGUI 2000SUB0' ). 40 | lo_po->bdc_field( fnam = 'BDC_SUBSCR' fval = 'SAPLMEGUI 1105SUB1' ). 41 | lo_po->bdc_field( fnam = 'MEPO_TOPLINE-BSART' fval = 'NB' ). 42 | lo_po->bdc_field( fnam = 'BDC_SUBSCR' fval = 'SAPLMEVIEWS 1100SUB1' ). 43 | lo_po->bdc_field( fnam = 'BDC_SUBSCR' fval = 'SAPLMEVIEWS 4000SUB1' ). 44 | lo_po->bdc_field( fnam = 'BDC_SUBSCR' fval = 'SAPLMEVIEWS 1200SUB2' ). 45 | lo_po->bdc_field( fnam = 'BDC_SUBSCR' fval = 'SAPLMEVIEWS 2000SUB1' ). 46 | lo_po->bdc_field( fnam = 'BDC_SUBSCR' fval = 'SAPLMEVIEWS 1100SUB2' ). 47 | lo_po->bdc_field( fnam = 'BDC_SUBSCR' fval = 'SAPLMEVIEWS 4001SUB1' ). 48 | lo_po->bdc_field( fnam = 'BDC_SUBSCR' fval = 'SAPLMEVIEWS 1200SUB2' ). 49 | lo_po->bdc_field( fnam = 'BDC_SUBSCR' fval = 'SAPLMEVIEWS 2000SUB1' ). 50 | lo_po->bdc_field( fnam = 'BDC_SUBSCR' fval = 'SAPLMEVIEWS 1100SUB3' ). 51 | lo_po->bdc_field( fnam = 'BDC_SUBSCR' fval = 'SAPLMEVIEWS 4002SUB1' ). 52 | lo_po->bdc_field( fnam = 'BDC_SUBSCR' fval = 'SAPLMEVIEWS 1200SUB2' ). 53 | lo_po->bdc_field( fnam = 'BDC_SUBSCR' fval = 'SAPLMEGUI 1301SUB1' ). 54 | lo_po->bdc_field( fnam = 'BDC_SUBSCR' fval = 'SAPLMEGUI 6000SUB1' ). 55 | lo_po->bdc_field( fnam = 'DYN_6000-LIST' fval = ' 1' ). 56 | lo_po->bdc_field( fnam = 'BDC_SUBSCR' fval = 'SAPLMEGUI 1303SUB2' ). 57 | lo_po->bdc_field( fnam = 'BDC_SUBSCR' fval = 'SAPLMEVIEWS 1102TABSTRIPCONTROL1SUB' ). 58 | lo_po->bdc_field( fnam = 'BDC_SUBSCR' fval = 'SAPLMEGUI 1319SUB1' ). 59 | * lo_po->bdc_field( fnam = 'MEPO1319-SPINF' fval = 'X' ). 60 | lo_po->bdc_field( fnam = 'BDC_SUBSCR' fval = 'SAPLMEVIEWS 1000SUB2' ). 61 | lo_po->bdc_field( fnam = 'BDC_SUBSCR' fval = 'SAPLMEVIEWS 1000SUB3' ). 62 | lo_po->bdc_field( fnam = 'BDC_SUBSCR' fval = 'SAPLMEVIEWS 1000SUB4' ). 63 | lo_po->bdc_dynpro( program = 'SAPDV70A' dynpro = '0100' ). 64 | lo_po->bdc_field( fnam = 'BDC_CURSOR' fval = 'DV70A-STATUSICON(02)' ). 65 | lo_po->bdc_field( fnam = 'BDC_OKCODE' fval = '=V70R' ). 66 | lo_po->bdc_field( fnam = 'DV70A-SELKZ(02)' fval = 'X' ). 67 | lo_po->bdc_dynpro( program = 'SAPDV70A' dynpro = '0100' ). 68 | lo_po->bdc_field( fnam = 'BDC_CURSOR' fval = 'DNAST-KSCHL(02)' ). 69 | lo_po->bdc_field( fnam = 'BDC_OKCODE' fval = '=V70S' ). 70 | 71 | DATA(lv_mode) = CONV ctu_mode('N'). 72 | DATA(lv_update) = CONV ctu_update('S'). 73 | 74 | DATA(lt_msg) = lo_po->bdc_transaction( 75 | p_tcode = 'ME22N' 76 | p_ctu = abap_true 77 | p_mode = lv_mode 78 | p_update = lv_update ). -------------------------------------------------------------------------------- /src/new/ui2_cl_json.abap: -------------------------------------------------------------------------------- 1 | FUNCTION ZFIO_GET_CHART_MANIFEST. 2 | *"---------------------------------------------------------------------- 3 | *"*"Local Interface: 4 | *" IMPORTING 5 | *" VALUE(IV_VIEW_ID) TYPE RSZWOBJID 6 | *" EXPORTING 7 | *" VALUE(ES_CHART) TYPE ZTURNOVER_MANIFEST 8 | *"---------------------------------------------------------------------- 9 | 10 | TYPES: BEGIN OF sap_app, 11 | type TYPE string, 12 | END OF sap_app, 13 | BEGIN OF header_data_json, 14 | n TYPE string, 15 | u TYPE string, 16 | trend TYPE string, 17 | value_color TYPE string, 18 | END OF header_data_json, 19 | BEGIN OF header_data, 20 | json TYPE header_data_json, 21 | END OF header_data, 22 | BEGIN OF main_indicator, 23 | number TYPE string, 24 | unit TYPE string, 25 | trend TYPE string, 26 | state TYPE string, 27 | END OF main_indicator, 28 | BEGIN OF header, 29 | type TYPE string, 30 | data TYPE header_data, 31 | title TYPE string, 32 | main_indicator TYPE main_indicator, 33 | END OF header, 34 | BEGIN OF legend, 35 | visible TYPE xfeld, 36 | position TYPE string, 37 | alignment TYPE string, 38 | END OF legend, 39 | BEGIN OF data_label, 40 | visible TYPE xfeld, 41 | show_total TYPE xfeld, 42 | END OF data_label, 43 | BEGIN OF category_axis_text, 44 | visible TYPE xfeld, 45 | END OF category_axis_text, 46 | BEGIN OF value_axis_text, 47 | visible TYPE xfeld, 48 | END OF value_axis_text, 49 | BEGIN OF plot_area, 50 | data_label TYPE data_label, 51 | category_axis_text TYPE category_axis_text, 52 | value_axis_text TYPE value_axis_text, 53 | END OF plot_area, 54 | BEGIN OF title, 55 | visible TYPE xfeld, 56 | END OF title, 57 | BEGIN OF list, 58 | week TYPE string, 59 | revenue TYPE string, 60 | cost TYPE string, 61 | cost1 TYPE string, 62 | cost2 TYPE string, 63 | cost3 TYPE string, 64 | target TYPE string, 65 | budget TYPE string, 66 | END OF list, 67 | list_t TYPE STANDARD TABLE OF list WITH DEFAULT KEY, 68 | BEGIN OF content_data_json, 69 | list TYPE list_t, 70 | END OF content_data_json, 71 | BEGIN OF content_data, 72 | json TYPE content_data_json, 73 | path TYPE string, 74 | END OF content_data, 75 | BEGIN OF dimensions, 76 | label TYPE string, 77 | value TYPE string, 78 | END OF dimensions, 79 | dimensions_t TYPE STANDARD TABLE OF dimensions WITH DEFAULT KEY, 80 | BEGIN OF content, 81 | chart_type TYPE string, 82 | legend TYPE legend, 83 | plot_area TYPE plot_area, 84 | title TYPE title, 85 | measure_axis TYPE string, 86 | dimension_axis TYPE string, 87 | data TYPE content_data, 88 | dimensions TYPE dimensions_t, 89 | measures TYPE dimensions_t, 90 | END OF content, 91 | BEGIN OF sap_card, 92 | type TYPE string, 93 | header TYPE header, 94 | content TYPE content, 95 | END OF sap_card, 96 | BEGIN OF json, 97 | sap_app TYPE sap_app, 98 | sap_card TYPE sap_card, 99 | END OF json. 100 | 101 | DATA json TYPE json. 102 | 103 | json-sap_app-type = 'card'. 104 | json-sap_card-type = 'Analytical'. 105 | json-sap_card-header-type = 'Numeric'. 106 | json-sap_card-header-data-json-n = '43.2'. 107 | json-sap_card-header-data-json-u = '%'. 108 | json-sap_card-header-data-json-trend = 'Down'. 109 | json-sap_card-header-data-json-value_color = 'Good'. 110 | json-sap_card-header-title = 'Failure Breakdown - Q1, 2019'. 111 | json-sap_card-header-main_indicator-number = '{n}'. 112 | json-sap_card-header-main_indicator-unit = '{u}'. 113 | json-sap_card-header-main_indicator-trend = '{trend}'. 114 | json-sap_card-header-main_indicator-state = '{valueColor}'. 115 | json-sap_card-content-chart_type = 'Line'. 116 | json-sap_card-content-legend-visible = 'X'. 117 | json-sap_card-content-legend-position = 'Bottom'. 118 | json-sap_card-content-legend-alignment = 'Left'. 119 | json-sap_card-content-plot_area-data_label-visible = ''. 120 | json-sap_card-content-plot_area-data_label-show_total = ''. 121 | json-sap_card-content-plot_area-category_axis_text-visible = ''. 122 | json-sap_card-content-plot_area-value_axis_text-visible = ''. 123 | json-sap_card-content-title-visible = ''. 124 | json-sap_card-content-measure_axis = 'valueAxis'. 125 | json-sap_card-content-dimension_axis = 'categoryAxis'. 126 | json-sap_card-content-data-json-list = 127 | VALUE #( ( week = 'Weather' revenue = '431000.22' cost = '230000.00' cost1 = '24800.63' cost2 = '205199.37' cost3 = '199999.37' target = '500000.00' budget = '210000.00' ) 128 | ( week = 'Mechanics' revenue = '494000.30' cost = '238000.00' cost1 = '99200.39' cost2 = '138799.61' cost3 = '200199.37' target = '500000.00' budget = '224000.00' ) 129 | ( week = 'Software' revenue = '491000.17' cost = '221000.00' cost1 = '70200.54' cost2 = '150799.46' cost3 = '80799.46' target = '500000.00' budget = '238000.00' ) ). 130 | json-sap_card-content-data-path = '/list'. 131 | json-sap_card-content-dimensions = VALUE #( ( label = 'Weeks' value = '{Week}' ) ). 132 | json-sap_card-content-measures = VALUE #( ( label = 'Revenue' value = '{Revenue}' ) 133 | ( label = 'Cost' value = '{Cost}' ) 134 | ( label = 'Cost' value = '{Cost2}' ) ). 135 | 136 | DATA(lt_map) = VALUE /ui2/cl_json=>name_mappings( ( abap = 'SAP_APP' json = 'sap.app' ) 137 | ( abap = 'SAP_CARD' json = 'sap.card' ) ). 138 | es_chart-manifest = /ui2/cl_json=>serialize( data = json 139 | compress = abap_false 140 | pretty_name = /ui2/cl_json=>pretty_mode-camel_case 141 | name_mappings = lt_map ). 142 | 143 | ENDFUNCTION. -------------------------------------------------------------------------------- /src/new/gateway-download-smartform-as-pdf.txt: -------------------------------------------------------------------------------- 1 | METHOD /iwbep/if_mgw_appl_srv_runtime~get_stream. 2 | DATA ls_stream TYPE ty_s_media_resource. 3 | DATA(lv_entity_set_name) = io_tech_request_context->get_entity_set_name( ). 4 | DATA(lt_keys) = io_tech_request_context->get_keys( ). 5 | 6 | CASE lv_entity_set_name. 7 | WHEN 'PrintSet'. 8 | DATA: lv_kappl TYPE kappl, 9 | lv_kschl TYPE na_kschl, 10 | lv_belnr TYPE vbeln, 11 | lv_mjahr TYPE mjahr, 12 | lv_filename TYPE so_obj_des. 13 | LOOP AT lt_keys ASSIGNING FIELD-SYMBOL(). 14 | CASE -name. 15 | WHEN 'IV_KAPPL'. lv_kappl = -value. 16 | WHEN 'IV_KSCHL'. lv_kschl = -value. 17 | WHEN 'IV_BELNR'. lv_belnr = -value. 18 | WHEN 'IV_MJAHR'. lv_mjahr = -value. 19 | ENDCASE. 20 | ENDLOOP. 21 | CALL FUNCTION 'Z_GET_PRINTOUT' 22 | EXPORTING 23 | iv_kappl = lv_kappl 24 | iv_kschl = lv_kschl 25 | iv_belnr = lv_belnr 26 | iv_mjahr = lv_mjahr 27 | IMPORTING 28 | ev_value = ls_stream-value 29 | ev_mime_type = ls_stream-mime_type 30 | ev_filename = lv_filename. 31 | 32 | 33 | DATA ls_lheader TYPE ihttpnvp. 34 | lv_filename = escape( val = lv_filename format = cl_abap_format=>e_url ). 35 | ls_lheader-name = 'Content-Disposition'. 36 | * ls_lheader-value = 'outline; filename="' && lv_filename && '";'. "Download 37 | ls_lheader-value = 'inline; filename="' && lv_filename && '";'. "New tab 38 | set_header( is_header = ls_lheader ). 39 | 40 | copy_data_to_ref( EXPORTING is_data = ls_stream 41 | CHANGING cr_data = er_stream ). 42 | 43 | ENDCASE. 44 | ENDMETHOD. 45 | 46 | *********************************************************************************** 47 | 48 | DATA : gv_job_output TYPE ssfcrescl, 49 | gwa_ssfcompop TYPE ssfcompop, 50 | gwa_control TYPE ssfctrlop, 51 | gt_otf TYPE TABLE OF itcoo. 52 | 53 | *********************************************************************************** 54 | 55 | FUNCTION z_get_printout. 56 | *"---------------------------------------------------------------------- 57 | *"*"Local Interface: 58 | *" IMPORTING 59 | *" VALUE(IV_KAPPL) TYPE KAPPL 60 | *" VALUE(IV_KSCHL) TYPE NA_KSCHL 61 | *" VALUE(IV_BELNR) TYPE VBELN 62 | *" VALUE(IV_MJAHR) TYPE MJAHR OPTIONAL 63 | *" EXPORTING 64 | *" VALUE(EV_VALUE) TYPE XSTRING 65 | *" VALUE(EV_MIME_TYPE) TYPE STRING 66 | *" VALUE(EV_FILENAME) TYPE SO_OBJ_DES 67 | *"---------------------------------------------------------------------- 68 | 69 | SELECT SINGLE * FROM tnapr 70 | WHERE kschl = iv_kschl 71 | AND kappl = iv_kappl. 72 | 73 | CASE iv_kappl. 74 | WHEN 'V2'. 75 | CASE iv_kschl. 76 | WHEN 'Z001'. 77 | PERFORM print_v2_z001 USING iv_kappl iv_kschl iv_belnr CHANGING ev_filename. 78 | ENDCASE. 79 | WHEN 'ME'. 80 | CASE iv_kschl. 81 | WHEN 'ZDSP'. 82 | ENDCASE. 83 | ENDCASE. 84 | 85 | PERFORM convert_otf_to_xstring CHANGING ev_value. 86 | 87 | DATA lv_mimetype TYPE mimetypes-type. 88 | CALL FUNCTION 'SDOK_MIMETYPE_GET' 89 | EXPORTING 90 | extension = 'PDF' 91 | IMPORTING 92 | mimetype = lv_mimetype. 93 | ev_mime_type = lv_mimetype. 94 | 95 | ENDFUNCTION. 96 | 97 | ****************************************************************************************** 98 | 99 | FORM print_v2_z001 USING iv_kappl iv_kschl iv_belnr CHANGING cv_filename. 100 | DATA cf_retcode TYPE sy-subrc. 101 | DATA: lv_fm_name TYPE rs38l_fnam. 102 | DATA: lv_formname TYPE tdsfname. 103 | 104 | SELECT SINGLE vbeln FROM lips INTO nast-objky 105 | WHERE vgbel = iv_belnr. 106 | 107 | cv_filename = nast-objky && '.pdf'. 108 | 109 | SELECT SINGLE * FROM nast 110 | WHERE kappl = iv_kappl 111 | AND objky = nast-objky 112 | AND kschl = iv_kschl. 113 | 114 | * SmartForm from customizing table TNAPR 115 | lv_formname = tnapr-sform. 116 | 117 | IF cf_retcode = 0. 118 | PERFORM get_data CHANGING cf_retcode. 119 | ENDIF. 120 | 121 | IF cf_retcode = 0. 122 | 123 | CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME' 124 | EXPORTING 125 | formname = lv_formname 126 | IMPORTING 127 | fm_name = lv_fm_name 128 | EXCEPTIONS 129 | no_form = 1 130 | no_function_module = 2 131 | OTHERS = 3. 132 | IF sy-subrc <> 0. 133 | MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno 134 | WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4. 135 | ENDIF. 136 | 137 | gwa_control-langu = nast-spras. 138 | gwa_control-no_dialog = abap_true. 139 | gwa_control-getotf = abap_true. 140 | gwa_ssfcompop-tddest = 'PDFC'. 141 | 142 | CALL FUNCTION lv_fm_name 143 | EXPORTING 144 | control_parameters = gwa_control 145 | output_options = gwa_ssfcompop 146 | is_header = gs_header 147 | it_items = gt_items[] 148 | is_nast = nast 149 | IMPORTING 150 | job_output_info = gv_job_output 151 | EXCEPTIONS 152 | formatting_error = 1 153 | internal_error = 2 154 | send_error = 3 155 | user_canceled = 4 156 | OTHERS = 5. 157 | 158 | ENDIF. 159 | 160 | ENDFORM. 161 | 162 | ************************************************************ 163 | 164 | FORM convert_otf_to_xstring CHANGING cv_value TYPE xstring. 165 | 166 | DATA: lt_otf TYPE TABLE OF itcoo, 167 | lv_size TYPE i, 168 | lt_lines TYPE TABLE OF tline. 169 | 170 | APPEND LINES OF gv_job_output-otfdata TO lt_otf. 171 | 172 | CALL FUNCTION 'CONVERT_OTF' 173 | EXPORTING 174 | format = 'PDF' 175 | IMPORTING 176 | bin_filesize = lv_size 177 | bin_file = cv_value 178 | TABLES 179 | otf = lt_otf 180 | lines = lt_lines 181 | EXCEPTIONS 182 | err_max_linewidth = 1 183 | err_format = 2 184 | err_conv_not_possible = 3 185 | err_bad_otf = 4 186 | OTHERS = 5. 187 | 188 | ENDFORM. -------------------------------------------------------------------------------- /src/new/create_job.abap: -------------------------------------------------------------------------------- 1 | DATA : jobname TYPE tbtcjob-jobname VALUE 'ZADESECARD', 2 | jobclass TYPE tbtcjob-jobclass VALUE 'A', 3 | jobcount TYPE tbtcjob-jobcount, 4 | lv_startdate LIKE sy-datum, 5 | lv_starttime LIKE sy-uzeit, 6 | authcknam TYPE tbtcjob-authcknam, 7 | lv_varname TYPE rsvar-variant, 8 | lwa_vardesc TYPE varid. 9 | 10 | DATA: ls_varid TYPE varid, 11 | lt_varit TYPE TABLE OF varit, 12 | lt_rsparams TYPE TABLE OF rsparams. 13 | 14 | IF NOT ( ipspar-infty = '0000' AND ( ipspar-massn = '01' OR ipspar-massn = '10' ) ). 15 | RETURN. 16 | ENDIF. 17 | 18 | authcknam = sy-uname. 19 | 20 | lv_startdate = sy-datum. 21 | lv_starttime = sy-uzeit + 600. 22 | 23 | CONCATENATE 'CARD' lv_starttime INTO lv_varname. 24 | 25 | lwa_vardesc-report = 'ZHR_SEND_ADESECARD_FORM'. 26 | 27 | * fill VARID structure - Variantenkatalog, variant description 28 | 29 | ls_varid-mandt = sy-mandt. 30 | ls_varid-report = lwa_vardesc-report. 31 | ls_varid-variant = lv_varname. 32 | ls_varid-flag1 = space. 33 | ls_varid-flag2 = space. 34 | ls_varid-transport = space. 35 | ls_varid-environmnt = 'A'. "Variant for batch and online 36 | ls_varid-protected = space. 37 | ls_varid-secu = space. 38 | ls_varid-version = '1'. 39 | ls_varid-ename = sy-uname. 40 | ls_varid-edat = sy-datum. 41 | ls_varid-etime = sy-uzeit. 42 | ls_varid-aename = space. 43 | ls_varid-aedat = space. 44 | ls_varid-aetime = space. 45 | ls_varid-mlangu = sy-langu. 46 | 47 | *.fill VARIT structure - Variantentexte; variant texts 48 | APPEND INITIAL LINE TO lt_varit ASSIGNING FIELD-SYMBOL(). 49 | -mandt = sy-mandt. 50 | -langu = sy-langu. 51 | -report = lwa_vardesc-report. 52 | -variant = lv_varname. 53 | -vtext = lv_varname. 54 | 55 | APPEND INITIAL LINE TO lt_rsparams ASSIGNING FIELD-SYMBOL(). 56 | -selname = 'P_PERNR'. 57 | -kind = 'P'. 58 | -sign = 'I'. 59 | -option = 'EQ'. 60 | -low = ipspar-pernr. 61 | 62 | APPEND INITIAL LINE TO lt_rsparams ASSIGNING . 63 | -selname = 'P_INFTY'. 64 | -kind = 'P'. 65 | -sign = 'I'. 66 | -option = 'EQ'. 67 | -low = ipspar-infty. 68 | 69 | APPEND INITIAL LINE TO lt_rsparams ASSIGNING . 70 | -selname = 'P_MASSN'. 71 | -kind = 'P'. 72 | -sign = 'I'. 73 | -option = 'EQ'. 74 | -low = ipspar-massn. 75 | 76 | APPEND INITIAL LINE TO lt_rsparams ASSIGNING . 77 | -selname = 'P_DATUM'. 78 | -kind = 'P'. 79 | -sign = 'I'. 80 | -option = 'EQ'. 81 | -low = ipspar-begda. 82 | 83 | * Create Variant 84 | CALL FUNCTION 'RS_CREATE_VARIANT' 85 | EXPORTING 86 | curr_report = ls_varid-report 87 | curr_variant = ls_varid-variant 88 | vari_desc = ls_varid 89 | TABLES 90 | vari_contents = lt_rsparams 91 | vari_text = lt_varit 92 | EXCEPTIONS 93 | illegal_report_or_variant = 1 94 | illegal_variantname = 2 95 | not_authorized = 3 96 | not_executed = 4 97 | report_not_existent = 5 98 | report_not_supplied = 6 99 | variant_exists = 7 100 | variant_locked = 8 101 | OTHERS = 9. 102 | 103 | IF sy-subrc <> 0. 104 | 105 | ENDIF. 106 | 107 | CALL FUNCTION 'JOB_OPEN' 108 | EXPORTING 109 | jobname = jobname 110 | jobclass = jobclass 111 | IMPORTING 112 | jobcount = jobcount 113 | EXCEPTIONS 114 | cant_create_job = 1 115 | invalid_job_data = 2 116 | jobname_missing = 3 117 | OTHERS = 4. 118 | 119 | IF sy-subrc = 0. 120 | 121 | CALL FUNCTION 'JOB_SUBMIT' 122 | EXPORTING 123 | authcknam = authcknam 124 | jobcount = jobcount 125 | jobname = jobname 126 | report = ls_varid-report 127 | variant = ls_varid-variant 128 | EXCEPTIONS 129 | bad_priparams = 1 130 | bad_xpgflags = 2 131 | invalid_jobdata = 3 132 | jobname_missing = 4 133 | job_notex = 5 134 | job_submit_failed = 6 135 | lock_failed = 7 136 | program_missing = 8 137 | prog_abap_and_extpg_set = 9 138 | OTHERS = 10. 139 | 140 | IF sy-subrc = 0. 141 | 142 | CALL FUNCTION 'JOB_CLOSE' 143 | EXPORTING 144 | jobcount = jobcount 145 | jobname = jobname 146 | sdlstrtdt = lv_startdate 147 | sdlstrttm = lv_starttime 148 | EXCEPTIONS 149 | cant_start_immediate = 1 150 | invalid_startdate = 2 151 | jobname_missing = 3 152 | job_close_failed = 4 153 | job_nosteps = 5 154 | job_notex = 6 155 | lock_failed = 7 156 | invalid_target = 8 157 | OTHERS = 9. 158 | IF sy-subrc = 0. 159 | 160 | CALL FUNCTION 'RS_VARIANT_DELETE' 161 | EXPORTING 162 | report = ls_varid-report 163 | variant = ls_varid-variant 164 | flag_confirmscreen = 'X' 165 | flag_delallclient = 'X' 166 | EXCEPTIONS 167 | not_authorized = 1 168 | not_executed = 2 169 | no_report = 3 170 | report_not_existent = 4 171 | report_not_supplied = 5 172 | variant_locked = 6 173 | variant_not_existent = 7 174 | no_corr_insert = 8 175 | variant_protected = 9 176 | OTHERS = 10. 177 | IF sy-subrc <> 0. 178 | ENDIF. 179 | 180 | ENDIF. 181 | 182 | ENDIF. 183 | 184 | ENDIF. --------------------------------------------------------------------------------