Skip to content

Instantly share code, notes, and snippets.

View larshp's full-sized avatar
🤷‍♂️
ABAP and more ABAP 拉尔斯

Lars Hvam larshp

🤷‍♂️
ABAP and more ABAP 拉尔斯
View GitHub Profile
@larshp
larshp / abaplint-cla.md
Created October 5, 2024 05:22
Contributor License Agreement

Contributor Agreement

Individual Contributor Exclusive License Agreement

(including the Traditional Patent License OPTION)

Thank you for your interest in contributing to Heliconia Labs ApS's abaplint ("We" or "Us").

The purpose of this contributor agreement ("Agreement") is to clarify and document the rights granted by contributors to Us. To make this document effective, please follow the instructions at https://github.com/abaplint/cla.

@larshp
larshp / mgf1.abap
Last active April 9, 2024 12:29
Mask generation function in ABAP
METHOD mgf1.
* https://en.wikipedia.org/wiki/Mask_generation_function
DATA lv_counter TYPE i.
DATA lv_sha1 TYPE xstring.
DATA lv_xstr TYPE xstring.
DATA lv_c TYPE x LENGTH 4.
WHILE xstrlen( rv_mask ) < iv_length.
REPORT zlocals.
DATA lt_locals TYPE STANDARD TABLE OF i WITH DEFAULT KEY.
FIELD-SYMBOLS <val> TYPE i.
DATA: BEGIN OF ls_locals,
val1 TYPE i,
val2 TYPE i,
val3 TYPE i,
val4 TYPE i,
val5 TYPE i,
CONSTANTS lc_iterations TYPE i VALUE 5000.
DATA hex TYPE x LENGTH 4.
DATA str TYPE string.
GET RUN TIME FIELD DATA(lv_start).
DO lc_iterations TIMES.
hex = '11223344'.
str = hex.
str = reverse( str ).
hex = str.
DATA(lo_ddl) = NEW zcl_abapgit_object_tabl_ddl( ).
SELECT obj_name FROM tadir WHERE pgmid = 'R3TR' AND object = 'TABL' AND masterlang = 'E' INTO TABLE @DATA(lt_tadir).
LOOP AT lt_tadir INTO DATA(ls_tadir).
* IF ls_tadir-obj_name <> 'SOMETHING'.
* CONTINUE.
* ENDIF.
IF sy-tabix MOD 10 = 0.
cl_progress_indicator=>progress_indicate(
i_text = |{ sy-tabix }/{ lines( lt_tadir ) }|
@larshp
larshp / abapgit_exit_wall_topics.abap
Created October 12, 2023 06:27
abapGit, user exit, encourage adding topics
METHOD zif_abapgit_exit~wall_message_repo.
DATA(lv_url) = is_repo_meta-url.
DATA(lo_agent) = zcl_abapgit_factory=>get_http_agent( ).
IF zcl_abapgit_login_manager=>get( lv_url ) IS NOT INITIAL.
lo_agent->global_headers( )->set(
iv_key = 'Authorization'
iv_val = zcl_abapgit_login_manager=>get( lv_url ) ).
* create a return order given sales order
* and update the return order with order reason
DATA lv_vbeln TYPE vbak-vbeln.
DATA lt_return TYPE STANDARD TABLE OF bapiret2 WITH EMPTY KEY.
DATA ls_header_in TYPE bapisdh1.
DATA ls_header_inx TYPE bapisdh1x.
CALL FUNCTION 'BAPI_SALESDOCUMENT_COPY'
EXPORTING
* raise exception from BAPIRET2,
RAISE EXCEPTION TYPE zcx_foobar
MESSAGE ID ls_return-id
NUMBER ls_return-number
WITH ls_return-message_v1
ls_return-message_v2
ls_return-message_v3
ls_return-message_v4.
@larshp
larshp / unit_test.abap
Created February 15, 2022 07:12
unit test
CLASS ltcl_test DEFINITION FOR TESTING DURATION SHORT RISK LEVEL HARMLESS FINAL.
PRIVATE SECTION.
DATA mo_cut TYPE REF TO zcl_unit_test.
METHODS setup.
METHODS calc FOR TESTING RAISING cx_static_check.
ENDCLASS.
CLASS ltcl_test IMPLEMENTATION.
METHOD setup.
CONSTANTS lc_tabname TYPE c LENGTH 16 VALUE 'ZHVAM_CUST'.
DATA obj TYPE REF TO object.
DATA lr_ddfields TYPE REF TO data.
FIELD-SYMBOLS <any> TYPE any.
FIELD-SYMBOLS <fieldname> TYPE simple.
FIELD-SYMBOLS <ddfields> TYPE ANY TABLE.
DATA names TYPE STANDARD TABLE OF abap_compname WITH DEFAULT KEY.
TRY.
CALL METHOD ('XCO_CP_ABAP_DICTIONARY')=>('DATABASE_TABLE')
EXPORTING