Advertisement
ezecasti18

Untitled

Apr 1st, 2022
1,405
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
ABAP 2.53 KB | None | 0 0
  1. FUNCTION zsd_mx_idoc_filename_change.
  2. *"----------------------------------------------------------------------
  3. *"*"Local Interface:
  4. *"  IMPORTING
  5. *"     REFERENCE(DATATYPE) TYPE  EDIPO-ACTRIG
  6. *"     REFERENCE(DIRECTORY) TYPE  EDIPO-OUTPUTDIR
  7. *"     REFERENCE(FILENAME) TYPE  EDIPO-OUTPUTFILE
  8. *"     REFERENCE(CONTROL) TYPE  EDIDC
  9. *"  EXPORTING
  10. *"     REFERENCE(PATHNAME) TYPE  EDI_PATH-PTHNAM
  11. *"----------------------------------------------------------------------
  12.   DATA: lv_key               TYPE string.
  13.   DATA: path                   TYPE string.
  14.   DATA: lv_objky               TYPE nast-objky.
  15.   DATA: l_sdata                TYPE edid4-sdata.
  16.   DATA: l_dtint2               TYPE edid4-dtint2.
  17.   DATA lv_search_string        TYPE string.
  18.   DATA lv_key_length           TYPE i.
  19.   DATA lv_parval               TYPE zmx_cfdi_param-parval.
  20.   DATA: ls_classname           TYPE string.
  21.   DATA lv_field                TYPE string.
  22.   DATA dataref                 TYPE REF TO data.
  23.   DATA ls_edic_msg_par         TYPE zmx_cfdi_param.
  24.   DATA: lo_segment_type TYPE REF TO cl_abap_structdescr,
  25.         lo_segment_data TYPE REF TO data.
  26.   CONCATENATE directory filename INTO path.
  27.   FIELD-SYMBOLS <f_data> TYPE any.
  28.   FIELD-SYMBOLS <fs_field> TYPE any.
  29.  
  30.   SELECT SINGLE * INTO ls_edic_msg_par FROM zmx_cfdi_param
  31.   WHERE mestyp = control-mestyp
  32.   AND parid = 'KEY_SIZE'
  33.   AND active = 'X'.
  34.   IF sy-subrc IS NOT INITIAL.
  35.     SELECT SINGLE * INTO ls_edic_msg_par FROM zmx_cfdi_param
  36.   WHERE mestyp = control-mestyp
  37.   AND parid = 'FILE_KEY'
  38.   AND active = 'X'.
  39.  
  40.     lo_segment_type ?= cl_abap_structdescr=>describe_by_name( ls_edic_msg_par-segtyp ).
  41.     CREATE DATA lo_segment_data TYPE HANDLE lo_segment_type.
  42.     ASSIGN lo_segment_data->* TO <f_data>.
  43.   ELSE.
  44.     lv_key_length = ls_edic_msg_par-parval.
  45.   ENDIF.
  46.   SELECT SINGLE dtint2 sdata INTO (l_dtint2,l_sdata)
  47.     FROM edid4
  48.       WHERE docnum = control-docnum
  49.         AND segnum = 1.
  50.   IF sy-subrc IS INITIAL AND <f_data> IS ASSIGNED.
  51.     MOVE l_sdata TO <f_data>.
  52.     CONCATENATE '<f_data>-' ls_edic_msg_par-parval INTO lv_field.
  53.     ASSIGN (lv_field) TO <fs_field>.
  54.     lv_key = <fs_field>.
  55.     lv_key_length = 18.
  56.   ELSE.
  57.     lv_key = l_sdata(lv_key_length).
  58.   ENDIF.
  59.  
  60.  
  61.   lv_search_string = '000000000000000000000000000000'.
  62.  
  63.   lv_search_string = lv_search_string(lv_key_length).
  64.  
  65.  
  66.  
  67.   REPLACE lv_search_string INTO path WITH lv_key.
  68.   REPLACE '$SYSID$' INTO path WITH sy-sysid.
  69.  
  70.   CONDENSE path NO-GAPS.
  71.   MOVE path TO pathname.
  72.   MOVE lv_key TO lv_objky.
  73. ENDFUNCTION.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement