DATA: ls_p0001 TYPE p0001,
lt_p0001 TYPE TABLE OF p0001,
lr_infotype_reader TYPE REF TO if_hrpa_read_infotype,
lt_infotype TYPE hrpad_prelp_tab,
ls_infotype TYPE prelp,
lv_missing_auth TYPE boole_d
lv_data_exists TYPE boole_d.
* Infotyp reader initialisieren
CALL METHOD cl_hrpa_read_infotype=>get_instance
IMPORTING
infotype_reader = lr_infotype_reader.
* Infotyp 1 lesen
CLEAR lt_infotype.
CALL METHOD lr_infotype_reader->read
EXPORTING
tclas = 'A'
pernr = lv_pernr
infty = '0001'
begda = iv_begda
endda = iv_endda
no_auth_check = abap_true
IMPORTING
infotype_tab = lt_infotype
data_exists = lv_data_exists
missing_auth = lv_missing_auth.
LOOP AT lt_infotype INTO ls_infotype.
CALL METHOD cl_hr_pnnnn_type_cast=>prelp_to_pnnnn
EXPORTING
prelp = ls_infotype
IMPORTING
pnnnn = ls_p0001.
APPEND ls_p0001 TO lt_p0001.
ENDLOOP.
[Proxmox] Mount dataset into LXC
Open LXC config file in your favorite editor. In this case the container name is 101:
nano /etc/pve/lxc/101.conf
Append a single line for each mountpoint you want to add. The first mountpoint is “mp0”, the second “mp1” and so on.
mp0: /data/music,mp=/mnt/nfs/music
First the source (my zpool “data”, folowing the dataset name “music”), after that the destination inside the container beginning “mp=”.
[ABAP] Idoc MBGMCR – Goods Movement
METHOD create_mbgmcr_idoc.
set_idoc_control( IMPORTING es_idoc_control = DATA(ls_idoc_control) ).
map_mbgmcr_data( EXPORTING is_data = is_data
IMPORTING es_kopf = DATA(ls_kopf)
es_head = DATA(ls_head)
es_code = DATA(ls_code)
et_item = DATA(lt_item) ).
set_idoc_data( EXPORTING is_kopf = ls_kopf
is_head = ls_head
is_code = ls_code
it_item = lt_item
IMPORTING et_idoc_data = DATA(lt_idoc_data) ).
idoc_inbound_write_to_db( IMPORTING ev_idoc_number = DATA(lv_docnum)
CHANGING ct_idoc_data = lt_idoc_data
cs_idoc_control = ls_idoc_control ).
idoc_start_inbound( EXPORTING it_idoc_data = lt_idoc_data
is_idoc_control = ls_idoc_control ).
get_idoc_status( EXPORTING iv_docnum = lv_docnum ).
ENDMETHOD.
Method set_idoc_control:
METHOD set_idoc_control.
CLEAR es_idoc_control.
" Lese Partnummer
SELECT SINGLE logsys FROM t000 INTO @DATA(lv_logsys)
WHERE mandt = @sy-mandt.
" IDOC Basisdaten
es_idoc_control-mandt = sy-mandt.
es_idoc_control-direct = '2'. "Richtung der IDoc-Übertragung: Eingang
es_idoc_control-idoctp = mc_idoctp. "MBGMCR03
es_idoc_control-mestyp = mc_mestyp. "MBGMCR
es_idoc_control-mescod = mc_mescod. "Logische Nachrichtenvariante
" Empfänger
es_idoc_control-rcvpor = |SAP{ sy-sysid }|. "Empfängerport (SAP-System, EDI-Subsystem)
es_idoc_control-rcvprt = mc_rcvprt. "Partnerart des Empfängers (LS)
es_idoc_control-rcvprn = lv_logsys. "Partnernummer des Empfängers
" Sender
es_idoc_control-sndpor = |SAP{ sy-sysid }|. "Absenderport (SAP-System, EDI-Subsystem)
es_idoc_control-sndprt = mc_rcvprt. "Partnerart des Absenders (LS)
es_idoc_control-sndprn = lv_logsys. "Partnernummer des Absenders
ENDMETHOD.
Method map_mbgmcr_data:
METHOD map_mbgmcr_data.
" Hinweis: Zum Füllen der Strukturen, siehe auch Dokumentation für BAPI_GOODSMVT_CREATE.
" Die möglichen Werte für gm_code findet man in der Tabelle T158G
CLEAR: es_kopf, es_head, es_code, et_item.
es_kopf = VALUE #( testrun = gs_sel-test ).
es_head = VALUE #( pstng_date = sy-datum
doc_date = sy-datum ).
es_code = VALUE #( gm_code = mc_gm_code_04 ). "Code 04: Umbuchung
et_item = VALUE #( ( is_data ...) ).
ENDMETHOD.
Method set_idoc_data:
METHOD set_idoc_data.
CLEAR et_idoc_data.
et_idoc_data = VALUE #( ( segnam = 'E1MBGMCR' sdata = is_kopf segnum = 1 psgnum = 1 hlevel = 1 )
( segnam = 'E1BP2017_GM_HEAD_01' sdata = is_head segnum = 2 psgnum = 2 hlevel = 2 )
( segnam = 'E1BP2017_GM_CODE' sdata = is_code segnum = 3 psgnum = 2 hlevel = 2 ) ).
DO lines( it_item ) TIMES.
APPEND VALUE #( segnam = 'E1BP2017_GM_ITEM_CREATE' sdata = it_item[ sy-index ] segnum = ( 3 + sy-index ) psgnum = 2 hlevel = 2 ) TO et_idoc_data.
ENDDO.
ENDMETHOD.
Method idoc_inbound_write_to_db :
METHOD idoc_inbound_write_to_db.
CLEAR : ev_idoc_number, ev_state, ev_inb_process_data.
CALL FUNCTION 'IDOC_INBOUND_WRITE_TO_DB'
EXPORTING
pi_do_handle_error = abap_true
pi_return_data_flag = abap_true
IMPORTING
pe_idoc_number = ev_idoc_number
pe_state_of_processing = ev_state
pe_inbound_process_data = ev_inb_process_data
TABLES
t_data_records = ct_idoc_data
CHANGING
pc_control_record = cs_idoc_control
EXCEPTIONS
idoc_not_saved = 1
OTHERS = 2.
IF sy-subrc <> 0.
RAISE EXCEPTION TYPE zcx_ecos_goods_movement
EXPORTING
textid = VALUE scx_t100key( msgid = sy-msgid
msgno = sy-msgno
attr1 = sy-msgv1
attr2 = sy-msgv2
attr3 = sy-msgv3
attr4 = sy-msgv4 ).
ENDIF.
gr_listlog->append_log_entry( iv_type = gr_listlog->gc_log_type_statistic
iv_text = |Idoc mit der Nummer { ev_idoc_number } angelegt.|
iv_alog = abap_true ).
ENDMETHOD.
Method idoc_start_inbound :
METHOD idoc_start_inbound.
DATA: lt_idoc_control TYPE TABLE OF edidc.
APPEND is_idoc_control TO lt_idoc_control.
CALL FUNCTION 'IDOC_START_INBOUND'
EXPORTING
pi_do_commit = abap_true
TABLES
t_control_records = lt_idoc_control
t_data_records = it_idoc_data
EXCEPTIONS
invalid_document_number = 1
error_before_call_application = 2
inbound_process_not_possible = 3
old_wf_start_failed = 4
wf_task_error = 5
serious_inbound_error = 6
OTHERS = 7.
IF sy-subrc <> 0.
RAISE EXCEPTION TYPE zcx_xxx
EXPORTING
textid = VALUE scx_t100key( msgid = sy-msgid
msgno = sy-msgno
attr1 = sy-msgv1
attr2 = sy-msgv2
attr3 = sy-msgv3
attr4 = sy-msgv4 ).
ENDIF.
ENDMETHOD.
Method get_idoc_status:
METHOD get_idoc_status.
SELECT SINGLE status FROM edidc INTO @DATA(lv_status) WHERE docnum = @iv_docnum.
gr_listlog->append_log_entry( iv_type = gr_listlog->gc_log_type_statistic
iv_text = |Idoc Status: { lv_status }|
iv_alog = abap_true ).
ENDMETHOD.
[ZFS] Basic Commands
Documentation: https://github.com/zfsonlinux/zfs/wiki/Admin-Documentation
Manual Pages: https://zfs.datto.com/man/
Milestones: https://github.com/zfsonlinux/zfs/milestones
modinfo zfs //check current ZFS version
zfs list //list pool with datasets
zfs list -r pool //show all datasets in a pool with size and mountpoint
zfs list -r -o name,mountpoint,mounted //check if datasets are mounted
zpool status (pool)
zpool list
zpool list -v
zpool iostat (pool 1)
zpool iostat -v
Activate NFS on dataset:
zfs set sharenfs=on pool/dataset
zfs get sharenfs pool/dataset
Usefull comands when replacing a failed disk:
ls -l /dev/disk/by-id/ // Disk ID's
zdb // Display zpool debugging and consistency information
smartctl -a /dev/ada0 // S.M.A.R.T info
wipefs -a new_hdd // remove ext4 filesystem
zpool replace data old_hdd new_hdd // Replace HDD
Scrub cronjob:
cat /etc/cron.d/zfsutils-linux
Add and remove Log & L2ARC:
zpool add data log sda1
zpool add data cache sda2
zpool remove data log sda1
zpool remove data cache sda2
[Pi-hole] Blocklists
How to update: pihole -up
Blocklists:
- https://raw.githubusercontent.com/StevenBlack/hosts/master/hosts
- https://sysctl.org/cameleon/hosts
- https://zeustracker.abuse.ch/blocklist.php?download=domainblocklist
- https://s3.amazonaws.com/lists.disconnect.me/simple_tracking.txt
- https://s3.amazonaws.com/lists.disconnect.me/simple_ad.txt
- https://hosts-file.net/ad_servers.txt
- https://easylist.to/easylist/easylist.txt
- https://raw.githubusercontent.com/ZeroDot1/CoinBlockerLists/master/hosts
- https://raw.githubusercontent.com/HenningVanRaumle/pihole-ytadblock/master/ytadblock.txt
- https://v.firebog.net/hosts/lists.php?type=tick
- https://github.com/mmotti/pihole-regex/blob/master/regex.list
- https://raw.githubusercontent.com/lightswitch05/hosts/master/ads-and-tracking-extended.txt
- https://hosts-file.net/grm.txt
- https://reddestdream.github.io/Projects/MinimalHosts/etc/MinimalHostsBlocker/minimalhosts
- https://raw.githubusercontent.com/StevenBlack/hosts/master/data/KADhosts/hosts
- https://raw.githubusercontent.com/StevenBlack/hosts/master/data/add.Spam/hosts
- https://v.firebog.net/hosts/static/w3kbl.txt
- https://v.firebog.net/hosts/BillStearns.txt
- https://www.dshield.org/feeds/suspiciousdomains_Low.txt
- https://www.dshield.org/feeds/suspiciousdomains_Medium.txt
- https://www.dshield.org/feeds/suspiciousdomains_High.txt
- https://www.joewein.net/dl/bl/dom-bl-base.txt
- https://raw.githubusercontent.com/matomo-org/referrer-spam-blacklist/master/spammers.txt
- https://someonewhocares.org/hosts/zero/hosts
- https://raw.githubusercontent.com/Dawsey21/Lists/master/main-blacklist.txt
- https://raw.githubusercontent.com/Perflyst/PiHoleBlocklist/master/SmartTV.txt
- https://raw.githubusercontent.com/StevenBlack/hosts/master/hosts
- mirror1.malwaredomains.com/files/justdomains
- sysctl.org/cameleon/hosts
- zeustracker.abuse.ch/blocklist.php?download=domainblocklist
- s3.amazonaws.com/lists.disconnect.me/simple_tracking.txt
- s3.amazonaws.com/lists.disconnect.me/simple_ad.txt
- hosts-file.net/ad_servers.txt
- raw.githubusercontent.com/crazy-max/WindowsSpyBlocker/master/data/hosts/win10/spy.txt
- raw.githubusercontent.com/quidsup/notrack/master/trackers.txt
- https://raw.githubusercontent.com/AdguardTeam/cname-trackers/master/combined_disguised_trackers_justdomains.txt
- https://urlhaus.abuse.ch/downloads/hostfile/
- https://raw.githubusercontent.com/kboghdady/youTube_ads_4_pi-hole/master/crowed_list.txt
You will find further blocklists here, here and here.
For whitelists look here.
For Regex Filter check here.
Test your Ad Blocking: https://d3ward.github.io/toolz/src/adblock.html
If you would like to have a Dark Theme for Pi-Hole look here or use the Firefox/Chrome extension Dark Reader.
Other interesting projects:
- PiPass (Related Reddit Post)
- Pihole Adlist Tool