I give you idea how you can do it not whole answer.
You create DataProvider in your module this is sample code
protected function getSelectTypeGridConfig($sortOrder) {
return [
'arguments' => [
'data' => [
'config' => [
'addButtonLabel' => __('Add Value'),
'componentType' => DynamicRows::NAME,
'component' => 'Magento_Ui/js/dynamic-rows/dynamic-rows',
'additionalClasses' => 'admin__field-wide',
'deleteProperty' => static::FIELD_IS_DELETE,
'deleteValue' => '1',
'renderDefaultRecord' => false,
'sortOrder' => $sortOrder,
],
],
],
'children' => [
'record' => [
'arguments' => [
'data' => [
'config' => [
'componentType' => Container::NAME,
'component' => 'Magento_Ui/js/dynamic-rows/record',
'positionProvider' => static::FIELD_SORT_ORDER_NAME,
'isTemplate' => true,
'is_collection' => true,
],
],
],
'children' => [
static::FIELD_CUSTOM_NAME => $this->getCustomFieldConfig(10)
]
]
]
];
}
protected function getCustomFieldConfig($sortOrder, array $options = []) {
return array_replace_recursive(
[
'arguments' => [
'data' => [
'config' => [
'label' => __('Test'),
'componentType' => Field::NAME,
'formElement' => Input::NAME,
'dataScope' => static::FIELD_CUSTOM_NAME,
'dataType' => Text::NAME,
'sortOrder' => $sortOrder,
],
],
],
], $options
);
}
for more detail please check following file
Magento\Catalog\Ui\DataProvider\Product\Form\Modifier\CustomOptions.php